@verisoft/store 18.6.0 → 18.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/.eslintrc.json +43 -0
  2. package/README.md +52 -3
  3. package/jest.config.ts +22 -0
  4. package/ng-package.json +7 -0
  5. package/package.json +13 -28
  6. package/project.json +36 -0
  7. package/{index.d.ts → src/index.ts} +12 -10
  8. package/src/lib/binding-state/binding.actions.ts +76 -0
  9. package/src/lib/binding-state/binding.effects.ts +472 -0
  10. package/src/lib/detail-state/detail.actions.ts +89 -0
  11. package/src/lib/detail-state/detail.effects.ts +283 -0
  12. package/src/lib/detail-state/detail.models.ts +42 -0
  13. package/src/lib/detail-state/detail.reducer.ts +147 -0
  14. package/src/lib/table-state/actions.ts +93 -0
  15. package/src/lib/table-state/effects.ts +99 -0
  16. package/src/lib/table-state/models.ts +20 -0
  17. package/src/lib/table-state/reducers.ts +126 -0
  18. package/src/test-setup.ts +8 -0
  19. package/tsconfig.json +29 -0
  20. package/tsconfig.lib.json +17 -0
  21. package/tsconfig.lib.prod.json +9 -0
  22. package/tsconfig.spec.json +16 -0
  23. package/esm2022/index.mjs +0 -11
  24. package/esm2022/lib/binding-state/binding.actions.mjs +0 -35
  25. package/esm2022/lib/binding-state/binding.effects.mjs +0 -124
  26. package/esm2022/lib/detail-state/detail.actions.mjs +0 -47
  27. package/esm2022/lib/detail-state/detail.effects.mjs +0 -116
  28. package/esm2022/lib/detail-state/detail.models.mjs +0 -12
  29. package/esm2022/lib/detail-state/detail.reducer.mjs +0 -87
  30. package/esm2022/lib/table-state/actions.mjs +0 -50
  31. package/esm2022/lib/table-state/effects.mjs +0 -49
  32. package/esm2022/lib/table-state/models.mjs +0 -12
  33. package/esm2022/lib/table-state/reducers.mjs +0 -80
  34. package/esm2022/verisoft-store.mjs +0 -5
  35. package/fesm2022/verisoft-store.mjs +0 -602
  36. package/fesm2022/verisoft-store.mjs.map +0 -1
  37. package/lib/binding-state/binding.actions.d.ts +0 -43
  38. package/lib/binding-state/binding.effects.d.ts +0 -45
  39. package/lib/detail-state/detail.actions.d.ts +0 -52
  40. package/lib/detail-state/detail.effects.d.ts +0 -52
  41. package/lib/detail-state/detail.models.d.ts +0 -27
  42. package/lib/detail-state/detail.reducer.d.ts +0 -4
  43. package/lib/table-state/actions.d.ts +0 -48
  44. package/lib/table-state/effects.d.ts +0 -25
  45. package/lib/table-state/models.d.ts +0 -9
  46. package/lib/table-state/reducers.d.ts +0 -3
@@ -0,0 +1,126 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { ActionCreator, ReducerTypes, createReducer, on } from '@ngrx/store';
3
+ import {
4
+ createGetPageTableAction,
5
+ createStaticFilterTableAction,
6
+ createDataLoadSuccessTableAction,
7
+ createDataLoadErrorTableAction,
8
+ createFilterPageTableAction,
9
+ createDestroyTableAction,
10
+ createSelectItemsTableAction,
11
+ createChangePageSizeTableAction,
12
+ createResetTableFilterAction,
13
+ } from './actions';
14
+ import { INITIAL_TABLE_STATE, TableState } from './models';
15
+
16
+ export function createTablePageReducers<
17
+ T = any,
18
+ TState extends TableState<T> = TableState<T>
19
+ >(
20
+ tableRepository: string,
21
+ initialState: TState = INITIAL_TABLE_STATE as unknown as TState,
22
+ ...ons: ReducerTypes<TState, readonly ActionCreator[]>[]
23
+ ) {
24
+ return createReducer(
25
+ initialState,
26
+ on(
27
+ createGetPageTableAction(tableRepository),
28
+ (state, { page, id, filter, sort }) => {
29
+ return {
30
+ ...state,
31
+ requestParams: {
32
+ ...state.requestParams,
33
+ filter: filter ?? state.requestParams.filter,
34
+ sort: sort ?? state.requestParams.sort,
35
+ id: id ?? state.requestParams.id,
36
+ page,
37
+ },
38
+ dataLoading: true,
39
+ submitted: true,
40
+ };
41
+ }
42
+ ),
43
+
44
+ on(createStaticFilterTableAction(tableRepository), (state, { filter }) => {
45
+ return {
46
+ ...state,
47
+ requestParams: {
48
+ ...state.requestParams,
49
+ filter: {
50
+ ...state.requestParams?.filter,
51
+ filter,
52
+ },
53
+ },
54
+ };
55
+ }),
56
+
57
+ on(createResetTableFilterAction(tableRepository), (state) => {
58
+ return {
59
+ ...state,
60
+ requestParams: {
61
+ ...state.requestParams,
62
+ filter: undefined,
63
+ page: 1
64
+ },
65
+ }
66
+ }),
67
+
68
+ on(
69
+ createDataLoadSuccessTableAction(tableRepository),
70
+ (state, { gPage }) => {
71
+ return {
72
+ ...state,
73
+ gPage,
74
+ dataLoading: false,
75
+ };
76
+ }
77
+ ),
78
+
79
+ on(createDataLoadErrorTableAction(tableRepository), (state, { error }) => {
80
+ return {
81
+ ...state,
82
+ error,
83
+ dataLoading: false,
84
+ };
85
+ }),
86
+
87
+ on(createFilterPageTableAction(tableRepository), (state, { filter }) => {
88
+ return {
89
+ ...state,
90
+ requestParams: {
91
+ ...state.requestParams,
92
+ filter: filter,
93
+ page: 1,
94
+ },
95
+ dataLoading: true,
96
+ };
97
+ }),
98
+
99
+ on(createDestroyTableAction(tableRepository), () => {
100
+ return {
101
+ ...(initialState as any),
102
+ };
103
+ }),
104
+
105
+ on(
106
+ createSelectItemsTableAction(tableRepository),
107
+ (state, { selectedItems }) => {
108
+ return {
109
+ ...state,
110
+ selectedItems,
111
+ };
112
+ }
113
+ ),
114
+
115
+ on(createChangePageSizeTableAction(tableRepository), (state, { size }) => {
116
+ return {
117
+ ...state,
118
+ requestParams: {
119
+ ...state.requestParams,
120
+ size,
121
+ }
122
+ }
123
+ }),
124
+ ...ons
125
+ );
126
+ }
@@ -0,0 +1,8 @@
1
+ // @ts-expect-error https://thymikee.github.io/jest-preset-angular/docs/getting-started/test-environment
2
+ globalThis.ngJest = {
3
+ testEnvironmentOptions: {
4
+ errorOnUnknownElements: true,
5
+ errorOnUnknownProperties: true,
6
+ },
7
+ };
8
+ import 'jest-preset-angular/setup-jest';
package/tsconfig.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es2022",
4
+ "useDefineForClassFields": false,
5
+ "forceConsistentCasingInFileNames": true,
6
+ "strict": true,
7
+ "noImplicitOverride": true,
8
+ "noPropertyAccessFromIndexSignature": true,
9
+ "noImplicitReturns": true,
10
+ "noFallthroughCasesInSwitch": true
11
+ },
12
+ "files": [],
13
+ "include": [],
14
+ "references": [
15
+ {
16
+ "path": "./tsconfig.lib.json"
17
+ },
18
+ {
19
+ "path": "./tsconfig.spec.json"
20
+ }
21
+ ],
22
+ "extends": "../../../tsconfig.base.json",
23
+ "angularCompilerOptions": {
24
+ "enableI18nLegacyMessageIdFormat": false,
25
+ "strictInjectionParameters": true,
26
+ "strictInputAccessModifiers": true,
27
+ "strictTemplates": true
28
+ }
29
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "../../../dist/out-tsc",
5
+ "declaration": true,
6
+ "declarationMap": true,
7
+ "inlineSources": true,
8
+ "types": []
9
+ },
10
+ "exclude": [
11
+ "src/**/*.spec.ts",
12
+ "src/test-setup.ts",
13
+ "jest.config.ts",
14
+ "src/**/*.test.ts"
15
+ ],
16
+ "include": ["src/**/*.ts"]
17
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "./tsconfig.lib.json",
3
+ "compilerOptions": {
4
+ "declarationMap": false
5
+ },
6
+ "angularCompilerOptions": {
7
+ "compilationMode": "partial"
8
+ }
9
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "../../../dist/out-tsc",
5
+ "module": "commonjs",
6
+ "target": "es2016",
7
+ "types": ["jest", "node"]
8
+ },
9
+ "files": ["src/test-setup.ts"],
10
+ "include": [
11
+ "jest.config.ts",
12
+ "src/**/*.test.ts",
13
+ "src/**/*.spec.ts",
14
+ "src/**/*.d.ts"
15
+ ]
16
+ }
package/esm2022/index.mjs DELETED
@@ -1,11 +0,0 @@
1
- export * from './lib/detail-state/detail.actions';
2
- export * from './lib/detail-state/detail.reducer';
3
- export * from './lib/detail-state/detail.effects';
4
- export * from './lib/detail-state/detail.models';
5
- export * from './lib/table-state/actions';
6
- export * from './lib/table-state/reducers';
7
- export * from './lib/table-state/effects';
8
- export * from './lib/table-state/models';
9
- export * from './lib/binding-state/binding.actions';
10
- export * from './lib/binding-state/binding.effects';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGlicy9zdG9yZS9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUVqRCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLDBCQUEwQixDQUFDO0FBRXpDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxxQ0FBcUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGliL2RldGFpbC1zdGF0ZS9kZXRhaWwuYWN0aW9ucyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RldGFpbC1zdGF0ZS9kZXRhaWwucmVkdWNlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RldGFpbC1zdGF0ZS9kZXRhaWwuZWZmZWN0cyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL2RldGFpbC1zdGF0ZS9kZXRhaWwubW9kZWxzJztcclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlLXN0YXRlL2FjdGlvbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS1zdGF0ZS9yZWR1Y2Vycyc7XHJcbmV4cG9ydCAqIGZyb20gJy4vbGliL3RhYmxlLXN0YXRlL2VmZmVjdHMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS1zdGF0ZS9tb2RlbHMnO1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9saWIvYmluZGluZy1zdGF0ZS9iaW5kaW5nLmFjdGlvbnMnO1xyXG5leHBvcnQgKiBmcm9tICcuL2xpYi9iaW5kaW5nLXN0YXRlL2JpbmRpbmcuZWZmZWN0cyc7XHJcbiJdfQ==
@@ -1,35 +0,0 @@
1
- import { createAction, props } from '@ngrx/store';
2
- export function createAddBindingAction(bindingsRepository) {
3
- return createAction(`[${bindingsRepository}/API] Add bindings`, props());
4
- }
5
- export function createAddBindingsAction(bindingsRepository) {
6
- return createAction(`[${bindingsRepository}/API] Add bindings`, props());
7
- }
8
- export function createAddBindingsFailureAction(bindingsRepository) {
9
- return createAction(`[${bindingsRepository}/API] Add bindings failure`, props());
10
- }
11
- export function createAddBindingsSuccessAction(bindingsRepository) {
12
- return createAction(`[${bindingsRepository}/API] Add bindings success`);
13
- }
14
- export function createEditBindingAction(bindingsRepository) {
15
- return createAction(`[${bindingsRepository}/API] Edit binding`, props());
16
- }
17
- export function createEditBindingFailureAction(bindingsRepository) {
18
- return createAction(`[${bindingsRepository}/API] Edit binding failure`, props());
19
- }
20
- export function createEditBindingSuccessAction(bindingsRepository) {
21
- return createAction(`[${bindingsRepository}/API] Edit binding success`);
22
- }
23
- export function createDeleteBindingAction(bindingsRepository) {
24
- return createAction(`[${bindingsRepository}/API] Delete binding`, props());
25
- }
26
- export function createDeleteBindingsAction(bindingsRepository) {
27
- return createAction(`[${bindingsRepository}/API] Delete bindings`, props());
28
- }
29
- export function createDeleteBindingsFailureAction(bindingsRepository) {
30
- return createAction(`[${bindingsRepository}/API] Delete bindings failure`, props());
31
- }
32
- export function createDeleteBindingsSuccessAction(bindingsRepository) {
33
- return createAction(`[${bindingsRepository}/API] Delete bindings success`);
34
- }
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZy5hY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvc3RvcmUvc3JjL2xpYi9iaW5kaW5nLXN0YXRlL2JpbmRpbmcuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVsRCxNQUFNLFVBQVUsc0JBQXNCLENBQVUsa0JBQTBCO0lBQ3hFLE9BQU8sWUFBWSxDQUNqQixJQUFJLGtCQUFrQixvQkFBb0IsRUFDMUMsS0FBSyxFQUF3QixDQUM5QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSx1QkFBdUIsQ0FBVSxrQkFBMEI7SUFDekUsT0FBTyxZQUFZLENBQ2pCLElBQUksa0JBQWtCLG9CQUFvQixFQUMxQyxLQUFLLEVBQTJCLENBQ2pDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDhCQUE4QixDQUFDLGtCQUEwQjtJQUN2RSxPQUFPLFlBQVksQ0FDakIsSUFBSSxrQkFBa0IsNEJBQTRCLEVBQ2xELEtBQUssRUFBa0IsQ0FDeEIsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsOEJBQThCLENBQUMsa0JBQTBCO0lBQ3ZFLE9BQU8sWUFBWSxDQUNqQixJQUFJLGtCQUFrQiw0QkFBNEIsQ0FDbkQsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsdUJBQXVCLENBQVEsa0JBQTBCO0lBQ3ZFLE9BQU8sWUFBWSxDQUNqQixJQUFJLGtCQUFrQixvQkFBb0IsRUFDMUMsS0FBSyxFQUFzQixDQUM1QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSw4QkFBOEIsQ0FBQyxrQkFBMEI7SUFDdkUsT0FBTyxZQUFZLENBQ2pCLElBQUksa0JBQWtCLDRCQUE0QixFQUNsRCxLQUFLLEVBQWtCLENBQ3hCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDhCQUE4QixDQUFDLGtCQUEwQjtJQUN2RSxPQUFPLFlBQVksQ0FDakIsSUFBSSxrQkFBa0IsNEJBQTRCLENBQ25ELENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHlCQUF5QixDQUFDLGtCQUEwQjtJQUNsRSxPQUFPLFlBQVksQ0FDakIsSUFBSSxrQkFBa0Isc0JBQXNCLEVBQzVDLEtBQUssRUFBMkIsQ0FDakMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsMEJBQTBCLENBQUMsa0JBQTBCO0lBQ25FLE9BQU8sWUFBWSxDQUNqQixJQUFJLGtCQUFrQix1QkFBdUIsRUFDN0MsS0FBSyxFQUE0QixDQUNsQyxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxpQ0FBaUMsQ0FBQyxrQkFBMEI7SUFDMUUsT0FBTyxZQUFZLENBQ2pCLElBQUksa0JBQWtCLCtCQUErQixFQUNyRCxLQUFLLEVBQWtCLENBQ3hCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLGlDQUFpQyxDQUFDLGtCQUEwQjtJQUMxRSxPQUFPLFlBQVksQ0FDakIsSUFBSSxrQkFBa0IsK0JBQStCLENBQ3RELENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQWN0aW9uLCBwcm9wcyB9IGZyb20gJ0BuZ3J4L3N0b3JlJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBZGRCaW5kaW5nQWN0aW9uPFRDcmVhdGU+KGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihcclxuICAgIGBbJHtiaW5kaW5nc1JlcG9zaXRvcnl9L0FQSV0gQWRkIGJpbmRpbmdzYCxcclxuICAgIHByb3BzPHsgYmluZGluZzogVENyZWF0ZSB9PigpXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFkZEJpbmRpbmdzQWN0aW9uPFRDcmVhdGU+KGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihcclxuICAgIGBbJHtiaW5kaW5nc1JlcG9zaXRvcnl9L0FQSV0gQWRkIGJpbmRpbmdzYCxcclxuICAgIHByb3BzPHsgYmluZGluZ3M6IFRDcmVhdGVbXSB9PigpXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFkZEJpbmRpbmdzRmFpbHVyZUFjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xyXG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7YmluZGluZ3NSZXBvc2l0b3J5fS9BUEldIEFkZCBiaW5kaW5ncyBmYWlsdXJlYCxcclxuICAgIHByb3BzPHsgZXJyb3I6IGFueSB9PigpXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFkZEJpbmRpbmdzU3VjY2Vzc0FjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xyXG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7YmluZGluZ3NSZXBvc2l0b3J5fS9BUEldIEFkZCBiaW5kaW5ncyBzdWNjZXNzYFxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVFZGl0QmluZGluZ0FjdGlvbjxURWRpdD4oYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcpIHtcclxuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2JpbmRpbmdzUmVwb3NpdG9yeX0vQVBJXSBFZGl0IGJpbmRpbmdgLFxyXG4gICAgcHJvcHM8eyBiaW5kaW5nOiBURWRpdCB9PigpXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVkaXRCaW5kaW5nRmFpbHVyZUFjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xyXG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7YmluZGluZ3NSZXBvc2l0b3J5fS9BUEldIEVkaXQgYmluZGluZyBmYWlsdXJlYCxcclxuICAgIHByb3BzPHsgZXJyb3I6IGFueSB9PigpXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUVkaXRCaW5kaW5nU3VjY2Vzc0FjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xyXG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7YmluZGluZ3NSZXBvc2l0b3J5fS9BUEldIEVkaXQgYmluZGluZyBzdWNjZXNzYFxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWxldGVCaW5kaW5nQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihcclxuICAgIGBbJHtiaW5kaW5nc1JlcG9zaXRvcnl9L0FQSV0gRGVsZXRlIGJpbmRpbmdgLFxyXG4gICAgcHJvcHM8eyBpZDogbnVtYmVyIHwgc3RyaW5nIH0+KClcclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVsZXRlQmluZGluZ3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcpIHtcclxuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2JpbmRpbmdzUmVwb3NpdG9yeX0vQVBJXSBEZWxldGUgYmluZGluZ3NgLFxyXG4gICAgcHJvcHM8eyBiaW5kaW5nSWRzOiBudW1iZXJbXSB9PigpXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlbGV0ZUJpbmRpbmdzRmFpbHVyZUFjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xyXG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7YmluZGluZ3NSZXBvc2l0b3J5fS9BUEldIERlbGV0ZSBiaW5kaW5ncyBmYWlsdXJlYCxcclxuICAgIHByb3BzPHsgZXJyb3I6IGFueSB9PigpXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlbGV0ZUJpbmRpbmdzU3VjY2Vzc0FjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZykge1xyXG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7YmluZGluZ3NSZXBvc2l0b3J5fS9BUEldIERlbGV0ZSBiaW5kaW5ncyBzdWNjZXNzYFxyXG4gICk7XHJcbn1cclxuXHJcbiJdfQ==
@@ -1,124 +0,0 @@
1
- import { createEffect, ofType } from '@ngrx/effects';
2
- import { catchError, map, of, switchMap, tap, withLatestFrom, } from 'rxjs';
3
- import { createAddBindingAction, createAddBindingsAction, createAddBindingsFailureAction, createAddBindingsSuccessAction, createDeleteBindingAction, createDeleteBindingsAction, createDeleteBindingsFailureAction, createDeleteBindingsSuccessAction, createEditBindingAction, createEditBindingFailureAction, createEditBindingSuccessAction, } from './binding.actions';
4
- export function createSingleBindingEffectsWithEdit(bindingsRepository, actions$, detail$, bindingSingularName, bindingPluralName, addFunction, editFunction, deleteFunction, snackbar, translateService, tableService, overrideDetailWithBinding = false) {
5
- const addEffect = createAddBindingEffect(bindingsRepository, actions$, detail$, bindingPluralName, addFunction, snackbar, translateService);
6
- const editEffect = createEditBindingEffect(bindingsRepository, actions$, detail$, bindingSingularName, editFunction, snackbar, translateService, overrideDetailWithBinding);
7
- const deleteEffect = createDeleteBindingEffect(bindingsRepository, actions$, detail$, bindingPluralName, deleteFunction, snackbar, translateService);
8
- const modifiedSuccessEffect = createBindingModifiedSuccessEffect(bindingsRepository, actions$, tableService);
9
- return { addEffect, editEffect, deleteEffect, modifiedSuccessEffect };
10
- }
11
- export function createBindingsEffectsWithEdit(bindingsRepository, actions$, detail$, bindingSingularName, bindingPluralName, addFunction, editFunction, deleteFunction, snackbar, translateService, tableService, overrideDetailWithBinding = false) {
12
- const addEffect = createAddBindingsEffect(bindingsRepository, actions$, detail$, bindingPluralName, addFunction, snackbar, translateService);
13
- const editEffect = createEditBindingEffect(bindingsRepository, actions$, detail$, bindingSingularName, editFunction, snackbar, translateService, overrideDetailWithBinding);
14
- const deleteEffect = createDeleteBindingsEffect(bindingsRepository, actions$, detail$, bindingPluralName, deleteFunction, snackbar, translateService);
15
- const modifiedSuccessEffect = createBindingModifiedSuccessEffect(bindingsRepository, actions$, tableService);
16
- return { addEffect, editEffect, deleteEffect, modifiedSuccessEffect };
17
- }
18
- export function createBindingsEffects(bindingsRepository, actions$, detail$, bindingPluralName, addFunction, deleteFunction, snackbar, translateService, tableService) {
19
- const addEffect = createAddBindingsEffect(bindingsRepository, actions$, detail$, bindingPluralName, addFunction, snackbar, translateService);
20
- const deleteEffect = createDeleteBindingsEffect(bindingsRepository, actions$, detail$, bindingPluralName, deleteFunction, snackbar, translateService);
21
- const modifiedSuccessEffect = createBindingModifiedSuccessEffect(bindingsRepository, actions$, tableService);
22
- return { addEffect, deleteEffect, modifiedSuccessEffect };
23
- }
24
- function createAddBindingEffect(bindingsRepository, actions$, detail$, bindingPluralName, addFunction, snackbar, translateService) {
25
- return createEffect(() => actions$.pipe(ofType(createAddBindingAction(bindingsRepository)), withLatestFrom(detail$), switchMap(([{ binding }, detail]) => {
26
- const translatedPluralName = translateService.instant(bindingPluralName);
27
- const successMessage = `${translateService.instant('BINDINGS_EFFECTS.SUCCESS_ADD')} ${translatedPluralName}!`;
28
- const failureMessage = `${translateService.instant('BINDINGS_EFFECTS.FAILURE_ADD')} ${translatedPluralName}!`;
29
- return addFunction(binding).pipe(map(() => {
30
- snackbar.showSuccess(successMessage);
31
- return createAddBindingsSuccessAction(bindingsRepository)();
32
- }), catchError((error) => {
33
- snackbar.showError(failureMessage);
34
- return of(createAddBindingsFailureAction(bindingsRepository)({ error }));
35
- }));
36
- })));
37
- }
38
- function createAddBindingsEffect(bindingsRepository, actions$, detail$, bindingPluralName, addFunction, snackbar, translateService) {
39
- return createEffect(() => actions$.pipe(ofType(createAddBindingsAction(bindingsRepository)), withLatestFrom(detail$), switchMap(([{ bindings }, detail]) => {
40
- const translatedPluralName = translateService.instant(bindingPluralName);
41
- const successMessage = `${translateService.instant('BINDINGS_EFFECTS.SUCCESS_ADD')} ${translatedPluralName}!`;
42
- const failureMessage = `${translateService.instant('BINDINGS_EFFECTS.FAILURE_ADD')} ${translatedPluralName}!`;
43
- if (!detail?.id) {
44
- snackbar.showError(failureMessage);
45
- return of(createAddBindingsFailureAction(bindingsRepository)({
46
- error: failureMessage,
47
- }));
48
- }
49
- return addFunction(bindings, detail.id).pipe(map(() => {
50
- snackbar.showSuccess(successMessage);
51
- return createAddBindingsSuccessAction(bindingsRepository)();
52
- }), catchError((error) => {
53
- snackbar.showError(failureMessage);
54
- return of(createAddBindingsFailureAction(bindingsRepository)({ error }));
55
- }));
56
- })));
57
- }
58
- function createEditBindingEffect(bindingsRepository, actions$, detail$, bindingSingularName, editFunction, snackbar, translateService, overrideDetailWithBinding = false) {
59
- return createEffect(() => actions$.pipe(ofType(createEditBindingAction(bindingsRepository)), withLatestFrom(detail$), switchMap(([{ binding }, detail]) => {
60
- const translatedPluralName = translateService.instant(bindingSingularName);
61
- const successMessage = `${translateService.instant('BINDINGS_EFFECTS.SUCCESS_EDIT')} ${translatedPluralName}!`;
62
- const failureMessage = `${translateService.instant('BINDINGS_EFFECTS.FAILURE_EDIT')} ${translatedPluralName}!`;
63
- const id = overrideDetailWithBinding ? binding?.id : detail?.id;
64
- if (!id) {
65
- snackbar.showError(failureMessage);
66
- return of(createEditBindingFailureAction(bindingsRepository)({
67
- error: failureMessage,
68
- }));
69
- }
70
- return editFunction(binding, id).pipe(map(() => {
71
- snackbar.showSuccess(successMessage);
72
- return createEditBindingSuccessAction(bindingsRepository)();
73
- }), catchError((error) => {
74
- snackbar.showError(failureMessage);
75
- return of(createEditBindingFailureAction(bindingsRepository)({ error }));
76
- }));
77
- })));
78
- }
79
- function createDeleteBindingEffect(bindingsRepository, actions$, detail$, bindingPluralName, deleteFunction, snackbar, translateService) {
80
- return createEffect(() => actions$.pipe(ofType(createDeleteBindingAction(bindingsRepository)), withLatestFrom(detail$), switchMap(([{ id }, detail]) => {
81
- const translatedPluralName = translateService.instant(bindingPluralName);
82
- const successMessage = `${translateService.instant('BINDINGS_EFFECTS.SUCCESS_DELETE')} ${translatedPluralName}!`;
83
- const failureMessage = `${translateService.instant('BINDINGS_EFFECTS.FAILURE_DELETE')} ${translatedPluralName}!`;
84
- if (!id && !detail?.id) {
85
- snackbar.showError(failureMessage);
86
- return of(createDeleteBindingsFailureAction(bindingsRepository)({
87
- error: failureMessage,
88
- }));
89
- }
90
- return deleteFunction(id, id ?? detail?.id).pipe(map(() => {
91
- snackbar.showSuccess(successMessage);
92
- return createDeleteBindingsSuccessAction(bindingsRepository)();
93
- }), catchError((error) => {
94
- snackbar.showError(failureMessage);
95
- return of(createDeleteBindingsFailureAction(bindingsRepository)({ error }));
96
- }));
97
- })));
98
- }
99
- function createDeleteBindingsEffect(bindingsRepository, actions$, detail$, bindingPluralName, deleteFunction, snackbar, translateService) {
100
- return createEffect(() => actions$.pipe(ofType(createDeleteBindingsAction(bindingsRepository)), withLatestFrom(detail$), switchMap(([{ bindingIds }, detail]) => {
101
- const translatedPluralName = translateService.instant(bindingPluralName);
102
- const successMessage = `${translateService.instant('BINDINGS_EFFECTS.SUCCESS_DELETE')} ${translatedPluralName}!`;
103
- const failureMessage = `${translateService.instant('BINDINGS_EFFECTS.FAILURE_DELETE')} ${translatedPluralName}!`;
104
- if (!detail?.id) {
105
- snackbar.showError(failureMessage);
106
- return of(createDeleteBindingsFailureAction(bindingsRepository)({
107
- error: failureMessage,
108
- }));
109
- }
110
- return deleteFunction(bindingIds, detail.id).pipe(map(() => {
111
- snackbar.showSuccess(successMessage);
112
- return createDeleteBindingsSuccessAction(bindingsRepository)();
113
- }), catchError((error) => {
114
- snackbar.showError(failureMessage);
115
- return of(createDeleteBindingsFailureAction(bindingsRepository)({ error }));
116
- }));
117
- })));
118
- }
119
- function createBindingModifiedSuccessEffect(bindingsRepository, actions$, tableService) {
120
- return createEffect(() => actions$.pipe(ofType(createAddBindingsSuccessAction(bindingsRepository), createEditBindingSuccessAction(bindingsRepository), createDeleteBindingsSuccessAction(bindingsRepository)), tap(() => {
121
- tableService.forceReload();
122
- })), { dispatch: false });
123
- }
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZy5lZmZlY3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvc3RvcmUvc3JjL2xpYi9iaW5kaW5nLXN0YXRlL2JpbmRpbmcuZWZmZWN0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQVcsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQ0wsVUFBVSxFQUNWLEdBQUcsRUFFSCxFQUFFLEVBQ0YsU0FBUyxFQUNULEdBQUcsRUFDSCxjQUFjLEdBQ2YsTUFBTSxNQUFNLENBQUM7QUFDZCxPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2Qiw4QkFBOEIsRUFDOUIsOEJBQThCLEVBQzlCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsaUNBQWlDLEVBQ2pDLGlDQUFpQyxFQUNqQyx1QkFBdUIsRUFDdkIsOEJBQThCLEVBQzlCLDhCQUE4QixHQUMvQixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE1BQU0sVUFBVSxrQ0FBa0MsQ0FLaEQsa0JBQTBCLEVBQzFCLFFBQWlCLEVBQ2pCLE9BQWtDLEVBQ2xDLG1CQUEyQixFQUMzQixpQkFBeUIsRUFDekIsV0FFb0IsRUFDcEIsWUFBNEUsRUFDNUUsY0FHb0IsRUFDcEIsUUFBYSxFQUNiLGdCQUFxQixFQUNyQixZQUFpQixFQUNqQix5QkFBeUIsR0FBRyxLQUFLO0lBRWpDLE1BQU0sU0FBUyxHQUFHLHNCQUFzQixDQUN0QyxrQkFBa0IsRUFDbEIsUUFBUSxFQUNSLE9BQU8sRUFDUCxpQkFBaUIsRUFDakIsV0FBVyxFQUNYLFFBQVEsRUFDUixnQkFBZ0IsQ0FDakIsQ0FBQztJQUVGLE1BQU0sVUFBVSxHQUFHLHVCQUF1QixDQUN4QyxrQkFBa0IsRUFDbEIsUUFBUSxFQUNSLE9BQU8sRUFDUCxtQkFBbUIsRUFDbkIsWUFBWSxFQUNaLFFBQVEsRUFDUixnQkFBZ0IsRUFDaEIseUJB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UCxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDN0IsQ0FBQyxDQUFDLENBQ0gsRUFDSCxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FDcEIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb25zLCBjcmVhdGVFZmZlY3QsIG9mVHlwZSB9IGZyb20gJ0BuZ3J4L2VmZmVjdHMnO1xyXG5pbXBvcnQge1xyXG4gIGNhdGNoRXJyb3IsXHJcbiAgbWFwLFxyXG4gIE9ic2VydmFibGUsXHJcbiAgb2YsXHJcbiAgc3dpdGNoTWFwLFxyXG4gIHRhcCxcclxuICB3aXRoTGF0ZXN0RnJvbSxcclxufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtcclxuICBjcmVhdGVBZGRCaW5kaW5nQWN0aW9uLFxyXG4gIGNyZWF0ZUFkZEJpbmRpbmdzQWN0aW9uLFxyXG4gIGNyZWF0ZUFkZEJpbmRpbmdzRmFpbHVyZUFjdGlvbixcclxuICBjcmVhdGVBZGRCaW5kaW5nc1N1Y2Nlc3NBY3Rpb24sXHJcbiAgY3JlYXRlRGVsZXRlQmluZGluZ0FjdGlvbixcclxuICBjcmVhdGVEZWxldGVCaW5kaW5nc0FjdGlvbixcclxuICBjcmVhdGVEZWxldGVCaW5kaW5nc0ZhaWx1cmVBY3Rpb24sXHJcbiAgY3JlYXRlRGVsZXRlQmluZGluZ3NTdWNjZXNzQWN0aW9uLFxyXG4gIGNyZWF0ZUVkaXRCaW5kaW5nQWN0aW9uLFxyXG4gIGNyZWF0ZUVkaXRCaW5kaW5nRmFpbHVyZUFjdGlvbixcclxuICBjcmVhdGVFZGl0QmluZGluZ1N1Y2Nlc3NBY3Rpb24sXHJcbn0gZnJvbSAnLi9iaW5kaW5nLmFjdGlvbnMnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNpbmdsZUJpbmRpbmdFZmZlY3RzV2l0aEVkaXQ8XHJcbiAgVCBleHRlbmRzIHsgaWQ6IG51bWJlciB8IHN0cmluZyB9LFxyXG4gIFRDcmVhdGUsXHJcbiAgVEVkaXQgZXh0ZW5kcyB7IGlkPzogbnVtYmVyIHwgc3RyaW5nIH1cclxuPihcclxuICBiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZyxcclxuICBhY3Rpb25zJDogQWN0aW9ucyxcclxuICBkZXRhaWwkOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+LFxyXG4gIGJpbmRpbmdTaW5ndWxhck5hbWU6IHN0cmluZyxcclxuICBiaW5kaW5nUGx1cmFsTmFtZTogc3RyaW5nLFxyXG4gIGFkZEZ1bmN0aW9uOiAoXHJcbiAgICBiaW5kaW5nczogVENyZWF0ZSxcclxuICApID0+IE9ic2VydmFibGU8YW55PixcclxuICBlZGl0RnVuY3Rpb246IChiaW5kaW5nOiBURWRpdCwgZGV0YWlsSWQ6IG51bWJlciB8IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxhbnk+LFxyXG4gIGRlbGV0ZUZ1bmN0aW9uOiAoXHJcbiAgICBiaW5kaW5nSWRzOiBzdHJpbmcgfCBudW1iZXIsXHJcbiAgICBkZXRhaWxJZDogbnVtYmVyIHwgc3RyaW5nXHJcbiAgKSA9PiBPYnNlcnZhYmxlPGFueT4sXHJcbiAgc25hY2tiYXI6IGFueSxcclxuICB0cmFuc2xhdGVTZXJ2aWNlOiBhbnksXHJcbiAgdGFibGVTZXJ2aWNlOiBhbnksXHJcbiAgb3ZlcnJpZGVEZXRhaWxXaXRoQmluZGluZyA9IGZhbHNlLFxyXG4pIHtcclxuICBjb25zdCBhZGRFZmZlY3QgPSBjcmVhdGVBZGRCaW5kaW5nRWZmZWN0KFxyXG4gICAgYmluZGluZ3NSZXBvc2l0b3J5LFxyXG4gICAgYWN0aW9ucyQsXHJcbiAgICBkZXRhaWwkLFxyXG4gICAgYmluZGluZ1BsdXJhbE5hbWUsXHJcbiAgICBhZGRGdW5jdGlvbixcclxuICAgIHNuYWNrYmFyLFxyXG4gICAgdHJhbnNsYXRlU2VydmljZSxcclxuICApO1xyXG5cclxuICBjb25zdCBlZGl0RWZmZWN0ID0gY3JlYXRlRWRpdEJpbmRpbmdFZmZlY3QoXHJcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXHJcbiAgICBhY3Rpb25zJCxcclxuICAgIGRldGFpbCQsXHJcbiAgICBiaW5kaW5nU2luZ3VsYXJOYW1lLFxyXG4gICAgZWRpdEZ1bmN0aW9uLFxyXG4gICAgc25hY2tiYXIsXHJcbiAgICB0cmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgb3ZlcnJpZGVEZXRhaWxXaXRoQmluZGluZ1xyXG4gICk7XHJcblxyXG4gIGNvbnN0IGRlbGV0ZUVmZmVjdCA9IGNyZWF0ZURlbGV0ZUJpbmRpbmdFZmZlY3QoXHJcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXHJcbiAgICBhY3Rpb25zJCxcclxuICAgIGRldGFpbCQsXHJcbiAgICBiaW5kaW5nUGx1cmFsTmFtZSxcclxuICAgIGRlbGV0ZUZ1bmN0aW9uLFxyXG4gICAgc25hY2tiYXIsXHJcbiAgICB0cmFuc2xhdGVTZXJ2aWNlXHJcbiAgKTtcclxuXHJcbiAgY29uc3QgbW9kaWZpZWRTdWNjZXNzRWZmZWN0ID0gY3JlYXRlQmluZGluZ01vZGlmaWVkU3VjY2Vzc0VmZmVjdChcclxuICAgIGJpbmRpbmdzUmVwb3NpdG9yeSxcclxuICAgIGFjdGlvbnMkLFxyXG4gICAgdGFibGVTZXJ2aWNlXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuIHsgYWRkRWZmZWN0LCBlZGl0RWZmZWN0LCBkZWxldGVFZmZlY3QsIG1vZGlmaWVkU3VjY2Vzc0VmZmVjdCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQmluZGluZ3NFZmZlY3RzV2l0aEVkaXQ8XHJcbiAgVCBleHRlbmRzIHsgaWQ6IG51bWJlciB8IHN0cmluZyB9LFxyXG4gIFRDcmVhdGUsXHJcbiAgVEVkaXQgZXh0ZW5kcyB7IGlkPzogbnVtYmVyIHwgc3RyaW5nIH1cclxuPihcclxuICBiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZyxcclxuICBhY3Rpb25zJDogQWN0aW9ucyxcclxuICBkZXRhaWwkOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+LFxyXG4gIGJpbmRpbmdTaW5ndWxhck5hbWU6IHN0cmluZyxcclxuICBiaW5kaW5nUGx1cmFsTmFtZTogc3RyaW5nLFxyXG4gIGFkZEZ1bmN0aW9uOiAoXHJcbiAgICBiaW5kaW5nczogVENyZWF0ZVtdLFxyXG4gICAgZGV0YWlsSWQ6IG51bWJlciB8IHN0cmluZ1xyXG4gICkgPT4gT2JzZXJ2YWJsZTxhbnk+LFxyXG4gIGVkaXRGdW5jdGlvbjogKGJpbmRpbmc6IFRFZGl0LCBkZXRhaWxJZDogbnVtYmVyIHwgc3RyaW5nKSA9PiBPYnNlcnZhYmxlPGFueT4sXHJcbiAgZGVsZXRlRnVuY3Rpb246IChcclxuICAgIGJpbmRpbmdJZHM6IG51bWJlcltdLFxyXG4gICAgZGV0YWlsSWQ6IG51bWJlciB8IHN0cmluZ1xyXG4gICkgPT4gT2JzZXJ2YWJsZTxhbnk+LFxyXG4gIHNuYWNrYmFyOiBhbnksXHJcbiAgdHJhbnNsYXRlU2VydmljZTogYW55LFxyXG4gIHRhYmxlU2VydmljZTogYW55LFxyXG4gIG92ZXJyaWRlRGV0YWlsV2l0aEJpbmRpbmcgPSBmYWxzZSxcclxuKSB7XHJcbiAgY29uc3QgYWRkRWZmZWN0ID0gY3JlYXRlQWRkQmluZGluZ3NFZmZlY3QoXHJcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXHJcbiAgICBhY3Rpb25zJCxcclxuICAgIGRldGFpbCQsXHJcbiAgICBiaW5kaW5nUGx1cmFsTmFtZSxcclxuICAgIGFkZEZ1bmN0aW9uLFxyXG4gICAgc25hY2tiYXIsXHJcbiAgICB0cmFuc2xhdGVTZXJ2aWNlXHJcbiAgKTtcclxuXHJcbiAgY29uc3QgZWRpdEVmZmVjdCA9IGNyZWF0ZUVkaXRCaW5kaW5nRWZmZWN0KFxyXG4gICAgYmluZGluZ3NSZXBvc2l0b3J5LFxyXG4gICAgYWN0aW9ucyQsXHJcbiAgICBkZXRhaWwkLFxyXG4gICAgYmluZGluZ1Npbmd1bGFyTmFtZSxcclxuICAgIGVkaXRGdW5jdGlvbixcclxuICAgIHNuYWNrYmFyLFxyXG4gICAgdHJhbnNsYXRlU2VydmljZSxcclxuICAgIG92ZXJyaWRlRGV0YWlsV2l0aEJpbmRpbmdcclxuICApO1xyXG5cclxuICBjb25zdCBkZWxldGVFZmZlY3QgPSBjcmVhdGVEZWxldGVCaW5kaW5nc0VmZmVjdChcclxuICAgIGJpbmRpbmdzUmVwb3NpdG9yeSxcclxuICAgIGFjdGlvbnMkLFxyXG4gICAgZGV0YWlsJCxcclxuICAgIGJpbmRpbmdQbHVyYWxOYW1lLFxyXG4gICAgZGVsZXRlRnVuY3Rpb24sXHJcbiAgICBzbmFja2JhcixcclxuICAgIHRyYW5zbGF0ZVNlcnZpY2VcclxuICApO1xyXG5cclxuICBjb25zdCBtb2RpZmllZFN1Y2Nlc3NFZmZlY3QgPSBjcmVhdGVCaW5kaW5nTW9kaWZpZWRTdWNjZXNzRWZmZWN0KFxyXG4gICAgYmluZGluZ3NSZXBvc2l0b3J5LFxyXG4gICAgYWN0aW9ucyQsXHJcbiAgICB0YWJsZVNlcnZpY2VcclxuICApO1xyXG5cclxuICByZXR1cm4geyBhZGRFZmZlY3QsIGVkaXRFZmZlY3QsIGRlbGV0ZUVmZmVjdCwgbW9kaWZpZWRTdWNjZXNzRWZmZWN0IH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCaW5kaW5nc0VmZmVjdHM8XHJcbiAgVCBleHRlbmRzIHsgaWQ6IG51bWJlciB8IHN0cmluZyB9LFxyXG4gIFRDcmVhdGVcclxuPihcclxuICBiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZyxcclxuICBhY3Rpb25zJDogQWN0aW9ucyxcclxuICBkZXRhaWwkOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+LFxyXG4gIGJpbmRpbmdQbHVyYWxOYW1lOiBzdHJpbmcsXHJcbiAgYWRkRnVuY3Rpb246IChcclxuICAgIGJpbmRpbmdzOiBUQ3JlYXRlW10sXHJcbiAgICBkZXRhaWxJZDogbnVtYmVyIHwgc3RyaW5nXHJcbiAgKSA9PiBPYnNlcnZhYmxlPGFueT4sXHJcbiAgZGVsZXRlRnVuY3Rpb246IChcclxuICAgIGJpbmRpbmdJZHM6IG51bWJlcltdLFxyXG4gICAgZGV0YWlsSWQ6IG51bWJlciB8IHN0cmluZ1xyXG4gICkgPT4gT2JzZXJ2YWJsZTxhbnk+LFxyXG4gIHNuYWNrYmFyOiBhbnksXHJcbiAgdHJhbnNsYXRlU2VydmljZTogYW55LFxyXG4gIHRhYmxlU2VydmljZTogYW55XHJcbikge1xyXG4gIGNvbnN0IGFkZEVmZmVjdCA9IGNyZWF0ZUFkZEJpbmRpbmdzRWZmZWN0KFxyXG4gICAgYmluZGluZ3NSZXBvc2l0b3J5LFxyXG4gICAgYWN0aW9ucyQsXHJcbiAgICBkZXRhaWwkLFxyXG4gICAgYmluZGluZ1BsdXJhbE5hbWUsXHJcbiAgICBhZGRGdW5jdGlvbixcclxuICAgIHNuYWNrYmFyLFxyXG4gICAgdHJhbnNsYXRlU2VydmljZVxyXG4gICk7XHJcblxyXG4gIGNvbnN0IGRlbGV0ZUVmZmVjdCA9IGNyZWF0ZURlbGV0ZUJpbmRpbmdzRWZmZWN0KFxyXG4gICAgYmluZGluZ3NSZXBvc2l0b3J5LFxyXG4gICAgYWN0aW9ucyQsXHJcbiAgICBkZXRhaWwkLFxyXG4gICAgYmluZGluZ1BsdXJhbE5hbWUsXHJcbiAgICBkZWxldGVGdW5jdGlvbixcclxuICAgIHNuYWNrYmFyLFxyXG4gICAgdHJhbnNsYXRlU2VydmljZVxyXG4gICk7XHJcblxyXG4gIGNvbnN0IG1vZGlmaWVkU3VjY2Vzc0VmZmVjdCA9IGNyZWF0ZUJpbmRpbmdNb2RpZmllZFN1Y2Nlc3NFZmZlY3QoXHJcbiAgICBiaW5kaW5nc1JlcG9zaXRvcnksXHJcbiAgICBhY3Rpb25zJCxcclxuICAgIHRhYmxlU2VydmljZVxyXG4gICk7XHJcblxyXG4gIHJldHVybiB7IGFkZEVmZmVjdCwgZGVsZXRlRWZmZWN0LCBtb2RpZmllZFN1Y2Nlc3NFZmZlY3QgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlQWRkQmluZGluZ0VmZmVjdDxUIGV4dGVuZHMgeyBpZDogbnVtYmVyIHwgc3RyaW5nIH0sIFRDcmVhdGU+KFxyXG4gIGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nLFxyXG4gIGFjdGlvbnMkOiBBY3Rpb25zLFxyXG4gIGRldGFpbCQ6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4sXHJcbiAgYmluZGluZ1BsdXJhbE5hbWU6IHN0cmluZyxcclxuICBhZGRGdW5jdGlvbjogKFxyXG4gICAgYmluZGluZ3M6IFRDcmVhdGUsXHJcbiAgKSA9PiBPYnNlcnZhYmxlPGFueT4sXHJcbiAgc25hY2tiYXI6IGFueSxcclxuICB0cmFuc2xhdGVTZXJ2aWNlOiBhbnksXHJcbikge1xyXG4gIHJldHVybiBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIGFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZShjcmVhdGVBZGRCaW5kaW5nQWN0aW9uPFRDcmVhdGU+KGJpbmRpbmdzUmVwb3NpdG9yeSkpLFxyXG4gICAgICB3aXRoTGF0ZXN0RnJvbShkZXRhaWwkKSxcclxuICAgICAgc3dpdGNoTWFwKChbeyBiaW5kaW5nIH0sIGRldGFpbF0pID0+IHtcclxuICAgICAgICBjb25zdCB0cmFuc2xhdGVkUGx1cmFsTmFtZSA9XHJcbiAgICAgICAgICB0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYmluZGluZ1BsdXJhbE5hbWUpO1xyXG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NNZXNzYWdlID0gYCR7dHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ0JJTkRJTkdTX0VGRkVDVFMuU1VDQ0VTU19BREQnXHJcbiAgICAgICAgKX0gJHt0cmFuc2xhdGVkUGx1cmFsTmFtZX0hYDtcclxuICAgICAgICBjb25zdCBmYWlsdXJlTWVzc2FnZSA9IGAke3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcclxuICAgICAgICAgICdCSU5ESU5HU19FRkZFQ1RTLkZBSUxVUkVfQUREJ1xyXG4gICAgICAgICl9ICR7dHJhbnNsYXRlZFBsdXJhbE5hbWV9IWA7XHJcblxyXG4gICAgICAgIHJldHVybiBhZGRGdW5jdGlvbihiaW5kaW5nKS5waXBlKFxyXG4gICAgICAgICAgbWFwKCgpID0+IHtcclxuICAgICAgICAgICAgc25hY2tiYXIuc2hvd1N1Y2Nlc3Moc3VjY2Vzc01lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlQWRkQmluZGluZ3NTdWNjZXNzQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoKTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgc25hY2tiYXIuc2hvd0Vycm9yKGZhaWx1cmVNZXNzYWdlKTtcclxuICAgICAgICAgICAgcmV0dXJuIG9mKFxyXG4gICAgICAgICAgICAgIGNyZWF0ZUFkZEJpbmRpbmdzRmFpbHVyZUFjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnkpKHsgZXJyb3IgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgfSlcclxuICAgIClcclxuICApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVBZGRCaW5kaW5nc0VmZmVjdDxUIGV4dGVuZHMgeyBpZDogbnVtYmVyIHwgc3RyaW5nIH0sIFRDcmVhdGU+KFxyXG4gIGJpbmRpbmdzUmVwb3NpdG9yeTogc3RyaW5nLFxyXG4gIGFjdGlvbnMkOiBBY3Rpb25zLFxyXG4gIGRldGFpbCQ6IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZD4sXHJcbiAgYmluZGluZ1BsdXJhbE5hbWU6IHN0cmluZyxcclxuICBhZGRGdW5jdGlvbjogKFxyXG4gICAgYmluZGluZ3M6IFRDcmVhdGVbXSxcclxuICAgIGRldGFpbElkOiBudW1iZXIgfCBzdHJpbmdcclxuICApID0+IE9ic2VydmFibGU8YW55PixcclxuICBzbmFja2JhcjogYW55LFxyXG4gIHRyYW5zbGF0ZVNlcnZpY2U6IGFueVxyXG4pIHtcclxuICByZXR1cm4gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICBhY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUoY3JlYXRlQWRkQmluZGluZ3NBY3Rpb248VENyZWF0ZT4oYmluZGluZ3NSZXBvc2l0b3J5KSksXHJcbiAgICAgIHdpdGhMYXRlc3RGcm9tKGRldGFpbCQpLFxyXG4gICAgICBzd2l0Y2hNYXAoKFt7IGJpbmRpbmdzIH0sIGRldGFpbF0pID0+IHtcclxuICAgICAgICBjb25zdCB0cmFuc2xhdGVkUGx1cmFsTmFtZSA9XHJcbiAgICAgICAgICB0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoYmluZGluZ1BsdXJhbE5hbWUpO1xyXG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NNZXNzYWdlID0gYCR7dHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ0JJTkRJTkdTX0VGRkVDVFMuU1VDQ0VTU19BREQnXHJcbiAgICAgICAgKX0gJHt0cmFuc2xhdGVkUGx1cmFsTmFtZX0hYDtcclxuICAgICAgICBjb25zdCBmYWlsdXJlTWVzc2FnZSA9IGAke3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcclxuICAgICAgICAgICdCSU5ESU5HU19FRkZFQ1RTLkZBSUxVUkVfQUREJ1xyXG4gICAgICAgICl9ICR7dHJhbnNsYXRlZFBsdXJhbE5hbWV9IWA7XHJcblxyXG4gICAgICAgIGlmICghZGV0YWlsPy5pZCkge1xyXG4gICAgICAgICAgc25hY2tiYXIuc2hvd0Vycm9yKGZhaWx1cmVNZXNzYWdlKTtcclxuICAgICAgICAgIHJldHVybiBvZihcclxuICAgICAgICAgICAgY3JlYXRlQWRkQmluZGluZ3NGYWlsdXJlQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoe1xyXG4gICAgICAgICAgICAgIGVycm9yOiBmYWlsdXJlTWVzc2FnZSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYWRkRnVuY3Rpb24oYmluZGluZ3MsIGRldGFpbC5pZCkucGlwZShcclxuICAgICAgICAgIG1hcCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHNuYWNrYmFyLnNob3dTdWNjZXNzKHN1Y2Nlc3NNZXNzYWdlKTtcclxuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUFkZEJpbmRpbmdzU3VjY2Vzc0FjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnkpKCk7XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIHNuYWNrYmFyLnNob3dFcnJvcihmYWlsdXJlTWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBvZihcclxuICAgICAgICAgICAgICBjcmVhdGVBZGRCaW5kaW5nc0ZhaWx1cmVBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSh7IGVycm9yIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgKTtcclxufVxyXG5cclxuZnVuY3Rpb24gY3JlYXRlRWRpdEJpbmRpbmdFZmZlY3Q8XHJcbiAgVCBleHRlbmRzIHsgaWQ6IG51bWJlciB8IHN0cmluZyB9LFxyXG4gIFRFZGl0IGV4dGVuZHMgeyBpZD86IG51bWJlciB8IHN0cmluZyB9XHJcbj4oXHJcbiAgYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcsXHJcbiAgYWN0aW9ucyQ6IEFjdGlvbnMsXHJcbiAgZGV0YWlsJDogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPixcclxuICBiaW5kaW5nU2luZ3VsYXJOYW1lOiBzdHJpbmcsXHJcbiAgZWRpdEZ1bmN0aW9uOiAoYmluZGluZzogVEVkaXQsIGRldGFpbElkOiBudW1iZXIgfCBzdHJpbmcpID0+IE9ic2VydmFibGU8YW55PixcclxuICBzbmFja2JhcjogYW55LFxyXG4gIHRyYW5zbGF0ZVNlcnZpY2U6IGFueSxcclxuICBvdmVycmlkZURldGFpbFdpdGhCaW5kaW5nID0gZmFsc2UsXHJcbikge1xyXG4gIHJldHVybiBjcmVhdGVFZmZlY3QoKCkgPT5cclxuICAgIGFjdGlvbnMkLnBpcGUoXHJcbiAgICAgIG9mVHlwZShjcmVhdGVFZGl0QmluZGluZ0FjdGlvbjxURWRpdD4oYmluZGluZ3NSZXBvc2l0b3J5KSksXHJcbiAgICAgIHdpdGhMYXRlc3RGcm9tKGRldGFpbCQpLFxyXG4gICAgICBzd2l0Y2hNYXAoKFt7IGJpbmRpbmcgfSwgZGV0YWlsXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZWRQbHVyYWxOYW1lID1cclxuICAgICAgICAgIHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChiaW5kaW5nU2luZ3VsYXJOYW1lKTtcclxuICAgICAgICBjb25zdCBzdWNjZXNzTWVzc2FnZSA9IGAke3RyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcclxuICAgICAgICAgICdCSU5ESU5HU19FRkZFQ1RTLlNVQ0NFU1NfRURJVCdcclxuICAgICAgICApfSAke3RyYW5zbGF0ZWRQbHVyYWxOYW1lfSFgO1xyXG4gICAgICAgIGNvbnN0IGZhaWx1cmVNZXNzYWdlID0gYCR7dHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ0JJTkRJTkdTX0VGRkVDVFMuRkFJTFVSRV9FRElUJ1xyXG4gICAgICAgICl9ICR7dHJhbnNsYXRlZFBsdXJhbE5hbWV9IWA7XHJcblxyXG4gICAgICAgIGNvbnN0IGlkID0gb3ZlcnJpZGVEZXRhaWxXaXRoQmluZGluZyA/IGJpbmRpbmc/LmlkIDogZGV0YWlsPy5pZDtcclxuICAgICAgICBpZiAoIWlkKSB7XHJcbiAgICAgICAgICBzbmFja2Jhci5zaG93RXJyb3IoZmFpbHVyZU1lc3NhZ2UpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKFxyXG4gICAgICAgICAgICBjcmVhdGVFZGl0QmluZGluZ0ZhaWx1cmVBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSh7XHJcbiAgICAgICAgICAgICAgZXJyb3I6IGZhaWx1cmVNZXNzYWdlLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBlZGl0RnVuY3Rpb24oYmluZGluZywgaWQpLnBpcGUoXHJcbiAgICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICBzbmFja2Jhci5zaG93U3VjY2VzcyhzdWNjZXNzTWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVFZGl0QmluZGluZ1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSgpO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBzbmFja2Jhci5zaG93RXJyb3IoZmFpbHVyZU1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm4gb2YoXHJcbiAgICAgICAgICAgICAgY3JlYXRlRWRpdEJpbmRpbmdGYWlsdXJlQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoeyBlcnJvciB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZURlbGV0ZUJpbmRpbmdFZmZlY3Q8VCBleHRlbmRzIHsgaWQ6IG51bWJlciB8IHN0cmluZyB9PihcclxuICBiaW5kaW5nc1JlcG9zaXRvcnk6IHN0cmluZyxcclxuICBhY3Rpb25zJDogQWN0aW9ucyxcclxuICBkZXRhaWwkOiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQ+LFxyXG4gIGJpbmRpbmdQbHVyYWxOYW1lOiBzdHJpbmcsXHJcbiAgZGVsZXRlRnVuY3Rpb246IChcclxuICAgIGJpbmRpbmdJZHM6IHN0cmluZyB8IG51bWJlcixcclxuICAgIGRldGFpbElkOiBzdHJpbmcgfCBudW1iZXJcclxuICApID0+IE9ic2VydmFibGU8YW55PixcclxuICBzbmFja2JhcjogYW55LFxyXG4gIHRyYW5zbGF0ZVNlcnZpY2U6IGFueVxyXG4pIHtcclxuICByZXR1cm4gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICBhY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUoY3JlYXRlRGVsZXRlQmluZGluZ0FjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnkpKSxcclxuICAgICAgd2l0aExhdGVzdEZyb20oZGV0YWlsJCksXHJcbiAgICAgIHN3aXRjaE1hcCgoW3sgaWQgfSwgZGV0YWlsXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZWRQbHVyYWxOYW1lID1cclxuICAgICAgICAgIHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChiaW5kaW5nUGx1cmFsTmFtZSk7XHJcbiAgICAgICAgY29uc3Qgc3VjY2Vzc01lc3NhZ2UgPSBgJHt0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXHJcbiAgICAgICAgICAnQklORElOR1NfRUZGRUNUUy5TVUNDRVNTX0RFTEVURSdcclxuICAgICAgICApfSAke3RyYW5zbGF0ZWRQbHVyYWxOYW1lfSFgO1xyXG4gICAgICAgIGNvbnN0IGZhaWx1cmVNZXNzYWdlID0gYCR7dHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ0JJTkRJTkdTX0VGRkVDVFMuRkFJTFVSRV9ERUxFVEUnXHJcbiAgICAgICAgKX0gJHt0cmFuc2xhdGVkUGx1cmFsTmFtZX0hYDtcclxuXHJcbiAgICAgICAgaWYgKCFpZCAmJiAhZGV0YWlsPy5pZCkge1xyXG4gICAgICAgICAgc25hY2tiYXIuc2hvd0Vycm9yKGZhaWx1cmVNZXNzYWdlKTtcclxuICAgICAgICAgIHJldHVybiBvZihcclxuICAgICAgICAgICAgY3JlYXRlRGVsZXRlQmluZGluZ3NGYWlsdXJlQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoe1xyXG4gICAgICAgICAgICAgIGVycm9yOiBmYWlsdXJlTWVzc2FnZSxcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZGVsZXRlRnVuY3Rpb24oaWQsIGlkID8/IGRldGFpbD8uaWQpLnBpcGUoXHJcbiAgICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICBzbmFja2Jhci5zaG93U3VjY2VzcyhzdWNjZXNzTWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVEZWxldGVCaW5kaW5nc1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSgpO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBzbmFja2Jhci5zaG93RXJyb3IoZmFpbHVyZU1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm4gb2YoXHJcbiAgICAgICAgICAgICAgY3JlYXRlRGVsZXRlQmluZGluZ3NGYWlsdXJlQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoeyBlcnJvciB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZURlbGV0ZUJpbmRpbmdzRWZmZWN0PFQgZXh0ZW5kcyB7IGlkOiBudW1iZXIgfCBzdHJpbmcgfT4oXHJcbiAgYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcsXHJcbiAgYWN0aW9ucyQ6IEFjdGlvbnMsXHJcbiAgZGV0YWlsJDogT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkPixcclxuICBiaW5kaW5nUGx1cmFsTmFtZTogc3RyaW5nLFxyXG4gIGRlbGV0ZUZ1bmN0aW9uOiAoXHJcbiAgICBiaW5kaW5nSWRzOiBudW1iZXJbXSxcclxuICAgIGRldGFpbElkOiBzdHJpbmcgfCBudW1iZXJcclxuICApID0+IE9ic2VydmFibGU8YW55PixcclxuICBzbmFja2JhcjogYW55LFxyXG4gIHRyYW5zbGF0ZVNlcnZpY2U6IGFueVxyXG4pIHtcclxuICByZXR1cm4gY3JlYXRlRWZmZWN0KCgpID0+XHJcbiAgICBhY3Rpb25zJC5waXBlKFxyXG4gICAgICBvZlR5cGUoY3JlYXRlRGVsZXRlQmluZGluZ3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSksXHJcbiAgICAgIHdpdGhMYXRlc3RGcm9tKGRldGFpbCQpLFxyXG4gICAgICBzd2l0Y2hNYXAoKFt7IGJpbmRpbmdJZHMgfSwgZGV0YWlsXSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHRyYW5zbGF0ZWRQbHVyYWxOYW1lID1cclxuICAgICAgICAgIHRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChiaW5kaW5nUGx1cmFsTmFtZSk7XHJcbiAgICAgICAgY29uc3Qgc3VjY2Vzc01lc3NhZ2UgPSBgJHt0cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXHJcbiAgICAgICAgICAnQklORElOR1NfRUZGRUNUUy5TVUNDRVNTX0RFTEVURSdcclxuICAgICAgICApfSAke3RyYW5zbGF0ZWRQbHVyYWxOYW1lfSFgO1xyXG4gICAgICAgIGNvbnN0IGZhaWx1cmVNZXNzYWdlID0gYCR7dHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxyXG4gICAgICAgICAgJ0JJTkRJTkdTX0VGRkVDVFMuRkFJTFVSRV9ERUxFVEUnXHJcbiAgICAgICAgKX0gJHt0cmFuc2xhdGVkUGx1cmFsTmFtZX0hYDtcclxuXHJcbiAgICAgICAgaWYgKCFkZXRhaWw/LmlkKSB7XHJcbiAgICAgICAgICBzbmFja2Jhci5zaG93RXJyb3IoZmFpbHVyZU1lc3NhZ2UpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKFxyXG4gICAgICAgICAgICBjcmVhdGVEZWxldGVCaW5kaW5nc0ZhaWx1cmVBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSh7XHJcbiAgICAgICAgICAgICAgZXJyb3I6IGZhaWx1cmVNZXNzYWdlLFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBkZWxldGVGdW5jdGlvbihiaW5kaW5nSWRzLCBkZXRhaWwuaWQpLnBpcGUoXHJcbiAgICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgICBzbmFja2Jhci5zaG93U3VjY2VzcyhzdWNjZXNzTWVzc2FnZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVEZWxldGVCaW5kaW5nc1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSgpO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICBzbmFja2Jhci5zaG93RXJyb3IoZmFpbHVyZU1lc3NhZ2UpO1xyXG4gICAgICAgICAgICByZXR1cm4gb2YoXHJcbiAgICAgICAgICAgICAgY3JlYXRlRGVsZXRlQmluZGluZ3NGYWlsdXJlQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSkoeyBlcnJvciB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZUJpbmRpbmdNb2RpZmllZFN1Y2Nlc3NFZmZlY3QoXHJcbiAgYmluZGluZ3NSZXBvc2l0b3J5OiBzdHJpbmcsXHJcbiAgYWN0aW9ucyQ6IEFjdGlvbnMsXHJcbiAgdGFibGVTZXJ2aWNlOiBhbnlcclxuKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZUVmZmVjdChcclxuICAgICgpID0+XHJcbiAgICAgIGFjdGlvbnMkLnBpcGUoXHJcbiAgICAgICAgb2ZUeXBlKFxyXG4gICAgICAgICAgY3JlYXRlQWRkQmluZGluZ3NTdWNjZXNzQWN0aW9uKGJpbmRpbmdzUmVwb3NpdG9yeSksXHJcbiAgICAgICAgICBjcmVhdGVFZGl0QmluZGluZ1N1Y2Nlc3NBY3Rpb24oYmluZGluZ3NSZXBvc2l0b3J5KSxcclxuICAgICAgICAgIGNyZWF0ZURlbGV0ZUJpbmRpbmdzU3VjY2Vzc0FjdGlvbihiaW5kaW5nc1JlcG9zaXRvcnkpXHJcbiAgICAgICAgKSxcclxuICAgICAgICB0YXAoKCkgPT4ge1xyXG4gICAgICAgICAgdGFibGVTZXJ2aWNlLmZvcmNlUmVsb2FkKCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKSxcclxuICAgIHsgZGlzcGF0Y2g6IGZhbHNlIH1cclxuICApO1xyXG59XHJcbiJdfQ==
@@ -1,47 +0,0 @@
1
- import { createAction, props } from '@ngrx/store';
2
- export function createInitDetailAction(detailsRepository) {
3
- return createAction(`[${detailsRepository} Page] Init`, props());
4
- }
5
- export function createInitNewDetailAction(detailsRepository) {
6
- return createAction(`[${detailsRepository} Page] Init New`);
7
- }
8
- export function createLoadDetailSuccessAction(detailsRepository) {
9
- return createAction(`[${detailsRepository}/API] Load ${detailsRepository} Success`, props());
10
- }
11
- export function createLoadDetailFailureAction(detailsRepository) {
12
- return createAction(`[${detailsRepository}/API] Load ${detailsRepository} Failure`, props());
13
- }
14
- export function createUpdateDetailAction(detailsRepository) {
15
- return createAction(`[${detailsRepository}/API] Update ${detailsRepository}`, props());
16
- }
17
- export function createUpdateDetailSetErrorsAction(detailsRepository) {
18
- return createAction(`[${detailsRepository}/API] Update Validation Errors ${detailsRepository}`, props());
19
- }
20
- export function createUpdateFormStateAction(detailsRepository) {
21
- return createAction(`[${detailsRepository}/API] Update Form State`, props());
22
- }
23
- export function createSaveDetailAction(detailsRepository) {
24
- return createAction(`[${detailsRepository}/API] Save Detail `);
25
- }
26
- export function createSaveDetailSuccessAction(detailsRepository) {
27
- return createAction(`[${detailsRepository}/API] Save Detail Success`, props());
28
- }
29
- export function createSaveDetailFailureAction(detailsRepository) {
30
- return createAction(`[${detailsRepository}/API] Save Detail Failure`, props());
31
- }
32
- export function createUpdateSaveDetailAction(detailsRepository) {
33
- return createAction(`[${detailsRepository}/API] Update Detail `);
34
- }
35
- export function createResetStateAction(detailsRepository) {
36
- return createAction(`[${detailsRepository}/API] Reset State`);
37
- }
38
- export function createDeleteDetailAction(detailsRepository) {
39
- return createAction(`[${detailsRepository}/API] Delete Detail`);
40
- }
41
- export function createDeleteDetailSuccessAction(detailsRepository) {
42
- return createAction(`[${detailsRepository}/API] Delete Detail Success`);
43
- }
44
- export function createDeleteDetailFailureAction(detailsRepository) {
45
- return createAction(`[${detailsRepository}/API] Delete Detail Failure`, props());
46
- }
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLmFjdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy9zdG9yZS9zcmMvbGliL2RldGFpbC1zdGF0ZS9kZXRhaWwuYWN0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdsRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsaUJBQXlCO0lBQzlELE9BQU8sWUFBWSxDQUNqQixJQUFJLGlCQUFpQixhQUFhLEVBQ2xDLEtBQUssRUFBcUQsQ0FDM0QsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCLENBQUMsaUJBQXlCO0lBQ2pFLE9BQU8sWUFBWSxDQUFDLElBQUksaUJBQWlCLGlCQUFpQixDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELE1BQU0sVUFBVSw2QkFBNkIsQ0FBSSxpQkFBeUI7SUFDeEUsT0FBTyxZQUFZLENBQ2pCLElBQUksaUJBQWlCLGNBQWMsaUJBQWlCLFVBQVUsRUFDOUQsS0FBSyxFQUFlLENBQ3JCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDZCQUE2QixDQUFDLGlCQUF5QjtJQUNyRSxPQUFPLFlBQVksQ0FDakIsSUFBSSxpQkFBaUIsY0FBYyxpQkFBaUIsVUFBVSxFQUM5RCxLQUFLLEVBQWtCLENBQ3hCLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUFJLGlCQUF5QjtJQUNuRSxPQUFPLFlBQVksQ0FDakIsSUFBSSxpQkFBaUIsZ0JBQWdCLGlCQUFpQixFQUFFLEVBQ3hELEtBQUssRUFBZSxDQUNyQixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSxpQ0FBaUMsQ0FBQyxpQkFBeUI7SUFDekUsT0FBTyxZQUFZLENBQ2pCLElBQUksaUJBQWlCLGtDQUFrQyxpQkFBaUIsRUFBRSxFQUMxRSxLQUFLLEVBQWtCLENBQ3hCLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLDJCQUEyQixDQUFDLGlCQUF5QjtJQUNuRSxPQUFPLFlBQVksQ0FDakIsSUFBSSxpQkFBaUIseUJBQXlCLEVBQzlDLEtBQUssRUFBNEIsQ0FDbEMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsaUJBQXlCO0lBQzlELE9BQU8sWUFBWSxDQUFDLElBQUksaUJBQWlCLG9CQUFvQixDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELE1BQU0sVUFBVSw2QkFBNkIsQ0FBSSxpQkFBeUI7SUFDeEUsT0FBTyxZQUFZLENBQ2pCLElBQUksaUJBQWlCLDJCQUEyQixFQUNoRCxLQUFLLEVBQWUsQ0FDckIsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsNkJBQTZCLENBQUMsaUJBQXlCO0lBQ3JFLE9BQU8sWUFBWSxDQUNqQixJQUFJLGlCQUFpQiwyQkFBMkIsRUFDaEQsS0FBSyxFQUFrQixDQUN4QixDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sVUFBVSw0QkFBNEIsQ0FBQyxpQkFBeUI7SUFDcEUsT0FBTyxZQUFZLENBQUMsSUFBSSxpQkFBaUIsc0JBQXNCLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBRUQsTUFBTSxVQUFVLHNCQUFzQixDQUFDLGlCQUF5QjtJQUM5RCxPQUFPLFlBQVksQ0FBQyxJQUFJLGlCQUFpQixtQkFBbUIsQ0FBQyxDQUFDO0FBQ2hFLENBQUM7QUFFRCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsaUJBQXlCO0lBQ2hFLE9BQU8sWUFBWSxDQUFDLElBQUksaUJBQWlCLHFCQUFxQixDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUVELE1BQU0sVUFBVSwrQkFBK0IsQ0FBQyxpQkFBeUI7SUFDdkUsT0FBTyxZQUFZLENBQUMsSUFBSSxpQkFBaUIsNkJBQTZCLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBRUQsTUFBTSxVQUFVLCtCQUErQixDQUFDLGlCQUF5QjtJQUN2RSxPQUFPLFlBQVksQ0FDakIsSUFBSSxpQkFBaUIsNkJBQTZCLEVBQ2xELEtBQUssRUFBa0IsQ0FDeEIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVBY3Rpb24sIHByb3BzIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xyXG5pbXBvcnQgeyBGb3JtU3RhdGUgfSBmcm9tICcuL2RldGFpbC5tb2RlbHMnO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUluaXREZXRhaWxBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnk6IHN0cmluZykge1xyXG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7ZGV0YWlsc1JlcG9zaXRvcnl9IFBhZ2VdIEluaXRgLFxyXG4gICAgcHJvcHM8eyBvYmo6IHN0cmluZyB8IG51bGwgfCBudW1iZXIgfCB1bmRlZmluZWQgfCBhbnkgfT4oKVxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbml0TmV3RGV0YWlsQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcpIHtcclxuICByZXR1cm4gY3JlYXRlQWN0aW9uKGBbJHtkZXRhaWxzUmVwb3NpdG9yeX0gUGFnZV0gSW5pdCBOZXdgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxvYWREZXRhaWxTdWNjZXNzQWN0aW9uPFQ+KGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcpIHtcclxuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIExvYWQgJHtkZXRhaWxzUmVwb3NpdG9yeX0gU3VjY2Vzc2AsXHJcbiAgICBwcm9wczx7IGl0ZW06IFQgfT4oKVxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2FkRGV0YWlsRmFpbHVyZUFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihcclxuICAgIGBbJHtkZXRhaWxzUmVwb3NpdG9yeX0vQVBJXSBMb2FkICR7ZGV0YWlsc1JlcG9zaXRvcnl9IEZhaWx1cmVgLFxyXG4gICAgcHJvcHM8eyBlcnJvcjogYW55IH0+KClcclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVXBkYXRlRGV0YWlsQWN0aW9uPFQ+KGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcpIHtcclxuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIFVwZGF0ZSAke2RldGFpbHNSZXBvc2l0b3J5fWAsXHJcbiAgICBwcm9wczx7IGl0ZW06IFQgfT4oKVxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVVcGRhdGVEZXRhaWxTZXRFcnJvcnNBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnk6IHN0cmluZykge1xyXG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7ZGV0YWlsc1JlcG9zaXRvcnl9L0FQSV0gVXBkYXRlIFZhbGlkYXRpb24gRXJyb3JzICR7ZGV0YWlsc1JlcG9zaXRvcnl9YCxcclxuICAgIHByb3BzPHsgZXJyb3I6IGFueSB9PigpXHJcbiAgKVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVXBkYXRlRm9ybVN0YXRlQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcpIHtcclxuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIFVwZGF0ZSBGb3JtIFN0YXRlYCxcclxuICAgIHByb3BzPHsgZm9ybVN0YXRlOiBGb3JtU3RhdGUgfT4oKVxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTYXZlRGV0YWlsQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcpIHtcclxuICByZXR1cm4gY3JlYXRlQWN0aW9uKGBbJHtkZXRhaWxzUmVwb3NpdG9yeX0vQVBJXSBTYXZlIERldGFpbCBgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNhdmVEZXRhaWxTdWNjZXNzQWN0aW9uPFQ+KGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcpIHtcclxuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIFNhdmUgRGV0YWlsIFN1Y2Nlc3NgLFxyXG4gICAgcHJvcHM8eyBpdGVtOiBUIH0+KClcclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2F2ZURldGFpbEZhaWx1cmVBY3Rpb24oZGV0YWlsc1JlcG9zaXRvcnk6IHN0cmluZykge1xyXG4gIHJldHVybiBjcmVhdGVBY3Rpb24oXHJcbiAgICBgWyR7ZGV0YWlsc1JlcG9zaXRvcnl9L0FQSV0gU2F2ZSBEZXRhaWwgRmFpbHVyZWAsXHJcbiAgICBwcm9wczx7IGVycm9yOiBhbnkgfT4oKVxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVVcGRhdGVTYXZlRGV0YWlsQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcpIHtcclxuICByZXR1cm4gY3JlYXRlQWN0aW9uKGBbJHtkZXRhaWxzUmVwb3NpdG9yeX0vQVBJXSBVcGRhdGUgRGV0YWlsIGApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVzZXRTdGF0ZUFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihgWyR7ZGV0YWlsc1JlcG9zaXRvcnl9L0FQSV0gUmVzZXQgU3RhdGVgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlbGV0ZURldGFpbEFjdGlvbihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihgWyR7ZGV0YWlsc1JlcG9zaXRvcnl9L0FQSV0gRGVsZXRlIERldGFpbGApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRGVsZXRlRGV0YWlsU3VjY2Vzc0FjdGlvbihkZXRhaWxzUmVwb3NpdG9yeTogc3RyaW5nKSB7XHJcbiAgcmV0dXJuIGNyZWF0ZUFjdGlvbihgWyR7ZGV0YWlsc1JlcG9zaXRvcnl9L0FQSV0gRGVsZXRlIERldGFpbCBTdWNjZXNzYCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWxldGVEZXRhaWxGYWlsdXJlQWN0aW9uKGRldGFpbHNSZXBvc2l0b3J5OiBzdHJpbmcpIHtcclxuICByZXR1cm4gY3JlYXRlQWN0aW9uKFxyXG4gICAgYFske2RldGFpbHNSZXBvc2l0b3J5fS9BUEldIERlbGV0ZSBEZXRhaWwgRmFpbHVyZWAsXHJcbiAgICBwcm9wczx7IGVycm9yOiBhbnkgfT4oKVxyXG4gICk7XHJcbn1cclxuIl19