@workflow/core 5.0.0-beta.3 → 5.0.0-beta.30
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.
- package/dist/attribute-changes.d.ts +7 -0
- package/dist/attribute-changes.d.ts.map +1 -0
- package/dist/attribute-changes.js +25 -0
- package/dist/capabilities.d.ts +22 -1
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +41 -4
- package/dist/capture-stack.d.ts +16 -0
- package/dist/capture-stack.d.ts.map +1 -0
- package/dist/capture-stack.js +21 -0
- package/dist/class-serialization.d.ts +32 -0
- package/dist/class-serialization.d.ts.map +1 -1
- package/dist/class-serialization.js +37 -1
- package/dist/classify-error.d.ts +26 -3
- package/dist/classify-error.d.ts.map +1 -1
- package/dist/classify-error.js +103 -6
- package/dist/context-errors.d.ts +27 -0
- package/dist/context-errors.d.ts.map +1 -0
- package/dist/context-errors.js +101 -0
- package/dist/context-violation-error.d.ts +97 -0
- package/dist/context-violation-error.d.ts.map +1 -0
- package/dist/context-violation-error.js +147 -0
- package/dist/create-hook.d.ts +42 -3
- package/dist/create-hook.d.ts.map +1 -1
- package/dist/create-hook.js +4 -3
- package/dist/define-hook.d.ts.map +1 -1
- package/dist/define-hook.js +20 -5
- package/dist/describe-error.d.ts +70 -0
- package/dist/describe-error.d.ts.map +1 -0
- package/dist/describe-error.js +165 -0
- package/dist/encryption.d.ts +22 -1
- package/dist/encryption.d.ts.map +1 -1
- package/dist/encryption.js +72 -27
- package/dist/events-consumer.d.ts +25 -1
- package/dist/events-consumer.d.ts.map +1 -1
- package/dist/events-consumer.js +95 -16
- package/dist/flushable-stream.d.ts +10 -10
- package/dist/flushable-stream.d.ts.map +1 -1
- package/dist/flushable-stream.js +26 -15
- package/dist/global.d.ts +35 -1
- package/dist/global.d.ts.map +1 -1
- package/dist/global.js +21 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/log-format.d.ts +25 -0
- package/dist/log-format.d.ts.map +1 -0
- package/dist/log-format.js +250 -0
- package/dist/logger.d.ts +29 -30
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +82 -32
- package/dist/private.d.ts +107 -2
- package/dist/private.d.ts.map +1 -1
- package/dist/private.js +80 -3
- package/dist/runtime/constants.d.ts +189 -0
- package/dist/runtime/constants.d.ts.map +1 -1
- package/dist/runtime/constants.js +310 -15
- package/dist/runtime/get-port-lazy.d.ts +25 -0
- package/dist/runtime/get-port-lazy.d.ts.map +1 -0
- package/dist/runtime/get-port-lazy.js +92 -0
- package/dist/runtime/get-world-lazy.d.ts +23 -0
- package/dist/runtime/get-world-lazy.d.ts.map +1 -0
- package/dist/runtime/get-world-lazy.js +46 -0
- package/dist/runtime/helpers.d.ts +57 -6
- package/dist/runtime/helpers.d.ts.map +1 -1
- package/dist/runtime/helpers.js +169 -32
- package/dist/runtime/replay-budget.d.ts +98 -0
- package/dist/runtime/replay-budget.d.ts.map +1 -0
- package/dist/runtime/replay-budget.js +192 -0
- package/dist/runtime/resume-hook.d.ts.map +1 -1
- package/dist/runtime/resume-hook.js +39 -23
- package/dist/runtime/run-id-time.d.ts +10 -0
- package/dist/runtime/run-id-time.d.ts.map +1 -0
- package/dist/runtime/run-id-time.js +31 -0
- package/dist/runtime/run.d.ts +6 -2
- package/dist/runtime/run.d.ts.map +1 -1
- package/dist/runtime/run.js +52 -10
- package/dist/runtime/runs.d.ts +36 -2
- package/dist/runtime/runs.d.ts.map +1 -1
- package/dist/runtime/runs.js +18 -7
- package/dist/runtime/start.d.ts +58 -1
- package/dist/runtime/start.d.ts.map +1 -1
- package/dist/runtime/start.js +160 -46
- package/dist/runtime/step-executor.d.ts +131 -0
- package/dist/runtime/step-executor.d.ts.map +1 -0
- package/dist/runtime/step-executor.js +818 -0
- package/dist/runtime/step-handler.d.ts.map +1 -1
- package/dist/runtime/step-handler.js +718 -557
- package/dist/runtime/step-latency.d.ts +131 -0
- package/dist/runtime/step-latency.d.ts.map +1 -0
- package/dist/runtime/step-latency.js +155 -0
- package/dist/runtime/step-ownership.d.ts +72 -0
- package/dist/runtime/step-ownership.d.ts.map +1 -0
- package/dist/runtime/step-ownership.js +114 -0
- package/dist/runtime/step-single-flight.d.ts +12 -0
- package/dist/runtime/step-single-flight.d.ts.map +1 -0
- package/dist/runtime/step-single-flight.js +69 -0
- package/dist/runtime/suspension-handler.d.ts +81 -7
- package/dist/runtime/suspension-handler.d.ts.map +1 -1
- package/dist/runtime/suspension-handler.js +355 -137
- package/dist/runtime/wait-continuation.d.ts +84 -0
- package/dist/runtime/wait-continuation.d.ts.map +1 -0
- package/dist/runtime/wait-continuation.js +105 -0
- package/dist/runtime/wait-until.d.ts +18 -0
- package/dist/runtime/wait-until.d.ts.map +1 -0
- package/dist/runtime/wait-until.js +42 -0
- package/dist/runtime/world-compatibility.d.ts +5 -0
- package/dist/runtime/world-compatibility.d.ts.map +1 -0
- package/dist/runtime/world-compatibility.js +12 -0
- package/dist/runtime/world-init.d.ts +50 -0
- package/dist/runtime/world-init.d.ts.map +1 -0
- package/dist/runtime/world-init.js +50 -0
- package/dist/runtime/world-target.d.ts +11 -0
- package/dist/runtime/world-target.d.ts.map +1 -0
- package/dist/runtime/world-target.js +15 -0
- package/dist/runtime/world.d.ts +21 -9
- package/dist/runtime/world.d.ts.map +1 -1
- package/dist/runtime/world.js +58 -83
- package/dist/runtime.d.ts +15 -10
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +1757 -326
- package/dist/schemas.d.ts +1 -1
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +1 -1
- package/dist/serialization/client.d.ts +17 -0
- package/dist/serialization/client.d.ts.map +1 -0
- package/dist/serialization/client.js +48 -0
- package/dist/serialization/codec-devalue.d.ts +14 -0
- package/dist/serialization/codec-devalue.d.ts.map +1 -0
- package/dist/serialization/codec-devalue.js +98 -0
- package/dist/serialization/codec.d.ts +106 -0
- package/dist/serialization/codec.d.ts.map +1 -0
- package/dist/serialization/codec.js +17 -0
- package/dist/serialization/compression.d.ts +104 -0
- package/dist/serialization/compression.d.ts.map +1 -0
- package/dist/serialization/compression.js +260 -0
- package/dist/serialization/encryption.d.ts +33 -0
- package/dist/serialization/encryption.d.ts.map +1 -0
- package/dist/serialization/encryption.js +70 -0
- package/dist/serialization/errors.d.ts +34 -0
- package/dist/serialization/errors.d.ts.map +1 -0
- package/dist/serialization/errors.js +59 -0
- package/dist/serialization/format.d.ts +60 -0
- package/dist/serialization/format.d.ts.map +1 -0
- package/dist/serialization/format.js +97 -0
- package/dist/serialization/index.d.ts +19 -0
- package/dist/serialization/index.d.ts.map +1 -0
- package/dist/serialization/index.js +22 -0
- package/dist/serialization/reducers/class.d.ts +11 -0
- package/dist/serialization/reducers/class.d.ts.map +1 -0
- package/dist/serialization/reducers/class.js +68 -0
- package/dist/serialization/reducers/common.d.ts +16 -0
- package/dist/serialization/reducers/common.d.ts.map +1 -0
- package/dist/serialization/reducers/common.js +417 -0
- package/dist/serialization/reducers/step-function.d.ts +35 -0
- package/dist/serialization/reducers/step-function.d.ts.map +1 -0
- package/dist/serialization/reducers/step-function.js +88 -0
- package/dist/serialization/step.d.ts +17 -0
- package/dist/serialization/step.d.ts.map +1 -0
- package/dist/serialization/step.js +48 -0
- package/dist/serialization/types.d.ts +253 -0
- package/dist/serialization/types.d.ts.map +1 -0
- package/dist/serialization/types.js +25 -0
- package/dist/serialization/workflow.d.ts +29 -0
- package/dist/serialization/workflow.d.ts.map +1 -0
- package/dist/serialization/workflow.js +54 -0
- package/dist/serialization-format.d.ts +16 -0
- package/dist/serialization-format.d.ts.map +1 -1
- package/dist/serialization-format.js +213 -50
- package/dist/serialization.d.ts +322 -214
- package/dist/serialization.d.ts.map +1 -1
- package/dist/serialization.js +1575 -664
- package/dist/set-attributes.d.ts +13 -0
- package/dist/set-attributes.d.ts.map +1 -0
- package/dist/set-attributes.js +56 -0
- package/dist/sleep.d.ts.map +1 -1
- package/dist/sleep.js +3 -2
- package/dist/source-map.d.ts +5 -0
- package/dist/source-map.d.ts.map +1 -1
- package/dist/source-map.js +102 -10
- package/dist/step/context-storage.d.ts +53 -0
- package/dist/step/context-storage.d.ts.map +1 -1
- package/dist/step/context-storage.js +1 -1
- package/dist/step/get-closure-vars.d.ts.map +1 -1
- package/dist/step/get-closure-vars.js +3 -2
- package/dist/step/get-step-metadata.d.ts.map +1 -1
- package/dist/step/get-step-metadata.js +3 -2
- package/dist/step/get-workflow-metadata.d.ts.map +1 -1
- package/dist/step/get-workflow-metadata.js +3 -2
- package/dist/step/writable-stream.d.ts.map +1 -1
- package/dist/step/writable-stream.js +58 -6
- package/dist/step-hydration-cache.d.ts +148 -0
- package/dist/step-hydration-cache.d.ts.map +1 -0
- package/dist/step-hydration-cache.js +171 -0
- package/dist/step.d.ts.map +1 -1
- package/dist/step.js +144 -25
- package/dist/symbols.d.ts +28 -0
- package/dist/symbols.d.ts.map +1 -1
- package/dist/symbols.js +29 -1
- package/dist/telemetry/semantic-conventions.d.ts +98 -2
- package/dist/telemetry/semantic-conventions.d.ts.map +1 -1
- package/dist/telemetry/semantic-conventions.js +66 -1
- package/dist/telemetry.d.ts +68 -0
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +106 -4
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +23 -1
- package/dist/util.d.ts +16 -6
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +25 -16
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +2 -2
- package/dist/vm/index.d.ts.map +1 -1
- package/dist/vm/index.js +3 -2
- package/dist/vm/script-cache.d.ts +28 -0
- package/dist/vm/script-cache.d.ts.map +1 -0
- package/dist/vm/script-cache.js +140 -0
- package/dist/workflow/abort-controller.d.ts +65 -0
- package/dist/workflow/abort-controller.d.ts.map +1 -0
- package/dist/workflow/abort-controller.js +277 -0
- package/dist/workflow/attribute-dispatcher.d.ts +6 -0
- package/dist/workflow/attribute-dispatcher.d.ts.map +1 -0
- package/dist/workflow/attribute-dispatcher.js +48 -0
- package/dist/workflow/create-hook.d.ts.map +1 -1
- package/dist/workflow/create-hook.js +25 -3
- package/dist/workflow/define-hook.d.ts +1 -1
- package/dist/workflow/define-hook.d.ts.map +1 -1
- package/dist/workflow/define-hook.js +8 -4
- package/dist/workflow/get-workflow-metadata.d.ts.map +1 -1
- package/dist/workflow/get-workflow-metadata.js +14 -3
- package/dist/workflow/hook.d.ts.map +1 -1
- package/dist/workflow/hook.js +207 -33
- package/dist/workflow/index.d.ts +1 -0
- package/dist/workflow/index.d.ts.map +1 -1
- package/dist/workflow/index.js +5 -3
- package/dist/workflow/set-attributes.d.ts +73 -0
- package/dist/workflow/set-attributes.d.ts.map +1 -0
- package/dist/workflow/set-attributes.js +65 -0
- package/dist/workflow/sleep.d.ts.map +1 -1
- package/dist/workflow/sleep.js +45 -8
- package/dist/workflow/world-init-stub.d.ts +15 -0
- package/dist/workflow/world-init-stub.d.ts.map +1 -0
- package/dist/workflow/world-init-stub.js +15 -0
- package/dist/workflow.d.ts +17 -1
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +190 -56
- package/docs/api-reference/create-hook.mdx +38 -0
- package/docs/api-reference/create-webhook.mdx +1 -0
- package/docs/api-reference/experimental-set-attributes.mdx +65 -0
- package/docs/api-reference/fetch.mdx +5 -0
- package/docs/api-reference/index.mdx +3 -0
- package/docs/foundations/cancellation.mdx +459 -0
- package/docs/foundations/errors-and-retries.mdx +7 -3
- package/docs/foundations/hooks.mdx +29 -0
- package/docs/foundations/idempotency.mdx +236 -11
- package/docs/foundations/index.mdx +1 -23
- package/docs/foundations/meta.json +3 -1
- package/docs/foundations/serialization.mdx +77 -41
- package/docs/foundations/starting-workflows.mdx +5 -1
- package/docs/foundations/streaming.mdx +14 -23
- package/docs/foundations/versioning.mdx +263 -0
- package/docs/how-it-works/cancellation.mdx +287 -0
- package/docs/how-it-works/code-transform.mdx +2 -2
- package/docs/how-it-works/encryption.mdx +2 -2
- package/docs/how-it-works/event-sourcing.mdx +2 -2
- package/docs/how-it-works/meta.json +2 -1
- package/package.json +32 -11
package/dist/events-consumer.js
CHANGED
|
@@ -1,4 +1,27 @@
|
|
|
1
|
+
import { envNumber } from '@workflow/world';
|
|
1
2
|
import { eventsLogger } from './logger.js';
|
|
3
|
+
/**
|
|
4
|
+
* Delay before firing the deferred unconsumed-event check after the promise
|
|
5
|
+
* queue has drained. Must be long enough for cross-VM microtask chains to
|
|
6
|
+
* propagate (resolve in host → workflow code in VM → subscribe call back
|
|
7
|
+
* in host). Any subscribe() arriving during this window cancels the check.
|
|
8
|
+
*/
|
|
9
|
+
export const DEFERRED_CHECK_DELAY_MS = 100;
|
|
10
|
+
/**
|
|
11
|
+
* Effective deferred-check delay. Override: `WORKFLOW_DEFERRED_CHECK_DELAY_MS`.
|
|
12
|
+
*
|
|
13
|
+
* Unlike the other timing knobs this is not a polling interval but a
|
|
14
|
+
* determinism safety margin: firing the unconsumed-event check before the
|
|
15
|
+
* cross-VM subscribe() chain has landed rejects a healthy run with
|
|
16
|
+
* `ReplayDivergenceError`. Floored at 10ms so a too-low override can't
|
|
17
|
+
* manufacture spurious divergence (each false positive burns a
|
|
18
|
+
* divergence-recovery retry and can escalate to a terminal
|
|
19
|
+
* `CorruptedEventLogError`).
|
|
20
|
+
*/
|
|
21
|
+
const getDeferredCheckDelayMs = () => envNumber('WORKFLOW_DEFERRED_CHECK_DELAY_MS', DEFERRED_CHECK_DELAY_MS, {
|
|
22
|
+
integer: true,
|
|
23
|
+
min: 10,
|
|
24
|
+
});
|
|
2
25
|
export var EventConsumerResult;
|
|
3
26
|
(function (EventConsumerResult) {
|
|
4
27
|
/**
|
|
@@ -18,6 +41,7 @@ export class EventsConsumer {
|
|
|
18
41
|
eventIndex;
|
|
19
42
|
events = [];
|
|
20
43
|
callbacks = [];
|
|
44
|
+
onConsumedEvent;
|
|
21
45
|
onUnconsumedEvent;
|
|
22
46
|
getPromiseQueue;
|
|
23
47
|
pendingUnconsumedCheck = null;
|
|
@@ -26,6 +50,7 @@ export class EventsConsumer {
|
|
|
26
50
|
constructor(events, options) {
|
|
27
51
|
this.events = events;
|
|
28
52
|
this.eventIndex = 0;
|
|
53
|
+
this.onConsumedEvent = options.onConsumedEvent;
|
|
29
54
|
this.onUnconsumedEvent = options.onUnconsumedEvent;
|
|
30
55
|
this.getPromiseQueue = options.getPromiseQueue;
|
|
31
56
|
}
|
|
@@ -53,8 +78,54 @@ export class EventsConsumer {
|
|
|
53
78
|
}
|
|
54
79
|
process.nextTick(this.consume);
|
|
55
80
|
}
|
|
81
|
+
notifyConsumedEvent(event) {
|
|
82
|
+
if (!this.onConsumedEvent) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
try {
|
|
86
|
+
this.onConsumedEvent(event);
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
eventsLogger.error('onConsumedEvent callback threw an error', {
|
|
90
|
+
error,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
56
94
|
consume = () => {
|
|
57
|
-
|
|
95
|
+
// Drain consecutively consumable events synchronously within a single
|
|
96
|
+
// pass instead of paying one `process.nextTick` per consumed event.
|
|
97
|
+
//
|
|
98
|
+
// Why this is safe: a callback only consumes an event using a consumer
|
|
99
|
+
// that is ALREADY registered (e.g. a long-lived step consumer walking
|
|
100
|
+
// `step_created` → `step_started` → `step_completed`, or the structural
|
|
101
|
+
// lifecycle consumer). New consumers are only ever registered by workflow
|
|
102
|
+
// VM body code that runs asynchronously off `ctx.promiseQueue` after a
|
|
103
|
+
// delivery `resolve()`; none of the callbacks here call `subscribe()`
|
|
104
|
+
// synchronously. So within one pass `this.callbacks` is mutated only by
|
|
105
|
+
// this loop (the `Finished` splice), and the next event's consumer is
|
|
106
|
+
// either already present (advance now) or not yet registered — in which
|
|
107
|
+
// case no callback consumes the event and we fall through to the
|
|
108
|
+
// cross-VM-safe deferred unconsumed-event check below, exactly as before.
|
|
109
|
+
while (true) {
|
|
110
|
+
const currentEvent = this.events[this.eventIndex] ?? null;
|
|
111
|
+
if (!this.consumeOne(currentEvent)) {
|
|
112
|
+
// No callback consumed the current event; handle the terminal case.
|
|
113
|
+
this.handleUnconsumed(currentEvent);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
// A real event was consumed — advance to the next in the same pass. A
|
|
117
|
+
// consumed `null` sentinel never returns true (see consumeOne), so the
|
|
118
|
+
// synchronous drain can't spin past the end of the log.
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
/**
|
|
122
|
+
* Offer `currentEvent` to each registered callback in turn. Returns true
|
|
123
|
+
* when a callback consumed a real (non-null) event and the drain should
|
|
124
|
+
* advance to the next event in the same synchronous pass; false otherwise
|
|
125
|
+
* (nothing consumed it, or the consumed event was the end-of-events
|
|
126
|
+
* sentinel).
|
|
127
|
+
*/
|
|
128
|
+
consumeOne(currentEvent) {
|
|
58
129
|
for (let i = 0; i < this.callbacks.length; i++) {
|
|
59
130
|
const callback = this.callbacks[i];
|
|
60
131
|
let handled = EventConsumerResult.NotConsumed;
|
|
@@ -64,20 +135,28 @@ export class EventsConsumer {
|
|
|
64
135
|
catch (error) {
|
|
65
136
|
eventsLogger.error('EventConsumer callback threw an error', { error });
|
|
66
137
|
}
|
|
67
|
-
if (handled
|
|
68
|
-
handled
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
this.callbacks.splice(i, 1);
|
|
74
|
-
}
|
|
75
|
-
// continue to the next event
|
|
76
|
-
process.nextTick(this.consume);
|
|
77
|
-
return;
|
|
138
|
+
if (handled !== EventConsumerResult.Consumed &&
|
|
139
|
+
handled !== EventConsumerResult.Finished) {
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
if (currentEvent !== null) {
|
|
143
|
+
this.notifyConsumedEvent(currentEvent);
|
|
78
144
|
}
|
|
145
|
+
// consumer handled this event, so increase the event index
|
|
146
|
+
this.eventIndex++;
|
|
147
|
+
// remove the callback if it has finished
|
|
148
|
+
if (handled === EventConsumerResult.Finished) {
|
|
149
|
+
this.callbacks.splice(i, 1);
|
|
150
|
+
}
|
|
151
|
+
// Continue draining only for real events. Real consumers return
|
|
152
|
+
// NotConsumed for the `null` sentinel, but guard against a pathological
|
|
153
|
+
// callback consuming it so the drain never spins past end-of-log.
|
|
154
|
+
return currentEvent !== null;
|
|
79
155
|
}
|
|
80
|
-
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
158
|
+
handleUnconsumed(currentEvent) {
|
|
159
|
+
// All callbacks returned NotConsumed for the current event.
|
|
81
160
|
// If the current event is non-null (a real event, not end-of-events),
|
|
82
161
|
// schedule a deferred check. We chain onto the promiseQueue so that any
|
|
83
162
|
// pending async work (e.g., deserialization/decryption that triggers
|
|
@@ -108,9 +187,9 @@ export class EventsConsumer {
|
|
|
108
187
|
this.pendingUnconsumedCheck = null;
|
|
109
188
|
this.onUnconsumedEvent(currentEvent);
|
|
110
189
|
}
|
|
111
|
-
},
|
|
190
|
+
}, getDeferredCheckDelayMs());
|
|
112
191
|
});
|
|
113
192
|
}
|
|
114
|
-
}
|
|
193
|
+
}
|
|
115
194
|
}
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLWNvbnN1bWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2V2ZW50cy1jb25zdW1lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTNDLE1BQU0sQ0FBTixJQUFZLG1CQWFYO0FBYkQsV0FBWSxtQkFBbUI7SUFDN0I7O09BRUc7SUFDSCxxRUFBUSxDQUFBO0lBQ1I7O09BRUc7SUFDSCwyRUFBVyxDQUFBO0lBQ1g7O09BRUc7SUFDSCxxRUFBUSxDQUFBO0FBQ1YsQ0FBQyxFQWJXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFhOUI7QUFzQkQsTUFBTSxPQUFPLGNBQWM7SUFDekIsVUFBVSxDQUFTO0lBQ1YsTUFBTSxHQUFZLEVBQUUsQ0FBQztJQUNyQixTQUFTLEdBQTRCLEVBQUUsQ0FBQztJQUN6QyxpQkFBaUIsQ0FBeUI7SUFDMUMsZUFBZSxDQUFzQjtJQUNyQyxzQkFBc0IsR0FBeUIsSUFBSSxDQUFDO0lBQ3BELHdCQUF3QixHQUF5QyxJQUFJLENBQUM7SUFDdEUsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0lBRW5DLFlBQVksTUFBZSxFQUFFLE9BQThCO1FBQ3pELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUM7UUFDbkQsSUFBSSxDQUFDLGVBQWUsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDO0lBQ2pELENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILFNBQVMsQ0FBQyxFQUF5QjtRQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN4QixrRkFBa0Y7UUFDbEYsOEVBQThFO1FBQzlFLDREQUE0RDtRQUM1RCxJQUFJLElBQUksQ0FBQyxzQkFBc0Is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LENBQUMsc0JBQXNCLEtBQUssWUFBWSxFQUFFLENBQUM7d0JBQ2pELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7d0JBQ25DLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDdkMsQ0FBQztnQkFDSCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDVixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUM7SUFDSCxDQUFDLENBQUM7Q0FDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRXZlbnQgfSBmcm9tICdAd29ya2Zsb3cvd29ybGQnO1xuaW1wb3J0IHsgZXZlbnRzTG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXIuanMnO1xuXG5leHBvcnQgZW51bSBFdmVudENvbnN1bWVyUmVzdWx0IHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGNvbnN1bWVkIHRoZSBldmVudCwgYnV0IHNob3VsZCBub3QgYmUgcmVtb3ZlZCBmcm9tIHRoZSBjYWxsYmFja3MgbGlzdFxuICAgKi9cbiAgQ29uc3VtZWQsXG4gIC8qKlxuICAgKiBDYWxsYmFjayBkaWQgbm90IGNvbnN1bWUgdGhlIGV2ZW50LCBzbyBpdCBzaG91bGQgYmUgcGFzc2VkIHRvIHRoZSBuZXh0IGNhbGxiYWNrXG4gICAqL1xuICBOb3RDb25zdW1lZCxcbiAgLyoqXG4gICAqIENhbGxiYWNrIGNvbnN1bWVkIHRoZSBldmVudCwgYW5kIHNob3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIGNhbGxiYWNrcyBsaXN0XG4gICAqL1xuICBGaW5pc2hlZCxcbn1cblxudHlwZSBFdmVudENvbnN1bWVyQ2FsbGJhY2sgPSAoZXZlbnQ6IEV2ZW50IHwgbnVsbCkgPT4gRXZlbnRDb25zdW1lclJlc3VsdDtcblxuZXhwb3J0IGludGVyZmFjZSBFdmVudHNDb25zdW1lck9wdGlvbnMge1xuICAvKipcbiAgICogQ2FsbGJhY2sgaW52b2tlZCB3aGVuIGEgbm9uLW51bGwgZXZlbnQgY2Fubm90IGJlIGNvbnN1bWVkIGJ5IGFueSByZWdpc3RlcmVkXG4gICAqIGNhbGxiYWNrLCBpbmRpY2F0aW5nIGFuIG9ycGhhbmVkIG9yIGludmFsaWQgZXZlbnQgaW4gdGhlIGV2ZW50IGxvZy4gVGhlXG4gICAqIGNoZWNrIGlzIGRlZmVycmVkIHVudGlsIGFmdGVyIHRoZSBwcm9taXNlIHF1ZXVlIGhhcyBkcmFpbmVkLCBlbnN1cmluZyB0aGF0XG4gICAqIGFueSBwZW5kaW5nIGFzeW5jIHdvcmsgKGUuZy4sIGRlc2VyaWFsaXphdGlvbi9kZWNyeXB0aW9uKSBjb21wbGV0ZXMgYW5kXG4gICAqIGRvd25zdHJlYW0gc3Vic2NyaWJlKCkgY2FsbHMgaGF2ZSBhIGNoYW5jZSB0byBjYW5jZWwgdGhlIGNoZWNrIGZpcnN0LlxuICAgKi9cbiAgb25VbmNvbnN1bWVkRXZlbnQ6IChldmVudDogRXZlbnQpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHByb21pc2UgcXVldWUuIFRoZSB1bmNvbnN1bWVkIGV2ZW50IGNoZWNrIGlzIGNoYWluZWRcbiAgICogb250byB0aGlzIHF1ZXVlIHNvIGl0IG9ubHkgZmlyZXMgYWZ0ZXIgYWxsIHBlbmRpbmcgYXN5bmMgd29yayAoZS5nLixcbiAgICogZGVzZXJpYWxpemF0aW9uKSBoYXMgY29tcGxldGVkLiBUaGlzIHByZXZlbnRzIGZhbHNlIHBvc2l0aXZlcyB3aGVuIGFzeW5jXG4gICAqIGRlc2VyaWFsaXphdGlvbiBkZWxheXMgdGhlIHJlc29sdmUoKSB0aGF0IHRyaWdnZXJzIHRoZSBuZXh0IHN1YnNjcmliZSgpLlxuICAgKi9cbiAgZ2V0UHJvbWlzZVF1ZXVlOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG5leHBvcnQgY2xhc3MgRXZlbnRzQ29uc3VtZXIge1xuICBldmVudEluZGV4OiBudW1iZXI7XG4gIHJlYWRvbmx5IGV2ZW50czogRXZlbnRbXSA9IFtdO1xuICByZWFkb25seSBjYWxsYmFja3M6IEV2ZW50Q29uc3VtZXJDYWxsYmFja1tdID0gW107XG4gIHByaXZhdGUgb25VbmNvbnN1bWVkRXZlbnQ6IChldmVudDogRXZlbnQpID0+IHZvaWQ7XG4gIHByaXZhdGUgZ2V0UHJvbWlzZVF1ZXVlOiAoKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBwcml2YXRlIHBlbmRpbmdVbmNvbnN1bWVkQ2hlY2s6IFByb21pc2U8dm9pZD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBwZW5kaW5nVW5jb25zdW1lZFRpbWVvdXQ6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgdW5jb25zdW1lZENoZWNrVmVyc2lvbiA9IDA7XG5cbiAgY29uc3RydWN0b3IoZXZlbnRzOiBFdmVudFtdLCBvcHRpb25zOiBFdmVudHNDb25zdW1lck9wdGlvbnMpIHtcbiAgICB0aGlzLmV2ZW50cyA9IGV2ZW50cztcbiAgICB0aGlzLmV2ZW50SW5kZXggPSAwO1xuICAgIHRoaXMub25VbmNvbnN1bWVkRXZlbnQgPSBvcHRpb25zLm9uVW5jb25zdW1lZEV2ZW50O1xuICAgIHRoaXMuZ2V0UHJvbWlzZVF1ZXVlID0gb3B0aW9ucy5nZXRQcm9taXNlUXVldWU7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVyIGFuIGV2ZW50IGhhcyBiZWVuIGNvbnN1bWVkXG4gICAqIGJ5IGEgZGlmZmVyZW50IGNhbGxiYWNrLiBUaGUgY2FsbGJhY2sgY2FuIHJldHVybjpcbiAgICogIC0gYEV2ZW50Q29uc3VtZXJSZXN1bHQuQ29uc3VtZWRgIHRoZSBldmVudCBpcyBjb25zaWRlcmVkIGNvbnN1bWVkIGFuZCB3aWxsIG5vdCBiZSBwYXNzZWQgdG8gYW55IG90aGVyIGNhbGxiYWNrLCBidXQgdGhlIGNhbGxiYWNrIHdpbGwgcmVtYWluIGluIHRoZSBjYWxsYmFja3MgbGlzdFxuICAgKiAgLSBgRXZlbnRDb25zdW1lclJlc3VsdC5Ob3RDb25zdW1lZGAgdGhlIGV2ZW50IGlzIHBhc3NlZCB0byB0aGUgbmV4dCBjYWxsYmFja1xuICAgKiAgLSBgRXZlbnRDb25zdW1lclJlc3VsdC5GaW5pc2hlZGAgdGhlIGV2ZW50IGlzIGNvbnNpZGVyZWQgY29uc3VtZWQgYW5kIHRoZSBjYWxsYmFjayBpcyByZW1vdmVkIGZyb20gdGhlIGNhbGxiYWNrcyBsaXN0XG4gICAqXG4gICAqIEBwYXJhbSBmbiAtIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byByZWdpc3Rlci5cbiAgICovXG4gIHN1YnNjcmliZShmbjogRXZlbnRDb25zdW1lckNhbGxiYWNrKSB7XG4gICAgdGhpcy5jYWxsYmFja3MucHVzaChmbik7XG4gICAgLy8gQ2FuY2VsIGFueSBwZW5kaW5nIHVuY29uc3VtZWQgY2hlY2sgc2luY2UgYSBuZXcgY2FsbGJhY2sgbWF5IGNvbnN1bWUgdGhlIGV2ZW50LlxuICAgIC8vIEluY3JlbWVudGluZyB0aGUgdmVyc2lvbiBjYXVzZXMgYW55IGluLWZsaWdodCBwcm9taXNlIGNoYWluIGNoZWNrIHRvIG5vLW9wLlxuICAgIC8vIEFsc28gY2xlYXIgdGhlIHBlbmRpbmcgc2V0VGltZW91dCBpZiBpdCBoYXNuJ3QgZmlyZWQgeWV0LlxuICAgIGlmICh0aGlzLnBlbmRpbmdVbmNvbnN1bWVkQ2hlY2sgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudW5jb25zdW1lZENoZWNrVmVyc2lvbisrO1xuICAgICAgdGhpcy5wZW5kaW5nVW5jb25zdW1lZENoZWNrID0gbnVsbDtcbiAgICAgIGlmICh0aGlzLnBlbmRpbmdVbmNvbnN1bWVkVGltZW91dCAhPT0gbnVsbCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5wZW5kaW5nVW5jb25zdW1lZFRpbWVvdXQpO1xuICAgICAgICB0aGlzLnBlbmRpbmdVbmNvbnN1bWVkVGltZW91dCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIHByb2Nlc3MubmV4dFRpY2sodGhpcy5jb25zdW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3VtZSA9ICgpID0+IHtcbiAgICBjb25zdCBjdXJyZW50RXZlbnQgPSB0aGlzLmV2ZW50c1t0aGlzLmV2ZW50SW5kZXhdID8/IG51bGw7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmNhbGxiYWNrcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY2FsbGJhY2sgPSB0aGlzLmNhbGxiYWNrc1tpXTtcbiAgICAgIGxldCBoYW5kbGVkID0gRXZlbnRDb25zdW1lclJlc3VsdC5Ob3RDb25zdW1lZDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGhhbmRsZWQgPSBjYWxsYmFjayhjdXJyZW50RXZlbnQpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgZXZlbnRzTG9nZ2VyLmVycm9yKCdFdmVudENvbnN1bWVyIGNhbGxiYWNrIHRocmV3IGFuIGVycm9yJywgeyBlcnJvciB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgaGFuZGxlZCA9PT0gRXZlbnRDb25zdW1lclJlc3VsdC5Db25zdW1lZCB8fFxuICAgICAgICBoYW5kbGVkID09PSBFdmVudENvbnN1bWVyUmVzdWx0LkZpbmlzaGVkXG4gICAgICApIHtcbiAgICAgICAgLy8gY29uc3VtZXIgaGFuZGxlZCB0aGlzIGV2ZW50LCBzbyBpbmNyZWFzZSB0aGUgZXZlbnQgaW5kZXhcbiAgICAgICAgdGhpcy5ldmVudEluZGV4Kys7XG5cbiAgICAgICAgLy8gcmVtb3ZlIHRoZSBjYWxsYmFjayBpZiBpdCBoYXMgZmluaXNoZWRcbiAgICAgICAgaWYgKGhhbmRsZWQgPT09IEV2ZW50Q29uc3VtZXJSZXN1bHQuRmluaXNoZWQpIHtcbiAgICAgICAgICB0aGlzLmNhbGxiYWNrcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjb250aW51ZSB0byB0aGUgbmV4dCBldmVudFxuICAgICAgICBwcm9jZXNzLm5leHRUaWNrKHRoaXMuY29uc3VtZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiB3ZSByZWFjaCBoZXJlLCBhbGwgY2FsbGJhY2tzIHJldHVybmVkIE5vdENvbnN1bWVkLlxuICAgIC8vIElmIHRoZSBjdXJyZW50IGV2ZW50IGlzIG5vbi1udWxsIChhIHJlYWwgZXZlbnQsIG5vdCBlbmQtb2YtZXZlbnRzKSxcbiAgICAvLyBzY2hlZHVsZSBhIGRlZmVycmVkIGNoZWNrLiBXZSBjaGFpbiBvbnRvIHRoZSBwcm9taXNlUXVldWUgc28gdGhhdCBhbnlcbiAgICAvLyBwZW5kaW5nIGFzeW5jIHdvcmsgKGUuZy4sIGRlc2VyaWFsaXphdGlvbi9kZWNyeXB0aW9uIHRoYXQgdHJpZ2dlcnNcbiAgICAvLyByZXNvbHZlKCkg4oaSIHVzZXIgY29kZSDihpIgc3Vic2NyaWJlKCkpIGNvbXBsZXRlcyBmaXJzdC4gSWYgdGhlIGV2ZW50XG4gICAgLy8gaXMgc3RpbGwgdW5jb25zdW1lZCBhZnRlciB0aGUgcXVldWUgZHJhaW5zLCBpdCdzIHRydWx5IG9ycGhhbmVkLlxuICAgIGlmIChjdXJyZW50RXZlbnQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGNoZWNrVmVyc2lvbiA9ICsrdGhpcy51bmNvbnN1bWVkQ2hlY2tWZXJzaW9uO1xuICAgICAgdGhpcy5wZW5kaW5nVW5jb25zdW1lZENoZWNrID0gdGhpcy5nZXRQcm9taXNlUXVldWUoKVxuICAgICAgICAudGhlbihcbiAgICAgICAgICAvLyBZaWVsZCBvbmNlIGFmdGVyIHRoZSBmaXJzdCBxdWV1ZSBkcmFpbiBzbyBwcm9taXNlIGNoYWlucyByZXN1bWVkIGJ5XG4gICAgICAgICAgLy8gdGhhdCBkcmFpbiBjYW4gcnVuIGFjcm9zcyB0aGUgVk0gYm91bmRhcnkgYW5kIGFwcGVuZCBhbnkgZm9sbG93LXVwXG4gICAgICAgICAgLy8gYXN5bmMgd29yayAoZm9yIGV4YW1wbGU6IHN0ZXBfY29tcGxldGVkIHJlc29sdmVzIC0+IGZvci1hd2FpdCBsb29wXG4gICAgICAgICAgLy8gcmVzdW1lcyAtPiB0aGUgbmV4dCBob29rIHBheWxvYWQgc3RhcnRzIGh5ZHJhdGluZykuXG4gICAgICAgICAgKCkgPT4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMCkpXG4gICAgICAgIClcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5nZXRQcm9taXNlUXVldWUoKSlcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIC8vIFVzZSBhIGRlbGF5ZWQgc2V0VGltZW91dCBhZnRlciB0aGUgcXVldWUgZHJhaW5zLiBUaGUgZGVsYXkgbXVzdCBiZVxuICAgICAgICAgIC8vIGxvbmcgZW5vdWdoIGZvciBwcm9taXNlIGNoYWlucyB0byBwcm9wYWdhdGUgYWNyb3NzIHRoZSBWTSBib3VuZGFyeVxuICAgICAgICAgIC8vIChmcm9tIHJlc29sdmUoKSBpbiB0aGUgaG9zdCBjb250ZXh0IHRocm91Z2ggdG8gdGhlIHdvcmtmbG93IGNvZGVcbiAgICAgICAgICAvLyBjYWxsaW5nIHN1YnNjcmliZSgpIGluIHRoZSBWTSBjb250ZXh0KS4gTm9kZS5qcyBkb2VzIG5vdCBndWFyYW50ZWVcbiAgICAgICAgICAvLyB0aGF0IHNldFRpbWVvdXQoMCkgZmlyZXMgYWZ0ZXIgYWxsIGNyb3NzLWNvbnRleHQgbWljcm90YXNrcyBzZXR0bGUsXG4gICAgICAgICAgLy8gc28gd2UgdXNlIGEgc21hbGwgYnV0IG5vbi16ZXJvIGRlbGF5LiBBbnkgc3Vic2NyaWJlKCkgY2FsbCB0aGF0XG4gICAgICAgICAgLy8gYXJyaXZlcyBkdXJpbmcgdGhpcyB3aW5kb3cgd2lsbCBjYW5jZWwgdGhlIGNoZWNrIHZpYSB2ZXJzaW9uXG4gICAgICAgICAgLy8gaW52YWxpZGF0aW9uICsgY2xlYXJUaW1lb3V0LlxuICAgICAgICAgIHRoaXMucGVuZGluZ1VuY29uc3VtZWRUaW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBlbmRpbmdVbmNvbnN1bWVkVGltZW91dCA9IG51bGw7XG4gICAgICAgICAgICBpZiAodGhpcy51bmNvbnN1bWVkQ2hlY2tWZXJzaW9uID09PSBjaGVja1ZlcnNpb24pIHtcbiAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nVW5jb25zdW1lZENoZWNrID0gbnVsbDtcbiAgICAgICAgICAgICAgdGhpcy5vblVuY29uc3VtZWRFdmVudChjdXJyZW50RXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sIDEwMCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfTtcbn1cbiJdfQ==
|
|
195
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLWNvbnN1bWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2V2ZW50cy1jb25zdW1lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUzQzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLEdBQUcsQ0FBQztBQUUzQzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSx1QkFBdUIsR0FBRyxHQUFXLEVBQUUsQ0FDM0MsU0FBUyxDQUFDLGtDQUFrQyxFQUFFLHVCQUF1QixFQUFFO0lBQ3JFLE9BQU8sRUFBRSxJQUFJO0lBQ2IsR0FBRyxFQUFFLEVBQUU7Q0FDUixDQUFDLENBQUM7QUFFTCxNQUFNLENBQU4sSUFBWSxtQkFhWDtBQWJELFdBQVksbUJBQW1CO0lBQzdCOztPQUVHO0lBQ0gscUVBQVEsQ0FBQTtJQUNSOztPQUVHO0lBQ0gsMkVBQVcsQ0FBQTtJQUNYOztPQUVHO0lBQ0gscUVBQVEsQ0FBQTtBQUNWLENBQUMsRUFiVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBYTlCO0FBNEJELE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFVBQVUsQ0FBUztJQUNWLE1BQU0sR0FBWSxFQUFFLENBQUM7SUFDckIsU0FBUyxHQUE0QixFQUFFLENBQUM7SUFDekMsZUFBZSxDQUEwQjtJQUN6QyxpQkFBaUIsQ0FBeUI7SUFDMUMsZUFBZSxDQUFzQjtJQUNyQyxzQkFBc0IsR0FBeUIsSUFBSSxDQUFDO0lBQ3BELHdCQUF3QixHQUF5QyxJQUFJLENBQUM7SUFDdEUsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0lBRW5DLFlBQVksTUFBZSxFQUFFLE9BQThCO1FBQ3pELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFD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RUFBRSxDQUFDO2lCQUNsQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNULHFFQUFxRTtnQkFDckUscUVBQXFFO2dCQUNyRSxtRUFBbUU7Z0JBQ25FLHFFQUFxRTtnQkFDckUsc0VBQXNFO2dCQUN0RSxrRUFBa0U7Z0JBQ2xFLCtEQUErRDtnQkFDL0QsK0JBQStCO2dCQUMvQixJQUFJLENBQUMsd0JBQXdCLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtvQkFDOUMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztvQkFDckMsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEtBQUssWUFBWSxFQUFFLENBQUM7d0JBQ2pELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUM7d0JBQ25DLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDdkMsQ0FBQztnQkFDSCxDQUFDLEVBQUUsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO1lBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRXZlbnQsIGVudk51bWJlciB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5pbXBvcnQgeyBldmVudHNMb2dnZXIgfSBmcm9tICcuL2xvZ2dlci5qcyc7XG5cbi8qKlxuICogRGVsYXkgYmVmb3JlIGZpcmluZyB0aGUgZGVmZXJyZWQgdW5jb25zdW1lZC1ldmVudCBjaGVjayBhZnRlciB0aGUgcHJvbWlzZVxuICogcXVldWUgaGFzIGRyYWluZWQuIE11c3QgYmUgbG9uZyBlbm91Z2ggZm9yIGNyb3NzLVZNIG1pY3JvdGFzayBjaGFpbnMgdG9cbiAqIHByb3BhZ2F0ZSAocmVzb2x2ZSBpbiBob3N0IOKGkiB3b3JrZmxvdyBjb2RlIGluIFZNIOKGkiBzdWJzY3JpYmUgY2FsbCBiYWNrXG4gKiBpbiBob3N0KS4gQW55IHN1YnNjcmliZSgpIGFycml2aW5nIGR1cmluZyB0aGlzIHdpbmRvdyBjYW5jZWxzIHRoZSBjaGVjay5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkVSUkVEX0NIRUNLX0RFTEFZX01TID0gMTAwO1xuXG4vKipcbiAqIEVmZmVjdGl2ZSBkZWZlcnJlZC1jaGVjayBkZWxheS4gT3ZlcnJpZGU6IGBXT1JLRkxPV19ERUZFUlJFRF9DSEVDS19ERUxBWV9NU2AuXG4gKlxuICogVW5saWtlIHRoZSBvdGhlciB0aW1pbmcga25vYnMgdGhpcyBpcyBub3QgYSBwb2xsaW5nIGludGVydmFsIGJ1dCBhXG4gKiBkZXRlcm1pbmlzbSBzYWZldHkgbWFyZ2luOiBmaXJpbmcgdGhlIHVuY29uc3VtZWQtZXZlbnQgY2hlY2sgYmVmb3JlIHRoZVxuICogY3Jvc3MtVk0gc3Vic2NyaWJlKCkgY2hhaW4gaGFzIGxhbmRlZCByZWplY3RzIGEgaGVhbHRoeSBydW4gd2l0aFxuICogYFJlcGxheURpdmVyZ2VuY2VFcnJvcmAuIEZsb29yZWQgYXQgMTBtcyBzbyBhIHRvby1sb3cgb3ZlcnJpZGUgY2FuJ3RcbiAqIG1hbnVmYWN0dXJlIHNwdXJpb3VzIGRpdmVyZ2VuY2UgKGVhY2ggZmFsc2UgcG9zaXRpdmUgYnVybnMgYVxuICogZGl2ZXJnZW5jZS1yZWNvdmVyeSByZXRyeSBhbmQgY2FuIGVzY2FsYXRlIHRvIGEgdGVybWluYWxcbiAqIGBDb3JydXB0ZWRFdmVudExvZ0Vycm9yYCkuXG4gKi9cbmNvbnN0IGdldERlZmVycmVkQ2hlY2tEZWxheU1zID0gKCk6IG51bWJlciA9PlxuICBlbnZOdW1iZXIoJ1dPUktGTE9XX0RFRkVSUkVEX0NIRUNLX0RFTEFZX01TJywgREVGRVJSRURfQ0hFQ0tfREVMQVlfTVMsIHtcbiAgICBpbnRlZ2VyOiB0cnVlLFxuICAgIG1pbjogMTAsXG4gIH0pO1xuXG5leHBvcnQgZW51bSBFdmVudENvbnN1bWVyUmVzdWx0IHtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGNvbnN1bWVkIHRoZSBldmVudCwgYnV0IHNob3VsZCBub3QgYmUgcmVtb3ZlZCBmcm9tIHRoZSBjYWxsYmFja3MgbGlzdFxuICAgKi9cbiAgQ29uc3VtZWQsXG4gIC8qKlxuICAgKiBDYWxsYmFjayBkaWQgbm90IGNvbnN1bWUgdGhlIGV2ZW50LCBzbyBpdCBzaG91bGQgYmUgcGFzc2VkIHRvIHRoZSBuZXh0IGNhbGxiYWNrXG4gICAqL1xuICBOb3RDb25zdW1lZCxcbiAgLyoqXG4gICAqIENhbGxiYWNrIGNvbnN1bWVkIHRoZSBldmVudCwgYW5kIHNob3VsZCBiZSByZW1vdmVkIGZyb20gdGhlIGNhbGxiYWNrcyBsaXN0XG4gICAqL1xuICBGaW5pc2hlZCxcbn1cblxudHlwZSBFdmVudENvbnN1bWVyQ2FsbGJhY2sgPSAoZXZlbnQ6IEV2ZW50IHwgbnVsbCkgPT4gRXZlbnRDb25zdW1lclJlc3VsdDtcblxuZXhwb3J0IGludGVyZmFjZSBFdmVudHNDb25zdW1lck9wdGlvbnMge1xuICAvKipcbiAgICogQ2FsbGJhY2sgaW52b2tlZCBhZnRlciBhbiBldmVudCBoYXMgYmVlbiBjb25zdW1lZC4gQ29uc3VtZXJzIHN1Y2ggYXMgdGhlXG4gICAqIGRldGVybWluaXN0aWMgd29ya2Zsb3cgY2xvY2sgbXVzdCBub3Qgb2JzZXJ2ZSBldmVudHMgdGhhdCBhcmUgbWVyZWx5XG4gICAqIGluc3BlY3RlZCB3aGlsZSB3YWl0aW5nIGZvciB1c2VyIGNvZGUgdG8gc3Vic2NyaWJlIHRvIHRoZSBuZXh0IG9wZXJhdGlvbi5cbiAgICovXG4gIG9uQ29uc3VtZWRFdmVudD86IChldmVudDogRXZlbnQpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBpbnZva2VkIHdoZW4gYSBub24tbnVsbCBldmVudCBjYW5ub3QgYmUgY29uc3VtZWQgYnkgYW55IHJlZ2lzdGVyZWRcbiAgICogY2FsbGJhY2ssIGluZGljYXRpbmcgYW4gb3JwaGFuZWQgb3IgaW52YWxpZCBldmVudCBpbiB0aGUgZXZlbnQgbG9nLiBUaGVcbiAgICogY2hlY2sgaXMgZGVmZXJyZWQgdW50aWwgYWZ0ZXIgdGhlIHByb21pc2UgcXVldWUgaGFzIGRyYWluZWQsIGVuc3VyaW5nIHRoYXRcbiAgICogYW55IHBlbmRpbmcgYXN5bmMgd29yayAoZS5nLiwgZGVzZXJpYWxpemF0aW9uL2RlY3J5cHRpb24pIGNvbXBsZXRlcyBhbmRcbiAgICogZG93bnN0cmVhbSBzdWJzY3JpYmUoKSBjYWxscyBoYXZlIGEgY2hhbmNlIHRvIGNhbmNlbCB0aGUgY2hlY2sgZmlyc3QuXG4gICAqL1xuICBvblVuY29uc3VtZWRFdmVudDogKGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGN1cnJlbnQgcHJvbWlzZSBxdWV1ZS4gVGhlIHVuY29uc3VtZWQgZXZlbnQgY2hlY2sgaXMgY2hhaW5lZFxuICAgKiBvbnRvIHRoaXMgcXVldWUgc28gaXQgb25seSBmaXJlcyBhZnRlciBhbGwgcGVuZGluZyBhc3luYyB3b3JrIChlLmcuLFxuICAgKiBkZXNlcmlhbGl6YXRpb24pIGhhcyBjb21wbGV0ZWQuIFRoaXMgcHJldmVudHMgZmFsc2UgcG9zaXRpdmVzIHdoZW4gYXN5bmNcbiAgICogZGVzZXJpYWxpemF0aW9uIGRlbGF5cyB0aGUgcmVzb2x2ZSgpIHRoYXQgdHJpZ2dlcnMgdGhlIG5leHQgc3Vic2NyaWJlKCkuXG4gICAqL1xuICBnZXRQcm9taXNlUXVldWU6ICgpID0+IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBjbGFzcyBFdmVudHNDb25zdW1lciB7XG4gIGV2ZW50SW5kZXg6IG51bWJlcjtcbiAgcmVhZG9ubHkgZXZlbnRzOiBFdmVudFtdID0gW107XG4gIHJlYWRvbmx5IGNhbGxiYWNrczogRXZlbnRDb25zdW1lckNhbGxiYWNrW10gPSBbXTtcbiAgcHJpdmF0ZSBvbkNvbnN1bWVkRXZlbnQ/OiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkO1xuICBwcml2YXRlIG9uVW5jb25zdW1lZEV2ZW50OiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkO1xuICBwcml2YXRlIGdldFByb21pc2VRdWV1ZTogKCkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcHJpdmF0ZSBwZW5kaW5nVW5jb25zdW1lZENoZWNrOiBQcm9taXNlPHZvaWQ+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgcGVuZGluZ1VuY29uc3VtZWRUaW1lb3V0OiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHVuY29uc3VtZWRDaGVja1ZlcnNpb24gPSAwO1xuXG4gIGNvbnN0cnVjdG9yKGV2ZW50czogRXZlbnRbXSwgb3B0aW9uczogRXZlbnRzQ29uc3VtZXJPcHRpb25zKSB7XG4gICAgdGhpcy5ldmVudHMgPSBldmVudHM7XG4gICAgdGhpcy5ldmVudEluZGV4ID0gMDtcbiAgICB0aGlzLm9uQ29uc3VtZWRFdmVudCA9IG9wdGlvbnMub25Db25zdW1lZEV2ZW50O1xuICAgIHRoaXMub25VbmNvbnN1bWVkRXZlbnQgPSBvcHRpb25zLm9uVW5jb25zdW1lZEV2ZW50O1xuICAgIHRoaXMuZ2V0UHJvbWlzZVF1ZXVlID0gb3B0aW9ucy5nZXRQcm9taXNlUXVldWU7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXJzIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVyIGFuIGV2ZW50IGhhcyBiZWVuIGNvbnN1bWVkXG4gICAqIGJ5IGEgZGlmZmVyZW50IGNhbGxiYWNrLiBUaGUgY2FsbGJhY2sgY2FuIHJldHVybjpcbiAgICogIC0gYEV2ZW50Q29uc3VtZXJSZXN1bHQuQ29uc3VtZWRgIHRoZSBldmVudCBpcyBjb25zaWRlcmVkIGNvbnN1bWVkIGFuZCB3aWxsIG5vdCBiZSBwYXNzZWQgdG8gYW55IG90aGVyIGNhbGxiYWNrLCBidXQgdGhlIGNhbGxiYWNrIHdpbGwgcmVtYWluIGluIHRoZSBjYWxsYmFja3MgbGlzdFxuICAgKiAgLSBgRXZlbnRDb25zdW1lclJlc3VsdC5Ob3RDb25zdW1lZGAgdGhlIGV2ZW50IGlzIHBhc3NlZCB0byB0aGUgbmV4dCBjYWxsYmFja1xuICAgKiAgLSBgRXZlbnRDb25zdW1lclJlc3VsdC5GaW5pc2hlZGAgdGhlIGV2ZW50IGlzIGNvbnNpZGVyZWQgY29uc3VtZWQgYW5kIHRoZSBjYWxsYmFjayBpcyByZW1vdmVkIGZyb20gdGhlIGNhbGxiYWNrcyBsaXN0XG4gICAqXG4gICAqIEBwYXJhbSBmbiAtIFRoZSBjYWxsYmFjayBmdW5jdGlvbiB0byByZWdpc3Rlci5cbiAgICovXG4gIHN1YnNjcmliZShmbjogRXZlbnRDb25zdW1lckNhbGxiYWNrKSB7XG4gICAgdGhpcy5jYWxsYmFja3MucHVzaChmbik7XG4gICAgLy8gQ2FuY2VsIGFueSBwZW5kaW5nIHVuY29uc3VtZWQgY2hlY2sgc2luY2UgYSBuZXcgY2FsbGJhY2sgbWF5IGNvbnN1bWUgdGhlIGV2ZW50LlxuICAgIC8vIEluY3JlbWVudGluZyB0aGUgdmVyc2lvbiBjYXVzZXMgYW55IGluLWZsaWdodCBwcm9taXNlIGNoYWluIGNoZWNrIHRvIG5vLW9wLlxuICAgIC8vIEFsc28gY2xlYXIgdGhlIHBlbmRpbmcgc2V0VGltZW91dCBpZiBpdCBoYXNuJ3QgZmlyZWQgeWV0LlxuICAgIGlmICh0aGlzLnBlbmRpbmdVbmNvbnN1bWVkQ2hlY2sgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudW5jb25zdW1lZENoZWNrVmVyc2lvbisrO1xuICAgICAgdGhpcy5wZW5kaW5nVW5jb25zdW1lZENoZWNrID0gbnVsbDtcbiAgICAgIGlmICh0aGlzLnBlbmRpbmdVbmNvbnN1bWVkVGltZW91dCAhPT0gbnVsbCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5wZW5kaW5nVW5jb25zdW1lZFRpbWVvdXQpO1xuICAgICAgICB0aGlzLnBlbmRpbmdVbmNvbnN1bWVkVGltZW91dCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIHByb2Nlc3MubmV4dFRpY2sodGhpcy5jb25zdW1lKTtcbiAgfVxuXG4gIHByaXZhdGUgbm90aWZ5Q29uc3VtZWRFdmVudChldmVudDogRXZlbnQpIHtcbiAgICBpZiAoIXRoaXMub25Db25zdW1lZEV2ZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICB0aGlzLm9uQ29uc3VtZWRFdmVudChldmVudCk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGV2ZW50c0xvZ2dlci5lcnJvcignb25Db25zdW1lZEV2ZW50IGNhbGxiYWNrIHRocmV3IGFuIGVycm9yJywge1xuICAgICAgICBlcnJvcixcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY29uc3VtZSA9ICgpID0+IHtcbiAgICAvLyBEcmFpbiBjb25zZWN1dGl2ZWx5IGNvbnN1bWFibGUgZXZlbnRzIHN5bmNocm9ub3VzbHkgd2l0aGluIGEgc2luZ2xlXG4gICAgLy8gcGFzcyBpbnN0ZWFkIG9mIHBheWluZyBvbmUgYHByb2Nlc3MubmV4dFRpY2tgIHBlciBjb25zdW1lZCBldmVudC5cbiAgICAvL1xuICAgIC8vIFdoeSB0aGlzIGlzIHNhZmU6IGEgY2FsbGJhY2sgb25seSBjb25zdW1lcyBhbiBldmVudCB1c2luZyBhIGNvbnN1bWVyXG4gICAgLy8gdGhhdCBpcyBBTFJFQURZIHJlZ2lzdGVyZWQgKGUuZy4gYSBsb25nLWxpdmVkIHN0ZXAgY29uc3VtZXIgd2Fsa2luZ1xuICAgIC8vIGBzdGVwX2NyZWF0ZWRgIOKGkiBgc3RlcF9zdGFydGVkYCDihpIgYHN0ZXBfY29tcGxldGVkYCwgb3IgdGhlIHN0cnVjdHVyYWxcbiAgICAvLyBsaWZlY3ljbGUgY29uc3VtZXIpLiBOZXcgY29uc3VtZXJzIGFyZSBvbmx5IGV2ZXIgcmVnaXN0ZXJlZCBieSB3b3JrZmxvd1xuICAgIC8vIFZNIGJvZHkgY29kZSB0aGF0IHJ1bnMgYXN5bmNocm9ub3VzbHkgb2ZmIGBjdHgucHJvbWlzZVF1ZXVlYCBhZnRlciBhXG4gICAgLy8gZGVsaXZlcnkgYHJlc29sdmUoKWA7IG5vbmUgb2YgdGhlIGNhbGxiYWNrcyBoZXJlIGNhbGwgYHN1YnNjcmliZSgpYFxuICAgIC8vIHN5bmNocm9ub3VzbHkuIFNvIHdpdGhpbiBvbmUgcGFzcyBgdGhpcy5jYWxsYmFja3NgIGlzIG11dGF0ZWQgb25seSBieVxuICAgIC8vIHRoaXMgbG9vcCAodGhlIGBGaW5pc2hlZGAgc3BsaWNlKSwgYW5kIHRoZSBuZXh0IGV2ZW50J3MgY29uc3VtZXIgaXNcbiAgICAvLyBlaXRoZXIgYWxyZWFkeSBwcmVzZW50IChhZHZhbmNlIG5vdykgb3Igbm90IHlldCByZWdpc3RlcmVkIOKAlCBpbiB3aGljaFxuICAgIC8vIGNhc2Ugbm8gY2FsbGJhY2sgY29uc3VtZXMgdGhlIGV2ZW50IGFuZCB3ZSBmYWxsIHRocm91Z2ggdG8gdGhlXG4gICAgLy8gY3Jvc3MtVk0tc2FmZSBkZWZlcnJlZCB1bmNvbnN1bWVkLWV2ZW50IGNoZWNrIGJlbG93LCBleGFjdGx5IGFzIGJlZm9yZS5cbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgY29uc3QgY3VycmVudEV2ZW50ID0gdGhpcy5ldmVudHNbdGhpcy5ldmVudEluZGV4XSA/PyBudWxsO1xuICAgICAgaWYgKCF0aGlzLmNvbnN1bWVPbmUoY3VycmVudEV2ZW50KSkge1xuICAgICAgICAvLyBObyBjYWxsYmFjayBjb25zdW1lZCB0aGUgY3VycmVudCBldmVudDsgaGFuZGxlIHRoZSB0ZXJtaW5hbCBjYXNlLlxuICAgICAgICB0aGlzLmhhbmRsZVVuY29uc3VtZWQoY3VycmVudEV2ZW50KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgLy8gQSByZWFsIGV2ZW50IHdhcyBjb25zdW1lZCDigJQgYWR2YW5jZSB0byB0aGUgbmV4dCBpbiB0aGUgc2FtZSBwYXNzLiBBXG4gICAgICAvLyBjb25zdW1lZCBgbnVsbGAgc2VudGluZWwgbmV2ZXIgcmV0dXJucyB0cnVlIChzZWUgY29uc3VtZU9uZSksIHNvIHRoZVxuICAgICAgLy8gc3luY2hyb25vdXMgZHJhaW4gY2FuJ3Qgc3BpbiBwYXN0IHRoZSBlbmQgb2YgdGhlIGxvZy5cbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIE9mZmVyIGBjdXJyZW50RXZlbnRgIHRvIGVhY2ggcmVnaXN0ZXJlZCBjYWxsYmFjayBpbiB0dXJuLiBSZXR1cm5zIHRydWVcbiAgICogd2hlbiBhIGNhbGxiYWNrIGNvbnN1bWVkIGEgcmVhbCAobm9uLW51bGwpIGV2ZW50IGFuZCB0aGUgZHJhaW4gc2hvdWxkXG4gICAqIGFkdmFuY2UgdG8gdGhlIG5leHQgZXZlbnQgaW4gdGhlIHNhbWUgc3luY2hyb25vdXMgcGFzczsgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqIChub3RoaW5nIGNvbnN1bWVkIGl0LCBvciB0aGUgY29uc3VtZWQgZXZlbnQgd2FzIHRoZSBlbmQtb2YtZXZlbnRzXG4gICAqIHNlbnRpbmVsKS5cbiAgICovXG4gIHByaXZhdGUgY29uc3VtZU9uZShjdXJyZW50RXZlbnQ6IEV2ZW50IHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jYWxsYmFja3MubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5jYWxsYmFja3NbaV07XG4gICAgICBsZXQgaGFuZGxlZCA9IEV2ZW50Q29uc3VtZXJSZXN1bHQuTm90Q29uc3VtZWQ7XG4gICAgICB0cnkge1xuICAgICAgICBoYW5kbGVkID0gY2FsbGJhY2soY3VycmVudEV2ZW50KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGV2ZW50c0xvZ2dlci5lcnJvcignRXZlbnRDb25zdW1lciBjYWxsYmFjayB0aHJldyBhbiBlcnJvcicsIHsgZXJyb3IgfSk7XG4gICAgICB9XG4gICAgICBpZiAoXG4gICAgICAgIGhhbmRsZWQgIT09IEV2ZW50Q29uc3VtZXJSZXN1bHQuQ29uc3VtZWQgJiZcbiAgICAgICAgaGFuZGxlZCAhPT0gRXZlbnRDb25zdW1lclJlc3VsdC5GaW5pc2hlZFxuICAgICAgKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKGN1cnJlbnRFdmVudCAhPT0gbnVsbCkge1xuICAgICAgICB0aGlzLm5vdGlmeUNvbnN1bWVkRXZlbnQoY3VycmVudEV2ZW50KTtcbiAgICAgIH1cbiAgICAgIC8vIGNvbnN1bWVyIGhhbmRsZWQgdGhpcyBldmVudCwgc28gaW5jcmVhc2UgdGhlIGV2ZW50IGluZGV4XG4gICAgICB0aGlzLmV2ZW50SW5kZXgrKztcbiAgICAgIC8vIHJlbW92ZSB0aGUgY2FsbGJhY2sgaWYgaXQgaGFzIGZpbmlzaGVkXG4gICAgICBpZiAoaGFuZGxlZCA9PT0gRXZlbnRDb25zdW1lclJlc3VsdC5GaW5pc2hlZCkge1xuICAgICAgICB0aGlzLmNhbGxiYWNrcy5zcGxpY2UoaSwgMSk7XG4gICAgICB9XG4gICAgICAvLyBDb250aW51ZSBkcmFpbmluZyBvbmx5IGZvciByZWFsIGV2ZW50cy4gUmVhbCBjb25zdW1lcnMgcmV0dXJuXG4gICAgICAvLyBOb3RDb25zdW1lZCBmb3IgdGhlIGBudWxsYCBzZW50aW5lbCwgYnV0IGd1YXJkIGFnYWluc3QgYSBwYXRob2xvZ2ljYWxcbiAgICAgIC8vIGNhbGxiYWNrIGNvbnN1bWluZyBpdCBzbyB0aGUgZHJhaW4gbmV2ZXIgc3BpbnMgcGFzdCBlbmQtb2YtbG9nLlxuICAgICAgcmV0dXJuIGN1cnJlbnRFdmVudCAhPT0gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVVbmNvbnN1bWVkKGN1cnJlbnRFdmVudDogRXZlbnQgfCBudWxsKSB7XG4gICAgLy8gQWxsIGNhbGxiYWNrcyByZXR1cm5lZCBOb3RDb25zdW1lZCBmb3IgdGhlIGN1cnJlbnQgZXZlbnQuXG4gICAgLy8gSWYgdGhlIGN1cnJlbnQgZXZlbnQgaXMgbm9uLW51bGwgKGEgcmVhbCBldmVudCwgbm90IGVuZC1vZi1ldmVudHMpLFxuICAgIC8vIHNjaGVkdWxlIGEgZGVmZXJyZWQgY2hlY2suIFdlIGNoYWluIG9udG8gdGhlIHByb21pc2VRdWV1ZSBzbyB0aGF0IGFueVxuICAgIC8vIHBlbmRpbmcgYXN5bmMgd29yayAoZS5nLiwgZGVzZXJpYWxpemF0aW9uL2RlY3J5cHRpb24gdGhhdCB0cmlnZ2Vyc1xuICAgIC8vIHJlc29sdmUoKSDihpIgdXNlciBjb2RlIOKGkiBzdWJzY3JpYmUoKSkgY29tcGxldGVzIGZpcnN0LiBJZiB0aGUgZXZlbnRcbiAgICAvLyBpcyBzdGlsbCB1bmNvbnN1bWVkIGFmdGVyIHRoZSBxdWV1ZSBkcmFpbnMsIGl0J3MgdHJ1bHkgb3JwaGFuZWQuXG4gICAgaWYgKGN1cnJlbnRFdmVudCAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgY2hlY2tWZXJzaW9uID0gKyt0aGlzLnVuY29uc3VtZWRDaGVja1ZlcnNpb247XG4gICAgICB0aGlzLnBlbmRpbmdVbmNvbnN1bWVkQ2hlY2sgPSB0aGlzLmdldFByb21pc2VRdWV1ZSgpXG4gICAgICAgIC50aGVuKFxuICAgICAgICAgIC8vIFlpZWxkIG9uY2UgYWZ0ZXIgdGhlIGZpcnN0IHF1ZXVlIGRyYWluIHNvIHByb21pc2UgY2hhaW5zIHJlc3VtZWQgYnlcbiAgICAgICAgICAvLyB0aGF0IGRyYWluIGNhbiBydW4gYWNyb3NzIHRoZSBWTSBib3VuZGFyeSBhbmQgYXBwZW5kIGFueSBmb2xsb3ctdXBcbiAgICAgICAgICAvLyBhc3luYyB3b3JrIChmb3IgZXhhbXBsZTogc3RlcF9jb21wbGV0ZWQgcmVzb2x2ZXMgLT4gZm9yLWF3YWl0IGxvb3BcbiAgICAgICAgICAvLyByZXN1bWVzIC0+IHRoZSBuZXh0IGhvb2sgcGF5bG9hZCBzdGFydHMgaHlkcmF0aW5nKS5cbiAgICAgICAgICAoKSA9PiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCAwKSlcbiAgICAgICAgKVxuICAgICAgICAudGhlbigoKSA9PiB0aGlzLmdldFByb21pc2VRdWV1ZSgpKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgLy8gVXNlIGEgZGVsYXllZCBzZXRUaW1lb3V0IGFmdGVyIHRoZSBxdWV1ZSBkcmFpbnMuIFRoZSBkZWxheSBtdXN0IGJlXG4gICAgICAgICAgLy8gbG9uZyBlbm91Z2ggZm9yIHByb21pc2UgY2hhaW5zIHRvIHByb3BhZ2F0ZSBhY3Jvc3MgdGhlIFZNIGJvdW5kYXJ5XG4gICAgICAgICAgLy8gKGZyb20gcmVzb2x2ZSgpIGluIHRoZSBob3N0IGNvbnRleHQgdGhyb3VnaCB0byB0aGUgd29ya2Zsb3cgY29kZVxuICAgICAgICAgIC8vIGNhbGxpbmcgc3Vic2NyaWJlKCkgaW4gdGhlIFZNIGNvbnRleHQpLiBOb2RlLmpzIGRvZXMgbm90IGd1YXJhbnRlZVxuICAgICAgICAgIC8vIHRoYXQgc2V0VGltZW91dCgwKSBmaXJlcyBhZnRlciBhbGwgY3Jvc3MtY29udGV4dCBtaWNyb3Rhc2tzIHNldHRsZSxcbiAgICAgICAgICAvLyBzbyB3ZSB1c2UgYSBzbWFsbCBidXQgbm9uLXplcm8gZGVsYXkuIEFueSBzdWJzY3JpYmUoKSBjYWxsIHRoYXRcbiAgICAgICAgICAvLyBhcnJpdmVzIGR1cmluZyB0aGlzIHdpbmRvdyB3aWxsIGNhbmNlbCB0aGUgY2hlY2sgdmlhIHZlcnNpb25cbiAgICAgICAgICAvLyBpbnZhbGlkYXRpb24gKyBjbGVhclRpbWVvdXQuXG4gICAgICAgICAgdGhpcy5wZW5kaW5nVW5jb25zdW1lZFRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ1VuY29uc3VtZWRUaW1lb3V0ID0gbnVsbDtcbiAgICAgICAgICAgIGlmICh0aGlzLnVuY29uc3VtZWRDaGVja1ZlcnNpb24gPT09IGNoZWNrVmVyc2lvbikge1xuICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdVbmNvbnN1bWVkQ2hlY2sgPSBudWxsO1xuICAgICAgICAgICAgICB0aGlzLm9uVW5jb25zdW1lZEV2ZW50KGN1cnJlbnRFdmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgZ2V0RGVmZXJyZWRDaGVja0RlbGF5TXMoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -7,17 +7,17 @@ import { type PromiseWithResolvers } from '@workflow/utils';
|
|
|
7
7
|
* to acquire a reader/writer. For that reason we use polling instead of a
|
|
8
8
|
* fully event-driven approach here.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* is
|
|
10
|
+
* 10ms is chosen so the polling tick almost never sits on the critical path:
|
|
11
|
+
* the V2 step-executor's `opsSettled` race waits for this state to resolve
|
|
12
|
+
* after each step body returns, so a coarser interval (the previous 100ms)
|
|
13
|
+
* adds visible per-step latency to streaming workflows. With a uniformly
|
|
14
|
+
* distributed offset between step return and the next tick, the expected
|
|
15
|
+
* wait is half the interval — so 10ms means ~5ms average wait per step
|
|
16
|
+
* instead of ~50ms. The per-tick work is `writable.locked` plus a
|
|
17
|
+
* `getWriter()`/`releaseLock()` probe, both microsecond-scale; 10× more
|
|
18
|
+
* ticks during a stream's lifetime is not measurable in practice.
|
|
19
19
|
*/
|
|
20
|
-
export declare const LOCK_POLL_INTERVAL_MS =
|
|
20
|
+
export declare const LOCK_POLL_INTERVAL_MS = 10;
|
|
21
21
|
/**
|
|
22
22
|
* State tracker for flushable stream operations.
|
|
23
23
|
* Resolves when either:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flushable-stream.d.ts","sourceRoot":"","sources":["../src/flushable-stream.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"flushable-stream.d.ts","sourceRoot":"","sources":["../src/flushable-stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,oBAAoB,EAAiB,MAAM,iBAAiB,CAAC;AAG3E;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAC;AASxC;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB,CAAC,IAAI,CAAC;IACtE,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAC;IACnB,mDAAmD;IACnD,YAAY,EAAE,OAAO,CAAC;IACtB,gEAAgE;IAChE,WAAW,EAAE,OAAO,CAAC;IACrB,wDAAwD;IACxD,uBAAuB,CAAC,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;IACzD,wDAAwD;IACxD,uBAAuB,CAAC,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;CAC1D;AAED,wBAAgB,oBAAoB,IAAI,oBAAoB,CAa3D;AA2DD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,oBAAoB,GAC1B,IAAI,CAwBN;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,oBAAoB,GAC1B,IAAI,CAwBN;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAoEf"}
|
package/dist/flushable-stream.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { WorkflowRuntimeError } from '@workflow/errors';
|
|
1
2
|
import { withResolvers } from '@workflow/utils';
|
|
3
|
+
import { envNumber } from '@workflow/world';
|
|
2
4
|
/**
|
|
3
5
|
* Polling interval (in ms) for lock release detection.
|
|
4
6
|
*
|
|
@@ -7,24 +9,33 @@ import { withResolvers } from '@workflow/utils';
|
|
|
7
9
|
* to acquire a reader/writer. For that reason we use polling instead of a
|
|
8
10
|
* fully event-driven approach here.
|
|
9
11
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* is
|
|
12
|
+
* 10ms is chosen so the polling tick almost never sits on the critical path:
|
|
13
|
+
* the V2 step-executor's `opsSettled` race waits for this state to resolve
|
|
14
|
+
* after each step body returns, so a coarser interval (the previous 100ms)
|
|
15
|
+
* adds visible per-step latency to streaming workflows. With a uniformly
|
|
16
|
+
* distributed offset between step return and the next tick, the expected
|
|
17
|
+
* wait is half the interval — so 10ms means ~5ms average wait per step
|
|
18
|
+
* instead of ~50ms. The per-tick work is `writable.locked` plus a
|
|
19
|
+
* `getWriter()`/`releaseLock()` probe, both microsecond-scale; 10× more
|
|
20
|
+
* ticks during a stream's lifetime is not measurable in practice.
|
|
19
21
|
*/
|
|
20
|
-
export const LOCK_POLL_INTERVAL_MS =
|
|
22
|
+
export const LOCK_POLL_INTERVAL_MS = 10;
|
|
23
|
+
/** Effective lock-poll interval. Override: `WORKFLOW_LOCK_POLL_INTERVAL_MS`. */
|
|
24
|
+
const getLockPollIntervalMs = () => envNumber('WORKFLOW_LOCK_POLL_INTERVAL_MS', LOCK_POLL_INTERVAL_MS, {
|
|
25
|
+
integer: true,
|
|
26
|
+
min: 1,
|
|
27
|
+
});
|
|
21
28
|
export function createFlushableState() {
|
|
22
|
-
|
|
29
|
+
const state = {
|
|
23
30
|
...withResolvers(),
|
|
24
31
|
pendingOps: 0,
|
|
25
32
|
doneResolved: false,
|
|
26
33
|
streamEnded: false,
|
|
27
34
|
};
|
|
35
|
+
// The runtime awaits this promise after user code returns. Observe early
|
|
36
|
+
// stream failures now so they do not become unhandled rejections first.
|
|
37
|
+
state.promise.catch(() => { });
|
|
38
|
+
return state;
|
|
28
39
|
}
|
|
29
40
|
/**
|
|
30
41
|
* Checks if a WritableStream is unlocked (user released lock) vs closed.
|
|
@@ -110,7 +121,7 @@ export function pollWritableLock(writable, state) {
|
|
|
110
121
|
clearInterval(intervalId);
|
|
111
122
|
state.writablePollingInterval = undefined;
|
|
112
123
|
}
|
|
113
|
-
},
|
|
124
|
+
}, getLockPollIntervalMs());
|
|
114
125
|
state.writablePollingInterval = intervalId;
|
|
115
126
|
}
|
|
116
127
|
/**
|
|
@@ -142,7 +153,7 @@ export function pollReadableLock(readable, state) {
|
|
|
142
153
|
clearInterval(intervalId);
|
|
143
154
|
state.readablePollingInterval = undefined;
|
|
144
155
|
}
|
|
145
|
-
},
|
|
156
|
+
}, getLockPollIntervalMs());
|
|
146
157
|
state.readablePollingInterval = intervalId;
|
|
147
158
|
}
|
|
148
159
|
/**
|
|
@@ -171,7 +182,7 @@ export async function flushablePipe(source, sink, state) {
|
|
|
171
182
|
const readResult = await Promise.race([
|
|
172
183
|
reader.read(),
|
|
173
184
|
writer.closed.then(() => {
|
|
174
|
-
throw new
|
|
185
|
+
throw new WorkflowRuntimeError('Writable stream closed prematurely');
|
|
175
186
|
}),
|
|
176
187
|
]);
|
|
177
188
|
// Check if stream has ended (e.g., due to error in another path) before processing
|
|
@@ -223,4 +234,4 @@ export async function flushablePipe(source, sink, state) {
|
|
|
223
234
|
writer.releaseLock();
|
|
224
235
|
}
|
|
225
236
|
}
|
|
226
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx1c2hhYmxlLXN0cmVhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mbHVzaGFibGUtc3RyZWFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBNkIsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFDO0FBNkJ6QyxNQUFNLFVBQVUsb0JBQW9CO0lBQ2xDLE9BQU87UUFDTCxHQUFHLGFBQWEsRUFBUTtRQUN4QixVQUFVLEVBQUUsQ0FBQztRQUNiLFlBQVksRUFBRSxLQUFLO1FBQ25CLFdBQVcsRUFBRSxLQUFLO0tBQ25CLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLDJCQUEyQixDQUFDLFFBQXdCO0lBQzNELElBQUksUUFBUSxDQUFDLE1BQU07UUFBRSxPQUFPLEtBQUssQ0FBQztJQUVsQyxJQUFJLE1BQStDLENBQUM7SUFDcEQsSUFBSSxDQUFDO1FBQ0gseUVBQXlFO1FBQ3pFLE1BQU0sR0FBRyxRQUFRLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLHNFQUFzRTtRQUN0RSxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxJQUFJLENBQUM7UUFDSCxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNQLG1FQUFtRTtRQUNuRSxxRUFBcUU7UUFDckUsZ0VBQWdFO1FBQ2hFLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUywyQkFBMkIsQ0FBQyxRQUF3QjtJQUMzRCxJQUFJLFFBQVEsQ0FBQyxNQUFNO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFFbEMsSUFBSSxNQUErQyxDQUFDO0lB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QztJQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDYixLQUFLLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN6QixZQUFZLEdBQUcsR0FBRyxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDeEIsS0FBSyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7WUFDMUIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNwQixDQUFDO1FBQ0QsK0RBQStEO1FBQy9ELDRFQUE0RTtRQUM1RSx1RUFBdUU7UUFDdkUsd0VBQXdFO1FBQ3hFLDZDQUE2QztRQUM3QyxNQUFNLEdBQUcsQ0FBQztJQUNaLENBQUM7WUFBUyxDQUFDO1FBQ1QsMEVBQTBFO1FBQzFFLDRFQUE0RTtRQUM1RSw4RUFBOEU7UUFDOUUsdURBQXVEO1FBQ3ZELE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIFByb21pc2VXaXRoUmVzb2x2ZXJzLCB3aXRoUmVzb2x2ZXJzIH0gZnJvbSAnQHdvcmtmbG93L3V0aWxzJztcblxuLyoqXG4gKiBQb2xsaW5nIGludGVydmFsIChpbiBtcykgZm9yIGxvY2sgcmVsZWFzZSBkZXRlY3Rpb24uXG4gKlxuICogVGhlIFdlYiBTdHJlYW1zIEFQSSBkb2VzIG5vdCBleHBvc2UgYW4gZXZlbnQgZm9yIFwibG9jayByZWxlYXNlZCBidXQgc3RyZWFtXG4gKiBzdGlsbCBvcGVuXCI7IHdlIGNhbiBvbmx5IGRpc3Rpbmd1aXNoIHRoYXQgc3RhdGUgYnkgcGVyaW9kaWNhbGx5IGF0dGVtcHRpbmdcbiAqIHRvIGFjcXVpcmUgYSByZWFkZXIvd3JpdGVyLiBGb3IgdGhhdCByZWFzb24gd2UgdXNlIHBvbGxpbmcgaW5zdGVhZCBvZiBhXG4gKiBmdWxseSBldmVudC1kcml2ZW4gYXBwcm9hY2ggaGVyZS5cbiAqXG4gKiAxMDBtcyBpcyBhIGNvbXByb21pc2UgYmV0d2VlbjpcbiAqIC0gTGF0ZW5jeTogaG93IHF1aWNrbHkgd2Ugbm90aWNlIHRoYXQgdGhlIHVzZXIgaGFzIHJlbGVhc2VkIHRoZWlyIGxvY2ssIGFuZFxuICogLSBDb3N0L0NQVSB1c2FnZTogaG93IG9mdGVuIHRpbWVycyBmaXJlLCBlc3BlY2lhbGx5IHdpdGggbWFueSBjb25jdXJyZW50XG4gKiAgIHN0cmVhbXMgb3IgaW4gc2VydmVybGVzcyBlbnZpcm9ubWVudHMgd2hlcmUgYmlsbGVkIHRpbWUgbWF0dGVycy5cbiAqXG4gKiBUaGlzIHZhbHVlIHNob3VsZCBvbmx5IGJlIGNoYW5nZWQgd2l0aCBjYXJlLCBhcyBkZWNyZWFzaW5nIGl0IHdpbGxcbiAqIGluY3JlYXNlIHBvbGxpbmcgZnJlcXVlbmN5IChhbmQgdGh1cyBwb3RlbnRpYWwgY29zdCksIHdoaWxlIGluY3JlYXNpbmcgaXRcbiAqIHdpbGwgYWRkIHdvcnN0LWNhc2UgZGVsYXkgYmVmb3JlIHRoZSBgZG9uZWAgcHJvbWlzZSByZXNvbHZlcyBhZnRlciBhIGxvY2tcbiAqIGlzIHJlbGVhc2VkLlxuICovXG5leHBvcnQgY29uc3QgTE9DS19QT0xMX0lOVEVSVkFMX01TID0gMTAwO1xuXG4vKipcbiAqIFN0YXRlIHRyYWNrZXIgZm9yIGZsdXNoYWJsZSBzdHJlYW0gb3BlcmF0aW9ucy5cbiAqIFJlc29sdmVzIHdoZW4gZWl0aGVyOlxuICogMS4gU3RyZWFtIGNvbXBsZXRlcyAoY2xvc2UvZXJyb3IpLCBPUlxuICogMi4gTG9jayBpcyByZWxlYXNlZCBBTkQgYWxsIHBlbmRpbmcgb3BlcmF0aW9ucyBhcmUgZmx1c2hlZFxuICpcbiAqIE5vdGU6IGBkb25lUmVzb2x2ZWRgIGFuZCBgc3RyZWFtRW5kZWRgIGFyZSBzZXBhcmF0ZTpcbiAqIC0gYGRvbmVSZXNvbHZlZGA6IFRoZSBgZG9uZWAgcHJvbWlzZSBoYXMgYmVlbiByZXNvbHZlZCAoc3RlcCBjYW4gY29tcGxldGUpXG4gKiAtIGBzdHJlYW1FbmRlZGA6IFRoZSB1bmRlcmx5aW5nIHN0cmVhbSBoYXMgYWN0dWFsbHkgY2xvc2VkL2Vycm9yZWRcbiAqXG4gKiBPbmNlIGBkb25lUmVzb2x2ZWRgIGlzIHNldCB0byB0cnVlLCB0aGUgYGRvbmVgIHByb21pc2Ugd2lsbCBub3QgcmVzb2x2ZVxuICogYWdhaW4uIFJlLWFjcXVpcmluZyBsb2NrcyBhZnRlciByZWxlYXNlIGlzIG5vdCBzdXBwb3J0ZWQgYXMgYSB3YXkgdG9cbiAqIHRyaWdnZXIgYWRkaXRpb25hbCBjb21wbGV0aW9uIHNpZ25hbGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbHVzaGFibGVTdHJlYW1TdGF0ZSBleHRlbmRzIFByb21pc2VXaXRoUmVzb2x2ZXJzPHZvaWQ+IHtcbiAgLyoqIE51bWJlciBvZiB3cml0ZSBvcGVyYXRpb25zIGN1cnJlbnRseSBpbiBmbGlnaHQgdG8gdGhlIHNlcnZlciAqL1xuICBwZW5kaW5nT3BzOiBudW1iZXI7XG4gIC8qKiBXaGV0aGVyIHRoZSBgZG9uZWAgcHJvbWlzZSBoYXMgYmVlbiByZXNvbHZlZCAqL1xuICBkb25lUmVzb2x2ZWQ6IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBoYXMgYWN0dWFsbHkgY2xvc2VkL2Vycm9yZWQgKi9cbiAgc3RyZWFtRW5kZWQ6IGJvb2xlYW47XG4gIC8qKiBJbnRlcnZhbCBJRCBmb3Igd3JpdGFibGUgbG9jayBwb2xsaW5nIChpZiBhY3RpdmUpICovXG4gIHdyaXRhYmxlUG9sbGluZ0ludGVydmFsPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xuICAvKiogSW50ZXJ2YWwgSUQgZm9yIHJlYWRhYmxlIGxvY2sgcG9sbGluZyAoaWYgYWN0aXZlKSAqL1xuICByZWFkYWJsZVBvbGxpbmdJbnRlcnZhbD86IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZsdXNoYWJsZVN0YXRlKCk6IEZsdXNoYWJsZVN0cmVhbVN0YXRlIHtcbiAgcmV0dXJuIHtcbiAgICAuLi53aXRoUmVzb2x2ZXJzPHZvaWQ+KCksXG4gICAgcGVuZGluZ09wczogMCxcbiAgICBkb25lUmVzb2x2ZWQ6IGZhbHNlLFxuICAgIHN0cmVhbUVuZGVkOiBmYWxzZSxcbiAgfTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBXcml0YWJsZVN0cmVhbSBpcyB1bmxvY2tlZCAodXNlciByZWxlYXNlZCBsb2NrKSB2cyBjbG9zZWQuXG4gKiBXaGVuIGEgc3RyZWFtIGlzIGNsb3NlZCwgLmxvY2tlZCBpcyBmYWxzZSBidXQgZ2V0V3JpdGVyKCkgdGhyb3dzLlxuICogV2Ugb25seSB3YW50IHRvIHJlc29sdmUgdmlhIHBvbGxpbmcgd2hlbiB0aGUgc3RyZWFtIGlzIHVubG9ja2VkLCBub3QgY2xvc2VkLlxuICogSWYgY2xvc2VkLCB0aGUgcHVtcCB3aWxsIGhhbmRsZSByZXNvbHV0aW9uIHZpYSB0aGUgc3RyZWFtIGVuZGluZyBuYXR1cmFsbHkuXG4gKi9cbmZ1bmN0aW9uIGlzV3JpdGFibGVVbmxvY2tlZE5vdENsb3NlZCh3cml0YWJsZTogV3JpdGFibGVTdHJlYW0pOiBib29sZWFuIHtcbiAgaWYgKHdyaXRhYmxlLmxvY2tlZCkgcmV0dXJuIGZhbHNlO1xuXG4gIGxldCB3cml0ZXI6IFdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlciB8IHVuZGVmaW5lZDtcbiAgdHJ5IHtcbiAgICAvLyBUcnkgdG8gYWNxdWlyZSB3cml0ZXIgLSBpZiBzdWNjZXNzZnVsLCBzdHJlYW0gaXMgdW5sb2NrZWQgKG5vdCBjbG9zZWQpXG4gICAgd3JpdGVyID0gd3JpdGFibGUuZ2V0V3JpdGVyKCk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIGdldFdyaXRlcigpIHRocm93cyBpZiBzdHJlYW0gaXMgY2xvc2VkL2Vycm9yZWQgLSBsZXQgcHVtcCBoYW5kbGUgaXRcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB0cnkge1xuICAgIHdyaXRlci5yZWxlYXNlTG9jaygpO1xuICB9IGNhdGNoIHtcbiAgICAvLyBJZiByZWxlYXNlTG9jaygpIHRocm93cyBmb3IgYW55IHJlYXNvbiwgY29uc2VydmF0aXZlbHkgdHJlYXQgdGhlXG4gICAgLy8gc3RyZWFtIGFzIGNsb3NlZC9lcnJvcmVkIHNvIGNhbGxlcnMgZG9uJ3QgYXNzdW1lIGl0J3Mgc2FmZSB0byB1c2UuXG4gICAgLy8gVGhlIHB1bXAgd2lsbCBvYnNlcnZlIHRoZSBmYWlsdXJlIHZpYSB0aGUgc3RyZWFtJ3MgZW5kIHN0YXRlLlxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIFJlYWRhYmxlU3RyZWFtIGlzIHVubG9ja2VkICh1c2VyIHJlbGVhc2VkIGxvY2spIHZzIGNsb3NlZC5cbiAqL1xuZnVuY3Rpb24gaXNSZWFkYWJsZVVubG9ja2VkTm90Q2xvc2VkKHJlYWRhYmxlOiBSZWFkYWJsZVN0cmVhbSk6IGJvb2xlYW4ge1xuICBpZiAocmVhZGFibGUubG9ja2VkKSByZXR1cm4gZmFsc2U7XG5cbiAgbGV0IHJlYWRlcjogUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIHwgdW5kZWZpbmVkO1xuICB0cnkge1xuICAgIC8vIFRyeSB0byBhY3F1aXJlIHJlYWRlciAtIGlmIHN1Y2Nlc3NmdWwsIHN0cmVhbSBpcyB1bmxvY2tlZCAobm90IGNsb3NlZClcbiAgICByZWFkZXIgPSByZWFkYWJsZS5nZXRSZWFkZXIoKTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gZ2V0UmVhZGVyKCkgdGhyb3dzIGlmIHN0cmVhbSBpcyBjbG9zZWQvZXJyb3JlZCAtIGxldCBwdW1wIGhhbmRsZSBpdFxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIElmIHJlbGVhc2VMb2NrKCkgdGhyb3dzIGZvciBhbnkgcmVhc29uLCBjb25zZXJ2YXRpdmVseSB0cmVhdCB0aGVcbiAgICAvLyBzdHJlYW0gYXMgY2xvc2VkL2Vycm9yZWQgc28gY2FsbGVycyBkb24ndCBhc3N1bWUgaXQncyBzYWZlIHRvIHVzZS5cbiAgICAvLyBUaGUgcHVtcCB3aWxsIG9ic2VydmUgdGhlIGZhaWx1cmUgdmlhIHRoZSBzdHJlYW0ncyBlbmQgc3RhdGUuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogUG9sbHMgYSBXcml0YWJsZVN0cmVhbSB0byBjaGVjayBpZiB0aGUgdXNlciBoYXMgcmVsZWFzZWQgdGhlaXIgbG9jay5cbiAqIFJlc29sdmVzIHRoZSBkb25lIHByb21pc2Ugd2hlbiBsb2NrIGlzIHJlbGVhc2VkIGFuZCBubyBwZW5kaW5nIG9wcyByZW1haW4uXG4gKlxuICogTm90ZTogT25seSByZXNvbHZlcyBpZiBzdHJlYW0gaXMgdW5sb2NrZWQgYnV0IE5PVCBjbG9zZWQuIElmIHRoZSB1c2VyIGNsb3Nlc1xuICogdGhlIHN0cmVhbSwgdGhlIHB1bXAgd2lsbCBoYW5kbGUgcmVzb2x1dGlvbiB2aWEgdGhlIHN0cmVhbSBlbmRpbmcgbmF0dXJhbGx5LlxuICpcbiAqIFByb3RlY3Rpb246IElmIHBvbGxpbmcgaXMgYWxyZWFkeSBhY3RpdmUgb24gdGhpcyBzdGF0ZSwgdGhlIGV4aXN0aW5nIGludGVydmFsXG4gKiBpcyB1c2VkIHRvIGF2b2lkIGNyZWF0aW5nIG11bHRpcGxlIHNpbXVsdGFuZW91cyBwb2xsaW5nIG9wZXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwb2xsV3JpdGFibGVMb2NrKFxuICB3cml0YWJsZTogV3JpdGFibGVTdHJlYW0sXG4gIHN0YXRlOiBGbHVzaGFibGVTdHJlYW1TdGF0ZVxuKTogdm9pZCB7XG4gIC8vIFByZXZlbnQgbXVsdGlwbGUgc2ltdWx0YW5lb3VzIHBvbGxpbmcgb24gdGhlIHNhbWUgc3RhdGVcbiAgaWYgKHN0YXRlLndyaXRhYmxlUG9sbGluZ0ludGVydmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgIC8vIFN0b3AgcG9sbGluZyBpZiBhbHJlYWR5IHJlc29sdmVkIG9yIHN0cmVhbSBlbmRlZFxuICAgIGlmIChzdGF0ZS5kb25lUmVzb2x2ZWQgfHwgc3RhdGUuc3RyZWFtRW5kZWQpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7XG4gICAgICBzdGF0ZS53cml0YWJsZVBvbGxpbmdJbnRlcnZhbCA9IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBsb2NrIGlzIHJlbGVhc2VkIChub3QgY2xvc2VkKSBhbmQgbm8gcGVuZGluZyBvcHNcbiAgICBpZiAoaXNXcml0YWJsZVVubG9ja2VkTm90Q2xvc2VkKHdyaXRhYmxlKSAmJiBzdGF0ZS5wZW5kaW5nT3BzID09PSAwKSB7XG4gICAgICBzdGF0ZS5kb25lUmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgc3RhdGUucmVzb2x2ZSgpO1xuICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTtcbiAgICAgIHN0YXRlLndyaXRhYmxlUG9sbGluZ0ludGVydmFsID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSwgTE9DS19QT0xMX0lOVEVSVkFMX01TKTtcblxuICBzdGF0ZS53cml0YWJsZVBvbGxpbmdJbnRlcnZhbCA9IGludGVydmFsSWQ7XG59XG5cbi8qKlxuICogUG9sbHMgYSBSZWFkYWJsZVN0cmVhbSB0byBjaGVjayBpZiB0aGUgdXNlciBoYXMgcmVsZWFzZWQgdGhlaXIgbG9jay5cbiAqIFJlc29sdmVzIHRoZSBkb25lIHByb21pc2Ugd2hlbiBsb2NrIGlzIHJlbGVhc2VkIGFuZCBubyBwZW5kaW5nIG9wcyByZW1haW4uXG4gKlxuICogTm90ZTogT25seSByZXNvbHZlcyBpZiBzdHJlYW0gaXMgdW5sb2NrZWQgYnV0IE5PVCBjbG9zZWQuIElmIHRoZSB1c2VyIGNsb3Nlc1xuICogdGhlIHN0cmVhbSwgdGhlIHB1bXAgd2lsbCBoYW5kbGUgcmVzb2x1dGlvbiB2aWEgdGhlIHN0cmVhbSBlbmRpbmcgbmF0dXJhbGx5LlxuICpcbiAqIFByb3RlY3Rpb246IElmIHBvbGxpbmcgaXMgYWxyZWFkeSBhY3RpdmUgb24gdGhpcyBzdGF0ZSwgdGhlIGV4aXN0aW5nIGludGVydmFsXG4gKiBpcyB1c2VkIHRvIGF2b2lkIGNyZWF0aW5nIG11bHRpcGxlIHNpbXVsdGFuZW91cyBwb2xsaW5nIG9wZXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwb2xsUmVhZGFibGVMb2NrKFxuICByZWFkYWJsZTogUmVhZGFibGVTdHJlYW0sXG4gIHN0YXRlOiBGbHVzaGFibGVTdHJlYW1TdGF0ZVxuKTogdm9pZCB7XG4gIC8vIFByZXZlbnQgbXVsdGlwbGUgc2ltdWx0YW5lb3VzIHBvbGxpbmcgb24gdGhlIHNhbWUgc3RhdGVcbiAgaWYgKHN0YXRlLnJlYWRhYmxlUG9sbGluZ0ludGVydmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgIC8vIFN0b3AgcG9sbGluZyBpZiBhbHJlYWR5IHJlc29sdmVkIG9yIHN0cmVhbSBlbmRlZFxuICAgIGlmIChzdGF0ZS5kb25lUmVzb2x2ZWQgfHwgc3RhdGUuc3RyZWFtRW5kZWQpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7XG4gICAgICBzdGF0ZS5yZWFkYWJsZVBvbGxpbmdJbnRlcnZhbCA9IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBsb2NrIGlzIHJlbGVhc2VkIChub3QgY2xvc2VkKSBhbmQgbm8gcGVuZGluZyBvcHNcbiAgICBpZiAoaXNSZWFkYWJsZVVubG9ja2VkTm90Q2xvc2VkKHJlYWRhYmxlKSAmJiBzdGF0ZS5wZW5kaW5nT3BzID09PSAwKSB7XG4gICAgICBzdGF0ZS5kb25lUmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgc3RhdGUucmVzb2x2ZSgpO1xuICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTtcbiAgICAgIHN0YXRlLnJlYWRhYmxlUG9sbGluZ0ludGVydmFsID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSwgTE9DS19QT0xMX0lOVEVSVkFMX01TKTtcblxuICBzdGF0ZS5yZWFkYWJsZVBvbGxpbmdJbnRlcnZhbCA9IGludGVydmFsSWQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZsdXNoYWJsZSBwaXBlIGZyb20gYSBSZWFkYWJsZVN0cmVhbSB0byBhIFdyaXRhYmxlU3RyZWFtLlxuICogVW5saWtlIHBpcGVUbygpLCB0aGlzIHJlc29sdmVzIHdoZW46XG4gKiAxLiBUaGUgc291cmNlIHN0cmVhbSBjb21wbGV0ZXMgKGNsb3NlL2Vycm9yKSwgT1JcbiAqIDIuIFRoZSB1c2VyIHJlbGVhc2VzIHRoZWlyIGxvY2sgb24gdXNlclN0cmVhbSBBTkQgYWxsIHBlbmRpbmcgd3JpdGVzIGFyZSBmbHVzaGVkXG4gKlxuICogQHBhcmFtIHNvdXJjZSAtIFRoZSByZWFkYWJsZSBzdHJlYW0gdG8gcmVhZCBmcm9tIChlLmcuLCB0cmFuc2Zvcm0ncyByZWFkYWJsZSlcbiAqIEBwYXJhbSBzaW5rIC0gVGhlIHdyaXRhYmxlIHN0cmVhbSB0byB3cml0ZSB0byAoZS5nLiwgc2VydmVyIHdyaXRhYmxlKVxuICogQHBhcmFtIHN0YXRlIC0gVGhlIGZsdXNoYWJsZSBzdGF0ZSB0cmFja2VyXG4gKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgd2hlbiBzdHJlYW0gZW5kcyAobm90IHdoZW4gZG9uZSBwcm9taXNlIHJlc29sdmVzKVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmx1c2hhYmxlUGlwZShcbiAgc291cmNlOiBSZWFkYWJsZVN0cmVhbSxcbiAgc2luazogV3JpdGFibGVTdHJlYW0sXG4gIHN0YXRlOiBGbHVzaGFibGVTdHJlYW1TdGF0ZVxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IHJlYWRlciA9IHNvdXJjZS5nZXRSZWFkZXIoKTtcbiAgY29uc3Qgd3JpdGVyID0gc2luay5nZXRXcml0ZXIoKTtcbiAgbGV0IGNhbmNlbFJlYXNvbjogdW5rbm93bjtcblxuICB0cnkge1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAvLyBDaGVjayBpZiBzdHJlYW0gaGFzIGVuZGVkXG4gICAgICBpZiAoc3RhdGUuc3RyZWFtRW5kZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBSZWFkIGZyb20gc291cmNlIC0gZG9uJ3QgY291bnQgYXMgcGVuZGluZyBvcCBzaW5jZSB3ZSdyZSBqdXN0IHdhaXRpbmcgZm9yIGRhdGFcbiAgICAgIC8vIFRoZSBpbXBvcnRhbnQgb3BzIGFyZSB3cml0ZXMgdG8gdGhlIHNpbmsgKHNlcnZlcilcbiAgICAgIGNvbnN0IHJlYWRSZXN1bHQgPSBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICByZWFkZXIucmVhZCgpLFxuICAgICAgICB3cml0ZXIuY2xvc2VkLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignV3JpdGFibGUgc3RyZWFtIGNsb3NlZCBwcmVtYXR1cmVseScpO1xuICAgICAgICB9KSxcbiAgICAgIF0pO1xuXG4gICAgICAvLyBDaGVjayBpZiBzdHJlYW0gaGFzIGVuZGVkIChlLmcuLCBkdWUgdG8gZXJyb3IgaW4gYW5vdGhlciBwYXRoKSBiZWZvcmUgcHJvY2Vzc2luZ1xuICAgICAgaWYgKHN0YXRlLnN0cmVhbUVuZGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlYWRSZXN1bHQuZG9uZSkge1xuICAgICAgICAvLyBTb3VyY2Ugc3RyZWFtIGNvbXBsZXRlZCAtIGNsb3NlIHNpbmsgYW5kIHJlc29sdmVcbiAgICAgICAgc3RhdGUuc3RyZWFtRW5kZWQgPSB0cnVlO1xuICAgICAgICBhd2FpdCB3cml0ZXIuY2xvc2UoKTtcbiAgICAgICAgLy8gUmVzb2x2ZSBkb25lIHByb21pc2UgaWYgbm90IGFscmVhZHkgcmVzb2x2ZWRcbiAgICAgICAgaWYgKCFzdGF0ZS5kb25lUmVzb2x2ZWQpIHtcbiAgICAgICAgICBzdGF0ZS5kb25lUmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgICAgIHN0YXRlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIENvdW50IHdyaXRlIGFzIGEgcGVuZGluZyBvcCAtIHRoaXMgaXMgd2hhdCB3ZSBuZWVkIHRvIGZsdXNoXG4gICAgICBzdGF0ZS5wZW5kaW5nT3BzKys7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB3cml0ZXIud3JpdGUocmVhZFJlc3VsdC52YWx1ZSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzdGF0ZS5wZW5kaW5nT3BzLS07XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnIpIHtcbiAgICBzdGF0ZS5zdHJlYW1FbmRlZCA9IHRydWU7XG4gICAgY2FuY2VsUmVhc29uID0gZXJyO1xuICAgIGlmICghc3RhdGUuZG9uZVJlc29sdmVkKSB7XG4gICAgICBzdGF0ZS5kb25lUmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgc3RhdGUucmVqZWN0KGVycik7XG4gICAgfVxuICAgIC8vIFByb3BhZ2F0ZSBlcnJvciB0aHJvdWdoIGZsdXNoYWJsZVBpcGUncyBvd24gcHJvbWlzZSBhcyB3ZWxsLlxuICAgIC8vIENhbGxlcnMgdGhhdCByZWx5IG9uIHRoZSBGbHVzaGFibGVTdHJlYW1TdGF0ZSBzaG91bGQgdXNlIGBzdGF0ZS5wcm9taXNlYCxcbiAgICAvLyB3aGlsZSBvdGhlciBjYWxsZXJzIG1heSBkZXBlbmQgb24gdGhpcyByZWplY3Rpb24uIFNvbWUga25vd24gY2FsbGVyc1xuICAgIC8vIGV4cGxpY2l0bHkgaWdub3JlIHRoaXMgcmVqZWN0aW9uIChgLmNhdGNoKCgpID0+IHt9KWApIGFuZCByZWx5IHNvbGVseVxuICAgIC8vIG9uIGBzdGF0ZS5yZWplY3QoZXJyKWAgZm9yIGVycm9yIGhhbmRsaW5nLlxuICAgIHRocm93IGVycjtcbiAgfSBmaW5hbGx5IHtcbiAgICAvLyBDYW5jZWwgdGhlIHVwc3RyZWFtIHJlYWRlciBzbyB0aGUgc291cmNlIGtub3dzIHRvIHN0b3AgZ2VuZXJhdGluZyBkYXRhLlxuICAgIC8vIFVzZXMgY2FuY2VsUmVhc29uIChzZXQgaW4gdGhlIGNhdGNoIGJsb2NrKSBzbyB0aGUgc291cmNlIHJlY2VpdmVzIGNvbnRleHRcbiAgICAvLyBhYm91dCB3aHkgaXQgd2FzIGNhbmNlbGxlZC4gT24gbm9ybWFsIGNvbXBsZXRpb24gY2FuY2VsUmVhc29uIGlzIHVuZGVmaW5lZCxcbiAgICAvLyB3aGljaCBpcyBhIGhhcm1sZXNzIG5vLW9wIG9uIGFuIGFscmVhZHktZG9uZSByZWFkZXIuXG4gICAgcmVhZGVyLmNhbmNlbChjYW5jZWxSZWFzb24pLmNhdGNoKCgpID0+IHt9KTtcbiAgICByZWFkZXIucmVsZWFzZUxvY2soKTtcbiAgICB3cml0ZXIucmVsZWFzZUxvY2soKTtcbiAgfVxufVxuIl19
|
|
237
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmx1c2hhYmxlLXN0cmVhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mbHVzaGFibGUtc3RyZWFtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hELE9BQU8sRUFBNkIsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTVDOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLEVBQUUsQ0FBQztBQUV4QyxnRkFBZ0Y7QUFDaEYsTUFBTSxxQkFBcUIsR0FBRyxHQUFXLEVBQUUsQ0FDekMsU0FBUyxDQUFDLGdDQUFnQyxFQUFFLHFCQUFxQixFQUFFO0lBQ2pFLE9BQU8sRUFBRSxJQUFJO0lBQ2IsR0FBRyxFQUFFLENBQUM7Q0FDUCxDQUFDLENBQUM7QUE2QkwsTUFBTSxVQUFVLG9CQUFvQjtJQUNsQyxNQUFNLEtBQUssR0FBeUI7UUFDbEMsR0FBRyxhQUFhLEVBQVE7UUFDeEIsVUFBVSxFQUFFLENBQUM7UUFDYixZQUFZLEVBQUUsS0FBSztRQUNuQixXQUFXLEVBQUUsS0FBSztLQUNuQixDQUFDO0lBRUYseUVBQXlFO0lBQ3pFLHdFQUF3RTtJQUN4RSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQztJQUU5QixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsMkJBQTJCLENBQUMsUUFBd0I7SUFDM0QsSUFBSSxRQUFRLENBQUMsTUFBTTtRQUFFLE9BQU8sS0FBSyxDQUFDO0lBRWxDLElBQUksTUFBK0MsQ0FBQztJQUNwRCxJQUFJLENBQUM7UUFDSCx5RUFBeUU7UUFDekUsTUFBTSxHQUFHLFFBQVEsQ0FBQyxTQUFTLEVBQUUs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QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFdvcmtmbG93UnVudGltZUVycm9yIH0gZnJvbSAnQHdvcmtmbG93L2Vycm9ycyc7XG5pbXBvcnQgeyB0eXBlIFByb21pc2VXaXRoUmVzb2x2ZXJzLCB3aXRoUmVzb2x2ZXJzIH0gZnJvbSAnQHdvcmtmbG93L3V0aWxzJztcbmltcG9ydCB7IGVudk51bWJlciB9IGZyb20gJ0B3b3JrZmxvdy93b3JsZCc7XG5cbi8qKlxuICogUG9sbGluZyBpbnRlcnZhbCAoaW4gbXMpIGZvciBsb2NrIHJlbGVhc2UgZGV0ZWN0aW9uLlxuICpcbiAqIFRoZSBXZWIgU3RyZWFtcyBBUEkgZG9lcyBub3QgZXhwb3NlIGFuIGV2ZW50IGZvciBcImxvY2sgcmVsZWFzZWQgYnV0IHN0cmVhbVxuICogc3RpbGwgb3BlblwiOyB3ZSBjYW4gb25seSBkaXN0aW5ndWlzaCB0aGF0IHN0YXRlIGJ5IHBlcmlvZGljYWxseSBhdHRlbXB0aW5nXG4gKiB0byBhY3F1aXJlIGEgcmVhZGVyL3dyaXRlci4gRm9yIHRoYXQgcmVhc29uIHdlIHVzZSBwb2xsaW5nIGluc3RlYWQgb2YgYVxuICogZnVsbHkgZXZlbnQtZHJpdmVuIGFwcHJvYWNoIGhlcmUuXG4gKlxuICogMTBtcyBpcyBjaG9zZW4gc28gdGhlIHBvbGxpbmcgdGljayBhbG1vc3QgbmV2ZXIgc2l0cyBvbiB0aGUgY3JpdGljYWwgcGF0aDpcbiAqIHRoZSBWMiBzdGVwLWV4ZWN1dG9yJ3MgYG9wc1NldHRsZWRgIHJhY2Ugd2FpdHMgZm9yIHRoaXMgc3RhdGUgdG8gcmVzb2x2ZVxuICogYWZ0ZXIgZWFjaCBzdGVwIGJvZHkgcmV0dXJucywgc28gYSBjb2Fyc2VyIGludGVydmFsICh0aGUgcHJldmlvdXMgMTAwbXMpXG4gKiBhZGRzIHZpc2libGUgcGVyLXN0ZXAgbGF0ZW5jeSB0byBzdHJlYW1pbmcgd29ya2Zsb3dzLiBXaXRoIGEgdW5pZm9ybWx5XG4gKiBkaXN0cmlidXRlZCBvZmZzZXQgYmV0d2VlbiBzdGVwIHJldHVybiBhbmQgdGhlIG5leHQgdGljaywgdGhlIGV4cGVjdGVkXG4gKiB3YWl0IGlzIGhhbGYgdGhlIGludGVydmFsIOKAlCBzbyAxMG1zIG1lYW5zIH41bXMgYXZlcmFnZSB3YWl0IHBlciBzdGVwXG4gKiBpbnN0ZWFkIG9mIH41MG1zLiBUaGUgcGVyLXRpY2sgd29yayBpcyBgd3JpdGFibGUubG9ja2VkYCBwbHVzIGFcbiAqIGBnZXRXcml0ZXIoKWAvYHJlbGVhc2VMb2NrKClgIHByb2JlLCBib3RoIG1pY3Jvc2Vjb25kLXNjYWxlOyAxMMOXIG1vcmVcbiAqIHRpY2tzIGR1cmluZyBhIHN0cmVhbSdzIGxpZmV0aW1lIGlzIG5vdCBtZWFzdXJhYmxlIGluIHByYWN0aWNlLlxuICovXG5leHBvcnQgY29uc3QgTE9DS19QT0xMX0lOVEVSVkFMX01TID0gMTA7XG5cbi8qKiBFZmZlY3RpdmUgbG9jay1wb2xsIGludGVydmFsLiBPdmVycmlkZTogYFdPUktGTE9XX0xPQ0tfUE9MTF9JTlRFUlZBTF9NU2AuICovXG5jb25zdCBnZXRMb2NrUG9sbEludGVydmFsTXMgPSAoKTogbnVtYmVyID0+XG4gIGVudk51bWJlcignV09SS0ZMT1dfTE9DS19QT0xMX0lOVEVSVkFMX01TJywgTE9DS19QT0xMX0lOVEVSVkFMX01TLCB7XG4gICAgaW50ZWdlcjogdHJ1ZSxcbiAgICBtaW46IDEsXG4gIH0pO1xuXG4vKipcbiAqIFN0YXRlIHRyYWNrZXIgZm9yIGZsdXNoYWJsZSBzdHJlYW0gb3BlcmF0aW9ucy5cbiAqIFJlc29sdmVzIHdoZW4gZWl0aGVyOlxuICogMS4gU3RyZWFtIGNvbXBsZXRlcyAoY2xvc2UvZXJyb3IpLCBPUlxuICogMi4gTG9jayBpcyByZWxlYXNlZCBBTkQgYWxsIHBlbmRpbmcgb3BlcmF0aW9ucyBhcmUgZmx1c2hlZFxuICpcbiAqIE5vdGU6IGBkb25lUmVzb2x2ZWRgIGFuZCBgc3RyZWFtRW5kZWRgIGFyZSBzZXBhcmF0ZTpcbiAqIC0gYGRvbmVSZXNvbHZlZGA6IFRoZSBgZG9uZWAgcHJvbWlzZSBoYXMgYmVlbiByZXNvbHZlZCAoc3RlcCBjYW4gY29tcGxldGUpXG4gKiAtIGBzdHJlYW1FbmRlZGA6IFRoZSB1bmRlcmx5aW5nIHN0cmVhbSBoYXMgYWN0dWFsbHkgY2xvc2VkL2Vycm9yZWRcbiAqXG4gKiBPbmNlIGBkb25lUmVzb2x2ZWRgIGlzIHNldCB0byB0cnVlLCB0aGUgYGRvbmVgIHByb21pc2Ugd2lsbCBub3QgcmVzb2x2ZVxuICogYWdhaW4uIFJlLWFjcXVpcmluZyBsb2NrcyBhZnRlciByZWxlYXNlIGlzIG5vdCBzdXBwb3J0ZWQgYXMgYSB3YXkgdG9cbiAqIHRyaWdnZXIgYWRkaXRpb25hbCBjb21wbGV0aW9uIHNpZ25hbGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGbHVzaGFibGVTdHJlYW1TdGF0ZSBleHRlbmRzIFByb21pc2VXaXRoUmVzb2x2ZXJzPHZvaWQ+IHtcbiAgLyoqIE51bWJlciBvZiB3cml0ZSBvcGVyYXRpb25zIGN1cnJlbnRseSBpbiBmbGlnaHQgdG8gdGhlIHNlcnZlciAqL1xuICBwZW5kaW5nT3BzOiBudW1iZXI7XG4gIC8qKiBXaGV0aGVyIHRoZSBgZG9uZWAgcHJvbWlzZSBoYXMgYmVlbiByZXNvbHZlZCAqL1xuICBkb25lUmVzb2x2ZWQ6IGJvb2xlYW47XG4gIC8qKiBXaGV0aGVyIHRoZSB1bmRlcmx5aW5nIHN0cmVhbSBoYXMgYWN0dWFsbHkgY2xvc2VkL2Vycm9yZWQgKi9cbiAgc3RyZWFtRW5kZWQ6IGJvb2xlYW47XG4gIC8qKiBJbnRlcnZhbCBJRCBmb3Igd3JpdGFibGUgbG9jayBwb2xsaW5nIChpZiBhY3RpdmUpICovXG4gIHdyaXRhYmxlUG9sbGluZ0ludGVydmFsPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xuICAvKiogSW50ZXJ2YWwgSUQgZm9yIHJlYWRhYmxlIGxvY2sgcG9sbGluZyAoaWYgYWN0aXZlKSAqL1xuICByZWFkYWJsZVBvbGxpbmdJbnRlcnZhbD86IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUZsdXNoYWJsZVN0YXRlKCk6IEZsdXNoYWJsZVN0cmVhbVN0YXRlIHtcbiAgY29uc3Qgc3RhdGU6IEZsdXNoYWJsZVN0cmVhbVN0YXRlID0ge1xuICAgIC4uLndpdGhSZXNvbHZlcnM8dm9pZD4oKSxcbiAgICBwZW5kaW5nT3BzOiAwLFxuICAgIGRvbmVSZXNvbHZlZDogZmFsc2UsXG4gICAgc3RyZWFtRW5kZWQ6IGZhbHNlLFxuICB9O1xuXG4gIC8vIFRoZSBydW50aW1lIGF3YWl0cyB0aGlzIHByb21pc2UgYWZ0ZXIgdXNlciBjb2RlIHJldHVybnMuIE9ic2VydmUgZWFybHlcbiAgLy8gc3RyZWFtIGZhaWx1cmVzIG5vdyBzbyB0aGV5IGRvIG5vdCBiZWNvbWUgdW5oYW5kbGVkIHJlamVjdGlvbnMgZmlyc3QuXG4gIHN0YXRlLnByb21pc2UuY2F0Y2goKCkgPT4ge30pO1xuXG4gIHJldHVybiBzdGF0ZTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYSBXcml0YWJsZVN0cmVhbSBpcyB1bmxvY2tlZCAodXNlciByZWxlYXNlZCBsb2NrKSB2cyBjbG9zZWQuXG4gKiBXaGVuIGEgc3RyZWFtIGlzIGNsb3NlZCwgLmxvY2tlZCBpcyBmYWxzZSBidXQgZ2V0V3JpdGVyKCkgdGhyb3dzLlxuICogV2Ugb25seSB3YW50IHRvIHJlc29sdmUgdmlhIHBvbGxpbmcgd2hlbiB0aGUgc3RyZWFtIGlzIHVubG9ja2VkLCBub3QgY2xvc2VkLlxuICogSWYgY2xvc2VkLCB0aGUgcHVtcCB3aWxsIGhhbmRsZSByZXNvbHV0aW9uIHZpYSB0aGUgc3RyZWFtIGVuZGluZyBuYXR1cmFsbHkuXG4gKi9cbmZ1bmN0aW9uIGlzV3JpdGFibGVVbmxvY2tlZE5vdENsb3NlZCh3cml0YWJsZTogV3JpdGFibGVTdHJlYW0pOiBib29sZWFuIHtcbiAgaWYgKHdyaXRhYmxlLmxvY2tlZCkgcmV0dXJuIGZhbHNlO1xuXG4gIGxldCB3cml0ZXI6IFdyaXRhYmxlU3RyZWFtRGVmYXVsdFdyaXRlciB8IHVuZGVmaW5lZDtcbiAgdHJ5IHtcbiAgICAvLyBUcnkgdG8gYWNxdWlyZSB3cml0ZXIgLSBpZiBzdWNjZXNzZnVsLCBzdHJlYW0gaXMgdW5sb2NrZWQgKG5vdCBjbG9zZWQpXG4gICAgd3JpdGVyID0gd3JpdGFibGUuZ2V0V3JpdGVyKCk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIGdldFdyaXRlcigpIHRocm93cyBpZiBzdHJlYW0gaXMgY2xvc2VkL2Vycm9yZWQgLSBsZXQgcHVtcCBoYW5kbGUgaXRcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB0cnkge1xuICAgIHdyaXRlci5yZWxlYXNlTG9jaygpO1xuICB9IGNhdGNoIHtcbiAgICAvLyBJZiByZWxlYXNlTG9jaygpIHRocm93cyBmb3IgYW55IHJlYXNvbiwgY29uc2VydmF0aXZlbHkgdHJlYXQgdGhlXG4gICAgLy8gc3RyZWFtIGFzIGNsb3NlZC9lcnJvcmVkIHNvIGNhbGxlcnMgZG9uJ3QgYXNzdW1lIGl0J3Mgc2FmZSB0byB1c2UuXG4gICAgLy8gVGhlIHB1bXAgd2lsbCBvYnNlcnZlIHRoZSBmYWlsdXJlIHZpYSB0aGUgc3RyZWFtJ3MgZW5kIHN0YXRlLlxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIFJlYWRhYmxlU3RyZWFtIGlzIHVubG9ja2VkICh1c2VyIHJlbGVhc2VkIGxvY2spIHZzIGNsb3NlZC5cbiAqL1xuZnVuY3Rpb24gaXNSZWFkYWJsZVVubG9ja2VkTm90Q2xvc2VkKHJlYWRhYmxlOiBSZWFkYWJsZVN0cmVhbSk6IGJvb2xlYW4ge1xuICBpZiAocmVhZGFibGUubG9ja2VkKSByZXR1cm4gZmFsc2U7XG5cbiAgbGV0IHJlYWRlcjogUmVhZGFibGVTdHJlYW1EZWZhdWx0UmVhZGVyIHwgdW5kZWZpbmVkO1xuICB0cnkge1xuICAgIC8vIFRyeSB0byBhY3F1aXJlIHJlYWRlciAtIGlmIHN1Y2Nlc3NmdWwsIHN0cmVhbSBpcyB1bmxvY2tlZCAobm90IGNsb3NlZClcbiAgICByZWFkZXIgPSByZWFkYWJsZS5nZXRSZWFkZXIoKTtcbiAgfSBjYXRjaCB7XG4gICAgLy8gZ2V0UmVhZGVyKCkgdGhyb3dzIGlmIHN0cmVhbSBpcyBjbG9zZWQvZXJyb3JlZCAtIGxldCBwdW1wIGhhbmRsZSBpdFxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIElmIHJlbGVhc2VMb2NrKCkgdGhyb3dzIGZvciBhbnkgcmVhc29uLCBjb25zZXJ2YXRpdmVseSB0cmVhdCB0aGVcbiAgICAvLyBzdHJlYW0gYXMgY2xvc2VkL2Vycm9yZWQgc28gY2FsbGVycyBkb24ndCBhc3N1bWUgaXQncyBzYWZlIHRvIHVzZS5cbiAgICAvLyBUaGUgcHVtcCB3aWxsIG9ic2VydmUgdGhlIGZhaWx1cmUgdmlhIHRoZSBzdHJlYW0ncyBlbmQgc3RhdGUuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbi8qKlxuICogUG9sbHMgYSBXcml0YWJsZVN0cmVhbSB0byBjaGVjayBpZiB0aGUgdXNlciBoYXMgcmVsZWFzZWQgdGhlaXIgbG9jay5cbiAqIFJlc29sdmVzIHRoZSBkb25lIHByb21pc2Ugd2hlbiBsb2NrIGlzIHJlbGVhc2VkIGFuZCBubyBwZW5kaW5nIG9wcyByZW1haW4uXG4gKlxuICogTm90ZTogT25seSByZXNvbHZlcyBpZiBzdHJlYW0gaXMgdW5sb2NrZWQgYnV0IE5PVCBjbG9zZWQuIElmIHRoZSB1c2VyIGNsb3Nlc1xuICogdGhlIHN0cmVhbSwgdGhlIHB1bXAgd2lsbCBoYW5kbGUgcmVzb2x1dGlvbiB2aWEgdGhlIHN0cmVhbSBlbmRpbmcgbmF0dXJhbGx5LlxuICpcbiAqIFByb3RlY3Rpb246IElmIHBvbGxpbmcgaXMgYWxyZWFkeSBhY3RpdmUgb24gdGhpcyBzdGF0ZSwgdGhlIGV4aXN0aW5nIGludGVydmFsXG4gKiBpcyB1c2VkIHRvIGF2b2lkIGNyZWF0aW5nIG11bHRpcGxlIHNpbXVsdGFuZW91cyBwb2xsaW5nIG9wZXJhdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwb2xsV3JpdGFibGVMb2NrKFxuICB3cml0YWJsZTogV3JpdGFibGVTdHJlYW0sXG4gIHN0YXRlOiBGbHVzaGFibGVTdHJlYW1TdGF0ZVxuKTogdm9pZCB7XG4gIC8vIFByZXZlbnQgbXVsdGlwbGUgc2ltdWx0YW5lb3VzIHBvbGxpbmcgb24gdGhlIHNhbWUgc3RhdGVcbiAgaWYgKHN0YXRlLndyaXRhYmxlUG9sbGluZ0ludGVydmFsICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBpbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgIC8vIFN0b3AgcG9sbGluZyBpZiBhbHJlYWR5IHJlc29sdmVkIG9yIHN0cmVhbSBlbmRlZFxuICAgIGlmIChzdGF0ZS5kb25lUmVzb2x2ZWQgfHwgc3RhdGUuc3RyZWFtRW5kZWQpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7XG4gICAgICBzdGF0ZS53cml0YWJsZVBvbGxpbmdJbnRlcnZhbCA9IHVuZGVmaW5lZDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiBsb2NrIGlzIHJlbGVhc2VkIChub3QgY2xvc2VkKSBhbmQgbm8gcGVuZGluZyBvcHNcbiAgICBpZiAoaXNXcml0YWJsZVVubG9ja2VkTm90Q2xvc2VkKHdyaXRhYmxlKSAmJiBzdGF0ZS5wZW5kaW5nT3BzID09PSAwKSB7XG4gICAgICBzdGF0ZS5kb25lUmVzb2x2ZWQgPSB0cnVlO1xuICAgICAgc3RhdGUucmVzb2x2ZSgpO1xuICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTtcbiAgICAgIHN0YXRlLndyaXRhYmxlUG9sbGluZ0ludGVydmFsID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSwgZ2V0TG9ja1BvbGxJbnRlcnZhbE1zKCkpO1xuXG4gIHN0YXRlLndyaXRhYmxlUG9sbGluZ0ludGVydmFsID0gaW50ZXJ2YWxJZDtcbn1cblxuLyoqXG4gKiBQb2xscyBhIFJlYWRhYmxlU3RyZWFtIHRvIGNoZWNrIGlmIHRoZSB1c2VyIGhhcyByZWxlYXNlZCB0aGVpciBsb2NrLlxuICogUmVzb2x2ZXMgdGhlIGRvbmUgcHJvbWlzZSB3aGVuIGxvY2sgaXMgcmVsZWFzZWQgYW5kIG5vIHBlbmRpbmcgb3BzIHJlbWFpbi5cbiAqXG4gKiBOb3RlOiBPbmx5IHJlc29sdmVzIGlmIHN0cmVhbSBpcyB1bmxvY2tlZCBidXQgTk9UIGNsb3NlZC4gSWYgdGhlIHVzZXIgY2xvc2VzXG4gKiB0aGUgc3RyZWFtLCB0aGUgcHVtcCB3aWxsIGhhbmRsZSByZXNvbHV0aW9uIHZpYSB0aGUgc3RyZWFtIGVuZGluZyBuYXR1cmFsbHkuXG4gKlxuICogUHJvdGVjdGlvbjogSWYgcG9sbGluZyBpcyBhbHJlYWR5IGFjdGl2ZSBvbiB0aGlzIHN0YXRlLCB0aGUgZXhpc3RpbmcgaW50ZXJ2YWxcbiAqIGlzIHVzZWQgdG8gYXZvaWQgY3JlYXRpbmcgbXVsdGlwbGUgc2ltdWx0YW5lb3VzIHBvbGxpbmcgb3BlcmF0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBvbGxSZWFkYWJsZUxvY2soXG4gIHJlYWRhYmxlOiBSZWFkYWJsZVN0cmVhbSxcbiAgc3RhdGU6IEZsdXNoYWJsZVN0cmVhbVN0YXRlXG4pOiB2b2lkIHtcbiAgLy8gUHJldmVudCBtdWx0aXBsZSBzaW11bHRhbmVvdXMgcG9sbGluZyBvbiB0aGUgc2FtZSBzdGF0ZVxuICBpZiAoc3RhdGUucmVhZGFibGVQb2xsaW5nSW50ZXJ2YWwgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IGludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgLy8gU3RvcCBwb2xsaW5nIGlmIGFscmVhZHkgcmVzb2x2ZWQgb3Igc3RyZWFtIGVuZGVkXG4gICAgaWYgKHN0YXRlLmRvbmVSZXNvbHZlZCB8fCBzdGF0ZS5zdHJlYW1FbmRlZCkge1xuICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTtcbiAgICAgIHN0YXRlLnJlYWRhYmxlUG9sbGluZ0ludGVydmFsID0gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIENoZWNrIGlmIGxvY2sgaXMgcmVsZWFzZWQgKG5vdCBjbG9zZWQpIGFuZCBubyBwZW5kaW5nIG9wc1xuICAgIGlmIChpc1JlYWRhYmxlVW5sb2NrZWROb3RDbG9zZWQocmVhZGFibGUpICYmIHN0YXRlLnBlbmRpbmdPcHMgPT09IDApIHtcbiAgICAgIHN0YXRlLmRvbmVSZXNvbHZlZCA9IHRydWU7XG4gICAgICBzdGF0ZS5yZXNvbHZlKCk7XG4gICAgICBjbGVhckludGVydmFsKGludGVydmFsSWQpO1xuICAgICAgc3RhdGUucmVhZGFibGVQb2xsaW5nSW50ZXJ2YWwgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9LCBnZXRMb2NrUG9sbEludGVydmFsTXMoKSk7XG5cbiAgc3RhdGUucmVhZGFibGVQb2xsaW5nSW50ZXJ2YWwgPSBpbnRlcnZhbElkO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBmbHVzaGFibGUgcGlwZSBmcm9tIGEgUmVhZGFibGVTdHJlYW0gdG8gYSBXcml0YWJsZVN0cmVhbS5cbiAqIFVubGlrZSBwaXBlVG8oKSwgdGhpcyByZXNvbHZlcyB3aGVuOlxuICogMS4gVGhlIHNvdXJjZSBzdHJlYW0gY29tcGxldGVzIChjbG9zZS9lcnJvciksIE9SXG4gKiAyLiBUaGUgdXNlciByZWxlYXNlcyB0aGVpciBsb2NrIG9uIHVzZXJTdHJlYW0gQU5EIGFsbCBwZW5kaW5nIHdyaXRlcyBhcmUgZmx1c2hlZFxuICpcbiAqIEBwYXJhbSBzb3VyY2UgLSBUaGUgcmVhZGFibGUgc3RyZWFtIHRvIHJlYWQgZnJvbSAoZS5nLiwgdHJhbnNmb3JtJ3MgcmVhZGFibGUpXG4gKiBAcGFyYW0gc2luayAtIFRoZSB3cml0YWJsZSBzdHJlYW0gdG8gd3JpdGUgdG8gKGUuZy4sIHNlcnZlciB3cml0YWJsZSlcbiAqIEBwYXJhbSBzdGF0ZSAtIFRoZSBmbHVzaGFibGUgc3RhdGUgdHJhY2tlclxuICogQHJldHVybnMgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHdoZW4gc3RyZWFtIGVuZHMgKG5vdCB3aGVuIGRvbmUgcHJvbWlzZSByZXNvbHZlcylcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZsdXNoYWJsZVBpcGUoXG4gIHNvdXJjZTogUmVhZGFibGVTdHJlYW0sXG4gIHNpbms6IFdyaXRhYmxlU3RyZWFtLFxuICBzdGF0ZTogRmx1c2hhYmxlU3RyZWFtU3RhdGVcbik6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByZWFkZXIgPSBzb3VyY2UuZ2V0UmVhZGVyKCk7XG4gIGNvbnN0IHdyaXRlciA9IHNpbmsuZ2V0V3JpdGVyKCk7XG4gIGxldCBjYW5jZWxSZWFzb246IHVua25vd247XG5cbiAgdHJ5IHtcbiAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgLy8gQ2hlY2sgaWYgc3RyZWFtIGhhcyBlbmRlZFxuICAgICAgaWYgKHN0YXRlLnN0cmVhbUVuZGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgLy8gUmVhZCBmcm9tIHNvdXJjZSAtIGRvbid0IGNvdW50IGFzIHBlbmRpbmcgb3Agc2luY2Ugd2UncmUganVzdCB3YWl0aW5nIGZvciBkYXRhXG4gICAgICAvLyBUaGUgaW1wb3J0YW50IG9wcyBhcmUgd3JpdGVzIHRvIHRoZSBzaW5rIChzZXJ2ZXIpXG4gICAgICBjb25zdCByZWFkUmVzdWx0ID0gYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICAgICAgcmVhZGVyLnJlYWQoKSxcbiAgICAgICAgd3JpdGVyLmNsb3NlZC50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aHJvdyBuZXcgV29ya2Zsb3dSdW50aW1lRXJyb3IoJ1dyaXRhYmxlIHN0cmVhbSBjbG9zZWQgcHJlbWF0dXJlbHknKTtcbiAgICAgICAgfSksXG4gICAgICBdKTtcblxuICAgICAgLy8gQ2hlY2sgaWYgc3RyZWFtIGhhcyBlbmRlZCAoZS5nLiwgZHVlIHRvIGVycm9yIGluIGFub3RoZXIgcGF0aCkgYmVmb3JlIHByb2Nlc3NpbmdcbiAgICAgIGlmIChzdGF0ZS5zdHJlYW1FbmRlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChyZWFkUmVzdWx0LmRvbmUpIHtcbiAgICAgICAgLy8gU291cmNlIHN0cmVhbSBjb21wbGV0ZWQgLSBjbG9zZSBzaW5rIGFuZCByZXNvbHZlXG4gICAgICAgIHN0YXRlLnN0cmVhbUVuZGVkID0gdHJ1ZTtcbiAgICAgICAgYXdhaXQgd3JpdGVyLmNsb3NlKCk7XG4gICAgICAgIC8vIFJlc29sdmUgZG9uZSBwcm9taXNlIGlmIG5vdCBhbHJlYWR5IHJlc29sdmVkXG4gICAgICAgIGlmICghc3RhdGUuZG9uZVJlc29sdmVkKSB7XG4gICAgICAgICAgc3RhdGUuZG9uZVJlc29sdmVkID0gdHJ1ZTtcbiAgICAgICAgICBzdGF0ZS5yZXNvbHZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBDb3VudCB3cml0ZSBhcyBhIHBlbmRpbmcgb3AgLSB0aGlzIGlzIHdoYXQgd2UgbmVlZCB0byBmbHVzaFxuICAgICAgc3RhdGUucGVuZGluZ09wcysrO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgd3JpdGVyLndyaXRlKHJlYWRSZXN1bHQudmFsdWUpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc3RhdGUucGVuZGluZ09wcy0tO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgc3RhdGUuc3RyZWFtRW5kZWQgPSB0cnVlO1xuICAgIGNhbmNlbFJlYXNvbiA9IGVycjtcbiAgICBpZiAoIXN0YXRlLmRvbmVSZXNvbHZlZCkge1xuICAgICAgc3RhdGUuZG9uZVJlc29sdmVkID0gdHJ1ZTtcbiAgICAgIHN0YXRlLnJlamVjdChlcnIpO1xuICAgIH1cbiAgICAvLyBQcm9wYWdhdGUgZXJyb3IgdGhyb3VnaCBmbHVzaGFibGVQaXBlJ3Mgb3duIHByb21pc2UgYXMgd2VsbC5cbiAgICAvLyBDYWxsZXJzIHRoYXQgcmVseSBvbiB0aGUgRmx1c2hhYmxlU3RyZWFtU3RhdGUgc2hvdWxkIHVzZSBgc3RhdGUucHJvbWlzZWAsXG4gICAgLy8gd2hpbGUgb3RoZXIgY2FsbGVycyBtYXkgZGVwZW5kIG9uIHRoaXMgcmVqZWN0aW9uLiBTb21lIGtub3duIGNhbGxlcnNcbiAgICAvLyBleHBsaWNpdGx5IGlnbm9yZSB0aGlzIHJlamVjdGlvbiAoYC5jYXRjaCgoKSA9PiB7fSlgKSBhbmQgcmVseSBzb2xlbHlcbiAgICAvLyBvbiBgc3RhdGUucmVqZWN0KGVycilgIGZvciBlcnJvciBoYW5kbGluZy5cbiAgICB0aHJvdyBlcnI7XG4gIH0gZmluYWxseSB7XG4gICAgLy8gQ2FuY2VsIHRoZSB1cHN0cmVhbSByZWFkZXIgc28gdGhlIHNvdXJjZSBrbm93cyB0byBzdG9wIGdlbmVyYXRpbmcgZGF0YS5cbiAgICAvLyBVc2VzIGNhbmNlbFJlYXNvbiAoc2V0IGluIHRoZSBjYXRjaCBibG9jaykgc28gdGhlIHNvdXJjZSByZWNlaXZlcyBjb250ZXh0XG4gICAgLy8gYWJvdXQgd2h5IGl0IHdhcyBjYW5jZWxsZWQuIE9uIG5vcm1hbCBjb21wbGV0aW9uIGNhbmNlbFJlYXNvbiBpcyB1bmRlZmluZWQsXG4gICAgLy8gd2hpY2ggaXMgYSBoYXJtbGVzcyBuby1vcCBvbiBhbiBhbHJlYWR5LWRvbmUgcmVhZGVyLlxuICAgIHJlYWRlci5jYW5jZWwoY2FuY2VsUmVhc29uKS5jYXRjaCgoKSA9PiB7fSk7XG4gICAgcmVhZGVyLnJlbGVhc2VMb2NrKCk7XG4gICAgd3JpdGVyLnJlbGVhc2VMb2NrKCk7XG4gIH1cbn1cbiJdfQ==
|
package/dist/global.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { AttributeChange } from '@workflow/world';
|
|
1
2
|
import type { Serializable } from './schemas.js';
|
|
2
3
|
export interface StepInvocationQueueItem {
|
|
3
4
|
type: 'step';
|
|
@@ -7,6 +8,26 @@ export interface StepInvocationQueueItem {
|
|
|
7
8
|
closureVars?: Record<string, Serializable>;
|
|
8
9
|
thisVal?: Serializable;
|
|
9
10
|
hasCreatedEvent?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* Inline step ownership, derived from the step's LATEST `step_started`
|
|
13
|
+
* during replay: the queue message ID stamped by the invocation running
|
|
14
|
+
* the step inline, or undefined when the latest start was unstamped (a
|
|
15
|
+
* retry attempt driven by a queued step message, or an older runtime).
|
|
16
|
+
* Latest start wins — an unstamped bare start clears a previous stamp; an
|
|
17
|
+
* owner-recovery re-stamped start restores it.
|
|
18
|
+
*/
|
|
19
|
+
ownerMessageId?: string;
|
|
20
|
+
/**
|
|
21
|
+
* `createdAt` (ms) of the step's latest observed `step_started`. Anchors
|
|
22
|
+
* the ownership lease: `leaseRemaining = lastStartedAt + lease − now`.
|
|
23
|
+
*/
|
|
24
|
+
lastStartedAt?: number;
|
|
25
|
+
/**
|
|
26
|
+
* Whether a `step_retrying` was observed for this step. From that point
|
|
27
|
+
* the step is queue-owned (the delayed retry handoff or replay requeue),
|
|
28
|
+
* so inline ownership is permanently lapsed for this correlation ID.
|
|
29
|
+
*/
|
|
30
|
+
sawRetrying?: boolean;
|
|
10
31
|
}
|
|
11
32
|
export interface HookInvocationQueueItem {
|
|
12
33
|
type: 'hook';
|
|
@@ -14,8 +35,13 @@ export interface HookInvocationQueueItem {
|
|
|
14
35
|
token: string;
|
|
15
36
|
metadata?: Serializable;
|
|
16
37
|
hasCreatedEvent?: boolean;
|
|
38
|
+
/** Whether the workflow is awaiting `hook.getConflict()` for this hook */
|
|
39
|
+
hasConflictAwaiter?: boolean;
|
|
17
40
|
disposed?: boolean;
|
|
18
41
|
isWebhook?: boolean;
|
|
42
|
+
isSystem?: boolean;
|
|
43
|
+
abortRequested?: boolean;
|
|
44
|
+
abortReason?: unknown;
|
|
19
45
|
}
|
|
20
46
|
export interface WaitInvocationQueueItem {
|
|
21
47
|
type: 'wait';
|
|
@@ -23,7 +49,13 @@ export interface WaitInvocationQueueItem {
|
|
|
23
49
|
resumeAt: Date;
|
|
24
50
|
hasCreatedEvent?: boolean;
|
|
25
51
|
}
|
|
26
|
-
export
|
|
52
|
+
export interface AttributeInvocationQueueItem {
|
|
53
|
+
type: 'attribute';
|
|
54
|
+
correlationId: string;
|
|
55
|
+
changes: AttributeChange[];
|
|
56
|
+
allowReservedAttributes?: true;
|
|
57
|
+
}
|
|
58
|
+
export type QueueItem = StepInvocationQueueItem | HookInvocationQueueItem | WaitInvocationQueueItem | AttributeInvocationQueueItem;
|
|
27
59
|
/**
|
|
28
60
|
* An error that is thrown when one or more operations (steps/hooks/etc.) are called but do
|
|
29
61
|
* not yet have corresponding entries in the event log. The workflow
|
|
@@ -36,7 +68,9 @@ export declare class WorkflowSuspension extends Error {
|
|
|
36
68
|
stepCount: number;
|
|
37
69
|
hookCount: number;
|
|
38
70
|
waitCount: number;
|
|
71
|
+
attributeCount: number;
|
|
39
72
|
hookDisposedCount: number;
|
|
73
|
+
abortCount: number;
|
|
40
74
|
constructor(stepsInput: Map<string, QueueItem>, global: typeof globalThis);
|
|
41
75
|
static is(value: unknown): value is WorkflowSuspension;
|
|
42
76
|
}
|
package/dist/global.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../src/global.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"global.d.ts","sourceRoot":"","sources":["../src/global.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC3C,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;;;;OAOG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,IAAI,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,uBAAuB,CAAC,EAAE,IAAI,CAAC;CAChC;AAED,MAAM,MAAM,SAAS,GACjB,uBAAuB,GACvB,uBAAuB,GACvB,uBAAuB,GACvB,4BAA4B,CAAC;AAEjC;;;;;GAKG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,UAAU,EAAE,OAAO,UAAU,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;gBAEP,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,UAAU;IAuFzE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB;CAGvD;AAED,wBAAgB,OAAO,IAAI,KAAK,CAI/B"}
|