footprintjs 4.16.0 → 4.17.2

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 (188) hide show
  1. package/AGENTS.md +567 -82
  2. package/CLAUDE.md +57 -0
  3. package/README.md +2 -0
  4. package/dist/advanced.js +4 -2
  5. package/dist/detach.js +78 -0
  6. package/dist/esm/advanced.js +2 -1
  7. package/dist/esm/detach.js +57 -0
  8. package/dist/esm/lib/builder/FlowChartBuilder.js +171 -61
  9. package/dist/esm/lib/contract/openapi.js +4 -5
  10. package/dist/esm/lib/contract/schema.js +115 -4
  11. package/dist/esm/lib/decide/decide.js +4 -5
  12. package/dist/esm/lib/decide/evidence.js +3 -2
  13. package/dist/esm/lib/detach/drivers/immediate.js +66 -0
  14. package/dist/esm/lib/detach/drivers/microtaskBatch.js +113 -0
  15. package/dist/esm/lib/detach/drivers/sendBeacon.js +78 -0
  16. package/dist/esm/lib/detach/drivers/setImmediate.js +81 -0
  17. package/dist/esm/lib/detach/drivers/setTimeout.js +69 -0
  18. package/dist/esm/lib/detach/drivers/workerThread.js +117 -0
  19. package/dist/esm/lib/detach/flush.js +91 -0
  20. package/dist/esm/lib/detach/handle.js +134 -0
  21. package/dist/esm/lib/detach/registry.js +97 -0
  22. package/dist/esm/lib/detach/runChild.js +40 -0
  23. package/dist/esm/lib/detach/spawn.js +86 -0
  24. package/dist/esm/lib/detach/types.js +37 -0
  25. package/dist/esm/lib/engine/errors/errorInfo.js +4 -4
  26. package/dist/esm/lib/engine/graph/StageNode.js +2 -2
  27. package/dist/esm/lib/engine/handlers/ChildrenExecutor.js +9 -8
  28. package/dist/esm/lib/engine/handlers/ContinuationResolver.js +12 -9
  29. package/dist/esm/lib/engine/handlers/DeciderHandler.js +7 -8
  30. package/dist/esm/lib/engine/handlers/ExtractorRunner.js +14 -8
  31. package/dist/esm/lib/engine/handlers/NodeResolver.js +5 -3
  32. package/dist/esm/lib/engine/handlers/RuntimeStructureManager.js +11 -14
  33. package/dist/esm/lib/engine/handlers/SelectorHandler.js +9 -9
  34. package/dist/esm/lib/engine/handlers/StageRunner.js +9 -11
  35. package/dist/esm/lib/engine/handlers/SubflowExecutor.js +13 -12
  36. package/dist/esm/lib/engine/handlers/SubflowInputMapper.js +4 -4
  37. package/dist/esm/lib/engine/narrative/CombinedNarrativeRecorder.js +85 -96
  38. package/dist/esm/lib/engine/narrative/FlowRecorderDispatcher.js +18 -36
  39. package/dist/esm/lib/engine/narrative/NarrativeFlowRecorder.js +6 -5
  40. package/dist/esm/lib/engine/narrative/recorders/AdaptiveNarrativeFlowRecorder.js +7 -6
  41. package/dist/esm/lib/engine/narrative/recorders/ManifestFlowRecorder.js +10 -10
  42. package/dist/esm/lib/engine/narrative/recorders/MilestoneNarrativeFlowRecorder.js +5 -3
  43. package/dist/esm/lib/engine/narrative/recorders/ProgressiveNarrativeFlowRecorder.js +4 -3
  44. package/dist/esm/lib/engine/narrative/recorders/RLENarrativeFlowRecorder.js +4 -4
  45. package/dist/esm/lib/engine/narrative/recorders/SeparateNarrativeFlowRecorder.js +5 -6
  46. package/dist/esm/lib/engine/narrative/recorders/SilentNarrativeFlowRecorder.js +5 -6
  47. package/dist/esm/lib/engine/narrative/recorders/WindowedNarrativeFlowRecorder.js +5 -3
  48. package/dist/esm/lib/engine/traversal/FlowchartTraverser.js +97 -71
  49. package/dist/esm/lib/memory/DiagnosticCollector.js +6 -8
  50. package/dist/esm/lib/memory/EventLog.js +5 -3
  51. package/dist/esm/lib/memory/SharedMemory.js +3 -2
  52. package/dist/esm/lib/memory/StageContext.js +44 -14
  53. package/dist/esm/lib/memory/TransactionBuffer.js +9 -8
  54. package/dist/esm/lib/memory/backtrack.js +3 -4
  55. package/dist/esm/lib/memory/commitLogUtils.js +2 -2
  56. package/dist/esm/lib/memory/utils.js +2 -3
  57. package/dist/esm/lib/pause/types.js +33 -14
  58. package/dist/esm/lib/reactive/createTypedScope.js +10 -8
  59. package/dist/esm/lib/reactive/types.js +3 -1
  60. package/dist/esm/lib/recorder/BoundaryStateTracker.js +263 -0
  61. package/dist/esm/lib/recorder/CompositeRecorder.js +3 -1
  62. package/dist/esm/lib/recorder/InOutRecorder.js +5 -6
  63. package/dist/esm/lib/recorder/KeyedRecorder.js +2 -4
  64. package/dist/esm/lib/recorder/QualityRecorder.js +15 -14
  65. package/dist/esm/lib/recorder/SequenceRecorder.js +11 -12
  66. package/dist/esm/lib/recorder/TopologyRecorder.js +36 -40
  67. package/dist/esm/lib/recorder/index.js +2 -1
  68. package/dist/esm/lib/recorder/qualityTrace.js +4 -5
  69. package/dist/esm/lib/runner/ExecutionRuntime.js +20 -4
  70. package/dist/esm/lib/runner/FlowChartExecutor.js +99 -55
  71. package/dist/esm/lib/runner/RunContext.js +5 -3
  72. package/dist/esm/lib/runner/RunnableChart.js +7 -9
  73. package/dist/esm/lib/runner/getSubtreeSnapshot.js +4 -5
  74. package/dist/esm/lib/schema/errors.js +4 -3
  75. package/dist/esm/lib/schema/validate.js +4 -5
  76. package/dist/esm/lib/scope/ScopeFacade.js +52 -35
  77. package/dist/esm/lib/scope/providers/baseStateCompatible.js +9 -9
  78. package/dist/esm/lib/scope/providers/guards.js +2 -2
  79. package/dist/esm/lib/scope/recorders/DebugRecorder.js +9 -7
  80. package/dist/esm/lib/scope/recorders/MetricRecorder.js +10 -8
  81. package/dist/esm/lib/scope/state/zod/defineScopeFromZod.js +2 -3
  82. package/dist/esm/lib/scope/state/zod/resolver.js +2 -3
  83. package/dist/esm/lib/scope/state/zod/scopeFactory.js +16 -20
  84. package/dist/esm/lib/scope/state/zod/utils/validateHelper.js +57 -14
  85. package/dist/esm/trace.js +4 -1
  86. package/dist/lib/builder/FlowChartBuilder.js +171 -61
  87. package/dist/lib/contract/openapi.js +4 -5
  88. package/dist/lib/contract/schema.js +115 -4
  89. package/dist/lib/decide/decide.js +4 -5
  90. package/dist/lib/decide/evidence.js +3 -2
  91. package/dist/lib/detach/drivers/immediate.js +70 -0
  92. package/dist/lib/detach/drivers/microtaskBatch.js +117 -0
  93. package/dist/lib/detach/drivers/sendBeacon.js +82 -0
  94. package/dist/lib/detach/drivers/setImmediate.js +85 -0
  95. package/dist/lib/detach/drivers/setTimeout.js +73 -0
  96. package/dist/lib/detach/drivers/workerThread.js +121 -0
  97. package/dist/lib/detach/flush.js +95 -0
  98. package/dist/lib/detach/handle.js +140 -0
  99. package/dist/lib/detach/registry.js +106 -0
  100. package/dist/lib/detach/runChild.js +67 -0
  101. package/dist/lib/detach/spawn.js +92 -0
  102. package/dist/lib/detach/types.js +38 -0
  103. package/dist/lib/engine/errors/errorInfo.js +4 -4
  104. package/dist/lib/engine/graph/StageNode.js +2 -2
  105. package/dist/lib/engine/handlers/ChildrenExecutor.js +9 -8
  106. package/dist/lib/engine/handlers/ContinuationResolver.js +12 -9
  107. package/dist/lib/engine/handlers/DeciderHandler.js +7 -8
  108. package/dist/lib/engine/handlers/ExtractorRunner.js +14 -8
  109. package/dist/lib/engine/handlers/NodeResolver.js +5 -3
  110. package/dist/lib/engine/handlers/RuntimeStructureManager.js +11 -14
  111. package/dist/lib/engine/handlers/SelectorHandler.js +9 -9
  112. package/dist/lib/engine/handlers/StageRunner.js +9 -11
  113. package/dist/lib/engine/handlers/SubflowExecutor.js +13 -12
  114. package/dist/lib/engine/handlers/SubflowInputMapper.js +4 -4
  115. package/dist/lib/engine/narrative/CombinedNarrativeRecorder.js +85 -96
  116. package/dist/lib/engine/narrative/FlowRecorderDispatcher.js +18 -36
  117. package/dist/lib/engine/narrative/NarrativeFlowRecorder.js +6 -5
  118. package/dist/lib/engine/narrative/recorders/AdaptiveNarrativeFlowRecorder.js +7 -6
  119. package/dist/lib/engine/narrative/recorders/ManifestFlowRecorder.js +10 -10
  120. package/dist/lib/engine/narrative/recorders/MilestoneNarrativeFlowRecorder.js +5 -3
  121. package/dist/lib/engine/narrative/recorders/ProgressiveNarrativeFlowRecorder.js +4 -3
  122. package/dist/lib/engine/narrative/recorders/RLENarrativeFlowRecorder.js +4 -4
  123. package/dist/lib/engine/narrative/recorders/SeparateNarrativeFlowRecorder.js +5 -6
  124. package/dist/lib/engine/narrative/recorders/SilentNarrativeFlowRecorder.js +5 -6
  125. package/dist/lib/engine/narrative/recorders/WindowedNarrativeFlowRecorder.js +5 -3
  126. package/dist/lib/engine/traversal/FlowchartTraverser.js +97 -71
  127. package/dist/lib/memory/DiagnosticCollector.js +6 -8
  128. package/dist/lib/memory/EventLog.js +5 -3
  129. package/dist/lib/memory/SharedMemory.js +3 -2
  130. package/dist/lib/memory/StageContext.js +44 -14
  131. package/dist/lib/memory/TransactionBuffer.js +9 -8
  132. package/dist/lib/memory/backtrack.js +3 -4
  133. package/dist/lib/memory/commitLogUtils.js +2 -2
  134. package/dist/lib/memory/utils.js +2 -3
  135. package/dist/lib/pause/types.js +33 -14
  136. package/dist/lib/reactive/createTypedScope.js +10 -8
  137. package/dist/lib/reactive/types.js +3 -1
  138. package/dist/lib/recorder/BoundaryStateTracker.js +267 -0
  139. package/dist/lib/recorder/CompositeRecorder.js +3 -1
  140. package/dist/lib/recorder/InOutRecorder.js +5 -6
  141. package/dist/lib/recorder/KeyedRecorder.js +2 -4
  142. package/dist/lib/recorder/QualityRecorder.js +15 -14
  143. package/dist/lib/recorder/SequenceRecorder.js +11 -12
  144. package/dist/lib/recorder/TopologyRecorder.js +36 -40
  145. package/dist/lib/recorder/index.js +4 -2
  146. package/dist/lib/recorder/qualityTrace.js +4 -5
  147. package/dist/lib/runner/ExecutionRuntime.js +20 -4
  148. package/dist/lib/runner/FlowChartExecutor.js +99 -55
  149. package/dist/lib/runner/RunContext.js +5 -3
  150. package/dist/lib/runner/RunnableChart.js +7 -9
  151. package/dist/lib/runner/getSubtreeSnapshot.js +4 -5
  152. package/dist/lib/schema/errors.js +4 -3
  153. package/dist/lib/schema/validate.js +4 -5
  154. package/dist/lib/scope/ScopeFacade.js +52 -35
  155. package/dist/lib/scope/providers/baseStateCompatible.js +9 -9
  156. package/dist/lib/scope/providers/guards.js +2 -2
  157. package/dist/lib/scope/recorders/DebugRecorder.js +9 -7
  158. package/dist/lib/scope/recorders/MetricRecorder.js +10 -8
  159. package/dist/lib/scope/state/zod/defineScopeFromZod.js +2 -3
  160. package/dist/lib/scope/state/zod/resolver.js +2 -3
  161. package/dist/lib/scope/state/zod/scopeFactory.js +16 -20
  162. package/dist/lib/scope/state/zod/utils/validateHelper.js +57 -14
  163. package/dist/trace.js +6 -2
  164. package/dist/types/advanced.d.ts +1 -0
  165. package/dist/types/detach.d.ts +59 -0
  166. package/dist/types/lib/builder/FlowChartBuilder.d.ts +81 -0
  167. package/dist/types/lib/detach/drivers/immediate.d.ts +39 -0
  168. package/dist/types/lib/detach/drivers/microtaskBatch.d.ts +57 -0
  169. package/dist/types/lib/detach/drivers/sendBeacon.d.ts +38 -0
  170. package/dist/types/lib/detach/drivers/setImmediate.d.ts +32 -0
  171. package/dist/types/lib/detach/drivers/setTimeout.d.ts +34 -0
  172. package/dist/types/lib/detach/drivers/workerThread.d.ts +50 -0
  173. package/dist/types/lib/detach/flush.d.ts +62 -0
  174. package/dist/types/lib/detach/handle.d.ts +83 -0
  175. package/dist/types/lib/detach/registry.d.ts +82 -0
  176. package/dist/types/lib/detach/runChild.d.ts +41 -0
  177. package/dist/types/lib/detach/spawn.d.ts +64 -0
  178. package/dist/types/lib/detach/types.d.ts +200 -0
  179. package/dist/types/lib/engine/traversal/FlowchartTraverser.d.ts +0 -1
  180. package/dist/types/lib/engine/types.d.ts +0 -1
  181. package/dist/types/lib/reactive/types.d.ts +4 -0
  182. package/dist/types/lib/recorder/BoundaryStateTracker.d.ts +215 -0
  183. package/dist/types/lib/recorder/index.d.ts +1 -0
  184. package/dist/types/lib/runner/FlowChartExecutor.d.ts +28 -0
  185. package/dist/types/lib/scope/ScopeFacade.d.ts +4 -0
  186. package/dist/types/lib/scope/state/zod/utils/validateHelper.d.ts +13 -1
  187. package/dist/types/trace.d.ts +1 -0
  188. package/package.json +6 -1
@@ -9,9 +9,11 @@
9
9
  */
10
10
  import { FlowChartExecutor } from './FlowChartExecutor.js';
11
11
  export class RunContext {
12
+ chart;
13
+ scopeRecorders = [];
14
+ flowRecorders = [];
15
+ redactionPolicy;
12
16
  constructor(chart) {
13
- this.scopeRecorders = [];
14
- this.flowRecorders = [];
15
17
  this.chart = chart;
16
18
  }
17
19
  /** Attach a recorder. Auto-detects scope vs flow recorder. Chainable. */
@@ -71,4 +73,4 @@ export class RunContext {
71
73
  };
72
74
  }
73
75
  }
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnVuQ29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcnVubmVyL1J1bkNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFNSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQWMzRCxNQUFNLE9BQU8sVUFBVTtJQU1yQixZQUFZLEtBQThCO1FBSnpCLG1CQUFjLEdBQWUsRUFBRSxDQUFDO1FBQ2hDLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQUlsRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQseUVBQXlFO0lBQ3pFLFFBQVEsQ0FBQyxDQUEwQjtRQUNqQyxNQUFNLEtBQUssR0FBRyxPQUFRLENBQVMsQ0FBQyxFQUFFLEtBQUssUUFBUSxDQUFDO1FBQ2hELE1BQU0sY0FBYyxHQUNsQixLQUFLO1lBQ0wsQ0FBQyxPQUFRLENBQWtCLENBQUMsZUFBZSxLQUFLLFVBQVU7Z0JBQ3hELE9BQVEsQ0FBa0IsQ0FBQyxVQUFVLEtBQUssVUFBVTtnQkFDcEQsT0FBUSxDQUFrQixDQUFDLE1BQU0sS0FBSyxVQUFVO2dCQUNoRCxPQUFRLENBQWtCLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxDQUFDO1FBQ3RELE1BQU0sZUFBZSxHQUNuQixLQUFLO1lBQ0wsQ0FBQyxPQUFRLENBQWMsQ0FBQyxNQUFNLEtBQUssVUFBVTtnQkFDM0MsT0FBUSxDQUFjLENBQUMsT0FBTyxLQUFLLFVBQVU7Z0JBQzdDLE9BQVEsQ0FBYyxDQUFDLFFBQVEsS0FBSyxVQUFVLENBQUMsQ0FBQztRQUVwRCxnRUFBZ0U7UUFDaEUsSUFBSSxjQUFjO1lBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBaUIsQ0FBQyxDQUFDO1FBQy9ELElBQUksZUFBZTtZQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQWEsQ0FBQyxDQUFDO1FBRTdELHNDQUFzQztRQUN0QyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsZUFBZSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQWEsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxvREFBb0Q7SUFDcEQsTUFBTSxDQUFDLE1BQXVCO1FBQzVCLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELG9FQUFvRTtJQUNwRSxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQW9CO1FBQzVCLE1BQU0sUUFBUSxHQUFHLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRW5ELHlCQUF5QjtRQUN6QixLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFFRCxpREFBaUQ7UUFDakQsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxnQkFBZ0I7UUFDaEIsSUFBSSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDekIsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNwRCxDQUFDO1FBRUQsTUFBTTtRQUNOLE1BQU0sUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU1QixlQUFlO1FBQ2YsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3hDLE1BQU0sTUFBTSxHQUFJLElBQUksQ0FBQyxLQUFhLENBQUMsWUFBcUUsQ0FBQztRQUN6RyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDO1FBRWxGLE9BQU87WUFDTCxLQUFLLEVBQUUsUUFBUSxDQUFDLFdBQVcsSUFBSSxFQUFFO1lBQ2pDLE1BQU07WUFDTixhQUFhLEVBQUUsUUFBUSxDQUFDLGFBQWE7WUFDckMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxTQUFTLElBQUksRUFBRTtTQUNwQyxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBSdW5Db250ZXh0IC0tIGQzLXN0eWxlIGNoYWluYWJsZSBydW4gY29uZmlndXJhdGlvbi5cbiAqXG4gKiBSZXR1cm5lZCBieSBjaGFydC5yZWNvcmRlcigpIGFuZCBjaGFydC5yZWRhY3QoKS5cbiAqIEFjY3VtdWxhdGVzIHJlY29yZGVycyBhbmQgcmVkYWN0aW9uIHBvbGljeSwgdGhlbiBjcmVhdGVzXG4gKiBhIEZsb3dDaGFydEV4ZWN1dG9yIGludGVybmFsbHkgd2hlbiAucnVuKCkgaXMgY2FsbGVkLlxuICpcbiAqIFRoZSBjaGFydCBpcyBpbW11dGFibGUuIFJ1bkNvbnRleHQgaXMgZXBoZW1lcmFsIHBlci1ydW4gY29uZmlnLlxuICovXG5cbmltcG9ydCB0eXBlIHsgRmxvd0NoYXJ0IH0gZnJvbSAnLi4vYnVpbGRlci90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEZsb3dSZWNvcmRlciB9IGZyb20gJy4uL2VuZ2luZS9uYXJyYXRpdmUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBSdW5PcHRpb25zIH0gZnJvbSAnLi4vZW5naW5lL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgUmVjb3JkZXIsIFJlZGFjdGlvblBvbGljeSB9IGZyb20gJy4uL3Njb3BlL3R5cGVzLmpzJztcbmltcG9ydCB7IEZsb3dDaGFydEV4ZWN1dG9yIH0gZnJvbSAnLi9GbG93Q2hhcnRFeGVjdXRvci5qcyc7XG5cbi8qKiBSZXN1bHQgZnJvbSBSdW5Db250ZXh0LnJ1bigpIOKAlCBvd25zIHN0YXRlIGFuZCBvdXRwdXQuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1blJlc3VsdCB7XG4gIC8qKiBSYXcgc2NvcGUgc3RhdGUgYWZ0ZXIgZXhlY3V0aW9uLiAqL1xuICBzdGF0ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIC8qKiBNYXBwZWQgb3V0cHV0IHZpYSBjb250cmFjdCBtYXBwZXIgKGlmIGRlY2xhcmVkKS4gKi9cbiAgb3V0cHV0OiB1bmtub3duO1xuICAvKiogRnVsbCBleGVjdXRpb24gdHJlZSBmb3IgZGVidWdnaW5nLiAqL1xuICBleGVjdXRpb25UcmVlOiB1bmtub3duO1xuICAvKiogQ29tbWl0IGxvZyBmb3IgdGltZS10cmF2ZWwuICovXG4gIGNvbW1pdExvZzogdW5rbm93bltdO1xufVxuXG5leHBvcnQgY2xhc3MgUnVuQ29udGV4dDxUT3V0ID0gYW55LCBUU2NvcGUgPSBhbnk+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBjaGFydDogRmxvd0NoYXJ0PFRPdXQsIFRTY29wZT47XG4gIHByaXZhdGUgcmVhZG9ubHkgc2NvcGVSZWNvcmRlcnM6IFJlY29yZGVyW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBmbG93UmVjb3JkZXJzOiBGbG93UmVjb3JkZXJbXSA9IFtdO1xuICBwcml2YXRlIHJlZGFjdGlvblBvbGljeT86IFJlZGFjdGlvblBvbGljeTtcblxuICBjb25zdHJ1Y3RvcihjaGFydDogRmxvd0NoYXJ0PFRPdXQsIFRTY29wZT4pIHtcbiAgICB0aGlzLmNoYXJ0ID0gY2hhcnQ7XG4gIH1cblxuICAvKiogQXR0YWNoIGEgcmVjb3JkZXIuIEF1dG8tZGV0ZWN0cyBzY29wZSB2cyBmbG93IHJlY29yZGVyLiBDaGFpbmFibGUuICovXG4gIHJlY29yZGVyKHI6IFJlY29yZGVyIHwgRmxvd1JlY29yZGVyKTogUnVuQ29udGV4dDxUT3V0LCBUU2NvcGU+IHtcbiAgICBjb25zdCBoYXNJZCA9IHR5cGVvZiAociBhcyBhbnkpLmlkID09PSAnc3RyaW5nJztcbiAgICBjb25zdCBpc0Zsb3dSZWNvcmRlciA9XG4gICAgICBoYXNJZCAmJlxuICAgICAgKHR5cGVvZiAociBhcyBGbG93UmVjb3JkZXIpLm9uU3RhZ2VFeGVjdXRlZCA9PT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgICB0eXBlb2YgKHIgYXMgRmxvd1JlY29yZGVyKS5vbkRlY2lzaW9uID09PSAnZnVuY3Rpb24nIHx8XG4gICAgICAgIHR5cGVvZiAociBhcyBGbG93UmVjb3JkZXIpLm9uRm9yayA9PT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgICB0eXBlb2YgKHIgYXMgRmxvd1JlY29yZGVyKS5vbk5leHQgPT09ICdmdW5jdGlvbicpO1xuICAgIGNvbnN0IGlzU2NvcGVSZWNvcmRlciA9XG4gICAgICBoYXNJZCAmJlxuICAgICAgKHR5cGVvZiAociBhcyBSZWNvcmRlcikub25SZWFkID09PSAnZnVuY3Rpb24nIHx8XG4gICAgICAgIHR5cGVvZiAociBhcyBSZWNvcmRlcikub25Xcml0ZSA9PT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgICB0eXBlb2YgKHIgYXMgUmVjb3JkZXIpLm9uQ29tbWl0ID09PSAnZnVuY3Rpb24nKTtcblxuICAgIC8vIENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXIgaW1wbGVtZW50cyBCT1RIIOKAlCBhZGQgdG8gYm90aCBsaXN0c1xuICAgIGlmIChpc0Zsb3dSZWNvcmRlcikgdGhpcy5mbG93UmVjb3JkZXJzLnB1c2gociBhcyBGbG93UmVjb3JkZXIpO1xuICAgIGlmIChpc1Njb3BlUmVjb3JkZXIpIHRoaXMuc2NvcGVSZWNvcmRlcnMucHVzaChyIGFzIFJlY29yZGVyKTtcblxuICAgIC8vIFB1cmUgc2NvcGUgcmVjb3JkZXIgKG5vIGZsb3cgaG9va3MpXG4gICAgaWYgKCFpc0Zsb3dSZWNvcmRlciAmJiAhaXNTY29wZVJlY29yZGVyICYmIGhhc0lkKSB7XG4gICAgICB0aGlzLnNjb3BlUmVjb3JkZXJzLnB1c2gociBhcyBSZWNvcmRlcik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogU2V0IHJlZGFjdGlvbiBwb2xpY3kgZm9yIHRoaXMgcnVuLiBDaGFpbmFibGUuICovXG4gIHJlZGFjdChwb2xpY3k6IFJlZGFjdGlvblBvbGljeSk6IFJ1bkNvbnRleHQ8VE91dCwgVFNjb3BlPiB7XG4gICAgdGhpcy5yZWRhY3Rpb25Qb2xpY3kgPSBwb2xpY3k7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKiogRXhlY3V0ZSB0aGUgY2hhcnQgd2l0aCBhY2N1bXVsYXRlZCBjb25maWcuIFJldHVybnMgUnVuUmVzdWx0LiAqL1xuICBhc3luYyBydW4ob3B0aW9ucz86IFJ1bk9wdGlvbnMpOiBQcm9taXNlPFJ1blJlc3VsdD4ge1xuICAgIGNvbnN0IGV4ZWN1dG9yID0gbmV3IEZsb3dDaGFydEV4ZWN1dG9yKHRoaXMuY2hhcnQpO1xuXG4gICAgLy8gQXR0YWNoIHNjb3BlIHJlY29yZGVyc1xuICAgIGZvciAoY29uc3QgciBvZiB0aGlzLnNjb3BlUmVjb3JkZXJzKSB7XG4gICAgICBleGVjdXRvci5hdHRhY2hSZWNvcmRlcihyKTtcbiAgICB9XG5cbiAgICAvLyBBdHRhY2ggZmxvdyByZWNvcmRlcnMgKGF1dG8tZW5hYmxlcyBuYXJyYXRpdmUpXG4gICAgZm9yIChjb25zdCByIG9mIHRoaXMuZmxvd1JlY29yZGVycykge1xuICAgICAgZXhlY3V0b3IuYXR0YWNoRmxvd1JlY29yZGVyKHIpO1xuICAgIH1cblxuICAgIC8vIFNldCByZWRhY3Rpb25cbiAgICBpZiAodGhpcy5yZWRhY3Rpb25Qb2xpY3kpIHtcbiAgICAgIGV4ZWN1dG9yLnNldFJlZGFjdGlvblBvbGljeSh0aGlzLnJlZGFjdGlvblBvbGljeSk7XG4gICAgfVxuXG4gICAgLy8gUnVuXG4gICAgYXdhaXQgZXhlY3V0b3IucnVuKG9wdGlvbnMpO1xuXG4gICAgLy8gQnVpbGQgcmVzdWx0XG4gICAgY29uc3Qgc25hcHNob3QgPSBleGVjdXRvci5nZXRTbmFwc2hvdCgpO1xuICAgIGNvbnN0IG1hcHBlciA9ICh0aGlzLmNoYXJ0IGFzIGFueSkub3V0cHV0TWFwcGVyIGFzICgoczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHVua25vd24pIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IG91dHB1dCA9IG1hcHBlciA/IG1hcHBlcihzbmFwc2hvdC5zaGFyZWRTdGF0ZSB8fCB7fSkgOiBzbmFwc2hvdC5zaGFyZWRTdGF0ZTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdGF0ZTogc25hcHNob3Quc2hhcmVkU3RhdGUgfHwge30sXG4gICAgICBvdXRwdXQsXG4gICAgICBleGVjdXRpb25UcmVlOiBzbmFwc2hvdC5leGVjdXRpb25UcmVlLFxuICAgICAgY29tbWl0TG9nOiBzbmFwc2hvdC5jb21taXRMb2cgfHwgW10sXG4gICAgfTtcbiAgfVxufVxuIl19
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnVuQ29udGV4dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcnVubmVyL1J1bkNvbnRleHQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFNSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQWMzRCxNQUFNLE9BQU8sVUFBVTtJQUNKLEtBQUssQ0FBMEI7SUFDL0IsY0FBYyxHQUFlLEVBQUUsQ0FBQztJQUNoQyxhQUFhLEdBQW1CLEVBQUUsQ0FBQztJQUM1QyxlQUFlLENBQW1CO0lBRTFDLFlBQVksS0FBOEI7UUFDeEMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVELHlFQUF5RTtJQUN6RSxRQUFRLENBQUMsQ0FBMEI7UUFDakMsTUFBTSxLQUFLLEdBQUcsT0FBUSxDQUFTLENBQUMsRUFBRSxLQUFLLFFBQVEsQ0FBQztRQUNoRCxNQUFNLGNBQWMsR0FDbEIsS0FBSztZQUNMLENBQUMsT0FBUSxDQUFrQixDQUFDLGVBQWUsS0FBSyxVQUFVO2dCQUN4RCxPQUFRLENBQWtCLENBQUMsVUFBVSxLQUFLLFVBQVU7Z0JBQ3BELE9BQVEsQ0FBa0IsQ0FBQyxNQUFNLEtBQUssVUFBVTtnQkFDaEQsT0FBUSxDQUFrQixDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsQ0FBQztRQUN0RCxNQUFNLGVBQWUsR0FDbkIsS0FBSztZQUNMLENBQUMsT0FBUSxDQUFjLENBQUMsTUFBTSxLQUFLLFVBQVU7Z0JBQzNDLE9BQVEsQ0FBYyxDQUFDLE9BQU8sS0FBSyxVQUFVO2dCQUM3QyxPQUFRLENBQWMsQ0FBQyxRQUFRLEtBQUssVUFBVSxDQUFDLENBQUM7UUFFcEQsZ0VBQWdFO1FBQ2hFLElBQUksY0FBYztZQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQWlCLENBQUMsQ0FBQztRQUMvRCxJQUFJLGVBQWU7WUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFhLENBQUMsQ0FBQztRQUU3RCxzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLGNBQWMsSUFBSSxDQUFDLGVBQWUsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFhLENBQUMsQ0FBQztRQUMxQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsb0RBQW9EO0lBQ3BELE1BQU0sQ0FBQyxNQUF1QjtRQUM1QixJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxvRUFBb0U7SUFDcEUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFvQjtRQUM1QixNQUFNLFFBQVEsR0FBRyxJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVuRCx5QkFBeUI7UUFDekIsS0FBSyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDcEMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBRUQsaURBQWlEO1FBQ2pELEtBQUssTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25DLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBRUQsZ0JBQWdCO1FBQ2hCLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDcEQsQ0FBQztRQUVELE1BQU07UUFDTixNQUFNLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFNUIsZUFBZTtRQUNmLE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN4QyxNQUFNLE1BQU0sR0FBSSxJQUFJLENBQUMsS0FBYSxDQUFDLFlBQXFFLENBQUM7UUFDekcsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztRQUVsRixPQUFPO1lBQ0wsS0FBSyxFQUFFLFFBQVEsQ0FBQyxXQUFXLElBQUksRUFBRTtZQUNqQyxNQUFNO1lBQ04sYUFBYSxFQUFFLFFBQVEsQ0FBQyxhQUFhO1lBQ3JDLFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUyxJQUFJLEVBQUU7U0FDcEMsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUnVuQ29udGV4dCAtLSBkMy1zdHlsZSBjaGFpbmFibGUgcnVuIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogUmV0dXJuZWQgYnkgY2hhcnQucmVjb3JkZXIoKSBhbmQgY2hhcnQucmVkYWN0KCkuXG4gKiBBY2N1bXVsYXRlcyByZWNvcmRlcnMgYW5kIHJlZGFjdGlvbiBwb2xpY3ksIHRoZW4gY3JlYXRlc1xuICogYSBGbG93Q2hhcnRFeGVjdXRvciBpbnRlcm5hbGx5IHdoZW4gLnJ1bigpIGlzIGNhbGxlZC5cbiAqXG4gKiBUaGUgY2hhcnQgaXMgaW1tdXRhYmxlLiBSdW5Db250ZXh0IGlzIGVwaGVtZXJhbCBwZXItcnVuIGNvbmZpZy5cbiAqL1xuXG5pbXBvcnQgdHlwZSB7IEZsb3dDaGFydCB9IGZyb20gJy4uL2J1aWxkZXIvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBGbG93UmVjb3JkZXIgfSBmcm9tICcuLi9lbmdpbmUvbmFycmF0aXZlL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgUnVuT3B0aW9ucyB9IGZyb20gJy4uL2VuZ2luZS90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFJlY29yZGVyLCBSZWRhY3Rpb25Qb2xpY3kgfSBmcm9tICcuLi9zY29wZS90eXBlcy5qcyc7XG5pbXBvcnQgeyBGbG93Q2hhcnRFeGVjdXRvciB9IGZyb20gJy4vRmxvd0NoYXJ0RXhlY3V0b3IuanMnO1xuXG4vKiogUmVzdWx0IGZyb20gUnVuQ29udGV4dC5ydW4oKSDigJQgb3ducyBzdGF0ZSBhbmQgb3V0cHV0LiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW5SZXN1bHQge1xuICAvKiogUmF3IHNjb3BlIHN0YXRlIGFmdGVyIGV4ZWN1dGlvbi4gKi9cbiAgc3RhdGU6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAvKiogTWFwcGVkIG91dHB1dCB2aWEgY29udHJhY3QgbWFwcGVyIChpZiBkZWNsYXJlZCkuICovXG4gIG91dHB1dDogdW5rbm93bjtcbiAgLyoqIEZ1bGwgZXhlY3V0aW9uIHRyZWUgZm9yIGRlYnVnZ2luZy4gKi9cbiAgZXhlY3V0aW9uVHJlZTogdW5rbm93bjtcbiAgLyoqIENvbW1pdCBsb2cgZm9yIHRpbWUtdHJhdmVsLiAqL1xuICBjb21taXRMb2c6IHVua25vd25bXTtcbn1cblxuZXhwb3J0IGNsYXNzIFJ1bkNvbnRleHQ8VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hhcnQ6IEZsb3dDaGFydDxUT3V0LCBUU2NvcGU+O1xuICBwcml2YXRlIHJlYWRvbmx5IHNjb3BlUmVjb3JkZXJzOiBSZWNvcmRlcltdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgZmxvd1JlY29yZGVyczogRmxvd1JlY29yZGVyW10gPSBbXTtcbiAgcHJpdmF0ZSByZWRhY3Rpb25Qb2xpY3k/OiBSZWRhY3Rpb25Qb2xpY3k7XG5cbiAgY29uc3RydWN0b3IoY2hhcnQ6IEZsb3dDaGFydDxUT3V0LCBUU2NvcGU+KSB7XG4gICAgdGhpcy5jaGFydCA9IGNoYXJ0O1xuICB9XG5cbiAgLyoqIEF0dGFjaCBhIHJlY29yZGVyLiBBdXRvLWRldGVjdHMgc2NvcGUgdnMgZmxvdyByZWNvcmRlci4gQ2hhaW5hYmxlLiAqL1xuICByZWNvcmRlcihyOiBSZWNvcmRlciB8IEZsb3dSZWNvcmRlcik6IFJ1bkNvbnRleHQ8VE91dCwgVFNjb3BlPiB7XG4gICAgY29uc3QgaGFzSWQgPSB0eXBlb2YgKHIgYXMgYW55KS5pZCA9PT0gJ3N0cmluZyc7XG4gICAgY29uc3QgaXNGbG93UmVjb3JkZXIgPVxuICAgICAgaGFzSWQgJiZcbiAgICAgICh0eXBlb2YgKHIgYXMgRmxvd1JlY29yZGVyKS5vblN0YWdlRXhlY3V0ZWQgPT09ICdmdW5jdGlvbicgfHxcbiAgICAgICAgdHlwZW9mIChyIGFzIEZsb3dSZWNvcmRlcikub25EZWNpc2lvbiA9PT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgICB0eXBlb2YgKHIgYXMgRmxvd1JlY29yZGVyKS5vbkZvcmsgPT09ICdmdW5jdGlvbicgfHxcbiAgICAgICAgdHlwZW9mIChyIGFzIEZsb3dSZWNvcmRlcikub25OZXh0ID09PSAnZnVuY3Rpb24nKTtcbiAgICBjb25zdCBpc1Njb3BlUmVjb3JkZXIgPVxuICAgICAgaGFzSWQgJiZcbiAgICAgICh0eXBlb2YgKHIgYXMgUmVjb3JkZXIpLm9uUmVhZCA9PT0gJ2Z1bmN0aW9uJyB8fFxuICAgICAgICB0eXBlb2YgKHIgYXMgUmVjb3JkZXIpLm9uV3JpdGUgPT09ICdmdW5jdGlvbicgfHxcbiAgICAgICAgdHlwZW9mIChyIGFzIFJlY29yZGVyKS5vbkNvbW1pdCA9PT0gJ2Z1bmN0aW9uJyk7XG5cbiAgICAvLyBDb21iaW5lZE5hcnJhdGl2ZVJlY29yZGVyIGltcGxlbWVudHMgQk9USCDigJQgYWRkIHRvIGJvdGggbGlzdHNcbiAgICBpZiAoaXNGbG93UmVjb3JkZXIpIHRoaXMuZmxvd1JlY29yZGVycy5wdXNoKHIgYXMgRmxvd1JlY29yZGVyKTtcbiAgICBpZiAoaXNTY29wZVJlY29yZGVyKSB0aGlzLnNjb3BlUmVjb3JkZXJzLnB1c2gociBhcyBSZWNvcmRlcik7XG5cbiAgICAvLyBQdXJlIHNjb3BlIHJlY29yZGVyIChubyBmbG93IGhvb2tzKVxuICAgIGlmICghaXNGbG93UmVjb3JkZXIgJiYgIWlzU2NvcGVSZWNvcmRlciAmJiBoYXNJZCkge1xuICAgICAgdGhpcy5zY29wZVJlY29yZGVycy5wdXNoKHIgYXMgUmVjb3JkZXIpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFNldCByZWRhY3Rpb24gcG9saWN5IGZvciB0aGlzIHJ1bi4gQ2hhaW5hYmxlLiAqL1xuICByZWRhY3QocG9saWN5OiBSZWRhY3Rpb25Qb2xpY3kpOiBSdW5Db250ZXh0PFRPdXQsIFRTY29wZT4ge1xuICAgIHRoaXMucmVkYWN0aW9uUG9saWN5ID0gcG9saWN5O1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEV4ZWN1dGUgdGhlIGNoYXJ0IHdpdGggYWNjdW11bGF0ZWQgY29uZmlnLiBSZXR1cm5zIFJ1blJlc3VsdC4gKi9cbiAgYXN5bmMgcnVuKG9wdGlvbnM/OiBSdW5PcHRpb25zKTogUHJvbWlzZTxSdW5SZXN1bHQ+IHtcbiAgICBjb25zdCBleGVjdXRvciA9IG5ldyBGbG93Q2hhcnRFeGVjdXRvcih0aGlzLmNoYXJ0KTtcblxuICAgIC8vIEF0dGFjaCBzY29wZSByZWNvcmRlcnNcbiAgICBmb3IgKGNvbnN0IHIgb2YgdGhpcy5zY29wZVJlY29yZGVycykge1xuICAgICAgZXhlY3V0b3IuYXR0YWNoUmVjb3JkZXIocik7XG4gICAgfVxuXG4gICAgLy8gQXR0YWNoIGZsb3cgcmVjb3JkZXJzIChhdXRvLWVuYWJsZXMgbmFycmF0aXZlKVxuICAgIGZvciAoY29uc3QgciBvZiB0aGlzLmZsb3dSZWNvcmRlcnMpIHtcbiAgICAgIGV4ZWN1dG9yLmF0dGFjaEZsb3dSZWNvcmRlcihyKTtcbiAgICB9XG5cbiAgICAvLyBTZXQgcmVkYWN0aW9uXG4gICAgaWYgKHRoaXMucmVkYWN0aW9uUG9saWN5KSB7XG4gICAgICBleGVjdXRvci5zZXRSZWRhY3Rpb25Qb2xpY3kodGhpcy5yZWRhY3Rpb25Qb2xpY3kpO1xuICAgIH1cblxuICAgIC8vIFJ1blxuICAgIGF3YWl0IGV4ZWN1dG9yLnJ1bihvcHRpb25zKTtcblxuICAgIC8vIEJ1aWxkIHJlc3VsdFxuICAgIGNvbnN0IHNuYXBzaG90ID0gZXhlY3V0b3IuZ2V0U25hcHNob3QoKTtcbiAgICBjb25zdCBtYXBwZXIgPSAodGhpcy5jaGFydCBhcyBhbnkpLm91dHB1dE1hcHBlciBhcyAoKHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB1bmtub3duKSB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBvdXRwdXQgPSBtYXBwZXIgPyBtYXBwZXIoc25hcHNob3Quc2hhcmVkU3RhdGUgfHwge30pIDogc25hcHNob3Quc2hhcmVkU3RhdGU7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3RhdGU6IHNuYXBzaG90LnNoYXJlZFN0YXRlIHx8IHt9LFxuICAgICAgb3V0cHV0LFxuICAgICAgZXhlY3V0aW9uVHJlZTogc25hcHNob3QuZXhlY3V0aW9uVHJlZSxcbiAgICAgIGNvbW1pdExvZzogc25hcHNob3QuY29tbWl0TG9nIHx8IFtdLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -27,7 +27,6 @@ export function makeRunnable(chart) {
27
27
  return new RunContext(chart).run(options);
28
28
  };
29
29
  runnable.toOpenAPI = function (options) {
30
- var _a, _b, _c, _d, _e, _f, _g, _h;
31
30
  // Only cache no-options calls — parameterized calls vary by options
32
31
  if (!options) {
33
32
  const cached = openAPICache.get(chart);
@@ -35,14 +34,14 @@ export function makeRunnable(chart) {
35
34
  return cached;
36
35
  }
37
36
  const builderChart = chart;
38
- const title = (_c = (_a = options === null || options === void 0 ? void 0 : options.title) !== null && _a !== void 0 ? _a : (_b = builderChart.description) === null || _b === void 0 ? void 0 : _b.split('\n')[0]) !== null && _c !== void 0 ? _c : 'API';
39
- const version = (_d = options === null || options === void 0 ? void 0 : options.version) !== null && _d !== void 0 ? _d : '1.0.0';
37
+ const title = options?.title ?? builderChart.description?.split('\n')[0] ?? 'API';
38
+ const version = options?.version ?? '1.0.0';
40
39
  // Use root.id (the explicit machine-readable id) as the path segment, sanitized
41
- const rawId = (_f = (_e = builderChart.root) === null || _e === void 0 ? void 0 : _e.id) !== null && _f !== void 0 ? _f : 'execute';
42
- const path = (_g = options === null || options === void 0 ? void 0 : options.path) !== null && _g !== void 0 ? _g : `/${slugify(rawId)}`;
40
+ const rawId = builderChart.root?.id ?? 'execute';
41
+ const path = options?.path ?? `/${slugify(rawId)}`;
43
42
  const spec = {
44
43
  openapi: '3.1.0',
45
- info: { title, version, description: (_h = options === null || options === void 0 ? void 0 : options.description) !== null && _h !== void 0 ? _h : builderChart.description },
44
+ info: { title, version, description: options?.description ?? builderChart.description },
46
45
  paths: {
47
46
  [path]: {
48
47
  post: {
@@ -96,13 +95,12 @@ export function makeRunnable(chart) {
96
95
  return lines.join('\n');
97
96
  };
98
97
  runnable.toMCPTool = function () {
99
- var _a, _b;
100
98
  const cached = mcpCache.get(chart);
101
99
  if (cached)
102
100
  return cached;
103
101
  const builderChart = chart;
104
102
  // Use root.id (explicit machine-readable id), sanitized to MCP name character allowlist
105
- const name = sanitizeMCPName((_b = (_a = builderChart.root) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : 'execute');
103
+ const name = sanitizeMCPName(builderChart.root?.id ?? 'execute');
106
104
  const description = builderChart.description || `Execute the ${name} flowchart`;
107
105
  // MCP spec requires inputSchema to always be present.
108
106
  // When no contract is defined, use the recommended no-parameter form.
@@ -133,4 +131,4 @@ function slugify(id) {
133
131
  .replace(/[^a-z0-9]+/g, '-')
134
132
  .replace(/^-|-$/g, '') || 'execute');
135
133
  }
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnVubmFibGVDaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcnVubmVyL1J1bm5hYmxlQ2hhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBR0gsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBS3hELE9BQU8sRUFBa0IsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUE0QzdELG1GQUFtRjtBQUNuRixzREFBc0Q7QUFDdEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQXFCLENBQUM7QUFDdEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQWlDLENBQUM7QUFFOUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBZSxLQUE4QjtJQUN2RSxNQUFNLFFBQVEsR0FBRyxLQUF3QyxDQUFDO0lBRTFELFFBQVEsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUEwQjtRQUN0RCxPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUM7SUFFRixRQUFRLENBQUMsTUFBTSxHQUFHLFVBQVUsTUFBdUI7UUFDakQsT0FBTyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQyxDQUFDO0lBRUYsUUFBUSxDQUFDLEdBQUcsR0FBRyxVQUFVLE9BQW9CO1FBQzNDLE9BQU8sSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQztJQUVGLFFBQVEsQ0FBQyxTQUFTLEdBQUcsVUFBVSxPQUE2Qjs7UUFDMUQsb0VBQW9FO1FBQ3BFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMs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c0Q7UUFDdEQsc0VBQXNFO1FBQ3RFLE1BQU0sV0FBVyxHQUFlLFlBQVksQ0FBQyxXQUFXO1lBQ3RELENBQUMsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQztZQUMzQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFFcEUsTUFBTSxJQUFJLEdBQXVCLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUVwRSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztJQUVGLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxlQUFlLENBQUMsRUFBVTtJQUNqQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxTQUFTLENBQUM7QUFDbkYsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsT0FBTyxDQUFDLEVBQVU7SUFDekIsT0FBTyxDQUNMLEVBQUU7U0FDQyxXQUFXLEVBQUU7U0FDYixPQUFPLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQztTQUMzQixPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FDdEMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJ1bm5hYmxlQ2hhcnQgLS0gQWRkcyAucmVjb3JkZXIoKSwgLnJlZGFjdCgpLCAucnVuKCksIC50b09wZW5BUEkoKSwgLnRvTUNQVG9vbCgpXG4gKiB0byBhIEZsb3dDaGFydCBvYmplY3QuXG4gKlxuICogQ2FsbGVkIGJ5IEZsb3dDaGFydEJ1aWxkZXIuYnVpbGQoKSB0byBlbnJpY2ggdGhlIGNvbXBpbGVkIGNoYXJ0IHdpdGhcbiAqIGQzLXN0eWxlIGNoYWluYWJsZSBydW4gbWV0aG9kcyBhbmQgc2VsZi1kZXNjcmliaW5nIG91dHB1dHMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBGbG93Q2hhcnQgfSBmcm9tICcuLi9idWlsZGVyL3R5cGVzLmpzJztcbmltcG9ydCB7IG5vcm1hbGl6ZVNjaGVtYSB9IGZyb20gJy4uL2NvbnRyYWN0L3NjaGVtYS5qcyc7XG5pbXBvcnQgdHlwZSB7IEpzb25TY2hlbWEgfSBmcm9tICcuLi9jb250cmFjdC90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEZsb3dSZWNvcmRlciB9IGZyb20gJy4uL2VuZ2luZS9uYXJyYXRpdmUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBSdW5PcHRpb25zLCBTdGFnZU5vZGUgfSBmcm9tICcuLi9lbmdpbmUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBSZWNvcmRlciwgUmVkYWN0aW9uUG9saWN5IH0gZnJvbSAnLi4vc2NvcGUvdHlwZXMuanMnO1xuaW1wb3J0IHsgdHlwZSBSdW5SZXN1bHQsIFJ1bkNvbnRleHQgfSBmcm9tICcuL1J1bkNvbnRleHQuanMnO1xuXG4vKiogT3BlbkFQSSBnZW5lcmF0aW9uIG9wdGlvbnMuICovXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0T3BlbkFQSU9wdGlvbnMge1xuICB0aXRsZT86IHN0cmluZztcbiAgdmVyc2lvbj86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKiBNQ1AgdG9vbCBkZXNjcmlwdGlvbiDigJQgc2hhcGUgcmVxdWlyZWQgYnkgdGhlIE1vZGVsIENvbnRleHQgUHJvdG9jb2wgc3BlYy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUNQVG9vbERlc2NyaXB0aW9uIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKipcbiAgICogSlNPTiBTY2hlbWEgb2JqZWN0IGRlc2NyaWJpbmcgdGhlIHRvb2wncyBpbnB1dC5cbiAgICogQWx3YXlzIHByZXNlbnQg4oCUIHRoZSBNQ1Agc3BlYyByZXF1aXJlcyBpbnB1dFNjaGVtYSBldmVuIGZvciB0b29scyB3aXRoIG5vIHBhcmFtZXRlcnMuXG4gICAqIERlZmF1bHRzIHRvIGB7IHR5cGU6ICdvYmplY3QnLCBwcm9wZXJ0aWVzOiB7fSwgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlIH1gLlxuICAgKi9cbiAgaW5wdXRTY2hlbWE6IEpzb25TY2hlbWE7XG59XG5cbi8qKlxuICogRmxvd0NoYXJ0IGVucmljaGVkIHdpdGggZDMtc3R5bGUgcnVuIG1ldGhvZHMgYW5kIHNlbGYtZGVzY3JpYmluZyBvdXRwdXRzLlxuICpcbiAqIEV4dGVuZHMgYnVpbGRlci5GbG93Q2hhcnQgKHdoaWNoIGFscmVhZHkgY2FycmllcyBidWlsZFRpbWVTdHJ1Y3R1cmUsIGRlc2NyaXB0aW9uLFxuICogc3RhZ2VEZXNjcmlwdGlvbnMsIGlucHV0U2NoZW1hLCBvdXRwdXRTY2hlbWEsIG91dHB1dE1hcHBlcikgYW5kIGFkZHMgdGhlIHJ1bnRpbWVcbiAqIG1ldGhvZHMgYXR0YWNoZWQgYnkgbWFrZVJ1bm5hYmxlKCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVubmFibGVGbG93Q2hhcnQ8VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiBleHRlbmRzIEZsb3dDaGFydDxUT3V0LCBUU2NvcGU+IHtcbiAgLyoqIEF0dGFjaCBhIHJlY29yZGVyIGZvciB0aGUgbmV4dCBydW4uIFJldHVybnMgYSBjaGFpbmFibGUgUnVuQ29udGV4dC4gKi9cbiAgcmVjb3JkZXIocjogUmVjb3JkZXIgfCBGbG93UmVjb3JkZXIpOiBSdW5Db250ZXh0PFRPdXQsIFRTY29wZT47XG4gIC8qKiBTZXQgcmVkYWN0aW9uIHBvbGljeSBmb3IgdGhlIG5leHQgcnVuLiBSZXR1cm5zIGEgY2hhaW5hYmxlIFJ1bkNvbnRleHQuICovXG4gIHJlZGFjdChwb2xpY3k6IFJlZGFjdGlvblBvbGljeSk6IFJ1bkNvbnRleHQ8VE91dCwgVFNjb3BlPjtcbiAgLyoqIEV4ZWN1dGUgdGhlIGNoYXJ0IGRpcmVjdGx5IChiYXJlIHJ1biwgbm8gcmVjb3JkZXJzKS4gKi9cbiAgcnVuKG9wdGlvbnM/OiBSdW5PcHRpb25zKTogUHJvbWlzZTxSdW5SZXN1bHQ+O1xuICAvKiogR2VuZXJhdGUgT3BlbkFQSSAzLjEgc3BlYyBmcm9tIGNoYXJ0IG1ldGFkYXRhICsgY29udHJhY3QuIENhY2hlZCBmb3Igbm8tb3B0aW9ucyBjYWxscy4gKi9cbiAgdG9PcGVuQVBJKG9wdGlvbnM/OiBDaGFydE9wZW5BUElPcHRpb25zKTogb2JqZWN0O1xuICAvKiogR2VuZXJhdGUgTUNQIHRvb2wgZGVzY3JpcHRpb24gZnJvbSBjaGFydCBtZXRhZGF0YS4gQ2FjaGVkLiAqL1xuICB0b01DUFRvb2woKTogTUNQVG9vbERlc2NyaXB0aW9uO1xuICAvKiogR2VuZXJhdGUgYSBNZXJtYWlkIGZsb3djaGFydCBkaWFncmFtIHN0cmluZyBmcm9tIHRoZSBjaGFydCdzIG5vZGUgZ3JhcGguICovXG4gIHRvTWVybWFpZCgpOiBzdHJpbmc7XG59XG5cbi8vIENhY2hlIGZvciBuby1vcHRpb25zIHRvT3BlbkFQSSgpIGNhbGxzIG9ubHkg4oCUIHBhcmFtZXRlcml6ZWQgY2FsbHMgYXJlIG5vdCBjYWNoZWRcbi8vIGJlY2F1c2UgZGlmZmVyZW50IG9wdGlvbnMgcHJvZHVjZSBkaWZmZXJlbnQgb3V0cHV0LlxuY29uc3Qgb3BlbkFQSUNhY2hlID0gbmV3IFdlYWtNYXA8Rmxvd0NoYXJ0LCBvYmplY3Q+KCk7XG5jb25zdCBtY3BDYWNoZSA9IG5ldyBXZWFrTWFwPEZsb3dDaGFydCwgTUNQVG9vbERlc2NyaXB0aW9uPigpO1xuXG4vKipcbiAqIEVucmljaCBhIEZsb3dDaGFydCB3aXRoIHJ1biArIGRlc2NyaWJlIG1ldGhvZHMuXG4gKiBDYWxsZWQgYnkgRmxvd0NoYXJ0QnVpbGRlci5idWlsZCgpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZVJ1bm5hYmxlPFRPdXQsIFRTY29wZT4oY2hhcnQ6IEZsb3dDaGFydDxUT3V0LCBUU2NvcGU+KTogUnVubmFibGVGbG93Q2hhcnQ8VE91dCwgVFNjb3BlPiB7XG4gIGNvbnN0IHJ1bm5hYmxlID0gY2hhcnQgYXMgUnVubmFibGVGbG93Q2hhcnQ8VE91dCwgVFNjb3BlPjtcblxuICBydW5uYWJsZS5yZWNvcmRlciA9IGZ1bmN0aW9uIChyOiBSZWNvcmRlciB8IEZsb3dSZWNvcmRlcik6IFJ1bkNvbnRleHQ8VE91dCwgVFNjb3BlPiB7XG4gICAgcmV0dXJuIG5ldyBSdW5Db250ZXh0KGNoYXJ0KS5yZWNvcmRlcihyKTtcbiAgfTtcblxuICBydW5uYWJsZS5yZWRhY3QgPSBmdW5jdGlvbiAocG9saWN5OiBSZWRhY3Rpb25Qb2xpY3kpOiBSdW5Db250ZXh0PFRPdXQsIFRTY29wZT4ge1xuICAgIHJldHVybiBuZXcgUnVuQ29udGV4dChjaGFydCkucmVkYWN0KHBvbGljeSk7XG4gIH07XG5cbiAgcnVubmFibGUucnVuID0gZnVuY3Rpb24gKG9wdGlvbnM/OiBSdW5PcHRpb25zKTogUHJvbWlzZTxSdW5SZXN1bHQ+IHtcbiAgICByZXR1cm4gbmV3IFJ1bkNvbnRleHQoY2hhcnQpLnJ1bihvcHRpb25zKTtcbiAgfTtcblxuICBydW5uYWJsZS50b09wZW5BUEkgPSBmdW5jdGlvbiAob3B0aW9ucz86IENoYXJ0T3BlbkFQSU9wdGlvbnMpOiBvYmplY3Qge1xuICAgIC8vIE9ubHkgY2FjaGUgbm8tb3B0aW9ucyBjYWxscyDigJQgcGFyYW1ldGVyaXplZCBjYWxscyB2YXJ5IGJ5IG9wdGlvbnNcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IGNhY2hlZCA9IG9wZW5BUElDYWNoZS5nZXQoY2hhcnQpO1xuICAgICAgaWYgKGNhY2hlZCkgcmV0dXJuIGNhY2hlZDtcbiAgICB9XG5cbiAgICBjb25zdCBidWlsZGVyQ2hhcnQgPSBjaGFydCBhcyBhbnk7XG4gICAgY29uc3QgdGl0bGUgPSBvcHRpb25zPy50aXRsZSA/PyBidWlsZGVyQ2hhcnQuZGVzY3JpcHRpb24/LnNwbGl0KCdcXG4nKVswXSA/PyAnQVBJJztcbiAgICBjb25zdCB2ZXJzaW9uID0gb3B0aW9ucz8udmVyc2lvbiA/PyAnMS4wLjAnO1xuICAgIC8vIFVzZSByb290LmlkICh0aGUgZXhwbGljaXQgbWFjaGluZS1yZWFkYWJsZSBpZCkgYXMgdGhlIHBhdGggc2VnbWVudCwgc2FuaXRpemVkXG4gICAgY29uc3QgcmF3SWQgPSBidWlsZGVyQ2hhcnQucm9vdD8uaWQgPz8gJ2V4ZWN1dGUnO1xuICAgIGNvbnN0IHBhdGggPSBvcHRpb25zPy5wYXRoID8/IGAvJHtzbHVnaWZ5KHJhd0lkKX1gO1xuXG4gICAgY29uc3Qgc3BlYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICBvcGVuYXBpOiAnMy4xLjAnLFxuICAgICAgaW5mbzogeyB0aXRsZSwgdmVyc2lvbiwgZGVzY3JpcHRpb246IG9wdGlvbnM/LmRlc2NyaXB0aW9uID8/IGJ1aWxkZXJDaGFydC5kZXNjcmlwdGlvbiB9LFxuICAgICAgcGF0aHM6IHtcbiAgICAgICAgW3BhdGhdOiB7XG4gICAgICAgICAgcG9zdDoge1xuICAgICAgICAgICAgc3VtbWFyeTogdGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYnVpbGRlckNoYXJ0LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgLi4uKGJ1aWxkZXJDaGFydC5pbnB1dFNjaGVtYVxuICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHsgJ2FwcGxpY2F0aW9uL2pzb24nOiB7IHNjaGVtYTogbm9ybWFsaXplU2NoZW1hKGJ1aWxkZXJDaGFydC5pbnB1dFNjaGVtYSkgfSB9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgcmVzcG9uc2VzOiB7XG4gICAgICAgICAgICAgICcyMDAnOiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdTdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAuLi4oYnVpbGRlckNoYXJ0Lm91dHB1dFNjaGVtYVxuICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnQ6IHsgJ2FwcGxpY2F0aW9uL2pzb24nOiB7IHNjaGVtYTogbm9ybWFsaXplU2NoZW1hKGJ1aWxkZXJDaGFydC5vdXRwdXRTY2hlbWEpIH0gfSB9XG4gICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGlmICghb3B0aW9ucykgb3BlbkFQSUNhY2hlLnNldChjaGFydCwgc3BlYyk7XG4gICAgcmV0dXJuIHNwZWM7XG4gIH07XG5cbiAgcnVubmFibGUudG9NZXJtYWlkID0gZnVuY3Rpb24gKCk6IHN0cmluZyB7XG4gICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gWydmbG93Y2hhcnQgVEQnXTtcbiAgICBjb25zdCBpZE9mID0gKGs6IHN0cmluZykgPT4gKGsgfHwgJycpLnJlcGxhY2UoL1teYS16QS1aMC05X10vZywgJ18nKSB8fCAnXyc7XG4gICAgY29uc3QgdmlzaXRlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IHdhbGsgPSAobjogU3RhZ2VOb2RlKSA9PiB7XG4gICAgICBjb25zdCBuaWQgPSBpZE9mKG4uaWQpO1xuICAgICAgaWYgKHZpc2l0ZWQuaGFzKG5pZCkpIHJldHVybjtcbiAgICAgIHZpc2l0ZWQuYWRkKG5pZCk7XG4gICAgICBsaW5lcy5wdXNoKGAke25pZH1bXCIke24ubmFtZX1cIl1gKTtcbiAgICAgIGZvciAoY29uc3QgYyBvZiBuLmNoaWxkcmVuIHx8IFtdKSB7XG4gICAgICAgIGNvbnN0IGNpZCA9IGlkT2YoYy5pZCk7XG4gICAgICAgIGxpbmVzLnB1c2goYCR7bmlkfSAtLT4gJHtjaWR9YCk7XG4gICAgICAgIHdhbGsoYyk7XG4gICAgICB9XG4gICAgICBpZiAobi5uZXh0KSB7XG4gICAgICAgIGNvbnN0IG1pZCA9IGlkT2Yobi5uZXh0LmlkKTtcbiAgICAgICAgbGluZXMucHVzaChgJHtuaWR9IC0tPiAke21pZH1gKTtcbiAgICAgICAgd2FsayhuLm5leHQpO1xuICAgICAgfVxuICAgIH07XG4gICAgd2FsayhjaGFydC5yb290KTtcbiAgICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG4gIH07XG5cbiAgcnVubmFibGUudG9NQ1BUb29sID0gZnVuY3Rpb24gKCk6IE1DUFRvb2xEZXNjcmlwdGlvbiB7XG4gICAgY29uc3QgY2FjaGVkID0gbWNwQ2FjaGUuZ2V0KGNoYXJ0KTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgYnVpbGRlckNoYXJ0ID0gY2hhcnQgYXMgYW55O1xuICAgIC8vIFVzZSByb290LmlkIChleHBsaWNpdCBtYWNoaW5lLXJlYWRhYmxlIGlkKSwgc2FuaXRpemVkIHRvIE1DUCBuYW1lIGNoYXJhY3RlciBhbGxvd2xpc3RcbiAgICBjb25zdCBuYW1lID0gc2FuaXRpemVNQ1BOYW1lKGJ1aWxkZXJDaGFydC5yb290Py5pZCA/PyAnZXhlY3V0ZScpO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYnVpbGRlckNoYXJ0LmRlc2NyaXB0aW9uIHx8IGBFeGVjdXRlIHRoZSAke25hbWV9IGZsb3djaGFydGA7XG5cbiAgICAvLyBNQ1Agc3BlYyByZXF1aXJlcyBpbnB1dFNjaGVtYSB0byBhbHdheXMgYmUgcHJlc2VudC5cbiAgICAvLyBXaGVuIG5vIGNvbnRyYWN0IGlzIGRlZmluZWQsIHVzZSB0aGUgcmVjb21tZW5kZWQgbm8tcGFyYW1ldGVyIGZvcm0uXG4gICAgY29uc3QgaW5wdXRTY2hlbWE6IEpzb25TY2hlbWEgPSBidWlsZGVyQ2hhcnQuaW5wdXRTY2hlbWFcbiAgICAgID8gbm9ybWFsaXplU2NoZW1hKGJ1aWxkZXJDaGFydC5pbnB1dFNjaGVtYSlcbiAgICAgIDogeyB0eXBlOiAnb2JqZWN0JywgcHJvcGVydGllczoge30sIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSB9O1xuXG4gICAgY29uc3QgdG9vbDogTUNQVG9vbERlc2NyaXB0aW9uID0geyBuYW1lLCBkZXNjcmlwdGlvbiwgaW5wdXRTY2hlbWEgfTtcblxuICAgIG1jcENhY2hlLnNldChjaGFydCwgdG9vbCk7XG4gICAgcmV0dXJuIHRvb2w7XG4gIH07XG5cbiAgcmV0dXJuIHJ1bm5hYmxlO1xufVxuXG4vKipcbiAqIFNhbml0aXplIGEgc3RyaW5nIHRvIGNvbmZvcm0gdG8gdGhlIE1DUCB0b29sIG5hbWUgY2hhcmFjdGVyIGFsbG93bGlzdDpcbiAqIFtBLVphLXowLTlfXFwtLl0g4oCUIGFueSBvdGhlciBjaGFyYWN0ZXIgaXMgcmVwbGFjZWQgd2l0aCB1bmRlcnNjb3JlLlxuICogVHJpbXMgbGVhZGluZy90cmFpbGluZyB1bmRlcnNjb3JlcyBpbnRyb2R1Y2VkIGJ5IHJlcGxhY2VtZW50LlxuICovXG5mdW5jdGlvbiBzYW5pdGl6ZU1DUE5hbWUoaWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBpZC5yZXBsYWNlKC9bXkEtWmEtejAtOV9cXC0uXS9nLCAnXycpLnJlcGxhY2UoL15fK3xfKyQvZywgJycpIHx8ICdleGVjdXRlJztcbn1cblxuLyoqXG4gKiBTbHVnaWZ5IGEgc3RyaW5nIGZvciB1c2UgYXMgYW4gT3BlbkFQSSBwYXRoIHNlZ21lbnQuXG4gKiBMb3dlcmNhc2VzIGFuZCByZXBsYWNlcyBub24tYWxwaGFudW1lcmljIHJ1bnMgd2l0aCBoeXBoZW5zLlxuICovXG5mdW5jdGlvbiBzbHVnaWZ5KGlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gKFxuICAgIGlkXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnJlcGxhY2UoL1teYS16MC05XSsvZywgJy0nKVxuICAgICAgLnJlcGxhY2UoL14tfC0kL2csICcnKSB8fCAnZXhlY3V0ZSdcbiAgKTtcbn1cbiJdfQ==
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUnVubmFibGVDaGFydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvcnVubmVyL1J1bm5hYmxlQ2hhcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBR0gsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBS3hELE9BQU8sRUFBa0IsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUE0QzdELG1GQUFtRjtBQUNuRixzREFBc0Q7QUFDdEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQXFCLENBQUM7QUFDdEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQWlDLENBQUM7QUFFOUQ7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FBZSxLQUE4QjtJQUN2RSxNQUFNLFFBQVEsR0FBRyxLQUF3QyxDQUFDO0lBRTFELFFBQVEsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUEwQjtRQUN0RCxPQUFPLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDLENBQUM7SUFFRixRQUFRLENBQUMsTUFBTSxHQUFHLFVBQVUsTUFBdUI7UUFDakQsT0FBTyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUMsQ0FBQyxDQUFDO0lBRUYsUUFBUSxDQUFDLEdBQUcsR0FBRyxVQUFVLE9BQW9CO1FBQzNDLE9BQU8sSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLENBQUMsQ0FBQztJQUVGLFFBQVEsQ0FBQyxTQUFTLEdBQUcsVUFBVSxPQUE2QjtRQUMxRCxvRUFBb0U7UUFDcEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxL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QVUsRUFBRSxFQUFFLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFFcEUsTUFBTSxJQUFJLEdBQXVCLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUVwRSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUMsQ0FBQztJQUVGLE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxlQUFlLENBQUMsRUFBVTtJQUNqQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsSUFBSSxTQUFTLENBQUM7QUFDbkYsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsT0FBTyxDQUFDLEVBQVU7SUFDekIsT0FBTyxDQUNMLEVBQUU7U0FDQyxXQUFXLEVBQUU7U0FDYixPQUFPLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQztTQUMzQixPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FDdEMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJ1bm5hYmxlQ2hhcnQgLS0gQWRkcyAucmVjb3JkZXIoKSwgLnJlZGFjdCgpLCAucnVuKCksIC50b09wZW5BUEkoKSwgLnRvTUNQVG9vbCgpXG4gKiB0byBhIEZsb3dDaGFydCBvYmplY3QuXG4gKlxuICogQ2FsbGVkIGJ5IEZsb3dDaGFydEJ1aWxkZXIuYnVpbGQoKSB0byBlbnJpY2ggdGhlIGNvbXBpbGVkIGNoYXJ0IHdpdGhcbiAqIGQzLXN0eWxlIGNoYWluYWJsZSBydW4gbWV0aG9kcyBhbmQgc2VsZi1kZXNjcmliaW5nIG91dHB1dHMuXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBGbG93Q2hhcnQgfSBmcm9tICcuLi9idWlsZGVyL3R5cGVzLmpzJztcbmltcG9ydCB7IG5vcm1hbGl6ZVNjaGVtYSB9IGZyb20gJy4uL2NvbnRyYWN0L3NjaGVtYS5qcyc7XG5pbXBvcnQgdHlwZSB7IEpzb25TY2hlbWEgfSBmcm9tICcuLi9jb250cmFjdC90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEZsb3dSZWNvcmRlciB9IGZyb20gJy4uL2VuZ2luZS9uYXJyYXRpdmUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBSdW5PcHRpb25zLCBTdGFnZU5vZGUgfSBmcm9tICcuLi9lbmdpbmUvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBSZWNvcmRlciwgUmVkYWN0aW9uUG9saWN5IH0gZnJvbSAnLi4vc2NvcGUvdHlwZXMuanMnO1xuaW1wb3J0IHsgdHlwZSBSdW5SZXN1bHQsIFJ1bkNvbnRleHQgfSBmcm9tICcuL1J1bkNvbnRleHQuanMnO1xuXG4vKiogT3BlbkFQSSBnZW5lcmF0aW9uIG9wdGlvbnMuICovXG5leHBvcnQgaW50ZXJmYWNlIENoYXJ0T3BlbkFQSU9wdGlvbnMge1xuICB0aXRsZT86IHN0cmluZztcbiAgdmVyc2lvbj86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIHBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKiBNQ1AgdG9vbCBkZXNjcmlwdGlvbiDigJQgc2hhcGUgcmVxdWlyZWQgYnkgdGhlIE1vZGVsIENvbnRleHQgUHJvdG9jb2wgc3BlYy4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUNQVG9vbERlc2NyaXB0aW9uIHtcbiAgbmFtZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAvKipcbiAgICogSlNPTiBTY2hlbWEgb2JqZWN0IGRlc2NyaWJpbmcgdGhlIHRvb2wncyBpbnB1dC5cbiAgICogQWx3YXlzIHByZXNlbnQg4oCUIHRoZSBNQ1Agc3BlYyByZXF1aXJlcyBpbnB1dFNjaGVtYSBldmVuIGZvciB0b29scyB3aXRoIG5vIHBhcmFtZXRlcnMuXG4gICAqIERlZmF1bHRzIHRvIGB7IHR5cGU6ICdvYmplY3QnLCBwcm9wZXJ0aWVzOiB7fSwgYWRkaXRpb25hbFByb3BlcnRpZXM6IGZhbHNlIH1gLlxuICAgKi9cbiAgaW5wdXRTY2hlbWE6IEpzb25TY2hlbWE7XG59XG5cbi8qKlxuICogRmxvd0NoYXJ0IGVucmljaGVkIHdpdGggZDMtc3R5bGUgcnVuIG1ldGhvZHMgYW5kIHNlbGYtZGVzY3JpYmluZyBvdXRwdXRzLlxuICpcbiAqIEV4dGVuZHMgYnVpbGRlci5GbG93Q2hhcnQgKHdoaWNoIGFscmVhZHkgY2FycmllcyBidWlsZFRpbWVTdHJ1Y3R1cmUsIGRlc2NyaXB0aW9uLFxuICogc3RhZ2VEZXNjcmlwdGlvbnMsIGlucHV0U2NoZW1hLCBvdXRwdXRTY2hlbWEsIG91dHB1dE1hcHBlcikgYW5kIGFkZHMgdGhlIHJ1bnRpbWVcbiAqIG1ldGhvZHMgYXR0YWNoZWQgYnkgbWFrZVJ1bm5hYmxlKCkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVubmFibGVGbG93Q2hhcnQ8VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiBleHRlbmRzIEZsb3dDaGFydDxUT3V0LCBUU2NvcGU+IHtcbiAgLyoqIEF0dGFjaCBhIHJlY29yZGVyIGZvciB0aGUgbmV4dCBydW4uIFJldHVybnMgYSBjaGFpbmFibGUgUnVuQ29udGV4dC4gKi9cbiAgcmVjb3JkZXIocjogUmVjb3JkZXIgfCBGbG93UmVjb3JkZXIpOiBSdW5Db250ZXh0PFRPdXQsIFRTY29wZT47XG4gIC8qKiBTZXQgcmVkYWN0aW9uIHBvbGljeSBmb3IgdGhlIG5leHQgcnVuLiBSZXR1cm5zIGEgY2hhaW5hYmxlIFJ1bkNvbnRleHQuICovXG4gIHJlZGFjdChwb2xpY3k6IFJlZGFjdGlvblBvbGljeSk6IFJ1bkNvbnRleHQ8VE91dCwgVFNjb3BlPjtcbiAgLyoqIEV4ZWN1dGUgdGhlIGNoYXJ0IGRpcmVjdGx5IChiYXJlIHJ1biwgbm8gcmVjb3JkZXJzKS4gKi9cbiAgcnVuKG9wdGlvbnM/OiBSdW5PcHRpb25zKTogUHJvbWlzZTxSdW5SZXN1bHQ+O1xuICAvKiogR2VuZXJhdGUgT3BlbkFQSSAzLjEgc3BlYyBmcm9tIGNoYXJ0IG1ldGFkYXRhICsgY29udHJhY3QuIENhY2hlZCBmb3Igbm8tb3B0aW9ucyBjYWxscy4gKi9cbiAgdG9PcGVuQVBJKG9wdGlvbnM/OiBDaGFydE9wZW5BUElPcHRpb25zKTogb2JqZWN0O1xuICAvKiogR2VuZXJhdGUgTUNQIHRvb2wgZGVzY3JpcHRpb24gZnJvbSBjaGFydCBtZXRhZGF0YS4gQ2FjaGVkLiAqL1xuICB0b01DUFRvb2woKTogTUNQVG9vbERlc2NyaXB0aW9uO1xuICAvKiogR2VuZXJhdGUgYSBNZXJtYWlkIGZsb3djaGFydCBkaWFncmFtIHN0cmluZyBmcm9tIHRoZSBjaGFydCdzIG5vZGUgZ3JhcGguICovXG4gIHRvTWVybWFpZCgpOiBzdHJpbmc7XG59XG5cbi8vIENhY2hlIGZvciBuby1vcHRpb25zIHRvT3BlbkFQSSgpIGNhbGxzIG9ubHkg4oCUIHBhcmFtZXRlcml6ZWQgY2FsbHMgYXJlIG5vdCBjYWNoZWRcbi8vIGJlY2F1c2UgZGlmZmVyZW50IG9wdGlvbnMgcHJvZHVjZSBkaWZmZXJlbnQgb3V0cHV0LlxuY29uc3Qgb3BlbkFQSUNhY2hlID0gbmV3IFdlYWtNYXA8Rmxvd0NoYXJ0LCBvYmplY3Q+KCk7XG5jb25zdCBtY3BDYWNoZSA9IG5ldyBXZWFrTWFwPEZsb3dDaGFydCwgTUNQVG9vbERlc2NyaXB0aW9uPigpO1xuXG4vKipcbiAqIEVucmljaCBhIEZsb3dDaGFydCB3aXRoIHJ1biArIGRlc2NyaWJlIG1ldGhvZHMuXG4gKiBDYWxsZWQgYnkgRmxvd0NoYXJ0QnVpbGRlci5idWlsZCgpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZVJ1bm5hYmxlPFRPdXQsIFRTY29wZT4oY2hhcnQ6IEZsb3dDaGFydDxUT3V0LCBUU2NvcGU+KTogUnVubmFibGVGbG93Q2hhcnQ8VE91dCwgVFNjb3BlPiB7XG4gIGNvbnN0IHJ1bm5hYmxlID0gY2hhcnQgYXMgUnVubmFibGVGbG93Q2hhcnQ8VE91dCwgVFNjb3BlPjtcblxuICBydW5uYWJsZS5yZWNvcmRlciA9IGZ1bmN0aW9uIChyOiBSZWNvcmRlciB8IEZsb3dSZWNvcmRlcik6IFJ1bkNvbnRleHQ8VE91dCwgVFNjb3BlPiB7XG4gICAgcmV0dXJuIG5ldyBSdW5Db250ZXh0KGNoYXJ0KS5yZWNvcmRlcihyKTtcbiAgfTtcblxuICBydW5uYWJsZS5yZWRhY3QgPSBmdW5jdGlvbiAocG9saWN5OiBSZWRhY3Rpb25Qb2xpY3kpOiBSdW5Db250ZXh0PFRPdXQsIFRTY29wZT4ge1xuICAgIHJldHVybiBuZXcgUnVuQ29udGV4dChjaGFydCkucmVkYWN0KHBvbGljeSk7XG4gIH07XG5cbiAgcnVubmFibGUucnVuID0gZnVuY3Rpb24gKG9wdGlvbnM/OiBSdW5PcHRpb25zKTogUHJvbWlzZTxSdW5SZXN1bHQ+IHtcbiAgICByZXR1cm4gbmV3IFJ1bkNvbnRleHQoY2hhcnQpLnJ1bihvcHRpb25zKTtcbiAgfTtcblxuICBydW5uYWJsZS50b09wZW5BUEkgPSBmdW5jdGlvbiAob3B0aW9ucz86IENoYXJ0T3BlbkFQSU9wdGlvbnMpOiBvYmplY3Qge1xuICAgIC8vIE9ubHkgY2FjaGUgbm8tb3B0aW9ucyBjYWxscyDigJQgcGFyYW1ldGVyaXplZCBjYWxscyB2YXJ5IGJ5IG9wdGlvbnNcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIGNvbnN0IGNhY2hlZCA9IG9wZW5BUElDYWNoZS5nZXQoY2hhcnQpO1xuICAgICAgaWYgKGNhY2hlZCkgcmV0dXJuIGNhY2hlZDtcbiAgICB9XG5cbiAgICBjb25zdCBidWlsZGVyQ2hhcnQgPSBjaGFydCBhcyBhbnk7XG4gICAgY29uc3QgdGl0bGUgPSBvcHRpb25zPy50aXRsZSA/PyBidWlsZGVyQ2hhcnQuZGVzY3JpcHRpb24/LnNwbGl0KCdcXG4nKVswXSA/PyAnQVBJJztcbiAgICBjb25zdCB2ZXJzaW9uID0gb3B0aW9ucz8udmVyc2lvbiA/PyAnMS4wLjAnO1xuICAgIC8vIFVzZSByb290LmlkICh0aGUgZXhwbGljaXQgbWFjaGluZS1yZWFkYWJsZSBpZCkgYXMgdGhlIHBhdGggc2VnbWVudCwgc2FuaXRpemVkXG4gICAgY29uc3QgcmF3SWQgPSBidWlsZGVyQ2hhcnQucm9vdD8uaWQgPz8gJ2V4ZWN1dGUnO1xuICAgIGNvbnN0IHBhdGggPSBvcHRpb25zPy5wYXRoID8/IGAvJHtzbHVnaWZ5KHJhd0lkKX1gO1xuXG4gICAgY29uc3Qgc3BlYzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICBvcGVuYXBpOiAnMy4xLjAnLFxuICAgICAgaW5mbzogeyB0aXRsZSwgdmVyc2lvbiwgZGVzY3JpcHRpb246IG9wdGlvbnM/LmRlc2NyaXB0aW9uID8/IGJ1aWxkZXJDaGFydC5kZXNjcmlwdGlvbiB9LFxuICAgICAgcGF0aHM6IHtcbiAgICAgICAgW3BhdGhdOiB7XG4gICAgICAgICAgcG9zdDoge1xuICAgICAgICAgICAgc3VtbWFyeTogdGl0bGUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYnVpbGRlckNoYXJ0LmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgLi4uKGJ1aWxkZXJDaGFydC5pbnB1dFNjaGVtYVxuICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIHJlcXVlc3RCb2R5OiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHsgJ2FwcGxpY2F0aW9uL2pzb24nOiB7IHNjaGVtYTogbm9ybWFsaXplU2NoZW1hKGJ1aWxkZXJDaGFydC5pbnB1dFNjaGVtYSkgfSB9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDoge30pLFxuICAgICAgICAgICAgcmVzcG9uc2VzOiB7XG4gICAgICAgICAgICAgICcyMDAnOiB7XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb246ICdTdWNjZXNzJyxcbiAgICAgICAgICAgICAgICAuLi4oYnVpbGRlckNoYXJ0Lm91dHB1dFNjaGVtYVxuICAgICAgICAgICAgICAgICAgPyB7IGNvbnRlbnQ6IHsgJ2FwcGxpY2F0aW9uL2pzb24nOiB7IHNjaGVtYTogbm9ybWFsaXplU2NoZW1hKGJ1aWxkZXJDaGFydC5vdXRwdXRTY2hlbWEpIH0gfSB9XG4gICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGlmICghb3B0aW9ucykgb3BlbkFQSUNhY2hlLnNldChjaGFydCwgc3BlYyk7XG4gICAgcmV0dXJuIHNwZWM7XG4gIH07XG5cbiAgcnVubmFibGUudG9NZXJtYWlkID0gZnVuY3Rpb24gKCk6IHN0cmluZyB7XG4gICAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gWydmbG93Y2hhcnQgVEQnXTtcbiAgICBjb25zdCBpZE9mID0gKGs6IHN0cmluZykgPT4gKGsgfHwgJycpLnJlcGxhY2UoL1teYS16QS1aMC05X10vZywgJ18nKSB8fCAnXyc7XG4gICAgY29uc3QgdmlzaXRlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIGNvbnN0IHdhbGsgPSAobjogU3RhZ2VOb2RlKSA9PiB7XG4gICAgICBjb25zdCBuaWQgPSBpZE9mKG4uaWQpO1xuICAgICAgaWYgKHZpc2l0ZWQuaGFzKG5pZCkpIHJldHVybjtcbiAgICAgIHZpc2l0ZWQuYWRkKG5pZCk7XG4gICAgICBsaW5lcy5wdXNoKGAke25pZH1bXCIke24ubmFtZX1cIl1gKTtcbiAgICAgIGZvciAoY29uc3QgYyBvZiBuLmNoaWxkcmVuIHx8IFtdKSB7XG4gICAgICAgIGNvbnN0IGNpZCA9IGlkT2YoYy5pZCk7XG4gICAgICAgIGxpbmVzLnB1c2goYCR7bmlkfSAtLT4gJHtjaWR9YCk7XG4gICAgICAgIHdhbGsoYyk7XG4gICAgICB9XG4gICAgICBpZiAobi5uZXh0KSB7XG4gICAgICAgIGNvbnN0IG1pZCA9IGlkT2Yobi5uZXh0LmlkKTtcbiAgICAgICAgbGluZXMucHVzaChgJHtuaWR9IC0tPiAke21pZH1gKTtcbiAgICAgICAgd2FsayhuLm5leHQpO1xuICAgICAgfVxuICAgIH07XG4gICAgd2FsayhjaGFydC5yb290KTtcbiAgICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG4gIH07XG5cbiAgcnVubmFibGUudG9NQ1BUb29sID0gZnVuY3Rpb24gKCk6IE1DUFRvb2xEZXNjcmlwdGlvbiB7XG4gICAgY29uc3QgY2FjaGVkID0gbWNwQ2FjaGUuZ2V0KGNoYXJ0KTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgYnVpbGRlckNoYXJ0ID0gY2hhcnQgYXMgYW55O1xuICAgIC8vIFVzZSByb290LmlkIChleHBsaWNpdCBtYWNoaW5lLXJlYWRhYmxlIGlkKSwgc2FuaXRpemVkIHRvIE1DUCBuYW1lIGNoYXJhY3RlciBhbGxvd2xpc3RcbiAgICBjb25zdCBuYW1lID0gc2FuaXRpemVNQ1BOYW1lKGJ1aWxkZXJDaGFydC5yb290Py5pZCA/PyAnZXhlY3V0ZScpO1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gYnVpbGRlckNoYXJ0LmRlc2NyaXB0aW9uIHx8IGBFeGVjdXRlIHRoZSAke25hbWV9IGZsb3djaGFydGA7XG5cbiAgICAvLyBNQ1Agc3BlYyByZXF1aXJlcyBpbnB1dFNjaGVtYSB0byBhbHdheXMgYmUgcHJlc2VudC5cbiAgICAvLyBXaGVuIG5vIGNvbnRyYWN0IGlzIGRlZmluZWQsIHVzZSB0aGUgcmVjb21tZW5kZWQgbm8tcGFyYW1ldGVyIGZvcm0uXG4gICAgY29uc3QgaW5wdXRTY2hlbWE6IEpzb25TY2hlbWEgPSBidWlsZGVyQ2hhcnQuaW5wdXRTY2hlbWFcbiAgICAgID8gbm9ybWFsaXplU2NoZW1hKGJ1aWxkZXJDaGFydC5pbnB1dFNjaGVtYSlcbiAgICAgIDogeyB0eXBlOiAnb2JqZWN0JywgcHJvcGVydGllczoge30sIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiBmYWxzZSB9O1xuXG4gICAgY29uc3QgdG9vbDogTUNQVG9vbERlc2NyaXB0aW9uID0geyBuYW1lLCBkZXNjcmlwdGlvbiwgaW5wdXRTY2hlbWEgfTtcblxuICAgIG1jcENhY2hlLnNldChjaGFydCwgdG9vbCk7XG4gICAgcmV0dXJuIHRvb2w7XG4gIH07XG5cbiAgcmV0dXJuIHJ1bm5hYmxlO1xufVxuXG4vKipcbiAqIFNhbml0aXplIGEgc3RyaW5nIHRvIGNvbmZvcm0gdG8gdGhlIE1DUCB0b29sIG5hbWUgY2hhcmFjdGVyIGFsbG93bGlzdDpcbiAqIFtBLVphLXowLTlfXFwtLl0g4oCUIGFueSBvdGhlciBjaGFyYWN0ZXIgaXMgcmVwbGFjZWQgd2l0aCB1bmRlcnNjb3JlLlxuICogVHJpbXMgbGVhZGluZy90cmFpbGluZyB1bmRlcnNjb3JlcyBpbnRyb2R1Y2VkIGJ5IHJlcGxhY2VtZW50LlxuICovXG5mdW5jdGlvbiBzYW5pdGl6ZU1DUE5hbWUoaWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBpZC5yZXBsYWNlKC9bXkEtWmEtejAtOV9cXC0uXS9nLCAnXycpLnJlcGxhY2UoL15fK3xfKyQvZywgJycpIHx8ICdleGVjdXRlJztcbn1cblxuLyoqXG4gKiBTbHVnaWZ5IGEgc3RyaW5nIGZvciB1c2UgYXMgYW4gT3BlbkFQSSBwYXRoIHNlZ21lbnQuXG4gKiBMb3dlcmNhc2VzIGFuZCByZXBsYWNlcyBub24tYWxwaGFudW1lcmljIHJ1bnMgd2l0aCBoeXBoZW5zLlxuICovXG5mdW5jdGlvbiBzbHVnaWZ5KGlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gKFxuICAgIGlkXG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnJlcGxhY2UoL1teYS16MC05XSsvZywgJy0nKVxuICAgICAgLnJlcGxhY2UoL14tfC0kL2csICcnKSB8fCAnZXhlY3V0ZSdcbiAgKTtcbn1cbiJdfQ==
@@ -34,7 +34,6 @@ import { isDevMode } from '../scope/detectCircular.js';
34
34
  * @returns the matching SubtreeSnapshot, or `undefined` if the path is not found
35
35
  */
36
36
  export function getSubtreeSnapshot(snapshot, path, allNarrativeEntries) {
37
- var _a;
38
37
  if (!snapshot || !path)
39
38
  return undefined;
40
39
  const normalizedPath = path.split('/').filter(Boolean).join('/');
@@ -49,8 +48,8 @@ export function getSubtreeSnapshot(snapshot, path, allNarrativeEntries) {
49
48
  const treeCtx = sfResult.treeContext;
50
49
  return {
51
50
  subflowId: lastSegment,
52
- executionTree: (_a = treeCtx === null || treeCtx === void 0 ? void 0 : treeCtx.stageContexts) !== null && _a !== void 0 ? _a : findSubflowInTree(snapshot.executionTree, lastSegment),
53
- sharedState: treeCtx === null || treeCtx === void 0 ? void 0 : treeCtx.globalContext,
51
+ executionTree: treeCtx?.stageContexts ?? findSubflowInTree(snapshot.executionTree, lastSegment),
52
+ sharedState: treeCtx?.globalContext,
54
53
  narrativeEntries: allNarrativeEntries ? extractScopedNarrative(allNarrativeEntries, lastSegment) : undefined,
55
54
  };
56
55
  }
@@ -82,7 +81,7 @@ export function getSubtreeSnapshot(snapshot, path, allNarrativeEntries) {
82
81
  * @returns array of available subflow paths, empty if none
83
82
  */
84
83
  export function listSubflowPaths(snapshot) {
85
- if (!(snapshot === null || snapshot === void 0 ? void 0 : snapshot.subflowResults))
84
+ if (!snapshot?.subflowResults)
86
85
  return [];
87
86
  return Object.keys(snapshot.subflowResults);
88
87
  }
@@ -126,4 +125,4 @@ function findSubflowInTree(node, subflowId) {
126
125
  }
127
126
  return undefined;
128
127
  }
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0U3VidHJlZVNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9ydW5uZXIvZ2V0U3VidHJlZVNuYXBzaG90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFJSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFldkQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLFFBQXlCLEVBQ3pCLElBQVksRUFDWixtQkFBOEM7O0lBRTlDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFekMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pFLElBQUksQ0FBQyxjQUFjO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFdEMsTUFBTSxjQUFjLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQztJQUMvQyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRyxDQUFDO0lBRXJELDREQUE0RDtJQUM1RCw2RUFBNkU7SUFDN0UsSUFBSSxjQUFjLElBQUksY0FBYyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7UUFDckQsTUFBTSxRQUFRLEdBQUcsY0FBYyxDQUFDLGNBQWMsQ0FBNEIsQ0FBQztRQUMzRSxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsV0FBa0QsQ0FBQztRQUU1RSxPQUFPO1lBQ0wsU0FBUyxFQUFFLFdBQVc7WUFDdEIsYUFBYSxFQUNYLE1BQUMsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLGFBQTBDLG1DQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDO1lBQ2hILFdBQVcsRUFBRSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsYUFBb0Q7WUFDMUUsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLG1CQUFtQixFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQzdHLENBQUM7SUFDSixDQUFDO0lBRUQsZ0VBQWdFO0lBQ2hFLGtFQUFrRTtJQUNsRSwyRUFBMkU7SUFDM0UsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN6RSxJQUFJLENBQUMsU0FBUztRQUFFLE9BQU8sU0FBUyxDQUFDO0lBRWpDLElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQztRQUNoQixPQUFPLENBQUMsSUFBSSxDQUNWLG1DQUFtQyxjQUFjLHFDQUFxQztZQUNwRiw2RkFBNkYsQ0FDaEcsQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPO1FBQ0wsU0FBUyxFQUFFLFdBQVc7UUFDdEIsYUFBYSxFQUFFLFNBQVM7UUFDeEIsV0FBVyxFQUFFLFNBQVM7UUFDdEIsZ0JBQWdCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLHNCQUFzQixDQUFDLG1CQUFtQixFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO0tBQzdHLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxVQUFVLGdCQUFnQixDQUFDLFFBQXlCO0lBQ3hELElBQUksQ0FBQyxDQUFBLFFBQVEsYUFBUixRQUFRLHVCQUFSLFFBQVEsQ0FBRSxjQUFjLENBQUE7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUN6QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxzQkFBc0IsQ0FBQyxPQUFpQyxFQUFFLElBQVk7SUFDN0Usa0VBQWtFO0lBQ2xFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFHLENBQUM7SUFDekMsT0FBTyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDOUIscUZBQXFGO1FBQ3JGLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxTQUFTO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDL0MsNkZBQTZGO1FBQzdGLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxTQUFTO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDekUsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxpQkFBaUIsQ0FBQyxJQUErQixFQUFFLFNBQWlCO0lBQzNFLElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFNUIsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUU5QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNsQixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxNQUFNLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDbEQsSUFBSSxLQUFLO2dCQUFFLE9BQU8sS0FBSyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxPQUFPLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGdldFN1YnRyZWVTbmFwc2hvdCDigJQgbmF2aWdhdGUgYW4gZXhlY3V0aW9uIHNuYXBzaG90IHRyZWUgYnkgc3ViZmxvdyBwYXRoLlxuICpcbiAqIEdpdmVuIGEgUnVudGltZVNuYXBzaG90IGFuZCBhIHNsYXNoLXNlcGFyYXRlZCBwYXRoIG9mIHN1YmZsb3cgSURzLFxuICogcmV0dXJucyB0aGUgc3VidHJlZSByb290ZWQgYXQgdGhhdCBzdWJmbG93LiBVc2VmdWwgZm9yIExMTSBkcmlsbC1kb3duOlxuICogaW5zdGVhZCBvZiBkdW1waW5nIHRoZSBmdWxsIHRyYWNlLCBmZXRjaCBvbmx5IHRoZSByZWxldmFudCBzdWJ0cmVlLlxuICpcbiAqIFVzYWdlOlxuICogICBjb25zdCBzbmFwc2hvdCA9IGV4ZWN1dG9yLmdldFNuYXBzaG90KCk7XG4gKlxuICogICAvLyBUb3AtbGV2ZWwgc3ViZmxvd1xuICogICBnZXRTdWJ0cmVlU25hcHNob3Qoc25hcHNob3QsICdzZi1wYXltZW50Jyk7XG4gKlxuICogICAvLyBOZXN0ZWQgc3ViZmxvdyAocGF5bWVudCDihpIgdmFsaWRhdGlvbilcbiAqICAgZ2V0U3VidHJlZVNuYXBzaG90KHNuYXBzaG90LCAnc2YtcGF5bWVudC9zZi12YWxpZGF0aW9uJyk7XG4gKlxuICogICAvLyBSZXR1cm5zIHVuZGVmaW5lZCBpZiBwYXRoIG5vdCBmb3VuZFxuICogICBnZXRTdWJ0cmVlU25hcHNob3Qoc25hcHNob3QsICdub25leGlzdGVudCcpOyAvLyB1bmRlZmluZWRcbiAqXG4gKiAgIC8vIERpc2NvdmVyIGF2YWlsYWJsZSBwYXRoc1xuICogICBsaXN0U3ViZmxvd1BhdGhzKHNuYXBzaG90KTsgLy8gWydzZi1wYXltZW50JywgJ3NmLXBheW1lbnQvc2YtdmFsaWRhdGlvbiddXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBDb21iaW5lZE5hcnJhdGl2ZUVudHJ5IH0gZnJvbSAnLi4vZW5naW5lL25hcnJhdGl2ZS9uYXJyYXRpdmVUeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFN0YWdlU25hcHNob3QgfSBmcm9tICcuLi9tZW1vcnkvdHlwZXMuanMnO1xuaW1wb3J0IHsgaXNEZXZNb2RlIH0gZnJvbSAnLi4vc2NvcGUvZGV0ZWN0Q2lyY3VsYXIuanMnO1xuaW1wb3J0IHR5cGUgeyBSdW50aW1lU25hcHNob3QgfSBmcm9tICcuL0V4ZWN1dGlvblJ1bnRpbWUuanMnO1xuXG4vKiogVGhlIHJlc3VsdCBvZiBuYXZpZ2F0aW5nIHRvIGEgc3VidHJlZSB3aXRoaW4gYSBzbmFwc2hvdC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VidHJlZVNuYXBzaG90IHtcbiAgLyoqIFRoZSBzdWJmbG93IElEIHRoYXQgd2FzIG1hdGNoZWQgKGxhc3Qgc2VnbWVudCBvZiB0aGUgcGF0aCkuICovXG4gIHJlYWRvbmx5IHN1YmZsb3dJZDogc3RyaW5nO1xuICAvKiogVGhlIGV4ZWN1dGlvbiB0cmVlIHJvb3RlZCBhdCB0aGlzIHN1YmZsb3cuICovXG4gIHJlYWRvbmx5IGV4ZWN1dGlvblRyZWU6IFN0YWdlU25hcHNob3Q7XG4gIC8qKiBTaGFyZWQgc3RhdGUgc2NvcGVkIHRvIHRoaXMgc3ViZmxvdyAoZnJvbSBzdWJmbG93UmVzdWx0cyBpZiBhdmFpbGFibGUpLiAqL1xuICByZWFkb25seSBzaGFyZWRTdGF0ZT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAvKiogTmFycmF0aXZlIGVudHJpZXMgc2NvcGVkIHRvIHRoaXMgc3ViZmxvdyAoYmV0d2VlbiBlbnRyeS9leGl0IGV2ZW50cykuICovXG4gIHJlYWRvbmx5IG5hcnJhdGl2ZUVudHJpZXM/OiBDb21iaW5lZE5hcnJhdGl2ZUVudHJ5W107XG59XG5cbi8qKlxuICogTmF2aWdhdGUgdGhlIGV4ZWN1dGlvbiBzbmFwc2hvdCB0cmVlIGJ5IGEgc2xhc2gtc2VwYXJhdGVkIHN1YmZsb3cgcGF0aC5cbiAqXG4gKiAqKkltcGxlbWVudGF0aW9uIG5vdGU6KiogZm9vdHByaW50anMncyBTdWJmbG93RXhlY3V0b3Igc3RvcmVzIG5lc3RlZCBzdWJmbG93XG4gKiByZXN1bHRzIHdpdGggY29tcG9zaXRlIHNsYXNoLXNlcGFyYXRlZCBrZXlzIChlLmcuIFwic2Ytb3V0ZXIvc2YtaW5uZXJcIikgaW5cbiAqIHRoZSBmbGF0IGBzdWJmbG93UmVzdWx0c2AgbWFwLiBUaGlzIGZ1bmN0aW9uIHVzZXMgdGhvc2Uga2V5cyBmb3IgbG9va3VwLlxuICpcbiAqIEBwYXJhbSBzbmFwc2hvdCDigJQgdGhlIGZ1bGwgUnVudGltZVNuYXBzaG90IGZyb20gYGV4ZWN1dG9yLmdldFNuYXBzaG90KClgXG4gKiBAcGFyYW0gcGF0aCDigJQgc2xhc2gtc2VwYXJhdGVkIHN1YmZsb3cgSURzLCBlLmcuIGBcInNmLXBheW1lbnRcImAgb3IgYFwic2YtcGF5bWVudC9zZi12YWxpZGF0aW9uXCJgXG4gKiBAcGFyYW0gYWxsTmFycmF0aXZlRW50cmllcyDigJQgb3B0aW9uYWwgZnVsbCBuYXJyYXRpdmUgZW50cmllcyBmcm9tIGBleGVjdXRvci5nZXROYXJyYXRpdmVFbnRyaWVzKClgLCB1c2VkIHRvIGV4dHJhY3Qgc2NvcGVkIG5hcnJhdGl2ZSBmb3IgdGhlIHN1YnRyZWVcbiAqIEByZXR1cm5zIHRoZSBtYXRjaGluZyBTdWJ0cmVlU25hcHNob3QsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBwYXRoIGlzIG5vdCBmb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3VidHJlZVNuYXBzaG90KFxuICBzbmFwc2hvdDogUnVudGltZVNuYXBzaG90LFxuICBwYXRoOiBzdHJpbmcsXG4gIGFsbE5hcnJhdGl2ZUVudHJpZXM/OiBDb21iaW5lZE5hcnJhdGl2ZUVudHJ5W10sXG4pOiBTdWJ0cmVlU25hcHNob3QgfCB1bmRlZmluZWQge1xuICBpZiAoIXNuYXBzaG90IHx8ICFwYXRoKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IG5vcm1hbGl6ZWRQYXRoID0gcGF0aC5zcGxpdCgnLycpLmZpbHRlcihCb29sZWFuKS5qb2luKCcvJyk7XG4gIGlmICghbm9ybWFsaXplZFBhdGgpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgY29uc3Qgc3ViZmxvd1Jlc3VsdHMgPSBzbmFwc2hvdC5zdWJmbG93UmVzdWx0cztcbiAgY29uc3QgbGFzdFNlZ21lbnQgPSBub3JtYWxpemVkUGF0aC5zcGxpdCgnLycpLnBvcCgpITtcblxuICAvLyBTdHJhdGVneSAxOiBEaXJlY3QgbG9va3VwIGluIHN1YmZsb3dSZXN1bHRzIGJ5IGZ1bGwgcGF0aC5cbiAgLy8gU3ViZmxvd0V4ZWN1dG9yIHN0b3JlcyBuZXN0ZWQgcmVzdWx0cyB3aXRoIGNvbXBvc2l0ZSBzbGFzaC1zZXBhcmF0ZWQga2V5cy5cbiAgaWYgKHN1YmZsb3dSZXN1bHRzICYmIHN1YmZsb3dSZXN1bHRzW25vcm1hbGl6ZWRQYXRoXSkge1xuICAgIGNvbnN0IHNmUmVzdWx0ID0gc3ViZmxvd1Jlc3VsdHNbbm9ybWFsaXplZFBhdGhdIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGNvbnN0IHRyZWVDdHggPSBzZlJlc3VsdC50cmVlQ29udGV4dCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWJmbG93SWQ6IGxhc3RTZWdtZW50LFxuICAgICAgZXhlY3V0aW9uVHJlZTpcbiAgICAgICAgKHRyZWVDdHg/LnN0YWdlQ29udGV4dHMgYXMgdW5rbm93biBhcyBTdGFnZVNuYXBzaG90KSA/PyBmaW5kU3ViZmxvd0luVHJlZShzbmFwc2hvdC5leGVjdXRpb25UcmVlLCBsYXN0U2VnbWVudCksXG4gICAgICBzaGFyZWRTdGF0ZTogdHJlZUN0eD8uZ2xvYmFsQ29udGV4dCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCxcbiAgICAgIG5hcnJhdGl2ZUVudHJpZXM6IGFsbE5hcnJhdGl2ZUVudHJpZXMgPyBleHRyYWN0U2NvcGVkTmFycmF0aXZlKGFsbE5hcnJhdGl2ZUVudHJpZXMsIGxhc3RTZWdtZW50KSA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgLy8gU3RyYXRlZ3kgMjogRmluZCB0aGUgbm9kZSBpbiB0aGUgZXhlY3V0aW9uIHRyZWUgYnkgc3ViZmxvd0lkLlxuICAvLyBUaGlzIHBhdGggbGFja3Mgc2hhcmVkU3RhdGUgKHN1YmZsb3dSZXN1bHRzIHdhcyBub3QgcG9wdWxhdGVkKS5cbiAgLy8gVGhpcyB0eXBpY2FsbHkgbWVhbnMgdGhlIGV4ZWN1dG9yIHJhbiB3aXRob3V0IHN1YmZsb3cgcmVzdWx0IGVucmljaG1lbnQuXG4gIGNvbnN0IGZvdW5kTm9kZSA9IGZpbmRTdWJmbG93SW5UcmVlKHNuYXBzaG90LmV4ZWN1dGlvblRyZWUsIGxhc3RTZWdtZW50KTtcbiAgaWYgKCFmb3VuZE5vZGUpIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgaWYgKGlzRGV2TW9kZSgpKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgYFtmb290cHJpbnRdIGdldFN1YnRyZWVTbmFwc2hvdCgnJHtub3JtYWxpemVkUGF0aH0nKTogc3ViZmxvd1Jlc3VsdHMgbm90IHBvcHVsYXRlZCDigJQgYCArXG4gICAgICAgICdzaGFyZWRTdGF0ZSB3aWxsIGJlIHVuZGVmaW5lZC4gRGlkIHlvdSBlbmFibGUgZW5yaWNoU25hcHNob3RzIG9yIGF0dGFjaCBhbiBFeHRyYWN0b3JSdW5uZXI/JyxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzdWJmbG93SWQ6IGxhc3RTZWdtZW50LFxuICAgIGV4ZWN1dGlvblRyZWU6IGZvdW5kTm9kZSxcbiAgICBzaGFyZWRTdGF0ZTogdW5kZWZpbmVkLFxuICAgIG5hcnJhdGl2ZUVudHJpZXM6IGFsbE5hcnJhdGl2ZUVudHJpZXMgPyBleHRyYWN0U2NvcGVkTmFycmF0aXZlKGFsbE5hcnJhdGl2ZUVudHJpZXMsIGxhc3RTZWdtZW50KSA6IHVuZGVmaW5lZCxcbiAgfTtcbn1cblxuLyoqXG4gKiBMaXN0IGFsbCBhdmFpbGFibGUgc3ViZmxvdyBwYXRocyBpbiBhIHNuYXBzaG90LlxuICpcbiAqIFJldHVybnMgdGhlIGtleXMgZnJvbSBgc3ViZmxvd1Jlc3VsdHNgLCB3aGljaCBhcmUgc2xhc2gtc2VwYXJhdGVkXG4gKiBzdWJmbG93IElEIHBhdGhzIChlLmcuIGBbXCJzZi1wYXltZW50XCIsIFwic2Ytb3V0ZXIvc2YtaW5uZXJcIl1gKS5cbiAqIFVzZWZ1bCBmb3IgZGlzY292ZXJ5IOKAlCBhbiBMTE0gb3IgVUkgY2FuIGVudW1lcmF0ZSBhdmFpbGFibGUgZHJpbGwtZG93biB0YXJnZXRzLlxuICpcbiAqIEBwYXJhbSBzbmFwc2hvdCDigJQgdGhlIGZ1bGwgUnVudGltZVNuYXBzaG90IGZyb20gYGV4ZWN1dG9yLmdldFNuYXBzaG90KClgXG4gKiBAcmV0dXJucyBhcnJheSBvZiBhdmFpbGFibGUgc3ViZmxvdyBwYXRocywgZW1wdHkgaWYgbm9uZVxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlzdFN1YmZsb3dQYXRocyhzbmFwc2hvdDogUnVudGltZVNuYXBzaG90KTogc3RyaW5nW10ge1xuICBpZiAoIXNuYXBzaG90Py5zdWJmbG93UmVzdWx0cykgcmV0dXJuIFtdO1xuICByZXR1cm4gT2JqZWN0LmtleXMoc25hcHNob3Quc3ViZmxvd1Jlc3VsdHMpO1xufVxuXG4vKipcbiAqIEV4dHJhY3QgbmFycmF0aXZlIGVudHJpZXMgc2NvcGVkIHRvIGEgc3BlY2lmaWMgc3ViZmxvdy5cbiAqIEZpbHRlcnMgYnkgZW50cnkuc3ViZmxvd0lkIGZpZWxkIChzZXQgYnkgQ29tYmluZWROYXJyYXRpdmVSZWNvcmRlciBkdXJpbmcgdHJhdmVyc2FsKS5cbiAqIEFsc28gaW5jbHVkZXMgdGhlIHN1YmZsb3cgZW50cnkvZXhpdCBtYXJrZXIgZW50cmllcyB0aGVtc2VsdmVzLlxuICovXG5mdW5jdGlvbiBleHRyYWN0U2NvcGVkTmFycmF0aXZlKGVudHJpZXM6IENvbWJpbmVkTmFycmF0aXZlRW50cnlbXSwgcGF0aDogc3RyaW5nKTogQ29tYmluZWROYXJyYXRpdmVFbnRyeVtdIHtcbiAgLy8gVGhlIGxhc3Qgc2VnbWVudCBvZiB0aGUgcGF0aCBpcyB0aGUgc3ViZmxvd0lkIHN0b3JlZCBvbiBlbnRyaWVzXG4gIGNvbnN0IHN1YmZsb3dJZCA9IHBhdGguc3BsaXQoJy8nKS5wb3AoKSE7XG4gIHJldHVybiBlbnRyaWVzLmZpbHRlcigoZW50cnkpID0+IHtcbiAgICAvLyBJbmNsdWRlIGVudHJpZXMgd2hvc2Ugc3ViZmxvd0lkIG1hdGNoZXMgKGV2ZW50cyBlbWl0dGVkIHdoaWxlIGluc2lkZSB0aGlzIHN1YmZsb3cpXG4gICAgaWYgKGVudHJ5LnN1YmZsb3dJZCA9PT0gc3ViZmxvd0lkKSByZXR1cm4gdHJ1ZTtcbiAgICAvLyBBbHNvIGluY2x1ZGUgdGhlIHN1YmZsb3cgZW50cnkvZXhpdCBtYXJrZXJzICh0aGV5IGNhcnJ5IHRoZSBwYXJlbnQgc3ViZmxvd0lkIG9yIHVuZGVmaW5lZClcbiAgICBpZiAoZW50cnkudHlwZSA9PT0gJ3N1YmZsb3cnICYmIGVudHJ5LnN0YWdlSWQgPT09IHN1YmZsb3dJZCkgcmV0dXJuIHRydWU7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9KTtcbn1cblxuLyoqXG4gKiBGaW5kIGEgc3ViZmxvdyBub2RlIGluIHRoZSBleGVjdXRpb24gdHJlZSBieSBzZWFyY2hpbmcgZm9yIGEgbm9kZVxuICogd2hvc2Ugc3ViZmxvd0lkIG1hdGNoZXMuXG4gKiBTZWFyY2hlcyBkZXB0aC1maXJzdCB0aHJvdWdoIGBuZXh0YCBhbmQgYGNoaWxkcmVuYCBsaW5rcy5cbiAqL1xuZnVuY3Rpb24gZmluZFN1YmZsb3dJblRyZWUobm9kZTogU3RhZ2VTbmFwc2hvdCB8IHVuZGVmaW5lZCwgc3ViZmxvd0lkOiBzdHJpbmcpOiBTdGFnZVNuYXBzaG90IHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFub2RlKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGlmIChub2RlLnN1YmZsb3dJZCA9PT0gc3ViZmxvd0lkKSByZXR1cm4gbm9kZTtcblxuICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygbm9kZS5jaGlsZHJlbikge1xuICAgICAgY29uc3QgZm91bmQgPSBmaW5kU3ViZmxvd0luVHJlZShjaGlsZCwgc3ViZmxvd0lkKTtcbiAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kO1xuICAgIH1cbiAgfVxuXG4gIGlmIChub2RlLm5leHQpIHtcbiAgICByZXR1cm4gZmluZFN1YmZsb3dJblRyZWUobm9kZS5uZXh0LCBzdWJmbG93SWQpO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cbiJdfQ==
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0U3VidHJlZVNuYXBzaG90LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9ydW5uZXIvZ2V0U3VidHJlZVNuYXBzaG90LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFJSCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFldkQ7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQ2hDLFFBQXlCLEVBQ3pCLElBQVksRUFDWixtQkFBOEM7SUFFOUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUV6QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakUsSUFBSSxDQUFDLGNBQWM7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUV0QyxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDO0lBQy9DLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFHLENBQUM7SUFFckQsNERBQTREO0lBQzVELDZFQUE2RTtJQUM3RSxJQUFJLGNBQWMsSUFBSSxjQUFjLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztRQUNyRCxNQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsY0FBYyxDQUE0QixDQUFDO1FBQzNFLE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxXQUFrRCxDQUFDO1FBRTVFLE9BQU87WUFDTCxTQUFTLEVBQUUsV0FBVztZQUN0QixhQUFhLEVBQ1YsT0FBTyxFQUFFLGFBQTBDLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxXQUFXLENBQUM7WUFDaEgsV0FBVyxFQUFFLE9BQU8sRUFBRSxhQUFvRDtZQUMxRSxnQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7U0FDN0csQ0FBQztJQUNKLENBQUM7SUFFRCxnRUFBZ0U7SUFDaEUsa0VBQWtFO0lBQ2xFLDJFQUEyRTtJQUMzRSxNQUFNLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3pFLElBQUksQ0FBQyxTQUFTO1FBQUUsT0FBTyxTQUFTLENBQUM7SUFFakMsSUFBSSxTQUFTLEVBQUUsRUFBRSxDQUFDO1FBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsbUNBQW1DLGNBQWMscUNBQXFDO1lBQ3BGLDZGQUE2RixDQUNoRyxDQUFDO0lBQ0osQ0FBQztJQUVELE9BQU87UUFDTCxTQUFTLEVBQUUsV0FBVztRQUN0QixhQUFhLEVBQUUsU0FBUztRQUN4QixXQUFXLEVBQUUsU0FBUztRQUN0QixnQkFBZ0IsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsbUJBQW1CLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7S0FDN0csQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsUUFBeUI7SUFDeEQsSUFBSSxDQUFDLFFBQVEsRUFBRSxjQUFjO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDekMsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsc0JBQXNCLENBQUMsT0FBaUMsRUFBRSxJQUFZO0lBQzdFLGtFQUFrRTtJQUNsRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRyxDQUFDO0lBQ3pDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQzlCLHFGQUFxRjtRQUNyRixJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssU0FBUztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQy9DLDZGQUE2RjtRQUM3RixJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssU0FBUztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ3pFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsaUJBQWlCLENBQUMsSUFBK0IsRUFBRSxTQUFpQjtJQUMzRSxJQUFJLENBQUMsSUFBSTtRQUFFLE9BQU8sU0FBUyxDQUFDO0lBRTVCLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFFOUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbEIsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEMsTUFBTSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ2xELElBQUksS0FBSztnQkFBRSxPQUFPLEtBQUssQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2QsT0FBTyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBnZXRTdWJ0cmVlU25hcHNob3Qg4oCUIG5hdmlnYXRlIGFuIGV4ZWN1dGlvbiBzbmFwc2hvdCB0cmVlIGJ5IHN1YmZsb3cgcGF0aC5cbiAqXG4gKiBHaXZlbiBhIFJ1bnRpbWVTbmFwc2hvdCBhbmQgYSBzbGFzaC1zZXBhcmF0ZWQgcGF0aCBvZiBzdWJmbG93IElEcyxcbiAqIHJldHVybnMgdGhlIHN1YnRyZWUgcm9vdGVkIGF0IHRoYXQgc3ViZmxvdy4gVXNlZnVsIGZvciBMTE0gZHJpbGwtZG93bjpcbiAqIGluc3RlYWQgb2YgZHVtcGluZyB0aGUgZnVsbCB0cmFjZSwgZmV0Y2ggb25seSB0aGUgcmVsZXZhbnQgc3VidHJlZS5cbiAqXG4gKiBVc2FnZTpcbiAqICAgY29uc3Qgc25hcHNob3QgPSBleGVjdXRvci5nZXRTbmFwc2hvdCgpO1xuICpcbiAqICAgLy8gVG9wLWxldmVsIHN1YmZsb3dcbiAqICAgZ2V0U3VidHJlZVNuYXBzaG90KHNuYXBzaG90LCAnc2YtcGF5bWVudCcpO1xuICpcbiAqICAgLy8gTmVzdGVkIHN1YmZsb3cgKHBheW1lbnQg4oaSIHZhbGlkYXRpb24pXG4gKiAgIGdldFN1YnRyZWVTbmFwc2hvdChzbmFwc2hvdCwgJ3NmLXBheW1lbnQvc2YtdmFsaWRhdGlvbicpO1xuICpcbiAqICAgLy8gUmV0dXJucyB1bmRlZmluZWQgaWYgcGF0aCBub3QgZm91bmRcbiAqICAgZ2V0U3VidHJlZVNuYXBzaG90KHNuYXBzaG90LCAnbm9uZXhpc3RlbnQnKTsgLy8gdW5kZWZpbmVkXG4gKlxuICogICAvLyBEaXNjb3ZlciBhdmFpbGFibGUgcGF0aHNcbiAqICAgbGlzdFN1YmZsb3dQYXRocyhzbmFwc2hvdCk7IC8vIFsnc2YtcGF5bWVudCcsICdzZi1wYXltZW50L3NmLXZhbGlkYXRpb24nXVxuICovXG5cbmltcG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVFbnRyeSB9IGZyb20gJy4uL2VuZ2luZS9uYXJyYXRpdmUvbmFycmF0aXZlVHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBTdGFnZVNuYXBzaG90IH0gZnJvbSAnLi4vbWVtb3J5L3R5cGVzLmpzJztcbmltcG9ydCB7IGlzRGV2TW9kZSB9IGZyb20gJy4uL3Njb3BlL2RldGVjdENpcmN1bGFyLmpzJztcbmltcG9ydCB0eXBlIHsgUnVudGltZVNuYXBzaG90IH0gZnJvbSAnLi9FeGVjdXRpb25SdW50aW1lLmpzJztcblxuLyoqIFRoZSByZXN1bHQgb2YgbmF2aWdhdGluZyB0byBhIHN1YnRyZWUgd2l0aGluIGEgc25hcHNob3QuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1YnRyZWVTbmFwc2hvdCB7XG4gIC8qKiBUaGUgc3ViZmxvdyBJRCB0aGF0IHdhcyBtYXRjaGVkIChsYXN0IHNlZ21lbnQgb2YgdGhlIHBhdGgpLiAqL1xuICByZWFkb25seSBzdWJmbG93SWQ6IHN0cmluZztcbiAgLyoqIFRoZSBleGVjdXRpb24gdHJlZSByb290ZWQgYXQgdGhpcyBzdWJmbG93LiAqL1xuICByZWFkb25seSBleGVjdXRpb25UcmVlOiBTdGFnZVNuYXBzaG90O1xuICAvKiogU2hhcmVkIHN0YXRlIHNjb3BlZCB0byB0aGlzIHN1YmZsb3cgKGZyb20gc3ViZmxvd1Jlc3VsdHMgaWYgYXZhaWxhYmxlKS4gKi9cbiAgcmVhZG9ubHkgc2hhcmVkU3RhdGU/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgLyoqIE5hcnJhdGl2ZSBlbnRyaWVzIHNjb3BlZCB0byB0aGlzIHN1YmZsb3cgKGJldHdlZW4gZW50cnkvZXhpdCBldmVudHMpLiAqL1xuICByZWFkb25seSBuYXJyYXRpdmVFbnRyaWVzPzogQ29tYmluZWROYXJyYXRpdmVFbnRyeVtdO1xufVxuXG4vKipcbiAqIE5hdmlnYXRlIHRoZSBleGVjdXRpb24gc25hcHNob3QgdHJlZSBieSBhIHNsYXNoLXNlcGFyYXRlZCBzdWJmbG93IHBhdGguXG4gKlxuICogKipJbXBsZW1lbnRhdGlvbiBub3RlOioqIGZvb3RwcmludGpzJ3MgU3ViZmxvd0V4ZWN1dG9yIHN0b3JlcyBuZXN0ZWQgc3ViZmxvd1xuICogcmVzdWx0cyB3aXRoIGNvbXBvc2l0ZSBzbGFzaC1zZXBhcmF0ZWQga2V5cyAoZS5nLiBcInNmLW91dGVyL3NmLWlubmVyXCIpIGluXG4gKiB0aGUgZmxhdCBgc3ViZmxvd1Jlc3VsdHNgIG1hcC4gVGhpcyBmdW5jdGlvbiB1c2VzIHRob3NlIGtleXMgZm9yIGxvb2t1cC5cbiAqXG4gKiBAcGFyYW0gc25hcHNob3Qg4oCUIHRoZSBmdWxsIFJ1bnRpbWVTbmFwc2hvdCBmcm9tIGBleGVjdXRvci5nZXRTbmFwc2hvdCgpYFxuICogQHBhcmFtIHBhdGgg4oCUIHNsYXNoLXNlcGFyYXRlZCBzdWJmbG93IElEcywgZS5nLiBgXCJzZi1wYXltZW50XCJgIG9yIGBcInNmLXBheW1lbnQvc2YtdmFsaWRhdGlvblwiYFxuICogQHBhcmFtIGFsbE5hcnJhdGl2ZUVudHJpZXMg4oCUIG9wdGlvbmFsIGZ1bGwgbmFycmF0aXZlIGVudHJpZXMgZnJvbSBgZXhlY3V0b3IuZ2V0TmFycmF0aXZlRW50cmllcygpYCwgdXNlZCB0byBleHRyYWN0IHNjb3BlZCBuYXJyYXRpdmUgZm9yIHRoZSBzdWJ0cmVlXG4gKiBAcmV0dXJucyB0aGUgbWF0Y2hpbmcgU3VidHJlZVNuYXBzaG90LCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgcGF0aCBpcyBub3QgZm91bmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN1YnRyZWVTbmFwc2hvdChcbiAgc25hcHNob3Q6IFJ1bnRpbWVTbmFwc2hvdCxcbiAgcGF0aDogc3RyaW5nLFxuICBhbGxOYXJyYXRpdmVFbnRyaWVzPzogQ29tYmluZWROYXJyYXRpdmVFbnRyeVtdLFxuKTogU3VidHJlZVNuYXBzaG90IHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFzbmFwc2hvdCB8fCAhcGF0aCkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBjb25zdCBub3JtYWxpemVkUGF0aCA9IHBhdGguc3BsaXQoJy8nKS5maWx0ZXIoQm9vbGVhbikuam9pbignLycpO1xuICBpZiAoIW5vcm1hbGl6ZWRQYXRoKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGNvbnN0IHN1YmZsb3dSZXN1bHRzID0gc25hcHNob3Quc3ViZmxvd1Jlc3VsdHM7XG4gIGNvbnN0IGxhc3RTZWdtZW50ID0gbm9ybWFsaXplZFBhdGguc3BsaXQoJy8nKS5wb3AoKSE7XG5cbiAgLy8gU3RyYXRlZ3kgMTogRGlyZWN0IGxvb2t1cCBpbiBzdWJmbG93UmVzdWx0cyBieSBmdWxsIHBhdGguXG4gIC8vIFN1YmZsb3dFeGVjdXRvciBzdG9yZXMgbmVzdGVkIHJlc3VsdHMgd2l0aCBjb21wb3NpdGUgc2xhc2gtc2VwYXJhdGVkIGtleXMuXG4gIGlmIChzdWJmbG93UmVzdWx0cyAmJiBzdWJmbG93UmVzdWx0c1tub3JtYWxpemVkUGF0aF0pIHtcbiAgICBjb25zdCBzZlJlc3VsdCA9IHN1YmZsb3dSZXN1bHRzW25vcm1hbGl6ZWRQYXRoXSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBjb25zdCB0cmVlQ3R4ID0gc2ZSZXN1bHQudHJlZUNvbnRleHQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3ViZmxvd0lkOiBsYXN0U2VnbWVudCxcbiAgICAgIGV4ZWN1dGlvblRyZWU6XG4gICAgICAgICh0cmVlQ3R4Py5zdGFnZUNvbnRleHRzIGFzIHVua25vd24gYXMgU3RhZ2VTbmFwc2hvdCkgPz8gZmluZFN1YmZsb3dJblRyZWUoc25hcHNob3QuZXhlY3V0aW9uVHJlZSwgbGFzdFNlZ21lbnQpLFxuICAgICAgc2hhcmVkU3RhdGU6IHRyZWVDdHg/Lmdsb2JhbENvbnRleHQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQsXG4gICAgICBuYXJyYXRpdmVFbnRyaWVzOiBhbGxOYXJyYXRpdmVFbnRyaWVzID8gZXh0cmFjdFNjb3BlZE5hcnJhdGl2ZShhbGxOYXJyYXRpdmVFbnRyaWVzLCBsYXN0U2VnbWVudCkgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIC8vIFN0cmF0ZWd5IDI6IEZpbmQgdGhlIG5vZGUgaW4gdGhlIGV4ZWN1dGlvbiB0cmVlIGJ5IHN1YmZsb3dJZC5cbiAgLy8gVGhpcyBwYXRoIGxhY2tzIHNoYXJlZFN0YXRlIChzdWJmbG93UmVzdWx0cyB3YXMgbm90IHBvcHVsYXRlZCkuXG4gIC8vIFRoaXMgdHlwaWNhbGx5IG1lYW5zIHRoZSBleGVjdXRvciByYW4gd2l0aG91dCBzdWJmbG93IHJlc3VsdCBlbnJpY2htZW50LlxuICBjb25zdCBmb3VuZE5vZGUgPSBmaW5kU3ViZmxvd0luVHJlZShzbmFwc2hvdC5leGVjdXRpb25UcmVlLCBsYXN0U2VnbWVudCk7XG4gIGlmICghZm91bmROb2RlKSByZXR1cm4gdW5kZWZpbmVkO1xuXG4gIGlmIChpc0Rldk1vZGUoKSkge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIGBbZm9vdHByaW50XSBnZXRTdWJ0cmVlU25hcHNob3QoJyR7bm9ybWFsaXplZFBhdGh9Jyk6IHN1YmZsb3dSZXN1bHRzIG5vdCBwb3B1bGF0ZWQg4oCUIGAgK1xuICAgICAgICAnc2hhcmVkU3RhdGUgd2lsbCBiZSB1bmRlZmluZWQuIERpZCB5b3UgZW5hYmxlIGVucmljaFNuYXBzaG90cyBvciBhdHRhY2ggYW4gRXh0cmFjdG9yUnVubmVyPycsXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgc3ViZmxvd0lkOiBsYXN0U2VnbWVudCxcbiAgICBleGVjdXRpb25UcmVlOiBmb3VuZE5vZGUsXG4gICAgc2hhcmVkU3RhdGU6IHVuZGVmaW5lZCxcbiAgICBuYXJyYXRpdmVFbnRyaWVzOiBhbGxOYXJyYXRpdmVFbnRyaWVzID8gZXh0cmFjdFNjb3BlZE5hcnJhdGl2ZShhbGxOYXJyYXRpdmVFbnRyaWVzLCBsYXN0U2VnbWVudCkgOiB1bmRlZmluZWQsXG4gIH07XG59XG5cbi8qKlxuICogTGlzdCBhbGwgYXZhaWxhYmxlIHN1YmZsb3cgcGF0aHMgaW4gYSBzbmFwc2hvdC5cbiAqXG4gKiBSZXR1cm5zIHRoZSBrZXlzIGZyb20gYHN1YmZsb3dSZXN1bHRzYCwgd2hpY2ggYXJlIHNsYXNoLXNlcGFyYXRlZFxuICogc3ViZmxvdyBJRCBwYXRocyAoZS5nLiBgW1wic2YtcGF5bWVudFwiLCBcInNmLW91dGVyL3NmLWlubmVyXCJdYCkuXG4gKiBVc2VmdWwgZm9yIGRpc2NvdmVyeSDigJQgYW4gTExNIG9yIFVJIGNhbiBlbnVtZXJhdGUgYXZhaWxhYmxlIGRyaWxsLWRvd24gdGFyZ2V0cy5cbiAqXG4gKiBAcGFyYW0gc25hcHNob3Qg4oCUIHRoZSBmdWxsIFJ1bnRpbWVTbmFwc2hvdCBmcm9tIGBleGVjdXRvci5nZXRTbmFwc2hvdCgpYFxuICogQHJldHVybnMgYXJyYXkgb2YgYXZhaWxhYmxlIHN1YmZsb3cgcGF0aHMsIGVtcHR5IGlmIG5vbmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxpc3RTdWJmbG93UGF0aHMoc25hcHNob3Q6IFJ1bnRpbWVTbmFwc2hvdCk6IHN0cmluZ1tdIHtcbiAgaWYgKCFzbmFwc2hvdD8uc3ViZmxvd1Jlc3VsdHMpIHJldHVybiBbXTtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKHNuYXBzaG90LnN1YmZsb3dSZXN1bHRzKTtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IG5hcnJhdGl2ZSBlbnRyaWVzIHNjb3BlZCB0byBhIHNwZWNpZmljIHN1YmZsb3cuXG4gKiBGaWx0ZXJzIGJ5IGVudHJ5LnN1YmZsb3dJZCBmaWVsZCAoc2V0IGJ5IENvbWJpbmVkTmFycmF0aXZlUmVjb3JkZXIgZHVyaW5nIHRyYXZlcnNhbCkuXG4gKiBBbHNvIGluY2x1ZGVzIHRoZSBzdWJmbG93IGVudHJ5L2V4aXQgbWFya2VyIGVudHJpZXMgdGhlbXNlbHZlcy5cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdFNjb3BlZE5hcnJhdGl2ZShlbnRyaWVzOiBDb21iaW5lZE5hcnJhdGl2ZUVudHJ5W10sIHBhdGg6IHN0cmluZyk6IENvbWJpbmVkTmFycmF0aXZlRW50cnlbXSB7XG4gIC8vIFRoZSBsYXN0IHNlZ21lbnQgb2YgdGhlIHBhdGggaXMgdGhlIHN1YmZsb3dJZCBzdG9yZWQgb24gZW50cmllc1xuICBjb25zdCBzdWJmbG93SWQgPSBwYXRoLnNwbGl0KCcvJykucG9wKCkhO1xuICByZXR1cm4gZW50cmllcy5maWx0ZXIoKGVudHJ5KSA9PiB7XG4gICAgLy8gSW5jbHVkZSBlbnRyaWVzIHdob3NlIHN1YmZsb3dJZCBtYXRjaGVzIChldmVudHMgZW1pdHRlZCB3aGlsZSBpbnNpZGUgdGhpcyBzdWJmbG93KVxuICAgIGlmIChlbnRyeS5zdWJmbG93SWQgPT09IHN1YmZsb3dJZCkgcmV0dXJuIHRydWU7XG4gICAgLy8gQWxzbyBpbmNsdWRlIHRoZSBzdWJmbG93IGVudHJ5L2V4aXQgbWFya2VycyAodGhleSBjYXJyeSB0aGUgcGFyZW50IHN1YmZsb3dJZCBvciB1bmRlZmluZWQpXG4gICAgaWYgKGVudHJ5LnR5cGUgPT09ICdzdWJmbG93JyAmJiBlbnRyeS5zdGFnZUlkID09PSBzdWJmbG93SWQpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSk7XG59XG5cbi8qKlxuICogRmluZCBhIHN1YmZsb3cgbm9kZSBpbiB0aGUgZXhlY3V0aW9uIHRyZWUgYnkgc2VhcmNoaW5nIGZvciBhIG5vZGVcbiAqIHdob3NlIHN1YmZsb3dJZCBtYXRjaGVzLlxuICogU2VhcmNoZXMgZGVwdGgtZmlyc3QgdGhyb3VnaCBgbmV4dGAgYW5kIGBjaGlsZHJlbmAgbGlua3MuXG4gKi9cbmZ1bmN0aW9uIGZpbmRTdWJmbG93SW5UcmVlKG5vZGU6IFN0YWdlU25hcHNob3QgfCB1bmRlZmluZWQsIHN1YmZsb3dJZDogc3RyaW5nKTogU3RhZ2VTbmFwc2hvdCB8IHVuZGVmaW5lZCB7XG4gIGlmICghbm9kZSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBpZiAobm9kZS5zdWJmbG93SWQgPT09IHN1YmZsb3dJZCkgcmV0dXJuIG5vZGU7XG5cbiAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgIGNvbnN0IGZvdW5kID0gZmluZFN1YmZsb3dJblRyZWUoY2hpbGQsIHN1YmZsb3dJZCk7XG4gICAgICBpZiAoZm91bmQpIHJldHVybiBmb3VuZDtcbiAgICB9XG4gIH1cblxuICBpZiAobm9kZS5uZXh0KSB7XG4gICAgcmV0dXJuIGZpbmRTdWJmbG93SW5UcmVlKG5vZGUubmV4dCwgc3ViZmxvd0lkKTtcbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iXX0=
@@ -12,6 +12,8 @@
12
12
  * Extends Error for compatibility, but carries structured .issues.
13
13
  */
14
14
  export class InputValidationError extends Error {
15
+ issues;
16
+ cause;
15
17
  constructor(message, issues, cause) {
16
18
  super(message);
17
19
  this.name = 'InputValidationError';
@@ -26,12 +28,11 @@ export class InputValidationError extends Error {
26
28
  * Works with both ZodError.issues (v3/v4) and ZodError.errors (v3 legacy).
27
29
  */
28
30
  export function extractIssuesFromZodError(zodError) {
29
- var _a;
30
31
  if (!zodError || typeof zodError !== 'object')
31
32
  return [];
32
33
  const err = zodError;
33
34
  // Zod v3/v4: .issues array
34
- const issues = (_a = err.issues) !== null && _a !== void 0 ? _a : err.errors;
35
+ const issues = err.issues ?? err.errors;
35
36
  if (!Array.isArray(issues))
36
37
  return [];
37
38
  return issues.map((issue) => ({
@@ -42,4 +43,4 @@ export function extractIssuesFromZodError(zodError) {
42
43
  received: typeof issue.received === 'string' ? issue.received : undefined,
43
44
  }));
44
45
  }
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zY2hlbWEvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBZ0JIOzs7R0FHRztBQUNILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxLQUFLO0lBSTdDLFlBQVksT0FBZSxFQUFFLE1BQXlCLEVBQUUsS0FBZTtRQUNyRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLHNCQUFzQixDQUFDO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUseUJBQXlCLENBQUMsUUFBaUI7O0lBQ3pELElBQUksQ0FBQyxRQUFRLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUTtRQUFFLE9BQU8sRUFBRSxDQUFDO0lBRXpELE1BQU0sR0FBRyxHQUFHLFFBQW1DLENBQUM7SUFFaEQsMkJBQTJCO0lBQzNCLE1BQU0sTUFBTSxHQUFHLE1BQUEsR0FBRyxDQUFDLE1BQU0sbUNBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUN4QyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUV0QyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUE4QixFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELElBQUksRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNqRCxPQUFPLEVBQUUsT0FBTyxLQUFLLENBQUMsT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsbUJBQW1CO1FBQ2hGLElBQUksRUFBRSxPQUFPLEtBQUssQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQzdELFFBQVEsRUFBRSxPQUFPLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQ3pFLFFBQVEsRUFBRSxPQUFPLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTO0tBQzFFLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogZXJyb3JzLnRzIOKAlCBTdHJ1Y3R1cmVkIHZhbGlkYXRpb24gZXJyb3JzIGZvciB0aGUgc2NoZW1hIGxpYnJhcnkuXG4gKlxuICogSW5wdXRWYWxpZGF0aW9uRXJyb3IgcHJlc2VydmVzIGZpZWxkLWxldmVsIGRldGFpbHMgZnJvbSBab2QgKG9yIGFueSBzY2hlbWEpXG4gKiB3aGlsZSBwcm92aWRpbmcgYSBodW1hbi1yZWFkYWJsZSAubWVzc2FnZSBzdW1tYXJ5LiBDb25zdW1lcnMgY2FuOlxuICogLSBDYXRjaCBhbmQgcmVhZCAubWVzc2FnZSBmb3IgbG9nZ2luZ1xuICogLSBJdGVyYXRlIC5pc3N1ZXMgZm9yIGZpZWxkLWxldmVsIEFQSSByZXNwb25zZXMgLyBmb3JtIGVycm9yc1xuICogLSBBY2Nlc3MgLmNhdXNlIGZvciB0aGUgcmF3IG9yaWdpbmFsIGVycm9yIChab2QgZXJyb3IsIGV0Yy4pXG4gKi9cblxuLyoqIEEgc2luZ2xlIHZhbGlkYXRpb24gaXNzdWUg4oCUIG9uZSBmaWVsZCwgb25lIHByb2JsZW0uICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRpb25Jc3N1ZSB7XG4gIC8qKiBEb3QtcGF0aCB0byB0aGUgZmllbGQgKGUuZy4gWydhZGRyZXNzJywgJ3ppcCddIG9yIFsnYW1vdW50J10pLiAqL1xuICBwYXRoOiAoc3RyaW5nIHwgbnVtYmVyKVtdO1xuICAvKiogSHVtYW4tcmVhZGFibGUgZGVzY3JpcHRpb24gb2YgdGhlIHByb2JsZW0uICovXG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgLyoqIE1hY2hpbmUtcmVhZGFibGUgZXJyb3IgY29kZSAoZS5nLiAnaW52YWxpZF90eXBlJywgJ3Rvb19zbWFsbCcpLiAqL1xuICBjb2RlPzogc3RyaW5nO1xuICAvKiogV2hhdCB3YXMgZXhwZWN0ZWQgKGUuZy4gJ251bWJlcicpLiAqL1xuICBleHBlY3RlZD86IHN0cmluZztcbiAgLyoqIFdoYXQgd2FzIHJlY2VpdmVkIChlLmcuICdzdHJpbmcnKS4gKi9cbiAgcmVjZWl2ZWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVGhyb3duIHdoZW4gcnVudGltZSBpbnB1dCBmYWlscyBzY2hlbWEgdmFsaWRhdGlvbi5cbiAqIEV4dGVuZHMgRXJyb3IgZm9yIGNvbXBhdGliaWxpdHksIGJ1dCBjYXJyaWVzIHN0cnVjdHVyZWQgLmlzc3Vlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIElucHV0VmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICByZWFkb25seSBpc3N1ZXM6IFZhbGlkYXRpb25Jc3N1ZVtdO1xuICByZWFkb25seSBjYXVzZT86IHVua25vd247XG5cbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBpc3N1ZXM6IFZhbGlkYXRpb25Jc3N1ZVtdLCBjYXVzZT86IHVua25vd24pIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnSW5wdXRWYWxpZGF0aW9uRXJyb3InO1xuICAgIHRoaXMuaXNzdWVzID0gaXNzdWVzO1xuICAgIGlmIChjYXVzZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNhdXNlID0gY2F1c2U7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRXh0cmFjdCBWYWxpZGF0aW9uSXNzdWVzIGZyb20gYSBab2QgZXJyb3IgKGR1Y2stdHlwZWQg4oCUIG5vIFpvZCBpbXBvcnQpLlxuICogV29ya3Mgd2l0aCBib3RoIFpvZEVycm9yLmlzc3VlcyAodjMvdjQpIGFuZCBab2RFcnJvci5lcnJvcnMgKHYzIGxlZ2FjeSkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0SXNzdWVzRnJvbVpvZEVycm9yKHpvZEVycm9yOiB1bmtub3duKTogVmFsaWRhdGlvbklzc3VlW10ge1xuICBpZiAoIXpvZEVycm9yIHx8IHR5cGVvZiB6b2RFcnJvciAhPT0gJ29iamVjdCcpIHJldHVybiBbXTtcblxuICBjb25zdCBlcnIgPSB6b2RFcnJvciBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAvLyBab2QgdjMvdjQ6IC5pc3N1ZXMgYXJyYXlcbiAgY29uc3QgaXNzdWVzID0gZXJyLmlzc3VlcyA/PyBlcnIuZXJyb3JzO1xuICBpZiAoIUFycmF5LmlzQXJyYXkoaXNzdWVzKSkgcmV0dXJuIFtdO1xuXG4gIHJldHVybiBpc3N1ZXMubWFwKChpc3N1ZTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+ICh7XG4gICAgcGF0aDogQXJyYXkuaXNBcnJheShpc3N1ZS5wYXRoKSA/IGlzc3VlLnBhdGggOiBbXSxcbiAgICBtZXNzYWdlOiB0eXBlb2YgaXNzdWUubWVzc2FnZSA9PT0gJ3N0cmluZycgPyBpc3N1ZS5tZXNzYWdlIDogJ1ZhbGlkYXRpb24gZmFpbGVkJyxcbiAgICBjb2RlOiB0eXBlb2YgaXNzdWUuY29kZSA9PT0gJ3N0cmluZycgPyBpc3N1ZS5jb2RlIDogdW5kZWZpbmVkLFxuICAgIGV4cGVjdGVkOiB0eXBlb2YgaXNzdWUuZXhwZWN0ZWQgPT09ICdzdHJpbmcnID8gaXNzdWUuZXhwZWN0ZWQgOiB1bmRlZmluZWQsXG4gICAgcmVjZWl2ZWQ6IHR5cGVvZiBpc3N1ZS5yZWNlaXZlZCA9PT0gJ3N0cmluZycgPyBpc3N1ZS5yZWNlaXZlZCA6IHVuZGVmaW5lZCxcbiAgfSkpO1xufVxuIl19
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zY2hlbWEvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBZ0JIOzs7R0FHRztBQUNILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxLQUFLO0lBQ3BDLE1BQU0sQ0FBb0I7SUFDMUIsS0FBSyxDQUFXO0lBRXpCLFlBQVksT0FBZSxFQUFFLE1BQXlCLEVBQUUsS0FBZTtRQUNyRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDZixJQUFJLENBQUMsSUFBSSxHQUFHLHNCQUFzQixDQUFDO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUseUJBQXlCLENBQUMsUUFBaUI7SUFDekQsSUFBSSxDQUFDLFFBQVEsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFFekQsTUFBTSxHQUFHLEdBQUcsUUFBbUMsQ0FBQztJQUVoRCwyQkFBMkI7SUFDM0IsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDO0lBQ3hDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBRXRDLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQThCLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDckQsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ2pELE9BQU8sRUFBRSxPQUFPLEtBQUssQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxtQkFBbUI7UUFDaEYsSUFBSSxFQUFFLE9BQU8sS0FBSyxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDN0QsUUFBUSxFQUFFLE9BQU8sS0FBSyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDekUsUUFBUSxFQUFFLE9BQU8sS0FBSyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVM7S0FDMUUsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBlcnJvcnMudHMg4oCUIFN0cnVjdHVyZWQgdmFsaWRhdGlvbiBlcnJvcnMgZm9yIHRoZSBzY2hlbWEgbGlicmFyeS5cbiAqXG4gKiBJbnB1dFZhbGlkYXRpb25FcnJvciBwcmVzZXJ2ZXMgZmllbGQtbGV2ZWwgZGV0YWlscyBmcm9tIFpvZCAob3IgYW55IHNjaGVtYSlcbiAqIHdoaWxlIHByb3ZpZGluZyBhIGh1bWFuLXJlYWRhYmxlIC5tZXNzYWdlIHN1bW1hcnkuIENvbnN1bWVycyBjYW46XG4gKiAtIENhdGNoIGFuZCByZWFkIC5tZXNzYWdlIGZvciBsb2dnaW5nXG4gKiAtIEl0ZXJhdGUgLmlzc3VlcyBmb3IgZmllbGQtbGV2ZWwgQVBJIHJlc3BvbnNlcyAvIGZvcm0gZXJyb3JzXG4gKiAtIEFjY2VzcyAuY2F1c2UgZm9yIHRoZSByYXcgb3JpZ2luYWwgZXJyb3IgKFpvZCBlcnJvciwgZXRjLilcbiAqL1xuXG4vKiogQSBzaW5nbGUgdmFsaWRhdGlvbiBpc3N1ZSDigJQgb25lIGZpZWxkLCBvbmUgcHJvYmxlbS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsaWRhdGlvbklzc3VlIHtcbiAgLyoqIERvdC1wYXRoIHRvIHRoZSBmaWVsZCAoZS5nLiBbJ2FkZHJlc3MnLCAnemlwJ10gb3IgWydhbW91bnQnXSkuICovXG4gIHBhdGg6IChzdHJpbmcgfCBudW1iZXIpW107XG4gIC8qKiBIdW1hbi1yZWFkYWJsZSBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvYmxlbS4gKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xuICAvKiogTWFjaGluZS1yZWFkYWJsZSBlcnJvciBjb2RlIChlLmcuICdpbnZhbGlkX3R5cGUnLCAndG9vX3NtYWxsJykuICovXG4gIGNvZGU/OiBzdHJpbmc7XG4gIC8qKiBXaGF0IHdhcyBleHBlY3RlZCAoZS5nLiAnbnVtYmVyJykuICovXG4gIGV4cGVjdGVkPzogc3RyaW5nO1xuICAvKiogV2hhdCB3YXMgcmVjZWl2ZWQgKGUuZy4gJ3N0cmluZycpLiAqL1xuICByZWNlaXZlZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaHJvd24gd2hlbiBydW50aW1lIGlucHV0IGZhaWxzIHNjaGVtYSB2YWxpZGF0aW9uLlxuICogRXh0ZW5kcyBFcnJvciBmb3IgY29tcGF0aWJpbGl0eSwgYnV0IGNhcnJpZXMgc3RydWN0dXJlZCAuaXNzdWVzLlxuICovXG5leHBvcnQgY2xhc3MgSW5wdXRWYWxpZGF0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHJlYWRvbmx5IGlzc3VlczogVmFsaWRhdGlvbklzc3VlW107XG4gIHJlYWRvbmx5IGNhdXNlPzogdW5rbm93bjtcblxuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBzdHJpbmcsIGlzc3VlczogVmFsaWRhdGlvbklzc3VlW10sIGNhdXNlPzogdW5rbm93bikge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdJbnB1dFZhbGlkYXRpb25FcnJvcic7XG4gICAgdGhpcy5pc3N1ZXMgPSBpc3N1ZXM7XG4gICAgaWYgKGNhdXNlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuY2F1c2UgPSBjYXVzZTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBFeHRyYWN0IFZhbGlkYXRpb25Jc3N1ZXMgZnJvbSBhIFpvZCBlcnJvciAoZHVjay10eXBlZCDigJQgbm8gWm9kIGltcG9ydCkuXG4gKiBXb3JrcyB3aXRoIGJvdGggWm9kRXJyb3IuaXNzdWVzICh2My92NCkgYW5kIFpvZEVycm9yLmVycm9ycyAodjMgbGVnYWN5KS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RJc3N1ZXNGcm9tWm9kRXJyb3Ioem9kRXJyb3I6IHVua25vd24pOiBWYWxpZGF0aW9uSXNzdWVbXSB7XG4gIGlmICghem9kRXJyb3IgfHwgdHlwZW9mIHpvZEVycm9yICE9PSAnb2JqZWN0JykgcmV0dXJuIFtdO1xuXG4gIGNvbnN0IGVyciA9IHpvZEVycm9yIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIC8vIFpvZCB2My92NDogLmlzc3VlcyBhcnJheVxuICBjb25zdCBpc3N1ZXMgPSBlcnIuaXNzdWVzID8/IGVyci5lcnJvcnM7XG4gIGlmICghQXJyYXkuaXNBcnJheShpc3N1ZXMpKSByZXR1cm4gW107XG5cbiAgcmV0dXJuIGlzc3Vlcy5tYXAoKGlzc3VlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gKHtcbiAgICBwYXRoOiBBcnJheS5pc0FycmF5KGlzc3VlLnBhdGgpID8gaXNzdWUucGF0aCA6IFtdLFxuICAgIG1lc3NhZ2U6IHR5cGVvZiBpc3N1ZS5tZXNzYWdlID09PSAnc3RyaW5nJyA/IGlzc3VlLm1lc3NhZ2UgOiAnVmFsaWRhdGlvbiBmYWlsZWQnLFxuICAgIGNvZGU6IHR5cGVvZiBpc3N1ZS5jb2RlID09PSAnc3RyaW5nJyA/IGlzc3VlLmNvZGUgOiB1bmRlZmluZWQsXG4gICAgZXhwZWN0ZWQ6IHR5cGVvZiBpc3N1ZS5leHBlY3RlZCA9PT0gJ3N0cmluZycgPyBpc3N1ZS5leHBlY3RlZCA6IHVuZGVmaW5lZCxcbiAgICByZWNlaXZlZDogdHlwZW9mIGlzc3VlLnJlY2VpdmVkID09PSAnc3RyaW5nJyA/IGlzc3VlLnJlY2VpdmVkIDogdW5kZWZpbmVkLFxuICB9KSk7XG59XG4iXX0=
@@ -38,13 +38,12 @@ export function validateOrThrow(schema, data) {
38
38
  }
39
39
  // ── Parseable (Zod, yup, superstruct, etc.) ──────────────────────────────
40
40
  function validateParseable(schema, data) {
41
- var _a;
42
41
  // Prefer safeParse (non-throwing)
43
42
  if (typeof schema.safeParse === 'function') {
44
43
  try {
45
44
  const result = schema.safeParse(data);
46
45
  if (result.success) {
47
- return { success: true, data: (_a = result.data) !== null && _a !== void 0 ? _a : data };
46
+ return { success: true, data: result.data ?? data };
48
47
  }
49
48
  const issues = extractIssuesFromZodError(result.error);
50
49
  const message = formatIssues(issues);
@@ -53,7 +52,7 @@ function validateParseable(schema, data) {
53
52
  error: new InputValidationError(message, issues, result.error),
54
53
  };
55
54
  }
56
- catch (_b) {
55
+ catch {
57
56
  // safeParse threw (binding error, etc.) — fall through to parse
58
57
  }
59
58
  }
@@ -61,7 +60,7 @@ function validateParseable(schema, data) {
61
60
  if (typeof schema.parse === 'function') {
62
61
  try {
63
62
  const parsed = schema.parse(data);
64
- return { success: true, data: parsed !== null && parsed !== void 0 ? parsed : data };
63
+ return { success: true, data: parsed ?? data };
65
64
  }
66
65
  catch (err) {
67
66
  const issues = extractIssuesFromZodError(err);
@@ -144,4 +143,4 @@ function formatIssues(issues) {
144
143
  return `Input validation failed: ${issues[0].message}`;
145
144
  return `Input validation failed: ${issues.length} issues — ${issues.map((i) => i.message).join('; ')}`;
146
145
  }
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NjaGVtYS92YWxpZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7O0dBU0c7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBd0IseUJBQXlCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFTcEc7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxNQUFlLEVBQUUsSUFBYTtJQUNsRSxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFbEMsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNiLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxXQUFXO1lBQ2QsT0FBTyxpQkFBaUIsQ0FBQyxNQUFpQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BFLEtBQUssYUFBYTtZQUNoQixPQUFPLGtCQUFrQixDQUFDLE1BQWlDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDckUsS0FBSyxNQUFNO1lBQ1QsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDbkMsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsTUFBZSxFQUFFLElBQWE7SUFDNUQsTUFBTSxNQUFNLEdBQUcscUJBQXFCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25ELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztRQUFFLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQztJQUN4QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDckIsQ0FBQztBQUVELDRFQUE0RTtBQUU1RSxTQUFTLGlCQUFpQixDQUFDLE1BQStCLEVBQUUsSUFBYTs7SUFDdkUsa0NBQWtDO0lBQ2xDLElBQUksT0FBTyxNQUFN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Q0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0FBQ3pHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHZhbGlkYXRlLnRzIOKAlCBTaW5nbGUgdmFsaWRhdGlvbiBlbnRyeSBwb2ludCBmb3IgYW55IHNjaGVtYSBraW5kLlxuICpcbiAqIERpc3BhdGNoZXMgYmFzZWQgb24gZGV0ZWN0U2NoZW1hKCk6XG4gKiAtICd6b2QnIC8gJ3BhcnNlYWJsZScg4oaSIGNhbGxzIC5zYWZlUGFyc2UoKSBvciAucGFyc2UoKVxuICogLSAnanNvbi1zY2hlbWEnICAgICAgICDihpIgbGlnaHR3ZWlnaHQgc3RydWN0dXJhbCB2YWxpZGF0aW9uIChyZXF1aXJlZCBmaWVsZHMsIHR5cGUgY2hlY2tzKVxuICogLSAnbm9uZScgICAgICAgICAgICAgICDihpIgcGFzcy10aHJvdWdoXG4gKlxuICogUmV0dXJucyBhIHJlc3VsdCB0eXBlIOKAlCBjYWxsZXJzIGRlY2lkZSB3aGV0aGVyIHRvIHRocm93LlxuICovXG5cbmltcG9ydCB7IGRldGVjdFNjaGVtYSB9IGZyb20gJy4vZGV0ZWN0LmpzJztcbmltcG9ydCB7IHR5cGUgVmFsaWRhdGlvbklzc3VlLCBleHRyYWN0SXNzdWVzRnJvbVpvZEVycm9yLCBJbnB1dFZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4vZXJyb3JzLmpzJztcblxuLyoqIFN1Y2Nlc3NmdWwgdmFsaWRhdGlvbiByZXN1bHQg4oCUIG1heSBjb250YWluIHRyYW5zZm9ybWVkIGRhdGEuICovXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uU3VjY2VzcyA9IHsgc3VjY2VzczogdHJ1ZTsgZGF0YTogdW5rbm93biB9O1xuLyoqIEZhaWxlZCB2YWxpZGF0aW9uIHJlc3VsdCDigJQgY2FycmllcyBzdHJ1Y3R1cmVkIGlzc3Vlcy4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25GYWlsdXJlID0geyBzdWNjZXNzOiBmYWxzZTsgZXJyb3I6IElucHV0VmFsaWRhdGlvbkVycm9yIH07XG4vKiogVW5pb24gcmVzdWx0IHR5cGUuICovXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uUmVzdWx0ID0gVmFsaWRhdGlvblN1Y2Nlc3MgfCBWYWxpZGF0aW9uRmFpbHVyZTtcblxuLyoqXG4gKiBWYWxpZGF0ZSBkYXRhIGFnYWluc3QgYSBzY2hlbWEuIFJldHVybnMgYSByZXN1bHQg4oCUIGRvZXMgbm90IHRocm93LlxuICpcbiAqIEZvciB0aHJvd2luZyBiZWhhdmlvciwgdXNlIGB2YWxpZGF0ZU9yVGhyb3coKWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUFnYWluc3RTY2hlbWEoc2NoZW1hOiB1bmtub3duLCBkYXRhOiB1bmtub3duKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gIGNvbnN0IGtpbmQgPSBkZXRlY3RTY2hlbWEoc2NoZW1hKTtcblxuICBzd2l0Y2ggKGtpbmQpIHtcbiAgICBjYXNlICd6b2QnOlxuICAgIGNhc2UgJ3BhcnNlYWJsZSc6XG4gICAgICByZXR1cm4gdmFsaWRhdGVQYXJzZWFibGUoc2NoZW1hIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBkYXRhKTtcbiAgICBjYXNlICdqc29uLXNjaGVtYSc6XG4gICAgICByZXR1cm4gdmFsaWRhdGVKc29uU2NoZW1hKHNjaGVtYSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgZGF0YSk7XG4gICAgY2FzZSAnbm9uZSc6XG4gICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBkYXRhIH07XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBkYXRhIGFnYWluc3QgYSBzY2hlbWEuIFRocm93cyBJbnB1dFZhbGlkYXRpb25FcnJvciBvbiBmYWlsdXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVPclRocm93KHNjaGVtYTogdW5rbm93biwgZGF0YTogdW5rbm93bik6IHVua25vd24ge1xuICBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZUFnYWluc3RTY2hlbWEoc2NoZW1hLCBkYXRhKTtcbiAgaWYgKCFyZXN1bHQuc3VjY2VzcykgdGhyb3cgcmVzdWx0LmVycm9yO1xuICByZXR1cm4gcmVzdWx0LmRhdGE7XG59XG5cbi8vIOKUgOKUgCBQYXJzZWFibGUgKFpvZCwgeXVwLCBzdXBlcnN0cnVjdCwgZXRjLikg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmZ1bmN0aW9uIHZhbGlkYXRlUGFyc2VhYmxlKHNjaGVtYTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGRhdGE6IHVua25vd24pOiBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgLy8gUHJlZmVyIHNhZmVQYXJzZSAobm9uLXRocm93aW5nKVxuICBpZiAodHlwZW9mIHNjaGVtYS5zYWZlUGFyc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gKHNjaGVtYS5zYWZlUGFyc2UgYXMgKHY6IHVua25vd24pID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+KShkYXRhKTtcbiAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBkYXRhOiByZXN1bHQuZGF0YSA/PyBkYXRhIH07XG4gICAgICB9XG4gICAgICBjb25zdCBpc3N1ZXMgPSBleHRyYWN0SXNzdWVzRnJvbVpvZEVycm9yKHJlc3VsdC5lcnJvcik7XG4gICAgICBjb25zdCBtZXNzYWdlID0gZm9ybWF0SXNzdWVzKGlzc3Vlcyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3I6IG5ldyBJbnB1dFZhbGlkYXRpb25FcnJvcihtZXNzYWdlLCBpc3N1ZXMsIHJlc3VsdC5lcnJvciksXG4gICAgICB9O1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gc2FmZVBhcnNlIHRocmV3IChiaW5kaW5nIGVycm9yLCBldGMuKSDigJQgZmFsbCB0aHJvdWdoIHRvIHBhcnNlXG4gICAgfVxuICB9XG5cbiAgLy8gRmFsbGJhY2sgdG8gcGFyc2UgKHRocm93aW5nKVxuICBpZiAodHlwZW9mIHNjaGVtYS5wYXJzZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSAoc2NoZW1hLnBhcnNlIGFzICh2OiB1bmtub3duKSA9PiB1bmtub3duKShkYXRhKTtcbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIGRhdGE6IHBhcnNlZCA/PyBkYXRhIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zdCBpc3N1ZXMgPSBleHRyYWN0SXNzdWVzRnJvbVpvZEVycm9yKGVycik7XG4gICAgICBpZiAoaXNzdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICBlcnJvcjogbmV3IElucHV0VmFsaWRhdGlvbkVycm9yKGZvcm1hdElzc3Vlcyhpc3N1ZXMpLCBpc3N1ZXMsIGVyciksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICAvLyBOb24tWm9kIGVycm9yIGZyb20gcGFyc2UoKVxuICAgICAgY29uc3QgcmF3TWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiAnVmFsaWRhdGlvbiBmYWlsZWQnO1xuICAgICAgY29uc3QgZmFsbGJhY2tJc3N1ZXM6IFZhbGlkYXRpb25Jc3N1ZVtdID0gW3sgcGF0aDogW10sIG1lc3NhZ2U6IHJhd01lc3NhZ2UgfV07XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3I6IG5ldyBJbnB1dFZhbGlkYXRpb25FcnJvcihmb3JtYXRJc3N1ZXMoZmFsbGJhY2tJc3N1ZXMpLCBmYWxsYmFja0lzc3VlcywgZXJyKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8gSGFzIG5laXRoZXIgc2FmZVBhcnNlIG5vciBwYXJzZSDigJQgc2hvdWxkbid0IHJlYWNoIGhlcmUgdmlhIGRldGVjdFNjaGVtYSwgYnV0IGJlIHNhZmVcbiAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgZGF0YSB9O1xufVxuXG4vLyDilIDilIAgSlNPTiBTY2hlbWEgKGxpZ2h0d2VpZ2h0IOKAlCBubyBhanYgZGVwZW5kZW5jeSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmZ1bmN0aW9uIHZhbGlkYXRlSnNvblNjaGVtYShzY2hlbWE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBkYXRhOiB1bmtub3duKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gIGlmICghZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICBlcnJvcjogbmV3IElucHV0VmFsaWRhdGlvbkVycm9yKCdFeHBlY3RlZCBhbiBvYmplY3QnLCBbXG4gICAgICAgIHsgcGF0aDogW10sIG1lc3NhZ2U6ICdFeHBlY3RlZCBhbiBvYmplY3QnLCBjb2RlOiAnaW52YWxpZF90eXBlJywgZXhwZWN0ZWQ6ICdvYmplY3QnIH0sXG4gICAgICBdKSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgcmVjb3JkID0gZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgaXNzdWVzOiBWYWxpZGF0aW9uSXNzdWVbXSA9IFtdO1xuXG4gIC8vIENoZWNrIHJlcXVpcmVkIGZpZWxkc1xuICBjb25zdCByZXF1aXJlZCA9IHNjaGVtYS5yZXF1aXJlZDtcbiAgaWYgKEFycmF5LmlzQXJyYXkocmVxdWlyZWQpKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgcmVxdWlyZWQpIHtcbiAgICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJlY29yZCwga2V5KSkge1xuICAgICAgICBpc3N1ZXMucHVzaCh7IHBhdGg6IFtrZXldLCBtZXNzYWdlOiBgTWlzc2luZyByZXF1aXJlZCBmaWVsZCBcIiR7a2V5fVwiYCwgY29kZTogJ21pc3NpbmdfZmllbGQnIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENoZWNrIHRvcC1sZXZlbCBwcm9wZXJ0eSB0eXBlc1xuICBjb25zdCBwcm9wZXJ0aWVzID0gc2NoZW1hLnByb3BlcnRpZXM7XG4gIGlmIChwcm9wZXJ0aWVzICYmIHR5cGVvZiBwcm9wZXJ0aWVzID09PSAnb2JqZWN0Jykge1xuICAgIGZvciAoY29uc3QgW2tleSwgcHJvcFNjaGVtYV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcGVydGllcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikpIHtcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJlY29yZCwga2V5KSkgY29udGludWU7IC8vIHNraXAgbWlzc2luZyDigJQgcmVxdWlyZWQgY2hlY2sgaGFuZGxlcyB0aGF0XG5cbiAgICAgIGNvbnN0IHZhbHVlID0gcmVjb3JkW2tleV07XG4gICAgICBpZiAocHJvcFNjaGVtYSAmJiB0eXBlb2YgcHJvcFNjaGVtYSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgZXhwZWN0ZWRUeXBlID0gKHByb3BTY2hlbWEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLnR5cGU7XG4gICAgICAgIGlmICh0eXBlb2YgZXhwZWN0ZWRUeXBlID09PSAnc3RyaW5nJyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3QgYWN0dWFsVHlwZSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gJ2FycmF5JyA6IHR5cGVvZiB2YWx1ZTtcbiAgICAgICAgICBpZiAoZXhwZWN0ZWRUeXBlICE9PSBhY3R1YWxUeXBlKSB7XG4gICAgICAgICAgICBpc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgIHBhdGg6IFtrZXldLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBgRXhwZWN0ZWQgJHtleHBlY3RlZFR5cGV9LCByZWNlaXZlZCAke2FjdHVhbFR5cGV9YCxcbiAgICAgICAgICAgICAgY29kZTogJ2ludmFsaWRfdHlwZScsXG4gICAgICAgICAgICAgIGV4cGVjdGVkOiBleHBlY3RlZFR5cGUsXG4gICAgICAgICAgICAgIHJlY2VpdmVkOiBhY3R1YWxUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGlzc3Vlcy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgZXJyb3I6IG5ldyBJbnB1dFZhbGlkYXRpb25FcnJvcihmb3JtYXRJc3N1ZXMoaXNzdWVzKSwgaXNzdWVzKSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgZGF0YSB9O1xufVxuXG4vLyDilIDilIAgRm9ybWF0dGluZyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZnVuY3Rpb24gZm9ybWF0SXNzdWVzKGlzc3VlczogVmFsaWRhdGlvbklzc3VlW10pOiBzdHJpbmcge1xuICBpZiAoaXNzdWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICdWYWxpZGF0aW9uIGZhaWxlZCc7XG4gIGlmIChpc3N1ZXMubGVuZ3RoID09PSAxKSByZXR1cm4gYElucHV0IHZhbGlkYXRpb24gZmFpbGVkOiAke2lzc3Vlc1swXS5tZXNzYWdlfWA7XG4gIHJldHVybiBgSW5wdXQgdmFsaWRhdGlvbiBmYWlsZWQ6ICR7aXNzdWVzLmxlbmd0aH0gaXNzdWVzIOKAlCAke2lzc3Vlcy5tYXAoKGkpID0+IGkubWVzc2FnZSkuam9pbignOyAnKX1gO1xufVxuIl19
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NjaGVtYS92YWxpZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7O0dBU0c7QUFFSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBd0IseUJBQXlCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFTcEc7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FBQyxNQUFlLEVBQUUsSUFBYTtJQUNsRSxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFbEMsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNiLEtBQUssS0FBSyxDQUFDO1FBQ1gsS0FBSyxXQUFXO1lBQ2QsT0FBTyxpQkFBaUIsQ0FBQyxNQUFpQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3BFLEtBQUssYUFBYTtZQUNoQixPQUFPLGtCQUFrQixDQUFDLE1BQWlDLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDckUsS0FBSyxNQUFNO1lBQ1QsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDbkMsQ0FBQztBQUNILENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxlQUFlLENBQUMsTUFBZSxFQUFFLElBQWE7SUFDNUQsTUFBTSxNQUFNLEdBQUcscUJBQXFCLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ25ELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTztRQUFFLE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQztJQUN4QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDckIsQ0FBQztBQUVELDRFQUE0RTtBQUU1RSxTQUFTLGlCQUFpQixDQUFDLE1BQStCLEVBQUUsSUFBYTtJQUN2RSxrQ0FBa0M7SUFDbEMsSUFBSSxPQUFPLE1BQU0s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Q3pHLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIHZhbGlkYXRlLnRzIOKAlCBTaW5nbGUgdmFsaWRhdGlvbiBlbnRyeSBwb2ludCBmb3IgYW55IHNjaGVtYSBraW5kLlxuICpcbiAqIERpc3BhdGNoZXMgYmFzZWQgb24gZGV0ZWN0U2NoZW1hKCk6XG4gKiAtICd6b2QnIC8gJ3BhcnNlYWJsZScg4oaSIGNhbGxzIC5zYWZlUGFyc2UoKSBvciAucGFyc2UoKVxuICogLSAnanNvbi1zY2hlbWEnICAgICAgICDihpIgbGlnaHR3ZWlnaHQgc3RydWN0dXJhbCB2YWxpZGF0aW9uIChyZXF1aXJlZCBmaWVsZHMsIHR5cGUgY2hlY2tzKVxuICogLSAnbm9uZScgICAgICAgICAgICAgICDihpIgcGFzcy10aHJvdWdoXG4gKlxuICogUmV0dXJucyBhIHJlc3VsdCB0eXBlIOKAlCBjYWxsZXJzIGRlY2lkZSB3aGV0aGVyIHRvIHRocm93LlxuICovXG5cbmltcG9ydCB7IGRldGVjdFNjaGVtYSB9IGZyb20gJy4vZGV0ZWN0LmpzJztcbmltcG9ydCB7IHR5cGUgVmFsaWRhdGlvbklzc3VlLCBleHRyYWN0SXNzdWVzRnJvbVpvZEVycm9yLCBJbnB1dFZhbGlkYXRpb25FcnJvciB9IGZyb20gJy4vZXJyb3JzLmpzJztcblxuLyoqIFN1Y2Nlc3NmdWwgdmFsaWRhdGlvbiByZXN1bHQg4oCUIG1heSBjb250YWluIHRyYW5zZm9ybWVkIGRhdGEuICovXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uU3VjY2VzcyA9IHsgc3VjY2VzczogdHJ1ZTsgZGF0YTogdW5rbm93biB9O1xuLyoqIEZhaWxlZCB2YWxpZGF0aW9uIHJlc3VsdCDigJQgY2FycmllcyBzdHJ1Y3R1cmVkIGlzc3Vlcy4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25GYWlsdXJlID0geyBzdWNjZXNzOiBmYWxzZTsgZXJyb3I6IElucHV0VmFsaWRhdGlvbkVycm9yIH07XG4vKiogVW5pb24gcmVzdWx0IHR5cGUuICovXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uUmVzdWx0ID0gVmFsaWRhdGlvblN1Y2Nlc3MgfCBWYWxpZGF0aW9uRmFpbHVyZTtcblxuLyoqXG4gKiBWYWxpZGF0ZSBkYXRhIGFnYWluc3QgYSBzY2hlbWEuIFJldHVybnMgYSByZXN1bHQg4oCUIGRvZXMgbm90IHRocm93LlxuICpcbiAqIEZvciB0aHJvd2luZyBiZWhhdmlvciwgdXNlIGB2YWxpZGF0ZU9yVGhyb3coKWAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZUFnYWluc3RTY2hlbWEoc2NoZW1hOiB1bmtub3duLCBkYXRhOiB1bmtub3duKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gIGNvbnN0IGtpbmQgPSBkZXRlY3RTY2hlbWEoc2NoZW1hKTtcblxuICBzd2l0Y2ggKGtpbmQpIHtcbiAgICBjYXNlICd6b2QnOlxuICAgIGNhc2UgJ3BhcnNlYWJsZSc6XG4gICAgICByZXR1cm4gdmFsaWRhdGVQYXJzZWFibGUoc2NoZW1hIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBkYXRhKTtcbiAgICBjYXNlICdqc29uLXNjaGVtYSc6XG4gICAgICByZXR1cm4gdmFsaWRhdGVKc29uU2NoZW1hKHNjaGVtYSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgZGF0YSk7XG4gICAgY2FzZSAnbm9uZSc6XG4gICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBkYXRhIH07XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBkYXRhIGFnYWluc3QgYSBzY2hlbWEuIFRocm93cyBJbnB1dFZhbGlkYXRpb25FcnJvciBvbiBmYWlsdXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVPclRocm93KHNjaGVtYTogdW5rbm93biwgZGF0YTogdW5rbm93bik6IHVua25vd24ge1xuICBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZUFnYWluc3RTY2hlbWEoc2NoZW1hLCBkYXRhKTtcbiAgaWYgKCFyZXN1bHQuc3VjY2VzcykgdGhyb3cgcmVzdWx0LmVycm9yO1xuICByZXR1cm4gcmVzdWx0LmRhdGE7XG59XG5cbi8vIOKUgOKUgCBQYXJzZWFibGUgKFpvZCwgeXVwLCBzdXBlcnN0cnVjdCwgZXRjLikg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmZ1bmN0aW9uIHZhbGlkYXRlUGFyc2VhYmxlKHNjaGVtYTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIGRhdGE6IHVua25vd24pOiBWYWxpZGF0aW9uUmVzdWx0IHtcbiAgLy8gUHJlZmVyIHNhZmVQYXJzZSAobm9uLXRocm93aW5nKVxuICBpZiAodHlwZW9mIHNjaGVtYS5zYWZlUGFyc2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gKHNjaGVtYS5zYWZlUGFyc2UgYXMgKHY6IHVua25vd24pID0+IFJlY29yZDxzdHJpbmcsIHVua25vd24+KShkYXRhKTtcbiAgICAgIGlmIChyZXN1bHQuc3VjY2Vzcykge1xuICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBkYXRhOiByZXN1bHQuZGF0YSA/PyBkYXRhIH07XG4gICAgICB9XG4gICAgICBjb25zdCBpc3N1ZXMgPSBleHRyYWN0SXNzdWVzRnJvbVpvZEVycm9yKHJlc3VsdC5lcnJvcik7XG4gICAgICBjb25zdCBtZXNzYWdlID0gZm9ybWF0SXNzdWVzKGlzc3Vlcyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3I6IG5ldyBJbnB1dFZhbGlkYXRpb25FcnJvcihtZXNzYWdlLCBpc3N1ZXMsIHJlc3VsdC5lcnJvciksXG4gICAgICB9O1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gc2FmZVBhcnNlIHRocmV3IChiaW5kaW5nIGVycm9yLCBldGMuKSDigJQgZmFsbCB0aHJvdWdoIHRvIHBhcnNlXG4gICAgfVxuICB9XG5cbiAgLy8gRmFsbGJhY2sgdG8gcGFyc2UgKHRocm93aW5nKVxuICBpZiAodHlwZW9mIHNjaGVtYS5wYXJzZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSAoc2NoZW1hLnBhcnNlIGFzICh2OiB1bmtub3duKSA9PiB1bmtub3duKShkYXRhKTtcbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIGRhdGE6IHBhcnNlZCA/PyBkYXRhIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zdCBpc3N1ZXMgPSBleHRyYWN0SXNzdWVzRnJvbVpvZEVycm9yKGVycik7XG4gICAgICBpZiAoaXNzdWVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICBlcnJvcjogbmV3IElucHV0VmFsaWRhdGlvbkVycm9yKGZvcm1hdElzc3Vlcyhpc3N1ZXMpLCBpc3N1ZXMsIGVyciksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICAvLyBOb24tWm9kIGVycm9yIGZyb20gcGFyc2UoKVxuICAgICAgY29uc3QgcmF3TWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiAnVmFsaWRhdGlvbiBmYWlsZWQnO1xuICAgICAgY29uc3QgZmFsbGJhY2tJc3N1ZXM6IFZhbGlkYXRpb25Jc3N1ZVtdID0gW3sgcGF0aDogW10sIG1lc3NhZ2U6IHJhd01lc3NhZ2UgfV07XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3I6IG5ldyBJbnB1dFZhbGlkYXRpb25FcnJvcihmb3JtYXRJc3N1ZXMoZmFsbGJhY2tJc3N1ZXMpLCBmYWxsYmFja0lzc3VlcywgZXJyKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgLy8gSGFzIG5laXRoZXIgc2FmZVBhcnNlIG5vciBwYXJzZSDigJQgc2hvdWxkbid0IHJlYWNoIGhlcmUgdmlhIGRldGVjdFNjaGVtYSwgYnV0IGJlIHNhZmVcbiAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgZGF0YSB9O1xufVxuXG4vLyDilIDilIAgSlNPTiBTY2hlbWEgKGxpZ2h0d2VpZ2h0IOKAlCBubyBhanYgZGVwZW5kZW5jeSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbmZ1bmN0aW9uIHZhbGlkYXRlSnNvblNjaGVtYShzY2hlbWE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBkYXRhOiB1bmtub3duKTogVmFsaWRhdGlvblJlc3VsdCB7XG4gIGlmICghZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICBlcnJvcjogbmV3IElucHV0VmFsaWRhdGlvbkVycm9yKCdFeHBlY3RlZCBhbiBvYmplY3QnLCBbXG4gICAgICAgIHsgcGF0aDogW10sIG1lc3NhZ2U6ICdFeHBlY3RlZCBhbiBvYmplY3QnLCBjb2RlOiAnaW52YWxpZF90eXBlJywgZXhwZWN0ZWQ6ICdvYmplY3QnIH0sXG4gICAgICBdKSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgcmVjb3JkID0gZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgY29uc3QgaXNzdWVzOiBWYWxpZGF0aW9uSXNzdWVbXSA9IFtdO1xuXG4gIC8vIENoZWNrIHJlcXVpcmVkIGZpZWxkc1xuICBjb25zdCByZXF1aXJlZCA9IHNjaGVtYS5yZXF1aXJlZDtcbiAgaWYgKEFycmF5LmlzQXJyYXkocmVxdWlyZWQpKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgcmVxdWlyZWQpIHtcbiAgICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3RyaW5nJyAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJlY29yZCwga2V5KSkge1xuICAgICAgICBpc3N1ZXMucHVzaCh7IHBhdGg6IFtrZXldLCBtZXNzYWdlOiBgTWlzc2luZyByZXF1aXJlZCBmaWVsZCBcIiR7a2V5fVwiYCwgY29kZTogJ21pc3NpbmdfZmllbGQnIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENoZWNrIHRvcC1sZXZlbCBwcm9wZXJ0eSB0eXBlc1xuICBjb25zdCBwcm9wZXJ0aWVzID0gc2NoZW1hLnByb3BlcnRpZXM7XG4gIGlmIChwcm9wZXJ0aWVzICYmIHR5cGVvZiBwcm9wZXJ0aWVzID09PSAnb2JqZWN0Jykge1xuICAgIGZvciAoY29uc3QgW2tleSwgcHJvcFNjaGVtYV0gb2YgT2JqZWN0LmVudHJpZXMocHJvcGVydGllcyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikpIHtcbiAgICAgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHJlY29yZCwga2V5KSkgY29udGludWU7IC8vIHNraXAgbWlzc2luZyDigJQgcmVxdWlyZWQgY2hlY2sgaGFuZGxlcyB0aGF0XG5cbiAgICAgIGNvbnN0IHZhbHVlID0gcmVjb3JkW2tleV07XG4gICAgICBpZiAocHJvcFNjaGVtYSAmJiB0eXBlb2YgcHJvcFNjaGVtYSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgZXhwZWN0ZWRUeXBlID0gKHByb3BTY2hlbWEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pLnR5cGU7XG4gICAgICAgIGlmICh0eXBlb2YgZXhwZWN0ZWRUeXBlID09PSAnc3RyaW5nJyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3QgYWN0dWFsVHlwZSA9IEFycmF5LmlzQXJyYXkodmFsdWUpID8gJ2FycmF5JyA6IHR5cGVvZiB2YWx1ZTtcbiAgICAgICAgICBpZiAoZXhwZWN0ZWRUeXBlICE9PSBhY3R1YWxUeXBlKSB7XG4gICAgICAgICAgICBpc3N1ZXMucHVzaCh7XG4gICAgICAgICAgICAgIHBhdGg6IFtrZXldLFxuICAgICAgICAgICAgICBtZXNzYWdlOiBgRXhwZWN0ZWQgJHtleHBlY3RlZFR5cGV9LCByZWNlaXZlZCAke2FjdHVhbFR5cGV9YCxcbiAgICAgICAgICAgICAgY29kZTogJ2ludmFsaWRfdHlwZScsXG4gICAgICAgICAgICAgIGV4cGVjdGVkOiBleHBlY3RlZFR5cGUsXG4gICAgICAgICAgICAgIHJlY2VpdmVkOiBhY3R1YWxUeXBlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGlzc3Vlcy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgZXJyb3I6IG5ldyBJbnB1dFZhbGlkYXRpb25FcnJvcihmb3JtYXRJc3N1ZXMoaXNzdWVzKSwgaXNzdWVzKSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgZGF0YSB9O1xufVxuXG4vLyDilIDilIAgRm9ybWF0dGluZyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuZnVuY3Rpb24gZm9ybWF0SXNzdWVzKGlzc3VlczogVmFsaWRhdGlvbklzc3VlW10pOiBzdHJpbmcge1xuICBpZiAoaXNzdWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICdWYWxpZGF0aW9uIGZhaWxlZCc7XG4gIGlmIChpc3N1ZXMubGVuZ3RoID09PSAxKSByZXR1cm4gYElucHV0IHZhbGlkYXRpb24gZmFpbGVkOiAke2lzc3Vlc1swXS5tZXNzYWdlfWA7XG4gIHJldHVybiBgSW5wdXQgdmFsaWRhdGlvbiBmYWlsZWQ6ICR7aXNzdWVzLmxlbmd0aH0gaXNzdWVzIOKAlCAke2lzc3Vlcy5tYXAoKGkpID0+IGkubWVzc2FnZSkuam9pbignOyAnKX1gO1xufVxuIl19