mnemonica 1.0.6 → 1.0.7

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/FOR_HUMANS.md CHANGED
@@ -35,7 +35,7 @@ define(name, ctor) → TypeProxy → new instance.SubType()
35
35
 
36
36
  > Status API is stable for the documented surface: advanced topics are also covered
37
37
  > If you're looking for the deeper theory (Homotopy Type Theory, runtime Tries, AI-agent pipelines), see [`README.md`](./README.md). This document is the welcoming entry — practical, example-driven, aimed at developers who want to use the library.
38
- > **For type-safe `lookupTyped()`:** read [`docs/typed-lookup.md`](./docs/typed-lookup.md) — the `TypeRegistry` augmentation pattern, hand-written or generated by [`@mnemonica/tactica`](https://www.npmjs.com/package/@mnemonica/tactica). Runtime behaviour is identical either way.
38
+ > **For type-safe `lookup()`:** read [`docs/typed-lookup.md`](./docs/typed-lookup.md) — the `TypeRegistry` augmentation pattern, hand-written or generated by [`@mnemonica/tactica`](https://www.npmjs.com/package/@mnemonica/tactica). Runtime behaviour is identical either way.
39
39
  > [`SKILL.md`](./SKILL.md) is a usage quick reference only (not for contributors).
40
40
 
41
41
  ---
@@ -245,7 +245,7 @@ import { define, lookup } from 'mnemonica/module';
245
245
  | Involves async constructors | + [`.ai/rules-skill/async-constructors.md`](./.ai/rules-skill/async-constructors.md) + [`.ai/async_init.md`](./.ai/async_init.md) |
246
246
  | Involves TypeScript types | + [`.ai/rules-skill/type-system.md`](./.ai/rules-skill/type-system.md) |
247
247
  | Involves proxy internals | + [`.ai/rules-skill/proxy-architecture.md`](./.ai/rules-skill/proxy-architecture.md) |
248
- | Uses tactica / `lookupTyped` | + [`.ai/TACTICA-RULES.md`](./.ai/TACTICA-RULES.md) |
248
+ | Uses tactica / `lookup` | + [`.ai/TACTICA-RULES.md`](./.ai/TACTICA-RULES.md) |
249
249
  | Docs-only change | README section you're touching only |
250
250
  | Unfamiliar with the codebase | [`.ai/ONBOARDING.md`](./.ai/ONBOARDING.md) first — one file, five minutes |
251
251
 
@@ -508,7 +508,7 @@ const AsyncTypeNoReturn = define('AsyncType', async function () {
508
508
  |---|---|
509
509
  | Define a type | `define('Name', ctor)` |
510
510
  | Create from instance | `new instance.SubType(args)` |
511
- | Look up a type | `lookup('Name')` or `lookupTyped('Name')` |
511
+ | Look up a type | `lookup('Name')` or `lookup('Name')` |
512
512
  | Read construction history | `getProps(instance)` |
513
513
  | Get parent instance | `utils.parent(instance)` or `utils.parent(instance, 'TypeName')` |
514
514
  | Flatten to plain object | `utils.extract(instance)` |
@@ -545,19 +545,19 @@ const SomeType = lookup('SomeType');
545
545
  const SomeNestedType = lookup('SomeType.SomeNestedType');
546
546
  ```
547
547
 
548
- #### `lookupTyped(typeNestedPath)`
548
+ #### `lookup(typeNestedPath)`
549
549
 
550
550
  Type-safe lookup function. Requires a `TypeRegistry` augmentation — hand-written for small projects or generated by [`@mnemonica/tactica`](https://www.npmjs.com/package/@mnemonica/tactica). See [`docs/typed-lookup.md`](./docs/typed-lookup.md) for both paths side by side.
551
551
 
552
552
  ```typescript
553
- import { lookupTyped } from 'mnemonica';
553
+ import { lookup } from 'mnemonica';
554
554
 
555
555
  // Type-safe lookup - returns properly typed constructor
556
- const UserType = lookupTyped('UserType');
556
+ const UserType = lookup('UserType');
557
557
  const user = new UserType({ name: 'John' }); // Full type safety!
558
558
 
559
559
  // Works with nested types too
560
- const SubType = lookupTyped('Parent.SubType');
560
+ const SubType = lookup('Parent.SubType');
561
561
  ```
562
562
 
563
563
  To enable type safety, generate types with tactica:
@@ -1257,23 +1257,54 @@ const merged = merge(instanceA, instanceB, 'args');
1257
1257
  Items below are designed but **not yet shipped**. They are documented here
1258
1258
  so consumers can avoid relying on them prematurely.
1259
1259
 
1260
- ### Nested `lookupTyped()`
1260
+ ### Nested `lookup()` — resolved as unnecessary
1261
1261
 
1262
- **Problem.** Global `lookupTyped('Parent.Child')` returns a constructor
1263
- *without* the parent in the prototype chain — that breaks instance
1264
- inheritance.
1262
+ A type-safe `.lookup()` method on constructors (e.g.
1263
+ `Scene2D.lookup('GraphNode2D')`) was considered so that the returned
1264
+ constructor would preserve the parent type in the prototype chain.
1265
1265
 
1266
- **Planned.** A type-safe `.lookupTyped()` method on constructors for
1267
- relative lookups that preserve the chain:
1266
+ However, this is unnecessary overhead:
1268
1267
 
1269
- ```typescript
1270
- const GraphNode2D = Scene2D.lookupTyped('GraphNode2D');
1271
- const node = new GraphNode2D({ x: 10, y: 20 });
1272
- // node has Scene2D in its prototype chain
1273
- ```
1268
+ - mnemonica subtypes are constructed from **parent instances**, not from
1269
+ parent constructors. The chain is created by `new scene.GraphNode2D(...)`,
1270
+ not by a constructor looked up in isolation.
1271
+ - Tactica-generated declaration merging already types those instance-level
1272
+ subtype constructors. Starting from `lookup('Scene2D')` gives a fully
1273
+ typed root constructor; after `const scene = new Scene2D(...)`,
1274
+ `scene.GraphNode2D` is typed and produces the correct chained instance.
1275
+
1276
+ If `lookup('Something')` returns `TypeClass | undefined` instead of a typed
1277
+ constructor, it means one of three things:
1278
+
1279
+ 1. No `TypeRegistry` augmentation is in scope (the `.tactica` declarations
1280
+ are not imported or included in `tsconfig.json`).
1281
+ 2. The augmentation is in scope, but does not declare `'Something'`.
1282
+ 3. `'Something'` was never defined at runtime.
1283
+
1284
+ How nested `.lookup()` could have been implemented if it were needed:
1285
+
1286
+ 1. Encode the type's dotted path in `TypeConstructor` itself:
1287
+
1288
+ ```typescript
1289
+ interface TypeConstructor<Instance, Path extends string = string> {
1290
+ lookup<const K extends keyof NestedTypeRegistry[Path]>(
1291
+ name: K
1292
+ ): NestedTypeRegistry[Path][K];
1293
+ }
1294
+ ```
1295
+
1296
+ 2. Or parse the full path with template literal types and consult a
1297
+ `NestedTypeRegistry` mapping parent paths to their child constructors:
1298
+
1299
+ ```typescript
1300
+ type ParentPath<P extends string> =
1301
+ P extends `${infer Head}.${string}` ? Head : never;
1302
+ ```
1274
1303
 
1275
- This requires a `NestedTypeRegistry` interface augmentation alongside
1276
- `TypeRegistry` and is generated by [`@mnemonica/tactica`](https://www.npmjs.com/package/@mnemonica/tactica).
1304
+ Both approaches require either changing `TypeConstructor` to carry a `Path`
1305
+ generic or maintaining a second registry. Since the root-constructor +
1306
+ instance-level subtype pattern already gives the same result with no core
1307
+ changes, this item is intentionally not implemented.
1277
1308
 
1278
1309
  ---
1279
1310
 
package/README.md CHANGED
@@ -39,7 +39,7 @@ You do not need HoTT to use mnemonica. The [primer](./docs/hott-primer.md) is th
39
39
  ## The shortest version
40
40
 
41
41
  ```typescript
42
- import { define, lookupTyped, getProps } from 'mnemonica';
42
+ import { define, lookup, getProps } from 'mnemonica';
43
43
 
44
44
  const Person = define('Person', function (data: { name: string }) {
45
45
  this.name = data.name;
@@ -123,9 +123,9 @@ These are the two assumptions that most reliably produce incorrect code.
123
123
  **1. "I should traverse the chain manually."** The most common mistake: seeing `utils.parent(utils.parent(instance))` in examples and treating it as a production traversal pattern. Manual depth-chaining is brittle and untyped. The correct APIs:
124
124
 
125
125
  - **`utils.parent(instance, 'TypeName')`** — walks to a named ancestor in O(depth), no manual counting
126
- - **`lookupTyped(path)`** — resolves any type by path string with full TypeScript inference, against an augmented `TypeRegistry` (hand-written or `tactica`-generated — see [`docs/typed-lookup.md`](./docs/typed-lookup.md)). Paths may use dots, slashes, colons, or bracket notation, and may be single-segment names when the lookup is relative to a collection or type.
126
+ - **`lookup(path)`** — resolves any type by path string with full TypeScript inference, against an augmented `TypeRegistry` (hand-written or `tactica`-generated — see [`docs/typed-lookup.md`](./docs/typed-lookup.md)). Paths may use dots, slashes, colons, or bracket notation, and may be single-segment names when the lookup is relative to a collection or type.
127
127
 
128
- For any traversal deeper than a single step, prefer `parent('TypeName')` or `lookupTyped`. The manual chain form in examples is illustrative only. See [`.ai/TACTICA-RULES.md`](./.ai/TACTICA-RULES.md) for the full `lookupTyped` usage guide.
128
+ For any traversal deeper than a single step, prefer `parent('TypeName')` or `lookup`. The manual chain form in examples is illustrative only. See [`.ai/TACTICA-RULES.md`](./.ai/TACTICA-RULES.md) for the full `lookup` usage guide.
129
129
 
130
130
  **2. "`Person.define('Employee')` is `class Employee extends Person`."** It isn't. The difference is where `new` goes:
131
131
 
@@ -161,7 +161,7 @@ const engineer = new alice.Employee({ role: 'Engineer' });
161
161
  In mnemonica, you **cannot**:
162
162
 
163
163
  - Modify a prototype after creation (would corrupt the Trie)
164
- - Reuse a constructor across instances (would create parallel paths)
164
+ - Reuse a constructor's `.prototype` object across type definitions (would create parallel paths)
165
165
  - Create subtypes from the wrong parent (`strictChain: true` enforces — default)
166
166
 
167
167
  These restrictions are not arbitrary. They are runtime enforcement of the identity-as-path discipline that HoTT inspired: a path is determined by its endpoints and the specific steps taken, not by arbitrary identifications. Subtype creation uses *instance-level* inheritance:
@@ -190,7 +190,7 @@ These terms are used throughout the codebase and documentation with precise mean
190
190
  | **Construction context** | The 9-tuple stored per instance: `__type__`, `__parent__`, `__args__`, `__timestamp__`, `__creator__`, `__collection__`, `__subtypes__`, `__proto_proto__`, `__stack__`. Readable via `getProps(instance)`. |
191
191
  | **Instance-level inheritance** | The mechanism where `new alice.Employee()` creates a prototype chain whose immediate parent is the **specific instance** `alice`, not a shared `Employee.prototype`. |
192
192
  | **Nominal type** | A type whose identity is determined by its constructor function reference, not by its property shape. Two types with identical fields but different constructors are different types. |
193
- | **Mnemosyne** | The prototype object inserted between `ModificatorType.prototype` and the parent instance. Stores internal construction context and instance methods (`extract`, `pick`, `parent`, etc.). |
193
+ | **Mnemosyne** | The prototype object inserted between `ModificatorType.prototype` and the parent instance. Stores internal construction context. User-facing instance methods (`extract`, `pick`, `parent`, etc.) are available through standalone `utils.*` or by explicit prototype attachment. |
194
194
  | **TypeProxy** | The constructor-like object returned by `define()`. Wraps the raw constructor with `.define()`, `.lookup()`, `.registerHook()` methods. |
195
195
  | **ModificatorType** | The actual constructor function used for `new` calls. Its prototype is linked to Mnemosyne, which is linked to the parent instance. |
196
196
  | **WeakMap key** | Internal properties are stored in a `WeakMap` keyed by the **Mnemosyne object**, not the instance itself. This keeps instance enumeration clean and shares metadata across instances of the same type. |
@@ -204,7 +204,7 @@ For the full construction pipeline from `define()` through `TypeProxy` → `Inst
204
204
  This is the pattern that turns the theoretical correctness into practical leverage. An HTTP request handler (or any ETL-style data pipeline) can be expressed as a path through the type Trie:
205
205
 
206
206
  ```typescript
207
- import { define, defaultTypes, lookupTyped } from 'mnemonica';
207
+ import { define, defaultTypes, lookup } from 'mnemonica';
208
208
 
209
209
  // Define the pipeline as a chain of types
210
210
  const RequestData = define('RequestData', function (this: { method: string; url: string }, req: { method: string; url: string }) {
@@ -282,7 +282,7 @@ Mnemonica provides:
282
282
 
283
283
  - **Structured introspection.** `getProps(instance)` returns the full construction context: type, parent, args, timestamp, creator, collection.
284
284
  - **Path queries.** `utils.parent(instance, 'UserType')` walks the Trie backward to a named ancestor. `utils.extract(instance)` flattens the inherited state.
285
- - **Type-safe runtime lookup.** `lookupTyped(path)` returns a fully-typed constructor without manual casts, against an augmented `TypeRegistry`. The augmentation can be hand-written for small projects or generated by the companion `@mnemonica/tactica` package — see [`docs/typed-lookup.md`](./docs/typed-lookup.md).
285
+ - **Type-safe runtime lookup.** `lookup(path)` returns a fully-typed constructor without manual casts, against an augmented `TypeRegistry`. The augmentation can be hand-written for small projects or generated by the companion `@mnemonica/tactica` package — see [`docs/typed-lookup.md`](./docs/typed-lookup.md).
286
286
  - **Hook-based observability.** `preCreation`, `postCreation`, `creationError` fire at well-defined moments and can short-circuit construction.
287
287
  - **Persistence-friendly.** Instances carry `__args__` — they can be reconstructed from their history.
288
288
  - **Empathy-infrastructure.** Every instance is the endpoint of a reconstructible path, so an agent can understand another agent's present state in the context of how it was reached — see [`docs/empathy-in-ai.md`](./docs/empathy-in-ai.md).
@@ -298,7 +298,7 @@ This is the primitive that is currently missing in the Node.js ecosystem for bui
298
298
  | Function | Purpose | Source |
299
299
  |---|---|---|
300
300
  | `define(name, ctor, config?)` | Create a type at module scope or as a subtype | [`src/index.ts`](./src/index.ts) |
301
- | `lookupTyped(path)` | Type-safe runtime lookup — requires `TypeRegistry` augmentation (by hand or via [`@mnemonica/tactica`](https://www.npmjs.com/package/@mnemonica/tactica); see [`docs/typed-lookup.md`](./docs/typed-lookup.md)) | [`src/index.ts`](./src/index.ts) |
301
+ | `lookup(path)` | Type-safe runtime lookup — requires `TypeRegistry` augmentation (by hand or via [`@mnemonica/tactica`](https://www.npmjs.com/package/@mnemonica/tactica); see [`docs/typed-lookup.md`](./docs/typed-lookup.md)) | [`src/index.ts`](./src/index.ts) |
302
302
  | `lookup(path)` | Untyped runtime lookup | [`src/index.ts`](./src/index.ts) |
303
303
  | `apply(parent, Ctor, args)` / `call(...)` / `bind(...)` | Apply a constructor to a parent instance | [`src/index.ts`](./src/index.ts) |
304
304
  | `decorate(parent?, config?)` | Class-based decorator equivalent of `define()` | [`src/index.ts`](./src/index.ts) |
@@ -418,7 +418,7 @@ For the full construction pipeline with source file references for every stage,
418
418
  | `Proto<P, T>` | Merge parent and child types; child wins on key collision |
419
419
  | `ProtoFlat<P, T>` | Flattened version used in tactica-generated types |
420
420
  | `MnemonicaInstance` | The instance-method surface (extract, pick, parent, etc.) |
421
- | `TypeRegistry` | Empty interface — tactica augments it for `lookupTyped` |
421
+ | `TypeRegistry` | Empty interface — tactica augments it for `lookup` |
422
422
  | `TypeConstructor<T>` | What `define()` returns; both newable and callable |
423
423
  | `hooksOpts<P, T>` | Shape of data passed to hook callbacks |
424
424
 
@@ -452,7 +452,8 @@ Everything below ships with this package.
452
452
  1. **This file** — thesis, four data mistakes, pipeline pattern, operational reference
453
453
  2. [`FOR_HUMANS.md`](./FOR_HUMANS.md) — gentler, example-heavy walkthrough for human developers
454
454
  3. [`SKILL.md`](./SKILL.md) — quick reference for usage patterns
455
- 4. [`docs/typed-lookup.md`](./docs/typed-lookup.md) — using `lookupTyped()` with or without tactica (the `TypeRegistry` augmentation pattern)
455
+ 4. [`docs/prototype-chain.md`](./docs/prototype-chain.md) — how mnemonica builds the per-instance prototype chain and why the layers exist
456
+ 5. [`docs/typed-lookup.md`](./docs/typed-lookup.md) — using `lookup()` with or without tactica (the `TypeRegistry` augmentation pattern)
456
457
  5. [`docs/hott-primer.md`](./docs/hott-primer.md) — HoTT concepts mapped to mnemonica (monad, path types, univalence, HITs, fibrations)
457
458
  6. [`docs/empathy-in-ai.md`](./docs/empathy-in-ai.md) — why reconstructible data lineage is infrastructure for empathetic AI
458
459
 
@@ -462,7 +463,8 @@ Everything below ships with this package.
462
463
  2. [`.ai/ONBOARDING.md`](./.ai/ONBOARDING.md) — five-minute editor onboarding
463
464
  3. [`CONTRIBUTING.md`](./CONTRIBUTING.md) — local workflow, branching, release process
464
465
  4. [`docs/theory-of-operations.md`](./docs/theory-of-operations.md) — full construction pipeline from `define()` through `InstanceCreator` to instance return, with source file references for every stage
465
- 5. [`.ai/CODE.md`](./.ai/CODE.md), [`.ai/ARCHITECT.md`](./.ai/ARCHITECT.md), [`.ai/DEBUG.md`](./.ai/DEBUG.md) role-specific deeper rules
466
+ 5. [`.ai/PROTOTYPE-CHAIN.md`](./.ai/PROTOTYPE-CHAIN.md) — the exact shape of the prototype chain, what each layer holds, and how subtype lookup walks it
467
+ 6. [`.ai/CODE.md`](./.ai/CODE.md), [`.ai/ARCHITECT.md`](./.ai/ARCHITECT.md), [`.ai/DEBUG.md`](./.ai/DEBUG.md) — role-specific deeper rules
466
468
  6. [`.ai/TACTICA-DEEP-DIVE.md`](./.ai/TACTICA-DEEP-DIVE.md) — deeper tactica integration patterns
467
469
  7. [`.ai/async_init.md`](./.ai/async_init.md) — async constructor patterns
468
470
  8. [`.ai/rules-skill/`](./.ai/rules-skill/) — granular rules for type system, hooks, code style, errors, testing
@@ -474,7 +476,7 @@ The full TypeScript source is in [`src/`](./src/) (on GitHub; the npm package sh
474
476
 
475
477
  ## Companion packages on npm
476
478
 
477
- - **[`@mnemonica/tactica`](https://www.npmjs.com/package/@mnemonica/tactica)** — CLI/codegen utility. Scans your `define()` and `@decorate()` calls and generates the `TypeRegistry` augmentation that makes `lookupTyped()` fully typed. The augmentation can also be written by hand for small projects — runtime behaviour is identical either way. See [`docs/typed-lookup.md`](./docs/typed-lookup.md).
479
+ - **[`@mnemonica/tactica`](https://www.npmjs.com/package/@mnemonica/tactica)** — CLI/codegen utility. Scans your `define()` and `@decorate()` calls and generates the `TypeRegistry` augmentation that makes `lookup()` fully typed. The augmentation can also be written by hand for small projects — runtime behaviour is identical either way. See [`docs/typed-lookup.md`](./docs/typed-lookup.md).
478
480
  - **[`typeomatica`](https://www.npmjs.com/package/typeomatica)** — Runtime type enforcement via Proxy. Used with the `@Strict` decorator. Wraps property access to enforce type invariants at runtime.
479
481
 
480
482
  Additional packages are in active development.
package/SKILL.md CHANGED
@@ -3,7 +3,7 @@ name: mnemonica-core
3
3
  description: |
4
4
  Instance inheritance system for JavaScript/TypeScript using prototype chains.
5
5
  Use when the user mentions mnemonica, define(), prototype inheritance,
6
- TypeRegistry, lookupTyped, tactica, instance inheritance, or when working
6
+ TypeRegistry, lookup, tactica, instance inheritance, or when working
7
7
  with the mnemonica core library. Covers: define() patterns, type-safe
8
8
  lookup with tactica, Proxy-based architecture, hook system, async
9
9
  constructors, strict chain validation, and 100% test coverage requirements.
@@ -16,7 +16,7 @@ metadata:
16
16
  ## When to use
17
17
 
18
18
  Activate this skill when:
19
- - User mentions `mnemonica`, `define()`, `lookupTyped`, `TypeRegistry`
19
+ - User mentions `mnemonica`, `define()`, `lookup`, `TypeRegistry`
20
20
  - User asks about prototype chain inheritance in JavaScript/TypeScript
21
21
  - User is modifying files in `core/src/` or `core/test/`
22
22
  - User asks about tactica-generated types or `.tactica/` directory
@@ -37,7 +37,7 @@ When the task involves adding or modifying a type definition:
37
37
 
38
38
  2. **Check TypeRegistry augmentation** (if using tactica)
39
39
  - Does `.tactica/types.ts` need updating?
40
- - Is `lookupTyped('MyType')` properly typed?
40
+ - Is `lookup('MyType')` properly typed?
41
41
  - See [rules-skill/lookup-typed.md](.ai/rules-skill/lookup-typed.md)
42
42
 
43
43
  3. **Test both success and error paths**
@@ -76,7 +76,7 @@ Read individual rule files for detailed explanations and code examples:
76
76
 
77
77
  ### Patterns
78
78
  - [rules-skill/define-patterns.md](.ai/rules-skill/define-patterns.md) — `define()` usage, subtypes, config options
79
- - [rules-skill/lookup-typed.md](.ai/rules-skill/lookup-typed.md) — `TypeRegistry`, `lookupTyped`, tactica integration
79
+ - [rules-skill/lookup-typed.md](.ai/rules-skill/lookup-typed.md) — `TypeRegistry`, `lookup`, tactica integration
80
80
  - [rules-skill/async-constructors.md](.ai/rules-skill/async-constructors.md) — async constructors, `awaitReturn`, chaining
81
81
 
82
82
  ### Architecture
@@ -23,4 +23,4 @@ function default_1() {
23
23
  };
24
24
  return CreateInstanceModificator;
25
25
  }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlSW5zdGFuY2VNb2RpZmljYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvdHlwZXMvY3JlYXRlSW5zdGFuY2VNb2RpZmljYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBV2IsNEJBMERDO0FBMUREO0lBRUMsTUFBTSx5QkFBeUIsR0FBRyxVQUVqQyxlQUFxQyxFQUNyQyx3QkFBc0QsRUFDdEQsU0FBMkI7UUFJM0IsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFHOUIsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sQ0FBQyxjQUFjLENBQ3JCLFNBQVMsRUFDVCxnQkFBZ0IsQ0FDaEIsQ0FBQztRQUNGLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUlyQixNQUFNLENBQUMsY0FBYyxDQUNwQixTQUFTLEVBQ1QsYUFBYSxFQUNiO1lBQ0MsR0FBRztnQkFDRixPQUFPLGVBQWUsQ0FBQztZQUN4QixDQUFDO1lBQ0QsVUFBVSxFQUFHLEtBQUs7U0FDbEIsQ0FDRCxDQUFDO1FBSUYsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDekUsS0FBSyxDQUFDLFdBQVcsR0FBRztZQUVuQixLQUFLLEVBQUcsZUFBZTtTQUN2QixDQUFDO1FBQ0YsTUFBTSxDQUFDLGdCQUFnQixDQUN0QixlQUFlLENBQUMsU0FBUyxFQUN6QixLQUFLLENBQ0wsQ0FBQztRQUlGLE9BQU8sQ0FBQyxjQUFjLENBQ3JCLGVBQWUsQ0FBQyxTQUFTLEVBQ3pCLFNBQVMsQ0FDVCxDQUFDO1FBRUYsT0FBTyxlQUFlLENBQUM7SUFFeEIsQ0FBQyxDQUFDO0lBRUYsT0FBTyx5QkFBeUIsQ0FBQztBQUVsQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdHlwZSB7XG5cdE1uZW1vbmljYUNvbnN0cnVjdG9yLCBBZGRQcm9wc0NhbGxiYWNrIFxufSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbi8vIFN0ZXAgNSBvZiBjb25zdHJ1Y3Rpb24gcGlwZWxpbmU6IHRoZSBkZWZhdWx0IE1vZGlmaWNhdGlvbkNvbnN0cnVjdG9yLlxuLy8gV2lyZXMgdGhlIHByb3RvdHlwZSBjaGFpbiBieSBjcmVhdGluZyBhIE1uZW1vc3luZSBvYmplY3QgaW5oZXJpdGluZ1xuLy8gZnJvbSB0aGUgcGFyZW50IGluc3RhbmNlLCBhdHRhY2hpbmcgaW50ZXJuYWwgcHJvcHMsIGFuZCBsaW5raW5nXG4vLyBNb2RpZmljYXRvclR5cGUucHJvdG90eXBlIHRvIGl0LiBUaGlzIGlzIHdoYXQgbWFrZXMgaW5zdGFuY2VvZiB3b3JrLlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG5cblx0Y29uc3QgQ3JlYXRlSW5zdGFuY2VNb2RpZmljYXRvciA9IGZ1bmN0aW9uIChcblx0XHR0aGlzOiBvYmplY3QsXG5cdFx0TW9kaWZpY2F0b3JUeXBlOiBNbmVtb25pY2FDb25zdHJ1Y3Rvcixcblx0XHRNb2RpZmljYXRvclR5cGVQcm90b3R5cGU6IHsgW2luZGV4OiBzdHJpbmddOiB1bmtub3duIH0sXG5cdFx0X2FkZFByb3BzOiBBZGRQcm9wc0NhbGxiYWNrXG5cdCkge1xuXG5cdFx0IFxuXHRcdGNvbnN0IGV4aXN0ZW50SW5zdGFuY2UgPSB0aGlzO1xuXG5cdFx0Ly8gaW5oZXJpdGVkXG5cdFx0Y29uc3QgTW5lbW9zeW5lID0ge307XG5cdFx0UmVmbGVjdC5zZXRQcm90b3R5cGVPZihcblx0XHRcdE1uZW1vc3luZSxcblx0XHRcdGV4aXN0ZW50SW5zdGFuY2Vcblx0XHQpO1xuXHRcdF9hZGRQcm9wcyhNbmVtb3N5bmUpO1xuXG5cdFx0Ly8gYWJvdXQgdG8gc2V0dXAgY29uc3RydWN0b3IgcHJvcGVydHkgZm9yIG5ldyBpbnN0YW5jZVxuXHRcdC8vIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbmhlcml0ZWQsICdjb25zdHJ1Y3RvcicsIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoXG5cdFx0XHRNbmVtb3N5bmUsXG5cdFx0XHQnY29uc3RydWN0b3InLFxuXHRcdFx0e1xuXHRcdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRcdHJldHVybiBNb2RpZmljYXRvclR5cGU7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGVudW1lcmFibGUgOiBmYWxzZVxuXHRcdFx0fVxuXHRcdCk7XG5cblx0XHQvLyBtb2RpZmljYXRpb24gaXRzZWxmXG5cdFx0Ly8gc28gbm93IHdlIGhhdmUgdG8gY29weSBhbGwgY29uc3RydWN0b3IgcHJvcHNcblx0XHRjb25zdCBwcm9wcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKE1vZGlmaWNhdG9yVHlwZVByb3RvdHlwZSk7XG5cdFx0cHJvcHMuY29uc3RydWN0b3IgPSB7XG5cdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIEknbSB0b28gbGF6eSBmb3IgdGhhdFxuXHRcdFx0dmFsdWUgOiBNb2RpZmljYXRvclR5cGVcblx0XHR9O1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFxuXHRcdFx0TW9kaWZpY2F0b3JUeXBlLnByb3RvdHlwZSxcblx0XHRcdHByb3BzXG5cdFx0KTtcblxuXHRcdC8vIGFuZCBzZXQgdGhlIHByb3RvdHlwZSBpbmhlcml0ZWRcblx0XHQvLyBSZWZsZWN0LnNldFByb3RvdHlwZU9mKE1vZGlmaWNhdG9yVHlwZS5wcm90b3R5cGUsIGluaGVyaXRlZCk7XG5cdFx0UmVmbGVjdC5zZXRQcm90b3R5cGVPZihcblx0XHRcdE1vZGlmaWNhdG9yVHlwZS5wcm90b3R5cGUsXG5cdFx0XHRNbmVtb3N5bmVcblx0XHQpO1xuXG5cdFx0cmV0dXJuIE1vZGlmaWNhdG9yVHlwZTtcblxuXHR9O1xuXG5cdHJldHVybiBDcmVhdGVJbnN0YW5jZU1vZGlmaWNhdG9yO1xuXG59XG4iXX0=
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlSW5zdGFuY2VNb2RpZmljYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvdHlwZXMvY3JlYXRlSW5zdGFuY2VNb2RpZmljYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBV2IsNEJBdUVDO0FBdkVEO0lBRUMsTUFBTSx5QkFBeUIsR0FBRyxVQUVqQyxlQUFxQyxFQUNyQyx3QkFBc0QsRUFDdEQsU0FBMkI7UUFJM0IsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFnQjlCLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNyQixPQUFPLENBQUMsY0FBYyxDQUNyQixTQUFTLEVBQ1QsZ0JBQWdCLENBQ2hCLENBQUM7UUFDRixTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFJckIsTUFBTSxDQUFDLGNBQWMsQ0FDcEIsU0FBUyxFQUNULGFBQWEsRUFDYjtZQUNDLEdBQUc7Z0JBQ0YsT0FBTyxlQUFlLENBQUM7WUFDeEIsQ0FBQztZQUNELFVBQVUsRUFBRyxLQUFLO1NBQ2xCLENBQ0QsQ0FBQztRQUlGLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQ3pFLEtBQUssQ0FBQyxXQUFXLEdBQUc7WUFFbkIsS0FBSyxFQUFHLGVBQWU7U0FDdkIsQ0FBQztRQUNGLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDdEIsZUFBZSxDQUFDLFNBQVMsRUFDekIsS0FBSyxDQUNMLENBQUM7UUFJRixPQUFPLENBQUMsY0FBYyxDQUNyQixlQUFlLENBQUMsU0FBUyxFQUN6QixTQUFTLENBQ1QsQ0FBQztRQUVGLE9BQU8sZUFBZSxDQUFDO0lBRXhCLENBQUMsQ0FBQztJQUVGLE9BQU8seUJBQXlCLENBQUM7QUFFbEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHR5cGUge1xuXHRNbmVtb25pY2FDb25zdHJ1Y3RvciwgQWRkUHJvcHNDYWxsYmFjayBcbn0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG4vLyBTdGVwIDUgb2YgY29uc3RydWN0aW9uIHBpcGVsaW5lOiB0aGUgZGVmYXVsdCBNb2RpZmljYXRpb25Db25zdHJ1Y3Rvci5cbi8vIFdpcmVzIHRoZSBwcm90b3R5cGUgY2hhaW4gYnkgY3JlYXRpbmcgYSBNbmVtb3N5bmUgb2JqZWN0IGluaGVyaXRpbmdcbi8vIGZyb20gdGhlIHBhcmVudCBpbnN0YW5jZSwgYXR0YWNoaW5nIGludGVybmFsIHByb3BzLCBhbmQgbGlua2luZ1xuLy8gTW9kaWZpY2F0b3JUeXBlLnByb3RvdHlwZSB0byBpdC4gVGhpcyBpcyB3aGF0IG1ha2VzIGluc3RhbmNlb2Ygd29yay5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuXG5cdGNvbnN0IENyZWF0ZUluc3RhbmNlTW9kaWZpY2F0b3IgPSBmdW5jdGlvbiAoXG5cdFx0dGhpczogb2JqZWN0LFxuXHRcdE1vZGlmaWNhdG9yVHlwZTogTW5lbW9uaWNhQ29uc3RydWN0b3IsXG5cdFx0TW9kaWZpY2F0b3JUeXBlUHJvdG90eXBlOiB7IFtpbmRleDogc3RyaW5nXTogdW5rbm93biB9LFxuXHRcdF9hZGRQcm9wczogQWRkUHJvcHNDYWxsYmFja1xuXHQpIHtcblxuXHRcdCBcblx0XHRjb25zdCBleGlzdGVudEluc3RhbmNlID0gdGhpcztcblxuXHRcdC8vIGluaGVyaXRlZFxuXHRcdC8vIFRPRE86IHN1YnR5cGUgY29uc3RydWN0b3JzIGNvdWxkIGJlIGF0dGFjaGVkIGRpcmVjdGx5IHRvIHRoaXNcblx0XHQvLyBNbmVtb3N5bmUgb2JqZWN0IGFzIG5vbi1lbnVtZXJhYmxlIGdldHRlcnMsIHdoaWNoIHdvdWxkIGxldCB1c1xuXHRcdC8vIHJlbW92ZSB0aGUgcm9vdCBNbmVtb3N5bmUgUHJveHkgZW50aXJlbHkgYW5kIHJlbHkgb24gbm9ybWFsXG5cdFx0Ly8gcHJvdG90eXBlLWNoYWluIGxvb2t1cCBmb3IgYGluc3RhbmNlLlN1YlR5cGVgLiBHZXR0ZXJzIGdpdmUgbGF6eVxuXHRcdC8vIGluaXRpYWxpemF0aW9uLCBwcmV2ZW50IGFjY2lkZW50YWwgcmUtZGVmaW5pdGlvbiwgYW5kIGxldCBlYWNoXG5cdFx0Ly8gYWNjZXNzIHJlbHkgb24gdGhlIGN1cnJlbnQgcnVudGltZSBzdGF0ZSBvZiB0aGUgdHlwZSBncmFwaFxuXHRcdC8vIChNb2RpZmljYXRvclR5cGUsIE1vZGlmaWNhdG9yVHlwZVByb3RvdHlwZSwgYW5kIGFueSBmYWN0b3JpZXMgdGhhdFxuXHRcdC8vIG1heSBwcm9kdWNlIG5ldyBmaWVsZHMgb3IgY29uc3RydWN0b3JzKS4gVGhhdCB3b3VsZCBzaW1wbGlmeVxuXHRcdC8vIHN1YnR5cGUgYWNjZXNzIGJ1dCB3b3VsZCBpbmNyZWFzZSBjeWNsb21hdGljIGNvbXBsZXhpdHkgaGVyZSBhbmRcblx0XHQvLyB3b3VsZCBsb3NlIHRoZSBhYmlsaXR5IHRvIGRlZmluZSBuZXcgc3VidHlwZXMgYWZ0ZXIgdGhlIGluc3RhbmNlXG5cdFx0Ly8gaXMgY3JlYXRlZC4gVXNlcnMgd2hvIG5lZWQgZHluYW1pYyBwb3N0LWNyZWF0aW9uIGRlZmluaXRpb25zIGNhblxuXHRcdC8vIHVzZSBgLmZvcmsoKWAgb3IgYC5jbG9uZSgpYCB0byBnZXQgZnJlc2ggaW5zdGFuY2VzIHRoYXQgY2FycnkgdGhlXG5cdFx0Ly8gdXBkYXRlZCBjb25zdHJ1Y3RvcnMgb24gdGhlaXIgY2hhaW4uXG5cdFx0Y29uc3QgTW5lbW9zeW5lID0ge307XG5cdFx0UmVmbGVjdC5zZXRQcm90b3R5cGVPZihcblx0XHRcdE1uZW1vc3luZSxcblx0XHRcdGV4aXN0ZW50SW5zdGFuY2Vcblx0XHQpO1xuXHRcdF9hZGRQcm9wcyhNbmVtb3N5bmUpO1xuXG5cdFx0Ly8gYWJvdXQgdG8gc2V0dXAgY29uc3RydWN0b3IgcHJvcGVydHkgZm9yIG5ldyBpbnN0YW5jZVxuXHRcdC8vIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShpbmhlcml0ZWQsICdjb25zdHJ1Y3RvcicsIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoXG5cdFx0XHRNbmVtb3N5bmUsXG5cdFx0XHQnY29uc3RydWN0b3InLFxuXHRcdFx0e1xuXHRcdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRcdHJldHVybiBNb2RpZmljYXRvclR5cGU7XG5cdFx0XHRcdH0sXG5cdFx0XHRcdGVudW1lcmFibGUgOiBmYWxzZVxuXHRcdFx0fVxuXHRcdCk7XG5cblx0XHQvLyBtb2RpZmljYXRpb24gaXRzZWxmXG5cdFx0Ly8gc28gbm93IHdlIGhhdmUgdG8gY29weSBhbGwgY29uc3RydWN0b3IgcHJvcHNcblx0XHRjb25zdCBwcm9wcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzKE1vZGlmaWNhdG9yVHlwZVByb3RvdHlwZSk7XG5cdFx0cHJvcHMuY29uc3RydWN0b3IgPSB7XG5cdFx0XHQvLyBAdHMtZXhwZWN0LWVycm9yIEknbSB0b28gbGF6eSBmb3IgdGhhdFxuXHRcdFx0dmFsdWUgOiBNb2RpZmljYXRvclR5cGVcblx0XHR9O1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKFxuXHRcdFx0TW9kaWZpY2F0b3JUeXBlLnByb3RvdHlwZSxcblx0XHRcdHByb3BzXG5cdFx0KTtcblxuXHRcdC8vIGFuZCBzZXQgdGhlIHByb3RvdHlwZSBpbmhlcml0ZWRcblx0XHQvLyBSZWZsZWN0LnNldFByb3RvdHlwZU9mKE1vZGlmaWNhdG9yVHlwZS5wcm90b3R5cGUsIGluaGVyaXRlZCk7XG5cdFx0UmVmbGVjdC5zZXRQcm90b3R5cGVPZihcblx0XHRcdE1vZGlmaWNhdG9yVHlwZS5wcm90b3R5cGUsXG5cdFx0XHRNbmVtb3N5bmVcblx0XHQpO1xuXG5cdFx0cmV0dXJuIE1vZGlmaWNhdG9yVHlwZTtcblxuXHR9O1xuXG5cdHJldHVybiBDcmVhdGVJbnN0YW5jZU1vZGlmaWNhdG9yO1xuXG59XG4iXX0=
@@ -205,4 +205,4 @@ exports.types = {
205
205
  return result;
206
206
  }
207
207
  };
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVzY3JpcHRvcnMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVYiwrQ0FBNEM7QUFDNUMsTUFBTSxFQUNMLEdBQUcsRUFDSCxxQkFBcUIsRUFDckIsNEJBQTRCLEVBQzVCLFlBQVksRUFDWixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxTQUFTLEdBQ1QsR0FBRyxxQkFBUyxDQUFDO0FBR2QsMkNBRXlCO0FBRXpCLDBEQUE0QztBQUU1QyxNQUFNLEVBQ0wsWUFBWSxFQUNaLFVBQVUsRUFDVixtQkFBbUIsR0FDbkIsR0FBRyxRQUFRLENBQUM7QUFFYixNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFFbkMsTUFBTSxlQUFlLEdBQUcsVUFBVyxPQUFnQztJQUVsRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFFbEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUczQixNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQ3ZDLENBQUUsQ0FBMEIsRUFBRSxHQUFXLEVBQUcsRUFBRTtRQUM3QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUUsR0FBRyxDQUFFLENBQUM7UUFDN0IsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFFLEdBQUcsQ0FBRSxDQUFDO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLE9BQU8sS0FBSyxDQUFDO1FBQzVCLE1BQU0sTUFBTSxHQUFHLE9BQU8sTUFBTSxDQUFDO1FBQzdCLElBQUssTUFBTSxLQUFLLE1BQU0sRUFBRyxDQUFDO1lBQ3pCLENBQUMsQ0FBRSxHQUFHLENBQUUsR0FBRyxLQUFLLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDUCxDQUFDLENBQUUsR0FBRyxD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RyxDQUFFLFNBQWtDLEVBQUUsRUFBRyxFQUFFO0lBRXhFLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxDQUFFLE1BQU0sQ0FBRSxDQUFDO0lBQ3RELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxLQUFLLENBQ3JDLGVBQWUsRUFDZiwyQkFBMkIsQ0FDM0IsQ0FBQztJQUVGLGdCQUFnQixDQUFDLEdBQUcsQ0FDbkIsZUFBZSxFQUNmLG9CQUFvQixDQUNwQixDQUFDO0lBRUYsT0FBTyxvQkFBb0IsQ0FBQztBQUU3QixDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxxQkFBcUIsRUFBRSxDQUFDO0FBQzlDLEdBQUcsQ0FDRixhQUFhLEVBQ2IsNEJBQTRCLEVBQzVCO0lBQ0MsR0FBRztRQUNGLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztDQUNELENBQ0QsQ0FBQztBQUVXLFFBQUEsS0FBSyxHQUFHO0lBQ3BCLElBQUkscUJBQXFCO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLFVBQVcsU0FBa0MsRUFBRTtZQUM3RCxNQUFNLGdCQUFnQixHQUFHLHFCQUFxQixDQUFFLE1BQU0sQ0FBcUIsQ0FBQztZQUM1RSxPQUFPLGdCQUFnQixDQUFDO1FBQ3pCLENBQUMsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksWUFBWTtRQUNmLE1BQU0sTUFBTSxHQUFHLGFBQWdDLENBQUM7UUFDaEQsT0FBTyxNQUFNLENBQUM7SUFDZixDQUFDO0NBRUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHR5cGUge1xuXHRfSW50ZXJuYWxfVENfLFxuXHRDcmVhdGVUeXBlc0NvbGxlY3Rpb25GdW5jdGlvbixcblx0VHlwZXNDb2xsZWN0aW9uLFxuXHRob29rc09wdHMsXG5cdGhvb2tcbn0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuY29uc3Qge1xuXHRvZHAsXG5cdFN5bWJvbENvbnN0cnVjdG9yTmFtZSxcblx0U3ltYm9sRGVmYXVsdFR5cGVzQ29sbGVjdGlvbixcblx0U3ltYm9sQ29uZmlnLFxuXHRkZWZhdWx0T3B0aW9ucyxcblx0ZGVmYXVsdE9wdGlvbnNLZXlzLFxuXHRNTkVNT05JQ0EsXG5cdE1ORU1PU1lORSxcbn0gPSBjb25zdGFudHM7XG5cbi8vIGhlcmUgaXMgVHlwZXNDb2xsZWN0aW9uLmRlZmluZSgpIG1ldGhvZFxuaW1wb3J0IHtcblx0ZGVmaW5lLCBsb29rdXAsIHR5cGUgVHlwZXNNYXAgXG59IGZyb20gJy4uLy4uL2FwaS90eXBlcyc7XG5cbmltcG9ydCAqIGFzIGhvb2tzQVBJIGZyb20gJy4uLy4uL2FwaS9ob29rcyc7XG5cbmNvbnN0IHtcblx0cmVnaXN0ZXJIb29rLFxuXHRpbnZva2VIb29rLFxuXHRyZWdpc3RlckZsb3dDaGVja2VyLFxufSA9IGhvb2tzQVBJO1xuXG5jb25zdCB0eXBlc0NvbGxlY3Rpb25zID0gbmV3IE1hcCgpO1xuXG5jb25zdCBUeXBlc0NvbGxlY3Rpb24gPSBmdW5jdGlvbiAoIF9jb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ICkge1xuXHQgXG5cdGNvbnN0IHNlbGYgPSB0aGlzO1xuXG5cdGNvbnN0IHN1YnR5cGVzID0gbmV3IE1hcCgpO1xuXG5cdC8vIGRlZmF1bHQgY29uZmlnIGlzIGxlc3MgaW1wb3J0YW50IHRoYW4gdHlwZXMgY29sbGVjdGlvbiBjb25maWdcblx0Y29uc3QgY29uZmlnID0gZGVmYXVsdE9wdGlvbnNLZXlzLnJlZHVjZShcblx0XHQoIG86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6IHN0cmluZyApID0+IHtcblx0XHRcdGNvbnN0IHZhbHVlID0gX2NvbmZpZ1sga2V5IF07XG5cdFx0XHRjb25zdCBvcHRpb24gPSBkZWZhdWx0T3B0aW9uc1sga2V5IF07XG5cdFx0XHRjb25zdCB0X2NvbmYgPSB0eXBlb2YgdmFsdWU7XG5cdFx0XHRjb25zdCB0X29wdHMgPSB0eXBlb2Ygb3B0aW9uO1xuXHRcdFx0aWYgKCB0X2NvbmYgPT09IHRfb3B0cyApIHtcblx0XHRcdFx0b1sga2V5IF0gPSB2YWx1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9bIGtleSBdID0gb3B0aW9uO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG87XG5cdFx0fSxcblx0XHR7fSBcblx0KTtcblxuXHRvZHAoXG5cdFx0dGhpcyxcblx0XHRTeW1ib2xDb25maWcsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIGNvbmZpZztcblx0XHRcdH1cblx0XHR9IFxuXHQpO1xuXG5cdG9kcChcblx0XHR0aGlzLFxuXHRcdFN5bWJvbC5oYXNJbnN0YW5jZSxcblx0XHR7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSAoIGluc3RhbmNlOiB7IFtTeW1ib2xDb25zdHJ1Y3Rvck5hbWVdPzogc3RyaW5nIH0gKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgY2hlY2tSZXN1bHQgPSBpbnN0YW5jZVsgU3ltYm9sQ29uc3RydWN0b3JOYW1lIF0gPT09IE1ORU1PTklDQTtcblx0XHRcdFx0XHRyZXR1cm4gY2hlY2tSZXN1bHQ7XG5cdFx0XHRcdH07XG5cdFx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0XHR9XG5cdFx0fSBcblx0KTtcblxuXHRvZHAoXG5cdFx0dGhpcyxcblx0XHQnc3VidHlwZXMnLFxuXHRcdHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdHJldHVybiBzdWJ0eXBlcztcblx0XHRcdH1cblx0XHR9IFxuXHQpO1xuXG5cdC8vIEZvciBpbnN0YW5jZW9mIE1ORU1PU1lORVxuXHRvZHAoXG5cdFx0c3VidHlwZXMsXG5cdFx0TU5FTU9TWU5FLFxuXHRcdHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHQvLyByZXR1cm5pbmcgcHJveHlcblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gdHlwZXNDb2xsZWN0aW9ucy5nZXQoIHNlbGYgKTtcblx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHRcdH1cblx0XHR9IFxuXHQpO1xuXG5cdC8vIEZvciBpbnN0YW5jZW9mIE1ORU1PU1lORVxuXHRvZHAoXG5cdFx0dGhpcyxcblx0XHRNTkVNT1NZTkUsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdC8vIHJldHVybmluZyBwcm94eVxuXHRcdFx0XHRjb25zdCByZXN1bHQgPSB0eXBlc0NvbGxlY3Rpb25zLmdldCggc2VsZiApO1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdFx0fVxuXHRcdH0gXG5cdCk7XG5cblx0Y29uc3QgaG9va3MgPSBPYmplY3QuY3JlYXRlKCBudWxsICk7XG5cdG9kcChcblx0XHR0aGlzLFxuXHRcdCdob29rcycsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIGhvb2tzO1xuXHRcdFx0fVxuXHRcdH0gXG5cdCk7XG5cbn0gYXMgX0ludGVybmFsX1RDXzxvYmplY3Q+O1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdE1ORU1PTklDQSxcblx0e1xuXHRcdGdldCAoKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSB0eXBlc0NvbGxlY3Rpb25zLmdldCggdGhpcyApO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9XG5cdH0gXG4pO1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdCdkZWZpbmUnLFxuXHR7XG5cdFx0Z2V0ICh0aGlzOiB7IHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBvYmplY3Q+IH0pIHtcblx0XHRcdGNvbnN0IHsgc3VidHlwZXMgfSA9IHRoaXM7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBmdW5jdGlvbiAoXG5cdFx0XHRcdHRoaXM6IENhbGxhYmxlRnVuY3Rpb24sXG5cdFx0XHRcdFR5cGVPclR5cGVOYW1lOiBzdHJpbmcgfCBDYWxsYWJsZUZ1bmN0aW9uLFxuXHRcdFx0XHRjb25zdHJ1Y3RIYW5kbGVyT3JDb25maWc/OiBDYWxsYWJsZUZ1bmN0aW9uIHwgb2JqZWN0LFxuXHRcdFx0XHRjb25maWc/OiBvYmplY3Rcblx0XHRcdCkge1xuXHRcdFx0Ly8gdGhpcyAtIGRlZmluZSBmdW5jdGlvbiBvZiBtbmVtb25pY2EgaW50ZXJmYWNlXG5cdFx0XHRcdGNvbnN0IGRlZmluZVJlc3VsdCA9IGRlZmluZS5jYWxsKFxuXHRcdFx0XHRcdHRoaXMgYXMgdW5rbm93bixcblx0XHRcdFx0XHRzdWJ0eXBlcyBhcyBUeXBlc01hcCxcblx0XHRcdFx0XHRUeXBlT3JUeXBlTmFtZSxcblx0XHRcdFx0XHRjb25zdHJ1Y3RIYW5kbGVyT3JDb25maWcsXG5cdFx0XHRcdFx0Y29uZmlnXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybiBkZWZpbmVSZXN1bHQ7XG5cdFx0XHR9O1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9LFxuXHRcdGVudW1lcmFibGUgOiB0cnVlXG5cdH0gXG4pO1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdCdsb29rdXAnLFxuXHR7XG5cdFx0Z2V0ICh0aGlzOiB7IHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBvYmplY3Q+IH0pIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IGZ1bmN0aW9uIChcblx0XHRcdFx0dGhpczogeyBzdWJ0eXBlczogTWFwPHN0cmluZywgb2JqZWN0PiB9LFxuXHRcdFx0XHRUeXBlTmVzdGVkUGF0aDogc3RyaW5nXG5cdFx0XHQpIHtcblx0XHRcdFx0Y29uc3QgbG9va3VwUmVzdWx0ID0gbG9va3VwLmNhbGwoXG4gdGhpcy5zdWJ0eXBlcyBhcyB1bmtub3duIGFzIFR5cGVzTWFwLFxuIFR5cGVOZXN0ZWRQYXRoIFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gbG9va3VwUmVzdWx0O1xuXHRcdFx0fS5iaW5kKCB0aGlzICk7XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH0sXG5cdFx0ZW51bWVyYWJsZSA6IHRydWVcblx0fSBcbik7XG5cbm9kcChcblx0VHlwZXNDb2xsZWN0aW9uLnByb3RvdHlwZSxcblx0J3JlZ2lzdGVySG9vaycsXG5cdHtcblx0XHRnZXQgKHRoaXM6IFR5cGVzQ29sbGVjdGlvbikge1xuXHRcdCBcblx0XHRcdGNvbnN0IHNlbGYgPSB0aGlzO1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gZnVuY3Rpb24gKCBob29rTmFtZTogc3RyaW5nLCBob29rQ2FsbGJhY2s6IGhvb2sgKSB7XG5cdFx0XHQvLyByZXR1cm4gcHJvdG8ucmVnaXN0ZXJIb29rLmNhbGwoIHR5cGVzQ29sbGVjdGlvbnMuZ2V0KCBzZWxmICksIGhvb2tOYW1lLCBob29rQ2FsbGJhY2sgKTtcblx0XHRcdFx0Y29uc3QgaG9va1Jlc3VsdCA9IHJlZ2lzdGVySG9vay5jYWxsKFxuXHRcdFx0XHRcdHNlbGYsXG5cdFx0XHRcdFx0aG9va05hbWUsXG5cdFx0XHRcdFx0aG9va0NhbGxiYWNrIFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gaG9va1Jlc3VsdDtcblx0XHRcdH0uYmluZCggdGhpcyApO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9LFxuXHRcdGVudW1lcmFibGUgOiB0cnVlXG5cdH0gXG4pO1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdCdpbnZva2VIb29rJyxcblx0e1xuXHRcdGdldCAodGhpczogVHlwZXNDb2xsZWN0aW9uKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSAoIGhvb2tOYW1lOiBzdHJpbmcsIG9wdHM6IHsgW2luZGV4OiBzdHJpbmddOiB1bmtub3duIH0gKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGhvb2tSZXN1bHQgPSBpbnZva2VIb29rLmNhbGwoXG5cdFx0XHRcdFx0dHlwZXNDb2xsZWN0aW9ucy5nZXQoIHRoaXMgKSxcblx0XHRcdFx0XHRob29rTmFtZSxcbm9wdHMgYXMgaG9va3NPcHRzIFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gaG9va1Jlc3VsdDtcblx0XHRcdH07XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH1cblx0fSBcbik7XG5cbm9kcChcblx0VHlwZXNDb2xsZWN0aW9uLnByb3RvdHlwZSxcblx0J3JlZ2lzdGVyRmxvd0NoZWNrZXInLFxuXHR7XG5cdFx0Z2V0ICh0aGlzOiBUeXBlc0NvbGxlY3Rpb24pIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9ICggZmxvd0NoZWNrZXJDYWxsYmFjazogKCkgPT4gdW5rbm93biApID0+IHtcblx0XHRcdFx0Y29uc3QgY2hlY2tlclJlc3VsdCA9IHJlZ2lzdGVyRmxvd0NoZWNrZXIuY2FsbChcblx0XHRcdFx0XHR0eXBlc0NvbGxlY3Rpb25zLmdldCggdGhpcyApLFxuXHRcdFx0XHRcdGZsb3dDaGVja2VyQ2FsbGJhY2sgXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybiBjaGVja2VyUmVzdWx0O1xuXHRcdFx0fTtcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fVxuXHR9IFxuKTtcblxuXG5pbnRlcmZhY2UgVHlwZXNDb2xsZWN0aW9uVGFyZ2V0IHtcblx0c3VidHlwZXM6IFR5cGVzTWFwO1xuXHRkZWZpbmU6IChuYW1lOiBzdHJpbmcsIGN0b3I6IEZ1bmN0aW9uQ29uc3RydWN0b3IpID0+IG9iamVjdDtcbn1cblxuY29uc3QgdHlwZXNDb2xsZWN0aW9uUHJveHlIYW5kbGVyID0ge1xuXHRnZXQgKCB0YXJnZXQ6IFR5cGVzQ29sbGVjdGlvblRhcmdldCwgcHJvcDogc3RyaW5nICkge1xuXHRcdGlmICggdGFyZ2V0LnN1YnR5cGVzLmhhcyggcHJvcCApICkge1xuXHRcdFx0Ly8gYWNjZXNzIHRvIHN1cHR5cGVcblx0XHRcdC8vIGZvciBuZXcgY2FsbCBvciBkZWZpbmluZyBuZXcgdHlwZVxuXHRcdFx0Y29uc3Qgc3VidHlwZVJlc3VsdCA9IHRhcmdldC5zdWJ0eXBlcy5nZXQoIHByb3AgKTtcblx0XHRcdHJldHVybiBzdWJ0eXBlUmVzdWx0O1xuXHRcdH1cblx0XHRpZiAoIHByb3AgPT09ICdkZWZpbmUnICkge1xuXHRcdFx0Ly8gd2lsbCBob3BlZnVsbHkgZGVmaW5lIG5ldyB0eXBlXG5cdFx0XHRyZXR1cm4gdGFyZ2V0LmRlZmluZTtcblx0XHR9XG5cdFx0Y29uc3QgcmVmbGVjdFJlc3VsdCA9IFJlZmxlY3QuZ2V0KFxuXHRcdFx0dGFyZ2V0LFxuXHRcdFx0cHJvcCBcblx0XHQpO1xuXHRcdHJldHVybiByZWZsZWN0UmVzdWx0O1xuXHR9LFxuXHRzZXQgKCB0YXJnZXQ6IFR5cGVzQ29sbGVjdGlvblRhcmdldCwgVHlwZU5hbWU6IHN0cmluZywgQ29uc3RydWN0b3I6IEZ1bmN0aW9uQ29uc3RydWN0b3IgKSB7XG5cdFx0dGFyZ2V0LmRlZmluZShcblx0XHRcdFR5cGVOYW1lLFxuXHRcdFx0Q29uc3RydWN0b3IgXG5cdFx0KTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG5cdGdldE93blByb3BlcnR5RGVzY3JpcHRvciAoIHRhcmdldDogVHlwZXNDb2xsZWN0aW9uVGFyZ2V0LCBwcm9wOiBzdHJpbmcgKSB7XG5cdFx0aWYgKCB0YXJnZXQuc3VidHlwZXMuaGFzKCBwcm9wICkgKSB7XG5cdFx0XHRjb25zdCBkZXNjcmlwdG9yUmVzdWx0ID0ge1xuXHRcdFx0XHRjb25maWd1cmFibGUgOiB0cnVlLFxuXHRcdFx0XHRlbnVtZXJhYmxlICAgOiB0cnVlLFxuXHRcdFx0XHR3cml0YWJsZSAgICAgOiBmYWxzZSxcblx0XHRcdFx0dmFsdWUgICAgICAgIDogdGFyZ2V0LnN1YnR5cGVzLmdldCggcHJvcCApXG5cdFx0XHR9O1xuXHRcdFx0cmV0dXJuIGRlc2NyaXB0b3JSZXN1bHQ7XG5cdFx0fVxuXHRcdGNvbnN0IG93blByb3BSZXN1bHQgPSBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciggdGFyZ2V0LCBwcm9wICk7XG5cdFx0cmV0dXJuIG93blByb3BSZXN1bHQ7XG5cdH1cbn07XG5cbmNvbnN0IGNyZWF0ZVR5cGVzQ29sbGVjdGlvbiA9ICggY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9ICkgPT4ge1xuXG5cdGNvbnN0IHR5cGVzQ29sbGVjdGlvbiA9IG5ldyBUeXBlc0NvbGxlY3Rpb24oIGNvbmZpZyApO1xuXHRjb25zdCB0eXBlc0NvbGxlY3Rpb25Qcm94eSA9IG5ldyBQcm94eShcblx0XHR0eXBlc0NvbGxlY3Rpb24sXG5cdFx0dHlwZXNDb2xsZWN0aW9uUHJveHlIYW5kbGVyIFxuXHQpO1xuXG5cdHR5cGVzQ29sbGVjdGlvbnMuc2V0KFxuXHRcdHR5cGVzQ29sbGVjdGlvbixcblx0XHR0eXBlc0NvbGxlY3Rpb25Qcm94eSBcblx0KTtcblxuXHRyZXR1cm4gdHlwZXNDb2xsZWN0aW9uUHJveHk7XG5cbn07XG5cbmNvbnN0IERFRkFVTFRfVFlQRVMgPSBjcmVhdGVUeXBlc0NvbGxlY3Rpb24oKTtcbm9kcChcblx0REVGQVVMVF9UWVBFUyxcblx0U3ltYm9sRGVmYXVsdFR5cGVzQ29sbGVjdGlvbixcblx0e1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH0gXG4pO1xuXG5leHBvcnQgY29uc3QgdHlwZXMgPSB7XG5cdGdldCBjcmVhdGVUeXBlc0NvbGxlY3Rpb24gKCk6IENyZWF0ZVR5cGVzQ29sbGVjdGlvbkZ1bmN0aW9uIHtcblx0XHRjb25zdCByZXN1bHQgPSBmdW5jdGlvbiAoIGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fSApOiBUeXBlc0NvbGxlY3Rpb24ge1xuXHRcdFx0Y29uc3QgY29sbGVjdGlvblJlc3VsdCA9IGNyZWF0ZVR5cGVzQ29sbGVjdGlvbiggY29uZmlnICkgYXMgVHlwZXNDb2xsZWN0aW9uO1xuXHRcdFx0cmV0dXJuIGNvbGxlY3Rpb25SZXN1bHQ7XG5cdFx0fTtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9LFxuXHRnZXQgZGVmYXVsdFR5cGVzICgpOiBUeXBlc0NvbGxlY3Rpb24ge1xuXHRcdGNvbnN0IHJlc3VsdCA9IERFRkFVTFRfVFlQRVMgYXMgVHlwZXNDb2xsZWN0aW9uO1xuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxufTtcbiJdfQ==
208
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvZGVzY3JpcHRvcnMvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVYiwrQ0FBNEM7QUFDNUMsTUFBTSxFQUNMLEdBQUcsRUFDSCxxQkFBcUIsRUFDckIsNEJBQTRCLEVBQzVCLFlBQVksRUFDWixjQUFjLEVBQ2Qsa0JBQWtCLEVBQ2xCLFNBQVMsRUFDVCxTQUFTLEdBQ1QsR0FBRyxxQkFBUyxDQUFDO0FBR2QsMkNBRXlCO0FBRXpCLDBEQUE0QztBQUU1QyxNQUFNLEVBQ0wsWUFBWSxFQUNaLFVBQVUsRUFDVixtQkFBbUIsR0FDbkIsR0FBRyxRQUFRLENBQUM7QUFFYixNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFFbkMsTUFBTSxlQUFlLEdBQUcsVUFBVyxPQUFnQztJQUVsRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7SUFFbEIsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUczQixNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQ3ZDLENBQUUsQ0FBMEIsRUFBRSxHQUFXLEVBQUcsRUFBRTtRQUM3QyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUUsR0FBRyxDQUFFLENBQUM7UUFDN0IsTUFBTSxNQUFNLEdBQUcsY0FBYyxDQUFFLEdBQUcsQ0FBRSxDQUFDO1FBQ3JDLE1BQU0sTUFBTSxHQUFHLE9BQU8sS0FBSyxDQUFDO1FBQzVCLE1BQU0sTUFBTSxHQUFHLE9BQU8sTUFBTSxDQUFDO1FBQzdCLElBQUssTUFBTSxLQUFLLE1BQU0sRUFBRyxDQUFDO1lBQ3pCLENBQUMsQ0FBRSxHQUFHLENBQUUsR0FBRyxLQUFLLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDUCxDQUFDLENBQUUsR0FBRyxD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RyxDQUFFLFNBQWtDLEVBQUUsRUFBRyxFQUFFO0lBRXhFLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxDQUFFLE1BQU0sQ0FBRSxDQUFDO0lBQ3RELE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxLQUFLLENBQ3JDLGVBQWUsRUFDZiwyQkFBMkIsQ0FDM0IsQ0FBQztJQUVGLGdCQUFnQixDQUFDLEdBQUcsQ0FDbkIsZUFBZSxFQUNmLG9CQUFvQixDQUNwQixDQUFDO0lBRUYsT0FBTyxvQkFBb0IsQ0FBQztBQUU3QixDQUFDLENBQUM7QUFFRixNQUFNLGFBQWEsR0FBRyxxQkFBcUIsRUFBRSxDQUFDO0FBQzlDLEdBQUcsQ0FDRixhQUFhLEVBQ2IsNEJBQTRCLEVBQzVCO0lBQ0MsR0FBRztRQUNGLE9BQU8sSUFBSSxDQUFDO0lBQ2IsQ0FBQztDQUNELENBQ0QsQ0FBQztBQUVXLFFBQUEsS0FBSyxHQUFHO0lBQ3BCLElBQUkscUJBQXFCO1FBQ3hCLE1BQU0sTUFBTSxHQUFHLFVBQVcsU0FBa0MsRUFBRTtZQUM3RCxNQUFNLGdCQUFnQixHQUFHLHFCQUFxQixDQUFFLE1BQU0sQ0FBcUIsQ0FBQztZQUM1RSxPQUFPLGdCQUFnQixDQUFDO1FBQ3pCLENBQUMsQ0FBQztRQUNGLE9BQU8sTUFBTSxDQUFDO0lBQ2YsQ0FBQztJQUNELElBQUksWUFBWTtRQUNmLE1BQU0sTUFBTSxHQUFHLGFBQWdDLENBQUM7UUFDaEQsT0FBTyxNQUFNLENBQUM7SUFDZixDQUFDO0NBRUQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHR5cGUge1xuXHRfSW50ZXJuYWxfVENfLFxuXHRDcmVhdGVUeXBlc0NvbGxlY3Rpb25GdW5jdGlvbixcblx0VHlwZXNDb2xsZWN0aW9uLFxuXHRob29rc09wdHMsXG5cdGhvb2tcbn0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuY29uc3Qge1xuXHRvZHAsXG5cdFN5bWJvbENvbnN0cnVjdG9yTmFtZSxcblx0U3ltYm9sRGVmYXVsdFR5cGVzQ29sbGVjdGlvbixcblx0U3ltYm9sQ29uZmlnLFxuXHRkZWZhdWx0T3B0aW9ucyxcblx0ZGVmYXVsdE9wdGlvbnNLZXlzLFxuXHRNTkVNT05JQ0EsXG5cdE1ORU1PU1lORSxcbn0gPSBjb25zdGFudHM7XG5cbi8vIGhlcmUgaXMgVHlwZXNDb2xsZWN0aW9uLmRlZmluZSgpIG1ldGhvZFxuaW1wb3J0IHtcblx0ZGVmaW5lLCBsb29rdXAsIHR5cGUgVHlwZXNNYXAgXG59IGZyb20gJy4uLy4uL2FwaS90eXBlcyc7XG5cbmltcG9ydCAqIGFzIGhvb2tzQVBJIGZyb20gJy4uLy4uL2FwaS9ob29rcyc7XG5cbmNvbnN0IHtcblx0cmVnaXN0ZXJIb29rLFxuXHRpbnZva2VIb29rLFxuXHRyZWdpc3RlckZsb3dDaGVja2VyLFxufSA9IGhvb2tzQVBJO1xuXG5jb25zdCB0eXBlc0NvbGxlY3Rpb25zID0gbmV3IE1hcCgpO1xuXG5jb25zdCBUeXBlc0NvbGxlY3Rpb24gPSBmdW5jdGlvbiAoIF9jb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ICkge1xuXHQgXG5cdGNvbnN0IHNlbGYgPSB0aGlzO1xuXG5cdGNvbnN0IHN1YnR5cGVzID0gbmV3IE1hcCgpO1xuXG5cdC8vIGRlZmF1bHQgY29uZmlnIGlzIGxlc3MgaW1wb3J0YW50IHRoYW4gdHlwZXMgY29sbGVjdGlvbiBjb25maWdcblx0Y29uc3QgY29uZmlnID0gZGVmYXVsdE9wdGlvbnNLZXlzLnJlZHVjZShcblx0XHQoIG86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBrZXk6IHN0cmluZyApID0+IHtcblx0XHRcdGNvbnN0IHZhbHVlID0gX2NvbmZpZ1sga2V5IF07XG5cdFx0XHRjb25zdCBvcHRpb24gPSBkZWZhdWx0T3B0aW9uc1sga2V5IF07XG5cdFx0XHRjb25zdCB0X2NvbmYgPSB0eXBlb2YgdmFsdWU7XG5cdFx0XHRjb25zdCB0X29wdHMgPSB0eXBlb2Ygb3B0aW9uO1xuXHRcdFx0aWYgKCB0X2NvbmYgPT09IHRfb3B0cyApIHtcblx0XHRcdFx0b1sga2V5IF0gPSB2YWx1ZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG9bIGtleSBdID0gb3B0aW9uO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG87XG5cdFx0fSxcblx0XHR7fSBcblx0KTtcblxuXHRvZHAoXG5cdFx0dGhpcyxcblx0XHRTeW1ib2xDb25maWcsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIGNvbmZpZztcblx0XHRcdH1cblx0XHR9IFxuXHQpO1xuXG5cdG9kcChcblx0XHR0aGlzLFxuXHRcdFN5bWJvbC5oYXNJbnN0YW5jZSxcblx0XHR7XG5cdFx0XHRnZXQgKCkge1xuXHRcdFx0XHRjb25zdCByZXN1bHQgPSAoIGluc3RhbmNlOiB7IFtTeW1ib2xDb25zdHJ1Y3Rvck5hbWVdPzogc3RyaW5nIH0gKSA9PiB7XG5cdFx0XHRcdFx0Y29uc3QgY2hlY2tSZXN1bHQgPSBpbnN0YW5jZVsgU3ltYm9sQ29uc3RydWN0b3JOYW1lIF0gPT09IE1ORU1PTklDQTtcblx0XHRcdFx0XHRyZXR1cm4gY2hlY2tSZXN1bHQ7XG5cdFx0XHRcdH07XG5cdFx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0XHR9XG5cdFx0fSBcblx0KTtcblxuXHRvZHAoXG5cdFx0dGhpcyxcblx0XHQnc3VidHlwZXMnLFxuXHRcdHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHRcdHJldHVybiBzdWJ0eXBlcztcblx0XHRcdH1cblx0XHR9IFxuXHQpO1xuXG5cdC8vIEZvciBpbnN0YW5jZW9mIE1ORU1PU1lORVxuXHRvZHAoXG5cdFx0c3VidHlwZXMsXG5cdFx0TU5FTU9TWU5FLFxuXHRcdHtcblx0XHRcdGdldCAoKSB7XG5cdFx0XHQvLyByZXR1cm5pbmcgcHJveHlcblx0XHRcdFx0Y29uc3QgcmVzdWx0ID0gdHlwZXNDb2xsZWN0aW9ucy5nZXQoIHNlbGYgKTtcblx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHRcdH1cblx0XHR9IFxuXHQpO1xuXG5cdC8vIEZvciBpbnN0YW5jZW9mIE1ORU1PU1lORVxuXHRvZHAoXG5cdFx0dGhpcyxcblx0XHRNTkVNT1NZTkUsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdC8vIHJldHVybmluZyBwcm94eVxuXHRcdFx0XHRjb25zdCByZXN1bHQgPSB0eXBlc0NvbGxlY3Rpb25zLmdldCggc2VsZiApO1xuXHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdFx0fVxuXHRcdH0gXG5cdCk7XG5cblx0Y29uc3QgaG9va3MgPSBPYmplY3QuY3JlYXRlKCBudWxsICk7XG5cdG9kcChcblx0XHR0aGlzLFxuXHRcdCdob29rcycsXG5cdFx0e1xuXHRcdFx0Z2V0ICgpIHtcblx0XHRcdFx0cmV0dXJuIGhvb2tzO1xuXHRcdFx0fVxuXHRcdH0gXG5cdCk7XG5cbn0gYXMgX0ludGVybmFsX1RDXzxvYmplY3Q+O1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdE1ORU1PTklDQSxcblx0e1xuXHRcdGdldCAoKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSB0eXBlc0NvbGxlY3Rpb25zLmdldCggdGhpcyApO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9XG5cdH0gXG4pO1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdCdkZWZpbmUnLFxuXHR7XG5cdFx0Z2V0ICh0aGlzOiB7IHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBvYmplY3Q+IH0pIHtcblx0XHRcdGNvbnN0IHsgc3VidHlwZXMgfSA9IHRoaXM7XG5cdFx0XHRjb25zdCByZXN1bHQgPSBmdW5jdGlvbiAoXG5cdFx0XHRcdHRoaXM6IENhbGxhYmxlRnVuY3Rpb24sXG5cdFx0XHRcdFR5cGVPclR5cGVOYW1lOiBzdHJpbmcgfCBDYWxsYWJsZUZ1bmN0aW9uLFxuXHRcdFx0XHRjb25zdHJ1Y3RIYW5kbGVyT3JDb25maWc/OiBDYWxsYWJsZUZ1bmN0aW9uIHwgb2JqZWN0LFxuXHRcdFx0XHRjb25maWc/OiBvYmplY3Rcblx0XHRcdCkge1xuXHRcdFx0Ly8gdGhpcyAtIGRlZmluZSBmdW5jdGlvbiBvZiBtbmVtb25pY2EgaW50ZXJmYWNlXG5cdFx0XHRcdGNvbnN0IGRlZmluZVJlc3VsdCA9IGRlZmluZS5jYWxsKFxuXHRcdFx0XHRcdHRoaXMgYXMgdW5rbm93bixcblx0XHRcdFx0XHRzdWJ0eXBlcyBhcyBUeXBlc01hcCxcblx0XHRcdFx0XHRUeXBlT3JUeXBlTmFtZSxcblx0XHRcdFx0XHRjb25zdHJ1Y3RIYW5kbGVyT3JDb25maWcsXG5cdFx0XHRcdFx0Y29uZmlnXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybiBkZWZpbmVSZXN1bHQ7XG5cdFx0XHR9O1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9LFxuXHRcdGVudW1lcmFibGUgOiB0cnVlXG5cdH0gXG4pO1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdCdsb29rdXAnLFxuXHR7XG5cdFx0Z2V0ICh0aGlzOiB7IHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBvYmplY3Q+IH0pIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9IGZ1bmN0aW9uIChcblx0XHRcdFx0dGhpczogeyBzdWJ0eXBlczogTWFwPHN0cmluZywgb2JqZWN0PiB9LFxuXHRcdFx0XHRUeXBlTmVzdGVkUGF0aDogc3RyaW5nXG5cdFx0XHQpIHtcblx0XHRcdFx0Y29uc3QgbG9va3VwUmVzdWx0ID0gbG9va3VwLmNhbGwoXG4gdGhpcy5zdWJ0eXBlcyBhcyB1bmtub3duIGFzIFR5cGVzTWFwLFxuIFR5cGVOZXN0ZWRQYXRoIFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gbG9va3VwUmVzdWx0O1xuXHRcdFx0fS5iaW5kKCB0aGlzICk7XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH0sXG5cdFx0ZW51bWVyYWJsZSA6IHRydWVcblx0fSBcbik7XG5cbm9kcChcblx0VHlwZXNDb2xsZWN0aW9uLnByb3RvdHlwZSxcblx0J3JlZ2lzdGVySG9vaycsXG5cdHtcblx0XHRnZXQgKHRoaXM6IFR5cGVzQ29sbGVjdGlvbikge1xuXHRcdCBcblx0XHRcdGNvbnN0IHNlbGYgPSB0aGlzO1xuXHRcdFx0Y29uc3QgcmVzdWx0ID0gZnVuY3Rpb24gKCBob29rTmFtZTogc3RyaW5nLCBob29rQ2FsbGJhY2s6IGhvb2sgKSB7XG5cdFx0XHQvLyByZXR1cm4gcHJvdG8ucmVnaXN0ZXJIb29rLmNhbGwoIHR5cGVzQ29sbGVjdGlvbnMuZ2V0KCBzZWxmICksIGhvb2tOYW1lLCBob29rQ2FsbGJhY2sgKTtcblx0XHRcdFx0Y29uc3QgaG9va1Jlc3VsdCA9IHJlZ2lzdGVySG9vay5jYWxsKFxuXHRcdFx0XHRcdHNlbGYsXG5cdFx0XHRcdFx0aG9va05hbWUsXG5cdFx0XHRcdFx0aG9va0NhbGxiYWNrIFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gaG9va1Jlc3VsdDtcblx0XHRcdH0uYmluZCggdGhpcyApO1xuXHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHR9LFxuXHRcdGVudW1lcmFibGUgOiB0cnVlXG5cdH0gXG4pO1xuXG5vZHAoXG5cdFR5cGVzQ29sbGVjdGlvbi5wcm90b3R5cGUsXG5cdCdpbnZva2VIb29rJyxcblx0e1xuXHRcdGdldCAodGhpczogVHlwZXNDb2xsZWN0aW9uKSB7XG5cdFx0XHRjb25zdCByZXN1bHQgPSAoIGhvb2tOYW1lOiBzdHJpbmcsIG9wdHM6IHsgW2luZGV4OiBzdHJpbmddOiB1bmtub3duIH0gKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGhvb2tSZXN1bHQgPSBpbnZva2VIb29rLmNhbGwoXG5cdFx0XHRcdFx0dHlwZXNDb2xsZWN0aW9ucy5nZXQoIHRoaXMgKSxcblx0XHRcdFx0XHRob29rTmFtZSxcbm9wdHMgYXMgaG9va3NPcHRzIFxuXHRcdFx0XHQpO1xuXHRcdFx0XHRyZXR1cm4gaG9va1Jlc3VsdDtcblx0XHRcdH07XG5cdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdH1cblx0fSBcbik7XG5cbm9kcChcblx0VHlwZXNDb2xsZWN0aW9uLnByb3RvdHlwZSxcblx0J3JlZ2lzdGVyRmxvd0NoZWNrZXInLFxuXHR7XG5cdFx0Z2V0ICh0aGlzOiBUeXBlc0NvbGxlY3Rpb24pIHtcblx0XHRcdGNvbnN0IHJlc3VsdCA9ICggZmxvd0NoZWNrZXJDYWxsYmFjazogKCkgPT4gdW5rbm93biApID0+IHtcblx0XHRcdFx0Y29uc3QgY2hlY2tlclJlc3VsdCA9IHJlZ2lzdGVyRmxvd0NoZWNrZXIuY2FsbChcblx0XHRcdFx0XHR0eXBlc0NvbGxlY3Rpb25zLmdldCggdGhpcyApLFxuXHRcdFx0XHRcdGZsb3dDaGVja2VyQ2FsbGJhY2sgXG5cdFx0XHRcdCk7XG5cdFx0XHRcdHJldHVybiBjaGVja2VyUmVzdWx0O1xuXHRcdFx0fTtcblx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0fVxuXHR9IFxuKTtcblxuXG5pbnRlcmZhY2UgVHlwZXNDb2xsZWN0aW9uVGFyZ2V0IHtcblx0c3VidHlwZXM6IFR5cGVzTWFwO1xuXHRkZWZpbmU6IChuYW1lOiBzdHJpbmcsIGN0b3I6IEZ1bmN0aW9uQ29uc3RydWN0b3IpID0+IG9iamVjdDtcbn1cblxuY29uc3QgdHlwZXNDb2xsZWN0aW9uUHJveHlIYW5kbGVyID0ge1xuXHRnZXQgKCB0YXJnZXQ6IFR5cGVzQ29sbGVjdGlvblRhcmdldCwgcHJvcDogc3RyaW5nICkge1xuXHRcdGlmICggdGFyZ2V0LnN1YnR5cGVzLmhhcyggcHJvcCApICkge1xuXHRcdFx0Ly8gYWNjZXNzIHRvIHN1YnR5cGVcblx0XHRcdC8vIGZvciBuZXcgY2FsbCBvciBkZWZpbmluZyBuZXcgdHlwZVxuXHRcdFx0Y29uc3Qgc3VidHlwZVJlc3VsdCA9IHRhcmdldC5zdWJ0eXBlcy5nZXQoIHByb3AgKTtcblx0XHRcdHJldHVybiBzdWJ0eXBlUmVzdWx0O1xuXHRcdH1cblx0XHRpZiAoIHByb3AgPT09ICdkZWZpbmUnICkge1xuXHRcdFx0Ly8gd2lsbCBob3BlZnVsbHkgZGVmaW5lIG5ldyB0eXBlXG5cdFx0XHRyZXR1cm4gdGFyZ2V0LmRlZmluZTtcblx0XHR9XG5cdFx0Y29uc3QgcmVmbGVjdFJlc3VsdCA9IFJlZmxlY3QuZ2V0KFxuXHRcdFx0dGFyZ2V0LFxuXHRcdFx0cHJvcCBcblx0XHQpO1xuXHRcdHJldHVybiByZWZsZWN0UmVzdWx0O1xuXHR9LFxuXHRzZXQgKCB0YXJnZXQ6IFR5cGVzQ29sbGVjdGlvblRhcmdldCwgVHlwZU5hbWU6IHN0cmluZywgQ29uc3RydWN0b3I6IEZ1bmN0aW9uQ29uc3RydWN0b3IgKSB7XG5cdFx0dGFyZ2V0LmRlZmluZShcblx0XHRcdFR5cGVOYW1lLFxuXHRcdFx0Q29uc3RydWN0b3IgXG5cdFx0KTtcblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSxcblx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG5cdGdldE93blByb3BlcnR5RGVzY3JpcHRvciAoIHRhcmdldDogVHlwZXNDb2xsZWN0aW9uVGFyZ2V0LCBwcm9wOiBzdHJpbmcgKSB7XG5cdFx0aWYgKCB0YXJnZXQuc3VidHlwZXMuaGFzKCBwcm9wICkgKSB7XG5cdFx0XHRjb25zdCBkZXNjcmlwdG9yUmVzdWx0ID0ge1xuXHRcdFx0XHRjb25maWd1cmFibGUgOiB0cnVlLFxuXHRcdFx0XHRlbnVtZXJhYmxlICAgOiB0cnVlLFxuXHRcdFx0XHR3cml0YWJsZSAgICAgOiBmYWxzZSxcblx0XHRcdFx0dmFsdWUgICAgICAgIDogdGFyZ2V0LnN1YnR5cGVzLmdldCggcHJvcCApXG5cdFx0XHR9O1xuXHRcdFx0cmV0dXJuIGRlc2NyaXB0b3JSZXN1bHQ7XG5cdFx0fVxuXHRcdGNvbnN0IG93blByb3BSZXN1bHQgPSBSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvciggdGFyZ2V0LCBwcm9wICk7XG5cdFx0cmV0dXJuIG93blByb3BSZXN1bHQ7XG5cdH1cbn07XG5cbmNvbnN0IGNyZWF0ZVR5cGVzQ29sbGVjdGlvbiA9ICggY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9ICkgPT4ge1xuXG5cdGNvbnN0IHR5cGVzQ29sbGVjdGlvbiA9IG5ldyBUeXBlc0NvbGxlY3Rpb24oIGNvbmZpZyApO1xuXHRjb25zdCB0eXBlc0NvbGxlY3Rpb25Qcm94eSA9IG5ldyBQcm94eShcblx0XHR0eXBlc0NvbGxlY3Rpb24sXG5cdFx0dHlwZXNDb2xsZWN0aW9uUHJveHlIYW5kbGVyIFxuXHQpO1xuXG5cdHR5cGVzQ29sbGVjdGlvbnMuc2V0KFxuXHRcdHR5cGVzQ29sbGVjdGlvbixcblx0XHR0eXBlc0NvbGxlY3Rpb25Qcm94eSBcblx0KTtcblxuXHRyZXR1cm4gdHlwZXNDb2xsZWN0aW9uUHJveHk7XG5cbn07XG5cbmNvbnN0IERFRkFVTFRfVFlQRVMgPSBjcmVhdGVUeXBlc0NvbGxlY3Rpb24oKTtcbm9kcChcblx0REVGQVVMVF9UWVBFUyxcblx0U3ltYm9sRGVmYXVsdFR5cGVzQ29sbGVjdGlvbixcblx0e1xuXHRcdGdldCAoKSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH0gXG4pO1xuXG5leHBvcnQgY29uc3QgdHlwZXMgPSB7XG5cdGdldCBjcmVhdGVUeXBlc0NvbGxlY3Rpb24gKCk6IENyZWF0ZVR5cGVzQ29sbGVjdGlvbkZ1bmN0aW9uIHtcblx0XHRjb25zdCByZXN1bHQgPSBmdW5jdGlvbiAoIGNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fSApOiBUeXBlc0NvbGxlY3Rpb24ge1xuXHRcdFx0Y29uc3QgY29sbGVjdGlvblJlc3VsdCA9IGNyZWF0ZVR5cGVzQ29sbGVjdGlvbiggY29uZmlnICkgYXMgVHlwZXNDb2xsZWN0aW9uO1xuXHRcdFx0cmV0dXJuIGNvbGxlY3Rpb25SZXN1bHQ7XG5cdFx0fTtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9LFxuXHRnZXQgZGVmYXVsdFR5cGVzICgpOiBUeXBlc0NvbGxlY3Rpb24ge1xuXHRcdGNvbnN0IHJlc3VsdCA9IERFRkFVTFRfVFlQRVMgYXMgVHlwZXNDb2xsZWN0aW9uO1xuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cblxufTtcbiJdfQ==
package/build/index.d.ts CHANGED
@@ -1,14 +1,13 @@
1
- import type { CreateTypesCollectionFunction, IDEF, hook, hooksTypes, constructorOptions, Proto, Constructor, DecoratedClass, TypeClass, TypeAbsorber, MnemonicaModule, TypeConstructor, InstanceResult, Merge } from './types';
1
+ import type { CreateTypesCollectionFunction, IDEF, hook, hooksTypes, constructorOptions, Proto, Constructor, DecoratedClass, TypeClass, TypeAbsorber, MnemonicaModule, InstanceResult, Merge } from './types';
2
2
  export declare const isClass: (fn: import("./api/types/compileNewModificatorFunctionBody").ConstructHandler) => boolean, findSubTypeFromParent: (instance: import("./api/utils/index").parentSub | object | undefined, subType: string) => import("./api/utils/index").parentSub | null;
3
- export type { IDEF, TypeConstructor, _Internal_TC_, Proto, ProtoFlat, hooksOpts, hook, hooksTypes, TypesCollection } from './types';
3
+ export type { IDEF, TypeConstructor, TypeConstructorBase, InstanceOfTypeRegistry, LiteralKeysOf, ParentPath, PathOfInstance, AllParentPrefixes, ParentPathOfInstance, _Internal_TC_, Proto, ProtoFlat, hooksOpts, hook, hooksTypes, TypesCollection } from './types';
4
+ export interface TypeRegistry {
5
+ }
4
6
  export { getProps, setProps } from './api/types/Props';
5
7
  export declare const defaultTypes: import("./types").TypesCollection;
6
8
  export declare const define: TypeAbsorber;
7
- export declare const lookup: (this: unknown, TypeNestedPath: string) => TypeClass | undefined;
8
- export interface TypeRegistry {
9
- [key: string]: TypeConstructor<never>;
10
- }
11
- export declare const lookupTyped: <const K extends keyof TypeRegistry>(this: unknown, TypeNestedPath: K) => TypeRegistry[K];
9
+ export declare function lookup<const K extends keyof TypeRegistry>(this: unknown, TypeNestedPath: K): TypeRegistry[K] | undefined;
10
+ export declare function lookup(this: unknown, TypeNestedPath: string): TypeClass | undefined;
12
11
  export declare const apply: <E extends object, T extends object, S extends Proto<E, T>>(entity: E, Ctor: IDEF<T>, args?: unknown[]) => InstanceResult<Merge<E, T>>;
13
12
  export declare const call: <E extends object, T extends object, S extends Proto<E, T>>(entity: E, Ctor: IDEF<T>, ...args: unknown[]) => InstanceResult<Merge<E, T>>;
14
13
  export declare const bind: <E extends object, T extends object, S extends Proto<E, T>>(entity: E, Ctor: IDEF<T>) => (...args: unknown[]) => InstanceResult<Merge<E, T>>;
package/build/index.js CHANGED
@@ -37,7 +37,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
37
37
  };
38
38
  var _a;
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
- exports.defineStackCleaner = exports.utils = exports.errors = exports.defaultCollection = exports.createTypesCollection = exports.ErrorMessages = exports.TYPE_TITLE_PREFIX = exports.MNEMOSYNE = exports.MNEMONICA = exports.SymbolConfig = exports.SymbolDefaultTypesCollection = exports.SymbolConstructorName = exports.SymbolParentType = exports._lookup = exports._define = exports.mnemonica = exports.registerHook = exports.decorate = exports.bind = exports.call = exports.apply = exports.lookupTyped = exports.lookup = exports.define = exports.defaultTypes = exports.setProps = exports.getProps = exports.findSubTypeFromParent = exports.isClass = void 0;
40
+ exports.defineStackCleaner = exports.utils = exports.errors = exports.defaultCollection = exports.createTypesCollection = exports.ErrorMessages = exports.TYPE_TITLE_PREFIX = exports.MNEMOSYNE = exports.MNEMONICA = exports.SymbolConfig = exports.SymbolDefaultTypesCollection = exports.SymbolConstructorName = exports.SymbolParentType = exports._lookup = exports._define = exports.mnemonica = exports.registerHook = exports.decorate = exports.bind = exports.call = exports.apply = exports.define = exports.defaultTypes = exports.setProps = exports.getProps = exports.findSubTypeFromParent = exports.isClass = void 0;
41
+ exports.lookup = lookup;
41
42
  const index_1 = __importDefault(require("./api/utils/index"));
42
43
  exports.isClass = index_1.default.isClass, exports.findSubTypeFromParent = index_1.default.findSubTypeFromParent;
43
44
  var Props_1 = require("./api/types/Props");
@@ -61,19 +62,11 @@ exports.define = function (TypeName, constructHandler, config) {
61
62
  .define(TypeName, constructHandler, config);
62
63
  return defineResult;
63
64
  };
64
- const lookup = function (TypeNestedPath) {
65
+ function lookup(TypeNestedPath) {
65
66
  const types = checkThis(this) ? exports.defaultTypes : this || exports.defaultTypes;
66
67
  const lookupResult = types.lookup(TypeNestedPath);
67
68
  return lookupResult;
68
- };
69
- exports.lookup = lookup;
70
- const lookupTyped = function (TypeNestedPath) {
71
- const types = checkThis(this) ? exports.defaultTypes : this || exports.defaultTypes;
72
- const lookupResult = types
73
- .lookup(TypeNestedPath);
74
- return lookupResult;
75
- };
76
- exports.lookupTyped = lookupTyped;
69
+ }
77
70
  const $run = function (entity, Ctor, args) {
78
71
  const { TypeName } = Ctor;
79
72
  const Cstr = prepareSubtypeForConstruction(TypeName, entity);
@@ -130,7 +123,7 @@ const registerHook = function (Ctor, hookType, cb) {
130
123
  };
131
124
  exports.registerHook = registerHook;
132
125
  exports.mnemonica = Object.entries(Object.assign(Object.assign(Object.assign({ define: exports.define,
133
- lookup: exports.lookup,
126
+ lookup,
134
127
  apply: exports.apply,
135
128
  call: exports.call,
136
129
  bind: exports.bind,
@@ -155,4 +148,4 @@ var utils_1 = require("./utils");
155
148
  Object.defineProperty(exports, "utils", { enumerable: true, get: function () { return utils_1.utils; } });
156
149
  var utils_2 = require("./utils");
157
150
  Object.defineProperty(exports, "defineStackCleaner", { enumerable: true, get: function () { return utils_2.defineStackCleaner; } });
158
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBb0JiLDhEQUEyQztBQUUxQyxlQUFPLEdBRUosZUFBVSxVQURiLDZCQUFxQixHQUNsQixlQUFVLHVCQUFDO0FBTWYsMkNBRTJCO0FBRDFCLGlHQUFBLFFBQVEsT0FBQTtBQUFFLGlHQUFBLFFBQVEsT0FBQTtBQUduQiwyQ0FBd0M7QUFDeEMsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLHFCQUFTLENBQUM7QUFFMUIsd0RBQTBDO0FBQzFDLCtDQUE0QztBQUU1QyxNQUFNLEVBQUUsMEJBQTBCLEVBQUUsR0FBRyx5QkFBVyxDQUFDLFdBQVcsQ0FBQztBQUUvRCxzRUFBK0M7QUFDL0MsTUFBTSxFQUFFLDZCQUE2QixFQUFFLEdBQUcsbUJBQVUsQ0FBQztBQUV0QyxvQkFBWSxHQUFNLHlCQUFXLGNBQUM7QUFFN0MsU0FBUyxTQUFTLENBQUMsT0FBb0Q7SUFDdEUsTUFBTSxNQUFNLEdBQUcsT0FBTyxLQUFLLGlCQUFTLElBQUksT0FBTyxLQUFLLE9BQU8sQ0FBQztJQUM1RCxPQUFPLE1BQU0sQ0FBQztBQUNmLENBQUM7QUFJWSxRQUFBLE1BQU0sR0FBRyxVQVNyQixRQUFzRCxFQUV0RCxnQkFBa0YsRUFDbEYsTUFBMkI7SUFFM0IsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksb0JBQVksQ0FBQztJQUVwRSxNQUFNLFlBQVksR0FBSSxLQUFrQztTQUN0RCxNQUFNLENBQ04sUUFBa0IsRUFDbEIsZ0JBQTJCLEVBQzNCLE1BQU0sQ0FDVSxDQUFDO0lBQ25CLE9BQU8sWUFBWSxDQUFDO0FBQ3JCLENBQWlCLENBQUM7QUFFWCxNQUFNLE1B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LENBQUUsR0FBRyxLQUFLLENBQUM7SUFDN0IsR0FBRyxDQUNGLEdBQUcsRUFDSCxJQUFJLEVBQ0o7UUFDQyxHQUFHO1lBQ0YsT0FBTyxJQUFJLENBQUM7UUFDYixDQUFDO1FBQ0QsVUFBVSxFQUFHLElBQUk7S0FDakIsQ0FDRCxDQUFDO0lBQ0YsT0FBTyxHQUFHLENBQUM7QUFDWixDQUFDLEVBQ0QsRUFBRSxDQUNpQixDQUFDO0FBRXJCLDJDQUE2QjtBQUVoQixLQUdULEdBQUcsQ0FBQyxLQUFLLEVBRkosZUFBTyxjQUNQLGVBQU8sYUFDRjtBQUliLHdCQUFnQixHQVNiLGlCQUFTLG1CQVJaLDZCQUFxQixHQVFsQixpQkFBUyx3QkFQWixvQ0FBNEIsR0FPekIsaUJBQVMsK0JBTlosb0JBQVksR0FNVCxpQkFBUyxlQUxaLGlCQUFTLEdBS04saUJBQVMsWUFKWixpQkFBUyxHQUlOLGlCQUFTLFlBSFoseUJBQWlCLEdBR2QsaUJBQVMsb0JBRloscUJBQWEsR0FFVixpQkFBUyxlQUFDO0FBR0QsUUFBQSxxQkFBcUIsR0FDakMsaUJBQVMsQ0FBQyxxQkFBc0QsQ0FBQztBQUdyRCxRQUFBLGlCQUFpQixHQUFJLG9CQUFrRCxDQUFDLFFBQVEsQ0FBQztBQUNqRixRQUFBLE1BQU0sR0FBRyx5QkFBVyxDQUFDLFdBQVcsQ0FBQztBQUU5QyxpQ0FBZ0M7QUFBdkIsOEZBQUEsS0FBSyxPQUFBO0FBQ2QsaUNBQTZDO0FBQXBDLDJHQUFBLGtCQUFrQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgc3BhY2UtYmVmb3JlLWZ1bmN0aW9uLXBhcmVuICovXG4ndXNlIHN0cmljdCc7XG5cbmltcG9ydCB0eXBlIHtcblx0Q3JlYXRlVHlwZXNDb2xsZWN0aW9uRnVuY3Rpb24sXG5cdElERUYsXG5cdGhvb2ssXG5cdGhvb2tzVHlwZXMsXG5cdGNvbnN0cnVjdG9yT3B0aW9ucyxcblx0UHJvdG8sXG5cdElEZWZpbml0b3JJbnN0YW5jZSxcblx0Q29uc3RydWN0b3IsXG5cdERlY29yYXRlZENsYXNzLFxuXHRUeXBlQ2xhc3MsXG5cdFR5cGVBYnNvcmJlcixcblx0TW5lbW9uaWNhTW9kdWxlLFxuXHRUeXBlQ29uc3RydWN0b3IsXG5cdEluc3RhbmNlUmVzdWx0LFxuXHRNZXJnZVxufSBmcm9tICcuL3R5cGVzJztcblxuaW1wb3J0IFR5cGVzVXRpbHMgZnJvbSAnLi9hcGkvdXRpbHMvaW5kZXgnO1xuZXhwb3J0IGNvbnN0IHtcblx0aXNDbGFzcyxcblx0ZmluZFN1YlR5cGVGcm9tUGFyZW50LFxufSA9IFR5cGVzVXRpbHM7XG5cbmV4cG9ydCB0eXBlIHtcblx0SURFRiwgVHlwZUNvbnN0cnVjdG9yLCBfSW50ZXJuYWxfVENfLCBQcm90bywgUHJvdG9GbGF0LFxuXHRob29rc09wdHMsIGhvb2ssIGhvb2tzVHlwZXMsIFR5cGVzQ29sbGVjdGlvblxufSBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCB7XG5cdGdldFByb3BzLCBzZXRQcm9wcyBcbn0gZnJvbSAnLi9hcGkvdHlwZXMvUHJvcHMnO1xuXG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5jb25zdCB7IG9kcCB9ID0gY29uc3RhbnRzO1xuXG5pbXBvcnQgKiBhcyBlcnJvcnNBcGkgZnJvbSAnLi9hcGkvZXJyb3JzJztcbmltcG9ydCB7IGRlc2NyaXB0b3JzIH0gZnJvbSAnLi9kZXNjcmlwdG9ycyc7XG5cbmNvbnN0IHsgV1JPTkdfTU9ESUZJQ0FUSU9OX1BBVFRFUk4gfSA9IGRlc2NyaXB0b3JzLkVycm9yc1R5cGVzO1xuXG5pbXBvcnQgbW5lbW9zeW5lcyBmcm9tICcuL2FwaS90eXBlcy9NbmVtb3N5bmUnO1xuY29uc3QgeyBwcmVwYXJlU3VidHlwZUZvckNvbnN0cnVjdGlvbiB9ID0gbW5lbW9zeW5lcztcblxuZXhwb3J0IGNvbnN0IHsgZGVmYXVsdFR5cGVzLCB9ID0gZGVzY3JpcHRvcnM7XG5cbmZ1bmN0aW9uIGNoZWNrVGhpcyhwb2ludGVyOiB0eXBlb2YgbW5lbW9uaWNhIHwgdHlwZW9mIGV4cG9ydHMgfCB1bmtub3duKTogYm9vbGVhbiB7XG5cdGNvbnN0IHJlc3VsdCA9IHBvaW50ZXIgPT09IG1uZW1vbmljYSB8fCBwb2ludGVyID09PSBleHBvcnRzO1xuXHRyZXR1cm4gcmVzdWx0O1xufVxuXG5cbi8vIERlZmluZSBmdW5jdGlvbiB1c2luZyBUeXBlQWJzb3JiZXIgaW50ZXJmYWNlIHdpdGggcHJvcGVyIHR5cGUgY2FzdGluZ1xuZXhwb3J0IGNvbnN0IGRlZmluZSA9IGZ1bmN0aW9uIDxcblx0VCBleHRlbmRzIG9iamVjdCxcblx0UCBleHRlbmRzIG9iamVjdCA9IG9iamVjdCxcblx0TiBleHRlbmRzIFByb3RvPFAsIFQ+ID0gUHJvdG88UCwgVD4sXG5cblx0Ly8gaGVyZSBJRGVmaW5pdG9ySW5zdGFuY2UgaXMgYSBDT05TVFJVQ1RPUiAhISFcblx0UiBleHRlbmRzIElEZWZpbml0b3JJbnN0YW5jZTxOPiA9IElEZWZpbml0b3JJbnN0YW5jZTxOPlxuPihcblx0dGhpczogdW5rbm93bixcblx0VHlwZU5hbWU/OiBzdHJpbmcgfCBDYWxsYWJsZUZ1bmN0aW9uIHwgTmV3YWJsZUZ1bmN0aW9uLFxuXHQvLyBBbGxvdyBib3RoIHN0cmljdCBJREVGIGFuZCBtb3JlIGZsZXhpYmxlIGZ1bmN0aW9uIHNpZ25hdHVyZXNcblx0Y29uc3RydWN0SGFuZGxlcj86IElERUY8VD4gfCBDYWxsYWJsZUZ1bmN0aW9uIHwgTmV3YWJsZUZ1bmN0aW9uIHwgb2JqZWN0IHwgYm9vbGVhbixcblx0Y29uZmlnPzogY29uc3RydWN0b3JPcHRpb25zLFxuKTogUiB7XG5cdGNvbnN0IHR5cGVzID0gY2hlY2tUaGlzKHRoaXMpID8gZGVmYXVsdFR5cGVzIDogdGhpcyB8fCBkZWZhdWx0VHlwZXM7XG5cdC8vIFR5cGUgYXNzZXJ0aW9uIG5lZWRlZCBiZWNhdXNlIFR5cGVzQ29sbGVjdGlvblByb3h5IGlzIGEgUHJveHlcblx0Y29uc3QgZGVmaW5lUmVzdWx0ID0gKHR5cGVzIGFzIHsgZGVmaW5lOiBUeXBlQWJzb3JiZXIgfSlcblx0XHQuZGVmaW5lKFxuXHRcdFx0VHlwZU5hbWUgYXMgc3RyaW5nLFxuXHRcdFx0Y29uc3RydWN0SGFuZGxlciBhcyBJREVGPFQ+LFxuXHRcdFx0Y29uZmlnXG5cdFx0KSBhcyB1bmtub3duIGFzIFI7XG5cdHJldHVybiBkZWZpbmVSZXN1bHQ7XG59IGFzIFR5cGVBYnNvcmJlcjtcblxuZXhwb3J0IGNvbnN0IGxvb2t1cCA9IGZ1bmN0aW9uIChcblx0dGhpczogdW5rbm93bixcblx0VHlwZU5lc3RlZFBhdGg6IHN0cmluZ1xuKTogVHlwZUNsYXNzIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgdHlwZXMgPSBjaGVja1RoaXModGhpcykgPyBkZWZhdWx0VHlwZXMgOiB0aGlzIHx8IGRlZmF1bHRUeXBlcztcblx0Ly8gVHlwZSBhc3NlcnRpb24gbmVlZGVkIGJlY2F1c2UgVHlwZXNDb2xsZWN0aW9uUHJveHkgaXMgYSBQcm94eVxuXHRjb25zdCBsb29rdXBSZXN1bHQgPSAodHlwZXMgYXMgeyBsb29rdXA6IChwYXRoOiBzdHJpbmcpID0+IFR5cGVDbGFzcyB8IHVuZGVmaW5lZCB9KS5sb29rdXAoVHlwZU5lc3RlZFBhdGgpO1xuXHRyZXR1cm4gbG9va3VwUmVzdWx0O1xufTtcblxuLyoqXG4gKiBEZWZhdWx0IFR5cGVSZWdpc3RyeSBpbnRlcmZhY2UgLSBhdWdtZW50IHRoaXMgaW4geW91ciBwcm9qZWN0IHZpYVxuICogVHlwZVNjcmlwdCBkZWNsYXJhdGlvbiBtZXJnaW5nLiBUaGUgYXVnbWVudGF0aW9uIGNhbiBiZSBoYW5kLXdyaXR0ZW5cbiAqIGluIGEgLmQudHMgZmlsZSAoc21hbGwgcHJvamVjdHMpIG9yIGdlbmVyYXRlZCBieSBAbW5lbW9uaWNhL3RhY3RpY2EuXG4gKlxuICogVXNlcyBgVHlwZUNvbnN0cnVjdG9yPG5ldmVyPmAgYXMgdGhlIGluZGV4IHZhbHVlIHR5cGUgdG8gZW5mb3JjZVxuICogYXVnbWVudGF0aW9uOiB3aXRob3V0IGl0LCBhbnkga2V5IGxvb2t1cCByZXNvbHZlcyB0byBhIHVzZWxlc3MgdHlwZVxuICogYmVjYXVzZSBgVHlwZUNvbnN0cnVjdG9yPG5ldmVyPmAgaXMgbm90IGFzc2lnbmFibGUgdG8gY29uY3JldGUgdHlwZXMuXG4gKlxuICogRXhhbXBsZSAoaW4gYSBoYW5kLXdyaXR0ZW4gLmQudHMsIG9yIGdlbmVyYXRlZCBieSB0YWN0aWNhIGluXG4gKiAudGFjdGljYS9yZWdpc3RyeS50cyk6XG4gKiAgIGRlY2xhcmUgbW9kdWxlICdtbmVtb25pY2EnIHtcbiAqICAgICBpbnRlcmZhY2UgVHlwZVJlZ2lzdHJ5IHtcbiAqICAgICAgICdNeVR5cGUnOiBuZXcgKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gTXlUeXBlSW5zdGFuY2U7XG4gKiAgICAgfVxuICogICB9XG4gKlxuICogU2VlIGRvY3MvdHlwZWQtbG9va3VwLm1kIGZvciBib3RoIHBhdGhzIHNpZGUgYnkgc2lkZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUeXBlUmVnaXN0cnkge1xuXHRba2V5OiBzdHJpbmddOiBUeXBlQ29uc3RydWN0b3I8bmV2ZXI+O1xufVxuXG4vKipcbiAqIFR5cGUtc2FmZSBsb29rdXAgZnVuY3Rpb24uIFJlcXVpcmVzIGEgVHlwZVJlZ2lzdHJ5IGF1Z21lbnRhdGlvbiDigJRcbiAqIGhhbmQtd3JpdHRlbiBpbiBhIC5kLnRzIChzbWFsbCBwcm9qZWN0cykgb3IgZ2VuZXJhdGVkIGJ5XG4gKiBAbW5lbW9uaWNhL3RhY3RpY2EgKGF1dG8tc3luY2VkIGZyb20geW91ciBkZWZpbmUoKSBjYWxscykuXG4gKlxuICogQXQgcnVudGltZSB0aGlzIGRlbGVnYXRlcyB0byBsb29rdXAoKS4gVGhlIHR5cGUgc2FmZXR5IGlzXG4gKiBjb21waWxlLXRpbWUgb25seTogVHlwZVNjcmlwdCByZXNvbHZlcyB0aGUga2V5IGFnYWluc3QgdGhlIGF1Z21lbnRlZFxuICogVHlwZVJlZ2lzdHJ5IGFuZCByZXR1cm5zIHRoZSBjb25zdHJ1Y3RvcidzIHR5cGUgc2lnbmF0dXJlLlxuICpcbiAqIFVzYWdlIChvbmNlIFR5cGVSZWdpc3RyeSBpcyBhdWdtZW50ZWQpOlxuICogICBjb25zdCBTb21lVHlwZSA9IGxvb2t1cFR5cGVkKCdTb21lVHlwZScpO1xuICogICBjb25zdCBpbnN0YW5jZSA9IG5ldyBTb21lVHlwZSh7IC4uLiB9KTsgLy8gRnVsbCB0eXBlIHNhZmV0eSFcbiAqXG4gKiBTZWUgZG9jcy90eXBlZC1sb29rdXAubWQgZm9yIGJvdGggYXVnbWVudGF0aW9uIHBhdGhzIHNpZGUgYnkgc2lkZS5cbiAqL1xuZXhwb3J0IGNvbnN0IGxvb2t1cFR5cGVkID0gZnVuY3Rpb24gPFxuXHRjb25zdCBLIGV4dGVuZHMga2V5b2YgVHlwZVJlZ2lzdHJ5XG4+KFxuXHR0aGlzOiB1bmtub3duLFxuXHRUeXBlTmVzdGVkUGF0aDogS1xuKTogVHlwZVJlZ2lzdHJ5W0tdICB7XG5cdGNvbnN0IHR5cGVzID0gY2hlY2tUaGlzKHRoaXMpID8gZGVmYXVsdFR5cGVzIDogdGhpcyB8fCBkZWZhdWx0VHlwZXM7XG5cdGNvbnN0IGxvb2t1cFJlc3VsdCA9ICh0eXBlcyBhcyB7IGxvb2t1cDogKHBhdGg6IHN0cmluZykgPT4gdW5rbm93biB9KVxuXHRcdC5sb29rdXAoVHlwZU5lc3RlZFBhdGggYXMgc3RyaW5nKSBhcyBUeXBlUmVnaXN0cnlbS107XG5cdHJldHVybiBsb29rdXBSZXN1bHQ7XG59O1xuXG5cbmNvbnN0ICRydW4gPSBmdW5jdGlvbiA8RSBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdCwgUyBleHRlbmRzIFByb3RvPEUsIFQ+Pihcblx0ZW50aXR5OiBFLFxuXHRDdG9yOiBJREVGPFQ+LFxuXHRhcmdzOiB1bmtub3duW11cbik6IHtcblx0XHRba2V5IGluIGtleW9mIFNdOiBTW2tleV1cblx0fSB7XG5cblx0Ly8gZGVidWdnZXI7XG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgLSBleHRyYWN0aW5nIFR5cGVOYW1lIGZyb20gZnVuY3Rpb25cblx0Y29uc3QgeyBUeXBlTmFtZSB9ID0gQ3Rvcjtcblx0Y29uc3QgQ3N0ciA9IHByZXBhcmVTdWJ0eXBlRm9yQ29uc3RydWN0aW9uKFxuXHRcdFR5cGVOYW1lLFxuXHRcdGVudGl0eVxuXHQpIGFzIHVua25vd24gYXMgeyBuZXcoLi4uYXJzOiB1bmtub3duW10pOiB1bmtub3duIH07XG5cdC8vIFRPRE86IGNoZWNrIGxpbmVzIGJlbG93IGFuZCBpZiBDb25zdHJ1Y3RvciBpcyBub3QgbW5lbW9uaXplZCAuLi5cblx0aWYgKENzdHIgPT09IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IEVycm9yQ3RvciA9IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOIGFzIHVua25vd24gYXMgbmV3IChtc2c6IHN0cmluZykgPT4gRXJyb3I7XG5cdFx0dGhyb3cgbmV3IEVycm9yQ3RvcihgWyAke1R5cGVOYW1lfSBdIGlzIG5vdCBkZWZpbmVkIGFzIGEgVHlwZSBDb25zdHJ1Y3RvciBvbiB1c2VkIGluc3RhbmNlYCk7XG5cdH1cblx0Y29uc3QgcnVuUmVzdWx0ID0gbmV3IENzdHIoLi4uYXJncyk7XG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgLSByZXR1cm5pbmcgcmVzdWx0IGFzIG1lcmdlZCBwcm90byB0eXBlXG5cdHJldHVybiBydW5SZXN1bHQ7XG59O1xuXG4vLyBUT0RPOiBhcHBseSBpbnN0YW5jZSAudG8gdHlwZSAud2l0aCBhcmd1bWVudHNcbmV4cG9ydCBjb25zdCBhcHBseSA9IGZ1bmN0aW9uIDxFIGV4dGVuZHMgb2JqZWN0LCBUIGV4dGVuZHMgb2JqZWN0LCBTIGV4dGVuZHMgUHJvdG88RSwgVD4+KFxuXHRlbnRpdHk6IEUsXG5cdEN0b3I6IElERUY8VD4sXG5cdGFyZ3M6IHVua25vd25bXSA9IFtdXG4pOiBJbnN0YW5jZVJlc3VsdDxNZXJnZTxFLCBUPj4ge1xuXHRjb25zdCBydW5SZXN1bHQgPSAkcnVuPEUsIFQsIFM+KFxuXHRcdGVudGl0eSxcblx0XHRDdG9yLFxuXHRcdGFyZ3Ncblx0KTtcblx0Y29uc3QgcmVzdWx0ID0gcnVuUmVzdWx0IGFzIHVua25vd24gYXMgSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8RSwgVD4+O1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gVE9ETzogY2FsbCB0eXBlIC5ieSBpbnN0YW5jZSAud2l0aCBhcmd1bWVudHNcbmV4cG9ydCBjb25zdCBjYWxsID0gZnVuY3Rpb24gPEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3QsIFMgZXh0ZW5kcyBQcm90bzxFLCBUPj4oXG5cdGVudGl0eTogRSxcblx0Q3RvcjogSURFRjxUPixcblx0Li4uYXJnczogdW5rbm93bltdXG4pOiBJbnN0YW5jZVJlc3VsdDxNZXJnZTxFLCBUPj4ge1xuXHRjb25zdCBydW5SZXN1bHQgPSAkcnVuPEUsIFQsIFM+KFxuXHRcdGVudGl0eSxcblx0XHRDdG9yLFxuXHRcdGFyZ3Ncblx0KTtcblx0Y29uc3QgcmVzdWx0ID0gcnVuUmVzdWx0IGFzIHVua25vd24gYXMgSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8RSwgVD4+O1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gVE9ETzogYmluZCB0eXBlIC53aXRoIGluc3RhbmNlIOKGkiAoLi4uYXJncylcbmV4cG9ydCBjb25zdCBiaW5kID0gZnVuY3Rpb24gPEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3QsIFMgZXh0ZW5kcyBQcm90bzxFLCBUPj4oXG5cdGVudGl0eTogRSxcblx0Q3RvcjogSURFRjxUPlxuKTogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8RSwgVD4+IHtcblx0Y29uc3QgcmVzdWx0ID0gKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuXHRcdGNvbnN0IHJ1blJlc3VsdCA9ICRydW48RSwgVCwgUz4oXG5cdFx0XHRlbnRpdHksXG5cdFx0XHRDdG9yLFxuXHRcdFx0YXJnc1xuXHRcdCk7XG5cdFx0Y29uc3QgdHlwZWRSZXN1bHQgPSBydW5SZXN1bHQgYXMgdW5rbm93biBhcyBJbnN0YW5jZVJlc3VsdDxNZXJnZTxFLCBUPj47XG5cdFx0cmV0dXJuIHR5cGVkUmVzdWx0O1xuXHR9O1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlY29yYXRlID0gZnVuY3Rpb24gPFxuXHRUIGV4dGVuZHMgQ29uc3RydWN0b3I8b2JqZWN0PiB8IGNvbnN0cnVjdG9yT3B0aW9ucyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuPihcblx0dGFyZ2V0PzogVCxcblx0Y29uZmlnPzogY29uc3RydWN0b3JPcHRpb25zXG4pOiA8VSBleHRlbmRzIENvbnN0cnVjdG9yPG9iamVjdD4+KGNzdHI6IFUpID0+IERlY29yYXRlZENsYXNzPFU+IHtcblx0Y29uc3Qgb3B0cyA9IChjb25maWcgPT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgdGFyZ2V0ID09PSAnb2JqZWN0JyAmJiAhKHRhcmdldCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSlcblx0XHQ/IHRhcmdldCBhcyBjb25zdHJ1Y3Rvck9wdGlvbnNcblx0XHQ6IGNvbmZpZztcblxuXHRjb25zdCBwYXJlbnRUeXBlID0gKHRhcmdldCBpbnN0YW5jZW9mIEZ1bmN0aW9uKVxuXHRcdD8gdGFyZ2V0IGFzIENvbnN0cnVjdG9yPG9iamVjdD5cblx0XHQ6IHVuZGVmaW5lZDtcblxuXHRjb25zdCBkZWNvcmF0b3IgPSBmdW5jdGlvbiA8VSBleHRlbmRzIENvbnN0cnVjdG9yPG9iamVjdD4+KGNzdHI6IFUpOiBEZWNvcmF0ZWRDbGFzczxVPiB7XG5cdFx0Y29uc3QgeyBuYW1lIH0gPSBjc3RyO1xuXHRcdGlmIChwYXJlbnRUeXBlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGRlY29yYXRvclJlc3VsdCA9IGRlZmluZShcblx0XHRcdFx0bmFtZSxcblx0XHRcdFx0Y3N0ciBhcyBJREVGPG9iamVjdD4sXG5cdFx0XHRcdG9wdHNcblx0XHRcdCkgYXMgdW5rbm93biBhcyBEZWNvcmF0ZWRDbGFzczxVPjtcblx0XHRcdHJldHVybiBkZWNvcmF0b3JSZXN1bHQ7XG5cdFx0fVxuXHRcdGNvbnN0IHBhcmVudCA9IHBhcmVudFR5cGUgYXMgdW5rbm93biBhcyB7XG5cdFx0XHRkZWZpbmU6IFR5cGVBYnNvcmJlcjtcblx0XHR9O1xuXHRcdGNvbnN0IGRlZmluZVJlc3VsdCA9IHBhcmVudC5kZWZpbmUoXG5cdFx0XHRuYW1lLFxuXHRcdFx0Y3N0ciBhcyBJREVGPG9iamVjdD4sXG5cdFx0XHRvcHRzXG5cdFx0KSBhcyB1bmtub3duIGFzIERlY29yYXRlZENsYXNzPFU+O1xuXHRcdHJldHVybiBkZWZpbmVSZXN1bHQ7XG5cdH07XG5cdHJldHVybiBkZWNvcmF0b3I7XG59O1xuXG5cbmV4cG9ydCBjb25zdCByZWdpc3Rlckhvb2sgPSBmdW5jdGlvbiA8VCBleHRlbmRzIENvbnN0cnVjdG9yPFQ+Pihcblx0Q3RvcjogRGVjb3JhdGVkQ2xhc3M8VD4sXG5cdGhvb2tUeXBlOiBob29rc1R5cGVzLFxuXHRjYjogaG9va1xuKTogdm9pZCB7XG5cdEN0b3IucmVnaXN0ZXJIb29rKFxuXHRcdGhvb2tUeXBlLFxuXHRcdGNiXG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgbW5lbW9uaWNhID0gT2JqZWN0LmVudHJpZXMoe1xuXG5cdGRlZmluZSxcblx0bG9va3VwLFxuXHRhcHBseSxcblx0Y2FsbCxcblx0YmluZCxcblx0ZGVjb3JhdGUsXG5cdHJlZ2lzdGVySG9vayxcblxuXHQuLi5kZXNjcmlwdG9ycyxcblxuXHQuLi5lcnJvcnNBcGksXG5cdC4uLmNvbnN0YW50cyxcblxufSkucmVkdWNlKFxuXHQoYWNjOiB7IFtpbmRleDogc3RyaW5nXTogdW5rbm93biB9LCBlbnRyeTogW3N0cmluZywgdW5rbm93bl0pID0+IHtcblx0XHRjb25zdCBbIG5hbWUsIGNvZGUgXSA9IGVudHJ5O1xuXHRcdG9kcChcblx0XHRcdGFjYyxcblx0XHRcdG5hbWUsXG5cdFx0XHR7XG5cdFx0XHRcdGdldCgpIHtcblx0XHRcdFx0XHRyZXR1cm4gY29kZTtcblx0XHRcdFx0fSxcblx0XHRcdFx0ZW51bWVyYWJsZSA6IHRydWVcblx0XHRcdH1cblx0XHQpO1xuXHRcdHJldHVybiBhY2M7XG5cdH0sXG5cdHt9XG4pIGFzIE1uZW1vbmljYU1vZHVsZTtcblxuaW1wb3J0ICogYXMgYXBpIGZyb20gJy4vYXBpJztcblxuZXhwb3J0IGNvbnN0IHtcblx0ZGVmaW5lOiBfZGVmaW5lLFxuXHRsb29rdXA6IF9sb29rdXBcbn0gPSBhcGkudHlwZXM7XG5cbmV4cG9ydCBjb25zdCB7XG5cblx0U3ltYm9sUGFyZW50VHlwZSxcblx0U3ltYm9sQ29uc3RydWN0b3JOYW1lLFxuXHRTeW1ib2xEZWZhdWx0VHlwZXNDb2xsZWN0aW9uLFxuXHRTeW1ib2xDb25maWcsXG5cdE1ORU1PTklDQSxcblx0TU5FTU9TWU5FLFxuXHRUWVBFX1RJVExFX1BSRUZJWCxcblx0RXJyb3JNZXNzYWdlcyxcblxufSA9IG1uZW1vbmljYTtcblxuLy8gRXhwb3J0IGNyZWF0ZVR5cGVzQ29sbGVjdGlvbiB3aXRoIHByb3BlciB0eXBlXG5leHBvcnQgY29uc3QgY3JlYXRlVHlwZXNDb2xsZWN0aW9uOiBDcmVhdGVUeXBlc0NvbGxlY3Rpb25GdW5jdGlvbiA9XG5cdG1uZW1vbmljYS5jcmVhdGVUeXBlc0NvbGxlY3Rpb24gYXMgQ3JlYXRlVHlwZXNDb2xsZWN0aW9uRnVuY3Rpb247XG5cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb2xsZWN0aW9uID0gKGRlZmF1bHRUeXBlcyBhcyB7IHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBvYmplY3Q+IH0pLnN1YnR5cGVzO1xuZXhwb3J0IGNvbnN0IGVycm9ycyA9IGRlc2NyaXB0b3JzLkVycm9yc1R5cGVzO1xuXG5leHBvcnQgeyB1dGlscyB9IGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0IHsgZGVmaW5lU3RhY2tDbGVhbmVyIH0gZnJvbSAnLi91dGlscyc7XG4vKiBlc2xpbnQtZW5hYmxlIHNwYWNlLWJlZm9yZS1mdW5jdGlvbi1wYXJlbiAqL1xuIl19
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsWUFBWSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBK0diLHdCQVFDO0FBcEdELDhEQUEyQztBQUUxQyxlQUFPLEdBRUosZUFBVSxVQURiLDZCQUFxQixHQUNsQixlQUFVLHVCQUFDO0FBa0NmLDJDQUUyQjtBQUQxQixpR0FBQSxRQUFRLE9BQUE7QUFBRSxpR0FBQSxRQUFRLE9BQUE7QUFHbkIsMkNBQXdDO0FBQ3hDLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxxQkFBUyxDQUFDO0FBRTFCLHdEQUEwQztBQUMxQywrQ0FBNEM7QUFFNUMsTUFBTSxFQUFFLDBCQUEwQixFQUFFLEdBQUcseUJBQVcsQ0FBQyxXQUFXLENBQUM7QUFFL0Qsc0VBQStDO0FBQy9DLE1BQU0sRUFBRSw2QkFBNkIsRUFBRSxHQUFHLG1CQUFVLENBQUM7QUFFdEMsb0JBQVksR0FBTSx5QkFBVyxjQUFDO0FBRTdDLFNBQVMsU0FBUyxDQUFDLE9BQW9EO0lBQ3RFLE1BQU0sTUFBTSxHQUFHLE9BQU8sS0FBSyxpQkFBUyxJQUFJLE9BQU8sS0FBSyxPQUFPLENBQUM7SUFDNUQsT0FBTyxNQUFNLENBQUM7QUFDZixDQUFDO0FBSVksUUFBQSxNQUFNLEdBQUcsVUFTckIsUUFBc0QsRUFFdEQsZ0JBQWtGLEVBQ2xGLE1BQTJCO0lBRTNCLE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsb0JBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLG9CQUFZLENBQUM7SUFFcEUsTUFBTSxZQUFZLEdBQUksS0FBa0M7U0FDdEQsTUFBTSxDQUNOLFFBQWtCLEVBQ2xCLGdCQUEyQixFQUMzQixNQUFNLENBQ1UsQ0FBQztJQUNuQixPQUFPLFlBQVksQ0FBQztBQUNyQixDQUFpQixDQUFDO0FBT2xCLFNBQWdCLE1BQU0sQ0FFckIsY0FBc0I7SUFFdEIsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxvQkFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksb0JBQVksQ0FBQztJQUVwRSxNQUFNLFlBQVksR0FBSSxLQUE2RCxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMzRyxPQUFPLFlBQVksQ0FBQztBQUNyQixDQUFDO0FBR0QsTUFBTSxJQUFJLEdBQUcsVUFDWixNQUFTLEVBQ1QsSUFBYSxFQUNiLElBQWU7SUFPZixNQUFNLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQzFCLE1BQU0sSUFBSSxHQUFHLDZCQUE2QixDQUN6QyxRQUFRLEVBQ1IsTUFBTSxDQUM0QyxDQUFDO0lBRXBELElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sU0FBUyxHQUFHLDBCQUFtRSxDQUFDO1FBQ3RGLE1BQU0sSUFBSSxTQUFTLENBQUMsS0FBSyxRQUFRLDBEQUEwRCxDQUFDLENBQUM7SUFDOUYsQ0FBQztJQUNELE1BQU0sU0FBUyxHQUFHLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFFcEMsT0FBTyxTQUFTLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBR0ssTUFBTSxLQUFLLEdBQUcsVUFDcEIsTUFBUyxFQUNULElBQWEsRUFDYixPQUFrQixFQUFFO0lBRXBCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FDckIsTUFBTSxFQUNOLElBQUksRUFDSixJQUFJLENBQ0osQ0FBQztJQUNGLE1BQU0sTUFBTSxHQUFHLFNBQW1ELENBQUM7SUFDbkUsT0FBTyxNQUFNLENBQUM7QUFDZixDQUFDLENBQUM7QUFaVyxRQUFBLEtBQUssU0FZaEI7QUFHSyxNQUFNLElBQUksR0FBRyxVQUNuQixNQUFTLEVBQ1QsSUFBYSxFQUNiLEdBQUcsSUFBZTtJQUVsQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQ3JCLE1BQU0sRUFDTixJQUFJLEVBQ0osSUFBSSxDQUNKLENBQUM7SUFDRixNQUFNLE1BQU0sR0FBRyxTQUFtRCxDQUFDO0lBQ25FLE9BQU8sTUFBTSxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBWlcsUUFBQSxJQUFJLFFBWWY7QUFHSyxNQUFNLElBQUksR0FBRyxVQUNuQixNQUFTLEVBQ1QsSUFBYTtJQUViLE1BQU0sTUFBTSxHQUFHLENBQUMsR0FBRyxJQUFlLEVBQUUsRUFBRTtRQUNyQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQ3JCLE1BQU0sRUFDTixJQUFJLEVBQ0osSUFBSSxDQUNKLENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxTQUFtRCxDQUFDO1FBQ3hFLE9BQU8sV0FBVyxDQUFDO0lBQ3BCLENBQUMsQ0FBQztJQUNGLE9BQU8sTUFBTSxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBZFcsUUFBQSxJQUFJLFFBY2Y7QUFFSyxNQUFNLFFBQVEsR0FBRyxVQUd2QixNQUFVLEVBQ1YsTUFBMkI7SUFFM0IsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxZQUFZLFFBQVEsQ0FBQyxDQUFDO1FBQ2pHLENBQUMsQ0FBQyxNQUE0QjtRQUM5QixDQUFDLENBQUMsTUFBTSxDQUFDO0lBRVYsTUFBTSxVQUFVLEdBQUcsQ0FBQyxNQUFNLFlBQVksUUFBUSxDQUFDO1FBQzlDLENBQUMsQ0FBQyxNQUE2QjtRQUMvQixDQUFDLENBQUMsU0FBUyxDQUFDO0lBRWIsTUFBTSxTQUFTLEdBQUcsVUFBeUMsSUFBTztRQUNqRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlCLE1BQU0sZUFBZSxHQUFHLElBQUEsY0FBTSxFQUM3QixJQUFJLEVBQ0osSUFBb0IsRUFDcEIsSUFBSSxDQUM0QixDQUFDO1lBQ2xDLE9BQU8sZUFBZSxDQUFDO1FBQ3hCLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxVQUVkLENBQUM7UUFDRixNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUNqQyxJQUFJLEVBQ0osSUFBb0IsRUFDcEIsSUFBSSxDQUM0QixDQUFDO1FBQ2xDLE9BQU8sWUFBWSxDQUFDO0lBQ3JCLENBQUMsQ0FBQztJQUNGLE9BQU8sU0FBUyxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQW5DVyxRQUFBLFFBQVEsWUFtQ25CO0FBR0ssTUFBTSxZQUFZLEdBQUcsVUFDM0IsSUFBdUIsRUFDdkIsUUFBb0IsRUFDcEIsRUFBUTtJQUVSLElBQUksQ0FBQyxZQUFZLENBQ2hCLFFBQVEsRUFDUixFQUFFLENBQ0YsQ0FBQztBQUNILENBQUMsQ0FBQztBQVRXLFFBQUEsWUFBWSxnQkFTdkI7QUFFVyxRQUFBLFNBQVMsR0FBRyxNQUFNLENBQUMsT0FBTyw2Q0FFdEMsTUFBTSxFQUFOLGNBQU07SUFDTixNQUFNO0lBQ04sS0FBSyxFQUFMLGFBQUs7SUFDTCxJQUFJLEVBQUosWUFBSTtJQUNKLElBQUksRUFBSixZQUFJO0lBQ0osUUFBUSxFQUFSLGdCQUFRO0lBQ1IsWUFBWSxFQUFaLG9CQUFZLElBRVQseUJBQVcsR0FFWCxTQUFTLEdBQ1QscUJBQVMsRUFFWCxDQUFDLE1BQU0sQ0FDUixDQUFDLEdBQWlDLEVBQUUsS0FBd0IsRUFBRSxFQUFFO0lBQy9ELE1BQU0sQ0FBRSxJQUFJLEVBQUUsSUFBSSxDQUFFLEdBQUcsS0FBSyxDQUFDO0lBQzdCLEdBQUcsQ0FDRixHQUFHLEVBQ0gsSUFBSSxFQUNKO1FBQ0MsR0FBRztZQUNGLE9BQU8sSUFBSSxDQUFDO1FBQ2IsQ0FBQztRQUNELFVBQVUsRUFBRyxJQUFJO0tBQ2pCLENBQ0QsQ0FBQztJQUNGLE9BQU8sR0FBRyxDQUFDO0FBQ1osQ0FBQyxFQUNELEVBQUUsQ0FDaUIsQ0FBQztBQUVyQiwyQ0FBNkI7QUFFaEIsS0FHVCxHQUFHLENBQUMsS0FBSyxFQUZKLGVBQU8sY0FDUCxlQUFPLGFBQ0Y7QUFJYix3QkFBZ0IsR0FTYixpQkFBUyxtQkFSWiw2QkFBcUIsR0FRbEIsaUJBQVMsd0JBUFosb0NBQTRCLEdBT3pCLGlCQUFTLCtCQU5aLG9CQUFZLEdBTVQsaUJBQVMsZUFMWixpQkFBUyxHQUtOLGlCQUFTLFlBSlosaUJBQVMsR0FJTixpQkFBUyxZQUhaLHlCQUFpQixHQUdkLGlCQUFTLG9CQUZaLHFCQUFhLEdBRVYsaUJBQVMsZUFBQztBQUdELFFBQUEscUJBQXFCLEdBQ2pDLGlCQUFTLENBQUMscUJBQXNELENBQUM7QUFHckQsUUFBQSxpQkFBaUIsR0FBSSxvQkFBa0QsQ0FBQyxRQUFRLENBQUM7QUFDakYsUUFBQSxNQUFNLEdBQUcseUJBQVcsQ0FBQyxXQUFXLENBQUM7QUFFOUMsaUNBQWdDO0FBQXZCLDhGQUFBLEtBQUssT0FBQTtBQUNkLGlDQUE2QztBQUFwQywyR0FBQSxrQkFBa0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHNwYWNlLWJlZm9yZS1mdW5jdGlvbi1wYXJlbiAqL1xuJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdHlwZSB7XG5cdENyZWF0ZVR5cGVzQ29sbGVjdGlvbkZ1bmN0aW9uLFxuXHRJREVGLFxuXHRob29rLFxuXHRob29rc1R5cGVzLFxuXHRjb25zdHJ1Y3Rvck9wdGlvbnMsXG5cdFByb3RvLFxuXHRJRGVmaW5pdG9ySW5zdGFuY2UsXG5cdENvbnN0cnVjdG9yLFxuXHREZWNvcmF0ZWRDbGFzcyxcblx0VHlwZUNsYXNzLFxuXHRUeXBlQWJzb3JiZXIsXG5cdE1uZW1vbmljYU1vZHVsZSxcblx0SW5zdGFuY2VSZXN1bHQsXG5cdE1lcmdlXG59IGZyb20gJy4vdHlwZXMnO1xuXG5pbXBvcnQgVHlwZXNVdGlscyBmcm9tICcuL2FwaS91dGlscy9pbmRleCc7XG5leHBvcnQgY29uc3Qge1xuXHRpc0NsYXNzLFxuXHRmaW5kU3ViVHlwZUZyb21QYXJlbnQsXG59ID0gVHlwZXNVdGlscztcblxuZXhwb3J0IHR5cGUge1xuXHRJREVGLCBUeXBlQ29uc3RydWN0b3IsIFR5cGVDb25zdHJ1Y3RvckJhc2UsXG5cdEluc3RhbmNlT2ZUeXBlUmVnaXN0cnksIExpdGVyYWxLZXlzT2YsIFBhcmVudFBhdGgsIFBhdGhPZkluc3RhbmNlLFxuXHRBbGxQYXJlbnRQcmVmaXhlcywgUGFyZW50UGF0aE9mSW5zdGFuY2UsXG5cdF9JbnRlcm5hbF9UQ18sIFByb3RvLCBQcm90b0ZsYXQsXG5cdGhvb2tzT3B0cywgaG9vaywgaG9va3NUeXBlcywgVHlwZXNDb2xsZWN0aW9uXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFR5cGUtc2FmZSByZWdpc3RyeSBmb3IgbW5lbW9uaWNhIHR5cGVzLlxuICpcbiAqIFRoaXMgaW50ZXJmYWNlIHN0YXJ0cyBlbXB0eS4gQXBwbGljYXRpb24gY29kZSBvciBgQG1uZW1vbmljYS90YWN0aWNhYFxuICogYXVnbWVudHMgaXQgdGhyb3VnaCBUeXBlU2NyaXB0IG1vZHVsZSBkZWNsYXJhdGlvbiBtZXJnaW5nOlxuICpcbiAqIGBgYHRzXG4gKiBkZWNsYXJlIG1vZHVsZSAnbW5lbW9uaWNhJyB7XG4gKiAgIGludGVyZmFjZSBUeXBlUmVnaXN0cnkge1xuICogICAgICdNeVR5cGUnOiBUeXBlQ29uc3RydWN0b3I8TXlUeXBlSW5zdGFuY2U+O1xuICogICAgICdNeVR5cGUuU3ViVHlwZSc6IFR5cGVDb25zdHJ1Y3RvcjxTdWJUeXBlSW5zdGFuY2U+O1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBPbmNlIGF1Z21lbnRlZCwgYGxvb2t1cCgnTXlUeXBlJylgIGFuZCBgdXRpbHMucGFyZW50KGluc3RhbmNlLCAnTXlUeXBlJylgXG4gKiByZXNvbHZlIGtleXMgYWdhaW5zdCB0aGlzIHJlZ2lzdHJ5LiBVbmF1Z21lbnRlZCBrZXlzIGZhbGwgYmFjayB0byB0aGUgYnJvYWRcbiAqIGBUeXBlQ2xhc3MgfCB1bmRlZmluZWRgIHJldHVybiB0eXBlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVSZWdpc3RyeSB7XG5cdC8vIEludGVudGlvbmFsbHkgZW1wdHkuIEF1Z21lbnQgdGhpcyBpbnRlcmZhY2UgdmlhIGRlY2xhcmF0aW9uIG1lcmdpbmdcblx0Ly8gKGhhbmQtd3JpdHRlbiBvciBnZW5lcmF0ZWQgYnkgQG1uZW1vbmljYS90YWN0aWNhKSB0byBlbmFibGUgdHlwZWRcblx0Ly8gdXRpbGl0aWVzIGxpa2UgbG9va3VwKCkgYW5kIHBhcmVudCgpLlxufVxuZXhwb3J0IHtcblx0Z2V0UHJvcHMsIHNldFByb3BzIFxufSBmcm9tICcuL2FwaS90eXBlcy9Qcm9wcyc7XG5cbmltcG9ydCB7IGNvbnN0YW50cyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmNvbnN0IHsgb2RwIH0gPSBjb25zdGFudHM7XG5cbmltcG9ydCAqIGFzIGVycm9yc0FwaSBmcm9tICcuL2FwaS9lcnJvcnMnO1xuaW1wb3J0IHsgZGVzY3JpcHRvcnMgfSBmcm9tICcuL2Rlc2NyaXB0b3JzJztcblxuY29uc3QgeyBXUk9OR19NT0RJRklDQVRJT05fUEFUVEVSTiB9ID0gZGVzY3JpcHRvcnMuRXJyb3JzVHlwZXM7XG5cbmltcG9ydCBtbmVtb3N5bmVzIGZyb20gJy4vYXBpL3R5cGVzL01uZW1vc3luZSc7XG5jb25zdCB7IHByZXBhcmVTdWJ0eXBlRm9yQ29uc3RydWN0aW9uIH0gPSBtbmVtb3N5bmVzO1xuXG5leHBvcnQgY29uc3QgeyBkZWZhdWx0VHlwZXMsIH0gPSBkZXNjcmlwdG9ycztcblxuZnVuY3Rpb24gY2hlY2tUaGlzKHBvaW50ZXI6IHR5cGVvZiBtbmVtb25pY2EgfCB0eXBlb2YgZXhwb3J0cyB8IHVua25vd24pOiBib29sZWFuIHtcblx0Y29uc3QgcmVzdWx0ID0gcG9pbnRlciA9PT0gbW5lbW9uaWNhIHx8IHBvaW50ZXIgPT09IGV4cG9ydHM7XG5cdHJldHVybiByZXN1bHQ7XG59XG5cblxuLy8gRGVmaW5lIGZ1bmN0aW9uIHVzaW5nIFR5cGVBYnNvcmJlciBpbnRlcmZhY2Ugd2l0aCBwcm9wZXIgdHlwZSBjYXN0aW5nXG5leHBvcnQgY29uc3QgZGVmaW5lID0gZnVuY3Rpb24gPFxuXHRUIGV4dGVuZHMgb2JqZWN0LFxuXHRQIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0LFxuXHROIGV4dGVuZHMgUHJvdG88UCwgVD4gPSBQcm90bzxQLCBUPixcblxuXHQvLyBoZXJlIElEZWZpbml0b3JJbnN0YW5jZSBpcyBhIENPTlNUUlVDVE9SICEhIVxuXHRSIGV4dGVuZHMgSURlZmluaXRvckluc3RhbmNlPE4+ID0gSURlZmluaXRvckluc3RhbmNlPE4+XG4+KFxuXHR0aGlzOiB1bmtub3duLFxuXHRUeXBlTmFtZT86IHN0cmluZyB8IENhbGxhYmxlRnVuY3Rpb24gfCBOZXdhYmxlRnVuY3Rpb24sXG5cdC8vIEFsbG93IGJvdGggc3RyaWN0IElERUYgYW5kIG1vcmUgZmxleGlibGUgZnVuY3Rpb24gc2lnbmF0dXJlc1xuXHRjb25zdHJ1Y3RIYW5kbGVyPzogSURFRjxUPiB8IENhbGxhYmxlRnVuY3Rpb24gfCBOZXdhYmxlRnVuY3Rpb24gfCBvYmplY3QgfCBib29sZWFuLFxuXHRjb25maWc/OiBjb25zdHJ1Y3Rvck9wdGlvbnMsXG4pOiBSIHtcblx0Y29uc3QgdHlwZXMgPSBjaGVja1RoaXModGhpcykgPyBkZWZhdWx0VHlwZXMgOiB0aGlzIHx8IGRlZmF1bHRUeXBlcztcblx0Ly8gVHlwZSBhc3NlcnRpb24gbmVlZGVkIGJlY2F1c2UgVHlwZXNDb2xsZWN0aW9uUHJveHkgaXMgYSBQcm94eVxuXHRjb25zdCBkZWZpbmVSZXN1bHQgPSAodHlwZXMgYXMgeyBkZWZpbmU6IFR5cGVBYnNvcmJlciB9KVxuXHRcdC5kZWZpbmUoXG5cdFx0XHRUeXBlTmFtZSBhcyBzdHJpbmcsXG5cdFx0XHRjb25zdHJ1Y3RIYW5kbGVyIGFzIElERUY8VD4sXG5cdFx0XHRjb25maWdcblx0XHQpIGFzIHVua25vd24gYXMgUjtcblx0cmV0dXJuIGRlZmluZVJlc3VsdDtcbn0gYXMgVHlwZUFic29yYmVyO1xuXG5leHBvcnQgZnVuY3Rpb24gbG9va3VwPGNvbnN0IEsgZXh0ZW5kcyBrZXlvZiBUeXBlUmVnaXN0cnk+KFxuXHR0aGlzOiB1bmtub3duLFxuXHRUeXBlTmVzdGVkUGF0aDogS1xuKTogVHlwZVJlZ2lzdHJ5W0tdIHwgdW5kZWZpbmVkO1xuZXhwb3J0IGZ1bmN0aW9uIGxvb2t1cCh0aGlzOiB1bmtub3duLCBUeXBlTmVzdGVkUGF0aDogc3RyaW5nKTogVHlwZUNsYXNzIHwgdW5kZWZpbmVkO1xuZXhwb3J0IGZ1bmN0aW9uIGxvb2t1cChcblx0dGhpczogdW5rbm93bixcblx0VHlwZU5lc3RlZFBhdGg6IHN0cmluZ1xuKTogVHlwZUNsYXNzIHwgdW5kZWZpbmVkIHtcblx0Y29uc3QgdHlwZXMgPSBjaGVja1RoaXModGhpcykgPyBkZWZhdWx0VHlwZXMgOiB0aGlzIHx8IGRlZmF1bHRUeXBlcztcblx0Ly8gVHlwZSBhc3NlcnRpb24gbmVlZGVkIGJlY2F1c2UgVHlwZXNDb2xsZWN0aW9uUHJveHkgaXMgYSBQcm94eVxuXHRjb25zdCBsb29rdXBSZXN1bHQgPSAodHlwZXMgYXMgeyBsb29rdXA6IChwYXRoOiBzdHJpbmcpID0+IFR5cGVDbGFzcyB8IHVuZGVmaW5lZCB9KS5sb29rdXAoVHlwZU5lc3RlZFBhdGgpO1xuXHRyZXR1cm4gbG9va3VwUmVzdWx0O1xufVxuXG5cbmNvbnN0ICRydW4gPSBmdW5jdGlvbiA8RSBleHRlbmRzIG9iamVjdCwgVCBleHRlbmRzIG9iamVjdCwgUyBleHRlbmRzIFByb3RvPEUsIFQ+Pihcblx0ZW50aXR5OiBFLFxuXHRDdG9yOiBJREVGPFQ+LFxuXHRhcmdzOiB1bmtub3duW11cbik6IHtcblx0XHRba2V5IGluIGtleW9mIFNdOiBTW2tleV1cblx0fSB7XG5cblx0Ly8gZGVidWdnZXI7XG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgLSBleHRyYWN0aW5nIFR5cGVOYW1lIGZyb20gZnVuY3Rpb25cblx0Y29uc3QgeyBUeXBlTmFtZSB9ID0gQ3Rvcjtcblx0Y29uc3QgQ3N0ciA9IHByZXBhcmVTdWJ0eXBlRm9yQ29uc3RydWN0aW9uKFxuXHRcdFR5cGVOYW1lLFxuXHRcdGVudGl0eVxuXHQpIGFzIHVua25vd24gYXMgeyBuZXcoLi4uYXJzOiB1bmtub3duW10pOiB1bmtub3duIH07XG5cdC8vIFRPRE86IGNoZWNrIGxpbmVzIGJlbG93IGFuZCBpZiBDb25zdHJ1Y3RvciBpcyBub3QgbW5lbW9uaXplZCAuLi5cblx0aWYgKENzdHIgPT09IHVuZGVmaW5lZCkge1xuXHRcdGNvbnN0IEVycm9yQ3RvciA9IFdST05HX01PRElGSUNBVElPTl9QQVRURVJOIGFzIHVua25vd24gYXMgbmV3IChtc2c6IHN0cmluZykgPT4gRXJyb3I7XG5cdFx0dGhyb3cgbmV3IEVycm9yQ3RvcihgWyAke1R5cGVOYW1lfSBdIGlzIG5vdCBkZWZpbmVkIGFzIGEgVHlwZSBDb25zdHJ1Y3RvciBvbiB1c2VkIGluc3RhbmNlYCk7XG5cdH1cblx0Y29uc3QgcnVuUmVzdWx0ID0gbmV3IENzdHIoLi4uYXJncyk7XG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgLSByZXR1cm5pbmcgcmVzdWx0IGFzIG1lcmdlZCBwcm90byB0eXBlXG5cdHJldHVybiBydW5SZXN1bHQ7XG59O1xuXG4vLyBUT0RPOiBhcHBseSBpbnN0YW5jZSAudG8gdHlwZSAud2l0aCBhcmd1bWVudHNcbmV4cG9ydCBjb25zdCBhcHBseSA9IGZ1bmN0aW9uIDxFIGV4dGVuZHMgb2JqZWN0LCBUIGV4dGVuZHMgb2JqZWN0LCBTIGV4dGVuZHMgUHJvdG88RSwgVD4+KFxuXHRlbnRpdHk6IEUsXG5cdEN0b3I6IElERUY8VD4sXG5cdGFyZ3M6IHVua25vd25bXSA9IFtdXG4pOiBJbnN0YW5jZVJlc3VsdDxNZXJnZTxFLCBUPj4ge1xuXHRjb25zdCBydW5SZXN1bHQgPSAkcnVuPEUsIFQsIFM+KFxuXHRcdGVudGl0eSxcblx0XHRDdG9yLFxuXHRcdGFyZ3Ncblx0KTtcblx0Y29uc3QgcmVzdWx0ID0gcnVuUmVzdWx0IGFzIHVua25vd24gYXMgSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8RSwgVD4+O1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gVE9ETzogY2FsbCB0eXBlIC5ieSBpbnN0YW5jZSAud2l0aCBhcmd1bWVudHNcbmV4cG9ydCBjb25zdCBjYWxsID0gZnVuY3Rpb24gPEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3QsIFMgZXh0ZW5kcyBQcm90bzxFLCBUPj4oXG5cdGVudGl0eTogRSxcblx0Q3RvcjogSURFRjxUPixcblx0Li4uYXJnczogdW5rbm93bltdXG4pOiBJbnN0YW5jZVJlc3VsdDxNZXJnZTxFLCBUPj4ge1xuXHRjb25zdCBydW5SZXN1bHQgPSAkcnVuPEUsIFQsIFM+KFxuXHRcdGVudGl0eSxcblx0XHRDdG9yLFxuXHRcdGFyZ3Ncblx0KTtcblx0Y29uc3QgcmVzdWx0ID0gcnVuUmVzdWx0IGFzIHVua25vd24gYXMgSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8RSwgVD4+O1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuLy8gVE9ETzogYmluZCB0eXBlIC53aXRoIGluc3RhbmNlIOKGkiAoLi4uYXJncylcbmV4cG9ydCBjb25zdCBiaW5kID0gZnVuY3Rpb24gPEUgZXh0ZW5kcyBvYmplY3QsIFQgZXh0ZW5kcyBvYmplY3QsIFMgZXh0ZW5kcyBQcm90bzxFLCBUPj4oXG5cdGVudGl0eTogRSxcblx0Q3RvcjogSURFRjxUPlxuKTogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gSW5zdGFuY2VSZXN1bHQ8TWVyZ2U8RSwgVD4+IHtcblx0Y29uc3QgcmVzdWx0ID0gKC4uLmFyZ3M6IHVua25vd25bXSkgPT4ge1xuXHRcdGNvbnN0IHJ1blJlc3VsdCA9ICRydW48RSwgVCwgUz4oXG5cdFx0XHRlbnRpdHksXG5cdFx0XHRDdG9yLFxuXHRcdFx0YXJnc1xuXHRcdCk7XG5cdFx0Y29uc3QgdHlwZWRSZXN1bHQgPSBydW5SZXN1bHQgYXMgdW5rbm93biBhcyBJbnN0YW5jZVJlc3VsdDxNZXJnZTxFLCBUPj47XG5cdFx0cmV0dXJuIHR5cGVkUmVzdWx0O1xuXHR9O1xuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlY29yYXRlID0gZnVuY3Rpb24gPFxuXHRUIGV4dGVuZHMgQ29uc3RydWN0b3I8b2JqZWN0PiB8IGNvbnN0cnVjdG9yT3B0aW9ucyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZFxuPihcblx0dGFyZ2V0PzogVCxcblx0Y29uZmlnPzogY29uc3RydWN0b3JPcHRpb25zXG4pOiA8VSBleHRlbmRzIENvbnN0cnVjdG9yPG9iamVjdD4+KGNzdHI6IFUpID0+IERlY29yYXRlZENsYXNzPFU+IHtcblx0Y29uc3Qgb3B0cyA9IChjb25maWcgPT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgdGFyZ2V0ID09PSAnb2JqZWN0JyAmJiAhKHRhcmdldCBpbnN0YW5jZW9mIEZ1bmN0aW9uKSlcblx0XHQ/IHRhcmdldCBhcyBjb25zdHJ1Y3Rvck9wdGlvbnNcblx0XHQ6IGNvbmZpZztcblxuXHRjb25zdCBwYXJlbnRUeXBlID0gKHRhcmdldCBpbnN0YW5jZW9mIEZ1bmN0aW9uKVxuXHRcdD8gdGFyZ2V0IGFzIENvbnN0cnVjdG9yPG9iamVjdD5cblx0XHQ6IHVuZGVmaW5lZDtcblxuXHRjb25zdCBkZWNvcmF0b3IgPSBmdW5jdGlvbiA8VSBleHRlbmRzIENvbnN0cnVjdG9yPG9iamVjdD4+KGNzdHI6IFUpOiBEZWNvcmF0ZWRDbGFzczxVPiB7XG5cdFx0Y29uc3QgeyBuYW1lIH0gPSBjc3RyO1xuXHRcdGlmIChwYXJlbnRUeXBlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdGNvbnN0IGRlY29yYXRvclJlc3VsdCA9IGRlZmluZShcblx0XHRcdFx0bmFtZSxcblx0XHRcdFx0Y3N0ciBhcyBJREVGPG9iamVjdD4sXG5cdFx0XHRcdG9wdHNcblx0XHRcdCkgYXMgdW5rbm93biBhcyBEZWNvcmF0ZWRDbGFzczxVPjtcblx0XHRcdHJldHVybiBkZWNvcmF0b3JSZXN1bHQ7XG5cdFx0fVxuXHRcdGNvbnN0IHBhcmVudCA9IHBhcmVudFR5cGUgYXMgdW5rbm93biBhcyB7XG5cdFx0XHRkZWZpbmU6IFR5cGVBYnNvcmJlcjtcblx0XHR9O1xuXHRcdGNvbnN0IGRlZmluZVJlc3VsdCA9IHBhcmVudC5kZWZpbmUoXG5cdFx0XHRuYW1lLFxuXHRcdFx0Y3N0ciBhcyBJREVGPG9iamVjdD4sXG5cdFx0XHRvcHRzXG5cdFx0KSBhcyB1bmtub3duIGFzIERlY29yYXRlZENsYXNzPFU+O1xuXHRcdHJldHVybiBkZWZpbmVSZXN1bHQ7XG5cdH07XG5cdHJldHVybiBkZWNvcmF0b3I7XG59O1xuXG5cbmV4cG9ydCBjb25zdCByZWdpc3Rlckhvb2sgPSBmdW5jdGlvbiA8VCBleHRlbmRzIENvbnN0cnVjdG9yPFQ+Pihcblx0Q3RvcjogRGVjb3JhdGVkQ2xhc3M8VD4sXG5cdGhvb2tUeXBlOiBob29rc1R5cGVzLFxuXHRjYjogaG9va1xuKTogdm9pZCB7XG5cdEN0b3IucmVnaXN0ZXJIb29rKFxuXHRcdGhvb2tUeXBlLFxuXHRcdGNiXG5cdCk7XG59O1xuXG5leHBvcnQgY29uc3QgbW5lbW9uaWNhID0gT2JqZWN0LmVudHJpZXMoe1xuXG5cdGRlZmluZSxcblx0bG9va3VwLFxuXHRhcHBseSxcblx0Y2FsbCxcblx0YmluZCxcblx0ZGVjb3JhdGUsXG5cdHJlZ2lzdGVySG9vayxcblxuXHQuLi5kZXNjcmlwdG9ycyxcblxuXHQuLi5lcnJvcnNBcGksXG5cdC4uLmNvbnN0YW50cyxcblxufSkucmVkdWNlKFxuXHQoYWNjOiB7IFtpbmRleDogc3RyaW5nXTogdW5rbm93biB9LCBlbnRyeTogW3N0cmluZywgdW5rbm93bl0pID0+IHtcblx0XHRjb25zdCBbIG5hbWUsIGNvZGUgXSA9IGVudHJ5O1xuXHRcdG9kcChcblx0XHRcdGFjYyxcblx0XHRcdG5hbWUsXG5cdFx0XHR7XG5cdFx0XHRcdGdldCgpIHtcblx0XHRcdFx0XHRyZXR1cm4gY29kZTtcblx0XHRcdFx0fSxcblx0XHRcdFx0ZW51bWVyYWJsZSA6IHRydWVcblx0XHRcdH1cblx0XHQpO1xuXHRcdHJldHVybiBhY2M7XG5cdH0sXG5cdHt9XG4pIGFzIE1uZW1vbmljYU1vZHVsZTtcblxuaW1wb3J0ICogYXMgYXBpIGZyb20gJy4vYXBpJztcblxuZXhwb3J0IGNvbnN0IHtcblx0ZGVmaW5lOiBfZGVmaW5lLFxuXHRsb29rdXA6IF9sb29rdXBcbn0gPSBhcGkudHlwZXM7XG5cbmV4cG9ydCBjb25zdCB7XG5cblx0U3ltYm9sUGFyZW50VHlwZSxcblx0U3ltYm9sQ29uc3RydWN0b3JOYW1lLFxuXHRTeW1ib2xEZWZhdWx0VHlwZXNDb2xsZWN0aW9uLFxuXHRTeW1ib2xDb25maWcsXG5cdE1ORU1PTklDQSxcblx0TU5FTU9TWU5FLFxuXHRUWVBFX1RJVExFX1BSRUZJWCxcblx0RXJyb3JNZXNzYWdlcyxcblxufSA9IG1uZW1vbmljYTtcblxuLy8gRXhwb3J0IGNyZWF0ZVR5cGVzQ29sbGVjdGlvbiB3aXRoIHByb3BlciB0eXBlXG5leHBvcnQgY29uc3QgY3JlYXRlVHlwZXNDb2xsZWN0aW9uOiBDcmVhdGVUeXBlc0NvbGxlY3Rpb25GdW5jdGlvbiA9XG5cdG1uZW1vbmljYS5jcmVhdGVUeXBlc0NvbGxlY3Rpb24gYXMgQ3JlYXRlVHlwZXNDb2xsZWN0aW9uRnVuY3Rpb247XG5cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDb2xsZWN0aW9uID0gKGRlZmF1bHRUeXBlcyBhcyB7IHN1YnR5cGVzOiBNYXA8c3RyaW5nLCBvYmplY3Q+IH0pLnN1YnR5cGVzO1xuZXhwb3J0IGNvbnN0IGVycm9ycyA9IGRlc2NyaXB0b3JzLkVycm9yc1R5cGVzO1xuXG5leHBvcnQgeyB1dGlscyB9IGZyb20gJy4vdXRpbHMnO1xuZXhwb3J0IHsgZGVmaW5lU3RhY2tDbGVhbmVyIH0gZnJvbSAnLi91dGlscyc7XG4vKiBlc2xpbnQtZW5hYmxlIHNwYWNlLWJlZm9yZS1mdW5jdGlvbi1wYXJlbiAqL1xuIl19
@@ -1,3 +1,4 @@
1
+ import type { TypeRegistry } from '../index';
1
2
  export type PropsType = Record<string, unknown>;
2
3
  export type IDEF<T, Args extends unknown[] = unknown[]> = {
3
4
  new (): T;
@@ -30,6 +31,22 @@ export interface _Internal_TC_<ConstructorInstance extends object> {
30
31
  };
31
32
  }
32
33
  export type TypeConstructor<ConstructorInstance extends object> = _Internal_TC_<ConstructorInstance>;
34
+ export interface TypeConstructorBase {
35
+ new (...args: unknown[]): object;
36
+ }
37
+ export type InstanceOfTypeRegistry<K extends keyof TypeRegistry> = TypeRegistry[K] extends new (...args: unknown[]) => infer R ? R : never;
38
+ export type LiteralKeysOf<T> = keyof T extends infer K ? K extends string ? string extends K ? never : K : never : never;
39
+ export type ParentPath<K extends string> = K extends `${infer P}.${string}` ? P : never;
40
+ export type AllParentPrefixes<K extends string> = K extends `${infer P}.${string}` ? P | AllParentPrefixes<P> : never;
41
+ export type ChildKeysOf<P extends string> = {
42
+ [K in keyof TypeRegistry]: K extends `${P}.${string}` ? K : never;
43
+ }[keyof TypeRegistry];
44
+ export type PathOfInstance<T extends object> = {
45
+ [K in LiteralKeysOf<TypeRegistry>]: TypeRegistry[K] extends new (...args: unknown[]) => infer R ? T extends R ? K : never : never;
46
+ }[LiteralKeysOf<TypeRegistry>];
47
+ export type ParentPathOfInstance<T extends object> = {
48
+ [K in LiteralKeysOf<TypeRegistry>]: TypeRegistry[K] extends new (...args: unknown[]) => infer R ? T extends R ? AllParentPrefixes<K> : never : never;
49
+ }[LiteralKeysOf<TypeRegistry>];
33
50
  export type hooksTypes = 'preCreation' | 'postCreation' | 'creationError';
34
51
  export type hooksOpts<P = object, T = P> = {
35
52
  TypeName: string;
@@ -152,6 +169,7 @@ export interface MnemonicaInstance<T extends object = object> {
152
169
  } & {};
153
170
  pick(...keys: string[]): Record<string, unknown>;
154
171
  parent(): object | undefined;
172
+ parent<K extends ParentPathOfInstance<this> & string>(constructorLookupPath: K): InstanceOfTypeRegistry<K> | undefined;
155
173
  parent(constructorLookupPath: string): object | undefined;
156
174
  readonly clone: this;
157
175
  fork(...forkArgs: unknown[]): this;
@@ -253,13 +271,18 @@ export interface UtilsCollection {
253
271
  collectConstructors: (instance: object, flat?: boolean) => (CallableFunction | string)[];
254
272
  merge<A extends object, B extends object>(a: A, b: B, ...args: unknown[]): InstanceResult<Merge<B, A>>;
255
273
  parse<T extends object>(self: T): Parsed<T>;
256
- parent<T extends object>(instance: T, path?: string): object | undefined;
274
+ parent<T extends object>(instance: T): object | undefined;
275
+ parent<T extends object, K extends ParentPathOfInstance<T> & string>(instance: T, path: K): InstanceOfTypeRegistry<K> | undefined;
276
+ parent<T extends object>(instance: T, path: string): object | undefined;
257
277
  toJSON<T extends object>(instance: T): string;
258
278
  [key: string]: CallableFunction;
259
279
  }
260
280
  export interface MnemonicaModule {
261
281
  define: TypeAbsorber;
262
- lookup: (TypeNestedPath: string) => TypeClass | undefined;
282
+ lookup: {
283
+ (TypeNestedPath: string): TypeClass | undefined;
284
+ <const K extends keyof TypeRegistry>(TypeNestedPath: K): TypeRegistry[K] | undefined;
285
+ };
263
286
  apply: ApplyFunction;
264
287
  call: CallFunction;
265
288
  bind: BindFunction;