footprintjs 1.0.1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +4 -4
- package/README.md +2 -2
- package/ai-instructions/claude-code/SKILL.md +6 -6
- package/ai-instructions/clinerules +4 -4
- package/ai-instructions/copilot-instructions.md +4 -4
- package/ai-instructions/cursor/footprint.md +4 -4
- package/ai-instructions/kiro/footprint.md +4 -4
- package/ai-instructions/windsurfrules +4 -4
- package/dist/esm/index.js +8 -16
- package/dist/esm/lib/builder/FlowChartBuilder.js +29 -20
- package/dist/esm/lib/builder/typedFlowChart.js +4 -2
- package/dist/esm/lib/builder/types.js +1 -1
- package/dist/esm/lib/engine/types.js +1 -1
- package/dist/esm/lib/runner/FlowChartExecutor.js +4 -3
- package/dist/esm/lib/runner/RunContext.js +75 -0
- package/dist/esm/lib/runner/RunnableChart.js +104 -0
- package/dist/esm/lib/runner/index.js +2 -1
- package/dist/esm/recorders.js +69 -0
- package/dist/index.js +22 -36
- package/dist/lib/builder/FlowChartBuilder.js +29 -20
- package/dist/lib/builder/typedFlowChart.js +4 -2
- package/dist/lib/builder/types.js +1 -1
- package/dist/lib/engine/types.js +1 -1
- package/dist/lib/runner/FlowChartExecutor.js +4 -3
- package/dist/lib/runner/RunContext.js +79 -0
- package/dist/lib/runner/RunnableChart.js +108 -0
- package/dist/lib/runner/index.js +4 -2
- package/dist/recorders.js +79 -0
- package/dist/types/index.d.ts +8 -11
- package/dist/types/lib/builder/FlowChartBuilder.d.ts +18 -8
- package/dist/types/lib/builder/types.d.ts +5 -3
- package/dist/types/lib/engine/types.d.ts +2 -0
- package/dist/types/lib/runner/RunContext.d.ts +38 -0
- package/dist/types/lib/runner/RunnableChart.d.ts +42 -0
- package/dist/types/lib/runner/index.d.ts +3 -0
- package/dist/types/recorders.d.ts +43 -0
- package/package.json +6 -1
package/AGENTS.md
CHANGED
|
@@ -26,7 +26,7 @@ Entry points: `footprintjs` (public) and `footprintjs/advanced` (internals).
|
|
|
26
26
|
## Key API — TypedScope (Recommended)
|
|
27
27
|
|
|
28
28
|
```typescript
|
|
29
|
-
import { typedFlowChart,
|
|
29
|
+
import { typedFlowChart, FlowChartExecutor, decide } from 'footprintjs';
|
|
30
30
|
|
|
31
31
|
interface State {
|
|
32
32
|
creditScore: number;
|
|
@@ -54,7 +54,7 @@ const chart = typedFlowChart<State>('Intake', async (scope) => {
|
|
|
54
54
|
.end()
|
|
55
55
|
.build();
|
|
56
56
|
|
|
57
|
-
const executor = new FlowChartExecutor(chart
|
|
57
|
+
const executor = new FlowChartExecutor(chart<State>());
|
|
58
58
|
await executor.run();
|
|
59
59
|
executor.getNarrative(); // causal trace with decision evidence
|
|
60
60
|
```
|
|
@@ -92,7 +92,7 @@ select(scope, [
|
|
|
92
92
|
### Executor
|
|
93
93
|
|
|
94
94
|
```typescript
|
|
95
|
-
const executor = new FlowChartExecutor(chart
|
|
95
|
+
const executor = new FlowChartExecutor(chart<State>());
|
|
96
96
|
await executor.run({ input, env: { traceId: 'req-123' } });
|
|
97
97
|
executor.getNarrative() // string[]
|
|
98
98
|
executor.getNarrativeEntries() // CombinedNarrativeEntry[]
|
|
@@ -111,7 +111,7 @@ executor.setRedactionPolicy({ keys, patterns, fields })
|
|
|
111
111
|
|
|
112
112
|
## Rules
|
|
113
113
|
|
|
114
|
-
- Use `typedFlowChart<T>()`
|
|
114
|
+
- Use `typedFlowChart<T>()` — scopeFactory is auto-embedded, no `createTypedScopeFactory` needed
|
|
115
115
|
- Use `decide()` / `select()` in decider/selector functions
|
|
116
116
|
- Use typed property access (not getValue/setValue)
|
|
117
117
|
- Use `$getArgs()` for input, `$getEnv()` for environment
|
package/README.md
CHANGED
|
@@ -73,7 +73,7 @@ That answer came from the trace — not from the LLM's imagination.
|
|
|
73
73
|
## Quick Start
|
|
74
74
|
|
|
75
75
|
```typescript
|
|
76
|
-
import { typedFlowChart,
|
|
76
|
+
import { typedFlowChart, FlowChartExecutor, decide } from 'footprintjs';
|
|
77
77
|
|
|
78
78
|
interface State {
|
|
79
79
|
user: { name: string; tier: string };
|
|
@@ -103,7 +103,7 @@ const chart = typedFlowChart<State>('FetchUser', async (scope) => {
|
|
|
103
103
|
.setEnableNarrative()
|
|
104
104
|
.build();
|
|
105
105
|
|
|
106
|
-
const executor = new FlowChartExecutor(chart
|
|
106
|
+
const executor = new FlowChartExecutor(chart);
|
|
107
107
|
await executor.run();
|
|
108
108
|
|
|
109
109
|
console.log(executor.getNarrative());
|
|
@@ -18,7 +18,7 @@ npm install footprintjs
|
|
|
18
18
|
## Quick Start
|
|
19
19
|
|
|
20
20
|
```typescript
|
|
21
|
-
import { typedFlowChart,
|
|
21
|
+
import { typedFlowChart, FlowChartExecutor } from 'footprintjs';
|
|
22
22
|
|
|
23
23
|
interface OrderState {
|
|
24
24
|
orderId: string;
|
|
@@ -37,7 +37,7 @@ const chart = typedFlowChart<OrderState>('ReceiveOrder', (scope) => {
|
|
|
37
37
|
.setEnableNarrative()
|
|
38
38
|
.build();
|
|
39
39
|
|
|
40
|
-
const executor = new FlowChartExecutor(chart
|
|
40
|
+
const executor = new FlowChartExecutor(chart<OrderState>());
|
|
41
41
|
await executor.run({ input: { orderId: 'ORD-123' } });
|
|
42
42
|
|
|
43
43
|
console.log(executor.getNarrative());
|
|
@@ -255,7 +255,7 @@ const mermaid = builder.toMermaid(); // Mermaid diagram string
|
|
|
255
255
|
## FlowChartExecutor API
|
|
256
256
|
|
|
257
257
|
```typescript
|
|
258
|
-
import { FlowChartExecutor
|
|
258
|
+
import { FlowChartExecutor } from 'footprintjs';
|
|
259
259
|
|
|
260
260
|
interface AppState {
|
|
261
261
|
applicantName: string;
|
|
@@ -264,7 +264,7 @@ interface AppState {
|
|
|
264
264
|
decision?: string;
|
|
265
265
|
}
|
|
266
266
|
|
|
267
|
-
const executor = new FlowChartExecutor(chart
|
|
267
|
+
const executor = new FlowChartExecutor(chart<AppState>());
|
|
268
268
|
|
|
269
269
|
// Run with input and optional execution environment
|
|
270
270
|
const result = await executor.run({
|
|
@@ -488,7 +488,7 @@ Two entry points:
|
|
|
488
488
|
### Pipeline with decide() + narrative
|
|
489
489
|
|
|
490
490
|
```typescript
|
|
491
|
-
import { typedFlowChart,
|
|
491
|
+
import { typedFlowChart, FlowChartExecutor, decide } from 'footprintjs';
|
|
492
492
|
|
|
493
493
|
interface LoanState {
|
|
494
494
|
applicantName: string;
|
|
@@ -527,7 +527,7 @@ const chart = typedFlowChart<LoanState>('Receive', (scope) => {
|
|
|
527
527
|
.setEnableNarrative()
|
|
528
528
|
.build();
|
|
529
529
|
|
|
530
|
-
const executor = new FlowChartExecutor(chart
|
|
530
|
+
const executor = new FlowChartExecutor(chart<LoanState>());
|
|
531
531
|
await executor.run({ input: { applicantName: 'Bob', income: 42000 } });
|
|
532
532
|
const trace = executor.getNarrative();
|
|
533
533
|
// Feed trace to LLM for grounded explanations
|
|
@@ -26,7 +26,7 @@ Entry points: `footprintjs` (public) and `footprintjs/advanced` (internals).
|
|
|
26
26
|
## Key API — TypedScope (Recommended)
|
|
27
27
|
|
|
28
28
|
```typescript
|
|
29
|
-
import { typedFlowChart,
|
|
29
|
+
import { typedFlowChart, FlowChartExecutor, decide } from 'footprintjs';
|
|
30
30
|
|
|
31
31
|
interface State {
|
|
32
32
|
creditScore: number;
|
|
@@ -54,7 +54,7 @@ const chart = typedFlowChart<State>('Intake', async (scope) => {
|
|
|
54
54
|
.end()
|
|
55
55
|
.build();
|
|
56
56
|
|
|
57
|
-
const executor = new FlowChartExecutor(chart
|
|
57
|
+
const executor = new FlowChartExecutor(chart<State>());
|
|
58
58
|
await executor.run();
|
|
59
59
|
executor.getNarrative(); // causal trace with decision evidence
|
|
60
60
|
```
|
|
@@ -92,7 +92,7 @@ select(scope, [
|
|
|
92
92
|
### Executor
|
|
93
93
|
|
|
94
94
|
```typescript
|
|
95
|
-
const executor = new FlowChartExecutor(chart
|
|
95
|
+
const executor = new FlowChartExecutor(chart<State>());
|
|
96
96
|
await executor.run({ input, env: { traceId: 'req-123' } });
|
|
97
97
|
executor.getNarrative() // string[]
|
|
98
98
|
executor.getNarrativeEntries() // CombinedNarrativeEntry[]
|
|
@@ -111,7 +111,7 @@ executor.setRedactionPolicy({ keys, patterns, fields })
|
|
|
111
111
|
|
|
112
112
|
## Rules
|
|
113
113
|
|
|
114
|
-
- Use `typedFlowChart<T>()`
|
|
114
|
+
- Use `typedFlowChart<T>()` — scopeFactory is auto-embedded, no `createTypedScopeFactory` needed
|
|
115
115
|
- Use `decide()` / `select()` in decider/selector functions
|
|
116
116
|
- Use typed property access (not getValue/setValue)
|
|
117
117
|
- Use `$getArgs()` for input, `$getEnv()` for environment
|
|
@@ -26,7 +26,7 @@ Entry points: `footprintjs` (public) and `footprintjs/advanced` (internals).
|
|
|
26
26
|
## Key API — TypedScope (Recommended)
|
|
27
27
|
|
|
28
28
|
```typescript
|
|
29
|
-
import { typedFlowChart,
|
|
29
|
+
import { typedFlowChart, FlowChartExecutor, decide } from 'footprintjs';
|
|
30
30
|
|
|
31
31
|
interface State {
|
|
32
32
|
creditScore: number;
|
|
@@ -54,7 +54,7 @@ const chart = typedFlowChart<State>('Intake', async (scope) => {
|
|
|
54
54
|
.end()
|
|
55
55
|
.build();
|
|
56
56
|
|
|
57
|
-
const executor = new FlowChartExecutor(chart
|
|
57
|
+
const executor = new FlowChartExecutor(chart<State>());
|
|
58
58
|
await executor.run();
|
|
59
59
|
executor.getNarrative(); // causal trace with decision evidence
|
|
60
60
|
```
|
|
@@ -92,7 +92,7 @@ select(scope, [
|
|
|
92
92
|
### Executor
|
|
93
93
|
|
|
94
94
|
```typescript
|
|
95
|
-
const executor = new FlowChartExecutor(chart
|
|
95
|
+
const executor = new FlowChartExecutor(chart<State>());
|
|
96
96
|
await executor.run({ input, env: { traceId: 'req-123' } });
|
|
97
97
|
executor.getNarrative() // string[]
|
|
98
98
|
executor.getNarrativeEntries() // CombinedNarrativeEntry[]
|
|
@@ -111,7 +111,7 @@ executor.setRedactionPolicy({ keys, patterns, fields })
|
|
|
111
111
|
|
|
112
112
|
## Rules
|
|
113
113
|
|
|
114
|
-
- Use `typedFlowChart<T>()`
|
|
114
|
+
- Use `typedFlowChart<T>()` — scopeFactory is auto-embedded, no `createTypedScopeFactory` needed
|
|
115
115
|
- Use `decide()` / `select()` in decider/selector functions
|
|
116
116
|
- Use typed property access (not getValue/setValue)
|
|
117
117
|
- Use `$getArgs()` for input, `$getEnv()` for environment
|
|
@@ -26,7 +26,7 @@ Entry points: `footprintjs` (public) and `footprintjs/advanced` (internals).
|
|
|
26
26
|
## Key API — TypedScope (Recommended)
|
|
27
27
|
|
|
28
28
|
```typescript
|
|
29
|
-
import { typedFlowChart,
|
|
29
|
+
import { typedFlowChart, FlowChartExecutor, decide } from 'footprintjs';
|
|
30
30
|
|
|
31
31
|
interface State {
|
|
32
32
|
creditScore: number;
|
|
@@ -54,7 +54,7 @@ const chart = typedFlowChart<State>('Intake', async (scope) => {
|
|
|
54
54
|
.end()
|
|
55
55
|
.build();
|
|
56
56
|
|
|
57
|
-
const executor = new FlowChartExecutor(chart
|
|
57
|
+
const executor = new FlowChartExecutor(chart<State>());
|
|
58
58
|
await executor.run();
|
|
59
59
|
executor.getNarrative(); // causal trace with decision evidence
|
|
60
60
|
```
|
|
@@ -92,7 +92,7 @@ select(scope, [
|
|
|
92
92
|
### Executor
|
|
93
93
|
|
|
94
94
|
```typescript
|
|
95
|
-
const executor = new FlowChartExecutor(chart
|
|
95
|
+
const executor = new FlowChartExecutor(chart<State>());
|
|
96
96
|
await executor.run({ input, env: { traceId: 'req-123' } });
|
|
97
97
|
executor.getNarrative() // string[]
|
|
98
98
|
executor.getNarrativeEntries() // CombinedNarrativeEntry[]
|
|
@@ -111,7 +111,7 @@ executor.setRedactionPolicy({ keys, patterns, fields })
|
|
|
111
111
|
|
|
112
112
|
## Rules
|
|
113
113
|
|
|
114
|
-
- Use `typedFlowChart<T>()`
|
|
114
|
+
- Use `typedFlowChart<T>()` — scopeFactory is auto-embedded, no `createTypedScopeFactory` needed
|
|
115
115
|
- Use `decide()` / `select()` in decider/selector functions
|
|
116
116
|
- Use typed property access (not getValue/setValue)
|
|
117
117
|
- Use `$getArgs()` for input, `$getEnv()` for environment
|
|
@@ -26,7 +26,7 @@ Entry points: `footprintjs` (public) and `footprintjs/advanced` (internals).
|
|
|
26
26
|
## Key API — TypedScope (Recommended)
|
|
27
27
|
|
|
28
28
|
```typescript
|
|
29
|
-
import { typedFlowChart,
|
|
29
|
+
import { typedFlowChart, FlowChartExecutor, decide } from 'footprintjs';
|
|
30
30
|
|
|
31
31
|
interface State {
|
|
32
32
|
creditScore: number;
|
|
@@ -54,7 +54,7 @@ const chart = typedFlowChart<State>('Intake', async (scope) => {
|
|
|
54
54
|
.end()
|
|
55
55
|
.build();
|
|
56
56
|
|
|
57
|
-
const executor = new FlowChartExecutor(chart
|
|
57
|
+
const executor = new FlowChartExecutor(chart<State>());
|
|
58
58
|
await executor.run();
|
|
59
59
|
executor.getNarrative(); // causal trace with decision evidence
|
|
60
60
|
```
|
|
@@ -92,7 +92,7 @@ select(scope, [
|
|
|
92
92
|
### Executor
|
|
93
93
|
|
|
94
94
|
```typescript
|
|
95
|
-
const executor = new FlowChartExecutor(chart
|
|
95
|
+
const executor = new FlowChartExecutor(chart<State>());
|
|
96
96
|
await executor.run({ input, env: { traceId: 'req-123' } });
|
|
97
97
|
executor.getNarrative() // string[]
|
|
98
98
|
executor.getNarrativeEntries() // CombinedNarrativeEntry[]
|
|
@@ -111,7 +111,7 @@ executor.setRedactionPolicy({ keys, patterns, fields })
|
|
|
111
111
|
|
|
112
112
|
## Rules
|
|
113
113
|
|
|
114
|
-
- Use `typedFlowChart<T>()`
|
|
114
|
+
- Use `typedFlowChart<T>()` — scopeFactory is auto-embedded, no `createTypedScopeFactory` needed
|
|
115
115
|
- Use `decide()` / `select()` in decider/selector functions
|
|
116
116
|
- Use typed property access (not getValue/setValue)
|
|
117
117
|
- Use `$getArgs()` for input, `$getEnv()` for environment
|
|
@@ -26,7 +26,7 @@ Entry points: `footprintjs` (public) and `footprintjs/advanced` (internals).
|
|
|
26
26
|
## Key API — TypedScope (Recommended)
|
|
27
27
|
|
|
28
28
|
```typescript
|
|
29
|
-
import { typedFlowChart,
|
|
29
|
+
import { typedFlowChart, FlowChartExecutor, decide } from 'footprintjs';
|
|
30
30
|
|
|
31
31
|
interface State {
|
|
32
32
|
creditScore: number;
|
|
@@ -54,7 +54,7 @@ const chart = typedFlowChart<State>('Intake', async (scope) => {
|
|
|
54
54
|
.end()
|
|
55
55
|
.build();
|
|
56
56
|
|
|
57
|
-
const executor = new FlowChartExecutor(chart
|
|
57
|
+
const executor = new FlowChartExecutor(chart<State>());
|
|
58
58
|
await executor.run();
|
|
59
59
|
executor.getNarrative(); // causal trace with decision evidence
|
|
60
60
|
```
|
|
@@ -92,7 +92,7 @@ select(scope, [
|
|
|
92
92
|
### Executor
|
|
93
93
|
|
|
94
94
|
```typescript
|
|
95
|
-
const executor = new FlowChartExecutor(chart
|
|
95
|
+
const executor = new FlowChartExecutor(chart<State>());
|
|
96
96
|
await executor.run({ input, env: { traceId: 'req-123' } });
|
|
97
97
|
executor.getNarrative() // string[]
|
|
98
98
|
executor.getNarrativeEntries() // CombinedNarrativeEntry[]
|
|
@@ -111,7 +111,7 @@ executor.setRedactionPolicy({ keys, patterns, fields })
|
|
|
111
111
|
|
|
112
112
|
## Rules
|
|
113
113
|
|
|
114
|
-
- Use `typedFlowChart<T>()`
|
|
114
|
+
- Use `typedFlowChart<T>()` — scopeFactory is auto-embedded, no `createTypedScopeFactory` needed
|
|
115
115
|
- Use `decide()` / `select()` in decider/selector functions
|
|
116
116
|
- Use typed property access (not getValue/setValue)
|
|
117
117
|
- Use `$getArgs()` for input, `$getEnv()` for environment
|
package/dist/esm/index.js
CHANGED
|
@@ -1,21 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* FootPrint — Public API
|
|
2
|
+
* FootPrint — Public API (v2.0)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* every stage's context (state, decisions, errors) in an auditable trace.
|
|
4
|
+
* The flowchart pattern for backend code.
|
|
5
|
+
* Build → Describe → Run.
|
|
7
6
|
*
|
|
8
|
-
* For advanced/internal APIs
|
|
9
|
-
* import from '
|
|
7
|
+
* For advanced/internal APIs, import from 'footprintjs/advanced'.
|
|
8
|
+
* For recorder factories, import from 'footprintjs/recorders'.
|
|
10
9
|
*/
|
|
11
10
|
export { flowChart, FlowChartBuilder } from './lib/builder/index.js';
|
|
12
|
-
export { createTypedScopeFactory, typedFlowChart } from './lib/builder/typedFlowChart.js';
|
|
13
|
-
export { createTypedScope } from './lib/reactive/index.js';
|
|
14
11
|
export { decide, select } from './lib/decide/index.js';
|
|
15
|
-
// ============================================================================
|
|
16
|
-
// Runner — Execution convenience layer
|
|
17
|
-
// ============================================================================
|
|
18
12
|
export { FlowChartExecutor } from './lib/runner/index.js';
|
|
13
|
+
export { RunContext } from './lib/runner/index.js';
|
|
19
14
|
export { getSubtreeSnapshot, listSubflowPaths } from './lib/runner/index.js';
|
|
20
15
|
// ============================================================================
|
|
21
16
|
// Scope — Per-stage facades and recorders
|
|
@@ -23,7 +18,7 @@ export { getSubtreeSnapshot, listSubflowPaths } from './lib/runner/index.js';
|
|
|
23
18
|
export { ScopeFacade } from './lib/scope/index.js';
|
|
24
19
|
// Dev-mode diagnostics
|
|
25
20
|
export { disableDevMode, enableDevMode } from './lib/scope/detectCircular.js';
|
|
26
|
-
// Recorders
|
|
21
|
+
// Recorders (class exports — prefer factory functions from footprintjs/recorders)
|
|
27
22
|
export { MetricRecorder } from './lib/scope/index.js';
|
|
28
23
|
export { DebugRecorder } from './lib/scope/index.js';
|
|
29
24
|
// Zod-based scope definitions
|
|
@@ -38,9 +33,6 @@ export { RLENarrativeFlowRecorder } from './lib/engine/index.js';
|
|
|
38
33
|
export { SeparateNarrativeFlowRecorder } from './lib/engine/index.js';
|
|
39
34
|
export { SilentNarrativeFlowRecorder } from './lib/engine/index.js';
|
|
40
35
|
export { WindowedNarrativeFlowRecorder } from './lib/engine/index.js';
|
|
41
|
-
export { defineContract } from './lib/contract/index.js';
|
|
42
|
-
export { normalizeSchema, zodToJsonSchema } from './lib/contract/index.js';
|
|
43
|
-
export { generateOpenAPI } from './lib/contract/index.js';
|
|
44
36
|
export { detectSchema, isValidatable, isZod } from './lib/schema/index.js';
|
|
45
37
|
export { InputValidationError, validateAgainstSchema, validateOrThrow } from './lib/schema/index.js';
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7OztHQVNHO0FBT0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSXJFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUxRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQVczRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRXZELCtFQUErRTtBQUMvRSx1Q0FBdUM7QUFDdkMsK0VBQStFO0FBRS9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBUTFELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTdFLCtFQUErRTtBQUMvRSwwQ0FBMEM7QUFDMUMsK0VBQStFO0FBRS9FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRCx1QkFBdUI7QUFDdkIsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUU5RSxZQUFZO0FBQ1osT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQWFyRCw4QkFBOEI7QUFDOUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUF1QjFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUkxRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQW9CdEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBTzFELE9BQU8sRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBRSxlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRm9vdFByaW50IOKAlCBQdWJsaWMgQVBJXG4gKlxuICogQ29ubmVjdGVkIGNhdXNhbCB0cmFjZSBsaWJyYXJ5IGZvciBMTE0gcGlwZWxpbmVzLlxuICogQnVpbGRzIGZsb3djaGFydHMsIGV4ZWN1dGVzIHRoZW0gdmlhIERGUyB0cmF2ZXJzYWwsIGFuZCBjYXB0dXJlc1xuICogZXZlcnkgc3RhZ2UncyBjb250ZXh0IChzdGF0ZSwgZGVjaXNpb25zLCBlcnJvcnMpIGluIGFuIGF1ZGl0YWJsZSB0cmFjZS5cbiAqXG4gKiBGb3IgYWR2YW5jZWQvaW50ZXJuYWwgQVBJcyAobWVtb3J5IHByaW1pdGl2ZXMsIGVuZ2luZSBoYW5kbGVycywgcHJvdmlkZXJzKSxcbiAqIGltcG9ydCBmcm9tICdmb290cHJpbnQvYWR2YW5jZWQnLlxuICovXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJ1aWxkZXIg4oCUIEZsb3djaGFydCBjb25zdHJ1Y3Rpb25cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBGbG93Q2hhcnQsIFN0YWdlRnVuY3Rpb24gYXMgU3RhZ2VIYW5kbGVyLCBTdHJlYW1IYW5kbGVycyB9IGZyb20gJy4vbGliL2J1aWxkZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgZmxvd0NoYXJ0LCBGbG93Q2hhcnRCdWlsZGVyIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5cbi8vIFR5cGVkU2NvcGUg4oCUIHR5cGVkIHByb3BlcnR5IGFjY2VzcyAobm8gY2FzdHMgbmVlZGVkKVxuZXhwb3J0IHR5cGUgeyBUeXBlZFN0YWdlRnVuY3Rpb24gfSBmcm9tICcuL2xpYi9idWlsZGVyL3R5cGVkRmxvd0NoYXJ0LmpzJztcbmV4cG9ydCB7IGNyZWF0ZVR5cGVkU2NvcGVGYWN0b3J5LCB0eXBlZEZsb3dDaGFydCB9IGZyb20gJy4vbGliL2J1aWxkZXIvdHlwZWRGbG93Q2hhcnQuanMnO1xuZXhwb3J0IHR5cGUgeyBTY29wZU1ldGhvZHMsIFR5cGVkU2NvcGUgfSBmcm9tICcuL2xpYi9yZWFjdGl2ZS9pbmRleC5qcyc7XG5leHBvcnQgeyBjcmVhdGVUeXBlZFNjb3BlIH0gZnJvbSAnLi9saWIvcmVhY3RpdmUvaW5kZXguanMnO1xuXG4vLyBEZWNpc2lvbiByZWFzb25pbmcgY2FwdHVyZVxuZXhwb3J0IHR5cGUge1xuICBEZWNpZGVSdWxlLFxuICBEZWNpc2lvbkV2aWRlbmNlLFxuICBEZWNpc2lvblJlc3VsdCxcbiAgRmlsdGVyT3BzLFxuICBTZWxlY3Rpb25SZXN1bHQsXG4gIFdoZXJlRmlsdGVyLFxufSBmcm9tICcuL2xpYi9kZWNpZGUvaW5kZXguanMnO1xuZXhwb3J0IHsgZGVjaWRlLCBzZWxlY3QgfSBmcm9tICcuL2xpYi9kZWNpZGUvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSdW5uZXIg4oCUIEV4ZWN1dGlvbiBjb252ZW5pZW5jZSBsYXllclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgeyBGbG93Q2hhcnRFeGVjdXRvciB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8vIENvbXBvc2FibGVSdW5uZXIg4oCUIGludGVyZmFjZSBmb3IgcnVubmVycyB0aGF0IGV4cG9zZSB0aGVpciBpbnRlcm5hbCBmbG93Q2hhcnRcbi8vIGZvciBzdWJmbG93IGNvbXBvc2l0aW9uIChlbmFibGVzIFVJIGRyaWxsLWRvd24gaW50byBuZXN0ZWQgcnVubmVycylcbmV4cG9ydCB0eXBlIHsgQ29tcG9zYWJsZVJ1bm5lciB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8vIFNuYXBzaG90IG5hdmlnYXRpb24g4oCUIGRyaWxsIGludG8gc3ViZmxvdyBzdWJ0cmVlcyBieSBwYXRoXG5leHBvcnQgdHlwZSB7IFJlY29yZGVyU25hcHNob3QsIFJ1bnRpbWVTbmFwc2hvdCwgU3VidHJlZVNuYXBzaG90IH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcbmV4cG9ydCB7IGdldFN1YnRyZWVTbmFwc2hvdCwgbGlzdFN1YmZsb3dQYXRocyB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNjb3BlIOKAlCBQZXItc3RhZ2UgZmFjYWRlcyBhbmQgcmVjb3JkZXJzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB7IFNjb3BlRmFjYWRlIH0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vLyBEZXYtbW9kZSBkaWFnbm9zdGljc1xuZXhwb3J0IHsgZGlzYWJsZURldk1vZGUsIGVuYWJsZURldk1vZGUgfSBmcm9tICcuL2xpYi9zY29wZS9kZXRlY3RDaXJjdWxhci5qcyc7XG5cbi8vIFJlY29yZGVyc1xuZXhwb3J0IHsgTWV0cmljUmVjb3JkZXIgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5leHBvcnQgeyBEZWJ1Z1JlY29yZGVyIH0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vLyBSZWNvcmRlciBpbnRlcmZhY2UgYW5kIGNvcmUgZXZlbnQgdHlwZXMgKG5lZWRlZCB0byBpbXBsZW1lbnQgY3VzdG9tIFJlY29yZGVyKVxuZXhwb3J0IHR5cGUge1xuICBDb21taXRFdmVudCxcbiAgRXJyb3JFdmVudCxcbiAgUmVhZEV2ZW50LFxuICBSZWNvcmRlcixcbiAgUmVkYWN0aW9uUG9saWN5LFxuICBSZWRhY3Rpb25SZXBvcnQsXG4gIFdyaXRlRXZlbnQsXG59IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLy8gWm9kLWJhc2VkIHNjb3BlIGRlZmluaXRpb25zXG5leHBvcnQgeyBkZWZpbmVTY29wZUZyb21ab2QgfSBmcm9tICcuL2xpYi9zY29wZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVuZ2luZSDigJQgTmFycmF0aXZlIChjb21tb25seSB1c2VkKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IENvbWJpbmVkTmFycmF0aXZlRW50cnkgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyBGbG93UmVjb3JkZXIg4oCUIFBsdWdnYWJsZSBvYnNlcnZlciBmb3IgY29udHJvbCBmbG93IGV2ZW50cyAobWlycm9ycyBzY29wZSBSZWNvcmRlcilcbmV4cG9ydCB0eXBlIHtcbiAgRmxvd0JyZWFrRXZlbnQsXG4gIEZsb3dEZWNpc2lvbkV2ZW50LFxuICBGbG93RXJyb3JFdmVudCxcbiAgRmxvd0ZvcmtFdmVudCxcbiAgRmxvd0xvb3BFdmVudCxcbiAgRmxvd05leHRFdmVudCxcbiAgRmxvd1JlY29yZGVyLFxuICBGbG93U2VsZWN0ZWRFdmVudCxcbiAgRmxvd1N0YWdlRXZlbnQsXG4gIEZsb3dTdWJmbG93RXZlbnQsXG4gIEZsb3dTdWJmbG93UmVnaXN0ZXJlZEV2ZW50LFxuICBUcmF2ZXJzYWxDb250ZXh0LFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gU3RydWN0dXJlZCBlcnJvciBleHRyYWN0aW9uIOKAlCBwcmVzZXJ2ZXMgZmllbGQtbGV2ZWwgZGV0YWlscyB0aHJvdWdoIHRoZSBwaXBlbGluZVxuZXhwb3J0IHR5cGUgeyBTdHJ1Y3R1cmVkRXJyb3JJbmZvIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IGV4dHJhY3RFcnJvckluZm8sIGZvcm1hdEVycm9ySW5mbyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5cbi8vIEJ1aWx0LWluIEZsb3dSZWNvcmRlciBzdHJhdGVnaWVzICh0cmVlLXNoYWtlYWJsZSDigJQgaW1wb3J0IG9ubHkgd2hhdCB5b3UgdXNlKVxuZXhwb3J0IHR5cGUgeyBNYW5pZmVzdEVudHJ5IH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IE1hbmlmZXN0Rmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IEFkYXB0aXZlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IE1pbGVzdG9uZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBQcm9ncmVzc2l2ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBSTEVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgU2VwYXJhdGVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgU2lsZW50TmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IFdpbmRvd2VkTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTWVtb3J5IOKAlCBTY29wZUZhY3RvcnkgdHlwZSAobmVlZGVkIGZvciBGbG93Q2hhcnRFeGVjdXRvciBjb25zdHJ1Y3Rvcilcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBFeGVjdXRpb25FbnYsIFJ1bk9wdGlvbnMgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHR5cGUgeyBTY29wZUZhY3RvcnkgfSBmcm9tICcuL2xpYi9tZW1vcnkvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDb250cmFjdCDigJQgSS9PIGJvdW5kYXJ5LCBzY2hlbWFzLCBhbmQgT3BlbkFQSSBnZW5lcmF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHtcbiAgRmxvd0NoYXJ0Q29udHJhY3QsXG4gIEZsb3dDaGFydENvbnRyYWN0T3B0aW9ucyxcbiAgSnNvblNjaGVtYSxcbiAgT3BlbkFQSU9wdGlvbnMsXG4gIE9wZW5BUElTcGVjLFxufSBmcm9tICcuL2xpYi9jb250cmFjdC9pbmRleC5qcyc7XG5leHBvcnQgeyBkZWZpbmVDb250cmFjdCB9IGZyb20gJy4vbGliL2NvbnRyYWN0L2luZGV4LmpzJztcbmV4cG9ydCB7IG5vcm1hbGl6ZVNjaGVtYSwgem9kVG9Kc29uU2NoZW1hIH0gZnJvbSAnLi9saWIvY29udHJhY3QvaW5kZXguanMnO1xuZXhwb3J0IHsgZ2VuZXJhdGVPcGVuQVBJIH0gZnJvbSAnLi9saWIvY29udHJhY3QvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY2hlbWEg4oCUIFVuaWZpZWQgZGV0ZWN0aW9uLCB2YWxpZGF0aW9uLCBhbmQgc3RydWN0dXJlZCBlcnJvcnNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBTY2hlbWFLaW5kLCBWYWxpZGF0aW9uSXNzdWUsIFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuZXhwb3J0IHsgZGV0ZWN0U2NoZW1hLCBpc1ZhbGlkYXRhYmxlLCBpc1pvZCB9IGZyb20gJy4vbGliL3NjaGVtYS9pbmRleC5qcyc7XG5leHBvcnQgeyBJbnB1dFZhbGlkYXRpb25FcnJvciwgdmFsaWRhdGVBZ2FpbnN0U2NoZW1hLCB2YWxpZGF0ZU9yVGhyb3cgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuIl19
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFPSCxPQUFPLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFlckUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQU92RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFZbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFN0UsK0VBQStFO0FBQy9FLDBDQUEwQztBQUMxQywrRUFBK0U7QUFFL0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5ELHVCQUF1QjtBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRTlFLGtGQUFrRjtBQUNsRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBYXJELDhCQUE4QjtBQUM5QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQXVCMUQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBSTFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3pFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBMEJ0RSxPQUFPLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMzRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEZvb3RQcmludCDigJQgUHVibGljIEFQSSAodjIuMClcbiAqXG4gKiBUaGUgZmxvd2NoYXJ0IHBhdHRlcm4gZm9yIGJhY2tlbmQgY29kZS5cbiAqIEJ1aWxkIOKGkiBEZXNjcmliZSDihpIgUnVuLlxuICpcbiAqIEZvciBhZHZhbmNlZC9pbnRlcm5hbCBBUElzLCBpbXBvcnQgZnJvbSAnZm9vdHByaW50anMvYWR2YW5jZWQnLlxuICogRm9yIHJlY29yZGVyIGZhY3RvcmllcywgaW1wb3J0IGZyb20gJ2Zvb3RwcmludGpzL3JlY29yZGVycycuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQnVpbGRlciDigJQgRmxvd2NoYXJ0IGNvbnN0cnVjdGlvblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgdHlwZSB7IEZsb3dDaGFydCwgU3RhZ2VGdW5jdGlvbiBhcyBTdGFnZUhhbmRsZXIsIFN0cmVhbUhhbmRsZXJzIH0gZnJvbSAnLi9saWIvYnVpbGRlci9pbmRleC5qcyc7XG5leHBvcnQgeyBmbG93Q2hhcnQsIEZsb3dDaGFydEJ1aWxkZXIgfSBmcm9tICcuL2xpYi9idWlsZGVyL2luZGV4LmpzJztcblxuLy8gVHlwZWRTY29wZSDigJQgdHlwZWQgcHJvcGVydHkgYWNjZXNzIChubyBjYXN0cyBuZWVkZWQpXG5leHBvcnQgdHlwZSB7IFR5cGVkU3RhZ2VGdW5jdGlvbiB9IGZyb20gJy4vbGliL2J1aWxkZXIvdHlwZWRGbG93Q2hhcnQuanMnO1xuZXhwb3J0IHR5cGUgeyBTY29wZU1ldGhvZHMsIFR5cGVkU2NvcGUgfSBmcm9tICcuL2xpYi9yZWFjdGl2ZS9pbmRleC5qcyc7XG5cbi8vIERlY2lzaW9uIHJlYXNvbmluZyBjYXB0dXJlXG5leHBvcnQgdHlwZSB7XG4gIERlY2lkZVJ1bGUsXG4gIERlY2lzaW9uRXZpZGVuY2UsXG4gIERlY2lzaW9uUmVzdWx0LFxuICBGaWx0ZXJPcHMsXG4gIFNlbGVjdGlvblJlc3VsdCxcbiAgV2hlcmVGaWx0ZXIsXG59IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5leHBvcnQgeyBkZWNpZGUsIHNlbGVjdCB9IGZyb20gJy4vbGliL2RlY2lkZS9pbmRleC5qcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJ1bm5lciDigJQgdjIgQVBJOiBjaGFydC5yZWNvcmRlcigpLnJ1bigpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHsgUnVuUmVzdWx0IH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcbmV4cG9ydCB7IEZsb3dDaGFydEV4ZWN1dG9yIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcbmV4cG9ydCB7IFJ1bkNvbnRleHQgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuZXhwb3J0IHR5cGUge1xuICBPcGVuQVBJT3B0aW9ucyBhcyBDaGFydE9wZW5BUElPcHRpb25zLFxuICBNQ1BUb29sRGVzY3JpcHRpb24sXG4gIFJ1bm5hYmxlRmxvd0NoYXJ0LFxufSBmcm9tICcuL2xpYi9ydW5uZXIvUnVubmFibGVDaGFydC5qcyc7XG5cbi8vIENvbXBvc2FibGVSdW5uZXIg4oCUIGludGVyZmFjZSBmb3Igc3ViZmxvdyBjb21wb3NpdGlvblxuZXhwb3J0IHR5cGUgeyBDb21wb3NhYmxlUnVubmVyIH0gZnJvbSAnLi9saWIvcnVubmVyL2luZGV4LmpzJztcblxuLy8gU25hcHNob3QgbmF2aWdhdGlvblxuZXhwb3J0IHR5cGUgeyBSZWNvcmRlclNuYXBzaG90LCBSdW50aW1lU25hcHNob3QsIFN1YnRyZWVTbmFwc2hvdCB9IGZyb20gJy4vbGliL3J1bm5lci9pbmRleC5qcyc7XG5leHBvcnQgeyBnZXRTdWJ0cmVlU25hcHNob3QsIGxpc3RTdWJmbG93UGF0aHMgfSBmcm9tICcuL2xpYi9ydW5uZXIvaW5kZXguanMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTY29wZSDigJQgUGVyLXN0YWdlIGZhY2FkZXMgYW5kIHJlY29yZGVyc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgeyBTY29wZUZhY2FkZSB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLy8gRGV2LW1vZGUgZGlhZ25vc3RpY3NcbmV4cG9ydCB7IGRpc2FibGVEZXZNb2RlLCBlbmFibGVEZXZNb2RlIH0gZnJvbSAnLi9saWIvc2NvcGUvZGV0ZWN0Q2lyY3VsYXIuanMnO1xuXG4vLyBSZWNvcmRlcnMgKGNsYXNzIGV4cG9ydHMg4oCUIHByZWZlciBmYWN0b3J5IGZ1bmN0aW9ucyBmcm9tIGZvb3RwcmludGpzL3JlY29yZGVycylcbmV4cG9ydCB7IE1ldHJpY1JlY29yZGVyIH0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuZXhwb3J0IHsgRGVidWdSZWNvcmRlciB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLy8gUmVjb3JkZXIgaW50ZXJmYWNlIGFuZCBldmVudCB0eXBlcyAoZm9yIGN1c3RvbSByZWNvcmRlcnMpXG5leHBvcnQgdHlwZSB7XG4gIENvbW1pdEV2ZW50LFxuICBFcnJvckV2ZW50LFxuICBSZWFkRXZlbnQsXG4gIFJlY29yZGVyLFxuICBSZWRhY3Rpb25Qb2xpY3ksXG4gIFJlZGFjdGlvblJlcG9ydCxcbiAgV3JpdGVFdmVudCxcbn0gZnJvbSAnLi9saWIvc2NvcGUvaW5kZXguanMnO1xuXG4vLyBab2QtYmFzZWQgc2NvcGUgZGVmaW5pdGlvbnNcbmV4cG9ydCB7IGRlZmluZVNjb3BlRnJvbVpvZCB9IGZyb20gJy4vbGliL3Njb3BlL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRW5naW5lIOKAlCBOYXJyYXRpdmUgdHlwZXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUgeyBDb21iaW5lZE5hcnJhdGl2ZUVudHJ5IH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gRmxvd1JlY29yZGVyIOKAlCBQbHVnZ2FibGUgb2JzZXJ2ZXIgZm9yIGNvbnRyb2wgZmxvdyBldmVudHNcbmV4cG9ydCB0eXBlIHtcbiAgRmxvd0JyZWFrRXZlbnQsXG4gIEZsb3dEZWNpc2lvbkV2ZW50LFxuICBGbG93RXJyb3JFdmVudCxcbiAgRmxvd0ZvcmtFdmVudCxcbiAgRmxvd0xvb3BFdmVudCxcbiAgRmxvd05leHRFdmVudCxcbiAgRmxvd1JlY29yZGVyLFxuICBGbG93U2VsZWN0ZWRFdmVudCxcbiAgRmxvd1N0YWdlRXZlbnQsXG4gIEZsb3dTdWJmbG93RXZlbnQsXG4gIEZsb3dTdWJmbG93UmVnaXN0ZXJlZEV2ZW50LFxuICBUcmF2ZXJzYWxDb250ZXh0LFxufSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gU3RydWN0dXJlZCBlcnJvcnNcbmV4cG9ydCB0eXBlIHsgU3RydWN0dXJlZEVycm9ySW5mbyB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBleHRyYWN0RXJyb3JJbmZvLCBmb3JtYXRFcnJvckluZm8gfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuXG4vLyBCdWlsdC1pbiBGbG93UmVjb3JkZXIgc3RyYXRlZ2llcyAocHJlZmVyIGZhY3RvcnkgZnVuY3Rpb25zIGZyb20gZm9vdHByaW50anMvcmVjb3JkZXJzKVxuZXhwb3J0IHR5cGUgeyBNYW5pZmVzdEVudHJ5IH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IE1hbmlmZXN0Rmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IEFkYXB0aXZlTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IE1pbGVzdG9uZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBQcm9ncmVzc2l2ZU5hcnJhdGl2ZUZsb3dSZWNvcmRlciB9IGZyb20gJy4vbGliL2VuZ2luZS9pbmRleC5qcyc7XG5leHBvcnQgeyBSTEVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgU2VwYXJhdGVOYXJyYXRpdmVGbG93UmVjb3JkZXIgfSBmcm9tICcuL2xpYi9lbmdpbmUvaW5kZXguanMnO1xuZXhwb3J0IHsgU2lsZW50TmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB7IFdpbmRvd2VkTmFycmF0aXZlRmxvd1JlY29yZGVyIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRW5naW5lIHR5cGVzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHsgRXhlY3V0aW9uRW52LCBSdW5PcHRpb25zIH0gZnJvbSAnLi9saWIvZW5naW5lL2luZGV4LmpzJztcbmV4cG9ydCB0eXBlIHsgU2NvcGVGYWN0b3J5IH0gZnJvbSAnLi9saWIvbWVtb3J5L2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ29udHJhY3QgdHlwZXMgKHVzZSAuY29udHJhY3QoKSBvbiBidWlsZGVyICsgY2hhcnQudG9PcGVuQVBJKCkgaW5zdGVhZClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IHR5cGUge1xuICBGbG93Q2hhcnRDb250cmFjdCxcbiAgRmxvd0NoYXJ0Q29udHJhY3RPcHRpb25zLFxuICBKc29uU2NoZW1hLFxuICBPcGVuQVBJT3B0aW9ucyxcbiAgT3BlbkFQSVNwZWMsXG59IGZyb20gJy4vbGliL2NvbnRyYWN0L2luZGV4LmpzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU2NoZW1hIOKAlCBWYWxpZGF0aW9uXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCB0eXBlIHsgU2NoZW1hS2luZCwgVmFsaWRhdGlvbklzc3VlLCBWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnLi9saWIvc2NoZW1hL2luZGV4LmpzJztcbmV4cG9ydCB7IGRldGVjdFNjaGVtYSwgaXNWYWxpZGF0YWJsZSwgaXNab2QgfSBmcm9tICcuL2xpYi9zY2hlbWEvaW5kZXguanMnO1xuZXhwb3J0IHsgSW5wdXRWYWxpZGF0aW9uRXJyb3IsIHZhbGlkYXRlQWdhaW5zdFNjaGVtYSwgdmFsaWRhdGVPclRocm93IH0gZnJvbSAnLi9saWIvc2NoZW1hL2luZGV4LmpzJztcbiJdfQ==
|