@ngrx/signals 18.0.0-rc.1 → 18.0.0-rc.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/entities/src/entity-config.d.ts +17 -0
- package/entities/src/helpers.d.ts +9 -9
- package/entities/src/index.d.ts +2 -1
- package/entities/src/models.d.ts +4 -7
- package/entities/src/updaters/add-entities.d.ts +3 -3
- package/entities/src/updaters/add-entity.d.ts +3 -3
- package/entities/src/updaters/set-all-entities.d.ts +3 -3
- package/entities/src/updaters/set-entities.d.ts +3 -3
- package/entities/src/updaters/set-entity.d.ts +3 -3
- package/entities/src/updaters/update-all-entities.d.ts +14 -3
- package/entities/src/updaters/update-entities.d.ts +45 -11
- package/entities/src/updaters/update-entity.d.ts +23 -6
- package/entities/src/with-entities.d.ts +8 -20
- package/esm2022/entities/src/entity-config.mjs +4 -0
- package/esm2022/entities/src/helpers.mjs +28 -12
- package/esm2022/entities/src/index.mjs +2 -1
- package/esm2022/entities/src/models.mjs +1 -1
- package/esm2022/entities/src/updaters/add-entities.mjs +4 -4
- package/esm2022/entities/src/updaters/add-entity.mjs +4 -4
- package/esm2022/entities/src/updaters/set-all-entities.mjs +4 -4
- package/esm2022/entities/src/updaters/set-entities.mjs +4 -4
- package/esm2022/entities/src/updaters/set-entity.mjs +4 -4
- package/esm2022/entities/src/updaters/update-all-entities.mjs +4 -3
- package/esm2022/entities/src/updaters/update-entities.mjs +4 -3
- package/esm2022/entities/src/updaters/update-entity.mjs +4 -3
- package/esm2022/entities/src/with-entities.mjs +1 -1
- package/esm2022/rxjs-interop/src/rx-method.mjs +1 -1
- package/esm2022/src/index.mjs +2 -3
- package/esm2022/src/signal-state.mjs +7 -7
- package/esm2022/src/signal-store-assertions.mjs +15 -0
- package/esm2022/src/signal-store-feature.mjs +1 -1
- package/esm2022/src/signal-store-models.mjs +1 -1
- package/esm2022/src/signal-store.mjs +16 -13
- package/esm2022/src/state-source.mjs +48 -0
- package/esm2022/src/with-computed.mjs +8 -9
- package/esm2022/src/with-hooks.mjs +8 -8
- package/esm2022/src/with-methods.mjs +7 -11
- package/esm2022/src/with-state.mjs +9 -12
- package/fesm2022/ngrx-signals-entities.mjs +48 -25
- package/fesm2022/ngrx-signals-entities.mjs.map +1 -1
- package/fesm2022/ngrx-signals-rxjs-interop.mjs.map +1 -1
- package/fesm2022/ngrx-signals.mjs +98 -63
- package/fesm2022/ngrx-signals.mjs.map +1 -1
- package/migrations/18_0_0-rc_3-protected-state/index.js +93 -0
- package/migrations/18_0_0-rc_3-protected-state/index.js.map +1 -0
- package/migrations/18_0_0-rc_3-writablestatesource/index.js +43 -0
- package/migrations/18_0_0-rc_3-writablestatesource/index.js.map +1 -0
- package/migrations/migration.json +12 -1
- package/package.json +1 -1
- package/rxjs-interop/src/rx-method.d.ts +1 -2
- package/src/index.d.ts +4 -5
- package/src/signal-state.d.ts +2 -3
- package/src/signal-store-assertions.d.ts +2 -0
- package/src/signal-store-feature.d.ts +26 -19
- package/src/signal-store-models.d.ts +9 -28
- package/src/signal-store.d.ts +139 -88
- package/src/state-source.d.ts +18 -0
- package/src/with-computed.d.ts +5 -3
- package/src/with-hooks.d.ts +4 -4
- package/src/with-methods.d.ts +5 -3
- package/src/with-state.d.ts +6 -2
- package/esm2022/src/get-state.mjs +0 -5
- package/esm2022/src/helpers.mjs +0 -9
- package/esm2022/src/patch-state.mjs +0 -8
- package/esm2022/src/state-signal.mjs +0 -2
- package/src/get-state.d.ts +0 -2
- package/src/helpers.d.ts +0 -1
- package/src/patch-state.d.ts +0 -4
- package/src/state-signal.d.ts +0 -5
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
import { DestroyRef, inject, Injectable, signal } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { STATE_SOURCE } from './state-source';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export function signalStore(...args) {
|
|
5
5
|
const signalStoreArgs = [...args];
|
|
6
|
-
const config =
|
|
7
|
-
?
|
|
8
|
-
:
|
|
6
|
+
const config = typeof signalStoreArgs[0] === 'function'
|
|
7
|
+
? {}
|
|
8
|
+
: signalStoreArgs.shift();
|
|
9
9
|
const features = signalStoreArgs;
|
|
10
10
|
class SignalStore {
|
|
11
11
|
constructor() {
|
|
12
12
|
const innerStore = features.reduce((store, feature) => feature(store), getInitialInnerStore());
|
|
13
|
-
const {
|
|
14
|
-
const
|
|
15
|
-
this[
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
const { stateSignals, computedSignals, methods, hooks } = innerStore;
|
|
14
|
+
const storeMembers = { ...stateSignals, ...computedSignals, ...methods };
|
|
15
|
+
this[STATE_SOURCE] =
|
|
16
|
+
config.protectedState === false
|
|
17
|
+
? innerStore[STATE_SOURCE]
|
|
18
|
+
: innerStore[STATE_SOURCE].asReadonly();
|
|
19
|
+
for (const key in storeMembers) {
|
|
20
|
+
this[key] = storeMembers[key];
|
|
18
21
|
}
|
|
19
22
|
const { onInit, onDestroy } = hooks;
|
|
20
23
|
if (onInit) {
|
|
@@ -35,11 +38,11 @@ export function signalStore(...args) {
|
|
|
35
38
|
}
|
|
36
39
|
export function getInitialInnerStore() {
|
|
37
40
|
return {
|
|
38
|
-
[
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
[STATE_SOURCE]: signal({}),
|
|
42
|
+
stateSignals: {},
|
|
43
|
+
computedSignals: {},
|
|
41
44
|
methods: {},
|
|
42
45
|
hooks: {},
|
|
43
46
|
};
|
|
44
47
|
}
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zaWduYWxzL3NyYy9zaWduYWwtc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFlLE1BQU0sZ0JBQWdCLENBQUM7O0FBbVMzRCxNQUFNLFVBQVUsV0FBVyxDQUN6QixHQUFHLElBQXlFO0lBRTVFLE1BQU0sZUFBZSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUVsQyxNQUFNLE1BQU0sR0FDVixZQUFZLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQztRQUNoQyxDQUFDLENBQUUsZUFBZSxDQUFDLEtBQUssRUFBd0I7UUFDaEQsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNULE1BQU0sUUFBUSxHQUFHLGVBQXVDLENBQUM7SUFFekQsTUFDTSxXQUFXO1FBQ2Y7WUFDRSxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUNoQyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFDbEMsb0JBQW9CLEVBQUUsQ0FDdkIsQ0FBQztZQUNGLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxVQUFVLENBQUM7WUFDdkQsTUFBTSxLQUFLLEdBQUcsRUFBRSxHQUFHLE1BQU0sRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1lBRW5ELElBQVksQ0FBQyxZQUFZLENBQUMsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7WUFFdkQsS0FBSyxNQUFNLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDdkIsSUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNsQyxDQUFDO1lBRUQsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFFcEMsSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDWCxNQUFNLEVBQUUsQ0FBQztZQUNYLENBQUM7WUFFRCxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDMUMsQ0FBQztRQUNILENBQUM7OEhBeEJHLFdBQVc7a0lBQVgsV0FBVyxjQURTLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSTs7K0ZBQzdDLFdBQVc7c0JBRGhCLFVBQVU7dUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVUsSUFBSSxJQUFJLEVBQUU7O0lBNEJyRCxPQUFPLFdBQVcsQ0FBQztDQUNwQjtBQUVELE1BQU0sVUFBVSxvQkFBb0I7SUFDbEMsT0FBTztRQUNMLENBQUMsWUFBWSxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUMxQixNQUFNLEVBQUUsRUFBRTtRQUNWLE9BQU8sRUFBRSxFQUFFO1FBQ1gsT0FBTyxFQUFFLEVBQUU7UUFDWCxLQUFLLEVBQUUsRUFBRTtLQUNWLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgaW5qZWN0LCBJbmplY3RhYmxlLCBzaWduYWwsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNUQVRFX1NJR05BTCwgU3RhdGVTaWduYWwgfSBmcm9tICcuL3N0YXRlLXNpZ25hbCc7XG5pbXBvcnQge1xuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIElubmVyU2lnbmFsU3RvcmUsXG4gIE1lcmdlRmVhdHVyZVJlc3VsdHMsXG4gIFNpZ25hbFN0b3JlQ29uZmlnLFxuICBTaWduYWxTdG9yZUZlYXR1cmUsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgU2lnbmFsU3RvcmVQcm9wcyxcbn0gZnJvbSAnLi9zaWduYWwtc3RvcmUtbW9kZWxzJztcbmltcG9ydCB7IFByZXR0aWZ5IH0gZnJvbSAnLi90cy1oZWxwZXJzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0PihcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPlxuKTogVHlwZTxTaWduYWxTdG9yZVByb3BzPEYxPiAmIFN0YXRlU2lnbmFsPFByZXR0aWZ5PEYxWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjJdPlxuPihcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj5cbik6IFR5cGU8U2lnbmFsU3RvcmVQcm9wczxSPiAmIFN0YXRlU2lnbmFsPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzXT5cbj4oXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMl0+LCBGMz5cbik6IFR5cGU8U2lnbmFsU3RvcmVQcm9wczxSPiAmIFN0YXRlU2lnbmFsPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gTWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjRdPlxuPihcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyXT4sIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzXT4sIEY0PlxuKTogVHlwZTxTaWduYWxTdG9yZVByb3BzPFI+ICYgU3RhdGVTaWduYWw8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gTWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjQsIEY1XT5cbj4oXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMl0+LCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGM10+LCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjRdPiwgRjU+XG4pOiBUeXBlPFNpZ25hbFN0b3JlUHJvcHM8Uj4gJiBTdGF0ZVNpZ25hbDxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gTWVyZ2VGZWF0dXJlUmVzdWx0czxcbiAgICBbRjEsIEYyLCBGMywgRjQsIEY1LCBGNl1cbiAgPlxuPihcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyXT4sIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzXT4sIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzLCBGNF0+LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjQsIEY1XT4sIEY2PlxuKTogVHlwZTxTaWduYWxTdG9yZVByb3BzPFI+ICYgU3RhdGVTaWduYWw8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjcgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBNZXJnZUZlYXR1cmVSZXN1bHRzPFxuICAgIFtGMSwgRjIsIEYzLCBGNCwgRjUsIEY2LCBGN11cbiAgPlxuPihcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyXT4sIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzXT4sIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzLCBGNF0+LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjQsIEY1XT4sIEY2PixcbiAgZjc6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzLCBGNCwgRjUsIEY2XT4sIEY3PlxuKTogVHlwZTxTaWduYWxTdG9yZVByb3BzPFI+ICYgU3RhdGVTaWduYWw8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjcgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY4IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gTWVyZ2VGZWF0dXJlUmVzdWx0czxcbiAgICBbRjEsIEYyLCBGMywgRjQsIEY1LCBGNiwgRjcsIEY4XVxuICA+XG4+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjJdPiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjNdPiwgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0XT4sIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzLCBGNCwgRjVdPiwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0LCBGNSwgRjZdPiwgRjc+LFxuICBmODogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0LCBGNSwgRjYsIEY3XT4sIEY4PlxuKTogVHlwZTxTaWduYWxTdG9yZVByb3BzPFI+ICYgU3RhdGVTaWduYWw8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjcgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY4IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IE1lcmdlRmVhdHVyZVJlc3VsdHM8XG4gICAgW0YxLCBGMiwgRjMsIEY0LCBGNSwgRjYsIEY3LCBGOCwgRjldXG4gID5cbj4oXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMl0+LCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGM10+LCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjRdPiwgRjU+LFxuICBmNjogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0LCBGNV0+LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjQsIEY1LCBGNl0+LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjQsIEY1LCBGNiwgRjddPiwgRjg+LFxuICBmOTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0LCBGNSwgRjYsIEY3LCBGOF0+LFxuICAgIEY5XG4gID5cbik6IFR5cGU8U2lnbmFsU3RvcmVQcm9wczxSPiAmIFN0YXRlU2lnbmFsPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdD4oXG4gIGNvbmZpZzogU2lnbmFsU3RvcmVDb25maWcsXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT5cbik6IFR5cGU8U2lnbmFsU3RvcmVQcm9wczxGMT4gJiBTdGF0ZVNpZ25hbDxQcmV0dGlmeTxGMVsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gTWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyXT5cbj4oXG4gIGNvbmZpZzogU2lnbmFsU3RvcmVDb25maWcsXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+XG4pOiBUeXBlPFNpZ25hbFN0b3JlUHJvcHM8Uj4gJiBTdGF0ZVNpZ25hbDxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gTWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGM10+XG4+KFxuICBjb25maWc6IFNpZ25hbFN0b3JlQ29uZmlnLFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjJdPiwgRjM+XG4pOiBUeXBlPFNpZ25hbFN0b3JlUHJvcHM8Uj4gJiBTdGF0ZVNpZ25hbDxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0XT5cbj4oXG4gIGNvbmZpZzogU2lnbmFsU3RvcmVDb25maWcsXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMl0+LCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGM10+LCBGND5cbik6IFR5cGU8U2lnbmFsU3RvcmVQcm9wczxSPiAmIFN0YXRlU2lnbmFsPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0LCBGNV0+XG4+KFxuICBjb25maWc6IFNpZ25hbFN0b3JlQ29uZmlnLFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjJdPiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjNdPiwgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0XT4sIEY1PlxuKTogVHlwZTxTaWduYWxTdG9yZVByb3BzPFI+ICYgU3RhdGVTaWduYWw8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IE1lcmdlRmVhdHVyZVJlc3VsdHM8XG4gICAgW0YxLCBGMiwgRjMsIEY0LCBGNSwgRjZdXG4gID5cbj4oXG4gIGNvbmZpZzogU2lnbmFsU3RvcmVDb25maWcsXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMl0+LCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGM10+LCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjRdPiwgRjU+LFxuICBmNjogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0LCBGNV0+LCBGNj5cbik6IFR5cGU8U2lnbmFsU3RvcmVQcm9wczxSPiAmIFN0YXRlU2lnbmFsPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gTWVyZ2VGZWF0dXJlUmVzdWx0czxcbiAgICBbRjEsIEYyLCBGMywgRjQsIEY1LCBGNiwgRjddXG4gID5cbj4oXG4gIGNvbmZpZzogU2lnbmFsU3RvcmVDb25maWcsXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMl0+LCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGM10+LCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjRdPiwgRjU+LFxuICBmNjogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0LCBGNV0+LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjQsIEY1LCBGNl0+LCBGNz5cbik6IFR5cGU8U2lnbmFsU3RvcmVQcm9wczxSPiAmIFN0YXRlU2lnbmFsPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IE1lcmdlRmVhdHVyZVJlc3VsdHM8XG4gICAgW0YxLCBGMiwgRjMsIEY0LCBGNSwgRjYsIEY3LCBGOF1cbiAgPlxuPihcbiAgY29uZmlnOiBTaWduYWxTdG9yZUNvbmZpZyxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyXT4sIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzXT4sIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzLCBGNF0+LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8TWVyZ2VGZWF0dXJlUmVzdWx0czxbRjEsIEYyLCBGMywgRjQsIEY1XT4sIEY2PixcbiAgZjc6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzLCBGNCwgRjUsIEY2XT4sIEY3PixcbiAgZjg6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzLCBGNCwgRjUsIEY2LCBGN10+LCBGOD5cbik6IFR5cGU8U2lnbmFsU3RvcmVQcm9wczxSPiAmIFN0YXRlU2lnbmFsPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjkgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBNZXJnZUZlYXR1cmVSZXN1bHRzPFxuICAgIFtGMSwgRjIsIEYzLCBGNCwgRjUsIEY2LCBGNywgRjgsIEY5XVxuICA+XG4+KFxuICBjb25maWc6IFNpZ25hbFN0b3JlQ29uZmlnLFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjJdPiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjNdPiwgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0XT4sIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzLCBGNCwgRjVdPiwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0LCBGNSwgRjZdPiwgRjc+LFxuICBmODogU2lnbmFsU3RvcmVGZWF0dXJlPE1lcmdlRmVhdHVyZVJlc3VsdHM8W0YxLCBGMiwgRjMsIEY0LCBGNSwgRjYsIEY3XT4sIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBNZXJnZUZlYXR1cmVSZXN1bHRzPFtGMSwgRjIsIEYzLCBGNCwgRjUsIEY2LCBGNywgRjhdPixcbiAgICBGOVxuICA+XG4pOiBUeXBlPFNpZ25hbFN0b3JlUHJvcHM8Uj4gJiBTdGF0ZVNpZ25hbDxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmUoXG4gIC4uLmFyZ3M6IFtTaWduYWxTdG9yZUNvbmZpZywgLi4uU2lnbmFsU3RvcmVGZWF0dXJlW11dIHwgU2lnbmFsU3RvcmVGZWF0dXJlW11cbik6IFR5cGU8U2lnbmFsU3RvcmVQcm9wczxhbnk+PiB7XG4gIGNvbnN0IHNpZ25hbFN0b3JlQXJncyA9IFsuLi5hcmdzXTtcblxuICBjb25zdCBjb25maWc6IFBhcnRpYWw8U2lnbmFsU3RvcmVDb25maWc+ID1cbiAgICAncHJvdmlkZWRJbicgaW4gc2lnbmFsU3RvcmVBcmdzWzBdXG4gICAgICA/IChzaWduYWxTdG9yZUFyZ3Muc2hpZnQoKSBhcyBTaWduYWxTdG9yZUNvbmZpZylcbiAgICAgIDoge307XG4gIGNvbnN0IGZlYXR1cmVzID0gc2lnbmFsU3RvcmVBcmdzIGFzIFNpZ25hbFN0b3JlRmVhdHVyZVtdO1xuXG4gIEBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogY29uZmlnLnByb3ZpZGVkSW4gfHwgbnVsbCB9KVxuICBjbGFzcyBTaWduYWxTdG9yZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICBjb25zdCBpbm5lclN0b3JlID0gZmVhdHVyZXMucmVkdWNlKFxuICAgICAgICAoc3RvcmUsIGZlYXR1cmUpID0+IGZlYXR1cmUoc3RvcmUpLFxuICAgICAgICBnZXRJbml0aWFsSW5uZXJTdG9yZSgpXG4gICAgICApO1xuICAgICAgY29uc3QgeyBzbGljZXMsIHNpZ25hbHMsIG1ldGhvZHMsIGhvb2tzIH0gPSBpbm5lclN0b3JlO1xuICAgICAgY29uc3QgcHJvcHMgPSB7IC4uLnNsaWNlcywgLi4uc2lnbmFscywgLi4ubWV0aG9kcyB9O1xuXG4gICAgICAodGhpcyBhcyBhbnkpW1NUQVRFX1NJR05BTF0gPSBpbm5lclN0b3JlW1NUQVRFX1NJR05BTF07XG5cbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHByb3BzKSB7XG4gICAgICAgICh0aGlzIGFzIGFueSlba2V5XSA9IHByb3BzW2tleV07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgb25Jbml0LCBvbkRlc3Ryb3kgfSA9IGhvb2tzO1xuXG4gICAgICBpZiAob25Jbml0KSB7XG4gICAgICAgIG9uSW5pdCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAob25EZXN0cm95KSB7XG4gICAgICAgIGluamVjdChEZXN0cm95UmVmKS5vbkRlc3Ryb3kob25EZXN0cm95KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gU2lnbmFsU3RvcmU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRJbml0aWFsSW5uZXJTdG9yZSgpOiBJbm5lclNpZ25hbFN0b3JlIHtcbiAgcmV0dXJuIHtcbiAgICBbU1RBVEVfU0lHTkFMXTogc2lnbmFsKHt9KSxcbiAgICBzbGljZXM6IHt9LFxuICAgIHNpZ25hbHM6IHt9LFxuICAgIG1ldGhvZHM6IHt9LFxuICAgIGhvb2tzOiB7fSxcbiAgfTtcbn1cbiJdfQ==
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsLXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zaWduYWxzL3NyYy9zaWduYWwtc3RvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFvQyxNQUFNLGdCQUFnQixDQUFDOztBQW94Q2hGLE1BQU0sVUFBVSxXQUFXLENBQ3pCLEdBQUcsSUFBeUU7SUFFNUUsTUFBTSxlQUFlLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBRWxDLE1BQU0sTUFBTSxHQUNWLE9BQU8sZUFBZSxDQUFDLENBQUMsQ0FBQyxLQUFLLFVBQVU7UUFDdEMsQ0FBQyxDQUFDLEVBQUU7UUFDSixDQUFDLENBQUUsZUFBZSxDQUFDLEtBQUssRUFBd0IsQ0FBQztJQUNyRCxNQUFNLFFBQVEsR0FBRyxlQUF1QyxDQUFDO0lBRXpELE1BQ00sV0FBVztRQUNmO1lBQ0UsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FDaEMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQ2xDLG9CQUFvQixFQUFFLENBQ3ZCLENBQUM7WUFDRixNQUFNLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsVUFBVSxDQUFDO1lBQ3JFLE1BQU0sWUFBWSxHQUFHLEVBQUUsR0FBRyxZQUFZLEVBQUUsR0FBRyxlQUFlLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQztZQUV4RSxJQUFZLENBQUMsWUFBWSxDQUFDO2dCQUN6QixNQUFNLENBQUMsY0FBYyxLQUFLLEtBQUs7b0JBQzdCLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDO29CQUMxQixDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBRTVDLEtBQUssTUFBTSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7Z0JBQzlCLElBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekMsQ0FBQztZQUVELE1BQU0sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDO1lBRXBDLElBQUksTUFBTSxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxFQUFFLENBQUM7WUFDWCxDQUFDO1lBRUQsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDZCxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDOzhIQTNCRyxXQUFXO2tJQUFYLFdBQVcsY0FEUyxNQUFNLENBQUMsVUFBVSxJQUFJLElBQUk7OytGQUM3QyxXQUFXO3NCQURoQixVQUFVO3VCQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLElBQUksSUFBSSxFQUFFOztJQStCckQsT0FBTyxXQUFXLENBQUM7Q0FDcEI7QUFFRCxNQUFNLFVBQVUsb0JBQW9CO0lBQ2xDLE9BQU87UUFDTCxDQUFDLFlBQVksQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDMUIsWUFBWSxFQUFFLEVBQUU7UUFDaEIsZUFBZSxFQUFFLEVBQUU7UUFDbkIsT0FBTyxFQUFFLEVBQUU7UUFDWCxLQUFLLEVBQUUsRUFBRTtLQUNWLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgaW5qZWN0LCBJbmplY3RhYmxlLCBzaWduYWwsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNUQVRFX1NPVVJDRSwgU3RhdGVTb3VyY2UsIFdyaXRhYmxlU3RhdGVTb3VyY2UgfSBmcm9tICcuL3N0YXRlLXNvdXJjZSc7XG5pbXBvcnQge1xuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIElubmVyU2lnbmFsU3RvcmUsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBTdGF0ZVNpZ25hbHMsXG59IGZyb20gJy4vc2lnbmFsLXN0b3JlLW1vZGVscyc7XG5pbXBvcnQgeyBQcmV0dGlmeSB9IGZyb20gJy4vdHMtaGVscGVycyc7XG5cbnR5cGUgU2lnbmFsU3RvcmVDb25maWcgPSB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlPzogYm9vbGVhbiB9O1xuXG50eXBlIFNpZ25hbFN0b3JlTWVtYmVyczxGZWF0dXJlUmVzdWx0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0PiA9XG4gIFByZXR0aWZ5PFxuICAgIFN0YXRlU2lnbmFsczxGZWF0dXJlUmVzdWx0WydzdGF0ZSddPiAmXG4gICAgICBGZWF0dXJlUmVzdWx0Wydjb21wdXRlZCddICZcbiAgICAgIEZlYXR1cmVSZXN1bHRbJ21ldGhvZHMnXVxuICA+O1xuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8RjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxGMT4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxGMVsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJiBGMlxuPihcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgU3RhdGVTb3VyY2U8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICYgRjIgJiBGM1xuPihcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJiBGMiAmIEYzICYgRjRcbj4oXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMsIEY0PlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmIEYyICYgRjMgJiBGNCAmIEY1XG4+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2XG4+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgU3RhdGVTb3VyY2U8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjcgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGN1xuPihcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMywgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiwgRjc+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjhcbj4oXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMsIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCwgRjU+LFxuICBmNjogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUsIEY2PixcbiAgZjc6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYsIEY3PixcbiAgZjg6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNywgRjg+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjkgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmXG4gICAgRjIgJlxuICAgIEYzICZcbiAgICBGNCAmXG4gICAgRjUgJlxuICAgIEY2ICZcbiAgICBGNyAmXG4gICAgRjggJlxuICAgIEY5XG4+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgU3RhdGVTb3VyY2U8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjcgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY4IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEwIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJlxuICAgIEYyICZcbiAgICBGMyAmXG4gICAgRjQgJlxuICAgIEY1ICZcbiAgICBGNiAmXG4gICAgRjcgJlxuICAgIEY4ICZcbiAgICBGOSAmXG4gICAgRjEwXG4+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT4sXG4gIGYxMDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSwgRjEwPlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTAgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjkgJlxuICAgIEYxMCAmXG4gICAgRjExXG4+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT4sXG4gIGYxMDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSwgRjEwPixcbiAgZjExOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwLCBGMTE+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjkgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjExIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmXG4gICAgRjIgJlxuICAgIEYzICZcbiAgICBGNCAmXG4gICAgRjUgJlxuICAgIEY2ICZcbiAgICBGNyAmXG4gICAgRjggJlxuICAgIEY5ICZcbiAgICBGMTAgJlxuICAgIEYxMSAmXG4gICAgRjEyXG4+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT4sXG4gIGYxMDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSwgRjEwPixcbiAgZjExOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwLFxuICAgIEYxMVxuICA+LFxuICBmMTI6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEsXG4gICAgRjEyXG4gID5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgU3RhdGVTb3VyY2U8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjcgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY4IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEwIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJlxuICAgIEYyICZcbiAgICBGMyAmXG4gICAgRjQgJlxuICAgIEY1ICZcbiAgICBGNiAmXG4gICAgRjcgJlxuICAgIEY4ICZcbiAgICBGOSAmXG4gICAgRjEwICZcbiAgICBGMTEgJlxuICAgIEYxMiAmXG4gICAgRjEzXG4+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT4sXG4gIGYxMDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSwgRjEwPixcbiAgZjExOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwLFxuICAgIEYxMVxuICA+LFxuICBmMTI6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEsXG4gICAgRjEyXG4gID4sXG4gIGYxMzogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCAmIEYxMSAmIEYxMixcbiAgICBGMTNcbiAgPlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTAgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjkgJlxuICAgIEYxMCAmXG4gICAgRjExICZcbiAgICBGMTIgJlxuICAgIEYxMyAmXG4gICAgRjE0XG4+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT4sXG4gIGYxMDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSwgRjEwPixcbiAgZjExOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwLFxuICAgIEYxMVxuICA+LFxuICBmMTI6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEsXG4gICAgRjEyXG4gID4sXG4gIGYxMzogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCAmIEYxMSAmIEYxMixcbiAgICBGMTNcbiAgPixcbiAgZjE0OiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwICYgRjExICYgRjEyICYgRjEzLFxuICAgIEYxNFxuICA+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjkgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjExIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjE0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmXG4gICAgRjIgJlxuICAgIEYzICZcbiAgICBGNCAmXG4gICAgRjUgJlxuICAgIEY2ICZcbiAgICBGNyAmXG4gICAgRjggJlxuICAgIEY5ICZcbiAgICBGMTAgJlxuICAgIEYxMSAmXG4gICAgRjEyICZcbiAgICBGMTMgJlxuICAgIEYxNCAmXG4gICAgRjE1XG4+KFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT4sXG4gIGYxMDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSwgRjEwPixcbiAgZjExOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwLFxuICAgIEYxMVxuICA+LFxuICBmMTI6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEsXG4gICAgRjEyXG4gID4sXG4gIGYxMzogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCAmIEYxMSAmIEYxMixcbiAgICBGMTNcbiAgPixcbiAgZjE0OiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwICYgRjExICYgRjEyICYgRjEzLFxuICAgIEYxNFxuICA+LFxuICBmMTU6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEgJiBGMTIgJiBGMTMgJiBGMTQsXG4gICAgRjE1XG4gID5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgU3RhdGVTb3VyY2U8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0PihcbiAgY29uZmlnOiB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlPzogdHJ1ZSB9LFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxGMT4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxGMVsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJiBGMlxuPihcbiAgY29uZmlnOiB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlPzogdHJ1ZSB9LFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJiBGMiAmIEYzXG4+KFxuICBjb25maWc6IHsgcHJvdmlkZWRJbj86ICdyb290JzsgcHJvdGVjdGVkU3RhdGU/OiB0cnVlIH0sXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICYgRjIgJiBGMyAmIEY0XG4+KFxuICBjb25maWc6IHsgcHJvdmlkZWRJbj86ICdyb290JzsgcHJvdGVjdGVkU3RhdGU/OiB0cnVlIH0sXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMsIEY0PlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmIEYyICYgRjMgJiBGNCAmIEY1XG4+KFxuICBjb25maWc6IHsgcHJvdmlkZWRJbj86ICdyb290JzsgcHJvdGVjdGVkU3RhdGU/OiB0cnVlIH0sXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMsIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCwgRjU+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjZcbj4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZT86IHRydWUgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMywgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSwgRjY+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjdcbj4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZT86IHRydWUgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMywgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiwgRjc+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjhcbj4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZT86IHRydWUgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMywgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiwgRjc+LFxuICBmODogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3LCBGOD5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgU3RhdGVTb3VyY2U8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjcgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY4IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjlcbj4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZT86IHRydWUgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMywgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiwgRjc+LFxuICBmODogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3LCBGOD4sXG4gIGY5OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCwgRjk+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjkgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjkgJlxuICAgIEYxMFxuPihcbiAgY29uZmlnOiB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlPzogdHJ1ZSB9LFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT4sXG4gIGYxMDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSwgRjEwPlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTAgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjkgJlxuICAgIEYxMCAmXG4gICAgRjExXG4+KFxuICBjb25maWc6IHsgcHJvdmlkZWRJbj86ICdyb290JzsgcHJvdGVjdGVkU3RhdGU/OiB0cnVlIH0sXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMsIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCwgRjU+LFxuICBmNjogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUsIEY2PixcbiAgZjc6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYsIEY3PixcbiAgZjg6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNywgRjg+LFxuICBmOTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjgsIEY5PixcbiAgZjEwOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5LCBGMTA+LFxuICBmMTE6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAsIEYxMT5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgU3RhdGVTb3VyY2U8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjcgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY4IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEwIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjkgJlxuICAgIEYxMCAmXG4gICAgRjExICZcbiAgICBGMTJcbj4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZT86IHRydWUgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMywgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiwgRjc+LFxuICBmODogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3LCBGOD4sXG4gIGY5OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCwgRjk+LFxuICBmMTA6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjksIEYxMD4sXG4gIGYxMTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCxcbiAgICBGMTFcbiAgPixcbiAgZjEyOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwICYgRjExLFxuICAgIEYxMlxuICA+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjkgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjExIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjkgJlxuICAgIEYxMCAmXG4gICAgRjExICZcbiAgICBGMTIgJlxuICAgIEYxM1xuPihcbiAgY29uZmlnOiB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlPzogdHJ1ZSB9LFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT4sXG4gIGYxMDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSwgRjEwPixcbiAgZjExOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwLFxuICAgIEYxMVxuICA+LFxuICBmMTI6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEsXG4gICAgRjEyXG4gID4sXG4gIGYxMzogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCAmIEYxMSAmIEYxMixcbiAgICBGMTNcbiAgPlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTAgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjkgJlxuICAgIEYxMCAmXG4gICAgRjExICZcbiAgICBGMTIgJlxuICAgIEYxMyAmXG4gICAgRjE0XG4+KFxuICBjb25maWc6IHsgcHJvdmlkZWRJbj86ICdyb290JzsgcHJvdGVjdGVkU3RhdGU/OiB0cnVlIH0sXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMsIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCwgRjU+LFxuICBmNjogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUsIEY2PixcbiAgZjc6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYsIEY3PixcbiAgZjg6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNywgRjg+LFxuICBmOTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjgsIEY5PixcbiAgZjEwOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5LCBGMTA+LFxuICBmMTE6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAsXG4gICAgRjExXG4gID4sXG4gIGYxMjogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCAmIEYxMSxcbiAgICBGMTJcbiAgPixcbiAgZjEzOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwICYgRjExICYgRjEyLFxuICAgIEYxM1xuICA+LFxuICBmMTQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEgJiBGMTIgJiBGMTMsXG4gICAgRjE0XG4gID5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgU3RhdGVTb3VyY2U8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjcgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY4IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEwIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjkgJlxuICAgIEYxMCAmXG4gICAgRjExICZcbiAgICBGMTIgJlxuICAgIEYxMyAmXG4gICAgRjE0ICZcbiAgICBGMTVcbj4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZT86IHRydWUgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMywgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiwgRjc+LFxuICBmODogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3LCBGOD4sXG4gIGY5OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCwgRjk+LFxuICBmMTA6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjksIEYxMD4sXG4gIGYxMTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCxcbiAgICBGMTFcbiAgPixcbiAgZjEyOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwICYgRjExLFxuICAgIEYxMlxuICA+LFxuICBmMTM6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEgJiBGMTIsXG4gICAgRjEzXG4gID4sXG4gIGYxNDogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCAmIEYxMSAmIEYxMiAmIEYxMyxcbiAgICBGMTRcbiAgPixcbiAgZjE1OiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwICYgRjExICYgRjEyICYgRjEzICYgRjE0LFxuICAgIEYxNVxuICA+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5cbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdD4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZTogZmFsc2UgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8RjE+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxGMVsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJiBGMlxuPihcbiAgY29uZmlnOiB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlOiBmYWxzZSB9LFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBXcml0YWJsZVN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmIEYyICYgRjNcbj4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZTogZmFsc2UgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFdyaXRhYmxlU3RhdGVTb3VyY2U8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmIEYyICYgRjMgJiBGNFxuPihcbiAgY29uZmlnOiB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlOiBmYWxzZSB9LFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmIEYyICYgRjMgJiBGNCAmIEY1XG4+KFxuICBjb25maWc6IHsgcHJvdmlkZWRJbj86ICdyb290JzsgcHJvdGVjdGVkU3RhdGU6IGZhbHNlIH0sXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMsIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCwgRjU+XG4pOiBUeXBlPFNpZ25hbFN0b3JlTWVtYmVyczxSPiAmIFdyaXRhYmxlU3RhdGVTb3VyY2U8UHJldHRpZnk8Ulsnc3RhdGUnXT4+PjtcbmV4cG9ydCBmdW5jdGlvbiBzaWduYWxTdG9yZTxcbiAgRjEgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNlxuPihcbiAgY29uZmlnOiB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlOiBmYWxzZSB9LFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3XG4+KFxuICBjb25maWc6IHsgcHJvdmlkZWRJbj86ICdyb290JzsgcHJvdGVjdGVkU3RhdGU6IGZhbHNlIH0sXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMsIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCwgRjU+LFxuICBmNjogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUsIEY2PixcbiAgZjc6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYsIEY3PlxuKTogVHlwZTxTaWduYWxTdG9yZU1lbWJlcnM8Uj4gJiBXcml0YWJsZVN0YXRlU291cmNlPFByZXR0aWZ5PFJbJ3N0YXRlJ10+Pj47XG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmU8XG4gIEYxIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjYgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY3IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGOCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjhcbj4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZTogZmFsc2UgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMywgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiwgRjc+LFxuICBmODogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3LCBGOD5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJlxuICAgIEYyICZcbiAgICBGMyAmXG4gICAgRjQgJlxuICAgIEY1ICZcbiAgICBGNiAmXG4gICAgRjcgJlxuICAgIEY4ICZcbiAgICBGOVxuPihcbiAgY29uZmlnOiB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlOiBmYWxzZSB9LFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTAgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmXG4gICAgRjIgJlxuICAgIEYzICZcbiAgICBGNCAmXG4gICAgRjUgJlxuICAgIEY2ICZcbiAgICBGNyAmXG4gICAgRjggJlxuICAgIEY5ICZcbiAgICBGMTBcbj4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZTogZmFsc2UgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMywgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiwgRjc+LFxuICBmODogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3LCBGOD4sXG4gIGY5OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCwgRjk+LFxuICBmMTA6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjksIEYxMD5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTAgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjkgJlxuICAgIEYxMCAmXG4gICAgRjExXG4+KFxuICBjb25maWc6IHsgcHJvdmlkZWRJbj86ICdyb290JzsgcHJvdGVjdGVkU3RhdGU6IGZhbHNlIH0sXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMsIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCwgRjU+LFxuICBmNjogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUsIEY2PixcbiAgZjc6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYsIEY3PixcbiAgZjg6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNywgRjg+LFxuICBmOTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjgsIEY5PixcbiAgZjEwOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5LCBGMTA+LFxuICBmMTE6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAsIEYxMT5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTAgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJlxuICAgIEYyICZcbiAgICBGMyAmXG4gICAgRjQgJlxuICAgIEY1ICZcbiAgICBGNiAmXG4gICAgRjcgJlxuICAgIEY4ICZcbiAgICBGOSAmXG4gICAgRjEwICZcbiAgICBGMTEgJlxuICAgIEYxMlxuPihcbiAgY29uZmlnOiB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlOiBmYWxzZSB9LFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT4sXG4gIGYxMDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSwgRjEwPixcbiAgZjExOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwLFxuICAgIEYxMVxuICA+LFxuICBmMTI6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEsXG4gICAgRjEyXG4gID5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTAgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIFIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQgPSBGMSAmXG4gICAgRjIgJlxuICAgIEYzICZcbiAgICBGNCAmXG4gICAgRjUgJlxuICAgIEY2ICZcbiAgICBGNyAmXG4gICAgRjggJlxuICAgIEY5ICZcbiAgICBGMTAgJlxuICAgIEYxMSAmXG4gICAgRjEyICZcbiAgICBGMTNcbj4oXG4gIGNvbmZpZzogeyBwcm92aWRlZEluPzogJ3Jvb3QnOyBwcm90ZWN0ZWRTdGF0ZTogZmFsc2UgfSxcbiAgZjE6IFNpZ25hbFN0b3JlRmVhdHVyZTxFbXB0eUZlYXR1cmVSZXN1bHQsIEYxPixcbiAgZjI6IFNpZ25hbFN0b3JlRmVhdHVyZTx7fSAmIEYxLCBGMj4sXG4gIGYzOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiwgRjM+LFxuICBmNDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMywgRjQ+LFxuICBmNTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0LCBGNT4sXG4gIGY2OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSwgRjY+LFxuICBmNzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiwgRjc+LFxuICBmODogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3LCBGOD4sXG4gIGY5OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCwgRjk+LFxuICBmMTA6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjksIEYxMD4sXG4gIGYxMTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCxcbiAgICBGMTFcbiAgPixcbiAgZjEyOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwICYgRjExLFxuICAgIEYxMlxuICA+LFxuICBmMTM6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEgJiBGMTIsXG4gICAgRjEzXG4gID5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTAgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgUiBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCA9IEYxICZcbiAgICBGMiAmXG4gICAgRjMgJlxuICAgIEY0ICZcbiAgICBGNSAmXG4gICAgRjYgJlxuICAgIEY3ICZcbiAgICBGOCAmXG4gICAgRjkgJlxuICAgIEYxMCAmXG4gICAgRjExICZcbiAgICBGMTIgJlxuICAgIEYxMyAmXG4gICAgRjE0XG4+KFxuICBjb25maWc6IHsgcHJvdmlkZWRJbj86ICdyb290JzsgcHJvdGVjdGVkU3RhdGU6IGZhbHNlIH0sXG4gIGYxOiBTaWduYWxTdG9yZUZlYXR1cmU8RW1wdHlGZWF0dXJlUmVzdWx0LCBGMT4sXG4gIGYyOiBTaWduYWxTdG9yZUZlYXR1cmU8e30gJiBGMSwgRjI+LFxuICBmMzogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIsIEYzPixcbiAgZjQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMsIEY0PixcbiAgZjU6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCwgRjU+LFxuICBmNjogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUsIEY2PixcbiAgZjc6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYsIEY3PixcbiAgZjg6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNywgRjg+LFxuICBmOTogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjgsIEY5PixcbiAgZjEwOiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5LCBGMTA+LFxuICBmMTE6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAsXG4gICAgRjExXG4gID4sXG4gIGYxMjogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCAmIEYxMSxcbiAgICBGMTJcbiAgPixcbiAgZjEzOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwICYgRjExICYgRjEyLFxuICAgIEYxM1xuICA+LFxuICBmMTQ6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEgJiBGMTIgJiBGMTMsXG4gICAgRjE0XG4gID5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuZXhwb3J0IGZ1bmN0aW9uIHNpZ25hbFN0b3JlPFxuICBGMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjIgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYzIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjUgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY2IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGNyBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjggZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEY5IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTAgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxMSBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjEyIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBGMTMgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIEYxNCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgRjE1IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBSIGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0ID0gRjEgJlxuICAgIEYyICZcbiAgICBGMyAmXG4gICAgRjQgJlxuICAgIEY1ICZcbiAgICBGNiAmXG4gICAgRjcgJlxuICAgIEY4ICZcbiAgICBGOSAmXG4gICAgRjEwICZcbiAgICBGMTEgJlxuICAgIEYxMiAmXG4gICAgRjEzICZcbiAgICBGMTQgJlxuICAgIEYxNVxuPihcbiAgY29uZmlnOiB7IHByb3ZpZGVkSW4/OiAncm9vdCc7IHByb3RlY3RlZFN0YXRlOiBmYWxzZSB9LFxuICBmMTogU2lnbmFsU3RvcmVGZWF0dXJlPEVtcHR5RmVhdHVyZVJlc3VsdCwgRjE+LFxuICBmMjogU2lnbmFsU3RvcmVGZWF0dXJlPHt9ICYgRjEsIEYyPixcbiAgZjM6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyLCBGMz4sXG4gIGY0OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzLCBGND4sXG4gIGY1OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQsIEY1PixcbiAgZjY6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1LCBGNj4sXG4gIGY3OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2LCBGNz4sXG4gIGY4OiBTaWduYWxTdG9yZUZlYXR1cmU8RjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcsIEY4PixcbiAgZjk6IFNpZ25hbFN0b3JlRmVhdHVyZTxGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4LCBGOT4sXG4gIGYxMDogU2lnbmFsU3RvcmVGZWF0dXJlPEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSwgRjEwPixcbiAgZjExOiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwLFxuICAgIEYxMVxuICA+LFxuICBmMTI6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEsXG4gICAgRjEyXG4gID4sXG4gIGYxMzogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICAgIEYxICYgRjIgJiBGMyAmIEY0ICYgRjUgJiBGNiAmIEY3ICYgRjggJiBGOSAmIEYxMCAmIEYxMSAmIEYxMixcbiAgICBGMTNcbiAgPixcbiAgZjE0OiBTaWduYWxTdG9yZUZlYXR1cmU8XG4gICAgRjEgJiBGMiAmIEYzICYgRjQgJiBGNSAmIEY2ICYgRjcgJiBGOCAmIEY5ICYgRjEwICYgRjExICYgRjEyICYgRjEzLFxuICAgIEYxNFxuICA+LFxuICBmMTU6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgICBGMSAmIEYyICYgRjMgJiBGNCAmIEY1ICYgRjYgJiBGNyAmIEY4ICYgRjkgJiBGMTAgJiBGMTEgJiBGMTIgJiBGMTMgJiBGMTQsXG4gICAgRjE1XG4gID5cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPFI+ICYgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxSWydzdGF0ZSddPj4+O1xuXG5leHBvcnQgZnVuY3Rpb24gc2lnbmFsU3RvcmUoXG4gIC4uLmFyZ3M6IFtTaWduYWxTdG9yZUNvbmZpZywgLi4uU2lnbmFsU3RvcmVGZWF0dXJlW11dIHwgU2lnbmFsU3RvcmVGZWF0dXJlW11cbik6IFR5cGU8U2lnbmFsU3RvcmVNZW1iZXJzPGFueT4+IHtcbiAgY29uc3Qgc2lnbmFsU3RvcmVBcmdzID0gWy4uLmFyZ3NdO1xuXG4gIGNvbnN0IGNvbmZpZyA9XG4gICAgdHlwZW9mIHNpZ25hbFN0b3JlQXJnc1swXSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgPyB7fVxuICAgICAgOiAoc2lnbmFsU3RvcmVBcmdzLnNoaWZ0KCkgYXMgU2lnbmFsU3RvcmVDb25maWcpO1xuICBjb25zdCBmZWF0dXJlcyA9IHNpZ25hbFN0b3JlQXJncyBhcyBTaWduYWxTdG9yZUZlYXR1cmVbXTtcblxuICBASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46IGNvbmZpZy5wcm92aWRlZEluIHx8IG51bGwgfSlcbiAgY2xhc3MgU2lnbmFsU3RvcmUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgY29uc3QgaW5uZXJTdG9yZSA9IGZlYXR1cmVzLnJlZHVjZShcbiAgICAgICAgKHN0b3JlLCBmZWF0dXJlKSA9PiBmZWF0dXJlKHN0b3JlKSxcbiAgICAgICAgZ2V0SW5pdGlhbElubmVyU3RvcmUoKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHsgc3RhdGVTaWduYWxzLCBjb21wdXRlZFNpZ25hbHMsIG1ldGhvZHMsIGhvb2tzIH0gPSBpbm5lclN0b3JlO1xuICAgICAgY29uc3Qgc3RvcmVNZW1iZXJzID0geyAuLi5zdGF0ZVNpZ25hbHMsIC4uLmNvbXB1dGVkU2lnbmFscywgLi4ubWV0aG9kcyB9O1xuXG4gICAgICAodGhpcyBhcyBhbnkpW1NUQVRFX1NPVVJDRV0gPVxuICAgICAgICBjb25maWcucHJvdGVjdGVkU3RhdGUgPT09IGZhbHNlXG4gICAgICAgICAgPyBpbm5lclN0b3JlW1NUQVRFX1NPVVJDRV1cbiAgICAgICAgICA6IGlubmVyU3RvcmVbU1RBVEVfU09VUkNFXS5hc1JlYWRvbmx5KCk7XG5cbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHN0b3JlTWVtYmVycykge1xuICAgICAgICAodGhpcyBhcyBhbnkpW2tleV0gPSBzdG9yZU1lbWJlcnNba2V5XTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBvbkluaXQsIG9uRGVzdHJveSB9ID0gaG9va3M7XG5cbiAgICAgIGlmIChvbkluaXQpIHtcbiAgICAgICAgb25Jbml0KCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvbkRlc3Ryb3kpIHtcbiAgICAgICAgaW5qZWN0KERlc3Ryb3lSZWYpLm9uRGVzdHJveShvbkRlc3Ryb3kpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBTaWduYWxTdG9yZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEluaXRpYWxJbm5lclN0b3JlKCk6IElubmVyU2lnbmFsU3RvcmUge1xuICByZXR1cm4ge1xuICAgIFtTVEFURV9TT1VSQ0VdOiBzaWduYWwoe30pLFxuICAgIHN0YXRlU2lnbmFsczoge30sXG4gICAgY29tcHV0ZWRTaWduYWxzOiB7fSxcbiAgICBtZXRob2RzOiB7fSxcbiAgICBob29rczoge30sXG4gIH07XG59XG4iXX0=
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { assertInInjectionContext, DestroyRef, inject, Injector, untracked, } from '@angular/core';
|
|
2
|
+
import { SIGNAL } from '@angular/core/primitives/signals';
|
|
3
|
+
const STATE_WATCHERS = new WeakMap();
|
|
4
|
+
export const STATE_SOURCE = Symbol('STATE_SOURCE');
|
|
5
|
+
export function patchState(stateSource, ...updaters) {
|
|
6
|
+
stateSource[STATE_SOURCE].update((currentState) => updaters.reduce((nextState, updater) => ({
|
|
7
|
+
...nextState,
|
|
8
|
+
...(typeof updater === 'function' ? updater(nextState) : updater),
|
|
9
|
+
}), currentState));
|
|
10
|
+
notifyWatchers(stateSource);
|
|
11
|
+
}
|
|
12
|
+
export function getState(stateSource) {
|
|
13
|
+
return stateSource[STATE_SOURCE]();
|
|
14
|
+
}
|
|
15
|
+
export function watchState(stateSource, watcher, config) {
|
|
16
|
+
if (!config?.injector) {
|
|
17
|
+
assertInInjectionContext(watchState);
|
|
18
|
+
}
|
|
19
|
+
const injector = config?.injector ?? inject(Injector);
|
|
20
|
+
const destroyRef = injector.get(DestroyRef);
|
|
21
|
+
addWatcher(stateSource, watcher);
|
|
22
|
+
watcher(getState(stateSource));
|
|
23
|
+
const destroy = () => removeWatcher(stateSource, watcher);
|
|
24
|
+
destroyRef.onDestroy(destroy);
|
|
25
|
+
return { destroy };
|
|
26
|
+
}
|
|
27
|
+
function getWatchers(stateSource) {
|
|
28
|
+
return STATE_WATCHERS.get(stateSource[STATE_SOURCE][SIGNAL]) || [];
|
|
29
|
+
}
|
|
30
|
+
function notifyWatchers(stateSource) {
|
|
31
|
+
const watchers = getWatchers(stateSource);
|
|
32
|
+
for (const watcher of watchers) {
|
|
33
|
+
const state = untracked(() => getState(stateSource));
|
|
34
|
+
watcher(state);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function addWatcher(stateSource, watcher) {
|
|
38
|
+
const watchers = getWatchers(stateSource);
|
|
39
|
+
STATE_WATCHERS.set(stateSource[STATE_SOURCE][SIGNAL], [
|
|
40
|
+
...watchers,
|
|
41
|
+
watcher,
|
|
42
|
+
]);
|
|
43
|
+
}
|
|
44
|
+
function removeWatcher(stateSource, watcher) {
|
|
45
|
+
const watchers = getWatchers(stateSource);
|
|
46
|
+
STATE_WATCHERS.set(stateSource[STATE_SOURCE][SIGNAL], watchers.filter((w) => w !== watcher));
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtc291cmNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zaWduYWxzL3NyYy9zdGF0ZS1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHdCQUF3QixFQUN4QixVQUFVLEVBQ1YsTUFBTSxFQUNOLFFBQVEsRUFFUixTQUFTLEdBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRzFELE1BQU0sY0FBYyxHQUFHLElBQUksT0FBTyxFQUFvQyxDQUFDO0FBRXZFLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7QUFrQm5ELE1BQU0sVUFBVSxVQUFVLENBQ3hCLFdBQXVDLEVBQ3ZDLEdBQUcsUUFFRjtJQUVELFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUNoRCxRQUFRLENBQUMsTUFBTSxDQUNiLENBQUMsU0FBZ0IsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUIsR0FBRyxTQUFTO1FBQ1osR0FBRyxDQUFDLE9BQU8sT0FBTyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7S0FDbEUsQ0FBQyxFQUNGLFlBQVksQ0FDYixDQUNGLENBQUM7SUFFRixjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVELE1BQU0sVUFBVSxRQUFRLENBQ3RCLFdBQStCO0lBRS9CLE9BQU8sV0FBVyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7QUFDckMsQ0FBQztBQUVELE1BQU0sVUFBVSxVQUFVLENBQ3hCLFdBQStCLEVBQy9CLE9BQTRCLEVBQzVCLE1BQWdDO0lBRWhDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUM7UUFDdEIsd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sRUFBRSxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFNUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNqQyxPQUFPLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFFL0IsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxRCxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBRTlCLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQztBQUNyQixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQ2xCLFdBQStCO0lBRS9CLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUMsTUFBTSxDQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDL0UsQ0FBQztBQUVELFNBQVMsY0FBYyxDQUNyQixXQUErQjtJQUUvQixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFMUMsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7UUFDckQsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pCLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxVQUFVLENBQ2pCLFdBQStCLEVBQy9CLE9BQTRCO0lBRTVCLE1BQU0sUUFBUSxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxQyxjQUFjLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQVcsRUFBRTtRQUM5RCxHQUFHLFFBQVE7UUFDWCxPQUFPO0tBQ1IsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUNwQixXQUErQixFQUMvQixPQUE0QjtJQUU1QixNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUMsY0FBYyxDQUFDLEdBQUcsQ0FDaEIsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBVyxFQUMzQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssT0FBTyxDQUFDLENBQ3RDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXNzZXJ0SW5JbmplY3Rpb25Db250ZXh0LFxuICBEZXN0cm95UmVmLFxuICBpbmplY3QsXG4gIEluamVjdG9yLFxuICBTaWduYWwsXG4gIHVudHJhY2tlZCxcbiAgV3JpdGFibGVTaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU0lHTkFMIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9wcmltaXRpdmVzL3NpZ25hbHMnO1xuaW1wb3J0IHsgUHJldHRpZnkgfSBmcm9tICcuL3RzLWhlbHBlcnMnO1xuXG5jb25zdCBTVEFURV9XQVRDSEVSUyA9IG5ldyBXZWFrTWFwPG9iamVjdCwgQXJyYXk8U3RhdGVXYXRjaGVyPGFueT4+PigpO1xuXG5leHBvcnQgY29uc3QgU1RBVEVfU09VUkNFID0gU3ltYm9sKCdTVEFURV9TT1VSQ0UnKTtcblxuZXhwb3J0IHR5cGUgV3JpdGFibGVTdGF0ZVNvdXJjZTxTdGF0ZSBleHRlbmRzIG9iamVjdD4gPSB7XG4gIFtTVEFURV9TT1VSQ0VdOiBXcml0YWJsZVNpZ25hbDxTdGF0ZT47XG59O1xuXG5leHBvcnQgdHlwZSBTdGF0ZVNvdXJjZTxTdGF0ZSBleHRlbmRzIG9iamVjdD4gPSB7XG4gIFtTVEFURV9TT1VSQ0VdOiBTaWduYWw8U3RhdGU+O1xufTtcblxuZXhwb3J0IHR5cGUgUGFydGlhbFN0YXRlVXBkYXRlcjxTdGF0ZSBleHRlbmRzIG9iamVjdD4gPSAoXG4gIHN0YXRlOiBTdGF0ZVxuKSA9PiBQYXJ0aWFsPFN0YXRlPjtcblxuZXhwb3J0IHR5cGUgU3RhdGVXYXRjaGVyPFN0YXRlIGV4dGVuZHMgb2JqZWN0PiA9IChcbiAgc3RhdGU6IE5vSW5mZXI8U3RhdGU+XG4pID0+IHZvaWQ7XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXRjaFN0YXRlPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihcbiAgc3RhdGVTb3VyY2U6IFdyaXRhYmxlU3RhdGVTb3VyY2U8U3RhdGU+LFxuICAuLi51cGRhdGVyczogQXJyYXk8XG4gICAgUGFydGlhbDxQcmV0dGlmeTxTdGF0ZT4+IHwgUGFydGlhbFN0YXRlVXBkYXRlcjxQcmV0dGlmeTxTdGF0ZT4+XG4gID5cbik6IHZvaWQge1xuICBzdGF0ZVNvdXJjZVtTVEFURV9TT1VSQ0VdLnVwZGF0ZSgoY3VycmVudFN0YXRlKSA9PlxuICAgIHVwZGF0ZXJzLnJlZHVjZShcbiAgICAgIChuZXh0U3RhdGU6IFN0YXRlLCB1cGRhdGVyKSA9PiAoe1xuICAgICAgICAuLi5uZXh0U3RhdGUsXG4gICAgICAgIC4uLih0eXBlb2YgdXBkYXRlciA9PT0gJ2Z1bmN0aW9uJyA/IHVwZGF0ZXIobmV4dFN0YXRlKSA6IHVwZGF0ZXIpLFxuICAgICAgfSksXG4gICAgICBjdXJyZW50U3RhdGVcbiAgICApXG4gICk7XG5cbiAgbm90aWZ5V2F0Y2hlcnMoc3RhdGVTb3VyY2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdGU8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KFxuICBzdGF0ZVNvdXJjZTogU3RhdGVTb3VyY2U8U3RhdGU+XG4pOiBTdGF0ZSB7XG4gIHJldHVybiBzdGF0ZVNvdXJjZVtTVEFURV9TT1VSQ0VdKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3YXRjaFN0YXRlPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihcbiAgc3RhdGVTb3VyY2U6IFN0YXRlU291cmNlPFN0YXRlPixcbiAgd2F0Y2hlcjogU3RhdGVXYXRjaGVyPFN0YXRlPixcbiAgY29uZmlnPzogeyBpbmplY3Rvcj86IEluamVjdG9yIH1cbik6IHsgZGVzdHJveSgpOiB2b2lkIH0ge1xuICBpZiAoIWNvbmZpZz8uaW5qZWN0b3IpIHtcbiAgICBhc3NlcnRJbkluamVjdGlvbkNvbnRleHQod2F0Y2hTdGF0ZSk7XG4gIH1cblxuICBjb25zdCBpbmplY3RvciA9IGNvbmZpZz8uaW5qZWN0b3IgPz8gaW5qZWN0KEluamVjdG9yKTtcbiAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdG9yLmdldChEZXN0cm95UmVmKTtcblxuICBhZGRXYXRjaGVyKHN0YXRlU291cmNlLCB3YXRjaGVyKTtcbiAgd2F0Y2hlcihnZXRTdGF0ZShzdGF0ZVNvdXJjZSkpO1xuXG4gIGNvbnN0IGRlc3Ryb3kgPSAoKSA9PiByZW1vdmVXYXRjaGVyKHN0YXRlU291cmNlLCB3YXRjaGVyKTtcbiAgZGVzdHJveVJlZi5vbkRlc3Ryb3koZGVzdHJveSk7XG5cbiAgcmV0dXJuIHsgZGVzdHJveSB9O1xufVxuXG5mdW5jdGlvbiBnZXRXYXRjaGVyczxTdGF0ZSBleHRlbmRzIG9iamVjdD4oXG4gIHN0YXRlU291cmNlOiBTdGF0ZVNvdXJjZTxTdGF0ZT5cbik6IEFycmF5PFN0YXRlV2F0Y2hlcjxTdGF0ZT4+IHtcbiAgcmV0dXJuIFNUQVRFX1dBVENIRVJTLmdldChzdGF0ZVNvdXJjZVtTVEFURV9TT1VSQ0VdW1NJR05BTF0gYXMgb2JqZWN0KSB8fCBbXTtcbn1cblxuZnVuY3Rpb24gbm90aWZ5V2F0Y2hlcnM8U3RhdGUgZXh0ZW5kcyBvYmplY3Q+KFxuICBzdGF0ZVNvdXJjZTogU3RhdGVTb3VyY2U8U3RhdGU+XG4pOiB2b2lkIHtcbiAgY29uc3Qgd2F0Y2hlcnMgPSBnZXRXYXRjaGVycyhzdGF0ZVNvdXJjZSk7XG5cbiAgZm9yIChjb25zdCB3YXRjaGVyIG9mIHdhdGNoZXJzKSB7XG4gICAgY29uc3Qgc3RhdGUgPSB1bnRyYWNrZWQoKCkgPT4gZ2V0U3RhdGUoc3RhdGVTb3VyY2UpKTtcbiAgICB3YXRjaGVyKHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRXYXRjaGVyPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihcbiAgc3RhdGVTb3VyY2U6IFN0YXRlU291cmNlPFN0YXRlPixcbiAgd2F0Y2hlcjogU3RhdGVXYXRjaGVyPFN0YXRlPlxuKTogdm9pZCB7XG4gIGNvbnN0IHdhdGNoZXJzID0gZ2V0V2F0Y2hlcnMoc3RhdGVTb3VyY2UpO1xuICBTVEFURV9XQVRDSEVSUy5zZXQoc3RhdGVTb3VyY2VbU1RBVEVfU09VUkNFXVtTSUdOQUxdIGFzIG9iamVjdCwgW1xuICAgIC4uLndhdGNoZXJzLFxuICAgIHdhdGNoZXIsXG4gIF0pO1xufVxuXG5mdW5jdGlvbiByZW1vdmVXYXRjaGVyPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihcbiAgc3RhdGVTb3VyY2U6IFN0YXRlU291cmNlPFN0YXRlPixcbiAgd2F0Y2hlcjogU3RhdGVXYXRjaGVyPFN0YXRlPlxuKTogdm9pZCB7XG4gIGNvbnN0IHdhdGNoZXJzID0gZ2V0V2F0Y2hlcnMoc3RhdGVTb3VyY2UpO1xuICBTVEFURV9XQVRDSEVSUy5zZXQoXG4gICAgc3RhdGVTb3VyY2VbU1RBVEVfU09VUkNFXVtTSUdOQUxdIGFzIG9iamVjdCxcbiAgICB3YXRjaGVycy5maWx0ZXIoKHcpID0+IHcgIT09IHdhdGNoZXIpXG4gICk7XG59XG4iXX0=
|
|
@@ -1,16 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { assertUniqueStoreMembers } from './signal-store-assertions';
|
|
2
2
|
export function withComputed(signalsFactory) {
|
|
3
3
|
return (store) => {
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
const computedSignals = signalsFactory({
|
|
5
|
+
...store.stateSignals,
|
|
6
|
+
...store.computedSignals,
|
|
7
|
+
});
|
|
8
|
+
assertUniqueStoreMembers(store, Object.keys(computedSignals));
|
|
8
9
|
return {
|
|
9
10
|
...store,
|
|
10
|
-
|
|
11
|
-
signals: { ...store.signals, ...signals },
|
|
12
|
-
methods,
|
|
11
|
+
computedSignals: { ...store.computedSignals, ...computedSignals },
|
|
13
12
|
};
|
|
14
13
|
};
|
|
15
14
|
}
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1jb21wdXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc2lnbmFscy9zcmMvd2l0aC1jb21wdXRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQVVyRSxNQUFNLFVBQVUsWUFBWSxDQUkxQixjQUVvQjtJQUtwQixPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDZixNQUFNLGVBQWUsR0FBRyxjQUFjLENBQUM7WUFDckMsR0FBRyxLQUFLLENBQUMsWUFBWTtZQUNyQixHQUFHLEtBQUssQ0FBQyxlQUFlO1NBQ3pCLENBQUMsQ0FBQztRQUNILHdCQUF3QixDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFFOUQsT0FBTztZQUNMLEdBQUcsS0FBSztZQUNSLGVBQWUsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLGVBQWUsRUFBRSxHQUFHLGVBQWUsRUFBRTtTQUNKLENBQUM7SUFDbEUsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFzc2VydFVuaXF1ZVN0b3JlTWVtYmVycyB9IGZyb20gJy4vc2lnbmFsLXN0b3JlLWFzc2VydGlvbnMnO1xuaW1wb3J0IHtcbiAgSW5uZXJTaWduYWxTdG9yZSxcbiAgU2lnbmFsc0RpY3Rpb25hcnksXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBTdGF0ZVNpZ25hbHMsXG59IGZyb20gJy4vc2lnbmFsLXN0b3JlLW1vZGVscyc7XG5pbXBvcnQgeyBQcmV0dGlmeSB9IGZyb20gJy4vdHMtaGVscGVycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoQ29tcHV0ZWQ8XG4gIElucHV0IGV4dGVuZHMgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBDb21wdXRlZFNpZ25hbHMgZXh0ZW5kcyBTaWduYWxzRGljdGlvbmFyeVxuPihcbiAgc2lnbmFsc0ZhY3Rvcnk6IChcbiAgICBzdG9yZTogUHJldHRpZnk8U3RhdGVTaWduYWxzPElucHV0WydzdGF0ZSddPiAmIElucHV0Wydjb21wdXRlZCddPlxuICApID0+IENvbXB1dGVkU2lnbmFsc1xuKTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBJbnB1dCxcbiAgeyBzdGF0ZToge307IGNvbXB1dGVkOiBDb21wdXRlZFNpZ25hbHM7IG1ldGhvZHM6IHt9IH1cbj4ge1xuICByZXR1cm4gKHN0b3JlKSA9PiB7XG4gICAgY29uc3QgY29tcHV0ZWRTaWduYWxzID0gc2lnbmFsc0ZhY3Rvcnkoe1xuICAgICAgLi4uc3RvcmUuc3RhdGVTaWduYWxzLFxuICAgICAgLi4uc3RvcmUuY29tcHV0ZWRTaWduYWxzLFxuICAgIH0pO1xuICAgIGFzc2VydFVuaXF1ZVN0b3JlTWVtYmVycyhzdG9yZSwgT2JqZWN0LmtleXMoY29tcHV0ZWRTaWduYWxzKSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RvcmUsXG4gICAgICBjb21wdXRlZFNpZ25hbHM6IHsgLi4uc3RvcmUuY29tcHV0ZWRTaWduYWxzLCAuLi5jb21wdXRlZFNpZ25hbHMgfSxcbiAgICB9IGFzIElubmVyU2lnbmFsU3RvcmU8UmVjb3JkPHN0cmluZywgdW5rbm93bj4sIENvbXB1dGVkU2lnbmFscz47XG4gIH07XG59XG4iXX0=
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { STATE_SOURCE } from './state-source';
|
|
2
2
|
export function withHooks(hooksOrFactory) {
|
|
3
3
|
return (store) => {
|
|
4
|
-
const
|
|
5
|
-
[
|
|
6
|
-
...store.
|
|
7
|
-
...store.
|
|
4
|
+
const storeMembers = {
|
|
5
|
+
[STATE_SOURCE]: store[STATE_SOURCE],
|
|
6
|
+
...store.stateSignals,
|
|
7
|
+
...store.computedSignals,
|
|
8
8
|
...store.methods,
|
|
9
9
|
};
|
|
10
10
|
const hooks = typeof hooksOrFactory === 'function'
|
|
11
|
-
? hooksOrFactory(
|
|
11
|
+
? hooksOrFactory(storeMembers)
|
|
12
12
|
: hooksOrFactory;
|
|
13
13
|
const createHook = (name) => {
|
|
14
14
|
const hook = hooks[name];
|
|
@@ -18,7 +18,7 @@ export function withHooks(hooksOrFactory) {
|
|
|
18
18
|
if (currentHook) {
|
|
19
19
|
currentHook();
|
|
20
20
|
}
|
|
21
|
-
hook(
|
|
21
|
+
hook(storeMembers);
|
|
22
22
|
}
|
|
23
23
|
: currentHook;
|
|
24
24
|
};
|
|
@@ -31,4 +31,4 @@ export function withHooks(hooksOrFactory) {
|
|
|
31
31
|
};
|
|
32
32
|
};
|
|
33
33
|
}
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1ob29rcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc2lnbmFscy9zcmMvd2l0aC1ob29rcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUF1QixNQUFNLGdCQUFnQixDQUFDO0FBc0NuRSxNQUFNLFVBQVUsU0FBUyxDQUN2QixjQUt1QjtJQUV2QixPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDZixNQUFNLFlBQVksR0FBRztZQUNuQixDQUFDLFlBQVksQ0FBQyxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDbkMsR0FBRyxLQUFLLENBQUMsWUFBWTtZQUNyQixHQUFHLEtBQUssQ0FBQyxlQUFlO1lBQ3hCLEdBQUcsS0FBSyxDQUFDLE9BQU87U0FDakIsQ0FBQztRQUNGLE1BQU0sS0FBSyxHQUNULE9BQU8sY0FBYyxLQUFLLFVBQVU7WUFDbEMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUM7WUFDOUIsQ0FBQyxDQUFDLGNBQWMsQ0FBQztRQUNyQixNQUFNLFVBQVUsR0FBRyxDQUFDLElBQXdCLEVBQUUsRUFBRTtZQUM5QyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDekIsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUV0QyxPQUFPLElBQUk7Z0JBQ1QsQ0FBQyxDQUFDLEdBQUcsRUFBRTtvQkFDSCxJQUFJLFdBQVcsRUFBRSxDQUFDO3dCQUNoQixXQUFXLEVBQUUsQ0FBQztvQkFDaEIsQ0FBQztvQkFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3JCLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUNsQixDQUFDLENBQUM7UUFFRixPQUFPO1lBQ0wsR0FBRyxLQUFLO1lBQ1IsS0FBSyxFQUFFO2dCQUNMLE1BQU0sRUFBRSxVQUFVLENBQUMsUUFBUSxDQUFDO2dCQUM1QixTQUFTLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQzthQUNuQztTQUNGLENBQUM7SUFDSixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU1RBVEVfU09VUkNFLCBXcml0YWJsZVN0YXRlU291cmNlIH0gZnJvbSAnLi9zdGF0ZS1zb3VyY2UnO1xuaW1wb3J0IHtcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICBTaWduYWxTdG9yZUZlYXR1cmUsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbiAgU3RhdGVTaWduYWxzLFxufSBmcm9tICcuL3NpZ25hbC1zdG9yZS1tb2RlbHMnO1xuaW1wb3J0IHsgUHJldHRpZnkgfSBmcm9tICcuL3RzLWhlbHBlcnMnO1xuXG50eXBlIEhvb2tGbjxJbnB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdD4gPSAoXG4gIHN0b3JlOiBQcmV0dGlmeTxcbiAgICBTdGF0ZVNpZ25hbHM8SW5wdXRbJ3N0YXRlJ10+ICZcbiAgICAgIElucHV0Wydjb21wdXRlZCddICZcbiAgICAgIElucHV0WydtZXRob2RzJ10gJlxuICAgICAgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxJbnB1dFsnc3RhdGUnXT4+XG4gID5cbikgPT4gdm9pZDtcblxudHlwZSBIb29rc0ZhY3Rvcnk8SW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+ID0gKFxuICBzdG9yZTogUHJldHRpZnk8XG4gICAgU3RhdGVTaWduYWxzPElucHV0WydzdGF0ZSddPiAmXG4gICAgICBJbnB1dFsnY29tcHV0ZWQnXSAmXG4gICAgICBJbnB1dFsnbWV0aG9kcyddICZcbiAgICAgIFdyaXRhYmxlU3RhdGVTb3VyY2U8UHJldHRpZnk8SW5wdXRbJ3N0YXRlJ10+PlxuICA+XG4pID0+IHtcbiAgb25Jbml0PzogKCkgPT4gdm9pZDtcbiAgb25EZXN0cm95PzogKCkgPT4gdm9pZDtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoSG9va3M8SW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+KGhvb2tzOiB7XG4gIG9uSW5pdD86IEhvb2tGbjxJbnB1dD47XG4gIG9uRGVzdHJveT86IEhvb2tGbjxJbnB1dD47XG59KTogU2lnbmFsU3RvcmVGZWF0dXJlPElucHV0LCBFbXB0eUZlYXR1cmVSZXN1bHQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhIb29rczxJbnB1dCBleHRlbmRzIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdD4oXG4gIGhvb2tzOiBIb29rc0ZhY3Rvcnk8SW5wdXQ+XG4pOiBTaWduYWxTdG9yZUZlYXR1cmU8SW5wdXQsIEVtcHR5RmVhdHVyZVJlc3VsdD47XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoSG9va3M8SW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQ+KFxuICBob29rc09yRmFjdG9yeTpcbiAgICB8IHtcbiAgICAgICAgb25Jbml0PzogSG9va0ZuPElucHV0PjtcbiAgICAgICAgb25EZXN0cm95PzogSG9va0ZuPElucHV0PjtcbiAgICAgIH1cbiAgICB8IEhvb2tzRmFjdG9yeTxJbnB1dD5cbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxJbnB1dCwgRW1wdHlGZWF0dXJlUmVzdWx0PiB7XG4gIHJldHVybiAoc3RvcmUpID0+IHtcbiAgICBjb25zdCBzdG9yZU1lbWJlcnMgPSB7XG4gICAgICBbU1RBVEVfU09VUkNFXTogc3RvcmVbU1RBVEVfU09VUkNFXSxcbiAgICAgIC4uLnN0b3JlLnN0YXRlU2lnbmFscyxcbiAgICAgIC4uLnN0b3JlLmNvbXB1dGVkU2lnbmFscyxcbiAgICAgIC4uLnN0b3JlLm1ldGhvZHMsXG4gICAgfTtcbiAgICBjb25zdCBob29rcyA9XG4gICAgICB0eXBlb2YgaG9va3NPckZhY3RvcnkgPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBob29rc09yRmFjdG9yeShzdG9yZU1lbWJlcnMpXG4gICAgICAgIDogaG9va3NPckZhY3Rvcnk7XG4gICAgY29uc3QgY3JlYXRlSG9vayA9IChuYW1lOiBrZXlvZiB0eXBlb2YgaG9va3MpID0+IHtcbiAgICAgIGNvbnN0IGhvb2sgPSBob29rc1tuYW1lXTtcbiAgICAgIGNvbnN0IGN1cnJlbnRIb29rID0gc3RvcmUuaG9va3NbbmFtZV07XG5cbiAgICAgIHJldHVybiBob29rXG4gICAgICAgID8gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRIb29rKSB7XG4gICAgICAgICAgICAgIGN1cnJlbnRIb29rKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGhvb2soc3RvcmVNZW1iZXJzKTtcbiAgICAgICAgICB9XG4gICAgICAgIDogY3VycmVudEhvb2s7XG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdG9yZSxcbiAgICAgIGhvb2tzOiB7XG4gICAgICAgIG9uSW5pdDogY3JlYXRlSG9vaygnb25Jbml0JyksXG4gICAgICAgIG9uRGVzdHJveTogY3JlYXRlSG9vaygnb25EZXN0cm95JyksXG4gICAgICB9LFxuICAgIH07XG4gIH07XG59XG4iXX0=
|
|
@@ -1,22 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { STATE_SOURCE } from './state-source';
|
|
2
|
+
import { assertUniqueStoreMembers } from './signal-store-assertions';
|
|
3
3
|
export function withMethods(methodsFactory) {
|
|
4
4
|
return (store) => {
|
|
5
5
|
const methods = methodsFactory({
|
|
6
|
-
[
|
|
7
|
-
...store.
|
|
8
|
-
...store.
|
|
6
|
+
[STATE_SOURCE]: store[STATE_SOURCE],
|
|
7
|
+
...store.stateSignals,
|
|
8
|
+
...store.computedSignals,
|
|
9
9
|
...store.methods,
|
|
10
10
|
});
|
|
11
|
-
|
|
12
|
-
const slices = excludeKeys(store.slices, methodsKeys);
|
|
13
|
-
const signals = excludeKeys(store.signals, methodsKeys);
|
|
11
|
+
assertUniqueStoreMembers(store, Object.keys(methods));
|
|
14
12
|
return {
|
|
15
13
|
...store,
|
|
16
|
-
slices,
|
|
17
|
-
signals,
|
|
18
14
|
methods: { ...store.methods, ...methods },
|
|
19
15
|
};
|
|
20
16
|
};
|
|
21
17
|
}
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1tZXRob2RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9zaWduYWxzL3NyYy93aXRoLW1ldGhvZHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBdUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQVdyRSxNQUFNLFVBQVUsV0FBVyxDQUl6QixjQU9ZO0lBRVosT0FBTyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ2YsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDO1lBQzdCLENBQUMsWUFBWSxDQUFDLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUNuQyxHQUFHLEtBQUssQ0FBQyxZQUFZO1lBQ3JCLEdBQUcsS0FBSyxDQUFDLGVBQWU7WUFDeEIsR0FBRyxLQUFLLENBQUMsT0FBTztTQUNqQixDQUFDLENBQUM7UUFDSCx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRXRELE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixPQUFPLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxPQUFPLEVBQUU7U0FDK0IsQ0FBQztJQUM3RSxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU1RBVEVfU09VUkNFLCBXcml0YWJsZVN0YXRlU291cmNlIH0gZnJvbSAnLi9zdGF0ZS1zb3VyY2UnO1xuaW1wb3J0IHsgYXNzZXJ0VW5pcXVlU3RvcmVNZW1iZXJzIH0gZnJvbSAnLi9zaWduYWwtc3RvcmUtYXNzZXJ0aW9ucyc7XG5pbXBvcnQge1xuICBJbm5lclNpZ25hbFN0b3JlLFxuICBNZXRob2RzRGljdGlvbmFyeSxcbiAgU2lnbmFsc0RpY3Rpb25hcnksXG4gIFNpZ25hbFN0b3JlRmVhdHVyZSxcbiAgU2lnbmFsU3RvcmVGZWF0dXJlUmVzdWx0LFxuICBTdGF0ZVNpZ25hbHMsXG59IGZyb20gJy4vc2lnbmFsLXN0b3JlLW1vZGVscyc7XG5pbXBvcnQgeyBQcmV0dGlmeSB9IGZyb20gJy4vdHMtaGVscGVycyc7XG5cbmV4cG9ydCBmdW5jdGlvbiB3aXRoTWV0aG9kczxcbiAgSW5wdXQgZXh0ZW5kcyBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIE1ldGhvZHMgZXh0ZW5kcyBNZXRob2RzRGljdGlvbmFyeVxuPihcbiAgbWV0aG9kc0ZhY3Rvcnk6IChcbiAgICBzdG9yZTogUHJldHRpZnk8XG4gICAgICBTdGF0ZVNpZ25hbHM8SW5wdXRbJ3N0YXRlJ10+ICZcbiAgICAgICAgSW5wdXRbJ2NvbXB1dGVkJ10gJlxuICAgICAgICBJbnB1dFsnbWV0aG9kcyddICZcbiAgICAgICAgV3JpdGFibGVTdGF0ZVNvdXJjZTxQcmV0dGlmeTxJbnB1dFsnc3RhdGUnXT4+XG4gICAgPlxuICApID0+IE1ldGhvZHNcbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxJbnB1dCwgeyBzdGF0ZToge307IGNvbXB1dGVkOiB7fTsgbWV0aG9kczogTWV0aG9kcyB9PiB7XG4gIHJldHVybiAoc3RvcmUpID0+IHtcbiAgICBjb25zdCBtZXRob2RzID0gbWV0aG9kc0ZhY3Rvcnkoe1xuICAgICAgW1NUQVRFX1NPVVJDRV06IHN0b3JlW1NUQVRFX1NPVVJDRV0sXG4gICAgICAuLi5zdG9yZS5zdGF0ZVNpZ25hbHMsXG4gICAgICAuLi5zdG9yZS5jb21wdXRlZFNpZ25hbHMsXG4gICAgICAuLi5zdG9yZS5tZXRob2RzLFxuICAgIH0pO1xuICAgIGFzc2VydFVuaXF1ZVN0b3JlTWVtYmVycyhzdG9yZSwgT2JqZWN0LmtleXMobWV0aG9kcykpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnN0b3JlLFxuICAgICAgbWV0aG9kczogeyAuLi5zdG9yZS5tZXRob2RzLCAuLi5tZXRob2RzIH0sXG4gICAgfSBhcyBJbm5lclNpZ25hbFN0b3JlPFJlY29yZDxzdHJpbmcsIHVua25vd24+LCBTaWduYWxzRGljdGlvbmFyeSwgTWV0aG9kcz47XG4gIH07XG59XG4iXX0=
|
|
@@ -1,27 +1,24 @@
|
|
|
1
1
|
import { computed } from '@angular/core';
|
|
2
|
+
import { assertUniqueStoreMembers } from './signal-store-assertions';
|
|
2
3
|
import { toDeepSignal } from './deep-signal';
|
|
3
|
-
import {
|
|
4
|
-
import { STATE_SIGNAL } from './state-signal';
|
|
4
|
+
import { STATE_SOURCE } from './state-source';
|
|
5
5
|
export function withState(stateOrFactory) {
|
|
6
6
|
return (store) => {
|
|
7
7
|
const state = typeof stateOrFactory === 'function' ? stateOrFactory() : stateOrFactory;
|
|
8
8
|
const stateKeys = Object.keys(state);
|
|
9
|
-
store
|
|
9
|
+
assertUniqueStoreMembers(store, stateKeys);
|
|
10
|
+
store[STATE_SOURCE].update((currentState) => ({
|
|
10
11
|
...currentState,
|
|
11
12
|
...state,
|
|
12
13
|
}));
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
return { ...acc, [key]: toDeepSignal(
|
|
14
|
+
const stateSignals = stateKeys.reduce((acc, key) => {
|
|
15
|
+
const sliceSignal = computed(() => store[STATE_SOURCE]()[key]);
|
|
16
|
+
return { ...acc, [key]: toDeepSignal(sliceSignal) };
|
|
16
17
|
}, {});
|
|
17
|
-
const signals = excludeKeys(store.signals, stateKeys);
|
|
18
|
-
const methods = excludeKeys(store.methods, stateKeys);
|
|
19
18
|
return {
|
|
20
19
|
...store,
|
|
21
|
-
|
|
22
|
-
signals,
|
|
23
|
-
methods,
|
|
20
|
+
stateSignals: { ...store.stateSignals, ...stateSignals },
|
|
24
21
|
};
|
|
25
22
|
};
|
|
26
23
|
}
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1zdGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvc2lnbmFscy9zcmMvd2l0aC1zdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBcUI5QyxNQUFNLFVBQVUsU0FBUyxDQUN2QixjQUFxQztJQUtyQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDZixNQUFNLEtBQUssR0FDVCxPQUFPLGNBQWMsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7UUFDM0UsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUVyQyx3QkFBd0IsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFFM0MsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1QyxHQUFHLFlBQVk7WUFDZixHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUMsQ0FBQztRQUVKLE1BQU0sWUFBWSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDakQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUMxQixHQUFHLEVBQUUsQ0FBRSxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQThCLENBQUMsR0FBRyxDQUFDLENBQzlELENBQUM7WUFDRixPQUFPLEVBQUUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUN0RCxDQUFDLEVBQUUsRUFBdUIsQ0FBQyxDQUFDO1FBRTVCLE9BQU87WUFDTCxHQUFHLEtBQUs7WUFDUixZQUFZLEVBQUUsRUFBRSxHQUFHLEtBQUssQ0FBQyxZQUFZLEVBQUUsR0FBRyxZQUFZLEVBQUU7U0FDOUIsQ0FBQztJQUMvQixDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGFzc2VydFVuaXF1ZVN0b3JlTWVtYmVycyB9IGZyb20gJy4vc2lnbmFsLXN0b3JlLWFzc2VydGlvbnMnO1xuaW1wb3J0IHsgdG9EZWVwU2lnbmFsIH0gZnJvbSAnLi9kZWVwLXNpZ25hbCc7XG5pbXBvcnQgeyBTVEFURV9TT1VSQ0UgfSBmcm9tICcuL3N0YXRlLXNvdXJjZSc7XG5pbXBvcnQge1xuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIElubmVyU2lnbmFsU3RvcmUsXG4gIFNpZ25hbHNEaWN0aW9uYXJ5LFxuICBTaWduYWxTdG9yZUZlYXR1cmUsXG4gIFNpZ25hbFN0b3JlRmVhdHVyZVJlc3VsdCxcbn0gZnJvbSAnLi9zaWduYWwtc3RvcmUtbW9kZWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhTdGF0ZTxTdGF0ZSBleHRlbmRzIG9iamVjdD4oXG4gIHN0YXRlRmFjdG9yeTogKCkgPT4gU3RhdGVcbik6IFNpZ25hbFN0b3JlRmVhdHVyZTxcbiAgRW1wdHlGZWF0dXJlUmVzdWx0LFxuICB7IHN0YXRlOiBTdGF0ZTsgY29tcHV0ZWQ6IHt9OyBtZXRob2RzOiB7fSB9XG4+O1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhTdGF0ZTxTdGF0ZSBleHRlbmRzIG9iamVjdD4oXG4gIHN0YXRlOiBTdGF0ZVxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBFbXB0eUZlYXR1cmVSZXN1bHQsXG4gIHsgc3RhdGU6IFN0YXRlOyBjb21wdXRlZDoge307IG1ldGhvZHM6IHt9IH1cbj47XG5leHBvcnQgZnVuY3Rpb24gd2l0aFN0YXRlPFN0YXRlIGV4dGVuZHMgb2JqZWN0PihcbiAgc3RhdGVPckZhY3Rvcnk6IFN0YXRlIHwgKCgpID0+IFN0YXRlKVxuKTogU2lnbmFsU3RvcmVGZWF0dXJlPFxuICBTaWduYWxTdG9yZUZlYXR1cmVSZXN1bHQsXG4gIHsgc3RhdGU6IFN0YXRlOyBjb21wdXRlZDoge307IG1ldGhvZHM6IHt9IH1cbj4ge1xuICByZXR1cm4gKHN0b3JlKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPVxuICAgICAgdHlwZW9mIHN0YXRlT3JGYWN0b3J5ID09PSAnZnVuY3Rpb24nID8gc3RhdGVPckZhY3RvcnkoKSA6IHN0YXRlT3JGYWN0b3J5O1xuICAgIGNvbnN0IHN0YXRlS2V5cyA9IE9iamVjdC5rZXlzKHN0YXRlKTtcblxuICAgIGFzc2VydFVuaXF1ZVN0b3JlTWVtYmVycyhzdG9yZSwgc3RhdGVLZXlzKTtcblxuICAgIHN0b3JlW1NUQVRFX1NPVVJDRV0udXBkYXRlKChjdXJyZW50U3RhdGUpID0+ICh7XG4gICAgICAuLi5jdXJyZW50U3RhdGUsXG4gICAgICAuLi5zdGF0ZSxcbiAgICB9KSk7XG5cbiAgICBjb25zdCBzdGF0ZVNpZ25hbHMgPSBzdGF0ZUtleXMucmVkdWNlKChhY2MsIGtleSkgPT4ge1xuICAgICAgY29uc3Qgc2xpY2VTaWduYWwgPSBjb21wdXRlZChcbiAgICAgICAgKCkgPT4gKHN0b3JlW1NUQVRFX1NPVVJDRV0oKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilba2V5XVxuICAgICAgKTtcbiAgICAgIHJldHVybiB7IC4uLmFjYywgW2tleV06IHRvRGVlcFNpZ25hbChzbGljZVNpZ25hbCkgfTtcbiAgICB9LCB7fSBhcyBTaWduYWxzRGljdGlvbmFyeSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RvcmUsXG4gICAgICBzdGF0ZVNpZ25hbHM6IHsgLi4uc3RvcmUuc3RhdGVTaWduYWxzLCAuLi5zdGF0ZVNpZ25hbHMgfSxcbiAgICB9IGFzIElubmVyU2lnbmFsU3RvcmU8U3RhdGU+O1xuICB9O1xufVxuIl19
|