footprintjs 9.23.2 → 9.23.3
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/CLAUDE.md +2 -2
- package/dist/advanced.js +6 -3
- package/dist/esm/advanced.d.ts +1 -1
- package/dist/esm/advanced.js +2 -2
- package/dist/esm/lib/engine/handlers/ParallelForEachHandler.d.ts +8 -0
- package/dist/esm/lib/engine/handlers/ParallelForEachHandler.js +11 -2
- package/dist/esm/lib/engine/handlers/SubflowInputMapper.d.ts +10 -1
- package/dist/esm/lib/engine/handlers/SubflowInputMapper.js +16 -4
- package/dist/esm/lib/reactive/arrayTraps.js +7 -5
- package/dist/esm/lib/reactive/createTypedScope.js +17 -9
- package/dist/esm/lib/reactive/handles.d.ts +46 -0
- package/dist/esm/lib/reactive/handles.js +105 -0
- package/dist/esm/lib/reactive/index.d.ts +1 -0
- package/dist/esm/lib/reactive/index.js +2 -1
- package/dist/lib/engine/handlers/ParallelForEachHandler.js +11 -2
- package/dist/lib/engine/handlers/SubflowInputMapper.js +16 -4
- package/dist/lib/reactive/arrayTraps.js +7 -5
- package/dist/lib/reactive/createTypedScope.js +17 -9
- package/dist/lib/reactive/handles.js +112 -0
- package/dist/lib/reactive/index.js +6 -2
- package/dist/types/advanced.d.ts +1 -1
- package/dist/types/lib/engine/handlers/ParallelForEachHandler.d.ts +8 -0
- package/dist/types/lib/engine/handlers/SubflowInputMapper.d.ts +10 -1
- package/dist/types/lib/reactive/handles.d.ts +46 -0
- package/dist/types/lib/reactive/index.d.ts +1 -0
- package/package.json +1 -1
package/CLAUDE.md
CHANGED
|
@@ -13,7 +13,7 @@ Entry points: `footprintjs` (public API) · `/recorders` (factories) · `/trace`
|
|
|
13
13
|
| schema/ | duck-typed validation (`.safeParse/.parse` ⇒ 'parseable') |
|
|
14
14
|
| builder/ | fluent DSL → FlowChartSpec → StageNode graph; build-time StructureRecorder channel. NOT standalone: imports runner's makeRunnable (FlowChartBuilder.ts:18) |
|
|
15
15
|
| scope/ | ScopeFacade per stage (tracked get/set, $emit, frozen args/env); built-in ScopeRecorders in scope/recorders/ |
|
|
16
|
-
| reactive/ | TypedScope deep Proxy over the facade — four write laws + the honest boundary (what `find`/`for…of` hands back is raw and WARNED ABOUT in dev mode, not intercepted; a proxy held past its stage IS refused — `ScopeFacade` · `assertLive`); see src/lib/reactive/README.md |
|
|
16
|
+
| reactive/ | TypedScope deep Proxy over the facade — four write laws + the honest boundary (what `find`/`for…of` hands back is raw and WARNED ABOUT in dev mode, not intercepted; a proxy held past its stage IS refused — `ScopeFacade` · `assertLive`); handles.ts = the registry of every proxy the factories built → the value behind it, asked wherever the LIBRARY carries an app value across a stage (fan-out `resolveItems`, subflow in/out mappers, `$setValue`/`$update`/`$batchArray`) — 9.23.3, after a fan-out over object items seeded the handle and lost every child; see src/lib/reactive/README.md |
|
|
17
17
|
| decide/ | decide()/select() evidence capture |
|
|
18
18
|
| recorder/ | stores (KeyedStore/SequenceStore/BoundaryStateStore), CombinedRecorder routing, built-ins (Topology/InOut/ControlDep/Quality) |
|
|
19
19
|
| slice/ | variable-first backward slicing (triage query layer): sliceForKey (anchor at last writer → causalChain) + arrayProvenance/elementProvenance (append-fold element births — the agent mega-key fix) + KeysReadSource strategies. Pure post-hoc queries; imports memory/ ONLY (see src/lib/slice/README.md) |
|
|
@@ -85,7 +85,7 @@ Seven mechanisms, no state rollback anywhere: **M1** TransactionBuffer staging +
|
|
|
85
85
|
## Landmines
|
|
86
86
|
1. TypedScope's set trap JSON-round-trips the ASSIGNED VALUE of every object write (`reactive/structuralWrite.ts` · `unwrapProxy`, called from createTypedScope's top-level/nested set traps and, since 9.23.0, from the ARRAY TRAPS themselves — `arrayTraps.ts` index set, `MUTATING_METHODS` arguments, element-proxy leaf) — Date→string, Map→{}, undefined drops; `$setValue` bypasses it, so the two write paths store different bytes. Scope is the assigned value only, and since 9.23.0 that is true for ELEMENT writes too: the array commit callbacks in `createTypedScope` used to round-trip the WHOLE rebuilt array (stringifying every untouched sibling, O(N) per element write); now the rebuilt array is committed as it is and untouched siblings pass through by reference (pinned: test/lib/reactive/scenario/assigned-value-only.test.ts). A whole-array ASSIGNMENT (`s.arr = [...]`) still round-trips every element — the array IS the assigned value. The shape work the round-trip did for free is explicit now: `delete arr[i]`, a write past the end and `length` growth spell holes as `null` (`arrayTraps` · `fillHoles`). The surrounding state reaches the buffer by reference and is detached with `structuredClone` at commit, which keeps Dates and Maps (9.22.0 / 9.23.0).
|
|
87
87
|
2. Fork "parent breaks when ALL children broke" is implemented (ChildrenExecutor.ts:53) but **unwired** — every live call site passes parentBreakFlag=undefined; fork breaks do NOT propagate in real runs.
|
|
88
|
-
3. **First bite CLOSED (9.23.0 — clone once at commit):** `TransactionBuffer` · `set` now stores the REFERENCE in `overwritePatch` too (it always did in `workingCopy`) and the record's copy is taken ONCE per surviving path when the payload leaves the buffer (`toChangeOnlyPayload` / `toDeltaPayload`); `StageContext` · `trackWrite` holds the reference + verdict in `_pendingWrites` and `materialiseWrites` takes the retained form once per key at `commit()`. So `$setValue(k, o); o.x = 1` commits `x: 1` — what the stage read back — instead of a stale write-time snapshot (pinned: test/lib/memory/scenario/clone-once-at-commit.test.ts). The law "the record never aliases a caller's object" holds at the commit boundary; a mutation AFTER commit reaches nothing. Two things to keep in mind: (a) the engine's OWN nested ops (`set a` then `merge a.b` — the buffer driven directly; the proxy writes root keys) must not edit through a shared container, because only `workingCopy` receives a nested merge's result — `detachHeldAncestors` clones the held ancestor in `overwritePatch` first (the design page missed this; the `set-merge-interleaved` 9.22.0 reference pins it); (b) an UNCLONEABLE value (function, Proxy) now fails at COMMIT, not at the write — the run still fails loudly with the `DataCloneError`, the stage cannot catch it, and none of that stage's writes land. The element-write loop's other O(N)-per-write cost, the array commit callbacks' whole-array JSON round-trip, went in the same release (landmine 1, second moved behaviour); what remains per element write is the array proxy's own shallow copy-on-write (`arrayTraps` · `replaceInElement` / the traps' `[...getCurrent()]`, ~9 µs at N = 10k) — bench 1k 5.7 ms, 10k 104 ms. **Second bite — a raw element held past its stage:** a value obtained through `find`/`filter`/`for…of`/`$getValue`/`$read`/`$toRaw` in stage A and mutated in stage B is the committed object itself, so the mutation edits committed state with no row, and the dev-mode guard (`StageContext` · `warnOnBorrowedMutation`) sees it only if B also READS that key. Cannot be trapped; documented in src/lib/reactive/README.md ("A handle is bound to its stage"). A PROXY held that long is refused at the write (`ScopeFacade` · `assertLive`, sealed by the commit observer — the refusal lives on the facade, not `stageWrite`, because the frame's post-commit re-use is what the engine's double-commit paths need).
|
|
88
|
+
3. **First bite CLOSED (9.23.0 — clone once at commit):** `TransactionBuffer` · `set` now stores the REFERENCE in `overwritePatch` too (it always did in `workingCopy`) and the record's copy is taken ONCE per surviving path when the payload leaves the buffer (`toChangeOnlyPayload` / `toDeltaPayload`); `StageContext` · `trackWrite` holds the reference + verdict in `_pendingWrites` and `materialiseWrites` takes the retained form once per key at `commit()`. So `$setValue(k, o); o.x = 1` commits `x: 1` — what the stage read back — instead of a stale write-time snapshot (pinned: test/lib/memory/scenario/clone-once-at-commit.test.ts). The law "the record never aliases a caller's object" holds at the commit boundary; a mutation AFTER commit reaches nothing. Two things to keep in mind: (a) the engine's OWN nested ops (`set a` then `merge a.b` — the buffer driven directly; the proxy writes root keys) must not edit through a shared container, because only `workingCopy` receives a nested merge's result — `detachHeldAncestors` clones the held ancestor in `overwritePatch` first (the design page missed this; the `set-merge-interleaved` 9.22.0 reference pins it); (b) an UNCLONEABLE value (function, foreign Proxy) now fails at COMMIT, not at the write — the run still fails loudly with the `DataCloneError`, the stage cannot catch it, and none of that stage's writes land. The scope's OWN proxies are not uncloneable values at the boundaries the library owns (9.23.3, `reactive/handles.ts`): a handle handed to the fan-out selector, a subflow mapper or `$setValue` is swapped for the value behind it first — a handle buried inside a hand-built value elsewhere (an `interrupt` payload, a `$emit` payload) still fails at the clone. The element-write loop's other O(N)-per-write cost, the array commit callbacks' whole-array JSON round-trip, went in the same release (landmine 1, second moved behaviour); what remains per element write is the array proxy's own shallow copy-on-write (`arrayTraps` · `replaceInElement` / the traps' `[...getCurrent()]`, ~9 µs at N = 10k) — bench 1k 5.7 ms, 10k 104 ms. **Second bite — a raw element held past its stage:** a value obtained through `find`/`filter`/`for…of`/`$getValue`/`$read`/`$toRaw` in stage A and mutated in stage B is the committed object itself, so the mutation edits committed state with no row, and the dev-mode guard (`StageContext` · `warnOnBorrowedMutation`) sees it only if B also READS that key. Cannot be trapped; documented in src/lib/reactive/README.md ("A handle is bound to its stage"). A PROXY held that long is refused at the write (`ScopeFacade` · `assertLive`, sealed by the commit observer — the refusal lives on the facade, not `stageWrite`, because the frame's post-commit re-use is what the engine's double-commit paths need).
|
|
89
89
|
4. **NOT a landmine any more (9.22.0), recorded because it was one:** an indexed array read (`arr[i]`) used to hand back the RAW element, and a nested array write committed with the `merge` verb whose array arm is a set UNION. Both are fixed at the root — `reactive/arrayTraps.ts` wraps elements, and a nested array commits as a `set` of its ROOT KEY (`createTypedScope` · nested array commit callback). Consequences to keep in mind: an array ASSIGNMENT now REPLACES at every depth (`$update` is still the append), and a nested array write appears in `bundle.overwrite`/verb `set`, not `bundle.updates`/verb `merge`. What the proxy still cannot see — an element reached via `find`/`filter`/`for…of`/`forEach` — is REPORTED loudly instead: `StageContext` · `warnOnBorrowedMutation` (a dev-mode WARNING at the frame's first commit, under `readTracking: 'full'` only — a report after the fact, not a refusal). `memory/utils.ts` · `equalPairs` has typed arms (Date by instant, Map/Set by members) so a `$setValue` of a new Date/Set is a change, not a no-op. Every proxy (nested/terminal/element) READS LIVE through `reactive/liveView.ts` — a held handle sees its own writes; it answers from the captured object only when the path is gone. See src/lib/reactive/README.md. **Named, not fixed (out of contract):** a cyclic self-reference reached through a terminal proxy commits array/element writes to the WRONG place (row recorded, fold agrees, value lands beside the cycle edge); a top-level key containing U+001F (the path separator) throws at the seed; an expando on an array (`arr.foo = 1`) is dropped by the array proxy's set trap (indices and `length` only).
|
|
90
90
|
|
|
91
91
|
## Pointers
|
package/dist/advanced.js
CHANGED
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
* Import via: import { ... } from 'footprint/advanced'
|
|
22
22
|
*/
|
|
23
23
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
-
exports.
|
|
25
|
-
exports.zodToJsonSchema = exports.normalizeSchema = exports.evaluateFilter = exports.findLastWriter = exports.findCommits = exports.findCommit = exports.parseRuntimeStageId = exports.createExecutionCounter = exports.buildRuntimeStageId = exports.SubflowExecutor = exports.StageRunner = exports.SelectorHandler = exports.seedSubflowGlobalStore = exports.RuntimeStructureManager = exports.NodeResolver = exports.getInitialScopeValues = exports.extractParentScopeValues = void 0;
|
|
24
|
+
exports.ContinuationResolver = exports.computeNodeType = exports.ChildrenExecutor = exports.applyOutputMapping = exports.NullControlFlowNarrativeGenerator = exports.isStageNodeReturn = exports.FlowchartTraverser = exports.valueBehind = exports.unwrapHandles = exports.shouldWrapWithProxy = exports.SCOPE_METHOD_NAMES = exports.joinPath = exports.isHandle = exports.createArrayProxy = exports.buildNestedPatch = exports.BREAK_SETTER = exports.ExecutionRuntime = exports.toScopeFactory = exports.resolveScopeProvider = exports.registerScopeResolver = exports.makeFactoryProvider = exports.makeClassProvider = exports.looksLikeFactory = exports.looksLikeClassCtor = exports.isSubclassOfScopeFacade = exports.attachScopeMethods = exports.ScopeFacade = exports.createProtectedScope = exports.createErrorMessage = exports.createTypedScopeFactory = exports.specToStageNode = exports.SelectorFnList = exports.DeciderList = exports.ArrayMergeMode = exports.updateValue = exports.updateNestedValue = exports.setNestedValue = exports.redactPatch = exports.pathSegments = exports.normalisePath = exports.getRunAndGlobalPaths = exports.getNestedValue = exports.deepSmartMerge = exports.applySmartMerge = exports.RedactionRule = exports.DiagnosticCollector = exports.TransactionBuffer = exports.EventLog = exports.StageContext = exports.SharedMemory = void 0;
|
|
25
|
+
exports.zodToJsonSchema = exports.normalizeSchema = exports.evaluateFilter = exports.findLastWriter = exports.findCommits = exports.findCommit = exports.parseRuntimeStageId = exports.createExecutionCounter = exports.buildRuntimeStageId = exports.SubflowExecutor = exports.StageRunner = exports.SelectorHandler = exports.seedSubflowGlobalStore = exports.RuntimeStructureManager = exports.NodeResolver = exports.getInitialScopeValues = exports.extractParentScopeValues = exports.DEFAULT_MAX_ITERATIONS = exports.DeciderHandler = exports.createSubflowHandlerDeps = void 0;
|
|
26
26
|
var index_js_1 = require("./lib/memory/index.js");
|
|
27
27
|
Object.defineProperty(exports, "SharedMemory", { enumerable: true, get: function () { return index_js_1.SharedMemory; } });
|
|
28
28
|
var index_js_2 = require("./lib/memory/index.js");
|
|
@@ -73,9 +73,12 @@ var index_js_12 = require("./lib/reactive/index.js");
|
|
|
73
73
|
Object.defineProperty(exports, "BREAK_SETTER", { enumerable: true, get: function () { return index_js_12.BREAK_SETTER; } });
|
|
74
74
|
Object.defineProperty(exports, "buildNestedPatch", { enumerable: true, get: function () { return index_js_12.buildNestedPatch; } });
|
|
75
75
|
Object.defineProperty(exports, "createArrayProxy", { enumerable: true, get: function () { return index_js_12.createArrayProxy; } });
|
|
76
|
+
Object.defineProperty(exports, "isHandle", { enumerable: true, get: function () { return index_js_12.isHandle; } });
|
|
76
77
|
Object.defineProperty(exports, "joinPath", { enumerable: true, get: function () { return index_js_12.joinPath; } });
|
|
77
78
|
Object.defineProperty(exports, "SCOPE_METHOD_NAMES", { enumerable: true, get: function () { return index_js_12.SCOPE_METHOD_NAMES; } });
|
|
78
79
|
Object.defineProperty(exports, "shouldWrapWithProxy", { enumerable: true, get: function () { return index_js_12.shouldWrapWithProxy; } });
|
|
80
|
+
Object.defineProperty(exports, "unwrapHandles", { enumerable: true, get: function () { return index_js_12.unwrapHandles; } });
|
|
81
|
+
Object.defineProperty(exports, "valueBehind", { enumerable: true, get: function () { return index_js_12.valueBehind; } });
|
|
79
82
|
var index_js_13 = require("./lib/engine/index.js");
|
|
80
83
|
Object.defineProperty(exports, "FlowchartTraverser", { enumerable: true, get: function () { return index_js_13.FlowchartTraverser; } });
|
|
81
84
|
var index_js_14 = require("./lib/engine/index.js");
|
|
@@ -118,4 +121,4 @@ Object.defineProperty(exports, "evaluateFilter", { enumerable: true, get: functi
|
|
|
118
121
|
var index_js_18 = require("./lib/contract/index.js");
|
|
119
122
|
Object.defineProperty(exports, "normalizeSchema", { enumerable: true, get: function () { return index_js_18.normalizeSchema; } });
|
|
120
123
|
Object.defineProperty(exports, "zodToJsonSchema", { enumerable: true, get: function () { return index_js_18.zodToJsonSchema; } });
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYWR2YW5jZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7R0FZRztBQUNIOzs7Ozs7O0dBT0c7Ozs7QUFxQkgsa0RBQXFEO0FBQTVDLHdHQUFBLFlBQVksT0FBQTtBQUNyQixrREFBcUQ7QUFBNUMsd0dBQUEsWUFBWSxPQUFBO0FBQ3JCLGtEQUFpRDtBQUF4QyxvR0FBQSxRQUFRLE9BQUE7QUFDakIsa0RBQTBEO0FBQWpELDZHQUFBLGlCQUFpQixPQUFBO0FBQzFCLGtEQUE0RDtBQUFuRCwrR0FBQSxtQkFBbUIsT0FBQTtBQUM1QixrREFBc0Q7QUFBN0MseUdBQUEsYUFBYSxPQUFBO0FBQ3RCLGtEQVcrQjtBQVY3QiwyR0FBQSxlQUFlLE9BQUE7QUFDZiwwR0FBQSxjQUFjLE9BQUE7QUFDZCwwR0FBQSxjQUFjLE9BQUE7QUFDZCxnSEFBQSxvQkFBb0IsT0FBQTtBQUNwQix5R0FBQSxhQUFhLE9BQUE7QUFDYix3R0FBQSxZQUFZLE9BQUE7QUFDWix1R0FBQSxXQUFXLE9BQUE7QUFDWCwwR0FBQSxjQUFjLE9BQUE7QUFDZCw2R0FBQSxpQkFBaUIsT0FBQTtBQUNqQix1R0FBQSxXQUFXLE9BQUE7QUF1QmIsbURBQXNHO0FBQTdGLDBHQUFBLGNBQWMsT0FBQTtBQUFFLHVHQUFBLFdBQVcsT0FBQTtBQUFFLDBHQUFBLGNBQWMsT0FBQTtBQUFFLDJHQUFBLGVBQWUsT0FBQTtBQUNyRSxxRUFBMEU7QUFBakUsNEhBQUEsdUJBQXVCLE9BQUE7QUFhaEMsaURBQTZGO0FBQXBGLDhHQUFBLGtCQUFrQixPQUFBO0FBQUUsZ0hBQUEsb0JBQW9CLE9BQUE7QUFBRSx1R0FBQSxXQUFXLE9BQUE7QUFDOUQsa0RBVThCO0FBVDVCLCtHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLG9IQUFBLHVCQUF1QixPQUFBO0FBQ3ZCLCtHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLDZHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDhHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLGdIQUFBLG1CQUFtQixPQUFBO0FBQ25CLGtIQUFBLHFCQUFxQixPQUFBO0FBQ3JCLGlIQUFBLG9CQUFvQixPQUFBO0FBQ3BCLDJHQUFBLGNBQWMsT0FBQTtBQXlCaEIsbURBQXlEO0FBQWhELDZHQUFBLGdCQUFnQixPQUFBO0FBT3pCLHFEQU9pQztBQU4vQix5R0FBQSxZQUFZLE9BQUE7QUFDWiw2R0FBQSxnQkFBZ0IsT0FBQTtBQUNoQiw2R0FBQSxnQkFBZ0IsT0FBQTtBQUNoQixxR0FBQSxRQUFRLE9BQUE7QUFDUiwrR0FBQSxrQkFBa0IsT0FBQTtBQUNsQixnSEFBQSxtQkFBbUIsT0FBQTtBQVNyQixtREFBMkQ7QUFBbEQsK0dBQUEsa0JBQWtCLE9BQUE7QUFDM0IsbURBQTBEO0FBQWpELDhHQUFBLGlCQUFpQixPQUFBO0FBbUIxQixtREFBMEU7QUFBakUsOEhBQUEsaUNBQWlDLE9BQUE7QUFJMUMsbURBZ0IrQjtBQWY3QiwrR0FBQSxrQkFBa0IsT0FBQTtBQUNsQiw2R0FBQSxnQkFBZ0IsT0FBQTtBQUNoQiw0R0FBQSxlQUFlLE9BQUE7QUFDZixpSEFBQSxvQkFBb0IsT0FBQTtBQUNwQixxSEFBQSx3QkFBd0IsT0FBQTtBQUN4QiwyR0FBQSxjQUFjLE9BQUE7QUFDZCxtSEFBQSxzQkFBc0IsT0FBQTtBQUN0QixxSEFBQSx3QkFBd0IsT0FBQTtBQUN4QixrSEFBQSxxQkFBcUIsT0FBQTtBQUNyQix5R0FBQSxZQUFZLE9BQUE7QUFDWixvSEFBQSx1QkFBdUIsT0FBQTtBQUN2QixtSEFBQSxzQkFBc0IsT0FBQTtBQUN0Qiw0R0FBQSxlQUFlLE9BQUE7QUFDZix3R0FBQSxXQUFXLE9BQUE7QUFDWCw0R0FBQSxlQUFlLE9BQUE7QUFLakIsb0VBQWtIO0FBQXpHLHdIQUFBLG1CQUFtQixPQUFBO0FBQUUsMkhBQUEsc0JBQXNCLE9BQUE7QUFBRSx3SEFBQSxtQkFBbUIsT0FBQTtBQUN6RSxvRUFBeUY7QUFBaEYsK0dBQUEsVUFBVSxPQUFBO0FBQUUsZ0hBQUEsV0FBVyxPQUFBO0FBQUUsbUhBQUEsY0FBYyxPQUFBO0FBVWhELG1EQUF1RDtBQUE5QywyR0FBQSxjQUFjLE9BQUE7QUFFdkIsK0VBQStFO0FBQy9FLDZEQUE2RDtBQUM3RCwrRUFBK0U7QUFDL0UsMEVBQTBFO0FBQzFFLDBFQUEwRTtBQUMxRSx1RUFBdUU7QUFDdkUsMkVBQTJFO0FBQzNFLHFEQUEyRTtBQUFsRSw0R0FBQSxlQUFlLE9BQUE7QUFBRSw0R0FBQSxlQUFlLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGZvb3RwcmludGpzL2FkdmFuY2VkIOKAlCBMb3ctbGV2ZWwgaW50ZXJuYWxzIGZvciBjdXN0b20gZXhlY3V0aW9uIGVuZ2luZXMgYW5kIHRlc3RpbmcuXG4gKlxuICogTW9zdCB1c2VycyBuZXZlciBuZWVkIHRoaXMuIFVzZSBgZm9vdHByaW50anNgIChtYWluKSBpbnN0ZWFkLlxuICogVGhpcyBlbnRyeSBwb2ludCBleHBvc2VzIGBTaGFyZWRNZW1vcnlgLCBgU3RhZ2VDb250ZXh0YCwgYEZsb3djaGFydFRyYXZlcnNlcmAsXG4gKiBhbmQgb3RoZXIgcHJpbWl0aXZlcyB0aGF0IHBvd2VyIHRoZSBlbmdpbmUuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IFNoYXJlZE1lbW9yeSwgU3RhZ2VDb250ZXh0IH0gZnJvbSAnZm9vdHByaW50anMvYWR2YW5jZWQnO1xuICogYGBgXG4gKlxuICogQG1vZHVsZSBhZHZhbmNlZFxuICovXG4vKipcbiAqIEZvb3RQcmludCDigJQgQWR2YW5jZWQgLyBJbnRlcm5hbCBBUElcbiAqXG4gKiBUaGVzZSBleHBvcnRzIGFyZSBmb3IgYWR2YW5jZWQgdXNlIGNhc2VzLCB0ZXN0aW5nLCBhbmQgYnVpbGRpbmdcbiAqIGN1c3RvbSBleGVjdXRpb24gZW5naW5lcy4gTW9zdCB1c2VycyBzaG91bGQgdXNlIHRoZSBtYWluICdmb290cHJpbnQnIGVudHJ5IHBvaW50LlxuICpcbiAqIEltcG9ydCB2aWE6IGltcG9ydCB7IC4uLiB9IGZyb20gJ2Zvb3RwcmludC9hZHZhbmNlZCdcbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZW1vcnkg4oCUIExvdy1sZXZlbCB0cmFuc2FjdGlvbmFsIHN0YXRlIHByaW1pdGl2ZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBDb21taXRCdW5kbGUsXG4gIEZsb3dDb250cm9sVHlwZSxcbiAgRmxvd01lc3NhZ2UsXG4gIE1lbW9yeVBhdGNoLFxuICBSZWFkU3VtbWFyeU1hcmtlcixcbiAgUmVhZFRyYWNraW5nTW9kZSxcbiAgUmV0ZW50aW9uUG9saWN5LFxuICBTdGFnZVNuYXBzaG90LFxuICBUcmFjZUVudHJ5LFxuICBVbnRyYWNrZWRTb3VyY2UsXG4gIFdyaXRlU3VtbWFyeU1hcmtlcixcbiAgV3JpdGVUcmFja2luZ01vZGUsXG59IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgdHlwZSB7IFJlZGFjdGlvblZlcmRpY3QgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgU2hhcmVkTWVtb3J5IH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IFN0YWdlQ29udGV4dCB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBFdmVudExvZyB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBUcmFuc2FjdGlvbkJ1ZmZlciB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBEaWFnbm9zdGljQ29sbGVjdG9yIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IFJlZGFjdGlvblJ1bGUgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHtcbiAgYXBwbHlTbWFydE1lcmdlLFxuICBkZWVwU21hcnRNZXJnZSxcbiAgZ2V0TmVzdGVkVmFsdWUsXG4gIGdldFJ1bkFuZEdsb2JhbFBhdGhzLFxuICBub3JtYWxpc2VQYXRoLFxuICBwYXRoU2VnbWVudHMsXG4gIHJlZGFjdFBhdGNoLFxuICBzZXROZXN0ZWRWYWx1ZSxcbiAgdXBkYXRlTmVzdGVkVmFsdWUsXG4gIHVwZGF0ZVZhbHVlLFxufSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCdWlsZGVyIOKAlCBUeXBlcyBhbmQgaW50ZXJuYWxzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHtcbiAgRXhlY09wdGlvbnMsXG4gIEZsb3dDaGFydE9wdGlvbnMsXG4gIEZsb3dDaGFydFNwZWMsXG4gIElMb2dnZXIsXG4gIFNjb3BlUHJvdGVjdGlvbk1vZGUsXG4gIFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSxcbiAgU2ltcGxpZmllZFBhcmFsbGVsU3BlYyxcbiAgU3RhZ2VGbixcbiAgU3RhZ2VOb2RlLFxuICBTdHJlYW1DYWxsYmFjayxcbiAgU3RyZWFtTGlmZWN5Y2xlSGFuZGxlcixcbiAgU3RyZWFtVG9rZW5IYW5kbGVyLFxuICBTdWJmbG93TW91bnRPcHRpb25zLFxuICBTdWJmbG93UmVmLFxufSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcbmV4cG9ydCB7IEFycmF5TWVyZ2VNb2RlLCBEZWNpZGVyTGlzdCwgU2VsZWN0b3JGbkxpc3QsIHNwZWNUb1N0YWdlTm9kZSB9IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgY3JlYXRlVHlwZWRTY29wZUZhY3RvcnkgfSBmcm9tICcuL2xpYi9idWlsZGVyL3R5cGVkRmxvd0NoYXJ0LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2NvcGUg4oCUIFByb3ZpZGVycywgcHJvdGVjdGlvbiwgcmVjb3JkZXIgb3B0aW9ucywgYW5kIGV2ZW50IHR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHtcbiAgUHJvdmlkZXJSZXNvbHZlcixcbiAgUmVzb2x2ZU9wdGlvbnMsXG4gIFNjb3BlUHJvdmlkZXIsXG4gIFN0YWdlQ29udGV4dExpa2UsXG4gIFN0cmljdE1vZGUsXG59IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcbmV4cG9ydCB7IGNyZWF0ZUVycm9yTWVzc2FnZSwgY3JlYXRlUHJvdGVjdGVkU2NvcGUsIFNjb3BlRmFjYWRlIH0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuZXhwb3J0IHtcbiAgYXR0YWNoU2NvcGVNZXRob2RzLFxuICBpc1N1YmNsYXNzT2ZTY29wZUZhY2FkZSxcbiAgbG9va3NMaWtlQ2xhc3NDdG9yLFxuICBsb29rc0xpa2VGYWN0b3J5LFxuICBtYWtlQ2xhc3NQcm92aWRlcixcbiAgbWFrZUZhY3RvcnlQcm92aWRlcixcbiAgcmVnaXN0ZXJTY29wZVJlc29sdmVyLFxuICByZXNvbHZlU2NvcGVQcm92aWRlcixcbiAgdG9TY29wZUZhY3RvcnksXG59IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLy8gU2NvcGVSZWNvcmRlciBjb25maWcvb3B0aW9uIHR5cGVzXG5leHBvcnQgdHlwZSB7XG4gIEFnZ3JlZ2F0ZWRNZXRyaWNzLFxuICBEZWJ1Z0VudHJ5LFxuICBEZWJ1Z1JlY29yZGVyT3B0aW9ucyxcbiAgRGVidWdWZXJib3NpdHksXG4gIFJlY29yZGVyQ29udGV4dCxcbiAgU3RhZ2VFdmVudCxcbiAgU3RhZ2VNZXRyaWNzLFxufSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG4vLyBgRGVmaW5lU2NvcGVPcHRpb25zYCAoem9kIHNjb3BlIG9wdGlvbnMpIG1vdmVkIHRvICdmb290cHJpbnRqcy96b2QnLlxuXG4vLyBab2QgaW50ZXJuYWxzIG1vdmVkIHRvIHRoZSBvcHQtaW4gYGZvb3RwcmludGpzL3pvZGAgZW50cnkgKGtlZXBzIHpvZCDigJQgYW5cbi8vIG9wdGlvbmFsIHBlZXIg4oCUIG91dCBvZiB0aGUgYGZvb3RwcmludGpzL2FkdmFuY2VkYCBsb2FkIHBhdGgpLiBJbXBvcnRcbi8vIGNyZWF0ZVNjb3BlUHJveHlGcm9tWm9kIC8gZGVmaW5lU2NvcGVTY2hlbWEgLyBpc1Njb3BlU2NoZW1hIC8gWm9kU2NvcGVSZXNvbHZlclxuLy8gZnJvbSAnZm9vdHByaW50anMvem9kJy5cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUnVubmVyIOKAlCBJbnRlcm5hbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBSdW50aW1lU25hcHNob3QgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgRXhlY3V0aW9uUnVudGltZSB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJlYWN0aXZlIOKAlCBUeXBlZFNjb3BlIGludGVybmFscyAoZm9yIGN1c3RvbSBwcm94eSBpbXBsZW1lbnRhdGlvbnMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHsgUmVhY3RpdmVPcHRpb25zLCBSZWFjdGl2ZVRhcmdldCB9IGZyb20gJy4vbGliL3JlYWN0aXZlL2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIEJSRUFLX1NFVFRFUixcbiAgYnVpbGROZXN0ZWRQYXRjaCxcbiAgY3JlYXRlQXJyYXlQcm94eSxcbiAgam9pblBhdGgsXG4gIFNDT1BFX01FVEhPRF9OQU1FUyxcbiAgc2hvdWxkV3JhcFdpdGhQcm94eSxcbn0gZnJvbSAnLi9saWIvcmVhY3RpdmUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFbmdpbmUg4oCUIERGUyBncmFwaCB0cmF2ZXJzYWwgaW50ZXJuYWxzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHsgVHJhdmVyc2VyT3B0aW9ucyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgdHlwZSB7IERlY2lkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgRmxvd2NoYXJ0VHJhdmVyc2VyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IGlzU3RhZ2VOb2RlUmV0dXJuIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gTmFycmF0aXZlIGludGVybmFsc1xuZXhwb3J0IHR5cGUgeyBJQ29udHJvbEZsb3dOYXJyYXRpdmUgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHR5cGUgeyBDb21iaW5lZE5hcnJhdGl2ZUVudHJ5LCBDb21iaW5lZE5hcnJhdGl2ZU9wdGlvbnMgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHR5cGUge1xuICBCcmFuY2hSZXN1bHQsXG4gIEJyYW5jaFJlc3VsdHMsXG4gIFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSBhcyBFbmdpbmVTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUsXG4gIEhhbmRsZXJEZXBzLFxuICBJRXhlY3V0aW9uUnVudGltZSxcbiAgTm9kZVJlc3VsdFR5cGUsXG4gIFJ1bnRpbWVTdHJ1Y3R1cmVNZXRhZGF0YSxcbiAgU2NvcGVGYWN0b3J5LFxuICBTZXJpYWxpemVkUGlwZWxpbmVOb2RlLFxuICBTdGFnZUZ1bmN0aW9uLFxuICBTdWJmbG93UmVzdWx0LFxuICBUcmF2ZXJzYWxSZXN1bHQsXG59IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBOdWxsQ29udHJvbEZsb3dOYXJyYXRpdmVHZW5lcmF0b3IgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyBIYW5kbGVycyAodGVzdGluZyAvIGN1c3RvbSBlbmdpbmVzKVxuZXhwb3J0IHR5cGUgeyBFeGVjdXRlTm9kZUZuLCBSdW5TdGFnZUZuIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIGFwcGx5T3V0cHV0TWFwcGluZyxcbiAgQ2hpbGRyZW5FeGVjdXRvcixcbiAgY29tcHV0ZU5vZGVUeXBlLFxuICBDb250aW51YXRpb25SZXNvbHZlcixcbiAgY3JlYXRlU3ViZmxvd0hhbmRsZXJEZXBzLFxuICBEZWNpZGVySGFuZGxlcixcbiAgREVGQVVMVF9NQVhfSVRFUkFUSU9OUyxcbiAgZXh0cmFjdFBhcmVudFNjb3BlVmFsdWVzLFxuICBnZXRJbml0aWFsU2NvcGVWYWx1ZXMsXG4gIE5vZGVSZXNvbHZlcixcbiAgUnVudGltZVN0cnVjdHVyZU1hbmFnZXIsXG4gIHNlZWRTdWJmbG93R2xvYmFsU3RvcmUsXG4gIFNlbGVjdG9ySGFuZGxlcixcbiAgU3RhZ2VSdW5uZXIsXG4gIFN1YmZsb3dFeGVjdXRvcixcbn0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gVHJhY2UgdXRpbGl0aWVzIOKAlCByZS1leHBvcnRlZCBoZXJlIGZvciBjb252ZW5pZW5jZS4gQ2Fub25pY2FsIHBhdGg6ICdmb290cHJpbnRqcy90cmFjZSdcbmV4cG9ydCB0eXBlIHsgRXhlY3V0aW9uQ291bnRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9ydW50aW1lU3RhZ2VJZC5qcyc7XG5leHBvcnQgeyBidWlsZFJ1bnRpbWVTdGFnZUlkLCBjcmVhdGVFeGVjdXRpb25Db3VudGVyLCBwYXJzZVJ1bnRpbWVTdGFnZUlkIH0gZnJvbSAnLi9saWIvZW5naW5lL3J1bnRpbWVTdGFnZUlkLmpzJztcbmV4cG9ydCB7IGZpbmRDb21taXQsIGZpbmRDb21taXRzLCBmaW5kTGFzdFdyaXRlciB9IGZyb20gJy4vbGliL21lbW9yeS9jb21taXRMb2dVdGlscy5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERlY2lkZSDigJQgcHVyZSBndWFyZCBldmFsdWF0aW9uIChmb3IgY3VzdG9tIGF2YWlsYWJpbGl0eS9kZWNpc2lvbiBlbmdpbmVzKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gZXZhbHVhdGVGaWx0ZXIgaXMgZW5naW5lLWZyZWU6IGEgcHVyZSBmdW5jdGlvbiBvdmVyIChnZXRWYWx1ZSwgaXNSZWRhY3RlZClcbi8vIGNhbGxiYWNrcyB0aGF0IGV2YWx1YXRlcyBhIFdoZXJlRmlsdGVyIGFuZCByZXR1cm5zIHBlci1jb25kaXRpb24gZXZpZGVuY2UuXG4vLyBFeHRlcm5hbCBkcml2ZXJzIChlLmcuIGhjaWZvb3RwcmludCdzIGF2YWlsYWJsZSgpKSBldmFsdWF0ZSBlZGdlIGd1YXJkcyB3aXRoXG4vLyBpdCBvdXRzaWRlIGFueSBydW4g4oCUIG5vIHNjb3BlLCBubyBjb21taXQsIHdvcmtlci1zYWZlLlxuZXhwb3J0IHR5cGUgeyBGaWx0ZXJDb25kaXRpb24gfSBmcm9tICcuL2xpYi9kZWNpZGUvaW5kZXguanMnO1xuZXhwb3J0IHsgZXZhbHVhdGVGaWx0ZXIgfSBmcm9tICcuL2xpYi9kZWNpZGUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb250cmFjdCDigJQgc2NoZW1hIG5vcm1hbGl6YXRpb24gKGZvciBjdXN0b20gdG9vbCBlbWl0dGVycylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFB1cmUgY2hhcnQtbWV0YWRhdGEgaGVscGVycyBiZWhpbmQgdG9NQ1BUb29sL3RvT3BlbkFQSS4gQ3VzdG9tIGVtaXR0ZXJzXG4vLyAocGVyLWVkZ2UgTUNQIGRlc2NyaXB0b3JzKSByZXVzZSB0aGUgWm9k4oaSSlNPTi1TY2hlbWEgY29udmVyc2lvbiB3aXRob3V0XG4vLyBpbXBvcnRpbmcgdGhlIHJ1bm5lci4gR2F0ZSBpbnB1dHMgd2l0aCBkZXRlY3RTY2hlbWEgKG1haW4gYmFycmVsKTogYVxuLy8gbm9uLVpvZCAncGFyc2VhYmxlJyBzY2hlbWEgKHl1cC9zdXBlcnN0cnVjdCkgcGFzc2VzIHRocm91Z2ggdW5jb252ZXJ0ZWQuXG5leHBvcnQgeyBub3JtYWxpemVTY2hlbWEsIHpvZFRvSnNvblNjaGVtYSB9IGZyb20gJy4vbGliL2NvbnRyYWN0L2luZGV4LmpzJztcbiJdfQ==
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYWR2YW5jZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7R0FZRztBQUNIOzs7Ozs7O0dBT0c7Ozs7QUFxQkgsa0RBQXFEO0FBQTVDLHdHQUFBLFlBQVksT0FBQTtBQUNyQixrREFBcUQ7QUFBNUMsd0dBQUEsWUFBWSxPQUFBO0FBQ3JCLGtEQUFpRDtBQUF4QyxvR0FBQSxRQUFRLE9BQUE7QUFDakIsa0RBQTBEO0FBQWpELDZHQUFBLGlCQUFpQixPQUFBO0FBQzFCLGtEQUE0RDtBQUFuRCwrR0FBQSxtQkFBbUIsT0FBQTtBQUM1QixrREFBc0Q7QUFBN0MseUdBQUEsYUFBYSxPQUFBO0FBQ3RCLGtEQVcrQjtBQVY3QiwyR0FBQSxlQUFlLE9BQUE7QUFDZiwwR0FBQSxjQUFjLE9BQUE7QUFDZCwwR0FBQSxjQUFjLE9BQUE7QUFDZCxnSEFBQSxvQkFBb0IsT0FBQTtBQUNwQix5R0FBQSxhQUFhLE9BQUE7QUFDYix3R0FBQSxZQUFZLE9BQUE7QUFDWix1R0FBQSxXQUFXLE9BQUE7QUFDWCwwR0FBQSxjQUFjLE9BQUE7QUFDZCw2R0FBQSxpQkFBaUIsT0FBQTtBQUNqQix1R0FBQSxXQUFXLE9BQUE7QUF1QmIsbURBQXNHO0FBQTdGLDBHQUFBLGNBQWMsT0FBQTtBQUFFLHVHQUFBLFdBQVcsT0FBQTtBQUFFLDBHQUFBLGNBQWMsT0FBQTtBQUFFLDJHQUFBLGVBQWUsT0FBQTtBQUNyRSxxRUFBMEU7QUFBakUsNEhBQUEsdUJBQXVCLE9BQUE7QUFhaEMsaURBQTZGO0FBQXBGLDhHQUFBLGtCQUFrQixPQUFBO0FBQUUsZ0hBQUEsb0JBQW9CLE9BQUE7QUFBRSx1R0FBQSxXQUFXLE9BQUE7QUFDOUQsa0RBVThCO0FBVDVCLCtHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLG9IQUFBLHVCQUF1QixPQUFBO0FBQ3ZCLCtHQUFBLGtCQUFrQixPQUFBO0FBQ2xCLDZHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLDhHQUFBLGlCQUFpQixPQUFBO0FBQ2pCLGdIQUFBLG1CQUFtQixPQUFBO0FBQ25CLGtIQUFBLHFCQUFxQixPQUFBO0FBQ3JCLGlIQUFBLG9CQUFvQixPQUFBO0FBQ3BCLDJHQUFBLGNBQWMsT0FBQTtBQXlCaEIsbURBQXlEO0FBQWhELDZHQUFBLGdCQUFnQixPQUFBO0FBT3pCLHFEQVVpQztBQVQvQix5R0FBQSxZQUFZLE9BQUE7QUFDWiw2R0FBQSxnQkFBZ0IsT0FBQTtBQUNoQiw2R0FBQSxnQkFBZ0IsT0FBQTtBQUNoQixxR0FBQSxRQUFRLE9BQUE7QUFDUixxR0FBQSxRQUFRLE9BQUE7QUFDUiwrR0FBQSxrQkFBa0IsT0FBQTtBQUNsQixnSEFBQSxtQkFBbUIsT0FBQTtBQUNuQiwwR0FBQSxhQUFhLE9BQUE7QUFDYix3R0FBQSxXQUFXLE9BQUE7QUFTYixtREFBMkQ7QUFBbEQsK0dBQUEsa0JBQWtCLE9BQUE7QUFDM0IsbURBQTBEO0FBQWpELDhHQUFBLGlCQUFpQixPQUFBO0FBbUIxQixtREFBMEU7QUFBakUsOEhBQUEsaUNBQWlDLE9BQUE7QUFJMUMsbURBZ0IrQjtBQWY3QiwrR0FBQSxrQkFBa0IsT0FBQTtBQUNsQiw2R0FBQSxnQkFBZ0IsT0FBQTtBQUNoQiw0R0FBQSxlQUFlLE9BQUE7QUFDZixpSEFBQSxvQkFBb0IsT0FBQTtBQUNwQixxSEFBQSx3QkFBd0IsT0FBQTtBQUN4QiwyR0FBQSxjQUFjLE9BQUE7QUFDZCxtSEFBQSxzQkFBc0IsT0FBQTtBQUN0QixxSEFBQSx3QkFBd0IsT0FBQTtBQUN4QixrSEFBQSxxQkFBcUIsT0FBQTtBQUNyQix5R0FBQSxZQUFZLE9BQUE7QUFDWixvSEFBQSx1QkFBdUIsT0FBQTtBQUN2QixtSEFBQSxzQkFBc0IsT0FBQTtBQUN0Qiw0R0FBQSxlQUFlLE9BQUE7QUFDZix3R0FBQSxXQUFXLE9BQUE7QUFDWCw0R0FBQSxlQUFlLE9BQUE7QUFLakIsb0VBQWtIO0FBQXpHLHdIQUFBLG1CQUFtQixPQUFBO0FBQUUsMkhBQUEsc0JBQXNCLE9BQUE7QUFBRSx3SEFBQSxtQkFBbUIsT0FBQTtBQUN6RSxvRUFBeUY7QUFBaEYsK0dBQUEsVUFBVSxPQUFBO0FBQUUsZ0hBQUEsV0FBVyxPQUFBO0FBQUUsbUhBQUEsY0FBYyxPQUFBO0FBVWhELG1EQUF1RDtBQUE5QywyR0FBQSxjQUFjLE9BQUE7QUFFdkIsK0VBQStFO0FBQy9FLDZEQUE2RDtBQUM3RCwrRUFBK0U7QUFDL0UsMEVBQTBFO0FBQzFFLDBFQUEwRTtBQUMxRSx1RUFBdUU7QUFDdkUsMkVBQTJFO0FBQzNFLHFEQUEyRTtBQUFsRSw0R0FBQSxlQUFlLE9BQUE7QUFBRSw0R0FBQSxlQUFlLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIGZvb3RwcmludGpzL2FkdmFuY2VkIOKAlCBMb3ctbGV2ZWwgaW50ZXJuYWxzIGZvciBjdXN0b20gZXhlY3V0aW9uIGVuZ2luZXMgYW5kIHRlc3RpbmcuXG4gKlxuICogTW9zdCB1c2VycyBuZXZlciBuZWVkIHRoaXMuIFVzZSBgZm9vdHByaW50anNgIChtYWluKSBpbnN0ZWFkLlxuICogVGhpcyBlbnRyeSBwb2ludCBleHBvc2VzIGBTaGFyZWRNZW1vcnlgLCBgU3RhZ2VDb250ZXh0YCwgYEZsb3djaGFydFRyYXZlcnNlcmAsXG4gKiBhbmQgb3RoZXIgcHJpbWl0aXZlcyB0aGF0IHBvd2VyIHRoZSBlbmdpbmUuXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IFNoYXJlZE1lbW9yeSwgU3RhZ2VDb250ZXh0IH0gZnJvbSAnZm9vdHByaW50anMvYWR2YW5jZWQnO1xuICogYGBgXG4gKlxuICogQG1vZHVsZSBhZHZhbmNlZFxuICovXG4vKipcbiAqIEZvb3RQcmludCDigJQgQWR2YW5jZWQgLyBJbnRlcm5hbCBBUElcbiAqXG4gKiBUaGVzZSBleHBvcnRzIGFyZSBmb3IgYWR2YW5jZWQgdXNlIGNhc2VzLCB0ZXN0aW5nLCBhbmQgYnVpbGRpbmdcbiAqIGN1c3RvbSBleGVjdXRpb24gZW5naW5lcy4gTW9zdCB1c2VycyBzaG91bGQgdXNlIHRoZSBtYWluICdmb290cHJpbnQnIGVudHJ5IHBvaW50LlxuICpcbiAqIEltcG9ydCB2aWE6IGltcG9ydCB7IC4uLiB9IGZyb20gJ2Zvb3RwcmludC9hZHZhbmNlZCdcbiAqL1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNZW1vcnkg4oCUIExvdy1sZXZlbCB0cmFuc2FjdGlvbmFsIHN0YXRlIHByaW1pdGl2ZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBDb21taXRCdW5kbGUsXG4gIEZsb3dDb250cm9sVHlwZSxcbiAgRmxvd01lc3NhZ2UsXG4gIE1lbW9yeVBhdGNoLFxuICBSZWFkU3VtbWFyeU1hcmtlcixcbiAgUmVhZFRyYWNraW5nTW9kZSxcbiAgUmV0ZW50aW9uUG9saWN5LFxuICBTdGFnZVNuYXBzaG90LFxuICBUcmFjZUVudHJ5LFxuICBVbnRyYWNrZWRTb3VyY2UsXG4gIFdyaXRlU3VtbWFyeU1hcmtlcixcbiAgV3JpdGVUcmFja2luZ01vZGUsXG59IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgdHlwZSB7IFJlZGFjdGlvblZlcmRpY3QgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgU2hhcmVkTWVtb3J5IH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IFN0YWdlQ29udGV4dCB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBFdmVudExvZyB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBUcmFuc2FjdGlvbkJ1ZmZlciB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBEaWFnbm9zdGljQ29sbGVjdG9yIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IFJlZGFjdGlvblJ1bGUgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHtcbiAgYXBwbHlTbWFydE1lcmdlLFxuICBkZWVwU21hcnRNZXJnZSxcbiAgZ2V0TmVzdGVkVmFsdWUsXG4gIGdldFJ1bkFuZEdsb2JhbFBhdGhzLFxuICBub3JtYWxpc2VQYXRoLFxuICBwYXRoU2VnbWVudHMsXG4gIHJlZGFjdFBhdGNoLFxuICBzZXROZXN0ZWRWYWx1ZSxcbiAgdXBkYXRlTmVzdGVkVmFsdWUsXG4gIHVwZGF0ZVZhbHVlLFxufSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBCdWlsZGVyIOKAlCBUeXBlcyBhbmQgaW50ZXJuYWxzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHtcbiAgRXhlY09wdGlvbnMsXG4gIEZsb3dDaGFydE9wdGlvbnMsXG4gIEZsb3dDaGFydFNwZWMsXG4gIElMb2dnZXIsXG4gIFNjb3BlUHJvdGVjdGlvbk1vZGUsXG4gIFNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSxcbiAgU2ltcGxpZmllZFBhcmFsbGVsU3BlYyxcbiAgU3RhZ2VGbixcbiAgU3RhZ2VOb2RlLFxuICBTdHJlYW1DYWxsYmFjayxcbiAgU3RyZWFtTGlmZWN5Y2xlSGFuZGxlcixcbiAgU3RyZWFtVG9rZW5IYW5kbGVyLFxuICBTdWJmbG93TW91bnRPcHRpb25zLFxuICBTdWJmbG93UmVmLFxufSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcbmV4cG9ydCB7IEFycmF5TWVyZ2VNb2RlLCBEZWNpZGVyTGlzdCwgU2VsZWN0b3JGbkxpc3QsIHNwZWNUb1N0YWdlTm9kZSB9IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgY3JlYXRlVHlwZWRTY29wZUZhY3RvcnkgfSBmcm9tICcuL2xpYi9idWlsZGVyL3R5cGVkRmxvd0NoYXJ0LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2NvcGUg4oCUIFByb3ZpZGVycywgcHJvdGVjdGlvbiwgcmVjb3JkZXIgb3B0aW9ucywgYW5kIGV2ZW50IHR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHtcbiAgUHJvdmlkZXJSZXNvbHZlcixcbiAgUmVzb2x2ZU9wdGlvbnMsXG4gIFNjb3BlUHJvdmlkZXIsXG4gIFN0YWdlQ29udGV4dExpa2UsXG4gIFN0cmljdE1vZGUsXG59IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcbmV4cG9ydCB7IGNyZWF0ZUVycm9yTWVzc2FnZSwgY3JlYXRlUHJvdGVjdGVkU2NvcGUsIFNjb3BlRmFjYWRlIH0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuZXhwb3J0IHtcbiAgYXR0YWNoU2NvcGVNZXRob2RzLFxuICBpc1N1YmNsYXNzT2ZTY29wZUZhY2FkZSxcbiAgbG9va3NMaWtlQ2xhc3NDdG9yLFxuICBsb29rc0xpa2VGYWN0b3J5LFxuICBtYWtlQ2xhc3NQcm92aWRlcixcbiAgbWFrZUZhY3RvcnlQcm92aWRlcixcbiAgcmVnaXN0ZXJTY29wZVJlc29sdmVyLFxuICByZXNvbHZlU2NvcGVQcm92aWRlcixcbiAgdG9TY29wZUZhY3RvcnksXG59IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLy8gU2NvcGVSZWNvcmRlciBjb25maWcvb3B0aW9uIHR5cGVzXG5leHBvcnQgdHlwZSB7XG4gIEFnZ3JlZ2F0ZWRNZXRyaWNzLFxuICBEZWJ1Z0VudHJ5LFxuICBEZWJ1Z1JlY29yZGVyT3B0aW9ucyxcbiAgRGVidWdWZXJib3NpdHksXG4gIFJlY29yZGVyQ29udGV4dCxcbiAgU3RhZ2VFdmVudCxcbiAgU3RhZ2VNZXRyaWNzLFxufSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG4vLyBgRGVmaW5lU2NvcGVPcHRpb25zYCAoem9kIHNjb3BlIG9wdGlvbnMpIG1vdmVkIHRvICdmb290cHJpbnRqcy96b2QnLlxuXG4vLyBab2QgaW50ZXJuYWxzIG1vdmVkIHRvIHRoZSBvcHQtaW4gYGZvb3RwcmludGpzL3pvZGAgZW50cnkgKGtlZXBzIHpvZCDigJQgYW5cbi8vIG9wdGlvbmFsIHBlZXIg4oCUIG91dCBvZiB0aGUgYGZvb3RwcmludGpzL2FkdmFuY2VkYCBsb2FkIHBhdGgpLiBJbXBvcnRcbi8vIGNyZWF0ZVNjb3BlUHJveHlGcm9tWm9kIC8gZGVmaW5lU2NvcGVTY2hlbWEgLyBpc1Njb3BlU2NoZW1hIC8gWm9kU2NvcGVSZXNvbHZlclxuLy8gZnJvbSAnZm9vdHByaW50anMvem9kJy5cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUnVubmVyIOKAlCBJbnRlcm5hbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBSdW50aW1lU25hcHNob3QgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgRXhlY3V0aW9uUnVudGltZSB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJlYWN0aXZlIOKAlCBUeXBlZFNjb3BlIGludGVybmFscyAoZm9yIGN1c3RvbSBwcm94eSBpbXBsZW1lbnRhdGlvbnMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHsgUmVhY3RpdmVPcHRpb25zLCBSZWFjdGl2ZVRhcmdldCB9IGZyb20gJy4vbGliL3JlYWN0aXZlL2luZGV4LmpzJztcbmV4cG9ydCB7XG4gIEJSRUFLX1NFVFRFUixcbiAgYnVpbGROZXN0ZWRQYXRjaCxcbiAgY3JlYXRlQXJyYXlQcm94eSxcbiAgaXNIYW5kbGUsXG4gIGpvaW5QYXRoLFxuICBTQ09QRV9NRVRIT0RfTkFNRVMsXG4gIHNob3VsZFdyYXBXaXRoUHJveHksXG4gIHVud3JhcEhhbmRsZXMsXG4gIHZhbHVlQmVoaW5kLFxufSBmcm9tICcuL2xpYi9yZWFjdGl2ZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVuZ2luZSDigJQgREZTIGdyYXBoIHRyYXZlcnNhbCBpbnRlcm5hbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBUcmF2ZXJzZXJPcHRpb25zIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHsgRGVjaWRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBGbG93Y2hhcnRUcmF2ZXJzZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgaXNTdGFnZU5vZGVSZXR1cm4gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyBOYXJyYXRpdmUgaW50ZXJuYWxzXG5leHBvcnQgdHlwZSB7IElDb250cm9sRmxvd05hcnJhdGl2ZSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgdHlwZSB7IENvbWJpbmVkTmFycmF0aXZlRW50cnksIENvbWJpbmVkTmFycmF0aXZlT3B0aW9ucyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEJyYW5jaFJlc3VsdCxcbiAgQnJhbmNoUmVzdWx0cyxcbiAgU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlIGFzIEVuZ2luZVNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSxcbiAgSGFuZGxlckRlcHMsXG4gIElFeGVjdXRpb25SdW50aW1lLFxuICBOb2RlUmVzdWx0VHlwZSxcbiAgUnVudGltZVN0cnVjdHVyZU1ldGFkYXRhLFxuICBTY29wZUZhY3RvcnksXG4gIFNlcmlhbGl6ZWRQaXBlbGluZU5vZGUsXG4gIFN0YWdlRnVuY3Rpb24sXG4gIFN1YmZsb3dSZXN1bHQsXG4gIFRyYXZlcnNhbFJlc3VsdCxcbn0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IE51bGxDb250cm9sRmxvd05hcnJhdGl2ZUdlbmVyYXRvciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vIEhhbmRsZXJzICh0ZXN0aW5nIC8gY3VzdG9tIGVuZ2luZXMpXG5leHBvcnQgdHlwZSB7IEV4ZWN1dGVOb2RlRm4sIFJ1blN0YWdlRm4gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHtcbiAgYXBwbHlPdXRwdXRNYXBwaW5nLFxuICBDaGlsZHJlbkV4ZWN1dG9yLFxuICBjb21wdXRlTm9kZVR5cGUsXG4gIENvbnRpbnVhdGlvblJlc29sdmVyLFxuICBjcmVhdGVTdWJmbG93SGFuZGxlckRlcHMsXG4gIERlY2lkZXJIYW5kbGVyLFxuICBERUZBVUxUX01BWF9JVEVSQVRJT05TLFxuICBleHRyYWN0UGFyZW50U2NvcGVWYWx1ZXMsXG4gIGdldEluaXRpYWxTY29wZVZhbHVlcyxcbiAgTm9kZVJlc29sdmVyLFxuICBSdW50aW1lU3RydWN0dXJlTWFuYWdlcixcbiAgc2VlZFN1YmZsb3dHbG9iYWxTdG9yZSxcbiAgU2VsZWN0b3JIYW5kbGVyLFxuICBTdGFnZVJ1bm5lcixcbiAgU3ViZmxvd0V4ZWN1dG9yLFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyBUcmFjZSB1dGlsaXRpZXMg4oCUIHJlLWV4cG9ydGVkIGhlcmUgZm9yIGNvbnZlbmllbmNlLiBDYW5vbmljYWwgcGF0aDogJ2Zvb3RwcmludGpzL3RyYWNlJ1xuZXhwb3J0IHR5cGUgeyBFeGVjdXRpb25Db3VudGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL3J1bnRpbWVTdGFnZUlkLmpzJztcbmV4cG9ydCB7IGJ1aWxkUnVudGltZVN0YWdlSWQsIGNyZWF0ZUV4ZWN1dGlvbkNvdW50ZXIsIHBhcnNlUnVudGltZVN0YWdlSWQgfSBmcm9tICcuL2xpYi9lbmdpbmUvcnVudGltZVN0YWdlSWQuanMnO1xuZXhwb3J0IHsgZmluZENvbW1pdCwgZmluZENvbW1pdHMsIGZpbmRMYXN0V3JpdGVyIH0gZnJvbSAnLi9saWIvbWVtb3J5L2NvbW1pdExvZ1V0aWxzLmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRGVjaWRlIOKAlCBwdXJlIGd1YXJkIGV2YWx1YXRpb24gKGZvciBjdXN0b20gYXZhaWxhYmlsaXR5L2RlY2lzaW9uIGVuZ2luZXMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBldmFsdWF0ZUZpbHRlciBpcyBlbmdpbmUtZnJlZTogYSBwdXJlIGZ1bmN0aW9uIG92ZXIgKGdldFZhbHVlLCBpc1JlZGFjdGVkKVxuLy8gY2FsbGJhY2tzIHRoYXQgZXZhbHVhdGVzIGEgV2hlcmVGaWx0ZXIgYW5kIHJldHVybnMgcGVyLWNvbmRpdGlvbiBldmlkZW5jZS5cbi8vIEV4dGVybmFsIGRyaXZlcnMgKGUuZy4gaGNpZm9vdHByaW50J3MgYXZhaWxhYmxlKCkpIGV2YWx1YXRlIGVkZ2UgZ3VhcmRzIHdpdGhcbi8vIGl0IG91dHNpZGUgYW55IHJ1biDigJQgbm8gc2NvcGUsIG5vIGNvbW1pdCwgd29ya2VyLXNhZmUuXG5leHBvcnQgdHlwZSB7IEZpbHRlckNvbmRpdGlvbiB9IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5leHBvcnQgeyBldmFsdWF0ZUZpbHRlciB9IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbnRyYWN0IOKAlCBzY2hlbWEgbm9ybWFsaXphdGlvbiAoZm9yIGN1c3RvbSB0b29sIGVtaXR0ZXJzKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUHVyZSBjaGFydC1tZXRhZGF0YSBoZWxwZXJzIGJlaGluZCB0b01DUFRvb2wvdG9PcGVuQVBJLiBDdXN0b20gZW1pdHRlcnNcbi8vIChwZXItZWRnZSBNQ1AgZGVzY3JpcHRvcnMpIHJldXNlIHRoZSBab2TihpJKU09OLVNjaGVtYSBjb252ZXJzaW9uIHdpdGhvdXRcbi8vIGltcG9ydGluZyB0aGUgcnVubmVyLiBHYXRlIGlucHV0cyB3aXRoIGRldGVjdFNjaGVtYSAobWFpbiBiYXJyZWwpOiBhXG4vLyBub24tWm9kICdwYXJzZWFibGUnIHNjaGVtYSAoeXVwL3N1cGVyc3RydWN0KSBwYXNzZXMgdGhyb3VnaCB1bmNvbnZlcnRlZC5cbmV4cG9ydCB7IG5vcm1hbGl6ZVNjaGVtYSwgem9kVG9Kc29uU2NoZW1hIH0gZnJvbSAnLi9saWIvY29udHJhY3QvaW5kZXguanMnO1xuIl19
|
package/dist/esm/advanced.d.ts
CHANGED
|
@@ -38,7 +38,7 @@ export type { AggregatedMetrics, DebugEntry, DebugRecorderOptions, DebugVerbosit
|
|
|
38
38
|
export type { RuntimeSnapshot } from './lib/runner/index.js';
|
|
39
39
|
export { ExecutionRuntime } from './lib/runner/index.js';
|
|
40
40
|
export type { ReactiveOptions, ReactiveTarget } from './lib/reactive/index.js';
|
|
41
|
-
export { BREAK_SETTER, buildNestedPatch, createArrayProxy, joinPath, SCOPE_METHOD_NAMES, shouldWrapWithProxy, } from './lib/reactive/index.js';
|
|
41
|
+
export { BREAK_SETTER, buildNestedPatch, createArrayProxy, isHandle, joinPath, SCOPE_METHOD_NAMES, shouldWrapWithProxy, unwrapHandles, valueBehind, } from './lib/reactive/index.js';
|
|
42
42
|
export type { TraverserOptions } from './lib/engine/index.js';
|
|
43
43
|
export type { Decider } from './lib/engine/index.js';
|
|
44
44
|
export { FlowchartTraverser } from './lib/engine/index.js';
|
package/dist/esm/advanced.js
CHANGED
|
@@ -31,7 +31,7 @@ export { createTypedScopeFactory } from './lib/builder/typedFlowChart.js';
|
|
|
31
31
|
export { createErrorMessage, createProtectedScope, ScopeFacade } from './lib/scope/index.js';
|
|
32
32
|
export { attachScopeMethods, isSubclassOfScopeFacade, looksLikeClassCtor, looksLikeFactory, makeClassProvider, makeFactoryProvider, registerScopeResolver, resolveScopeProvider, toScopeFactory, } from './lib/scope/index.js';
|
|
33
33
|
export { ExecutionRuntime } from './lib/runner/index.js';
|
|
34
|
-
export { BREAK_SETTER, buildNestedPatch, createArrayProxy, joinPath, SCOPE_METHOD_NAMES, shouldWrapWithProxy, } from './lib/reactive/index.js';
|
|
34
|
+
export { BREAK_SETTER, buildNestedPatch, createArrayProxy, isHandle, joinPath, SCOPE_METHOD_NAMES, shouldWrapWithProxy, unwrapHandles, valueBehind, } from './lib/reactive/index.js';
|
|
35
35
|
export { FlowchartTraverser } from './lib/engine/index.js';
|
|
36
36
|
export { isStageNodeReturn } from './lib/engine/index.js';
|
|
37
37
|
export { NullControlFlowNarrativeGenerator } from './lib/engine/index.js';
|
|
@@ -47,4 +47,4 @@ export { evaluateFilter } from './lib/decide/index.js';
|
|
|
47
47
|
// importing the runner. Gate inputs with detectSchema (main barrel): a
|
|
48
48
|
// non-Zod 'parseable' schema (yup/superstruct) passes through unconverted.
|
|
49
49
|
export { normalizeSchema, zodToJsonSchema } from './lib/contract/index.js';
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWR2YW5jZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0g7Ozs7Ozs7R0FPRztBQXFCSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUNMLGVBQWUsRUFDZixjQUFjLEVBQ2QsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsWUFBWSxFQUNaLFdBQVcsRUFDWCxjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLFdBQVcsR0FDWixNQUFNLHVCQUF1QixDQUFDO0FBc0IvQixPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFhMUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdGLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLGNBQWMsR0FDZixNQUFNLHNCQUFzQixDQUFDO0FBd0I5QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQU96RCxPQUFPLEVBQ0wsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLGtCQUFrQixFQUNsQixtQkFBbUIsR0FDcEIsTUFBTSx5QkFBeUIsQ0FBQztBQVFqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQW1CMUQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJMUUsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLG9CQUFvQixFQUNwQix3QkFBd0IsRUFDeEIsY0FBYyxFQUNkLHNCQUFzQixFQUN0Qix3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLFlBQVksRUFDWix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixXQUFXLEVBQ1gsZUFBZSxHQUNoQixNQUFNLHVCQUF1QixDQUFDO0FBSS9CLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xILE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBVXpGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RCwrRUFBK0U7QUFDL0UsNkRBQTZEO0FBQzdELCtFQUErRTtBQUMvRSwwRUFBMEU7QUFDMUUsMEVBQTBFO0FBQzFFLHVFQUF1RTtBQUN2RSwyRUFBMkU7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogZm9vdHByaW50anMvYWR2YW5jZWQg4oCUIExvdy1sZXZlbCBpbnRlcm5hbHMgZm9yIGN1c3RvbSBleGVjdXRpb24gZW5naW5lcyBhbmQgdGVzdGluZy5cbiAqXG4gKiBNb3N0IHVzZXJzIG5ldmVyIG5lZWQgdGhpcy4gVXNlIGBmb290cHJpbnRqc2AgKG1haW4pIGluc3RlYWQuXG4gKiBUaGlzIGVudHJ5IHBvaW50IGV4cG9zZXMgYFNoYXJlZE1lbW9yeWAsIGBTdGFnZUNvbnRleHRgLCBgRmxvd2NoYXJ0VHJhdmVyc2VyYCxcbiAqIGFuZCBvdGhlciBwcmltaXRpdmVzIHRoYXQgcG93ZXIgdGhlIGVuZ2luZS5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgU2hhcmVkTWVtb3J5LCBTdGFnZUNvbnRleHQgfSBmcm9tICdmb290cHJpbnRqcy9hZHZhbmNlZCc7XG4gKiBgYGBcbiAqXG4gKiBAbW9kdWxlIGFkdmFuY2VkXG4gKi9cbi8qKlxuICogRm9vdFByaW50IOKAlCBBZHZhbmNlZCAvIEludGVybmFsIEFQSVxuICpcbiAqIFRoZXNlIGV4cG9ydHMgYXJlIGZvciBhZHZhbmNlZCB1c2UgY2FzZXMsIHRlc3RpbmcsIGFuZCBidWlsZGluZ1xuICogY3VzdG9tIGV4ZWN1dGlvbiBlbmdpbmVzLiBNb3N0IHVzZXJzIHNob3VsZCB1c2UgdGhlIG1haW4gJ2Zvb3RwcmludCcgZW50cnkgcG9pbnQuXG4gKlxuICogSW1wb3J0IHZpYTogaW1wb3J0IHsgLi4uIH0gZnJvbSAnZm9vdHByaW50L2FkdmFuY2VkJ1xuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1lbW9yeSDigJQgTG93LWxldmVsIHRyYW5zYWN0aW9uYWwgc3RhdGUgcHJpbWl0aXZlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7XG4gIENvbW1pdEJ1bmRsZSxcbiAgRmxvd0NvbnRyb2xUeXBlLFxuICBGbG93TWVzc2FnZSxcbiAgTWVtb3J5UGF0Y2gsXG4gIFJlYWRTdW1tYXJ5TWFya2VyLFxuICBSZWFkVHJhY2tpbmdNb2RlLFxuICBSZXRlbnRpb25Qb2xpY3ksXG4gIFN0YWdlU25hcHNob3QsXG4gIFRyYWNlRW50cnksXG4gIFVudHJhY2tlZFNvdXJjZSxcbiAgV3JpdGVTdW1tYXJ5TWFya2VyLFxuICBXcml0ZVRyYWNraW5nTW9kZSxcbn0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHsgUmVkYWN0aW9uVmVyZGljdCB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBTaGFyZWRNZW1vcnkgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgU3RhZ2VDb250ZXh0IH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IEV2ZW50TG9nIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uQnVmZmVyIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IERpYWdub3N0aWNDb2xsZWN0b3IgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgUmVkYWN0aW9uUnVsZSB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBhcHBseVNtYXJ0TWVyZ2UsXG4gIGRlZXBTbWFydE1lcmdlLFxuICBnZXROZXN0ZWRWYWx1ZSxcbiAgZ2V0UnVuQW5kR2xvYmFsUGF0aHMsXG4gIG5vcm1hbGlzZVBhdGgsXG4gIHBhdGhTZWdtZW50cyxcbiAgcmVkYWN0UGF0Y2gsXG4gIHNldE5lc3RlZFZhbHVlLFxuICB1cGRhdGVOZXN0ZWRWYWx1ZSxcbiAgdXBkYXRlVmFsdWUsXG59IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJ1aWxkZXIg4oCUIFR5cGVzIGFuZCBpbnRlcm5hbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBFeGVjT3B0aW9ucyxcbiAgRmxvd0NoYXJ0T3B0aW9ucyxcbiAgRmxvd0NoYXJ0U3BlYyxcbiAgSUxvZ2dlcixcbiAgU2NvcGVQcm90ZWN0aW9uTW9kZSxcbiAgU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlLFxuICBTaW1wbGlmaWVkUGFyYWxsZWxTcGVjLFxuICBTdGFnZUZuLFxuICBTdGFnZU5vZGUsXG4gIFN0cmVhbUNhbGxiYWNrLFxuICBTdHJlYW1MaWZlY3ljbGVIYW5kbGVyLFxuICBTdHJlYW1Ub2tlbkhhbmRsZXIsXG4gIFN1YmZsb3dNb3VudE9wdGlvbnMsXG4gIFN1YmZsb3dSZWYsXG59IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgQXJyYXlNZXJnZU1vZGUsIERlY2lkZXJMaXN0LCBTZWxlY3RvckZuTGlzdCwgc3BlY1RvU3RhZ2VOb2RlIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5leHBvcnQgeyBjcmVhdGVUeXBlZFNjb3BlRmFjdG9yeSB9IGZyb20gJy4vbGliL2J1aWxkZXIvdHlwZWRGbG93Q2hhcnQuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY29wZSDigJQgUHJvdmlkZXJzLCBwcm90ZWN0aW9uLCByZWNvcmRlciBvcHRpb25zLCBhbmQgZXZlbnQgdHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBQcm92aWRlclJlc29sdmVyLFxuICBSZXNvbHZlT3B0aW9ucyxcbiAgU2NvcGVQcm92aWRlcixcbiAgU3RhZ2VDb250ZXh0TGlrZSxcbiAgU3RyaWN0TW9kZSxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuZXhwb3J0IHsgY3JlYXRlRXJyb3JNZXNzYWdlLCBjcmVhdGVQcm90ZWN0ZWRTY29wZSwgU2NvcGVGYWNhZGUgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBhdHRhY2hTY29wZU1ldGhvZHMsXG4gIGlzU3ViY2xhc3NPZlNjb3BlRmFjYWRlLFxuICBsb29rc0xpa2VDbGFzc0N0b3IsXG4gIGxvb2tzTGlrZUZhY3RvcnksXG4gIG1ha2VDbGFzc1Byb3ZpZGVyLFxuICBtYWtlRmFjdG9yeVByb3ZpZGVyLFxuICByZWdpc3RlclNjb3BlUmVzb2x2ZXIsXG4gIHJlc29sdmVTY29wZVByb3ZpZGVyLFxuICB0b1Njb3BlRmFjdG9yeSxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vLyBTY29wZVJlY29yZGVyIGNvbmZpZy9vcHRpb24gdHlwZXNcbmV4cG9ydCB0eXBlIHtcbiAgQWdncmVnYXRlZE1ldHJpY3MsXG4gIERlYnVnRW50cnksXG4gIERlYnVnUmVjb3JkZXJPcHRpb25zLFxuICBEZWJ1Z1ZlcmJvc2l0eSxcbiAgUmVjb3JkZXJDb250ZXh0LFxuICBTdGFnZUV2ZW50LFxuICBTdGFnZU1ldHJpY3MsXG59IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcbi8vIGBEZWZpbmVTY29wZU9wdGlvbnNgICh6b2Qgc2NvcGUgb3B0aW9ucykgbW92ZWQgdG8gJ2Zvb3RwcmludGpzL3pvZCcuXG5cbi8vIFpvZCBpbnRlcm5hbHMgbW92ZWQgdG8gdGhlIG9wdC1pbiBgZm9vdHByaW50anMvem9kYCBlbnRyeSAoa2VlcHMgem9kIOKAlCBhblxuLy8gb3B0aW9uYWwgcGVlciDigJQgb3V0IG9mIHRoZSBgZm9vdHByaW50anMvYWR2YW5jZWRgIGxvYWQgcGF0aCkuIEltcG9ydFxuLy8gY3JlYXRlU2NvcGVQcm94eUZyb21ab2QgLyBkZWZpbmVTY29wZVNjaGVtYSAvIGlzU2NvcGVTY2hlbWEgLyBab2RTY29wZVJlc29sdmVyXG4vLyBmcm9tICdmb290cHJpbnRqcy96b2QnLlxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSdW5uZXIg4oCUIEludGVybmFsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IFJ1bnRpbWVTbmFwc2hvdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5leHBvcnQgeyBFeGVjdXRpb25SdW50aW1lIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUmVhY3RpdmUg4oCUIFR5cGVkU2NvcGUgaW50ZXJuYWxzIChmb3IgY3VzdG9tIHByb3h5IGltcGxlbWVudGF0aW9ucylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBSZWFjdGl2ZU9wdGlvbnMsIFJlYWN0aXZlVGFyZ2V0IH0gZnJvbSAnLi9saWIvcmVhY3RpdmUvaW5kZXguanMnO1xuZXhwb3J0IHtcbiAgQlJFQUtfU0VUVEVSLFxuICBidWlsZE5lc3RlZFBhdGNoLFxuICBjcmVhdGVBcnJheVByb3h5LFxuICBqb2luUGF0aCxcbiAgU0NPUEVfTUVUSE9EX05BTUVTLFxuICBzaG91bGRXcmFwV2l0aFByb3h5LFxufSBmcm9tICcuL2xpYi9yZWFjdGl2ZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVuZ2luZSDigJQgREZTIGdyYXBoIHRyYXZlcnNhbCBpbnRlcm5hbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBUcmF2ZXJzZXJPcHRpb25zIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHsgRGVjaWRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBGbG93Y2hhcnRUcmF2ZXJzZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgaXNTdGFnZU5vZGVSZXR1cm4gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyBOYXJyYXRpdmUgaW50ZXJuYWxzXG5leHBvcnQgdHlwZSB7IElDb250cm9sRmxvd05hcnJhdGl2ZSB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgdHlwZSB7IENvbWJpbmVkTmFycmF0aXZlRW50cnksIENvbWJpbmVkTmFycmF0aXZlT3B0aW9ucyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgdHlwZSB7XG4gIEJyYW5jaFJlc3VsdCxcbiAgQnJhbmNoUmVzdWx0cyxcbiAgU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlIGFzIEVuZ2luZVNlcmlhbGl6ZWRQaXBlbGluZVN0cnVjdHVyZSxcbiAgSGFuZGxlckRlcHMsXG4gIElFeGVjdXRpb25SdW50aW1lLFxuICBOb2RlUmVzdWx0VHlwZSxcbiAgUnVudGltZVN0cnVjdHVyZU1ldGFkYXRhLFxuICBTY29wZUZhY3RvcnksXG4gIFNlcmlhbGl6ZWRQaXBlbGluZU5vZGUsXG4gIFN0YWdlRnVuY3Rpb24sXG4gIFN1YmZsb3dSZXN1bHQsXG4gIFRyYXZlcnNhbFJlc3VsdCxcbn0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IE51bGxDb250cm9sRmxvd05hcnJhdGl2ZUdlbmVyYXRvciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vIEhhbmRsZXJzICh0ZXN0aW5nIC8gY3VzdG9tIGVuZ2luZXMpXG5leHBvcnQgdHlwZSB7IEV4ZWN1dGVOb2RlRm4sIFJ1blN0YWdlRm4gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHtcbiAgYXBwbHlPdXRwdXRNYXBwaW5nLFxuICBDaGlsZHJlbkV4ZWN1dG9yLFxuICBjb21wdXRlTm9kZVR5cGUsXG4gIENvbnRpbnVhdGlvblJlc29sdmVyLFxuICBjcmVhdGVTdWJmbG93SGFuZGxlckRlcHMsXG4gIERlY2lkZXJIYW5kbGVyLFxuICBERUZBVUxUX01BWF9JVEVSQVRJT05TLFxuICBleHRyYWN0UGFyZW50U2NvcGVWYWx1ZXMsXG4gIGdldEluaXRpYWxTY29wZVZhbHVlcyxcbiAgTm9kZVJlc29sdmVyLFxuICBSdW50aW1lU3RydWN0dXJlTWFuYWdlcixcbiAgc2VlZFN1YmZsb3dHbG9iYWxTdG9yZSxcbiAgU2VsZWN0b3JIYW5kbGVyLFxuICBTdGFnZVJ1bm5lcixcbiAgU3ViZmxvd0V4ZWN1dG9yLFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyBUcmFjZSB1dGlsaXRpZXMg4oCUIHJlLWV4cG9ydGVkIGhlcmUgZm9yIGNvbnZlbmllbmNlLiBDYW5vbmljYWwgcGF0aDogJ2Zvb3RwcmludGpzL3RyYWNlJ1xuZXhwb3J0IHR5cGUgeyBFeGVjdXRpb25Db3VudGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL3J1bnRpbWVTdGFnZUlkLmpzJztcbmV4cG9ydCB7IGJ1aWxkUnVudGltZVN0YWdlSWQsIGNyZWF0ZUV4ZWN1dGlvbkNvdW50ZXIsIHBhcnNlUnVudGltZVN0YWdlSWQgfSBmcm9tICcuL2xpYi9lbmdpbmUvcnVudGltZVN0YWdlSWQuanMnO1xuZXhwb3J0IHsgZmluZENvbW1pdCwgZmluZENvbW1pdHMsIGZpbmRMYXN0V3JpdGVyIH0gZnJvbSAnLi9saWIvbWVtb3J5L2NvbW1pdExvZ1V0aWxzLmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRGVjaWRlIOKAlCBwdXJlIGd1YXJkIGV2YWx1YXRpb24gKGZvciBjdXN0b20gYXZhaWxhYmlsaXR5L2RlY2lzaW9uIGVuZ2luZXMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBldmFsdWF0ZUZpbHRlciBpcyBlbmdpbmUtZnJlZTogYSBwdXJlIGZ1bmN0aW9uIG92ZXIgKGdldFZhbHVlLCBpc1JlZGFjdGVkKVxuLy8gY2FsbGJhY2tzIHRoYXQgZXZhbHVhdGVzIGEgV2hlcmVGaWx0ZXIgYW5kIHJldHVybnMgcGVyLWNvbmRpdGlvbiBldmlkZW5jZS5cbi8vIEV4dGVybmFsIGRyaXZlcnMgKGUuZy4gaGNpZm9vdHByaW50J3MgYXZhaWxhYmxlKCkpIGV2YWx1YXRlIGVkZ2UgZ3VhcmRzIHdpdGhcbi8vIGl0IG91dHNpZGUgYW55IHJ1biDigJQgbm8gc2NvcGUsIG5vIGNvbW1pdCwgd29ya2VyLXNhZmUuXG5leHBvcnQgdHlwZSB7IEZpbHRlckNvbmRpdGlvbiB9IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5leHBvcnQgeyBldmFsdWF0ZUZpbHRlciB9IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENvbnRyYWN0IOKAlCBzY2hlbWEgbm9ybWFsaXphdGlvbiAoZm9yIGN1c3RvbSB0b29sIGVtaXR0ZXJzKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUHVyZSBjaGFydC1tZXRhZGF0YSBoZWxwZXJzIGJlaGluZCB0b01DUFRvb2wvdG9PcGVuQVBJLiBDdXN0b20gZW1pdHRlcnNcbi8vIChwZXItZWRnZSBNQ1AgZGVzY3JpcHRvcnMpIHJldXNlIHRoZSBab2TihpJKU09OLVNjaGVtYSBjb252ZXJzaW9uIHdpdGhvdXRcbi8vIGltcG9ydGluZyB0aGUgcnVubmVyLiBHYXRlIGlucHV0cyB3aXRoIGRldGVjdFNjaGVtYSAobWFpbiBiYXJyZWwpOiBhXG4vLyBub24tWm9kICdwYXJzZWFibGUnIHNjaGVtYSAoeXVwL3N1cGVyc3RydWN0KSBwYXNzZXMgdGhyb3VnaCB1bmNvbnZlcnRlZC5cbmV4cG9ydCB7IG5vcm1hbGl6ZVNjaGVtYSwgem9kVG9Kc29uU2NoZW1hIH0gZnJvbSAnLi9saWIvY29udHJhY3QvaW5kZXguanMnO1xuIl19
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWR2YW5jZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYWR2YW5jZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0g7Ozs7Ozs7R0FPRztBQXFCSCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUNMLGVBQWUsRUFDZixjQUFjLEVBQ2QsY0FBYyxFQUNkLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsWUFBWSxFQUNaLFdBQVcsRUFDWCxjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLFdBQVcsR0FDWixNQUFNLHVCQUF1QixDQUFDO0FBc0IvQixPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEcsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFhMUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdGLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsdUJBQXVCLEVBQ3ZCLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixxQkFBcUIsRUFDckIsb0JBQW9CLEVBQ3BCLGNBQWMsR0FDZixNQUFNLHNCQUFzQixDQUFDO0FBd0I5QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQU96RCxPQUFPLEVBQ0wsWUFBWSxFQUNaLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLFFBQVEsRUFDUixrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGFBQWEsRUFDYixXQUFXLEdBQ1osTUFBTSx5QkFBeUIsQ0FBQztBQVFqQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQW1CMUQsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJMUUsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsZUFBZSxFQUNmLG9CQUFvQixFQUNwQix3QkFBd0IsRUFDeEIsY0FBYyxFQUNkLHNCQUFzQixFQUN0Qix3QkFBd0IsRUFDeEIscUJBQXFCLEVBQ3JCLFlBQVksRUFDWix1QkFBdUIsRUFDdkIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZixXQUFXLEVBQ1gsZUFBZSxHQUNoQixNQUFNLHVCQUF1QixDQUFDO0FBSS9CLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xILE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBVXpGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RCwrRUFBK0U7QUFDL0UsNkRBQTZEO0FBQzdELCtFQUErRTtBQUMvRSwwRUFBMEU7QUFDMUUsMEVBQTBFO0FBQzFFLHVFQUF1RTtBQUN2RSwyRUFBMkU7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogZm9vdHByaW50anMvYWR2YW5jZWQg4oCUIExvdy1sZXZlbCBpbnRlcm5hbHMgZm9yIGN1c3RvbSBleGVjdXRpb24gZW5naW5lcyBhbmQgdGVzdGluZy5cbiAqXG4gKiBNb3N0IHVzZXJzIG5ldmVyIG5lZWQgdGhpcy4gVXNlIGBmb290cHJpbnRqc2AgKG1haW4pIGluc3RlYWQuXG4gKiBUaGlzIGVudHJ5IHBvaW50IGV4cG9zZXMgYFNoYXJlZE1lbW9yeWAsIGBTdGFnZUNvbnRleHRgLCBgRmxvd2NoYXJ0VHJhdmVyc2VyYCxcbiAqIGFuZCBvdGhlciBwcmltaXRpdmVzIHRoYXQgcG93ZXIgdGhlIGVuZ2luZS5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgU2hhcmVkTWVtb3J5LCBTdGFnZUNvbnRleHQgfSBmcm9tICdmb290cHJpbnRqcy9hZHZhbmNlZCc7XG4gKiBgYGBcbiAqXG4gKiBAbW9kdWxlIGFkdmFuY2VkXG4gKi9cbi8qKlxuICogRm9vdFByaW50IOKAlCBBZHZhbmNlZCAvIEludGVybmFsIEFQSVxuICpcbiAqIFRoZXNlIGV4cG9ydHMgYXJlIGZvciBhZHZhbmNlZCB1c2UgY2FzZXMsIHRlc3RpbmcsIGFuZCBidWlsZGluZ1xuICogY3VzdG9tIGV4ZWN1dGlvbiBlbmdpbmVzLiBNb3N0IHVzZXJzIHNob3VsZCB1c2UgdGhlIG1haW4gJ2Zvb3RwcmludCcgZW50cnkgcG9pbnQuXG4gKlxuICogSW1wb3J0IHZpYTogaW1wb3J0IHsgLi4uIH0gZnJvbSAnZm9vdHByaW50L2FkdmFuY2VkJ1xuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1lbW9yeSDigJQgTG93LWxldmVsIHRyYW5zYWN0aW9uYWwgc3RhdGUgcHJpbWl0aXZlc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7XG4gIENvbW1pdEJ1bmRsZSxcbiAgRmxvd0NvbnRyb2xUeXBlLFxuICBGbG93TWVzc2FnZSxcbiAgTWVtb3J5UGF0Y2gsXG4gIFJlYWRTdW1tYXJ5TWFya2VyLFxuICBSZWFkVHJhY2tpbmdNb2RlLFxuICBSZXRlbnRpb25Qb2xpY3ksXG4gIFN0YWdlU25hcHNob3QsXG4gIFRyYWNlRW50cnksXG4gIFVudHJhY2tlZFNvdXJjZSxcbiAgV3JpdGVTdW1tYXJ5TWFya2VyLFxuICBXcml0ZVRyYWNraW5nTW9kZSxcbn0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHsgUmVkYWN0aW9uVmVyZGljdCB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQgeyBTaGFyZWRNZW1vcnkgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgU3RhZ2VDb250ZXh0IH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IEV2ZW50TG9nIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IFRyYW5zYWN0aW9uQnVmZmVyIH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcbmV4cG9ydCB7IERpYWdub3N0aWNDb2xsZWN0b3IgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuZXhwb3J0IHsgUmVkYWN0aW9uUnVsZSB9IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBhcHBseVNtYXJ0TWVyZ2UsXG4gIGRlZXBTbWFydE1lcmdlLFxuICBnZXROZXN0ZWRWYWx1ZSxcbiAgZ2V0UnVuQW5kR2xvYmFsUGF0aHMsXG4gIG5vcm1hbGlzZVBhdGgsXG4gIHBhdGhTZWdtZW50cyxcbiAgcmVkYWN0UGF0Y2gsXG4gIHNldE5lc3RlZFZhbHVlLFxuICB1cGRhdGVOZXN0ZWRWYWx1ZSxcbiAgdXBkYXRlVmFsdWUsXG59IGZyb20gJy4vbGliL21lbW9yeS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJ1aWxkZXIg4oCUIFR5cGVzIGFuZCBpbnRlcm5hbHNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBFeGVjT3B0aW9ucyxcbiAgRmxvd0NoYXJ0T3B0aW9ucyxcbiAgRmxvd0NoYXJ0U3BlYyxcbiAgSUxvZ2dlcixcbiAgU2NvcGVQcm90ZWN0aW9uTW9kZSxcbiAgU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlLFxuICBTaW1wbGlmaWVkUGFyYWxsZWxTcGVjLFxuICBTdGFnZUZuLFxuICBTdGFnZU5vZGUsXG4gIFN0cmVhbUNhbGxiYWNrLFxuICBTdHJlYW1MaWZlY3ljbGVIYW5kbGVyLFxuICBTdHJlYW1Ub2tlbkhhbmRsZXIsXG4gIFN1YmZsb3dNb3VudE9wdGlvbnMsXG4gIFN1YmZsb3dSZWYsXG59IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgQXJyYXlNZXJnZU1vZGUsIERlY2lkZXJMaXN0LCBTZWxlY3RvckZuTGlzdCwgc3BlY1RvU3RhZ2VOb2RlIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5leHBvcnQgeyBjcmVhdGVUeXBlZFNjb3BlRmFjdG9yeSB9IGZyb20gJy4vbGliL2J1aWxkZXIvdHlwZWRGbG93Q2hhcnQuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY29wZSDigJQgUHJvdmlkZXJzLCBwcm90ZWN0aW9uLCByZWNvcmRlciBvcHRpb25zLCBhbmQgZXZlbnQgdHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBQcm92aWRlclJlc29sdmVyLFxuICBSZXNvbHZlT3B0aW9ucyxcbiAgU2NvcGVQcm92aWRlcixcbiAgU3RhZ2VDb250ZXh0TGlrZSxcbiAgU3RyaWN0TW9kZSxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuZXhwb3J0IHsgY3JlYXRlRXJyb3JNZXNzYWdlLCBjcmVhdGVQcm90ZWN0ZWRTY29wZSwgU2NvcGVGYWNhZGUgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBhdHRhY2hTY29wZU1ldGhvZHMsXG4gIGlzU3ViY2xhc3NPZlNjb3BlRmFjYWRlLFxuICBsb29rc0xpa2VDbGFzc0N0b3IsXG4gIGxvb2tzTGlrZUZhY3RvcnksXG4gIG1ha2VDbGFzc1Byb3ZpZGVyLFxuICBtYWtlRmFjdG9yeVByb3ZpZGVyLFxuICByZWdpc3RlclNjb3BlUmVzb2x2ZXIsXG4gIHJlc29sdmVTY29wZVByb3ZpZGVyLFxuICB0b1Njb3BlRmFjdG9yeSxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vLyBTY29wZVJlY29yZGVyIGNvbmZpZy9vcHRpb24gdHlwZXNcbmV4cG9ydCB0eXBlIHtcbiAgQWdncmVnYXRlZE1ldHJpY3MsXG4gIERlYnVnRW50cnksXG4gIERlYnVnUmVjb3JkZXJPcHRpb25zLFxuICBEZWJ1Z1ZlcmJvc2l0eSxcbiAgUmVjb3JkZXJDb250ZXh0LFxuICBTdGFnZUV2ZW50LFxuICBTdGFnZU1ldHJpY3MsXG59IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcbi8vIGBEZWZpbmVTY29wZU9wdGlvbnNgICh6b2Qgc2NvcGUgb3B0aW9ucykgbW92ZWQgdG8gJ2Zvb3RwcmludGpzL3pvZCcuXG5cbi8vIFpvZCBpbnRlcm5hbHMgbW92ZWQgdG8gdGhlIG9wdC1pbiBgZm9vdHByaW50anMvem9kYCBlbnRyeSAoa2VlcHMgem9kIOKAlCBhblxuLy8gb3B0aW9uYWwgcGVlciDigJQgb3V0IG9mIHRoZSBgZm9vdHByaW50anMvYWR2YW5jZWRgIGxvYWQgcGF0aCkuIEltcG9ydFxuLy8gY3JlYXRlU2NvcGVQcm94eUZyb21ab2QgLyBkZWZpbmVTY29wZVNjaGVtYSAvIGlzU2NvcGVTY2hlbWEgLyBab2RTY29wZVJlc29sdmVyXG4vLyBmcm9tICdmb290cHJpbnRqcy96b2QnLlxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSdW5uZXIg4oCUIEludGVybmFsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IFJ1bnRpbWVTbmFwc2hvdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5leHBvcnQgeyBFeGVjdXRpb25SdW50aW1lIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUmVhY3RpdmUg4oCUIFR5cGVkU2NvcGUgaW50ZXJuYWxzIChmb3IgY3VzdG9tIHByb3h5IGltcGxlbWVudGF0aW9ucylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBSZWFjdGl2ZU9wdGlvbnMsIFJlYWN0aXZlVGFyZ2V0IH0gZnJvbSAnLi9saWIvcmVhY3RpdmUvaW5kZXguanMnO1xuZXhwb3J0IHtcbiAgQlJFQUtfU0VUVEVSLFxuICBidWlsZE5lc3RlZFBhdGNoLFxuICBjcmVhdGVBcnJheVByb3h5LFxuICBpc0hhbmRsZSxcbiAgam9pblBhdGgsXG4gIFNDT1BFX01FVEhPRF9OQU1FUyxcbiAgc2hvdWxkV3JhcFdpdGhQcm94eSxcbiAgdW53cmFwSGFuZGxlcyxcbiAgdmFsdWVCZWhpbmQsXG59IGZyb20gJy4vbGliL3JlYWN0aXZlL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRW5naW5lIOKAlCBERlMgZ3JhcGggdHJhdmVyc2FsIGludGVybmFsc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IFRyYXZlcnNlck9wdGlvbnMgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHR5cGUgeyBEZWNpZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IEZsb3djaGFydFRyYXZlcnNlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBpc1N0YWdlTm9kZVJldHVybiB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vIE5hcnJhdGl2ZSBpbnRlcm5hbHNcbmV4cG9ydCB0eXBlIHsgSUNvbnRyb2xGbG93TmFycmF0aXZlIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHsgQ29tYmluZWROYXJyYXRpdmVFbnRyeSwgQ29tYmluZWROYXJyYXRpdmVPcHRpb25zIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgQnJhbmNoUmVzdWx0LFxuICBCcmFuY2hSZXN1bHRzLFxuICBTZXJpYWxpemVkUGlwZWxpbmVTdHJ1Y3R1cmUgYXMgRW5naW5lU2VyaWFsaXplZFBpcGVsaW5lU3RydWN0dXJlLFxuICBIYW5kbGVyRGVwcyxcbiAgSUV4ZWN1dGlvblJ1bnRpbWUsXG4gIE5vZGVSZXN1bHRUeXBlLFxuICBSdW50aW1lU3RydWN0dXJlTWV0YWRhdGEsXG4gIFNjb3BlRmFjdG9yeSxcbiAgU2VyaWFsaXplZFBpcGVsaW5lTm9kZSxcbiAgU3RhZ2VGdW5jdGlvbixcbiAgU3ViZmxvd1Jlc3VsdCxcbiAgVHJhdmVyc2FsUmVzdWx0LFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgTnVsbENvbnRyb2xGbG93TmFycmF0aXZlR2VuZXJhdG9yIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gSGFuZGxlcnMgKHRlc3RpbmcgLyBjdXN0b20gZW5naW5lcylcbmV4cG9ydCB0eXBlIHsgRXhlY3V0ZU5vZGVGbiwgUnVuU3RhZ2VGbiB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQge1xuICBhcHBseU91dHB1dE1hcHBpbmcsXG4gIENoaWxkcmVuRXhlY3V0b3IsXG4gIGNvbXB1dGVOb2RlVHlwZSxcbiAgQ29udGludWF0aW9uUmVzb2x2ZXIsXG4gIGNyZWF0ZVN1YmZsb3dIYW5kbGVyRGVwcyxcbiAgRGVjaWRlckhhbmRsZXIsXG4gIERFRkFVTFRfTUFYX0lURVJBVElPTlMsXG4gIGV4dHJhY3RQYXJlbnRTY29wZVZhbHVlcyxcbiAgZ2V0SW5pdGlhbFNjb3BlVmFsdWVzLFxuICBOb2RlUmVzb2x2ZXIsXG4gIFJ1bnRpbWVTdHJ1Y3R1cmVNYW5hZ2VyLFxuICBzZWVkU3ViZmxvd0dsb2JhbFN0b3JlLFxuICBTZWxlY3RvckhhbmRsZXIsXG4gIFN0YWdlUnVubmVyLFxuICBTdWJmbG93RXhlY3V0b3IsXG59IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vIFRyYWNlIHV0aWxpdGllcyDigJQgcmUtZXhwb3J0ZWQgaGVyZSBmb3IgY29udmVuaWVuY2UuIENhbm9uaWNhbCBwYXRoOiAnZm9vdHByaW50anMvdHJhY2UnXG5leHBvcnQgdHlwZSB7IEV4ZWN1dGlvbkNvdW50ZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvcnVudGltZVN0YWdlSWQuanMnO1xuZXhwb3J0IHsgYnVpbGRSdW50aW1lU3RhZ2VJZCwgY3JlYXRlRXhlY3V0aW9uQ291bnRlciwgcGFyc2VSdW50aW1lU3RhZ2VJZCB9IGZyb20gJy4vbGliL2VuZ2luZS9ydW50aW1lU3RhZ2VJZC5qcyc7XG5leHBvcnQgeyBmaW5kQ29tbWl0LCBmaW5kQ29tbWl0cywgZmluZExhc3RXcml0ZXIgfSBmcm9tICcuL2xpYi9tZW1vcnkvY29tbWl0TG9nVXRpbHMuanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBEZWNpZGUg4oCUIHB1cmUgZ3VhcmQgZXZhbHVhdGlvbiAoZm9yIGN1c3RvbSBhdmFpbGFiaWxpdHkvZGVjaXNpb24gZW5naW5lcylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIGV2YWx1YXRlRmlsdGVyIGlzIGVuZ2luZS1mcmVlOiBhIHB1cmUgZnVuY3Rpb24gb3ZlciAoZ2V0VmFsdWUsIGlzUmVkYWN0ZWQpXG4vLyBjYWxsYmFja3MgdGhhdCBldmFsdWF0ZXMgYSBXaGVyZUZpbHRlciBhbmQgcmV0dXJucyBwZXItY29uZGl0aW9uIGV2aWRlbmNlLlxuLy8gRXh0ZXJuYWwgZHJpdmVycyAoZS5nLiBoY2lmb290cHJpbnQncyBhdmFpbGFibGUoKSkgZXZhbHVhdGUgZWRnZSBndWFyZHMgd2l0aFxuLy8gaXQgb3V0c2lkZSBhbnkgcnVuIOKAlCBubyBzY29wZSwgbm8gY29tbWl0LCB3b3JrZXItc2FmZS5cbmV4cG9ydCB0eXBlIHsgRmlsdGVyQ29uZGl0aW9uIH0gZnJvbSAnLi9saWIvZGVjaWRlL2luZGV4LmpzJztcbmV4cG9ydCB7IGV2YWx1YXRlRmlsdGVyIH0gZnJvbSAnLi9saWIvZGVjaWRlL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29udHJhY3Qg4oCUIHNjaGVtYSBub3JtYWxpemF0aW9uIChmb3IgY3VzdG9tIHRvb2wgZW1pdHRlcnMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQdXJlIGNoYXJ0LW1ldGFkYXRhIGhlbHBlcnMgYmVoaW5kIHRvTUNQVG9vbC90b09wZW5BUEkuIEN1c3RvbSBlbWl0dGVyc1xuLy8gKHBlci1lZGdlIE1DUCBkZXNjcmlwdG9ycykgcmV1c2UgdGhlIFpvZOKGkkpTT04tU2NoZW1hIGNvbnZlcnNpb24gd2l0aG91dFxuLy8gaW1wb3J0aW5nIHRoZSBydW5uZXIuIEdhdGUgaW5wdXRzIHdpdGggZGV0ZWN0U2NoZW1hIChtYWluIGJhcnJlbCk6IGFcbi8vIG5vbi1ab2QgJ3BhcnNlYWJsZScgc2NoZW1hICh5dXAvc3VwZXJzdHJ1Y3QpIHBhc3NlcyB0aHJvdWdoIHVuY29udmVydGVkLlxuZXhwb3J0IHsgbm9ybWFsaXplU2NoZW1hLCB6b2RUb0pzb25TY2hlbWEgfSBmcm9tICcuL2xpYi9jb250cmFjdC9pbmRleC5qcyc7XG4iXX0=
|
|
@@ -83,6 +83,14 @@ export declare class ParallelForEachHandler<TOut = any, TScope = any> {
|
|
|
83
83
|
/**
|
|
84
84
|
* Evaluate the items selector against the live scope. A non-array return is
|
|
85
85
|
* a chart bug, not a runtime condition — it fails loudly, naming the stage.
|
|
86
|
+
*
|
|
87
|
+
* The selector reads the typed scope, so what it returns is usually the
|
|
88
|
+
* scope's own array HANDLE (a Proxy bound to the parent stage) and every
|
|
89
|
+
* `items[index]` an element handle. The items are about to cross into
|
|
90
|
+
* branch runtimes — closed over by `branch(item, index)` and seeded as the
|
|
91
|
+
* branch's `item` — so they are taken as VALUES here (`unwrapHandles`,
|
|
92
|
+
* reactive/handles.ts). 9.22.0–9.23.2 seeded the handle itself and every
|
|
93
|
+
* branch over an object item failed at its seed commit (DataCloneError).
|
|
86
94
|
*/
|
|
87
95
|
private resolveItems;
|
|
88
96
|
/** Generate one subflow-mount node per branch, registering each branch chart. */
|
|
@@ -50,6 +50,7 @@
|
|
|
50
50
|
* follows its fan-out event — unavoidable and honest: the result is not
|
|
51
51
|
* knowable until the branches settle.
|
|
52
52
|
*/
|
|
53
|
+
import { unwrapHandles } from '../../reactive/handles.js';
|
|
53
54
|
import { IS_TYPED_SCOPE } from '../../reactive/types.js';
|
|
54
55
|
import { createProtectedScope } from '../../scope/protection/createProtectedScope.js';
|
|
55
56
|
import { buildBranchSegment } from '../branchSegment.js';
|
|
@@ -124,9 +125,17 @@ export class ParallelForEachHandler {
|
|
|
124
125
|
/**
|
|
125
126
|
* Evaluate the items selector against the live scope. A non-array return is
|
|
126
127
|
* a chart bug, not a runtime condition — it fails loudly, naming the stage.
|
|
128
|
+
*
|
|
129
|
+
* The selector reads the typed scope, so what it returns is usually the
|
|
130
|
+
* scope's own array HANDLE (a Proxy bound to the parent stage) and every
|
|
131
|
+
* `items[index]` an element handle. The items are about to cross into
|
|
132
|
+
* branch runtimes — closed over by `branch(item, index)` and seeded as the
|
|
133
|
+
* branch's `item` — so they are taken as VALUES here (`unwrapHandles`,
|
|
134
|
+
* reactive/handles.ts). 9.22.0–9.23.2 seeded the handle itself and every
|
|
135
|
+
* branch over an object item failed at its seed commit (DataCloneError).
|
|
127
136
|
*/
|
|
128
137
|
resolveItems(config, scope, node) {
|
|
129
|
-
const items = config.items(scope);
|
|
138
|
+
const items = unwrapHandles(config.items(scope));
|
|
130
139
|
if (items === undefined || items === null)
|
|
131
140
|
return [];
|
|
132
141
|
if (!Array.isArray(items)) {
|
|
@@ -218,4 +227,4 @@ function notify(scope, method) {
|
|
|
218
227
|
if (s && typeof s[method] === 'function')
|
|
219
228
|
s[method]();
|
|
220
229
|
}
|
|
221
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFyYWxsZWxGb3JFYWNoSGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZW5naW5lL2hhbmRsZXJzL1BhcmFsbGVsRm9yRWFjaEhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1ERztBQUdILE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQXNCekQsTUFBTSxPQUFPLHNCQUFzQjtJQUV2QjtJQUNBO0lBQ0E7SUFIVixZQUNVLElBQStCLEVBQy9CLGdCQUFnRCxFQUNoRCxLQUF5QztRQUZ6QyxTQUFJLEdBQUosSUFBSSxDQUEyQjtRQUMvQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWdDO1FBQ2hELFVBQUssR0FBTCxLQUFLLENBQW9DO0lBQ2hELENBQUM7SUFFSjs7O09BR0c7SUFDSCxLQUFLLENBQUMsR0FBRyxDQUNQLElBQTZCLEVBQzdCLE9BQXFCLEVBQ3JCLFVBQThCLEVBQzlCLGdCQUFrQztRQUVsQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBeUQsQ0FBQztRQUU5RSwwRUFBMEU7UUFDMUUsNEVBQTRFO1FBQzVFLHFFQUFxRTtRQUNyRSx3RUFBd0U7UUFDeEUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMvRyxNQUFNLFlBQVksR0FBRyxRQUFRLElBQUssUUFBZ0IsQ0FBQyxj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WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssWUFBWSxDQUFDLFFBQWdCLEVBQUUsT0FBcUIsRUFBRSxJQUFZLEVBQUUsT0FBa0I7UUFDNUYsTUFBTSxDQUFDLEdBQUcsUUFBOEMsQ0FBQztRQUN6RCxJQUFJLE9BQU8sQ0FBQyxFQUFFLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN0QyxDQUFDLENBQUMsU0FBbUQsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDdEUsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxFQUFFLFFBQVEsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNyQyxDQUFDLENBQUMsUUFBa0QsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDckUsT0FBTztRQUNULENBQUM7UUFDRCx1RUFBdUU7UUFDdkUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBRUQsb0VBQW9FO0FBQ3BFLFNBQVMsTUFBTSxDQUFDLEtBQWMsRUFBRSxNQUE2QztJQUMzRSxNQUFNLENBQUMsR0FBRyxLQUE0QyxDQUFDO0lBQ3ZELElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFVBQVU7UUFBRyxDQUFDLENBQUMsTUFBTSxDQUFnQixFQUFFLENBQUM7QUFDeEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGFyYWxsZWxGb3JFYWNoSGFuZGxlciDigJQgZHluYW1pYyBmYW4tb3V0OiBvbmUgYnJhbmNoIHBlciBpdGVtLCBicmFuY2ggQ09VTlRcbiAqIGRlY2lkZWQgYXQgcnVudGltZSBmcm9tIHRoZSBwYXlsb2FkLlxuICpcbiAqIERlc2lnbjogZG9jcy9kZXNpZ24vZXhlY3V0aW9uLWNvbnRyb2wubWQgKEQxICsgRDIpLiBSb3VuZCBCIGJ1aWxkcyBleGFjdGx5XG4gKiB0aGF0IGRvY3VtZW50LlxuICpcbiAqICMjIFdoYXQgdGhpcyBoYW5kbGVyIGRvZXMgTk9UIGludmVudFxuICpcbiAqIEFsbW9zdCBldmVyeXRoaW5nIGhlcmUgaXMgZXhpc3RpbmcgbWFjaGluZXJ5LCB3aXJlZCB0b2dldGhlcjpcbiAqXG4gKiAtICoqRWFjaCBicmFuY2ggaXMgYSBnZW5lcmF0ZWQgU1VCRkxPVy4qKiBJdHMgcGF0aCBzZWdtZW50IGlzXG4gKiAgIGA8cGFyZW50U3RhZ2VJZD5+PGluZGV4PmAgKHNlZSBgZW5naW5lL2JyYW5jaFNlZ21lbnQudHNgKSDigJQgYSBzdWJmbG93UGF0aFxuICogICBzZWdtZW50IGluIHRoZSBncmFtbWFyIHRoYXQgYWxyZWFkeSBzaGlwcywgTk9UIGEgbmV3IGRlbGltaXRlciBjbGFzcy4gU28gYVxuICogICBicmFuY2ggZ2V0cywgZm9yIGZyZWU6IGEgZnJlc2ggaXNvbGF0ZWQgYEV4ZWN1dGlvblJ1bnRpbWVgIChicmFuY2hlcyBjYW5ub3RcbiAqICAgY29ycnVwdCBlYWNoIG90aGVyJ3MgaW4tZmxpZ2h0IHN0YXRlKSwgdGhlIGlucHV0TWFwcGVyIHNlYW0gZm9yIGZlZWRpbmcgdGhlXG4gKiAgIGl0ZW0gaW4sIGFuZCDigJQgdGhlIHBvaW50IG9mIHRoZSB3aG9sZSBkZXNpZ24g4oCUIGBwYXJzZVJ1bnRpbWVTdGFnZUlkYCxcbiAqICAgYGNhdXNhbENoYWluYCwgYHNsaWNlRm9yS2V5YCBhbmQgYGZvcndhcmRTbGljZUZvcktleWAgcmVhZGluZyBicmFuY2hcbiAqICAgY29tbWl0cyB3aXRoIFpFUk8gY2hhbmdlcywgYmVjYXVzZSB0aGUgaWQgc2hhcGUgSVMgdGhlIHNoaXBwZWQgc2hhcGUuXG4gKiAtICoqVGhlIGZhbi1vdXQgaXRzZWxmIGlzIGBDaGlsZHJlbkV4ZWN1dG9yYC4qKiBUaGF0IGlzIHdoYXQgbWFrZXMgdGhlXG4gKiAgIGZhaWx1cmUgcG9saWN5IFwiUGFyYWxsZWwncyBleGlzdGluZyBmYWlsdXJlIHBvbGljeVwiIHJhdGhlciB0aGFuIGEgc2Vjb25kXG4gKiAgIG9uZTogYGZhaWxGYXN0YCDihpIgYFByb21pc2UuYWxsYCwgb3RoZXJ3aXNlIGJlc3QtZWZmb3J0IGBQcm9taXNlLmFsbFNldHRsZWRgLlxuICogICBJdCBhbHNvIGZpcmVzIGBvbkZvcmtgICsgYG9uU3RhZ2VFeGVjdXRlZCgnZm9yaycpYCBhbmQgYnViYmxlcyBhXG4gKiAgIGBQYXVzZVNpZ25hbGAgb3V0IG9mIGEgYnJhbmNoLCBhbGwgdW5jaGFuZ2VkLlxuICpcbiAqICMjIFRoZSBsYXdzIHRoaXMgaGFuZGxlciBvd25zXG4gKlxuICogKipPcmRlciBpcyBpdGVtcyBvcmRlci4qKiBSZXN1bHRzIGFyZSBhc3NlbWJsZWQgYnkgaW5kZXggZnJvbSB0aGUgZmFuLW91dCdzXG4gKiBrZXllZCByZXN1bHRzLCBuZXZlciBieSBjb21wbGV0aW9uIG9yZGVyLCBhbmQgbGFuZCBhcyBPTkUgYXJyYXkgd3JpdGUgb24gdGhlXG4gKiBwYXJlbnQg4oCUIHNvIGBpbnRvW2ldYCBpcyBhbHdheXMgYnJhbmNoIGBpYCdzIHJlc3VsdCBubyBtYXR0ZXIgd2hpY2ggYnJhbmNoXG4gKiBmaW5pc2hlZCBmaXJzdC4gQSBmYWlsZWQgYnJhbmNoIChiZXN0LWVmZm9ydCBtb2RlKSBsZWF2ZXMgYHVuZGVmaW5lZGAgaW4gaXRzXG4gKiBzbG90OyB3aGljaCBicmFuY2ggZmFpbGVkIGlzIG5vdCByZXBvcnRlZCBoZXJlLCBiZWNhdXNlIHRoYXQgZ2FwIGlzXG4gKiBwcmUtZXhpc3RpbmcgaW4gdGhlIHBhcmFsbGVsIGZhbi1vdXQgYW5kIG5vdCB0aGlzIGZlYXR1cmUncyB0byB3aWRlbi5cbiAqXG4gKiAqKm1heEJyYW5jaGVzIHRydW5jYXRlcywgYW5kIHNheXMgc28uKiogSXRlbXMgcGFzdCB0aGUgY2VpbGluZyBkbyBub3QgcnVuLlxuICogVGhlIHRydW5jYXRpb24gaXMgcmVjb3JkZWQgaW4gdGhlIHN0YWdlJ3Mgb3duIGNvbW1pdC12aXNpYmxlIGxvZyBhbmQgYXMgYVxuICogZmxvdyBtZXNzYWdlIOKAlCBib3VuZGVkIGV4ZWN1dGlvbiwgc3RhdGVkLCBuZXZlciBzaWxlbnQuXG4gKlxuICogKipCcmFuY2ggY2hhcnRzIGFyZSByZS1yZWdpc3RlcmVkIG9uIEVWRVJZIHZpc2l0LioqIFRoZSBnZW5lcmF0ZWQgc2VnbWVudHNcbiAqIGFyZSBzdGFibGUgYWNyb3NzIGxvb3AgaXRlcmF0aW9ucywgYW5kIHN1YmZsb3cgcmVnaXN0cmF0aW9uIGlzIG5vcm1hbGx5XG4gKiBmaXJzdC13cml0ZS13aW5zIOKAlCB3aGljaCB3b3VsZCBtZWFuIGEgbG9vcGluZyBmYW4tb3V0IHNpbGVudGx5IHJlLWV4ZWN1dGluZ1xuICogaXRlcmF0aW9uIDEncyBicmFuY2ggY2hhcnRzIGZvcmV2ZXIsIGV2ZW4gd2hlbiB0aGUgZmFjdG9yeSByZXR1cm5zIGRpZmZlcmVudFxuICogY2hhcnRzLiBUaGlzIGhhbmRsZXIgb3ZlcndyaXRlcyBpbnN0ZWFkLiBQZXItaXRlcmF0aW9uIHJlc3VsdHMgc3RheVxuICogYWRkcmVzc2FibGUgdGhyb3VnaCB0aGUgbW91bnQncyBgcnVudGltZVN0YWdlSWRgIGtleSwgZXhhY3RseSBhcyB0aGV5IGRvIGZvclxuICogYSBoYW5kLWF1dGhvcmVkIGxvb3Bpbmcgc3ViZmxvdy5cbiAqXG4gKiAqKkV2ZW50IG9yZGVyLioqIGBvblN0YWdlU3RhcnRgIOKGkiB0aGUgYGl0ZW1zYCByZWFkIOKGkiBgb25Gb3JrYCDihpIgYnJhbmNoZXMg4oaSXG4gKiB0aGUgb3JkZXJlZC1hcnJheSB3cml0ZSDihpIgYG9uU3RhZ2VFbmRgIOKGkiBgb25Db21taXRgLiBUaGUgc3RhZ2UncyBvd24gY29tbWl0XG4gKiB0aGVyZWZvcmUgbGFuZHMgQUZURVIgaXRzIGBvbkZvcmtgLCB3aGljaCBpcyB0aGUgb25lIHBsYWNlIGEgc3RhZ2UncyBjb21taXRcbiAqIGZvbGxvd3MgaXRzIGZhbi1vdXQgZXZlbnQg4oCUIHVuYXZvaWRhYmxlIGFuZCBob25lc3Q6IHRoZSByZXN1bHQgaXMgbm90XG4gKiBrbm93YWJsZSB1bnRpbCB0aGUgYnJhbmNoZXMgc2V0dGxlLlxuICovXG5cbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSAnLi4vLi4vbWVtb3J5L1N0YWdlQ29udGV4dC5qcyc7XG5pbXBvcnQgeyBJU19UWVBFRF9TQ09QRSB9IGZyb20gJy4uLy4uL3JlYWN0aXZlL3R5cGVzLmpzJztcbmltcG9ydCB7IGNyZWF0ZVByb3RlY3RlZFNjb3BlIH0gZnJvbSAnLi4vLi4vc2NvcGUvcHJvdGVjdGlvbi9jcmVhdGVQcm90ZWN0ZWRTY29wZS5qcyc7XG5pbXBvcnQgeyBidWlsZEJyYW5jaFNlZ21lbnQgfSBmcm9tICcuLi9icmFuY2hTZWdtZW50LmpzJztcbmltcG9ydCB0eXBlIHsgU3RhZ2VOb2RlIH0gZnJvbSAnLi4vZ3JhcGgvU3RhZ2VOb2RlLmpzJztcbmltcG9ydCB0eXBlIHsgVHJhdmVyc2FsQ29udGV4dCB9IGZyb20gJy4uL25hcnJhdGl2ZS90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEJyYW5jaENoYXJ0LCBIYW5kbGVyRGVwcywgTm9kZVJlc3VsdFR5cGUsIFBhcmFsbGVsRm9yRWFjaENvbmZpZyB9IGZyb20gJy4uL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgQ2hpbGRyZW5FeGVjdXRvciB9IGZyb20gJy4vQ2hpbGRyZW5FeGVjdXRvci5qcyc7XG5cbi8qKlxuICogVHJhdmVyc2VyLW93bmVkIG9wZXJhdGlvbnMgdGhlIGhhbmRsZXIgbmVlZHMuIFBhc3NlZCBhcyBmdW5jdGlvbnMgKG5vdCB0aGVcbiAqIHRyYXZlcnNlcikgc28gdGhlIGhhbmRsZXIga2VlcHMgdGhlIHNhbWUgbm8tYmFjay1yZWZlcmVuY2Ugc2hhcGUgYXMgZXZlcnlcbiAqIG90aGVyIGhhbmRsZXIgaW4gdGhpcyBkaXJlY3RvcnkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYWxsZWxGb3JFYWNoSG9va3M8VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiB7XG4gIC8qKiBUaGUgdHJhdmVyc2VyJ3MgYHByZWZpeE5vZGVUcmVlYCDigJQgYnl0ZS10d2luIG9mIHRoZSBidWlsZGVyJ3MgYF9wcmVmaXhOb2RlVHJlZWAuICovXG4gIHByZWZpeE5vZGVUcmVlKG5vZGU6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+LCBwcmVmaXg6IHN0cmluZyk6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+O1xuICAvKiogUmVnaXN0ZXIgKE9WRVJXUklUSU5HKSBhIGdlbmVyYXRlZCBicmFuY2ggc3ViZmxvdyArIGl0cyBzdGFnZSBmdW5jdGlvbnMuICovXG4gIHJlZ2lzdGVyQnJhbmNoU3ViZmxvdyhzdWJmbG93SWQ6IHN0cmluZywgcm9vdDogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4sIGNoYXJ0OiBCcmFuY2hDaGFydCk6IHZvaWQ7XG4gIC8qKiBSZWFkIGEgY29tcGxldGVkIGJyYW5jaCdzIGZpbmFsIHNoYXJlZCBzdGF0ZSwgZm9yIHRoZSBgc3ViZmxvd091dHB1dCA/PyBzdGF0ZWAgZmFsbGJhY2suICovXG4gIGJyYW5jaFNoYXJlZFN0YXRlKHN1YmZsb3dJZDogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gIC8qKiBNaXJyb3IgdGhlIGdlbmVyYXRlZCBicmFuY2hlcyBpbnRvIHRoZSBydW50aW1lIHN0cnVjdHVyZSwgZm9yIHZpc3VhbGl6YXRpb24uICovXG4gIHJlY29yZEJyYW5jaFN0cnVjdHVyZShub2RlSWQ6IHN0cmluZywgYnJhbmNoZXM6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+W10pOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgUGFyYWxsZWxGb3JFYWNoSGFuZGxlcjxUT3V0ID0gYW55LCBUU2NvcGUgPSBhbnk+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkZXBzOiBIYW5kbGVyRGVwczxUT3V0LCBUU2NvcGU+LFxuICAgIHByaXZhdGUgY2hpbGRyZW5FeGVjdXRvcjogQ2hpbGRyZW5FeGVjdXRvcjxUT3V0LCBUU2NvcGU+LFxuICAgIHByaXZhdGUgaG9va3M6IFBhcmFsbGVsRm9yRWFjaEhvb2tzPFRPdXQsIFRTY29wZT4sXG4gICkge31cblxuICAvKipcbiAgICogUnVuIHRoZSBmYW4tb3V0IHRvIGNvbXBsZXRpb24gYW5kIGNvbW1pdCB0aGUgb3JkZXJlZCByZXN1bHRzLlxuICAgKiBSZXR1cm5zIHRoZSByZXN1bHRzIGFycmF5ICh0aGUgc3RhZ2UncyBvdXRwdXQpLlxuICAgKi9cbiAgYXN5bmMgcnVuKFxuICAgIG5vZGU6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+LFxuICAgIGNvbnRleHQ6IFN0YWdlQ29udGV4dCxcbiAgICBicmFuY2hQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgdHJhdmVyc2FsQ29udGV4dDogVHJhdmVyc2FsQ29udGV4dCxcbiAgKTogUHJvbWlzZTx1bmtub3duW10+IHtcbiAgICBjb25zdCBjb25maWcgPSBub2RlLnBhcmFsbGVsRm9yRWFjaCBhcyBQYXJhbGxlbEZvckVhY2hDb25maWc8dW5rbm93biwgVFNjb3BlPjtcblxuICAgIC8vIFNhbWUgc2NvcGUgY29uc3RydWN0aW9uIFN0YWdlUnVubmVyIHBlcmZvcm1zLCBwcm90ZWN0aW9uIGluY2x1ZGVkOiB0aGlzXG4gICAgLy8gc3RhZ2UgaGFzIG5vIHVzZXIgZnVuY3Rpb24sIGJ1dCBgaXRlbXMoc2NvcGUpYCBJUyB1c2VyIGNvZGUsIHNvIGl0cyByZWFkc1xuICAgIC8vIGFyZSB0cmFja2VkIGFuZCBhIHN0cmF5IGFzc2lnbm1lbnQgaW5zaWRlIGl0IGlzIGNhdWdodCBieSB0aGUgc2FtZVxuICAgIC8vIHByb3RlY3Rpb24gZXZlcnkgb3RoZXIgc3RhZ2UgZ2V0cy4gKFR5cGVkU2NvcGUgYnJpbmdzIGl0cyBvd24gcHJveHkuKVxuICAgIGNvbnN0IHJhd1Njb3BlID0gdGhpcy5kZXBzLnNjb3BlRmFjdG9yeShjb250ZXh0LCBub2RlLm5hbWUsIHRoaXMuZGVwcy5yZWFkT25seUNvbnRleHQsIHRoaXMuZGVwcy5leGVjdXRpb25FbnYpO1xuICAgIGNvbnN0IGlzVHlwZWRTY29wZSA9IHJhd1Njb3BlICYmIChyYXdTY29wZSBhcyBhbnkpW0lTX1RZUEVEX1NDT1BFXSA9PT0gdHJ1ZTtcbiAgICBjb25zdCBzY29wZSA9IGlzVHlwZWRTY29wZVxuICAgICAgPyByYXdTY29wZVxuICAgICAgOiAoY3JlYXRlUHJvdGVjdGVkU2NvcGUocmF3U2NvcGUgYXMgb2JqZWN0LCB7XG4gICAgICAgICAgbW9kZTogdGhpcy5kZXBzLnNjb3BlUHJvdGVjdGlvbk1vZGUsXG4gICAgICAgICAgc3RhZ2VOYW1lOiBub2RlLm5hbWUsXG4gICAgICAgIH0pIGFzIFRTY29wZSk7XG4gICAgbm90aWZ5KHJhd1Njb3BlLCAnbm90aWZ5U3RhZ2VTdGFydCcpO1xuXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLnJlc29sdmVJdGVtcyhjb25maWcsIHNjb3BlLCBub2RlKTtcbiAgICBjb25zdCB0b3RhbCA9IGl0ZW1zLmxlbmd0aDtcbiAgICBjb25zdCBicmFuY2hDb3VudCA9IE1hdGgubWluKHRvdGFsLCBjb25maWcubWF4QnJhbmNoZXMpO1xuICAgIGNvbnN0IHRydW5jYXRlZCA9IHRvdGFsID4gYnJhbmNoQ291bnQ7XG5cbiAgICBjb250ZXh0LmFkZExvZygncGFyYWxsZWxGb3JFYWNoJywge1xuICAgICAgaXRlbXM6IHRvdGFsLFxuICAgICAgYnJhbmNoZXM6IGJyYW5jaENvdW50LFxuICAgICAgbWF4QnJhbmNoZXM6IGNvbmZpZy5tYXhCcmFuY2hlcyxcbiAgICAgIHRydW5jYXRlZCxcbiAgICAgIGludG86IGNvbmZpZy5pbnRvLFxuICAgIH0pO1xuICAgIGlmICh0cnVuY2F0ZWQpIHtcbiAgICAgIC8vIFN0YXRlZCwgbm90IHNpbGVudCDigJQgaW4gdGhlIHN0YWdlJ3Mgb3duIGZsb3cgbWVzc2FnZXMgQU5EIGl0cyBsb2dzIGFib3ZlLlxuICAgICAgY29udGV4dC5hZGRGbG93RGVidWdNZXNzYWdlKFxuICAgICAgICAnY2hpbGRyZW4nLFxuICAgICAgICBgbWF4QnJhbmNoZXMgcmVhY2hlZDogcnVubmluZyAke2JyYW5jaENvdW50fSBvZiAke3RvdGFsfSBpdGVtcyAoJHt0b3RhbCAtIGJyYW5jaENvdW50fSBub3QgcnVuKWAsXG4gICAgICAgIHsgY291bnQ6IGJyYW5jaENvdW50IH0sXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCByZXN1bHRzOiB1bmtub3duW107XG4gICAgaWYgKGJyYW5jaENvdW50ID09PSAwKSB7XG4gICAgICAvLyBaZXJvIGl0ZW1zID0gemVybyBicmFuY2hlczogbm8gZmFuLW91dCBldmVudCwgYW4gZW1wdHkgb3JkZXJlZCBhcnJheS5cbiAgICAgIHJlc3VsdHMgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYnJhbmNoZXMgPSB0aGlzLmJ1aWxkQnJhbmNoZXMobm9kZSwgaXRlbXMsIGJyYW5jaENvdW50KTtcbiAgICAgIHRoaXMuaG9va3MucmVjb3JkQnJhbmNoU3RydWN0dXJlKG5vZGUuaWQsIGJyYW5jaGVzKTtcblxuICAgICAgLy8gVGhlIGZhbi1vdXQgbm9kZSBoYW5kZWQgdG8gQ2hpbGRyZW5FeGVjdXRvciBpcyBhIHRlbXAgdmlldyBjYXJyeWluZyB0aGVcbiAgICAgIC8vIGdlbmVyYXRlZCBicmFuY2hlcyAoc2FtZSBzaGFwZSBgZXhlY3V0ZVNlbGVjdGVkQ2hpbGRyZW5gIHVzZXMgZm9yIGl0c1xuICAgICAgLy8gc2VsZWN0ZWQgc3Vic2V0KSDigJQgdGhlIHNoYXJlZCBncmFwaCBub2RlIGlzIG5ldmVyIG11dGF0ZWQsIHNvIGEgbG9vcFxuICAgICAgLy8gcmV2aXNpdCByZWdlbmVyYXRlcyBjbGVhbmx5LlxuICAgICAgY29uc3QgZm9ya1ZpZXc6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+ID0ge1xuICAgICAgICAuLi5ub2RlLFxuICAgICAgICBjaGlsZHJlbjogYnJhbmNoZXMsXG4gICAgICAgIC4uLihjb25maWcuZmFpbEZhc3QgIT09IHVuZGVmaW5lZCAmJiB7IGZhaWxGYXN0OiBjb25maWcuZmFpbEZhc3QgfSksXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjaGlsZFJlc3VsdHMgPSBhd2FpdCB0aGlzLmNoaWxkcmVuRXhlY3V0b3IuZXhlY3V0ZU5vZGVDaGlsZHJlbihcbiAgICAgICAgZm9ya1ZpZXcsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgYnJhbmNoUGF0aCxcbiAgICAgICAgdHJhdmVyc2FsQ29udGV4dCxcbiAgICAgICk7XG5cbiAgICAgIHJlc3VsdHMgPSB0aGlzLmNvbGxlY3RPcmRlcmVkKG5vZGUsIGJyYW5jaENvdW50LCBjaGlsZFJlc3VsdHMpO1xuICAgIH1cblxuICAgIHRoaXMud3JpdGVSZXN1bHRzKHJhd1Njb3BlLCBjb250ZXh0LCBjb25maWcuaW50bywgcmVzdWx0cyk7XG4gICAgbm90aWZ5KHJhd1Njb3BlLCAnbm90aWZ5U3RhZ2VFbmQnKTtcbiAgICBjb250ZXh0LmNvbW1pdCgpO1xuXG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cblxuICAvKipcbiAgICogRXZhbHVhdGUgdGhlIGl0ZW1zIHNlbGVjdG9yIGFnYWluc3QgdGhlIGxpdmUgc2NvcGUuIEEgbm9uLWFycmF5IHJldHVybiBpc1xuICAgKiBhIGNoYXJ0IGJ1Zywgbm90IGEgcnVudGltZSBjb25kaXRpb24g4oCUIGl0IGZhaWxzIGxvdWRseSwgbmFtaW5nIHRoZSBzdGFnZS5cbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZUl0ZW1zKFxuICAgIGNvbmZpZzogUGFyYWxsZWxGb3JFYWNoQ29uZmlnPHVua25vd24sIFRTY29wZT4sXG4gICAgc2NvcGU6IFRTY29wZSxcbiAgICBub2RlOiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPixcbiAgKTogcmVhZG9ubHkgdW5rbm93bltdIHtcbiAgICBjb25zdCBpdGVtcyA9IGNvbmZpZy5pdGVtcyhzY29wZSk7XG4gICAgaWYgKGl0ZW1zID09PSB1bmRlZmluZWQgfHwgaXRlbXMgPT09IG51bGwpIHJldHVybiBbXTtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbXMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBwYXJhbGxlbEZvckVhY2ggJyR7bm9kZS5pZH0nOiBpdGVtcygpIG11c3QgcmV0dXJuIGFuIGFycmF5IChnb3QgJHt0eXBlb2YgaXRlbXN9KS4gYCArXG4gICAgICAgICAgJ1JldHVybiBbXSB0byBydW4gemVybyBicmFuY2hlcy4nLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW1zO1xuICB9XG5cbiAgLyoqIEdlbmVyYXRlIG9uZSBzdWJmbG93LW1vdW50IG5vZGUgcGVyIGJyYW5jaCwgcmVnaXN0ZXJpbmcgZWFjaCBicmFuY2ggY2hhcnQuICovXG4gIHByaXZhdGUgYnVpbGRCcmFuY2hlcyhcbiAgICBub2RlOiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPixcbiAgICBpdGVtczogcmVhZG9ubHkgdW5rbm93bltdLFxuICAgIGJyYW5jaENvdW50OiBudW1iZXIsXG4gICk6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+W10ge1xuICAgIGNvbnN0IGNvbmZpZyA9IG5vZGUucGFyYWxsZWxGb3JFYWNoIGFzIFBhcmFsbGVsRm9yRWFjaENvbmZpZzx1bmtub3duLCBUU2NvcGU+O1xuICAgIGNvbnN0IGJyYW5jaGVzOiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPltdID0gW107XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYnJhbmNoQ291bnQ7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1tpbmRleF07XG4gICAgICBjb25zdCBzdWJmbG93SWQgPSBidWlsZEJyYW5jaFNlZ21lbnQobm9kZS5pZCwgaW5kZXgpO1xuICAgICAgY29uc3QgY2hhcnQgPSBjb25maWcuYnJhbmNoKGl0ZW0sIGluZGV4KTtcbiAgICAgIGlmICghY2hhcnQgfHwgIWNoYXJ0LnJvb3QpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBwYXJhbGxlbEZvckVhY2ggJyR7bm9kZS5pZH0nOiBicmFuY2goaXRlbSwgJHtpbmRleH0pIG11c3QgcmV0dXJuIGEgYnVpbHQgY2hhcnQgYCArXG4gICAgICAgICAgICAnKHRoZSByZXN1bHQgb2YgZmxvd0NoYXJ0KC4uLikuYnVpbGQoKSkuJyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gU2FtZSBwcmVmaXhpbmcgYSBsYXp5IHN1YmZsb3cgZ2V0cyDigJQgdGhlIGJyYW5jaCdzIGlubmVyIGlkcyBiZWNvbWVcbiAgICAgIC8vIGA8c2VnbWVudD4vPGlkPmAsIHNvIGl0cyBzdGFnZXMgYWRkcmVzcyBhcyBgPHNlZ21lbnQ+LzxpZD4jPG4+YC5cbiAgICAgIGNvbnN0IHByZWZpeGVkUm9vdCA9IHRoaXMuaG9va3MucHJlZml4Tm9kZVRyZWUoY2hhcnQucm9vdCBhcyBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPiwgc3ViZmxvd0lkKTtcbiAgICAgIHRoaXMuaG9va3MucmVnaXN0ZXJCcmFuY2hTdWJmbG93KHN1YmZsb3dJZCwgcHJlZml4ZWRSb290LCBjaGFydCk7XG5cbiAgICAgIGJyYW5jaGVzLnB1c2goe1xuICAgICAgICBuYW1lOiBgJHtub2RlLm5hbWV9IFske2luZGV4fV1gLFxuICAgICAgICBpZDogc3ViZmxvd0lkLFxuICAgICAgICBpc1N1YmZsb3dSb290OiB0cnVlLFxuICAgICAgICBzdWJmbG93SWQsXG4gICAgICAgIHN1YmZsb3dOYW1lOiBgJHtub2RlLm5hbWV9IFske2luZGV4fV1gLFxuICAgICAgICBzdWJmbG93TW91bnRPcHRpb25zOiB7XG4gICAgICAgICAgLy8gRDEncyBcImlucHV0TWFwcGVyIHNlYW0gZm9yIGZlZWRpbmcgdGhlIGl0ZW0gaW5cIjogdGhlIGl0ZW0gaXNcbiAgICAgICAgICAvLyB2aXNpYmxlIElOIHRoZSBicmFuY2gncyBzY29wZSAoYW5kIHNvIGluIGl0cyBjb21taXQgbG9nKSBhcyB3ZWxsIGFzXG4gICAgICAgICAgLy8gY2xvc2VkIG92ZXIgYnkgdGhlIGZhY3Rvcnkg4oCUIHByb3ZlbmFuY2UgYmVhdHMgYSBoaWRkZW4gY2xvc3VyZS5cbiAgICAgICAgICBpbnB1dE1hcHBlcjogKCkgPT4gKHsgaXRlbSwgaW5kZXggfSksXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gYnJhbmNoZXM7XG4gIH1cblxuICAvKipcbiAgICogQXNzZW1ibGUgcmVzdWx0cyBpbiBJVEVNUyBvcmRlciDigJQgbmV2ZXIgY29tcGxldGlvbiBvcmRlci5cbiAgICpcbiAgICogVGhlIGJyYW5jaCdzIHZhbHVlIGlzIGl0cyBzdWJmbG93IG91dHB1dCwgZmFsbGluZyBiYWNrIHRvIHRoZSBicmFuY2gnc1xuICAgKiBmaW5hbCBzaGFyZWQgc3RhdGUgKHRoZSBUeXBlZFNjb3BlIGNhc2UsIHdoZXJlIHN0YWdlIGZ1bmN0aW9ucyByZXR1cm5cbiAgICogdm9pZCkg4oCUIHRoZSBzYW1lIGBzdWJmbG93T3V0cHV0ID8/IHNoYXJlZFN0YXRlYCBydWxlIGBTdWJmbG93RXhlY3V0b3JgXG4gICAqIGFwcGxpZXMgdG8gYW4gb3V0cHV0TWFwcGVyLlxuICAgKi9cbiAgcHJpdmF0ZSBjb2xsZWN0T3JkZXJlZChcbiAgICBub2RlOiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPixcbiAgICBicmFuY2hDb3VudDogbnVtYmVyLFxuICAgIGNoaWxkUmVzdWx0czogUmVjb3JkPHN0cmluZywgTm9kZVJlc3VsdFR5cGU+LFxuICApOiB1bmtub3duW10ge1xuICAgIGNvbnN0IG9yZGVyZWQ6IHVua25vd25bXSA9IFtdO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBicmFuY2hDb3VudDsgaW5kZXgrKykge1xuICAgICAgY29uc3Qgc3ViZmxvd0lkID0gYnVpbGRCcmFuY2hTZWdtZW50KG5vZGUuaWQsIGluZGV4KTtcbiAgICAgIGNvbnN0IGVudHJ5ID0gY2hpbGRSZXN1bHRzW3N1YmZsb3dJZF07XG4gICAgICBpZiAoZW50cnkgPT09IHVuZGVmaW5lZCB8fCBlbnRyeS5pc0Vycm9yKSB7XG4gICAgICAgIC8vIEJlc3QtZWZmb3J0IG1vZGU6IGEgZmFpbGVkIGJyYW5jaCBrZWVwcyBpdHMgU0xPVCAob3JkZXIgaXMgaXRlbXNcbiAgICAgICAgLy8gb3JkZXIpIHdpdGggYW4gdW5kZWZpbmVkIHZhbHVlLiBmYWlsRmFzdCBtb2RlIG5ldmVyIHJlYWNoZXMgaGVyZSDigJRcbiAgICAgICAgLy8gdGhlIGVycm9yIGFscmVhZHkgcmVqZWN0ZWQgdGhlIHdob2xlIHN0YWdlLlxuICAgICAgICBvcmRlcmVkLnB1c2godW5kZWZpbmVkKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBvcmRlcmVkLnB1c2goZW50cnkucmVzdWx0ID8/IHRoaXMuaG9va3MuYnJhbmNoU2hhcmVkU3RhdGUoc3ViZmxvd0lkKSk7XG4gICAgfVxuICAgIHJldHVybiBvcmRlcmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlIHRoZSBvcmRlcmVkIGFycmF5IGFzIE9ORSB2YWx1ZSBvbiB0aGUgcGFyZW50IHNjb3BlLlxuICAgKlxuICAgKiBgJHNldFZhbHVlYCBkZWxpYmVyYXRlbHksIHdoZXJlIGF2YWlsYWJsZTogdGhlIFR5cGVkU2NvcGUgc2V0IHRyYXBcbiAgICogSlNPTi1yb3VuZC10cmlwcyBldmVyeSBvYmplY3Qgd3JpdGUgKERhdGXihpJzdHJpbmcsIE1hcOKGknt9KSwgYW5kIGJyYW5jaFxuICAgKiByZXN1bHRzIGFyZSBleGFjdGx5IHRoZSBraW5kIG9mIHBheWxvYWQgdGhhdCB3b3VsZCBzaWxlbnRseSBkZWdyYWRlLlxuICAgKi9cbiAgcHJpdmF0ZSB3cml0ZVJlc3VsdHMocmF3U2NvcGU6IFRTY29wZSwgY29udGV4dDogU3RhZ2VDb250ZXh0LCBpbnRvOiBzdHJpbmcsIHJlc3VsdHM6IHVua25vd25bXSk6IHZvaWQge1xuICAgIGNvbnN0IHMgPSByYXdTY29wZSBhcyB1bmtub3duIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGlmICh0eXBlb2Ygcz8uJHNldFZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAocy4kc2V0VmFsdWUgYXMgKGtleTogc3RyaW5nLCB2YWx1ZTogdW5rbm93bikgPT4gdm9pZCkoaW50bywgcmVzdWx0cyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlb2Ygcz8uc2V0VmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIChzLnNldFZhbHVlIGFzIChrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pID0+IHZvaWQpKGludG8sIHJlc3VsdHMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBObyBmYWNhZGUgKGhhbmQtcm9sbGVkIHNjb3BlIGZhY3RvcnkpIOKAlCB3cml0ZSBzdHJhaWdodCB0byB0aGUgZnJhbWUuXG4gICAgY29udGV4dC5zZXRHbG9iYWwoaW50bywgcmVzdWx0cyk7XG4gIH1cbn1cblxuLyoqIEZpcmUgYSBzY29wZSBsaWZlY3ljbGUgbm90aWZpY2F0aW9uIGlmIHRoZSBzY29wZSBzdXBwb3J0cyBpdC4gKi9cbmZ1bmN0aW9uIG5vdGlmeShzY29wZTogdW5rbm93biwgbWV0aG9kOiAnbm90aWZ5U3RhZ2VTdGFydCcgfCAnbm90aWZ5U3RhZ2VFbmQnKTogdm9pZCB7XG4gIGNvbnN0IHMgPSBzY29wZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZDtcbiAgaWYgKHMgJiYgdHlwZW9mIHNbbWV0aG9kXSA9PT0gJ2Z1bmN0aW9uJykgKHNbbWV0aG9kXSBhcyAoKSA9PiB2b2lkKSgpO1xufVxuIl19
|
|
230
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFyYWxsZWxGb3JFYWNoSGFuZGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZW5naW5lL2hhbmRsZXJzL1BhcmFsbGVsRm9yRWFjaEhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1ERztBQUdILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDdEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFzQnpELE1BQU0sT0FBTyxzQkFBc0I7SUFFdkI7SUFDQTtJQUNBO0lBSFYsWUFDVSxJQUErQixFQUMvQixnQkFBZ0QsRUFDaEQsS0FBeUM7UUFGekMsU0FBSSxHQUFKLElBQUksQ0FBMkI7UUFDL0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFnQztRQUNoRCxVQUFLLEdBQUwsS0FBSyxDQUFvQztJQUNoRCxDQUFDO0lBRUo7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLEdBQUcsQ0FDUCxJQUE2QixFQUM3QixPQUFxQixFQUNyQixVQUE4QixFQUM5QixnQkFBa0M7UUFFbEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQXlELENBQUM7UUFFOUUsMEVBQTBFO1FBQzFFLDRFQUE0RTtRQUM1RSxxRUFBcUU7UUFDckUsd0VBQXdFO1FBQ3hFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7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QztnQkFDOUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDeEIsU0FBUztZQUNYLENBQUM7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssWUFBWSxDQUFDLFFBQWdCLEVBQUUsT0FBcUIsRUFBRSxJQUFZLEVBQUUsT0FBa0I7UUFDNUYsTUFBTSxDQUFDLEdBQUcsUUFBOEMsQ0FBQztRQUN6RCxJQUFJLE9BQU8sQ0FBQyxFQUFFLFNBQVMsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN0QyxDQUFDLENBQUMsU0FBbUQsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDdEUsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxFQUFFLFFBQVEsS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUNyQyxDQUFDLENBQUMsUUFBa0QsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDckUsT0FBTztRQUNULENBQUM7UUFDRCx1RUFBdUU7UUFDdkUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBRUQsb0VBQW9FO0FBQ3BFLFNBQVMsTUFBTSxDQUFDLEtBQWMsRUFBRSxNQUE2QztJQUMzRSxNQUFNLENBQUMsR0FBRyxLQUE0QyxDQUFDO0lBQ3ZELElBQUksQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFVBQVU7UUFBRyxDQUFDLENBQUMsTUFBTSxDQUFnQixFQUFFLENBQUM7QUFDeEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUGFyYWxsZWxGb3JFYWNoSGFuZGxlciDigJQgZHluYW1pYyBmYW4tb3V0OiBvbmUgYnJhbmNoIHBlciBpdGVtLCBicmFuY2ggQ09VTlRcbiAqIGRlY2lkZWQgYXQgcnVudGltZSBmcm9tIHRoZSBwYXlsb2FkLlxuICpcbiAqIERlc2lnbjogZG9jcy9kZXNpZ24vZXhlY3V0aW9uLWNvbnRyb2wubWQgKEQxICsgRDIpLiBSb3VuZCBCIGJ1aWxkcyBleGFjdGx5XG4gKiB0aGF0IGRvY3VtZW50LlxuICpcbiAqICMjIFdoYXQgdGhpcyBoYW5kbGVyIGRvZXMgTk9UIGludmVudFxuICpcbiAqIEFsbW9zdCBldmVyeXRoaW5nIGhlcmUgaXMgZXhpc3RpbmcgbWFjaGluZXJ5LCB3aXJlZCB0b2dldGhlcjpcbiAqXG4gKiAtICoqRWFjaCBicmFuY2ggaXMgYSBnZW5lcmF0ZWQgU1VCRkxPVy4qKiBJdHMgcGF0aCBzZWdtZW50IGlzXG4gKiAgIGA8cGFyZW50U3RhZ2VJZD5+PGluZGV4PmAgKHNlZSBgZW5naW5lL2JyYW5jaFNlZ21lbnQudHNgKSDigJQgYSBzdWJmbG93UGF0aFxuICogICBzZWdtZW50IGluIHRoZSBncmFtbWFyIHRoYXQgYWxyZWFkeSBzaGlwcywgTk9UIGEgbmV3IGRlbGltaXRlciBjbGFzcy4gU28gYVxuICogICBicmFuY2ggZ2V0cywgZm9yIGZyZWU6IGEgZnJlc2ggaXNvbGF0ZWQgYEV4ZWN1dGlvblJ1bnRpbWVgIChicmFuY2hlcyBjYW5ub3RcbiAqICAgY29ycnVwdCBlYWNoIG90aGVyJ3MgaW4tZmxpZ2h0IHN0YXRlKSwgdGhlIGlucHV0TWFwcGVyIHNlYW0gZm9yIGZlZWRpbmcgdGhlXG4gKiAgIGl0ZW0gaW4sIGFuZCDigJQgdGhlIHBvaW50IG9mIHRoZSB3aG9sZSBkZXNpZ24g4oCUIGBwYXJzZVJ1bnRpbWVTdGFnZUlkYCxcbiAqICAgYGNhdXNhbENoYWluYCwgYHNsaWNlRm9yS2V5YCBhbmQgYGZvcndhcmRTbGljZUZvcktleWAgcmVhZGluZyBicmFuY2hcbiAqICAgY29tbWl0cyB3aXRoIFpFUk8gY2hhbmdlcywgYmVjYXVzZSB0aGUgaWQgc2hhcGUgSVMgdGhlIHNoaXBwZWQgc2hhcGUuXG4gKiAtICoqVGhlIGZhbi1vdXQgaXRzZWxmIGlzIGBDaGlsZHJlbkV4ZWN1dG9yYC4qKiBUaGF0IGlzIHdoYXQgbWFrZXMgdGhlXG4gKiAgIGZhaWx1cmUgcG9saWN5IFwiUGFyYWxsZWwncyBleGlzdGluZyBmYWlsdXJlIHBvbGljeVwiIHJhdGhlciB0aGFuIGEgc2Vjb25kXG4gKiAgIG9uZTogYGZhaWxGYXN0YCDihpIgYFByb21pc2UuYWxsYCwgb3RoZXJ3aXNlIGJlc3QtZWZmb3J0IGBQcm9taXNlLmFsbFNldHRsZWRgLlxuICogICBJdCBhbHNvIGZpcmVzIGBvbkZvcmtgICsgYG9uU3RhZ2VFeGVjdXRlZCgnZm9yaycpYCBhbmQgYnViYmxlcyBhXG4gKiAgIGBQYXVzZVNpZ25hbGAgb3V0IG9mIGEgYnJhbmNoLCBhbGwgdW5jaGFuZ2VkLlxuICpcbiAqICMjIFRoZSBsYXdzIHRoaXMgaGFuZGxlciBvd25zXG4gKlxuICogKipPcmRlciBpcyBpdGVtcyBvcmRlci4qKiBSZXN1bHRzIGFyZSBhc3NlbWJsZWQgYnkgaW5kZXggZnJvbSB0aGUgZmFuLW91dCdzXG4gKiBrZXllZCByZXN1bHRzLCBuZXZlciBieSBjb21wbGV0aW9uIG9yZGVyLCBhbmQgbGFuZCBhcyBPTkUgYXJyYXkgd3JpdGUgb24gdGhlXG4gKiBwYXJlbnQg4oCUIHNvIGBpbnRvW2ldYCBpcyBhbHdheXMgYnJhbmNoIGBpYCdzIHJlc3VsdCBubyBtYXR0ZXIgd2hpY2ggYnJhbmNoXG4gKiBmaW5pc2hlZCBmaXJzdC4gQSBmYWlsZWQgYnJhbmNoIChiZXN0LWVmZm9ydCBtb2RlKSBsZWF2ZXMgYHVuZGVmaW5lZGAgaW4gaXRzXG4gKiBzbG90OyB3aGljaCBicmFuY2ggZmFpbGVkIGlzIG5vdCByZXBvcnRlZCBoZXJlLCBiZWNhdXNlIHRoYXQgZ2FwIGlzXG4gKiBwcmUtZXhpc3RpbmcgaW4gdGhlIHBhcmFsbGVsIGZhbi1vdXQgYW5kIG5vdCB0aGlzIGZlYXR1cmUncyB0byB3aWRlbi5cbiAqXG4gKiAqKm1heEJyYW5jaGVzIHRydW5jYXRlcywgYW5kIHNheXMgc28uKiogSXRlbXMgcGFzdCB0aGUgY2VpbGluZyBkbyBub3QgcnVuLlxuICogVGhlIHRydW5jYXRpb24gaXMgcmVjb3JkZWQgaW4gdGhlIHN0YWdlJ3Mgb3duIGNvbW1pdC12aXNpYmxlIGxvZyBhbmQgYXMgYVxuICogZmxvdyBtZXNzYWdlIOKAlCBib3VuZGVkIGV4ZWN1dGlvbiwgc3RhdGVkLCBuZXZlciBzaWxlbnQuXG4gKlxuICogKipCcmFuY2ggY2hhcnRzIGFyZSByZS1yZWdpc3RlcmVkIG9uIEVWRVJZIHZpc2l0LioqIFRoZSBnZW5lcmF0ZWQgc2VnbWVudHNcbiAqIGFyZSBzdGFibGUgYWNyb3NzIGxvb3AgaXRlcmF0aW9ucywgYW5kIHN1YmZsb3cgcmVnaXN0cmF0aW9uIGlzIG5vcm1hbGx5XG4gKiBmaXJzdC13cml0ZS13aW5zIOKAlCB3aGljaCB3b3VsZCBtZWFuIGEgbG9vcGluZyBmYW4tb3V0IHNpbGVudGx5IHJlLWV4ZWN1dGluZ1xuICogaXRlcmF0aW9uIDEncyBicmFuY2ggY2hhcnRzIGZvcmV2ZXIsIGV2ZW4gd2hlbiB0aGUgZmFjdG9yeSByZXR1cm5zIGRpZmZlcmVudFxuICogY2hhcnRzLiBUaGlzIGhhbmRsZXIgb3ZlcndyaXRlcyBpbnN0ZWFkLiBQZXItaXRlcmF0aW9uIHJlc3VsdHMgc3RheVxuICogYWRkcmVzc2FibGUgdGhyb3VnaCB0aGUgbW91bnQncyBgcnVudGltZVN0YWdlSWRgIGtleSwgZXhhY3RseSBhcyB0aGV5IGRvIGZvclxuICogYSBoYW5kLWF1dGhvcmVkIGxvb3Bpbmcgc3ViZmxvdy5cbiAqXG4gKiAqKkV2ZW50IG9yZGVyLioqIGBvblN0YWdlU3RhcnRgIOKGkiB0aGUgYGl0ZW1zYCByZWFkIOKGkiBgb25Gb3JrYCDihpIgYnJhbmNoZXMg4oaSXG4gKiB0aGUgb3JkZXJlZC1hcnJheSB3cml0ZSDihpIgYG9uU3RhZ2VFbmRgIOKGkiBgb25Db21taXRgLiBUaGUgc3RhZ2UncyBvd24gY29tbWl0XG4gKiB0aGVyZWZvcmUgbGFuZHMgQUZURVIgaXRzIGBvbkZvcmtgLCB3aGljaCBpcyB0aGUgb25lIHBsYWNlIGEgc3RhZ2UncyBjb21taXRcbiAqIGZvbGxvd3MgaXRzIGZhbi1vdXQgZXZlbnQg4oCUIHVuYXZvaWRhYmxlIGFuZCBob25lc3Q6IHRoZSByZXN1bHQgaXMgbm90XG4gKiBrbm93YWJsZSB1bnRpbCB0aGUgYnJhbmNoZXMgc2V0dGxlLlxuICovXG5cbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSAnLi4vLi4vbWVtb3J5L1N0YWdlQ29udGV4dC5qcyc7XG5pbXBvcnQgeyB1bndyYXBIYW5kbGVzIH0gZnJvbSAnLi4vLi4vcmVhY3RpdmUvaGFuZGxlcy5qcyc7XG5pbXBvcnQgeyBJU19UWVBFRF9TQ09QRSB9IGZyb20gJy4uLy4uL3JlYWN0aXZlL3R5cGVzLmpzJztcbmltcG9ydCB7IGNyZWF0ZVByb3RlY3RlZFNjb3BlIH0gZnJvbSAnLi4vLi4vc2NvcGUvcHJvdGVjdGlvbi9jcmVhdGVQcm90ZWN0ZWRTY29wZS5qcyc7XG5pbXBvcnQgeyBidWlsZEJyYW5jaFNlZ21lbnQgfSBmcm9tICcuLi9icmFuY2hTZWdtZW50LmpzJztcbmltcG9ydCB0eXBlIHsgU3RhZ2VOb2RlIH0gZnJvbSAnLi4vZ3JhcGgvU3RhZ2VOb2RlLmpzJztcbmltcG9ydCB0eXBlIHsgVHJhdmVyc2FsQ29udGV4dCB9IGZyb20gJy4uL25hcnJhdGl2ZS90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEJyYW5jaENoYXJ0LCBIYW5kbGVyRGVwcywgTm9kZVJlc3VsdFR5cGUsIFBhcmFsbGVsRm9yRWFjaENvbmZpZyB9IGZyb20gJy4uL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgQ2hpbGRyZW5FeGVjdXRvciB9IGZyb20gJy4vQ2hpbGRyZW5FeGVjdXRvci5qcyc7XG5cbi8qKlxuICogVHJhdmVyc2VyLW93bmVkIG9wZXJhdGlvbnMgdGhlIGhhbmRsZXIgbmVlZHMuIFBhc3NlZCBhcyBmdW5jdGlvbnMgKG5vdCB0aGVcbiAqIHRyYXZlcnNlcikgc28gdGhlIGhhbmRsZXIga2VlcHMgdGhlIHNhbWUgbm8tYmFjay1yZWZlcmVuY2Ugc2hhcGUgYXMgZXZlcnlcbiAqIG90aGVyIGhhbmRsZXIgaW4gdGhpcyBkaXJlY3RvcnkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyYWxsZWxGb3JFYWNoSG9va3M8VE91dCA9IGFueSwgVFNjb3BlID0gYW55PiB7XG4gIC8qKiBUaGUgdHJhdmVyc2VyJ3MgYHByZWZpeE5vZGVUcmVlYCDigJQgYnl0ZS10d2luIG9mIHRoZSBidWlsZGVyJ3MgYF9wcmVmaXhOb2RlVHJlZWAuICovXG4gIHByZWZpeE5vZGVUcmVlKG5vZGU6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+LCBwcmVmaXg6IHN0cmluZyk6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+O1xuICAvKiogUmVnaXN0ZXIgKE9WRVJXUklUSU5HKSBhIGdlbmVyYXRlZCBicmFuY2ggc3ViZmxvdyArIGl0cyBzdGFnZSBmdW5jdGlvbnMuICovXG4gIHJlZ2lzdGVyQnJhbmNoU3ViZmxvdyhzdWJmbG93SWQ6IHN0cmluZywgcm9vdDogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4sIGNoYXJ0OiBCcmFuY2hDaGFydCk6IHZvaWQ7XG4gIC8qKiBSZWFkIGEgY29tcGxldGVkIGJyYW5jaCdzIGZpbmFsIHNoYXJlZCBzdGF0ZSwgZm9yIHRoZSBgc3ViZmxvd091dHB1dCA/PyBzdGF0ZWAgZmFsbGJhY2suICovXG4gIGJyYW5jaFNoYXJlZFN0YXRlKHN1YmZsb3dJZDogc3RyaW5nKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gIC8qKiBNaXJyb3IgdGhlIGdlbmVyYXRlZCBicmFuY2hlcyBpbnRvIHRoZSBydW50aW1lIHN0cnVjdHVyZSwgZm9yIHZpc3VhbGl6YXRpb24uICovXG4gIHJlY29yZEJyYW5jaFN0cnVjdHVyZShub2RlSWQ6IHN0cmluZywgYnJhbmNoZXM6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+W10pOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgUGFyYWxsZWxGb3JFYWNoSGFuZGxlcjxUT3V0ID0gYW55LCBUU2NvcGUgPSBhbnk+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBkZXBzOiBIYW5kbGVyRGVwczxUT3V0LCBUU2NvcGU+LFxuICAgIHByaXZhdGUgY2hpbGRyZW5FeGVjdXRvcjogQ2hpbGRyZW5FeGVjdXRvcjxUT3V0LCBUU2NvcGU+LFxuICAgIHByaXZhdGUgaG9va3M6IFBhcmFsbGVsRm9yRWFjaEhvb2tzPFRPdXQsIFRTY29wZT4sXG4gICkge31cblxuICAvKipcbiAgICogUnVuIHRoZSBmYW4tb3V0IHRvIGNvbXBsZXRpb24gYW5kIGNvbW1pdCB0aGUgb3JkZXJlZCByZXN1bHRzLlxuICAgKiBSZXR1cm5zIHRoZSByZXN1bHRzIGFycmF5ICh0aGUgc3RhZ2UncyBvdXRwdXQpLlxuICAgKi9cbiAgYXN5bmMgcnVuKFxuICAgIG5vZGU6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+LFxuICAgIGNvbnRleHQ6IFN0YWdlQ29udGV4dCxcbiAgICBicmFuY2hQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgdHJhdmVyc2FsQ29udGV4dDogVHJhdmVyc2FsQ29udGV4dCxcbiAgKTogUHJvbWlzZTx1bmtub3duW10+IHtcbiAgICBjb25zdCBjb25maWcgPSBub2RlLnBhcmFsbGVsRm9yRWFjaCBhcyBQYXJhbGxlbEZvckVhY2hDb25maWc8dW5rbm93biwgVFNjb3BlPjtcblxuICAgIC8vIFNhbWUgc2NvcGUgY29uc3RydWN0aW9uIFN0YWdlUnVubmVyIHBlcmZvcm1zLCBwcm90ZWN0aW9uIGluY2x1ZGVkOiB0aGlzXG4gICAgLy8gc3RhZ2UgaGFzIG5vIHVzZXIgZnVuY3Rpb24sIGJ1dCBgaXRlbXMoc2NvcGUpYCBJUyB1c2VyIGNvZGUsIHNvIGl0cyByZWFkc1xuICAgIC8vIGFyZSB0cmFja2VkIGFuZCBhIHN0cmF5IGFzc2lnbm1lbnQgaW5zaWRlIGl0IGlzIGNhdWdodCBieSB0aGUgc2FtZVxuICAgIC8vIHByb3RlY3Rpb24gZXZlcnkgb3RoZXIgc3RhZ2UgZ2V0cy4gKFR5cGVkU2NvcGUgYnJpbmdzIGl0cyBvd24gcHJveHkuKVxuICAgIGNvbnN0IHJhd1Njb3BlID0gdGhpcy5kZXBzLnNjb3BlRmFjdG9yeShjb250ZXh0LCBub2RlLm5hbWUsIHRoaXMuZGVwcy5yZWFkT25seUNvbnRleHQsIHRoaXMuZGVwcy5leGVjdXRpb25FbnYpO1xuICAgIGNvbnN0IGlzVHlwZWRTY29wZSA9IHJhd1Njb3BlICYmIChyYXdTY29wZSBhcyBhbnkpW0lTX1RZUEVEX1NDT1BFXSA9PT0gdHJ1ZTtcbiAgICBjb25zdCBzY29wZSA9IGlzVHlwZWRTY29wZVxuICAgICAgPyByYXdTY29wZVxuICAgICAgOiAoY3JlYXRlUHJvdGVjdGVkU2NvcGUocmF3U2NvcGUgYXMgb2JqZWN0LCB7XG4gICAgICAgICAgbW9kZTogdGhpcy5kZXBzLnNjb3BlUHJvdGVjdGlvbk1vZGUsXG4gICAgICAgICAgc3RhZ2VOYW1lOiBub2RlLm5hbWUsXG4gICAgICAgIH0pIGFzIFRTY29wZSk7XG4gICAgbm90aWZ5KHJhd1Njb3BlLCAnbm90aWZ5U3RhZ2VTdGFydCcpO1xuXG4gICAgY29uc3QgaXRlbXMgPSB0aGlzLnJlc29sdmVJdGVtcyhjb25maWcsIHNjb3BlLCBub2RlKTtcbiAgICBjb25zdCB0b3RhbCA9IGl0ZW1zLmxlbmd0aDtcbiAgICBjb25zdCBicmFuY2hDb3VudCA9IE1hdGgubWluKHRvdGFsLCBjb25maWcubWF4QnJhbmNoZXMpO1xuICAgIGNvbnN0IHRydW5jYXRlZCA9IHRvdGFsID4gYnJhbmNoQ291bnQ7XG5cbiAgICBjb250ZXh0LmFkZExvZygncGFyYWxsZWxGb3JFYWNoJywge1xuICAgICAgaXRlbXM6IHRvdGFsLFxuICAgICAgYnJhbmNoZXM6IGJyYW5jaENvdW50LFxuICAgICAgbWF4QnJhbmNoZXM6IGNvbmZpZy5tYXhCcmFuY2hlcyxcbiAgICAgIHRydW5jYXRlZCxcbiAgICAgIGludG86IGNvbmZpZy5pbnRvLFxuICAgIH0pO1xuICAgIGlmICh0cnVuY2F0ZWQpIHtcbiAgICAgIC8vIFN0YXRlZCwgbm90IHNpbGVudCDigJQgaW4gdGhlIHN0YWdlJ3Mgb3duIGZsb3cgbWVzc2FnZXMgQU5EIGl0cyBsb2dzIGFib3ZlLlxuICAgICAgY29udGV4dC5hZGRGbG93RGVidWdNZXNzYWdlKFxuICAgICAgICAnY2hpbGRyZW4nLFxuICAgICAgICBgbWF4QnJhbmNoZXMgcmVhY2hlZDogcnVubmluZyAke2JyYW5jaENvdW50fSBvZiAke3RvdGFsfSBpdGVtcyAoJHt0b3RhbCAtIGJyYW5jaENvdW50fSBub3QgcnVuKWAsXG4gICAgICAgIHsgY291bnQ6IGJyYW5jaENvdW50IH0sXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCByZXN1bHRzOiB1bmtub3duW107XG4gICAgaWYgKGJyYW5jaENvdW50ID09PSAwKSB7XG4gICAgICAvLyBaZXJvIGl0ZW1zID0gemVybyBicmFuY2hlczogbm8gZmFuLW91dCBldmVudCwgYW4gZW1wdHkgb3JkZXJlZCBhcnJheS5cbiAgICAgIHJlc3VsdHMgPSBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgYnJhbmNoZXMgPSB0aGlzLmJ1aWxkQnJhbmNoZXMobm9kZSwgaXRlbXMsIGJyYW5jaENvdW50KTtcbiAgICAgIHRoaXMuaG9va3MucmVjb3JkQnJhbmNoU3RydWN0dXJlKG5vZGUuaWQsIGJyYW5jaGVzKTtcblxuICAgICAgLy8gVGhlIGZhbi1vdXQgbm9kZSBoYW5kZWQgdG8gQ2hpbGRyZW5FeGVjdXRvciBpcyBhIHRlbXAgdmlldyBjYXJyeWluZyB0aGVcbiAgICAgIC8vIGdlbmVyYXRlZCBicmFuY2hlcyAoc2FtZSBzaGFwZSBgZXhlY3V0ZVNlbGVjdGVkQ2hpbGRyZW5gIHVzZXMgZm9yIGl0c1xuICAgICAgLy8gc2VsZWN0ZWQgc3Vic2V0KSDigJQgdGhlIHNoYXJlZCBncmFwaCBub2RlIGlzIG5ldmVyIG11dGF0ZWQsIHNvIGEgbG9vcFxuICAgICAgLy8gcmV2aXNpdCByZWdlbmVyYXRlcyBjbGVhbmx5LlxuICAgICAgY29uc3QgZm9ya1ZpZXc6IFN0YWdlTm9kZTxUT3V0LCBUU2NvcGU+ID0ge1xuICAgICAgICAuLi5ub2RlLFxuICAgICAgICBjaGlsZHJlbjogYnJhbmNoZXMsXG4gICAgICAgIC4uLihjb25maWcuZmFpbEZhc3QgIT09IHVuZGVmaW5lZCAmJiB7IGZhaWxGYXN0OiBjb25maWcuZmFpbEZhc3QgfSksXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBjaGlsZFJlc3VsdHMgPSBhd2FpdCB0aGlzLmNoaWxkcmVuRXhlY3V0b3IuZXhlY3V0ZU5vZGVDaGlsZHJlbihcbiAgICAgICAgZm9ya1ZpZXcsXG4gICAgICAgIGNvbnRleHQsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgYnJhbmNoUGF0aCxcbiAgICAgICAgdHJhdmVyc2FsQ29udGV4dCxcbiAgICAgICk7XG5cbiAgICAgIHJlc3VsdHMgPSB0aGlzLmNvbGxlY3RPcmRlcmVkKG5vZGUsIGJyYW5jaENvdW50LCBjaGlsZFJlc3VsdHMpO1xuICAgIH1cblxuICAgIHRoaXMud3JpdGVSZXN1bHRzKHJhd1Njb3BlLCBjb250ZXh0LCBjb25maWcuaW50bywgcmVzdWx0cyk7XG4gICAgbm90aWZ5KHJhd1Njb3BlLCAnbm90aWZ5U3RhZ2VFbmQnKTtcbiAgICBjb250ZXh0LmNvbW1pdCgpO1xuXG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH1cblxuICAvKipcbiAgICogRXZhbHVhdGUgdGhlIGl0ZW1zIHNlbGVjdG9yIGFnYWluc3QgdGhlIGxpdmUgc2NvcGUuIEEgbm9uLWFycmF5IHJldHVybiBpc1xuICAgKiBhIGNoYXJ0IGJ1Zywgbm90IGEgcnVudGltZSBjb25kaXRpb24g4oCUIGl0IGZhaWxzIGxvdWRseSwgbmFtaW5nIHRoZSBzdGFnZS5cbiAgICpcbiAgICogVGhlIHNlbGVjdG9yIHJlYWRzIHRoZSB0eXBlZCBzY29wZSwgc28gd2hhdCBpdCByZXR1cm5zIGlzIHVzdWFsbHkgdGhlXG4gICAqIHNjb3BlJ3Mgb3duIGFycmF5IEhBTkRMRSAoYSBQcm94eSBib3VuZCB0byB0aGUgcGFyZW50IHN0YWdlKSBhbmQgZXZlcnlcbiAgICogYGl0ZW1zW2luZGV4XWAgYW4gZWxlbWVudCBoYW5kbGUuIFRoZSBpdGVtcyBhcmUgYWJvdXQgdG8gY3Jvc3MgaW50b1xuICAgKiBicmFuY2ggcnVudGltZXMg4oCUIGNsb3NlZCBvdmVyIGJ5IGBicmFuY2goaXRlbSwgaW5kZXgpYCBhbmQgc2VlZGVkIGFzIHRoZVxuICAgKiBicmFuY2gncyBgaXRlbWAg4oCUIHNvIHRoZXkgYXJlIHRha2VuIGFzIFZBTFVFUyBoZXJlIChgdW53cmFwSGFuZGxlc2AsXG4gICAqIHJlYWN0aXZlL2hhbmRsZXMudHMpLiA5LjIyLjDigJM5LjIzLjIgc2VlZGVkIHRoZSBoYW5kbGUgaXRzZWxmIGFuZCBldmVyeVxuICAgKiBicmFuY2ggb3ZlciBhbiBvYmplY3QgaXRlbSBmYWlsZWQgYXQgaXRzIHNlZWQgY29tbWl0IChEYXRhQ2xvbmVFcnJvcikuXG4gICAqL1xuICBwcml2YXRlIHJlc29sdmVJdGVtcyhcbiAgICBjb25maWc6IFBhcmFsbGVsRm9yRWFjaENvbmZpZzx1bmtub3duLCBUU2NvcGU+LFxuICAgIHNjb3BlOiBUU2NvcGUsXG4gICAgbm9kZTogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4sXG4gICk6IHJlYWRvbmx5IHVua25vd25bXSB7XG4gICAgY29uc3QgaXRlbXMgPSB1bndyYXBIYW5kbGVzKGNvbmZpZy5pdGVtcyhzY29wZSkpO1xuICAgIGlmIChpdGVtcyA9PT0gdW5kZWZpbmVkIHx8IGl0ZW1zID09PSBudWxsKSByZXR1cm4gW107XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGl0ZW1zKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgcGFyYWxsZWxGb3JFYWNoICcke25vZGUuaWR9JzogaXRlbXMoKSBtdXN0IHJldHVybiBhbiBhcnJheSAoZ290ICR7dHlwZW9mIGl0ZW1zfSkuIGAgK1xuICAgICAgICAgICdSZXR1cm4gW10gdG8gcnVuIHplcm8gYnJhbmNoZXMuJyxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIC8qKiBHZW5lcmF0ZSBvbmUgc3ViZmxvdy1tb3VudCBub2RlIHBlciBicmFuY2gsIHJlZ2lzdGVyaW5nIGVhY2ggYnJhbmNoIGNoYXJ0LiAqL1xuICBwcml2YXRlIGJ1aWxkQnJhbmNoZXMoXG4gICAgbm9kZTogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4sXG4gICAgaXRlbXM6IHJlYWRvbmx5IHVua25vd25bXSxcbiAgICBicmFuY2hDb3VudDogbnVtYmVyLFxuICApOiBTdGFnZU5vZGU8VE91dCwgVFNjb3BlPltdIHtcbiAgICBjb25zdCBjb25maWcgPSBub2RlLnBhcmFsbGVsRm9yRWFjaCBhcyBQYXJhbGxlbEZvckVhY2hDb25maWc8dW5rbm93biwgVFNjb3BlPjtcbiAgICBjb25zdCBicmFuY2hlczogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT5bXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGJyYW5jaENvdW50OyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBpdGVtID0gaXRlbXNbaW5kZXhdO1xuICAgICAgY29uc3Qgc3ViZmxvd0lkID0gYnVpbGRCcmFuY2hTZWdtZW50KG5vZGUuaWQsIGluZGV4KTtcbiAgICAgIGNvbnN0IGNoYXJ0ID0gY29uZmlnLmJyYW5jaChpdGVtLCBpbmRleCk7XG4gICAgICBpZiAoIWNoYXJ0IHx8ICFjaGFydC5yb290KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgcGFyYWxsZWxGb3JFYWNoICcke25vZGUuaWR9JzogYnJhbmNoKGl0ZW0sICR7aW5kZXh9KSBtdXN0IHJldHVybiBhIGJ1aWx0IGNoYXJ0IGAgK1xuICAgICAgICAgICAgJyh0aGUgcmVzdWx0IG9mIGZsb3dDaGFydCguLi4pLmJ1aWxkKCkpLicsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNhbWUgcHJlZml4aW5nIGEgbGF6eSBzdWJmbG93IGdldHMg4oCUIHRoZSBicmFuY2gncyBpbm5lciBpZHMgYmVjb21lXG4gICAgICAvLyBgPHNlZ21lbnQ+LzxpZD5gLCBzbyBpdHMgc3RhZ2VzIGFkZHJlc3MgYXMgYDxzZWdtZW50Pi88aWQ+IzxuPmAuXG4gICAgICBjb25zdCBwcmVmaXhlZFJvb3QgPSB0aGlzLmhvb2tzLnByZWZpeE5vZGVUcmVlKGNoYXJ0LnJvb3QgYXMgU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4sIHN1YmZsb3dJZCk7XG4gICAgICB0aGlzLmhvb2tzLnJlZ2lzdGVyQnJhbmNoU3ViZmxvdyhzdWJmbG93SWQsIHByZWZpeGVkUm9vdCwgY2hhcnQpO1xuXG4gICAgICBicmFuY2hlcy5wdXNoKHtcbiAgICAgICAgbmFtZTogYCR7bm9kZS5uYW1lfSBbJHtpbmRleH1dYCxcbiAgICAgICAgaWQ6IHN1YmZsb3dJZCxcbiAgICAgICAgaXNTdWJmbG93Um9vdDogdHJ1ZSxcbiAgICAgICAgc3ViZmxvd0lkLFxuICAgICAgICBzdWJmbG93TmFtZTogYCR7bm9kZS5uYW1lfSBbJHtpbmRleH1dYCxcbiAgICAgICAgc3ViZmxvd01vdW50T3B0aW9uczoge1xuICAgICAgICAgIC8vIEQxJ3MgXCJpbnB1dE1hcHBlciBzZWFtIGZvciBmZWVkaW5nIHRoZSBpdGVtIGluXCI6IHRoZSBpdGVtIGlzXG4gICAgICAgICAgLy8gdmlzaWJsZSBJTiB0aGUgYnJhbmNoJ3Mgc2NvcGUgKGFuZCBzbyBpbiBpdHMgY29tbWl0IGxvZykgYXMgd2VsbCBhc1xuICAgICAgICAgIC8vIGNsb3NlZCBvdmVyIGJ5IHRoZSBmYWN0b3J5IOKAlCBwcm92ZW5hbmNlIGJlYXRzIGEgaGlkZGVuIGNsb3N1cmUuXG4gICAgICAgICAgaW5wdXRNYXBwZXI6ICgpID0+ICh7IGl0ZW0sIGluZGV4IH0pLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGJyYW5jaGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFzc2VtYmxlIHJlc3VsdHMgaW4gSVRFTVMgb3JkZXIg4oCUIG5ldmVyIGNvbXBsZXRpb24gb3JkZXIuXG4gICAqXG4gICAqIFRoZSBicmFuY2gncyB2YWx1ZSBpcyBpdHMgc3ViZmxvdyBvdXRwdXQsIGZhbGxpbmcgYmFjayB0byB0aGUgYnJhbmNoJ3NcbiAgICogZmluYWwgc2hhcmVkIHN0YXRlICh0aGUgVHlwZWRTY29wZSBjYXNlLCB3aGVyZSBzdGFnZSBmdW5jdGlvbnMgcmV0dXJuXG4gICAqIHZvaWQpIOKAlCB0aGUgc2FtZSBgc3ViZmxvd091dHB1dCA/PyBzaGFyZWRTdGF0ZWAgcnVsZSBgU3ViZmxvd0V4ZWN1dG9yYFxuICAgKiBhcHBsaWVzIHRvIGFuIG91dHB1dE1hcHBlci5cbiAgICovXG4gIHByaXZhdGUgY29sbGVjdE9yZGVyZWQoXG4gICAgbm9kZTogU3RhZ2VOb2RlPFRPdXQsIFRTY29wZT4sXG4gICAgYnJhbmNoQ291bnQ6IG51bWJlcixcbiAgICBjaGlsZFJlc3VsdHM6IFJlY29yZDxzdHJpbmcsIE5vZGVSZXN1bHRUeXBlPixcbiAgKTogdW5rbm93bltdIHtcbiAgICBjb25zdCBvcmRlcmVkOiB1bmtub3duW10gPSBbXTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgYnJhbmNoQ291bnQ7IGluZGV4KyspIHtcbiAgICAgIGNvbnN0IHN1YmZsb3dJZCA9IGJ1aWxkQnJhbmNoU2VnbWVudChub2RlLmlkLCBpbmRleCk7XG4gICAgICBjb25zdCBlbnRyeSA9IGNoaWxkUmVzdWx0c1tzdWJmbG93SWRdO1xuICAgICAgaWYgKGVudHJ5ID09PSB1bmRlZmluZWQgfHwgZW50cnkuaXNFcnJvcikge1xuICAgICAgICAvLyBCZXN0LWVmZm9ydCBtb2RlOiBhIGZhaWxlZCBicmFuY2gga2VlcHMgaXRzIFNMT1QgKG9yZGVyIGlzIGl0ZW1zXG4gICAgICAgIC8vIG9yZGVyKSB3aXRoIGFuIHVuZGVmaW5lZCB2YWx1ZS4gZmFpbEZhc3QgbW9kZSBuZXZlciByZWFjaGVzIGhlcmUg4oCUXG4gICAgICAgIC8vIHRoZSBlcnJvciBhbHJlYWR5IHJlamVjdGVkIHRoZSB3aG9sZSBzdGFnZS5cbiAgICAgICAgb3JkZXJlZC5wdXNoKHVuZGVmaW5lZCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgb3JkZXJlZC5wdXNoKGVudHJ5LnJlc3VsdCA/PyB0aGlzLmhvb2tzLmJyYW5jaFNoYXJlZFN0YXRlKHN1YmZsb3dJZCkpO1xuICAgIH1cbiAgICByZXR1cm4gb3JkZXJlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZSB0aGUgb3JkZXJlZCBhcnJheSBhcyBPTkUgdmFsdWUgb24gdGhlIHBhcmVudCBzY29wZS5cbiAgICpcbiAgICogYCRzZXRWYWx1ZWAgZGVsaWJlcmF0ZWx5LCB3aGVyZSBhdmFpbGFibGU6IHRoZSBUeXBlZFNjb3BlIHNldCB0cmFwXG4gICAqIEpTT04tcm91bmQtdHJpcHMgZXZlcnkgb2JqZWN0IHdyaXRlIChEYXRl4oaSc3RyaW5nLCBNYXDihpJ7fSksIGFuZCBicmFuY2hcbiAgICogcmVzdWx0cyBhcmUgZXhhY3RseSB0aGUga2luZCBvZiBwYXlsb2FkIHRoYXQgd291bGQgc2lsZW50bHkgZGVncmFkZS5cbiAgICovXG4gIHByaXZhdGUgd3JpdGVSZXN1bHRzKHJhd1Njb3BlOiBUU2NvcGUsIGNvbnRleHQ6IFN0YWdlQ29udGV4dCwgaW50bzogc3RyaW5nLCByZXN1bHRzOiB1bmtub3duW10pOiB2b2lkIHtcbiAgICBjb25zdCBzID0gcmF3U2NvcGUgYXMgdW5rbm93biBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBpZiAodHlwZW9mIHM/LiRzZXRWYWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgKHMuJHNldFZhbHVlIGFzIChrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24pID0+IHZvaWQpKGludG8sIHJlc3VsdHMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIHM/LnNldFZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAocy5zZXRWYWx1ZSBhcyAoa2V5OiBzdHJpbmcsIHZhbHVlOiB1bmtub3duKSA9PiB2b2lkKShpbnRvLCByZXN1bHRzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gTm8gZmFjYWRlIChoYW5kLXJvbGxlZCBzY29wZSBmYWN0b3J5KSDigJQgd3JpdGUgc3RyYWlnaHQgdG8gdGhlIGZyYW1lLlxuICAgIGNvbnRleHQuc2V0R2xvYmFsKGludG8sIHJlc3VsdHMpO1xuICB9XG59XG5cbi8qKiBGaXJlIGEgc2NvcGUgbGlmZWN5Y2xlIG5vdGlmaWNhdGlvbiBpZiB0aGUgc2NvcGUgc3VwcG9ydHMgaXQuICovXG5mdW5jdGlvbiBub3RpZnkoc2NvcGU6IHVua25vd24sIG1ldGhvZDogJ25vdGlmeVN0YWdlU3RhcnQnIHwgJ25vdGlmeVN0YWdlRW5kJyk6IHZvaWQge1xuICBjb25zdCBzID0gc2NvcGUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfCB1bmRlZmluZWQ7XG4gIGlmIChzICYmIHR5cGVvZiBzW21ldGhvZF0gPT09ICdmdW5jdGlvbicpIChzW21ldGhvZF0gYXMgKCkgPT4gdm9pZCkoKTtcbn1cbiJdfQ==
|
|
@@ -15,7 +15,16 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import type { StageContext } from '../../memory/StageContext.js';
|
|
17
17
|
import type { HandlerDeps, IExecutionRuntime, SubflowMountOptions } from '../types.js';
|
|
18
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Extract values from parent scope using inputMapper.
|
|
20
|
+
*
|
|
21
|
+
* What a mapper returns is a VALUE, not a handle: the mapper read the parent's
|
|
22
|
+
* typed scope, so its result may be — or hold — a Proxy bound to the parent
|
|
23
|
+
* stage, and the seed commit below clones it (`structuredClone`, which cannot
|
|
24
|
+
* clone a Proxy). `unwrapHandles` (reactive/handles.ts) swaps each for the
|
|
25
|
+
* value behind it, O(1), Dates and Maps intact; a handle-free result passes
|
|
26
|
+
* through by reference.
|
|
27
|
+
*/
|
|
19
28
|
export declare function extractParentScopeValues<TParentScope, TSubflowInput>(parentScope: TParentScope, options?: SubflowMountOptions<TParentScope, TSubflowInput>): TSubflowInput | Record<string, unknown>;
|
|
20
29
|
/**
|
|
21
30
|
* Get the initial scope values for a subflow.
|
|
@@ -13,7 +13,17 @@
|
|
|
13
13
|
* | Both present | Full data contract (args in, results out) |
|
|
14
14
|
* | Neither present | Complete isolation (side effects only) |
|
|
15
15
|
*/
|
|
16
|
-
|
|
16
|
+
import { unwrapHandles } from '../../reactive/handles.js';
|
|
17
|
+
/**
|
|
18
|
+
* Extract values from parent scope using inputMapper.
|
|
19
|
+
*
|
|
20
|
+
* What a mapper returns is a VALUE, not a handle: the mapper read the parent's
|
|
21
|
+
* typed scope, so its result may be — or hold — a Proxy bound to the parent
|
|
22
|
+
* stage, and the seed commit below clones it (`structuredClone`, which cannot
|
|
23
|
+
* clone a Proxy). `unwrapHandles` (reactive/handles.ts) swaps each for the
|
|
24
|
+
* value behind it, O(1), Dates and Maps intact; a handle-free result passes
|
|
25
|
+
* through by reference.
|
|
26
|
+
*/
|
|
17
27
|
export function extractParentScopeValues(parentScope, options) {
|
|
18
28
|
if (!options?.inputMapper) {
|
|
19
29
|
return {};
|
|
@@ -22,7 +32,7 @@ export function extractParentScopeValues(parentScope, options) {
|
|
|
22
32
|
if (result === null || result === undefined) {
|
|
23
33
|
return {};
|
|
24
34
|
}
|
|
25
|
-
return result;
|
|
35
|
+
return unwrapHandles(result);
|
|
26
36
|
}
|
|
27
37
|
/**
|
|
28
38
|
* Get the initial scope values for a subflow.
|
|
@@ -86,7 +96,9 @@ export function applyOutputMapping(subflowOutput, parentScope, parentContext, op
|
|
|
86
96
|
if (!options?.outputMapper) {
|
|
87
97
|
return undefined;
|
|
88
98
|
}
|
|
89
|
-
|
|
99
|
+
// The same boundary in the other direction: the mapper is handed the
|
|
100
|
+
// parent's typed scope too, so what it returns is taken as a value.
|
|
101
|
+
const mappedOutput = unwrapHandles(options.outputMapper(subflowOutput, parentScope));
|
|
90
102
|
if (mappedOutput === null || mappedOutput === undefined) {
|
|
91
103
|
return undefined;
|
|
92
104
|
}
|
|
@@ -124,4 +136,4 @@ export function applyOutputMapping(subflowOutput, parentScope, parentContext, op
|
|
|
124
136
|
}
|
|
125
137
|
return mappedOutput;
|
|
126
138
|
}
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3ViZmxvd0lucHV0TWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvaGFuZGxlcnMvU3ViZmxvd0lucHV0TWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBS0gsMERBQTBEO0FBQzFELE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsV0FBeUIsRUFDekIsT0FBMEQ7SUFFMUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUMxQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDNUMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsV0FBeUIsRUFDekIsT0FBMEQ7SUFFMUQsT0FBTyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUE0QixDQUFDO0FBQ25GLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQ3RDLFVBQXFDLEVBQ3JDLGNBQWlDLEVBQ2pDLFdBQW9DO0lBRXBDLE9BQU87UUFDTCxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7UUFDN0IsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJO1FBQ3JCLFlBQVksRUFBRSxVQUFVLENBQUMsWUFBWTtRQUNyQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7UUFDN0Isc0JBQXNCLEVBQUUsVUFBVSxDQUFDLHNCQUFzQjtRQUN6RCxjQUFjLEVBQUUsVUFBVSxDQUFDLGNBQWM7UUFDekMsbUJBQW1CLEVBQUUsVUFBVSxDQUFD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QUUsQ0FBQztZQUNoQyxJQUFJLE9BQU8sRUFBRSxVQUFVLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3RDLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3RDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixNQUFNLFFBQVEsR0FBRyxhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUM5QyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDNUIsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQ3hELENBQUM7cUJBQU0sQ0FBQztvQkFDTixhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDdEMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3RDLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3ViZmxvd0lucHV0TWFwcGVyIOKAlCBQdXJlIGZ1bmN0aW9ucyBmb3Igc3ViZmxvdyBkYXRhIGNvbnRyYWN0cy5cbiAqXG4gKiBNZW50YWwgbW9kZWw6IFN1YmZsb3cgPSBQdXJlIEZ1bmN0aW9uXG4gKiAtIElzb2xhdGVkIHNjb3BlIChvd24gR2xvYmFsU3RvcmUpXG4gKiAtIEV4cGxpY2l0IGlucHV0cyB2aWEgaW5wdXRNYXBwZXJcbiAqIC0gRXhwbGljaXQgb3V0cHV0cyB2aWEgb3V0cHV0TWFwcGVyXG4gKlxuICogfCBTY2VuYXJpbyAgICAgICAgfCBCZWhhdmlvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgTm8gaW5wdXRNYXBwZXIgIHwgU3ViZmxvdyBzdGFydHMgd2l0aCBlbXB0eSBzY29wZSAgICAgICAgICAgfFxuICogfCBObyBvdXRwdXRNYXBwZXIgfCBTdWJmbG93IHNjb3BlIGNoYW5nZXMgZGlzY2FyZGVkICAgICAgICAgICB8XG4gKiB8IEJvdGggcHJlc2VudCAgICB8IEZ1bGwgZGF0YSBjb250cmFjdCAoYXJncyBpbiwgcmVzdWx0cyBvdXQpIHxcbiAqIHwgTmVpdGhlciBwcmVzZW50IHwgQ29tcGxldGUgaXNvbGF0aW9uIChzaWRlIGVmZmVjdHMgb25seSkgICAgfFxuICovXG5cbmltcG9ydCB0eXBlIHsgU3RhZ2VDb250ZXh0IH0gZnJvbSAnLi4vLi4vbWVtb3J5L1N0YWdlQ29udGV4dC5qcyc7XG5pbXBvcnQgdHlwZSB7IEhhbmRsZXJEZXBzLCBJRXhlY3V0aW9uUnVudGltZSwgU3ViZmxvd01vdW50T3B0aW9ucyB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuLyoqIEV4dHJhY3QgdmFsdWVzIGZyb20gcGFyZW50IHNjb3BlIHVzaW5nIGlucHV0TWFwcGVyLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RQYXJlbnRTY29wZVZhbHVlczxUUGFyZW50U2NvcGUsIFRTdWJmbG93SW5wdXQ+KFxuICBwYXJlbnRTY29wZTogVFBhcmVudFNjb3BlLFxuICBvcHRpb25zPzogU3ViZmxvd01vdW50T3B0aW9uczxUUGFyZW50U2NvcGUsIFRTdWJmbG93SW5wdXQ+LFxuKTogVFN1YmZsb3dJbnB1dCB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgaWYgKCFvcHRpb25zPy5pbnB1dE1hcHBlcikge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0IHJlc3VsdCA9IG9wdGlvbnMuaW5wdXRNYXBwZXIocGFyZW50U2NvcGUpO1xuICBpZiAocmVzdWx0ID09PSBudWxsIHx8IHJlc3VsdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGluaXRpYWwgc2NvcGUgdmFsdWVzIGZvciBhIHN1YmZsb3cuXG4gKiBBbHdheXMgaXNvbGF0ZWQg4oCUIG9ubHkgaW5wdXRNYXBwZXIgdmFsdWVzIGFyZSBpbmNsdWRlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEluaXRpYWxTY29wZVZhbHVlczxUUGFyZW50U2NvcGUsIFRTdWJmbG93SW5wdXQ+KFxuICBwYXJlbnRTY29wZTogVFBhcmVudFNjb3BlLFxuICBvcHRpb25zPzogU3ViZmxvd01vdW50T3B0aW9uczxUUGFyZW50U2NvcGUsIFRTdWJmbG93SW5wdXQ+LFxuKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4ge1xuICByZXR1cm4gZXh0cmFjdFBhcmVudFNjb3BlVmFsdWVzKHBhcmVudFNjb3BlLCBvcHRpb25zKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBuZXcgSGFuZGxlckRlcHMgZm9yIHN1YmZsb3cgZXhlY3V0aW9uLlxuICogS2V5OiBzZXRzIHJlYWRPbmx5Q29udGV4dCB0byBtYXBwZWQgaW5wdXQgc28gU3RhZ2VSdW5uZXIgcGFzc2VzIGl0IHRvIFNjb3BlRmFjdG9yeS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN1YmZsb3dIYW5kbGVyRGVwczxUT3V0ID0gYW55LCBUU2NvcGUgPSBhbnk+KFxuICBwYXJlbnREZXBzOiBIYW5kbGVyRGVwczxUT3V0LCBUU2NvcGU+LFxuICBzdWJmbG93UnVudGltZTogSUV4ZWN1dGlvblJ1bnRpbWUsXG4gIG1hcHBlZElucHV0OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbik6IEhhbmRsZXJEZXBzPFRPdXQsIFRTY29wZT4ge1xuICByZXR1cm4ge1xuICAgIHN0YWdlTWFwOiBwYXJlbnREZXBzLnN0YWdlTWFwLFxuICAgIHJvb3Q6IHBhcmVudERlcHMucm9vdCxcbiAgICBzY29wZUZhY3Rvcnk6IHBhcmVudERlcHMuc2NvcGVGYWN0b3J5LFxuICAgIHN1YmZsb3dzOiBwYXJlbnREZXBzLnN1YmZsb3dzLFxuICAgIHRocm90dGxpbmdFcnJvckNoZWNrZXI6IHBhcmVudERlcHMudGhyb3R0bGluZ0Vycm9yQ2hlY2tlcixcbiAgICBzdHJlYW1IYW5kbGVyczogcGFyZW50RGVwcy5zdHJlYW1IYW5kbGVycyxcbiAgICBzY29wZVByb3RlY3Rpb25Nb2RlOiBwYXJlbnREZXBzLnNjb3BlUHJvdGVjdGlvbk1vZGUsXG4gICAgZXhlY3V0aW9uUnVudGltZTogc3ViZmxvd1J1bnRpbWUsXG4gICAgcmVhZE9ubHlDb250ZXh0OiBtYXBwZWRJbnB1dCxcbiAgICBleGVjdXRpb25FbnY6IHBhcmVudERlcHMuZXhlY3V0aW9uRW52LCAvLyBpbmhlcml0ZWQg4oCUIGxpa2UgcHJvY2Vzcy5lbnZcbiAgICBuYXJyYXRpdmVHZW5lcmF0b3I6IHBhcmVudERlcHMubmFycmF0aXZlR2VuZXJhdG9yLFxuICAgIGxvZ2dlcjogcGFyZW50RGVwcy5sb2dnZXIsXG4gIH07XG59XG5cbi8qKlxuICogU2VlZCB0aGUgc3ViZmxvdydzIEdsb2JhbFN0b3JlIHdpdGggaW5pdGlhbCB2YWx1ZXMuXG4gKiBDYWxsZWQgYmVmb3JlIHN1YmZsb3cgZXhlY3V0aW9uIHRvIG1ha2UgaW5wdXRNYXBwZXIgdmFsdWVzIGF2YWlsYWJsZS5cbiAqXG4gKiBSZWRhY3Rpb246IHRoZSBzZWVkIGlzIGNvbW1pdHRlZCBhcyB0aGUgc3ViZmxvdydzIGBoaXN0b3J5WzBdYCBieSBpdHMgcm9vdFxuICogY29udGV4dC4gYFN1YmZsb3dFeGVjdXRvcmAgaW5zdGFsbHMgdGhlIHJ1bidzIHJlZGFjdGlvbiBydWxlIG9uIHRoYXQgY29udGV4dFxuICogYmVmb3JlIGNhbGxpbmcgdGhpcywgc28gdGhlIGNvbW1pdCByZXRhaW5zIHVuZGVyIHRoZSBwb2xpY3kgKDkuMTkuMCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWVkU3ViZmxvd0dsb2JhbFN0b3JlKFxuICBzdWJmbG93UnVudGltZTogSUV4ZWN1dGlvblJ1bnRpbWUsXG4gIGluaXRpYWxWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuKTogdm9pZCB7XG4gIGNvbnN0IHJvb3RDb250ZXh0ID0gc3ViZmxvd1J1bnRpbWUucm9vdFN0YWdlQ29udGV4dDtcblxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhpbml0aWFsVmFsdWVzKSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgZm9yIChjb25zdCBbbmVzdGVkS2V5LCBuZXN0ZWRWYWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pKSB7XG4gICAgICAgIHJvb3RDb250ZXh0LnNldE9iamVjdChba2V5XSwgbmVzdGVkS2V5LCBuZXN0ZWRWYWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvb3RDb250ZXh0LnNldEdsb2JhbChrZXksIHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICByb290Q29udGV4dC5jb21taXQoKTtcbn1cblxuLyoqXG4gKiBBcHBseSBvdXRwdXQgbWFwcGluZyBhZnRlciBzdWJmbG93IGNvbXBsZXRpb24uXG4gKiBXcml0ZXMgbWFwcGVkIHZhbHVlcyBiYWNrIHRvIHBhcmVudCBzY29wZSB1c2luZyBtZXJnZSBzZW1hbnRpY3M6XG4gKiBhcnJheXMgYXJlIGFwcGVuZGVkLCBvYmplY3RzIGFyZSBzaGFsbG93LW1lcmdlZCwgc2NhbGFycyBhcmUgcmVwbGFjZWQuXG4gKlxuICogUmVkYWN0aW9uOiBldmVyeSB3cml0ZSBoZXJlIGdvZXMgdGhyb3VnaCBgcGFyZW50Q29udGV4dGAncyB3cml0ZSBmdW5uZWwsXG4gKiB3aGljaCBhc2tzIHRoZSBydW4ncyByZWRhY3Rpb24gcnVsZSDigJQgc28gYSBwb2xpY3ktcmVkYWN0ZWQgb3IgcGVyLWNhbGxcbiAqIG1hcmtlZCBrZXkgbGFuZHMgaW4gdGhlIFBBUkVOVCdzIGxvZyBhbmQgbWlycm9yIGFzIHRoZSBwbGFjZWhvbGRlciAoOS4xOS4wKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5T3V0cHV0TWFwcGluZzxUUGFyZW50U2NvcGUsIFRTdWJmbG93T3V0cHV0PihcbiAgc3ViZmxvd091dHB1dDogVFN1YmZsb3dPdXRwdXQsXG4gIHBhcmVudFNjb3BlOiBUUGFyZW50U2NvcGUsXG4gIHBhcmVudENvbnRleHQ6IFN0YWdlQ29udGV4dCxcbiAgb3B0aW9ucz86IFN1YmZsb3dNb3VudE9wdGlvbnM8VFBhcmVudFNjb3BlLCBhbnksIFRTdWJmbG93T3V0cHV0Pixcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFvcHRpb25zPy5vdXRwdXRNYXBwZXIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgbWFwcGVkT3V0cHV0ID0gb3B0aW9ucy5vdXRwdXRNYXBwZXIoc3ViZmxvd091dHB1dCwgcGFyZW50U2NvcGUpO1xuXG4gIGlmIChtYXBwZWRPdXRwdXQgPT09IG51bGwgfHwgbWFwcGVkT3V0cHV0ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMobWFwcGVkT3V0cHV0KSkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgZm9yIChjb25zdCBbbmVzdGVkS2V5LCBuZXN0ZWRWYWx1ZV0gb2YgT2JqZWN0LmVudHJpZXModmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KG5lc3RlZFZhbHVlKSkge1xuICAgICAgICAgIHBhcmVudENvbnRleHQuYXBwZW5kVG9BcnJheShba2V5XSwgbmVzdGVkS2V5LCBuZXN0ZWRWYWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG5lc3RlZFZhbHVlID09PSAnb2JqZWN0JyAmJiBuZXN0ZWRWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgICAgIHBhcmVudENvbnRleHQubWVyZ2VPYmplY3QoW2tleV0sIG5lc3RlZEtleSwgbmVzdGVkVmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcmVudENvbnRleHQuc2V0T2JqZWN0KFtrZXldLCBuZXN0ZWRLZXksIG5lc3RlZFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGlmIChvcHRpb25zPy5hcnJheU1lcmdlID09PSAncmVwbGFjZScpIHtcbiAgICAgICAgcGFyZW50Q29udGV4dC5zZXRHbG9iYWwoa2V5LCB2YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBleGlzdGluZyA9IHBhcmVudENvbnRleHQuZ2V0R2xvYmFsKGtleSk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGV4aXN0aW5nKSkge1xuICAgICAgICAgIHBhcmVudENvbnRleHQuc2V0R2xvYmFsKGtleSwgWy4uLmV4aXN0aW5nLCAuLi52YWx1ZV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHBhcmVudENvbnRleHQuc2V0R2xvYmFsKGtleSwgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcmVudENvbnRleHQuc2V0R2xvYmFsKGtleSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtYXBwZWRPdXRwdXQ7XG59XG4iXX0=
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3ViZmxvd0lucHV0TWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9lbmdpbmUvaGFuZGxlcnMvU3ViZmxvd0lucHV0TWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBR0gsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRzFEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSx3QkFBd0IsQ0FDdEMsV0FBeUIsRUFDekIsT0FBMEQ7SUFFMUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUMxQixPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ2hELElBQUksTUFBTSxLQUFLLElBQUksSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDNUMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQUVEOzs7R0FHRztBQUNILE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsV0FBeUIsRUFDekIsT0FBMEQ7SUFFMUQsT0FBTyx3QkFBd0IsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUE0QixDQUFDO0FBQ25GLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQ3RDLFVBQXFDLEVBQ3JDLGNBQWlDLEVBQ2pDLFdBQW9DO0lBRXBDLE9BQU87UUFDTCxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7UUFDN0IsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJO1FBQ3JCLFlBQVksRUFBRSxVQUFVLENBQUMsWUFBWTtRQUNyQyxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7UUFDN0Isc0JBQXNCLEVBQUUsVUFBVSxDQUFDLHNC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RUFBRSxTQUFTLEVBQUUsV0FBVyxDQUFDLENBQUM7Z0JBQ3pELENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQzthQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2hDLElBQUksT0FBTyxFQUFFLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDdEMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sUUFBUSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQzlDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO29CQUM1QixhQUFhLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDeEQsQ0FBQztxQkFBTSxDQUFDO29CQUNOLGFBQWEsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN0QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLFlBQVksQ0FBQztBQUN0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdWJmbG93SW5wdXRNYXBwZXIg4oCUIFB1cmUgZnVuY3Rpb25zIGZvciBzdWJmbG93IGRhdGEgY29udHJhY3RzLlxuICpcbiAqIE1lbnRhbCBtb2RlbDogU3ViZmxvdyA9IFB1cmUgRnVuY3Rpb25cbiAqIC0gSXNvbGF0ZWQgc2NvcGUgKG93biBHbG9iYWxTdG9yZSlcbiAqIC0gRXhwbGljaXQgaW5wdXRzIHZpYSBpbnB1dE1hcHBlclxuICogLSBFeHBsaWNpdCBvdXRwdXRzIHZpYSBvdXRwdXRNYXBwZXJcbiAqXG4gKiB8IFNjZW5hcmlvICAgICAgICB8IEJlaGF2aW9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCBObyBpbnB1dE1hcHBlciAgfCBTdWJmbG93IHN0YXJ0cyB3aXRoIGVtcHR5IHNjb3BlICAgICAgICAgICB8XG4gKiB8IE5vIG91dHB1dE1hcHBlciB8IFN1YmZsb3cgc2NvcGUgY2hhbmdlcyBkaXNjYXJkZWQgICAgICAgICAgIHxcbiAqIHwgQm90aCBwcmVzZW50ICAgIHwgRnVsbCBkYXRhIGNvbnRyYWN0IChhcmdzIGluLCByZXN1bHRzIG91dCkgfFxuICogfCBOZWl0aGVyIHByZXNlbnQgfCBDb21wbGV0ZSBpc29sYXRpb24gKHNpZGUgZWZmZWN0cyBvbmx5KSAgICB8XG4gKi9cblxuaW1wb3J0IHR5cGUgeyBTdGFnZUNvbnRleHQgfSBmcm9tICcuLi8uLi9tZW1vcnkvU3RhZ2VDb250ZXh0LmpzJztcbmltcG9ydCB7IHVud3JhcEhhbmRsZXMgfSBmcm9tICcuLi8uLi9yZWFjdGl2ZS9oYW5kbGVzLmpzJztcbmltcG9ydCB0eXBlIHsgSGFuZGxlckRlcHMsIElFeGVjdXRpb25SdW50aW1lLCBTdWJmbG93TW91bnRPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG4vKipcbiAqIEV4dHJhY3QgdmFsdWVzIGZyb20gcGFyZW50IHNjb3BlIHVzaW5nIGlucHV0TWFwcGVyLlxuICpcbiAqIFdoYXQgYSBtYXBwZXIgcmV0dXJucyBpcyBhIFZBTFVFLCBub3QgYSBoYW5kbGU6IHRoZSBtYXBwZXIgcmVhZCB0aGUgcGFyZW50J3NcbiAqIHR5cGVkIHNjb3BlLCBzbyBpdHMgcmVzdWx0IG1heSBiZSDigJQgb3IgaG9sZCDigJQgYSBQcm94eSBib3VuZCB0byB0aGUgcGFyZW50XG4gKiBzdGFnZSwgYW5kIHRoZSBzZWVkIGNvbW1pdCBiZWxvdyBjbG9uZXMgaXQgKGBzdHJ1Y3R1cmVkQ2xvbmVgLCB3aGljaCBjYW5ub3RcbiAqIGNsb25lIGEgUHJveHkpLiBgdW53cmFwSGFuZGxlc2AgKHJlYWN0aXZlL2hhbmRsZXMudHMpIHN3YXBzIGVhY2ggZm9yIHRoZVxuICogdmFsdWUgYmVoaW5kIGl0LCBPKDEpLCBEYXRlcyBhbmQgTWFwcyBpbnRhY3Q7IGEgaGFuZGxlLWZyZWUgcmVzdWx0IHBhc3Nlc1xuICogdGhyb3VnaCBieSByZWZlcmVuY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0UGFyZW50U2NvcGVWYWx1ZXM8VFBhcmVudFNjb3BlLCBUU3ViZmxvd0lucHV0PihcbiAgcGFyZW50U2NvcGU6IFRQYXJlbnRTY29wZSxcbiAgb3B0aW9ucz86IFN1YmZsb3dNb3VudE9wdGlvbnM8VFBhcmVudFNjb3BlLCBUU3ViZmxvd0lucHV0Pixcbik6IFRTdWJmbG93SW5wdXQgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gIGlmICghb3B0aW9ucz8uaW5wdXRNYXBwZXIpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCByZXN1bHQgPSBvcHRpb25zLmlucHV0TWFwcGVyKHBhcmVudFNjb3BlKTtcbiAgaWYgKHJlc3VsdCA9PT0gbnVsbCB8fCByZXN1bHQgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHJldHVybiB1bndyYXBIYW5kbGVzKHJlc3VsdCk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBpbml0aWFsIHNjb3BlIHZhbHVlcyBmb3IgYSBzdWJmbG93LlxuICogQWx3YXlzIGlzb2xhdGVkIOKAlCBvbmx5IGlucHV0TWFwcGVyIHZhbHVlcyBhcmUgaW5jbHVkZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbml0aWFsU2NvcGVWYWx1ZXM8VFBhcmVudFNjb3BlLCBUU3ViZmxvd0lucHV0PihcbiAgcGFyZW50U2NvcGU6IFRQYXJlbnRTY29wZSxcbiAgb3B0aW9ucz86IFN1YmZsb3dNb3VudE9wdGlvbnM8VFBhcmVudFNjb3BlLCBUU3ViZmxvd0lucHV0Pixcbik6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgcmV0dXJuIGV4dHJhY3RQYXJlbnRTY29wZVZhbHVlcyhwYXJlbnRTY29wZSwgb3B0aW9ucykgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IEhhbmRsZXJEZXBzIGZvciBzdWJmbG93IGV4ZWN1dGlvbi5cbiAqIEtleTogc2V0cyByZWFkT25seUNvbnRleHQgdG8gbWFwcGVkIGlucHV0IHNvIFN0YWdlUnVubmVyIHBhc3NlcyBpdCB0byBTY29wZUZhY3RvcnkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTdWJmbG93SGFuZGxlckRlcHM8VE91dCA9IGFueSwgVFNjb3BlID0gYW55PihcbiAgcGFyZW50RGVwczogSGFuZGxlckRlcHM8VE91dCwgVFNjb3BlPixcbiAgc3ViZmxvd1J1bnRpbWU6IElFeGVjdXRpb25SdW50aW1lLFxuICBtYXBwZWRJbnB1dDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4pOiBIYW5kbGVyRGVwczxUT3V0LCBUU2NvcGU+IHtcbiAgcmV0dXJuIHtcbiAgICBzdGFnZU1hcDogcGFyZW50RGVwcy5zdGFnZU1hcCxcbiAgICByb290OiBwYXJlbnREZXBzLnJvb3QsXG4gICAgc2NvcGVGYWN0b3J5OiBwYXJlbnREZXBzLnNjb3BlRmFjdG9yeSxcbiAgICBzdWJmbG93czogcGFyZW50RGVwcy5zdWJmbG93cyxcbiAgICB0aHJvdHRsaW5nRXJyb3JDaGVja2VyOiBwYXJlbnREZXBzLnRocm90dGxpbmdFcnJvckNoZWNrZXIsXG4gICAgc3RyZWFtSGFuZGxlcnM6IHBhcmVudERlcHMuc3RyZWFtSGFuZGxlcnMsXG4gICAgc2NvcGVQcm90ZWN0aW9uTW9kZTogcGFyZW50RGVwcy5zY29wZVByb3RlY3Rpb25Nb2RlLFxuICAgIGV4ZWN1dGlvblJ1bnRpbWU6IHN1YmZsb3dSdW50aW1lLFxuICAgIHJlYWRPbmx5Q29udGV4dDogbWFwcGVkSW5wdXQsXG4gICAgZXhlY3V0aW9uRW52OiBwYXJlbnREZXBzLmV4ZWN1dGlvbkVudiwgLy8gaW5oZXJpdGVkIOKAlCBsaWtlIHByb2Nlc3MuZW52XG4gICAgbmFycmF0aXZlR2VuZXJhdG9yOiBwYXJlbnREZXBzLm5hcnJhdGl2ZUdlbmVyYXRvcixcbiAgICBsb2dnZXI6IHBhcmVudERlcHMubG9nZ2VyLFxuICB9O1xufVxuXG4vKipcbiAqIFNlZWQgdGhlIHN1YmZsb3cncyBHbG9iYWxTdG9yZSB3aXRoIGluaXRpYWwgdmFsdWVzLlxuICogQ2FsbGVkIGJlZm9yZSBzdWJmbG93IGV4ZWN1dGlvbiB0byBtYWtlIGlucHV0TWFwcGVyIHZhbHVlcyBhdmFpbGFibGUuXG4gKlxuICogUmVkYWN0aW9uOiB0aGUgc2VlZCBpcyBjb21taXR0ZWQgYXMgdGhlIHN1YmZsb3cncyBgaGlzdG9yeVswXWAgYnkgaXRzIHJvb3RcbiAqIGNvbnRleHQuIGBTdWJmbG93RXhlY3V0b3JgIGluc3RhbGxzIHRoZSBydW4ncyByZWRhY3Rpb24gcnVsZSBvbiB0aGF0IGNvbnRleHRcbiAqIGJlZm9yZSBjYWxsaW5nIHRoaXMsIHNvIHRoZSBjb21taXQgcmV0YWlucyB1bmRlciB0aGUgcG9saWN5ICg5LjE5LjApLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VlZFN1YmZsb3dHbG9iYWxTdG9yZShcbiAgc3ViZmxvd1J1bnRpbWU6IElFeGVjdXRpb25SdW50aW1lLFxuICBpbml0aWFsVmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbik6IHZvaWQge1xuICBjb25zdCByb290Q29udGV4dCA9IHN1YmZsb3dSdW50aW1lLnJvb3RTdGFnZUNvbnRleHQ7XG5cbiAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoaW5pdGlhbFZhbHVlcykpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGZvciAoY29uc3QgW25lc3RlZEtleSwgbmVzdGVkVmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSkge1xuICAgICAgICByb290Q29udGV4dC5zZXRPYmplY3QoW2tleV0sIG5lc3RlZEtleSwgbmVzdGVkVmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByb290Q29udGV4dC5zZXRHbG9iYWwoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcm9vdENvbnRleHQuY29tbWl0KCk7XG59XG5cbi8qKlxuICogQXBwbHkgb3V0cHV0IG1hcHBpbmcgYWZ0ZXIgc3ViZmxvdyBjb21wbGV0aW9uLlxuICogV3JpdGVzIG1hcHBlZCB2YWx1ZXMgYmFjayB0byBwYXJlbnQgc2NvcGUgdXNpbmcgbWVyZ2Ugc2VtYW50aWNzOlxuICogYXJyYXlzIGFyZSBhcHBlbmRlZCwgb2JqZWN0cyBhcmUgc2hhbGxvdy1tZXJnZWQsIHNjYWxhcnMgYXJlIHJlcGxhY2VkLlxuICpcbiAqIFJlZGFjdGlvbjogZXZlcnkgd3JpdGUgaGVyZSBnb2VzIHRocm91Z2ggYHBhcmVudENvbnRleHRgJ3Mgd3JpdGUgZnVubmVsLFxuICogd2hpY2ggYXNrcyB0aGUgcnVuJ3MgcmVkYWN0aW9uIHJ1bGUg4oCUIHNvIGEgcG9saWN5LXJlZGFjdGVkIG9yIHBlci1jYWxsXG4gKiBtYXJrZWQga2V5IGxhbmRzIGluIHRoZSBQQVJFTlQncyBsb2cgYW5kIG1pcnJvciBhcyB0aGUgcGxhY2Vob2xkZXIgKDkuMTkuMCkuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBseU91dHB1dE1hcHBpbmc8VFBhcmVudFNjb3BlLCBUU3ViZmxvd091dHB1dD4oXG4gIHN1YmZsb3dPdXRwdXQ6IFRTdWJmbG93T3V0cHV0LFxuICBwYXJlbnRTY29wZTogVFBhcmVudFNjb3BlLFxuICBwYXJlbnRDb250ZXh0OiBTdGFnZUNvbnRleHQsXG4gIG9wdGlvbnM/OiBTdWJmbG93TW91bnRPcHRpb25zPFRQYXJlbnRTY29wZSwgYW55LCBUU3ViZmxvd091dHB1dD4sXG4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCB7XG4gIGlmICghb3B0aW9ucz8ub3V0cHV0TWFwcGVyKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIFRoZSBzYW1lIGJvdW5kYXJ5IGluIHRoZSBvdGhlciBkaXJlY3Rpb246IHRoZSBtYXBwZXIgaXMgaGFuZGVkIHRoZVxuICAvLyBwYXJlbnQncyB0eXBlZCBzY29wZSB0b28sIHNvIHdoYXQgaXQgcmV0dXJucyBpcyB0YWtlbiBhcyBhIHZhbHVlLlxuICBjb25zdCBtYXBwZWRPdXRwdXQgPSB1bndyYXBIYW5kbGVzKG9wdGlvbnMub3V0cHV0TWFwcGVyKHN1YmZsb3dPdXRwdXQsIHBhcmVudFNjb3BlKSk7XG5cbiAgaWYgKG1hcHBlZE91dHB1dCA9PT0gbnVsbCB8fCBtYXBwZWRPdXRwdXQgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhtYXBwZWRPdXRwdXQpKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBmb3IgKGNvbnN0IFtuZXN0ZWRLZXksIG5lc3RlZFZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh2YWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkobmVzdGVkVmFsdWUpKSB7XG4gICAgICAgICAgcGFyZW50Q29udGV4dC5hcHBlbmRUb0FycmF5KFtrZXldLCBuZXN0ZWRLZXksIG5lc3RlZFZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgbmVzdGVkVmFsdWUgPT09ICdvYmplY3QnICYmIG5lc3RlZFZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgcGFyZW50Q29udGV4dC5tZXJnZU9iamVjdChba2V5XSwgbmVzdGVkS2V5LCBuZXN0ZWRWYWx1ZSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGFyZW50Q29udGV4dC5zZXRPYmplY3QoW2tleV0sIG5lc3RlZEtleSwgbmVzdGVkVmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgaWYgKG9wdGlvbnM/LmFycmF5TWVyZ2UgPT09ICdyZXBsYWNlJykge1xuICAgICAgICBwYXJlbnRDb250ZXh0LnNldEdsb2JhbChrZXksIHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nID0gcGFyZW50Q29udGV4dC5nZXRHbG9iYWwoa2V5KTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXhpc3RpbmcpKSB7XG4gICAgICAgICAgcGFyZW50Q29udGV4dC5zZXRHbG9iYWwoa2V5LCBbLi4uZXhpc3RpbmcsIC4uLnZhbHVlXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGFyZW50Q29udGV4dC5zZXRHbG9iYWwoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcGFyZW50Q29udGV4dC5zZXRHbG9iYWwoa2V5LCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG1hcHBlZE91dHB1dDtcbn1cbiJdfQ==
|