@ng-atomic/common 18.10.0 → 18.12.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 (193) hide show
  1. package/directives/molecules/column/column.molecule.d.ts +66 -0
  2. package/directives/molecules/column/index.d.ts +1 -0
  3. package/directives/resize-column/index.d.ts +1 -0
  4. package/directives/resize-column/resize-column.directive.d.ts +21 -0
  5. package/directives/resize-column/resize-handle.component.d.ts +5 -0
  6. package/esm2022/directives/molecules/column/column.molecule.mjs +112 -0
  7. package/esm2022/directives/molecules/column/index.mjs +2 -0
  8. package/esm2022/directives/molecules/column/ng-atomic-common-directives-molecules-column.mjs +5 -0
  9. package/esm2022/directives/resize-column/index.mjs +2 -0
  10. package/esm2022/directives/resize-column/ng-atomic-common-directives-resize-column.mjs +5 -0
  11. package/esm2022/directives/resize-column/resize-column.directive.mjs +62 -0
  12. package/esm2022/directives/resize-column/resize-handle.component.mjs +13 -0
  13. package/esm2022/models/index.mjs +1 -1
  14. package/esm2022/pipes/actions/actions.pipe.mjs +1 -1
  15. package/esm2022/pipes/columns/columns.pipe.mjs +3 -2
  16. package/esm2022/pipes/data-accessor/data-accessor.pipe.mjs +16 -3
  17. package/esm2022/pipes/domain/domain.pipe.mjs +22 -26
  18. package/esm2022/pipes/error/error.pipe.mjs +1 -2
  19. package/esm2022/pipes/expression/expression.pipe.mjs +18 -0
  20. package/esm2022/pipes/expression/index.mjs +2 -0
  21. package/esm2022/pipes/expression/ng-atomic-common-pipes-expression.mjs +5 -0
  22. package/esm2022/pipes/smart-field/smart-field.pipe.mjs +15 -4
  23. package/esm2022/pipes/style/index.mjs +2 -0
  24. package/esm2022/pipes/style/ng-atomic-common-pipes-style.mjs +5 -0
  25. package/esm2022/pipes/style/style.pipe.mjs +41 -0
  26. package/esm2022/services/form/columns/columns.service.mjs +28 -21
  27. package/esm2022/services/form/json-schema/json-schema.service.mjs +77 -58
  28. package/esm2022/services/form/pagination/pagination.service.mjs +4 -4
  29. package/esm2022/services/language/index.mjs +2 -0
  30. package/esm2022/services/language/language.service.mjs +39 -0
  31. package/esm2022/services/language/ng-atomic-common-services-language.mjs +5 -0
  32. package/esm2022/services/loading/loading.service.mjs +2 -2
  33. package/esm2022/services/query-resolver/query-resolver.service.mjs +4 -5
  34. package/esm2022/services/snack-bar/snack-bar.service.mjs +29 -11
  35. package/esm2022/services/spreadsheet/directives/grid-cell.directive.mjs +124 -0
  36. package/esm2022/services/spreadsheet/directives/index.mjs +2 -0
  37. package/esm2022/services/spreadsheet/features/clipboard.service.mjs +71 -0
  38. package/esm2022/services/spreadsheet/features/data.service.mjs +63 -0
  39. package/esm2022/services/spreadsheet/features/editor.service.mjs +65 -0
  40. package/esm2022/services/spreadsheet/features/grid.service.mjs +54 -0
  41. package/esm2022/services/spreadsheet/features/index.mjs +8 -0
  42. package/esm2022/services/spreadsheet/features/navigation.service.mjs +71 -0
  43. package/esm2022/services/spreadsheet/features/protection.service.mjs +25 -0
  44. package/esm2022/services/spreadsheet/features/selection.service.mjs +129 -0
  45. package/esm2022/services/spreadsheet/index.mjs +5 -0
  46. package/esm2022/services/spreadsheet/models/cell.model.mjs +2 -0
  47. package/esm2022/services/spreadsheet/models/index.mjs +2 -0
  48. package/esm2022/services/spreadsheet/ng-atomic-common-services-spreadsheet.mjs +5 -0
  49. package/esm2022/services/spreadsheet/spreadsheet.service.mjs +183 -0
  50. package/esm2022/services/ui/ui.helpers.mjs +15 -8
  51. package/esm2022/stores/query/query.store.mjs +2 -2
  52. package/esm2022/utils/expression/expression.transformer.mjs +38 -0
  53. package/esm2022/utils/expression/index.mjs +2 -0
  54. package/esm2022/utils/get/get.mjs +2 -2
  55. package/esm2022/utils/index.mjs +2 -2
  56. package/esm2022/utils/inject/inject.mjs +1 -1
  57. package/fesm2022/ng-atomic-common-directives-fallback-src.mjs.map +1 -1
  58. package/fesm2022/ng-atomic-common-directives-ios-safari-scroll-buggyfill.mjs.map +1 -1
  59. package/fesm2022/ng-atomic-common-directives-molecules-column.mjs +119 -0
  60. package/fesm2022/ng-atomic-common-directives-molecules-column.mjs.map +1 -0
  61. package/fesm2022/ng-atomic-common-directives-resize-column.mjs +79 -0
  62. package/fesm2022/ng-atomic-common-directives-resize-column.mjs.map +1 -0
  63. package/fesm2022/ng-atomic-common-interceptors-authorization.mjs.map +1 -1
  64. package/fesm2022/ng-atomic-common-interceptors-throttle.mjs.map +1 -1
  65. package/fesm2022/ng-atomic-common-interceptors-token.mjs.map +1 -1
  66. package/fesm2022/ng-atomic-common-interceptors.mjs.map +1 -1
  67. package/fesm2022/ng-atomic-common-pipes-actions.mjs.map +1 -1
  68. package/fesm2022/ng-atomic-common-pipes-auto-columns.mjs.map +1 -1
  69. package/fesm2022/ng-atomic-common-pipes-columns.mjs +2 -1
  70. package/fesm2022/ng-atomic-common-pipes-columns.mjs.map +1 -1
  71. package/fesm2022/ng-atomic-common-pipes-data-accessor.mjs +15 -2
  72. package/fesm2022/ng-atomic-common-pipes-data-accessor.mjs.map +1 -1
  73. package/fesm2022/ng-atomic-common-pipes-domain.mjs +22 -26
  74. package/fesm2022/ng-atomic-common-pipes-domain.mjs.map +1 -1
  75. package/fesm2022/ng-atomic-common-pipes-error.mjs +0 -1
  76. package/fesm2022/ng-atomic-common-pipes-error.mjs.map +1 -1
  77. package/fesm2022/ng-atomic-common-pipes-expression.mjs +25 -0
  78. package/fesm2022/ng-atomic-common-pipes-expression.mjs.map +1 -0
  79. package/fesm2022/ng-atomic-common-pipes-grouped-by.mjs.map +1 -1
  80. package/fesm2022/ng-atomic-common-pipes-index-length.mjs.map +1 -1
  81. package/fesm2022/ng-atomic-common-pipes-index.mjs.map +1 -1
  82. package/fesm2022/ng-atomic-common-pipes-keys.mjs.map +1 -1
  83. package/fesm2022/ng-atomic-common-pipes-map.mjs.map +1 -1
  84. package/fesm2022/ng-atomic-common-pipes-page.mjs.map +1 -1
  85. package/fesm2022/ng-atomic-common-pipes-pagination.mjs.map +1 -1
  86. package/fesm2022/ng-atomic-common-pipes-query.mjs.map +1 -1
  87. package/fesm2022/ng-atomic-common-pipes-resolve-columns.mjs.map +1 -1
  88. package/fesm2022/ng-atomic-common-pipes-secret.mjs.map +1 -1
  89. package/fesm2022/ng-atomic-common-pipes-select-id.mjs.map +1 -1
  90. package/fesm2022/ng-atomic-common-pipes-signal.mjs.map +1 -1
  91. package/fesm2022/ng-atomic-common-pipes-smart-field.mjs +15 -4
  92. package/fesm2022/ng-atomic-common-pipes-smart-field.mjs.map +1 -1
  93. package/fesm2022/ng-atomic-common-pipes-sort-by.mjs.map +1 -1
  94. package/fesm2022/ng-atomic-common-pipes-sort.mjs.map +1 -1
  95. package/fesm2022/ng-atomic-common-pipes-style.mjs +48 -0
  96. package/fesm2022/ng-atomic-common-pipes-style.mjs.map +1 -0
  97. package/fesm2022/ng-atomic-common-pipes-yen.mjs.map +1 -1
  98. package/fesm2022/ng-atomic-common-services-app.mjs.map +1 -1
  99. package/fesm2022/ng-atomic-common-services-auth.mjs.map +1 -1
  100. package/fesm2022/ng-atomic-common-services-breakpoint.mjs.map +1 -1
  101. package/fesm2022/ng-atomic-common-services-chips-manager.mjs.map +1 -1
  102. package/fesm2022/ng-atomic-common-services-csv.mjs.map +1 -1
  103. package/fesm2022/ng-atomic-common-services-fab.mjs.map +1 -1
  104. package/fesm2022/ng-atomic-common-services-form-_index.mjs.map +1 -1
  105. package/fesm2022/ng-atomic-common-services-form-columns.mjs +27 -20
  106. package/fesm2022/ng-atomic-common-services-form-columns.mjs.map +1 -1
  107. package/fesm2022/ng-atomic-common-services-form-json-schema.mjs +76 -57
  108. package/fesm2022/ng-atomic-common-services-form-json-schema.mjs.map +1 -1
  109. package/fesm2022/ng-atomic-common-services-form-pagination.mjs +3 -3
  110. package/fesm2022/ng-atomic-common-services-form-pagination.mjs.map +1 -1
  111. package/fesm2022/ng-atomic-common-services-form-sort.mjs.map +1 -1
  112. package/fesm2022/ng-atomic-common-services-form.mjs.map +1 -1
  113. package/fesm2022/ng-atomic-common-services-initializer.mjs.map +1 -1
  114. package/fesm2022/ng-atomic-common-services-language.mjs +46 -0
  115. package/fesm2022/ng-atomic-common-services-language.mjs.map +1 -0
  116. package/fesm2022/ng-atomic-common-services-loading.mjs +1 -1
  117. package/fesm2022/ng-atomic-common-services-loading.mjs.map +1 -1
  118. package/fesm2022/ng-atomic-common-services-navigation-history.mjs.map +1 -1
  119. package/fesm2022/ng-atomic-common-services-query-resolver.mjs +3 -3
  120. package/fesm2022/ng-atomic-common-services-query-resolver.mjs.map +1 -1
  121. package/fesm2022/ng-atomic-common-services-root-property.mjs.map +1 -1
  122. package/fesm2022/ng-atomic-common-services-router.mjs.map +1 -1
  123. package/fesm2022/ng-atomic-common-services-secret.mjs.map +1 -1
  124. package/fesm2022/ng-atomic-common-services-sheets-actions.mjs.map +1 -1
  125. package/fesm2022/ng-atomic-common-services-sheets.mjs.map +1 -1
  126. package/fesm2022/ng-atomic-common-services-side-app.mjs.map +1 -1
  127. package/fesm2022/ng-atomic-common-services-side-nav-mode.mjs.map +1 -1
  128. package/fesm2022/ng-atomic-common-services-snack-bar.mjs +29 -11
  129. package/fesm2022/ng-atomic-common-services-snack-bar.mjs.map +1 -1
  130. package/fesm2022/ng-atomic-common-services-spreadsheet.mjs +758 -0
  131. package/fesm2022/ng-atomic-common-services-spreadsheet.mjs.map +1 -0
  132. package/fesm2022/ng-atomic-common-services-ui.mjs +14 -7
  133. package/fesm2022/ng-atomic-common-services-ui.mjs.map +1 -1
  134. package/fesm2022/ng-atomic-common-stores-entities.mjs.map +1 -1
  135. package/fesm2022/ng-atomic-common-stores-entity.mjs.map +1 -1
  136. package/fesm2022/ng-atomic-common-stores-pagination.mjs.map +1 -1
  137. package/fesm2022/ng-atomic-common-stores-query.mjs +1 -1
  138. package/fesm2022/ng-atomic-common-stores-query.mjs.map +1 -1
  139. package/fesm2022/ng-atomic-common-stores-selection.mjs.map +1 -1
  140. package/fesm2022/ng-atomic-common-stores-sort.mjs.map +1 -1
  141. package/fesm2022/ng-atomic-common-utils.mjs +34 -15
  142. package/fesm2022/ng-atomic-common-utils.mjs.map +1 -1
  143. package/fesm2022/ng-atomic-common.mjs.map +1 -1
  144. package/models/index.d.ts +2 -1
  145. package/package.json +73 -44
  146. package/pipes/actions/actions.pipe.d.ts +2 -1
  147. package/pipes/columns/columns.pipe.d.ts +1 -0
  148. package/pipes/data-accessor/data-accessor.pipe.d.ts +4 -2
  149. package/pipes/domain/domain.pipe.d.ts +7 -6
  150. package/pipes/expression/expression.pipe.d.ts +9 -0
  151. package/pipes/expression/index.d.ts +1 -0
  152. package/pipes/smart-field/smart-field.pipe.d.ts +2 -2
  153. package/pipes/style/index.d.ts +1 -0
  154. package/pipes/style/style.pipe.d.ts +18 -0
  155. package/services/form/_index/index.service.d.ts +4 -4
  156. package/services/form/columns/columns.service.d.ts +5 -2
  157. package/services/form/json-schema/json-schema.service.d.ts +9 -1
  158. package/services/form/pagination/pagination.service.d.ts +5 -5
  159. package/services/language/index.d.ts +1 -0
  160. package/services/language/language.service.d.ts +12 -0
  161. package/services/query-resolver/query-resolver.service.d.ts +2 -2
  162. package/services/snack-bar/snack-bar.service.d.ts +5 -3
  163. package/services/spreadsheet/directives/grid-cell.directive.d.ts +41 -0
  164. package/services/spreadsheet/directives/index.d.ts +1 -0
  165. package/services/spreadsheet/features/clipboard.service.d.ts +15 -0
  166. package/services/spreadsheet/features/data.service.d.ts +16 -0
  167. package/services/spreadsheet/features/editor.service.d.ts +22 -0
  168. package/services/spreadsheet/features/grid.service.d.ts +17 -0
  169. package/services/spreadsheet/features/index.d.ts +7 -0
  170. package/services/spreadsheet/features/navigation.service.d.ts +17 -0
  171. package/services/spreadsheet/features/protection.service.d.ts +24 -0
  172. package/services/spreadsheet/features/selection.service.d.ts +40 -0
  173. package/services/spreadsheet/index.d.ts +4 -0
  174. package/services/spreadsheet/models/cell.model.d.ts +17 -0
  175. package/services/spreadsheet/models/index.d.ts +1 -0
  176. package/services/spreadsheet/spreadsheet.service.d.ts +29 -0
  177. package/utils/expression/expression.transformer.d.ts +12 -0
  178. package/utils/expression/index.d.ts +1 -0
  179. package/utils/index.d.ts +1 -1
  180. package/utils/inject/inject.d.ts +2 -2
  181. package/esm2022/pipes/smart-exp/index.mjs +0 -3
  182. package/esm2022/pipes/smart-exp/ng-atomic-common-pipes-smart-exp.mjs +0 -5
  183. package/esm2022/pipes/smart-exp/smart-exp.module.mjs +0 -16
  184. package/esm2022/pipes/smart-exp/smart-exp.pipe.mjs +0 -27
  185. package/esm2022/utils/smart-exp-transformer/index.mjs +0 -2
  186. package/esm2022/utils/smart-exp-transformer/smart-exp-transformer.mjs +0 -18
  187. package/fesm2022/ng-atomic-common-pipes-smart-exp.mjs +0 -47
  188. package/fesm2022/ng-atomic-common-pipes-smart-exp.mjs.map +0 -1
  189. package/pipes/smart-exp/index.d.ts +0 -2
  190. package/pipes/smart-exp/smart-exp.module.d.ts +0 -7
  191. package/pipes/smart-exp/smart-exp.pipe.d.ts +0 -11
  192. package/utils/smart-exp-transformer/index.d.ts +0 -1
  193. package/utils/smart-exp-transformer/smart-exp-transformer.d.ts +0 -6
@@ -0,0 +1,183 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { GridService } from './features/grid.service';
3
+ import { NavigationService } from './features/navigation.service';
4
+ import { SelectionService } from './features/selection.service';
5
+ import { ClipboardService } from './features/clipboard.service';
6
+ import { EditorService } from './features/editor.service';
7
+ import { ProtectionService } from './features/protection.service';
8
+ import { SpreadSheetDataService } from './features/data.service';
9
+ import * as i0 from "@angular/core";
10
+ export class SpreadSheetService {
11
+ constructor() {
12
+ this.config = { paste: false };
13
+ this.grid = inject(GridService);
14
+ this.data = inject(SpreadSheetDataService);
15
+ this.navigation = inject(NavigationService);
16
+ this.selection = inject(SelectionService);
17
+ this.clipboard = inject(ClipboardService);
18
+ this.editor = inject(EditorService);
19
+ this.protection = inject(ProtectionService);
20
+ }
21
+ handleKeyDown(event) {
22
+ if (this.editor.editinngCell()) {
23
+ this.handleKeyDownOnEditing(event);
24
+ }
25
+ else {
26
+ this.handleKeyDownOnSelecting(event);
27
+ }
28
+ }
29
+ handleKeyDownOnEditing(event) {
30
+ const cell = this.editor.editinngCell();
31
+ if (event.key === 'Tab') {
32
+ event.preventDefault();
33
+ if (event.shiftKey) {
34
+ this.move(cell, 'left', 'select');
35
+ }
36
+ else {
37
+ this.move(cell, 'right', 'select');
38
+ }
39
+ }
40
+ else if (event.key === 'Enter') {
41
+ event.preventDefault();
42
+ if (event.shiftKey) {
43
+ this.move(cell, 'top', 'select');
44
+ }
45
+ else {
46
+ this.move(cell, 'bottom', 'select');
47
+ }
48
+ }
49
+ }
50
+ handleKeyDownOnSelecting(event) {
51
+ if (event.key === 'Tab') {
52
+ const selectedCell = this.selection.findSelectedCell();
53
+ event.preventDefault();
54
+ event.stopPropagation();
55
+ if (event.shiftKey) {
56
+ this.move(selectedCell, 'left', 'select');
57
+ }
58
+ else {
59
+ this.move(selectedCell, 'right', 'select');
60
+ }
61
+ return;
62
+ }
63
+ else if (event.key === 'Enter') {
64
+ const selectedCell = this.selection.findSelectedCell();
65
+ if (selectedCell) {
66
+ this.editor.startEditing(selectedCell);
67
+ event.preventDefault();
68
+ }
69
+ }
70
+ else if (event.ctrlKey || event.metaKey) {
71
+ if (event.key === 'c') {
72
+ this.clipboard.copy();
73
+ event.preventDefault();
74
+ }
75
+ else if (event.key === 'v') {
76
+ if (!this.config.paste)
77
+ return;
78
+ const target = this.selection.findSelectedCell();
79
+ if (target) {
80
+ this.clipboard.paste(target.row, target.col);
81
+ }
82
+ event.preventDefault();
83
+ }
84
+ return;
85
+ }
86
+ else if (event.key === 'Delete' || event.key === 'Backspace') {
87
+ const selection = this.selection.getSelection();
88
+ if (selection) {
89
+ this.selection.clearSelectedRange(selection);
90
+ event.preventDefault();
91
+ return;
92
+ }
93
+ }
94
+ else {
95
+ const selectedCell = this.selection.findSelectedCell();
96
+ let newPosition;
97
+ if (event.shiftKey) {
98
+ const selectionEnd = this.selection.getSelectionEndOrStart();
99
+ switch (event.key) {
100
+ case 'ArrowRight':
101
+ newPosition = this.navigation.moveRight(selectionEnd);
102
+ break;
103
+ case 'ArrowLeft':
104
+ newPosition = this.navigation.moveLeft(selectionEnd);
105
+ break;
106
+ case 'ArrowUp':
107
+ newPosition = this.navigation.moveUp(selectionEnd);
108
+ break;
109
+ case 'ArrowDown':
110
+ newPosition = this.navigation.moveDown(selectionEnd);
111
+ break;
112
+ default:
113
+ return;
114
+ }
115
+ if (newPosition) {
116
+ event.preventDefault();
117
+ this.selection.updateSelectionEnd(newPosition);
118
+ }
119
+ }
120
+ else {
121
+ switch (event.key) {
122
+ case 'ArrowRight':
123
+ newPosition = this.navigation.moveRight(selectedCell);
124
+ break;
125
+ case 'ArrowLeft':
126
+ newPosition = this.navigation.moveLeft(selectedCell);
127
+ break;
128
+ case 'ArrowUp':
129
+ newPosition = this.navigation.moveUp(selectedCell);
130
+ break;
131
+ case 'ArrowDown':
132
+ newPosition = this.navigation.moveDown(selectedCell);
133
+ break;
134
+ default:
135
+ return;
136
+ }
137
+ if (newPosition) {
138
+ event.preventDefault();
139
+ this.selection.clearSelection();
140
+ this.selection.handleClick(newPosition);
141
+ }
142
+ }
143
+ }
144
+ }
145
+ move(_position, dest, mode) {
146
+ this.editor.stopEditing();
147
+ let position;
148
+ if (dest === 'top') {
149
+ position = this.navigation.moveToPreviousRow(_position);
150
+ }
151
+ else if (dest === 'bottom') {
152
+ position = this.navigation.moveToNextRow(_position);
153
+ }
154
+ else if (dest === 'left') {
155
+ position = this.navigation.moveToPreviousCell(_position);
156
+ }
157
+ else if (dest === 'right') {
158
+ position = this.navigation.moveToNextCell(_position);
159
+ }
160
+ this.selection.setStartPosition(position);
161
+ if (mode === 'edit') {
162
+ this.editor.startEditing(position);
163
+ }
164
+ }
165
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpreadSheetService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
166
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpreadSheetService }); }
167
+ }
168
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImport: i0, type: SpreadSheetService, decorators: [{
169
+ type: Injectable
170
+ }] });
171
+ export function provideSpreadSheetService() {
172
+ return [
173
+ ClipboardService,
174
+ SpreadSheetDataService,
175
+ EditorService,
176
+ SpreadSheetService,
177
+ GridService,
178
+ NavigationService,
179
+ SelectionService,
180
+ ProtectionService
181
+ ];
182
+ }
183
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ByZWFkc2hlZXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvc3ByZWFkc2hlZXQvc3ByZWFkc2hlZXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDOztBQUdqRSxNQUFNLE9BQU8sa0JBQWtCO0lBRC9CO1FBRVcsV0FBTSxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQzFCLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0IsU0FBSSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3RDLGVBQVUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUN2QyxjQUFTLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDckMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3JDLFdBQU0sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDL0IsZUFBVSxH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QUN0QixhQUFhO1FBQ2Isa0JBQWtCO1FBQ2xCLFdBQVc7UUFDWCxpQkFBaUI7UUFDakIsZ0JBQWdCO1FBQ2hCLGlCQUFpQjtLQUNsQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBvc2l0aW9uIH0gZnJvbSAnLi9tb2RlbHMvY2VsbC5tb2RlbCc7XG5pbXBvcnQgeyBHcmlkU2VydmljZSB9IGZyb20gJy4vZmVhdHVyZXMvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCB7IE5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9mZWF0dXJlcy9uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2VsZWN0aW9uU2VydmljZSB9IGZyb20gJy4vZmVhdHVyZXMvc2VsZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2xpcGJvYXJkU2VydmljZSB9IGZyb20gJy4vZmVhdHVyZXMvY2xpcGJvYXJkLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWRpdG9yU2VydmljZSB9IGZyb20gJy4vZmVhdHVyZXMvZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgUHJvdGVjdGlvblNlcnZpY2UgfSBmcm9tICcuL2ZlYXR1cmVzL3Byb3RlY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTcHJlYWRTaGVldERhdGFTZXJ2aWNlIH0gZnJvbSAnLi9mZWF0dXJlcy9kYXRhLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU3ByZWFkU2hlZXRTZXJ2aWNlIHtcbiAgcmVhZG9ubHkgY29uZmlnID0geyBwYXN0ZTogZmFsc2UgfTtcbiAgcmVhZG9ubHkgZ3JpZCA9IGluamVjdChHcmlkU2VydmljZSk7XG4gIHJlYWRvbmx5IGRhdGEgPSBpbmplY3QoU3ByZWFkU2hlZXREYXRhU2VydmljZSk7XG4gIHJlYWRvbmx5IG5hdmlnYXRpb24gPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICByZWFkb25seSBzZWxlY3Rpb24gPSBpbmplY3QoU2VsZWN0aW9uU2VydmljZSk7XG4gIHJlYWRvbmx5IGNsaXBib2FyZCA9IGluamVjdChDbGlwYm9hcmRTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgZWRpdG9yID0gaW5qZWN0KEVkaXRvclNlcnZpY2UpO1xuICByZWFkb25seSBwcm90ZWN0aW9uID0gaW5qZWN0KFByb3RlY3Rpb25TZXJ2aWNlKTtcblxuICBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZWRpdG9yLmVkaXRpbm5nQ2VsbCgpKSB7XG4gICAgICB0aGlzLmhhbmRsZUtleURvd25PbkVkaXRpbmcoZXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhhbmRsZUtleURvd25PblNlbGVjdGluZyhldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUtleURvd25PbkVkaXRpbmcoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBjZWxsID0gdGhpcy5lZGl0b3IuZWRpdGlubmdDZWxsKCk7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ1RhYicpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBpZiAoZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgdGhpcy5tb3ZlKGNlbGwsICdsZWZ0JywgJ3NlbGVjdCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tb3ZlKGNlbGwsICdyaWdodCcsICdzZWxlY3QnKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgICB0aGlzLm1vdmUoY2VsbCwgJ3RvcCcsICdzZWxlY3QnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubW92ZShjZWxsLCAnYm90dG9tJywgJ3NlbGVjdCcpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVLZXlEb3duT25TZWxlY3RpbmcoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnVGFiJykge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRDZWxsID0gdGhpcy5zZWxlY3Rpb24uZmluZFNlbGVjdGVkQ2VsbCgpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIHRoaXMubW92ZShzZWxlY3RlZENlbGwsICdsZWZ0JywgJ3NlbGVjdCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5tb3ZlKHNlbGVjdGVkQ2VsbCwgJ3JpZ2h0JywgJ3NlbGVjdCcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZENlbGwgPSB0aGlzLnNlbGVjdGlvbi5maW5kU2VsZWN0ZWRDZWxsKCk7XG4gICAgICBpZiAoc2VsZWN0ZWRDZWxsKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yLnN0YXJ0RWRpdGluZyhzZWxlY3RlZENlbGwpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnYycpIHtcbiAgICAgICAgdGhpcy5jbGlwYm9hcmQuY29weSgpO1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICd2Jykge1xuICAgICAgICBpZiAoIXRoaXMuY29uZmlnLnBhc3RlKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IHRoaXMuc2VsZWN0aW9uLmZpbmRTZWxlY3RlZENlbGwoKTtcbiAgICAgICAgaWYgKHRhcmdldCkge1xuICAgICAgICAgIHRoaXMuY2xpcGJvYXJkLnBhc3RlKHRhcmdldC5yb3csIHRhcmdldC5jb2wpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmIChldmVudC5rZXkgPT09ICdEZWxldGUnIHx8IGV2ZW50LmtleSA9PT0gJ0JhY2tzcGFjZScpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uLmdldFNlbGVjdGlvbigpO1xuICAgICAgaWYgKHNlbGVjdGlvbikge1xuICAgICAgICB0aGlzLnNlbGVjdGlvbi5jbGVhclNlbGVjdGVkUmFuZ2Uoc2VsZWN0aW9uKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzZWxlY3RlZENlbGwgPSB0aGlzLnNlbGVjdGlvbi5maW5kU2VsZWN0ZWRDZWxsKCk7XG4gICAgICBsZXQgbmV3UG9zaXRpb246IFBvc2l0aW9uO1xuICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5KSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbkVuZCA9IHRoaXMuc2VsZWN0aW9uLmdldFNlbGVjdGlvbkVuZE9yU3RhcnQoKTtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgICAgIG5ld1Bvc2l0aW9uID0gdGhpcy5uYXZpZ2F0aW9uLm1vdmVSaWdodChzZWxlY3Rpb25FbmQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICAgIG5ld1Bvc2l0aW9uID0gdGhpcy5uYXZpZ2F0aW9uLm1vdmVMZWZ0KHNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICAgIG5ld1Bvc2l0aW9uID0gdGhpcy5uYXZpZ2F0aW9uLm1vdmVVcChzZWxlY3Rpb25FbmQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgIG5ld1Bvc2l0aW9uID0gdGhpcy5uYXZpZ2F0aW9uLm1vdmVEb3duKHNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdQb3NpdGlvbikge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb24udXBkYXRlU2VsZWN0aW9uRW5kKG5ld1Bvc2l0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgICAgIG5ld1Bvc2l0aW9uID0gdGhpcy5uYXZpZ2F0aW9uLm1vdmVSaWdodChzZWxlY3RlZENlbGwpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgICAgIG5ld1Bvc2l0aW9uID0gdGhpcy5uYXZpZ2F0aW9uLm1vdmVMZWZ0KHNlbGVjdGVkQ2VsbCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdBcnJvd1VwJzpcbiAgICAgICAgICAgIG5ld1Bvc2l0aW9uID0gdGhpcy5uYXZpZ2F0aW9uLm1vdmVVcChzZWxlY3RlZENlbGwpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnQXJyb3dEb3duJzpcbiAgICAgICAgICAgIG5ld1Bvc2l0aW9uID0gdGhpcy5uYXZpZ2F0aW9uLm1vdmVEb3duKHNlbGVjdGVkQ2VsbCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdQb3NpdGlvbikge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb24uY2xlYXJTZWxlY3Rpb24oKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5oYW5kbGVDbGljayhuZXdQb3NpdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgbW92ZShfcG9zaXRpb246IFBvc2l0aW9uLCBkZXN0OiAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JywgbW9kZTogJ2VkaXQnIHwgJ3NlbGVjdCcpIHtcbiAgICB0aGlzLmVkaXRvci5zdG9wRWRpdGluZygpO1xuICAgIGxldCBwb3NpdGlvbjogUG9zaXRpb247XG4gICAgaWYgKGRlc3QgPT09ICd0b3AnKSB7XG4gICAgICBwb3NpdGlvbiA9IHRoaXMubmF2aWdhdGlvbi5tb3ZlVG9QcmV2aW91c1JvdyhfcG9zaXRpb24pO1xuICAgIH0gZWxzZSBpZiAoZGVzdCA9PT0gJ2JvdHRvbScpIHtcbiAgICAgIHBvc2l0aW9uID0gdGhpcy5uYXZpZ2F0aW9uLm1vdmVUb05leHRSb3coX3Bvc2l0aW9uKTtcbiAgICB9IGVsc2UgaWYgKGRlc3QgPT09ICdsZWZ0Jykge1xuICAgICAgcG9zaXRpb24gPSB0aGlzLm5hdmlnYXRpb24ubW92ZVRvUHJldmlvdXNDZWxsKF9wb3NpdGlvbik7XG4gICAgfSBlbHNlIGlmIChkZXN0ID09PSAncmlnaHQnKSB7XG4gICAgICBwb3NpdGlvbiA9IHRoaXMubmF2aWdhdGlvbi5tb3ZlVG9OZXh0Q2VsbChfcG9zaXRpb24pO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0aW9uLnNldFN0YXJ0UG9zaXRpb24ocG9zaXRpb24pO1xuXG4gICAgaWYgKG1vZGUgPT09ICdlZGl0Jykge1xuICAgICAgdGhpcy5lZGl0b3Iuc3RhcnRFZGl0aW5nKHBvc2l0aW9uKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVTcHJlYWRTaGVldFNlcnZpY2UoKTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBbXG4gICAgQ2xpcGJvYXJkU2VydmljZSxcbiAgICBTcHJlYWRTaGVldERhdGFTZXJ2aWNlLFxuICAgIEVkaXRvclNlcnZpY2UsXG4gICAgU3ByZWFkU2hlZXRTZXJ2aWNlLFxuICAgIEdyaWRTZXJ2aWNlLFxuICAgIE5hdmlnYXRpb25TZXJ2aWNlLFxuICAgIFNlbGVjdGlvblNlcnZpY2UsXG4gICAgUHJvdGVjdGlvblNlcnZpY2VcbiAgXTtcbn1cbiJdfQ==
@@ -57,18 +57,25 @@ export function injectIsRootPage(outlet = PRIMARY_OUTLET) {
57
57
  export function injectNavStartActions(isRootPage = signal(false)) {
58
58
  const context = injectUiContext();
59
59
  const navigationHistory = inject(NavigationHistoryService);
60
- let isInitial;
60
+ let isInitial = false;
61
61
  return computed(() => {
62
- switch (context().breakpoint) {
62
+ console.debug('[UiService] navigationHistory:', navigationHistory);
63
+ const isRootPage_ = isRootPage();
64
+ // MEMO(@NozomuMIyamoto): history.forward()したときに、isInitialがtrueのままになって、戻るボタンが表示されない問題があるためコメントアウト
65
+ // isInitial ??= navigationHistory.isInitial();
66
+ console.debug('[UiService] isInitial:', isInitial);
67
+ console.debug('[UiService] isRootPage:', isRootPage());
68
+ const context_ = context();
69
+ switch (context_.breakpoint) {
63
70
  case 'xLarge':
64
71
  case 'large':
65
72
  case 'medium':
66
73
  case 'small': {
67
- if (isRootPage()) {
74
+ if (isRootPage_) {
68
75
  return [];
69
76
  }
70
77
  else {
71
- if (isInitial ??= navigationHistory.isInitial()) {
78
+ if (isInitial) {
72
79
  return [];
73
80
  }
74
81
  else {
@@ -77,11 +84,11 @@ export function injectNavStartActions(isRootPage = signal(false)) {
77
84
  }
78
85
  }
79
86
  case 'xSmall': {
80
- if (isRootPage()) {
87
+ if (isRootPage_) {
81
88
  return [{ id: NavActionId.TOGGLE_SIDE_NAV, name: 'メニュー', icon: 'menu' }];
82
89
  }
83
90
  else {
84
- if (navigationHistory.isInitial()) {
91
+ if (isInitial) {
85
92
  return [{ id: NavActionId.TOGGLE_SIDE_NAV, name: 'メニュー', icon: 'menu' }];
86
93
  }
87
94
  else {
@@ -90,7 +97,7 @@ export function injectNavStartActions(isRootPage = signal(false)) {
90
97
  }
91
98
  }
92
99
  default: {
93
- if (isRootPage())
100
+ if (isRootPage_)
94
101
  return [];
95
102
  return [{ id: NavActionId.BACK, name: 'BACK', icon: 'arrow_back' }];
96
103
  }
@@ -231,4 +238,4 @@ export function debugInjector(injector = inject(Injector)) {
231
238
  break;
232
239
  }
233
240
  }
234
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvdWkvdWkuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQW1DLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekssT0FBTyxFQUFhLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyQyxPQUFPLEVBQUUsY0FBYyxFQUFpQixjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEYsT0FBTyxFQUFVLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQVksTUFBTSw0QkFBNEIsQ0FBQztBQUUxRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEQsTUFBTSxVQUFVLE1BQU0sQ0FBeUMsTUFBaUIsRUFBRSxJQUFtQjtJQUNuRyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQVUsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUQsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUNWLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBWSxDQUFDLENBQUM7SUFDN0QsQ0FBQyxFQUFF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RUFBRSxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVwRixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDNUIsUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEMsSUFBSSxRQUFRLEtBQUssUUFBUSxDQUFDLElBQUk7WUFBRSxNQUFNO0lBQ3hDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBQcm92aWRlciwgUHJvdmlkZXJUb2tlbiwgU2lnbmFsLCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlzU2lnbmFsLCBydW5JbkluamVjdGlvbkNvbnRleHQsIHNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBVSUNvbnRleHQsIFVpU2VydmljZSB9IGZyb20gXCIuL3VpLnNlcnZpY2VcIjtcbmltcG9ydCB7IGdldCwgc2V0IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSBcIkBuZy1hdG9taWMvY29yZVwiO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFBSSU1BUllfT1VUTEVULCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgdGFrZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XG5pbXBvcnQgeyBjb21wdXRlZEFzeW5jIH0gZnJvbSBcIm5neHRlbnNpb24vY29tcHV0ZWQtYXN5bmNcIjtcbmltcG9ydCB7IE5hdmlnYXRpb25IaXN0b3J5U2VydmljZSB9IGZyb20gXCJAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLWhpc3RvcnlcIjtcbmltcG9ydCB7IGRlcml2ZWRBc3luYyB9IGZyb20gXCJuZ3h0ZW5zaW9uL2Rlcml2ZWQtYXN5bmNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNjb3BlZDxUIGV4dGVuZHMgb2JqZWN0LCBUS2V5IGV4dGVuZHMga2V5b2YgVD4oc291cmNlOiBTaWduYWw8VD4sIHBhdGg6IFRLZXkgfCBbVEtleV0pOiBTaWduYWw8VFtUS2V5XT4ge1xuICBjb25zdCBzY29wZWRTaWduYWwgPSBzaWduYWw8VFtUS2V5XT4oZ2V0KHNvdXJjZSgpLCBwYXRoKSk7XG4gIGVmZmVjdCgoKSA9PiB7XG4gICAgc2NvcGVkU2lnbmFsLnNldChnZXQoc291cmNlKCksIHBhdGgsIHNvdXJjZSgpKSBhcyBUW1RLZXldKTtcbiAgfSwge2FsbG93U2lnbmFsV3JpdGVzOiB0cnVlfSk7XG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiBzY29wZWRTaWduYWwoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RCcmVha3BvaW50KCkge1xuICByZXR1cm4gaW5qZWN0KFVpU2VydmljZSkuYnJlYWtwb2ludC5icmVha3BvaW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SXNNb2JpbGUoKSB7XG4gIGNvbnN0IGJyZWFrcG9pbnQgPSBpbmplY3RCcmVha3BvaW50KCk7XG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiAgWyd4U21hbGwnLCAnc21hbGwnXS5pbmNsdWRlcyhicmVha3BvaW50KCkpKTtcbn1cblxuZXhwb3J0IGVudW0gTmF2QWN0aW9uSWQge1xuICBUT0dHTEVfU0lERV9OQVYgPSAnW0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3VpXSBUT0dHTEVfU0lERV9OQVYnLFxuICBCQUNLID0gJ1tAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy91aV0gQkFDSycsXG4gIENMT1NFID0gJ1tAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy91aV0gQ0xPU0UnLFxufVxuXG4vLyByb3V0ZeOCkumBoeOCi1xuZnVuY3Rpb24gZmxhdHRlblJvdXRlcyhyb3V0ZTogQWN0aXZhdGVkUm91dGUpOiBBY3RpdmF0ZWRSb3V0ZVtdIHtcbiAgY29uc3Qgcm91dGVzID0gW107XG4gIGxldCByb3V0ZV8gPSByb3V0ZTsgXG4gIHdoaWxlKHJvdXRlXykge1xuICAgIHJvdXRlcy5wdXNoKHJvdXRlXyk7XG4gICAgaWYgKCFyb3V0ZV8ucGFyZW50KSBicmVhaztcbiAgICByb3V0ZV8gPSByb3V0ZV8ucGFyZW50O1xuICB9XG4gIHJldHVybiByb3V0ZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RJc1Jvb3RQYWdlJChvdXRsZXQgPSBQUklNQVJZX09VVExFVCkge1xuICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgY29uc3Qgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICByZXR1cm4gcm91dGVyLmV2ZW50cy5waXBlKFxuICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICBtYXAoKCkgPT4ge1xuICAgICAgY29uc3Qgcm91dGVzID0gZmxhdHRlblJvdXRlcyhyb3V0ZSkucmV2ZXJzZSgpO1xuICAgICAgY29uc3Qgb3V0bGV0Q29tcG9uZW50Um91dGVzID0gcm91dGVzXG4gICAgICAgIC5zbGljZShyb3V0ZXMuZmluZEluZGV4KHJvdXRlID0+IHJvdXRlLm91dGxldCA9PT0gb3V0bGV0KSlcbiAgICAgICAgLmZpbHRlcihyb3V0ZSA9PiByb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ3NraXAnKSAhPT0gJ3RydWUnICYmICEhcm91dGU/LmNvbXBvbmVudCk7XG4gICAgICByZXR1cm4gb3V0bGV0Q29tcG9uZW50Um91dGVzLmxlbmd0aCA8PSAyO1xuICAgIH0pLFxuICAgIHRha2UoMSksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RJc1Jvb3RQYWdlKG91dGxldCA9IFBSSU1BUllfT1VUTEVUKSB7XG4gIGNvbnN0IGlzUm9vdFBhZ2UkID0gaW5qZWN0SXNSb290UGFnZSQob3V0bGV0KTtcbiAgY29uc3QgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICByZXR1cm4gZGVyaXZlZEFzeW5jKCgpID0+IGlzUm9vdFBhZ2UkLCB7aW5qZWN0b3J9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5hdlN0YXJ0QWN0aW9ucyhcbiAgaXNSb290UGFnZTogU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKSxcbik6IFNpZ25hbDxBY3Rpb25bXT4ge1xuICBjb25zdCBjb250ZXh0ID0gaW5qZWN0VWlDb250ZXh0KCk7XG4gIGNvbnN0IG5hdmlnYXRpb25IaXN0b3J5ID0gaW5qZWN0KE5hdmlnYXRpb25IaXN0b3J5U2VydmljZSk7XG4gIGxldCBpc0luaXRpYWw6IGJvb2xlYW47XG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoKGNvbnRleHQoKS5icmVha3BvaW50KSB7XG4gICAgICBjYXNlICd4TGFyZ2UnOlxuICAgICAgY2FzZSAnbGFyZ2UnOlxuICAgICAgY2FzZSAnbWVkaXVtJzpcbiAgICAgIGNhc2UgJ3NtYWxsJzoge1xuICAgICAgICBpZiAoaXNSb290UGFnZSgpKSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpc0luaXRpYWwgPz89IG5hdmlnYXRpb25IaXN0b3J5LmlzSW5pdGlhbCgpKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuQkFDSywgbmFtZTogJ0JBQ0snLCBpY29uOiAnYXJyb3dfYmFjaycgfV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjYXNlICd4U21hbGwnOiB7XG4gICAgICAgIGlmIChpc1Jvb3RQYWdlKCkpIHtcbiAgICAgICAgICByZXR1cm4gW3sgaWQ6IE5hdkFjdGlvbklkLlRPR0dMRV9TSURFX05BViwgbmFtZTogJ+ODoeODi+ODpeODvCcsIGljb246ICdtZW51JyB9XTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAobmF2aWdhdGlvbkhpc3RvcnkuaXNJbml0aWFsKCkpIHtcbiAgICAgICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuVE9HR0xFX1NJREVfTkFWLCBuYW1lOiAn44Oh44OL44Ol44O8JywgaWNvbjogJ21lbnUnIH1dXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuQkFDSywgbmFtZTogJ0JBQ0snLCBpY29uOiAnYXJyb3dfYmFjaycgfV07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGlmIChpc1Jvb3RQYWdlKCkpIHJldHVybiBbXTtcbiAgICAgICAgcmV0dXJuIFt7IGlkOiBOYXZBY3Rpb25JZC5CQUNLLCBuYW1lOiAnQkFDSycsIGljb246ICdhcnJvd19iYWNrJyB9XTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0TmF2U3RhcnRBY3Rpb25zVjIoKSB7XG4gIGNvbnN0IGlzUm9vdFBhZ2UgPSBpbmplY3RJc1Jvb3RQYWdlKCk7XG4gIHJldHVybiBpbmplY3ROYXZTdGFydEFjdGlvbnMoaXNSb290UGFnZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RTaWRlQXBwTmF2U3RhcnRBY3Rpb25zKFxuICBpc1Jvb3RQYWdlOiBTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpLFxuKTogU2lnbmFsPEFjdGlvbltdPiB7XG4gIGNvbnN0IGNvbnRleHQgPSBpbmplY3RVaUNvbnRleHQoKTtcbiAgcmV0dXJuIGNvbXB1dGVkKCgpID0+IHtcbiAgICBzd2l0Y2goY29udGV4dCgpLmJyZWFrcG9pbnQpIHtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgaWYgKGlzUm9vdFBhZ2UoKSkgcmV0dXJuIFtcbiAgICAgICAgICB7IGlkOiBOYXZBY3Rpb25JZC5DTE9TRSwgbmFtZTogJ0NMT1NFJywgaWNvbjogJ2Nsb3NlJyB9LFxuICAgICAgICBdO1xuICAgICAgICByZXR1cm4gW3sgaWQ6IE5hdkFjdGlvbklkLkJBQ0ssIG5hbWU6ICdCQUNLJywgaWNvbjogJ2Fycm93X2JhY2snIH1dO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VWlDb250ZXh0KCk6IFNpZ25hbDxVSUNvbnRleHQ+IHtcbiAgcmV0dXJuIGluamVjdChVaVNlcnZpY2UpLnVpQ29udGV4dDtcbn1cblxuZXhwb3J0IHR5cGUgVWlDb25maWdSZWR1Y2VyPFQgZXh0ZW5kcyBvYmplY3QgfCBzdHJpbmcsIEMgZXh0ZW5kcyBVSUNvbnRleHQgPSBhbnk+ID0gKGNvbmZpZzogVCwgY29udGV4dDogQykgPT4gVDtcbmV4cG9ydCBjb25zdCBVSV9DT05GSUdfUkVEVUNFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxVaUNvbmZpZ1JlZHVjZXI8YW55Pj4oJ1VJX0NPTkZJR19SRURVQ0VSJyk7XG5leHBvcnQgdHlwZSBSZWR1Y2VyRmFjdG9yeTxUIGV4dGVuZHMgb2JqZWN0IHwgc3RyaW5nPiBcbiAgPSAoaW5qZWN0b3I6IEluamVjdG9yLCBob3N0SW5qZWN0b3I6IEluamVjdG9yKSA9PiAoY29uZmlnOiBULCBjb250ZXh0OiBVSUNvbnRleHQpID0+IFQ7XG5cbmV4cG9ydCB0eXBlIERlZmF1bHRSZWR1Y2VyRmFjdG9yeTxUIGV4dGVuZHMgb2JqZWN0IHwgc3RyaW5nPlxuICA9IChpbmplY3RvcjogSW5qZWN0b3IsIGhvc3RJbmplY3RvcjogSW5qZWN0b3IpID0+IChjb250ZXh0OiBVSUNvbnRleHQpID0+IFQ7XG5cbmV4cG9ydCBjb25zdCB3cmFwID0gPFQgZXh0ZW5kcyBvYmplY3QgfCBzdHJpbmc+KFxuICBkZWZhdWx0UmVkdWNlckZhY3Rvcnk6IERlZmF1bHRSZWR1Y2VyRmFjdG9yeTxUPixcbik6IFJlZHVjZXJGYWN0b3J5PFQ+ID0+IHtcbiAgcmV0dXJuIChpbmplY3RvcjogSW5qZWN0b3IsIGhvc3RJbmplY3RvcjogSW5qZWN0b3IpID0+IHtcbiAgICBjb25zdCByZWR1Y2VyID0gZGVmYXVsdFJlZHVjZXJGYWN0b3J5KGluamVjdG9yLCBob3N0SW5qZWN0b3IpO1xuICAgIHJldHVybiAoXzogVCwgY29udGV4dDogVUlDb250ZXh0KSA9PiB7XG4gICAgICByZXR1cm4gcmVkdWNlcihjb250ZXh0KTtcbiAgICB9XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYWxsPFQ+KHNpZ25hbE9yVmFsdWU6IFNpZ25hbDxUPiB8IFQpOiBUIHtcbiAgcmV0dXJuIGlzU2lnbmFsKHNpZ25hbE9yVmFsdWUpID8gc2lnbmFsT3JWYWx1ZSgpIDogc2lnbmFsT3JWYWx1ZTtcbn1cblxuZnVuY3Rpb24gc2V0UmVkdWNlclBhdGgocmVkdWNlcjogRnVuY3Rpb24sIHBhdGg6IHN0cmluZ1tdKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZWR1Y2VyLCAncGF0aCcsIHsgdmFsdWU6IHBhdGgsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgcmV0dXJuIHJlZHVjZXI7XG59XG5cbmZ1bmN0aW9uIGdldFJlZHVjZXJQYXRoKHJlZHVjZXI6IEZ1bmN0aW9uKSB7XG4gIHJldHVybiByZWR1Y2VyWydwYXRoJ107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVWlDb25maWc8VCBleHRlbmRzIG9iamVjdCB8IHN0cmluZz4oXG4gIHJlZHVjZXJGYWN0b3J5OiBSZWR1Y2VyRmFjdG9yeTxUPixcbiAgcGF0aDogc3RyaW5nW10gPSBbXSxcbiAgbmFtZSA9ICduYW1lJyxcbiAgdG9rZW4gPSBVSV9DT05GSUdfUkVEVUNFUixcbik6IFByb3ZpZGVyIHtcbiAgcmV0dXJuIHtcbiAgICBwcm92aWRlOiB0b2tlbixcbiAgICB1c2VGYWN0b3J5OiAoaW5qZWN0b3I6IEluamVjdG9yKSA9PiB7XG4gICAgICBmdW5jdGlvbiBfcmVkdWNlckZhY3RvcnkoaG9zdEluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICBjb25zdCByZWR1Y2VyID0gcmVkdWNlckZhY3RvcnkoaW5qZWN0b3IsIGhvc3RJbmplY3Rvcik7IFxuICAgICAgICByZXR1cm4gKGNvbmZpZzogVCwgY29udGV4dDogYW55KTogVCA9PiB7XG4gICAgICAgICAgaWYgKHBhdGgubGVuZ3RoID09PSAwKSByZXR1cm4gcmVkdWNlcihjb25maWcsIGNvbnRleHQpO1xuICAgICAgICAgIHJldHVybiBzZXQoY29uZmlnIGFzIG9iamVjdCwgcGF0aCwgcmVkdWNlcihnZXQ8YW55LCBhbnk+KGNvbmZpZywgcGF0aCksIGNvbnRleHQpKSBhcyBUO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoX3JlZHVjZXJGYWN0b3J5LCAnbmFtZScsIHsgdmFsdWU6IG5hbWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9KTtcbiAgICAgIHNldFJlZHVjZXJQYXRoKF9yZWR1Y2VyRmFjdG9yeSwgcGF0aCk7XG4gICAgICByZXR1cm4gX3JlZHVjZXJGYWN0b3J5O1xuICAgIH0sXG4gICAgZGVwczogW0luamVjdG9yXSxcbiAgICBtdWx0aTogdHJ1ZSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvb3RDb25maWc8VCBleHRlbmRzIG9iamVjdD4oXG4gIHBhdGhzOiBzdHJpbmdbXSA9IFtdLFxuICB0b2tlbiA9IFVJX0NPTkZJR19SRURVQ0VSLFxuKTogU2lnbmFsPFQ+IHtcbiAgY29uc3QgdWlDb250ZXh0ID0gaW5qZWN0VWlDb250ZXh0KCk7XG4gIGNvbnN0IGZhY3RvcmllcyA9IGluamVjdFJlZHVjZXJGYWN0b3JpZXMocGF0aHMsIHRva2VuKTtcbiAgY29uc3QgaG9zdEluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcbiAgY29uc3QgcmVkdWNlcnMgPSBmYWN0b3JpZXMubWFwKGZhY3RvcnkgPT4ge1xuICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQoaG9zdEluamVjdG9yLCAoKSA9PiBmYWN0b3J5KGhvc3RJbmplY3RvcikpO1xuICB9KTtcbiAgaWYgKCFyZWR1Y2VycykgcmV0dXJuIHVuZGVmaW5lZDtcbiAgY29uc3Qgcm9vdENvbmZpZyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBjb250ZXh0ID0gdWlDb250ZXh0KCk7XG4gICAgcmV0dXJuIHJlZHVjZXJzLnJlZHVjZSgoYWNjLCByZWR1Y2VyKSA9PiB7XG4gICAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KGhvc3RJbmplY3RvciwgKCkgPT4gcmVkdWNlcihhY2MsIGNvbnRleHQpKTtcbiAgICB9LCB7fSBhcyBUKTtcbiAgfSk7XG4gIHJldHVybiByb290Q29uZmlnO1xufVxuXG4vLyBUT0RPKEBub250YW5nZW50KTogaXRlbXPjgarjganjga7lj5blvpfjgYzlhajjgabjga7jgrPjg7Pjg53jg7zjg43jg7Pjg4jjgafooYzjgo/jgozjgovjga7jgafoqIjnrpfjgpLmnIDpganljJbjgZnjgovjgIJcbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RVaUNvbmZpZzxUIGV4dGVuZHMgb2JqZWN0PihcbiAgcGF0aHM6IHN0cmluZ1tdID0gW10sXG4gIHRva2VuOiBJbmplY3Rpb25Ub2tlbjxVaUNvbmZpZ1JlZHVjZXI8YW55Pj4gPSBVSV9DT05GSUdfUkVEVUNFUixcbik6IFNpZ25hbDxUPiB7XG4gIGNvbnN0IHJvb3RDb25maWcgPSBpbmplY3RSb290Q29uZmlnPFQ+KHBhdGhzLCB0b2tlbik7XG4gIHJldHVybiBzY29wZWQocm9vdENvbmZpZywgcGF0aHMgYXMgYW55KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ha2VDb25maWc8VCBleHRlbmRzIG9iamVjdD4oZGVmYXVsdFVzZUZhY3Rvcnk6IERlZmF1bHRSZWR1Y2VyRmFjdG9yeTxUPiwgcGF0aDogc3RyaW5nW10pIHtcbiAgY29uc3QgZmFjdG9yeSA9IHdyYXAoZGVmYXVsdFVzZUZhY3RvcnkpO1xuICBjb25zdCB0b2tlbiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxVaUNvbmZpZ1JlZHVjZXI8VD4+KGBbJHtwYXRoLmpvaW4oJy4nKX1dIFVJX0NPTkZJR19SRURVQ0VSYCk7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZSh1c2VGYWN0b3J5PzogUmVkdWNlckZhY3Rvcnk8VD4sIGxhYmVsID0gdXNlRmFjdG9yeSA/ICdjdXN0b20nIDogJ2RlZmF1bHQnKSB7XG4gICAgICB1c2VGYWN0b3J5ID8/PSBmYWN0b3J5O1xuICAgICAgcmV0dXJuIHByb3ZpZGVVaUNvbmZpZzxUPih1c2VGYWN0b3J5LCBwYXRoLCBgWyR7cGF0aC5qb2luKCcuJyl9XSAke2xhYmVsfWAsIHRva2VuKTtcbiAgICB9LFxuICAgIGluamVjdCgpIHtcbiAgICAgIHJldHVybiBpbmplY3RVaUNvbmZpZzxUPihwYXRoLCB0b2tlbik7XG4gICAgfSxcbiAgfVxufVxuXG5mdW5jdGlvbiBpbmplY3RSZWR1Y2Vycyh0b2tlbik6ICgoaG9zdEluamVjdG9yOiBJbmplY3RvcikgPT4gVWlDb25maWdSZWR1Y2VyPGFueT4pW10ge1xuICByZXR1cm4gaW5qZWN0RGVlcE11bHRpPChob3N0SW5qZWN0b3I6IEluamVjdG9yKSA9PiBVaUNvbmZpZ1JlZHVjZXI8YW55Pj4odG9rZW4pO1xufVxuXG5mdW5jdGlvbiBpbmplY3RSZWR1Y2VyRmFjdG9yaWVzKFxuICBwYXRoOiBzdHJpbmdbXSA9IFtdLFxuICB0b2tlbiA9IFVJX0NPTkZJR19SRURVQ0VSLFxuKTogKChob3N0SW5qZWN0b3I6IEluamVjdG9yKSA9PiBVaUNvbmZpZ1JlZHVjZXI8YW55PilbXSB7XG4gIHJldHVybiBpbmplY3RSZWR1Y2Vycyh0b2tlbikuZmlsdGVyKGZhY3RvcnkgPT4ge1xuICAgIHJldHVybiBnZXRSZWR1Y2VyUGF0aChmYWN0b3J5KS5ldmVyeSgocCwgaSkgPT4gcGF0aFtpXSA9PT0gcCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0RGVlcE11bHRpPFQ+KHRva2VuOiBQcm92aWRlclRva2VuPFQ+LCBpbmplY3RvcjogSW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpKTogVFtdIHtcbiAgY29uc3QgdmFsdWVPckFycmF5ID0gaW5qZWN0b3IuZ2V0KHRva2VuIGFzIFByb3ZpZGVyVG9rZW48VFtdPiwgW10sIHtvcHRpb25hbDogdHJ1ZX0pO1xuICBjb25zdCBpdGVtcyA9IEFycmF5LmlzQXJyYXkodmFsdWVPckFycmF5KSA/IHZhbHVlT3JBcnJheSA6IFt2YWx1ZU9yQXJyYXldO1xuICBjb25zdCBwYXJlbnRJbmplY3RvciA9IGluamVjdG9yLmdldChJbmplY3RvciwgbnVsbCwge3NraXBTZWxmOiB0cnVlfSk7XG4gIGlmICghcGFyZW50SW5qZWN0b3IpIHJldHVybiBpdGVtcztcbiAgcmV0dXJuIFsuLi5uZXcgU2V0KFsuLi5pbmplY3REZWVwTXVsdGkodG9rZW4sIHBhcmVudEluamVjdG9yKSwgLi4uaXRlbXNdKV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWJ1Z0luamVjdG9yKGluamVjdG9yOiBJbmplY3RvciB8IG51bGwgPSBpbmplY3QoSW5qZWN0b3IpKSB7XG4gICAgICBjb25zdCBnZXRQYXJlbnQgPSAoaW5qZWN0b3I6IEluamVjdG9yLCBuID0gMCk6IEluamVjdG9yIHwgbnVsbCA9PiB7XG4gICAgICB3aGlsZSAoaW5qZWN0b3IgJiYgbi0tID4gMCkge1xuICAgICAgICBpbmplY3RvciA9IGluamVjdG9yLmdldChJbmplY3RvciwgbnVsbCwgeyBza2lwU2VsZjogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbmplY3RvcjtcbiAgICB9XG5cbiAgICBjb25zdCBnZXRJbmplY3Rvck5hbWUgPSAoaW5qZWN0b3I6IEluamVjdG9yKTogc3RyaW5nID0+IHtcbiAgICAgIGNvbnN0IG5hbWUgPSBpbmplY3Rvci5nZXQoRWxlbWVudFJlZiwgbnVsbCk/Lm5hdGl2ZUVsZW1lbnQ/LnRhZ05hbWU/LnRvTG93ZXJDYXNlKCk7XG4gICAgICBpZiAobmFtZSkgcmV0dXJuIGA8JHtuYW1lfT5gO1xuICAgICAgcmV0dXJuIGAke2luamVjdG9yWydzb3VyY2UnXX1gO1xuICAgIH1cblxuICAgIGNvbnN0IGlzTm9kZUluamVjdG9yID0gKGluamVjdG9yOiBJbmplY3Rvcik6IGJvb2xlYW4gPT4ge1xuICAgICAgcmV0dXJuIGluamVjdG9yLmdldChFbGVtZW50UmVmLCBudWxsKSAhPT0gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBtYXBUb05hbWVzID0gKHJlZHVjZXJzOiBhbnkpID0+IChyZWR1Y2VycyA/PyBbXSkubWFwKHJlZHVjZXIgPT4gcmVkdWNlci5uYW1lKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjA7IGkrKykge1xuICAgICAgaW5qZWN0b3IgPSBnZXRQYXJlbnQoaW5qZWN0b3IsIGkpO1xuICAgICAgaWYgKGluamVjdG9yID09PSBJbmplY3Rvci5OVUxMKSBicmVhaztcbiAgICB9XG59XG4iXX0=
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWkuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvc2VydmljZXMvdWkvdWkuaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRLEVBQW1DLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekssT0FBTyxFQUFhLFNBQVMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUNwRCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUVyQyxPQUFPLEVBQUUsY0FBYyxFQUFpQixjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDeEYsT0FBTyxFQUFVLEdBQUcsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQVksTUFBTSw0QkFBNEIsQ0FBQztBQUUxRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFeEQsTUFBTSxVQUFVLE1BQU0sQ0FBeUMsTUFBaUIsRUFBRSxJQUFtQjtJQUNuRyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQVUsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUQsTUFBTSxDQUFDLEdBQUcsRUFBRTtRQUNWLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBWSxDQUFDLENBQUM7SUFDN0QsQ0FBQyxFQUFF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QUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFDakMsQ0FBQyxDQUFBO0lBRUQsTUFBTSxjQUFjLEdBQUcsQ0FBQyxRQUFrQixFQUFXLEVBQUU7UUFDckQsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUM7SUFDakQsQ0FBQyxDQUFBO0lBRUQsTUFBTSxVQUFVLEdBQUcsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVwRixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDNUIsUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDbEMsSUFBSSxRQUFRLEtBQUssUUFBUSxDQUFDLElBQUk7WUFBRSxNQUFNO0lBQ3hDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0aW9uVG9rZW4sIEluamVjdG9yLCBQcm92aWRlciwgUHJvdmlkZXJUb2tlbiwgU2lnbmFsLCBjb21wdXRlZCwgZWZmZWN0LCBpbmplY3QsIGlzU2lnbmFsLCBydW5JbkluamVjdGlvbkNvbnRleHQsIHNpZ25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBVSUNvbnRleHQsIFVpU2VydmljZSB9IGZyb20gXCIuL3VpLnNlcnZpY2VcIjtcbmltcG9ydCB7IGdldCwgc2V0IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSBcIkBuZy1hdG9taWMvY29yZVwiO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIE5hdmlnYXRpb25FbmQsIFBSSU1BUllfT1VUTEVULCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgdGFrZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvU2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XG5pbXBvcnQgeyBjb21wdXRlZEFzeW5jIH0gZnJvbSBcIm5neHRlbnNpb24vY29tcHV0ZWQtYXN5bmNcIjtcbmltcG9ydCB7IE5hdmlnYXRpb25IaXN0b3J5U2VydmljZSB9IGZyb20gXCJAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9uYXZpZ2F0aW9uLWhpc3RvcnlcIjtcbmltcG9ydCB7IGRlcml2ZWRBc3luYyB9IGZyb20gXCJuZ3h0ZW5zaW9uL2Rlcml2ZWQtYXN5bmNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHNjb3BlZDxUIGV4dGVuZHMgb2JqZWN0LCBUS2V5IGV4dGVuZHMga2V5b2YgVD4oc291cmNlOiBTaWduYWw8VD4sIHBhdGg6IFRLZXkgfCBbVEtleV0pOiBTaWduYWw8VFtUS2V5XT4ge1xuICBjb25zdCBzY29wZWRTaWduYWwgPSBzaWduYWw8VFtUS2V5XT4oZ2V0KHNvdXJjZSgpLCBwYXRoKSk7XG4gIGVmZmVjdCgoKSA9PiB7XG4gICAgc2NvcGVkU2lnbmFsLnNldChnZXQoc291cmNlKCksIHBhdGgsIHNvdXJjZSgpKSBhcyBUW1RLZXldKTtcbiAgfSwge2FsbG93U2lnbmFsV3JpdGVzOiB0cnVlfSk7XG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiBzY29wZWRTaWduYWwoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RCcmVha3BvaW50KCkge1xuICByZXR1cm4gaW5qZWN0KFVpU2VydmljZSkuYnJlYWtwb2ludC5icmVha3BvaW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SXNNb2JpbGUoKSB7XG4gIGNvbnN0IGJyZWFrcG9pbnQgPSBpbmplY3RCcmVha3BvaW50KCk7XG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiAgWyd4U21hbGwnLCAnc21hbGwnXS5pbmNsdWRlcyhicmVha3BvaW50KCkpKTtcbn1cblxuZXhwb3J0IGVudW0gTmF2QWN0aW9uSWQge1xuICBUT0dHTEVfU0lERV9OQVYgPSAnW0BuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL3VpXSBUT0dHTEVfU0lERV9OQVYnLFxuICBCQUNLID0gJ1tAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy91aV0gQkFDSycsXG4gIENMT1NFID0gJ1tAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy91aV0gQ0xPU0UnLFxufVxuXG4vLyByb3V0ZeOCkumBoeOCi1xuZnVuY3Rpb24gZmxhdHRlblJvdXRlcyhyb3V0ZTogQWN0aXZhdGVkUm91dGUpOiBBY3RpdmF0ZWRSb3V0ZVtdIHtcbiAgY29uc3Qgcm91dGVzID0gW107XG4gIGxldCByb3V0ZV8gPSByb3V0ZTsgXG4gIHdoaWxlKHJvdXRlXykge1xuICAgIHJvdXRlcy5wdXNoKHJvdXRlXyk7XG4gICAgaWYgKCFyb3V0ZV8ucGFyZW50KSBicmVhaztcbiAgICByb3V0ZV8gPSByb3V0ZV8ucGFyZW50O1xuICB9XG4gIHJldHVybiByb3V0ZXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RJc1Jvb3RQYWdlJChvdXRsZXQgPSBQUklNQVJZX09VVExFVCkge1xuICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgY29uc3Qgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICByZXR1cm4gcm91dGVyLmV2ZW50cy5waXBlKFxuICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICBtYXAoKCkgPT4ge1xuICAgICAgY29uc3Qgcm91dGVzID0gZmxhdHRlblJvdXRlcyhyb3V0ZSkucmV2ZXJzZSgpO1xuICAgICAgY29uc3Qgb3V0bGV0Q29tcG9uZW50Um91dGVzID0gcm91dGVzXG4gICAgICAgIC5zbGljZShyb3V0ZXMuZmluZEluZGV4KHJvdXRlID0+IHJvdXRlLm91dGxldCA9PT0gb3V0bGV0KSlcbiAgICAgICAgLmZpbHRlcihyb3V0ZSA9PiByb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ3NraXAnKSAhPT0gJ3RydWUnICYmICEhcm91dGU/LmNvbXBvbmVudCk7XG4gICAgICByZXR1cm4gb3V0bGV0Q29tcG9uZW50Um91dGVzLmxlbmd0aCA8PSAyO1xuICAgIH0pLFxuICAgIHRha2UoMSksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RJc1Jvb3RQYWdlKG91dGxldCA9IFBSSU1BUllfT1VUTEVUKSB7XG4gIGNvbnN0IGlzUm9vdFBhZ2UkID0gaW5qZWN0SXNSb290UGFnZSQob3V0bGV0KTtcbiAgY29uc3QgaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuICByZXR1cm4gZGVyaXZlZEFzeW5jKCgpID0+IGlzUm9vdFBhZ2UkLCB7aW5qZWN0b3J9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5hdlN0YXJ0QWN0aW9ucyhcbiAgaXNSb290UGFnZTogU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKSxcbik6IFNpZ25hbDxBY3Rpb25bXT4ge1xuICBjb25zdCBjb250ZXh0ID0gaW5qZWN0VWlDb250ZXh0KCk7XG4gIGNvbnN0IG5hdmlnYXRpb25IaXN0b3J5ID0gaW5qZWN0KE5hdmlnYXRpb25IaXN0b3J5U2VydmljZSk7XG4gIGxldCBpc0luaXRpYWw6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcmV0dXJuIGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zb2xlLmRlYnVnKCdbVWlTZXJ2aWNlXSBuYXZpZ2F0aW9uSGlzdG9yeTonLCBuYXZpZ2F0aW9uSGlzdG9yeSlcbiAgICBjb25zdCBpc1Jvb3RQYWdlXyA9IGlzUm9vdFBhZ2UoKTtcbiAgICAvLyBNRU1PKEBOb3pvbXVNSXlhbW90byk6IGhpc3RvcnkuZm9yd2FyZCgp44GX44Gf44Go44GN44Gr44CBaXNJbml0aWFs44GMdHJ1ZeOBruOBvuOBvuOBq+OBquOBo+OBpuOAgeaIu+OCi+ODnOOCv+ODs+OBjOihqOekuuOBleOCjOOBquOBhOWVj+mhjOOBjOOBguOCi+OBn+OCgeOCs+ODoeODs+ODiOOCouOCpuODiFxuICAgIC8vIGlzSW5pdGlhbCA/Pz0gbmF2aWdhdGlvbkhpc3RvcnkuaXNJbml0aWFsKCk7XG4gICAgY29uc29sZS5kZWJ1ZygnW1VpU2VydmljZV0gaXNJbml0aWFsOicsIGlzSW5pdGlhbClcbiAgICBjb25zb2xlLmRlYnVnKCdbVWlTZXJ2aWNlXSBpc1Jvb3RQYWdlOicsIGlzUm9vdFBhZ2UoKSlcbiAgICBjb25zdCBjb250ZXh0XyA9IGNvbnRleHQoKTtcbiAgICBzd2l0Y2goY29udGV4dF8uYnJlYWtwb2ludCkge1xuICAgICAgY2FzZSAneExhcmdlJzpcbiAgICAgIGNhc2UgJ2xhcmdlJzpcbiAgICAgIGNhc2UgJ21lZGl1bSc6XG4gICAgICBjYXNlICdzbWFsbCc6IHtcbiAgICAgICAgaWYgKGlzUm9vdFBhZ2VfKSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChpc0luaXRpYWwpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFt7IGlkOiBOYXZBY3Rpb25JZC5CQUNLLCBuYW1lOiAnQkFDSycsIGljb246ICdhcnJvd19iYWNrJyB9XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNhc2UgJ3hTbWFsbCc6IHtcbiAgICAgICAgaWYgKGlzUm9vdFBhZ2VfKSB7XG4gICAgICAgICAgcmV0dXJuIFt7IGlkOiBOYXZBY3Rpb25JZC5UT0dHTEVfU0lERV9OQVYsIG5hbWU6ICfjg6Hjg4vjg6Xjg7wnLCBpY29uOiAnbWVudScgfV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKGlzSW5pdGlhbCkge1xuICAgICAgICAgICAgcmV0dXJuIFt7IGlkOiBOYXZBY3Rpb25JZC5UT0dHTEVfU0lERV9OQVYsIG5hbWU6ICfjg6Hjg4vjg6Xjg7wnLCBpY29uOiAnbWVudScgfV1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFt7IGlkOiBOYXZBY3Rpb25JZC5CQUNLLCBuYW1lOiAnQkFDSycsIGljb246ICdhcnJvd19iYWNrJyB9XTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgaWYgKGlzUm9vdFBhZ2VfKSByZXR1cm4gW107XG4gICAgICAgIHJldHVybiBbeyBpZDogTmF2QWN0aW9uSWQuQkFDSywgbmFtZTogJ0JBQ0snLCBpY29uOiAnYXJyb3dfYmFjaycgfV07XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdE5hdlN0YXJ0QWN0aW9uc1YyKCkge1xuICBjb25zdCBpc1Jvb3RQYWdlID0gaW5qZWN0SXNSb290UGFnZSgpO1xuICByZXR1cm4gaW5qZWN0TmF2U3RhcnRBY3Rpb25zKGlzUm9vdFBhZ2UpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0U2lkZUFwcE5hdlN0YXJ0QWN0aW9ucyhcbiAgaXNSb290UGFnZTogU2lnbmFsPGJvb2xlYW4+ID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKSxcbik6IFNpZ25hbDxBY3Rpb25bXT4ge1xuICBjb25zdCBjb250ZXh0ID0gaW5qZWN0VWlDb250ZXh0KCk7XG4gIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgc3dpdGNoKGNvbnRleHQoKS5icmVha3BvaW50KSB7XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGlmIChpc1Jvb3RQYWdlKCkpIHJldHVybiBbXG4gICAgICAgICAgeyBpZDogTmF2QWN0aW9uSWQuQ0xPU0UsIG5hbWU6ICdDTE9TRScsIGljb246ICdjbG9zZScgfSxcbiAgICAgICAgXTtcbiAgICAgICAgcmV0dXJuIFt7IGlkOiBOYXZBY3Rpb25JZC5CQUNLLCBuYW1lOiAnQkFDSycsIGljb246ICdhcnJvd19iYWNrJyB9XTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFVpQ29udGV4dCgpOiBTaWduYWw8VUlDb250ZXh0PiB7XG4gIHJldHVybiBpbmplY3QoVWlTZXJ2aWNlKS51aUNvbnRleHQ7XG59XG5cbmV4cG9ydCB0eXBlIFVpQ29uZmlnUmVkdWNlcjxUIGV4dGVuZHMgb2JqZWN0IHwgc3RyaW5nLCBDIGV4dGVuZHMgVUlDb250ZXh0ID0gYW55PiA9IChjb25maWc6IFQsIGNvbnRleHQ6IEMpID0+IFQ7XG5leHBvcnQgY29uc3QgVUlfQ09ORklHX1JFRFVDRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48VWlDb25maWdSZWR1Y2VyPGFueT4+KCdVSV9DT05GSUdfUkVEVUNFUicpO1xuZXhwb3J0IHR5cGUgUmVkdWNlckZhY3Rvcnk8VCBleHRlbmRzIG9iamVjdCB8IHN0cmluZz4gXG4gID0gKGluamVjdG9yOiBJbmplY3RvciwgaG9zdEluamVjdG9yOiBJbmplY3RvcikgPT4gKGNvbmZpZzogVCwgY29udGV4dDogVUlDb250ZXh0KSA9PiBUO1xuXG5leHBvcnQgdHlwZSBEZWZhdWx0UmVkdWNlckZhY3Rvcnk8VCBleHRlbmRzIG9iamVjdCB8IHN0cmluZz5cbiAgPSAoaW5qZWN0b3I6IEluamVjdG9yLCBob3N0SW5qZWN0b3I6IEluamVjdG9yKSA9PiAoY29udGV4dDogVUlDb250ZXh0KSA9PiBUO1xuXG5leHBvcnQgY29uc3Qgd3JhcCA9IDxUIGV4dGVuZHMgb2JqZWN0IHwgc3RyaW5nPihcbiAgZGVmYXVsdFJlZHVjZXJGYWN0b3J5OiBEZWZhdWx0UmVkdWNlckZhY3Rvcnk8VD4sXG4pOiBSZWR1Y2VyRmFjdG9yeTxUPiA9PiB7XG4gIHJldHVybiAoaW5qZWN0b3I6IEluamVjdG9yLCBob3N0SW5qZWN0b3I6IEluamVjdG9yKSA9PiB7XG4gICAgY29uc3QgcmVkdWNlciA9IGRlZmF1bHRSZWR1Y2VyRmFjdG9yeShpbmplY3RvciwgaG9zdEluamVjdG9yKTtcbiAgICByZXR1cm4gKF86IFQsIGNvbnRleHQ6IFVJQ29udGV4dCkgPT4ge1xuICAgICAgcmV0dXJuIHJlZHVjZXIoY29udGV4dCk7XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FsbDxUPihzaWduYWxPclZhbHVlOiBTaWduYWw8VD4gfCBUKTogVCB7XG4gIHJldHVybiBpc1NpZ25hbChzaWduYWxPclZhbHVlKSA/IHNpZ25hbE9yVmFsdWUoKSA6IHNpZ25hbE9yVmFsdWU7XG59XG5cbmZ1bmN0aW9uIHNldFJlZHVjZXJQYXRoKHJlZHVjZXI6IEZ1bmN0aW9uLCBwYXRoOiBzdHJpbmdbXSkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVkdWNlciwgJ3BhdGgnLCB7IHZhbHVlOiBwYXRoLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gIHJldHVybiByZWR1Y2VyO1xufVxuXG5mdW5jdGlvbiBnZXRSZWR1Y2VyUGF0aChyZWR1Y2VyOiBGdW5jdGlvbikge1xuICByZXR1cm4gcmVkdWNlclsncGF0aCddO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZVVpQ29uZmlnPFQgZXh0ZW5kcyBvYmplY3QgfCBzdHJpbmc+KFxuICByZWR1Y2VyRmFjdG9yeTogUmVkdWNlckZhY3Rvcnk8VD4sXG4gIHBhdGg6IHN0cmluZ1tdID0gW10sXG4gIG5hbWUgPSAnbmFtZScsXG4gIHRva2VuID0gVUlfQ09ORklHX1JFRFVDRVIsXG4pOiBQcm92aWRlciB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogdG9rZW4sXG4gICAgdXNlRmFjdG9yeTogKGluamVjdG9yOiBJbmplY3RvcikgPT4ge1xuICAgICAgZnVuY3Rpb24gX3JlZHVjZXJGYWN0b3J5KGhvc3RJbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgY29uc3QgcmVkdWNlciA9IHJlZHVjZXJGYWN0b3J5KGluamVjdG9yLCBob3N0SW5qZWN0b3IpOyBcbiAgICAgICAgcmV0dXJuIChjb25maWc6IFQsIGNvbnRleHQ6IGFueSk6IFQgPT4ge1xuICAgICAgICAgIGlmIChwYXRoLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHJlZHVjZXIoY29uZmlnLCBjb250ZXh0KTtcbiAgICAgICAgICByZXR1cm4gc2V0KGNvbmZpZyBhcyBvYmplY3QsIHBhdGgsIHJlZHVjZXIoZ2V0PGFueSwgYW55Pihjb25maWcsIHBhdGgpLCBjb250ZXh0KSkgYXMgVDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KF9yZWR1Y2VyRmFjdG9yeSwgJ25hbWUnLCB7IHZhbHVlOiBuYW1lLCBjb25maWd1cmFibGU6IHRydWUgfSk7XG4gICAgICBzZXRSZWR1Y2VyUGF0aChfcmVkdWNlckZhY3RvcnksIHBhdGgpO1xuICAgICAgcmV0dXJuIF9yZWR1Y2VyRmFjdG9yeTtcbiAgICB9LFxuICAgIGRlcHM6IFtJbmplY3Rvcl0sXG4gICAgbXVsdGk6IHRydWUsXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb290Q29uZmlnPFQgZXh0ZW5kcyBvYmplY3Q+KFxuICBwYXRoczogc3RyaW5nW10gPSBbXSxcbiAgdG9rZW4gPSBVSV9DT05GSUdfUkVEVUNFUixcbik6IFNpZ25hbDxUPiB7XG4gIGNvbnN0IHVpQ29udGV4dCA9IGluamVjdFVpQ29udGV4dCgpO1xuICBjb25zdCBmYWN0b3JpZXMgPSBpbmplY3RSZWR1Y2VyRmFjdG9yaWVzKHBhdGhzLCB0b2tlbik7XG4gIGNvbnN0IGhvc3RJbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG4gIGNvbnN0IHJlZHVjZXJzID0gZmFjdG9yaWVzLm1hcChmYWN0b3J5ID0+IHtcbiAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KGhvc3RJbmplY3RvciwgKCkgPT4gZmFjdG9yeShob3N0SW5qZWN0b3IpKTtcbiAgfSk7XG4gIGlmICghcmVkdWNlcnMpIHJldHVybiB1bmRlZmluZWQ7XG4gIGNvbnN0IHJvb3RDb25maWcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY29udGV4dCA9IHVpQ29udGV4dCgpO1xuICAgIHJldHVybiByZWR1Y2Vycy5yZWR1Y2UoKGFjYywgcmVkdWNlcikgPT4ge1xuICAgICAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dChob3N0SW5qZWN0b3IsICgpID0+IHJlZHVjZXIoYWNjLCBjb250ZXh0KSk7XG4gICAgfSwge30gYXMgVCk7XG4gIH0pO1xuICByZXR1cm4gcm9vdENvbmZpZztcbn1cblxuLy8gVE9ETyhAbm9udGFuZ2VudCk6IGl0ZW1z44Gq44Gp44Gu5Y+W5b6X44GM5YWo44Gm44Gu44Kz44Oz44Od44O844ON44Oz44OI44Gn6KGM44KP44KM44KL44Gu44Gn6KiI566X44KS5pyA6YGp5YyW44GZ44KL44CCXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VWlDb25maWc8VCBleHRlbmRzIG9iamVjdD4oXG4gIHBhdGhzOiBzdHJpbmdbXSA9IFtdLFxuICB0b2tlbjogSW5qZWN0aW9uVG9rZW48VWlDb25maWdSZWR1Y2VyPGFueT4+ID0gVUlfQ09ORklHX1JFRFVDRVIsXG4pOiBTaWduYWw8VD4ge1xuICBjb25zdCByb290Q29uZmlnID0gaW5qZWN0Um9vdENvbmZpZzxUPihwYXRocywgdG9rZW4pO1xuICByZXR1cm4gc2NvcGVkKHJvb3RDb25maWcsIHBhdGhzIGFzIGFueSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYWtlQ29uZmlnPFQgZXh0ZW5kcyBvYmplY3Q+KGRlZmF1bHRVc2VGYWN0b3J5OiBEZWZhdWx0UmVkdWNlckZhY3Rvcnk8VD4sIHBhdGg6IHN0cmluZ1tdKSB7XG4gIGNvbnN0IGZhY3RvcnkgPSB3cmFwKGRlZmF1bHRVc2VGYWN0b3J5KTtcbiAgY29uc3QgdG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48VWlDb25maWdSZWR1Y2VyPFQ+PihgWyR7cGF0aC5qb2luKCcuJyl9XSBVSV9DT05GSUdfUkVEVUNFUmApO1xuICByZXR1cm4ge1xuICAgIHByb3ZpZGUodXNlRmFjdG9yeT86IFJlZHVjZXJGYWN0b3J5PFQ+LCBsYWJlbCA9IHVzZUZhY3RvcnkgPyAnY3VzdG9tJyA6ICdkZWZhdWx0Jykge1xuICAgICAgdXNlRmFjdG9yeSA/Pz0gZmFjdG9yeTtcbiAgICAgIHJldHVybiBwcm92aWRlVWlDb25maWc8VD4odXNlRmFjdG9yeSwgcGF0aCwgYFske3BhdGguam9pbignLicpfV0gJHtsYWJlbH1gLCB0b2tlbik7XG4gICAgfSxcbiAgICBpbmplY3QoKSB7XG4gICAgICByZXR1cm4gaW5qZWN0VWlDb25maWc8VD4ocGF0aCwgdG9rZW4pO1xuICAgIH0sXG4gIH1cbn1cblxuZnVuY3Rpb24gaW5qZWN0UmVkdWNlcnModG9rZW4pOiAoKGhvc3RJbmplY3RvcjogSW5qZWN0b3IpID0+IFVpQ29uZmlnUmVkdWNlcjxhbnk+KVtdIHtcbiAgcmV0dXJuIGluamVjdERlZXBNdWx0aTwoaG9zdEluamVjdG9yOiBJbmplY3RvcikgPT4gVWlDb25maWdSZWR1Y2VyPGFueT4+KHRva2VuKTtcbn1cblxuZnVuY3Rpb24gaW5qZWN0UmVkdWNlckZhY3RvcmllcyhcbiAgcGF0aDogc3RyaW5nW10gPSBbXSxcbiAgdG9rZW4gPSBVSV9DT05GSUdfUkVEVUNFUixcbik6ICgoaG9zdEluamVjdG9yOiBJbmplY3RvcikgPT4gVWlDb25maWdSZWR1Y2VyPGFueT4pW10ge1xuICByZXR1cm4gaW5qZWN0UmVkdWNlcnModG9rZW4pLmZpbHRlcihmYWN0b3J5ID0+IHtcbiAgICByZXR1cm4gZ2V0UmVkdWNlclBhdGgoZmFjdG9yeSkuZXZlcnkoKHAsIGkpID0+IHBhdGhbaV0gPT09IHApO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdERlZXBNdWx0aTxUPih0b2tlbjogUHJvdmlkZXJUb2tlbjxUPiwgaW5qZWN0b3I6IEluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKSk6IFRbXSB7XG4gIGNvbnN0IHZhbHVlT3JBcnJheSA9IGluamVjdG9yLmdldCh0b2tlbiBhcyBQcm92aWRlclRva2VuPFRbXT4sIFtdLCB7b3B0aW9uYWw6IHRydWV9KTtcbiAgY29uc3QgaXRlbXMgPSBBcnJheS5pc0FycmF5KHZhbHVlT3JBcnJheSkgPyB2YWx1ZU9yQXJyYXkgOiBbdmFsdWVPckFycmF5XTtcbiAgY29uc3QgcGFyZW50SW5qZWN0b3IgPSBpbmplY3Rvci5nZXQoSW5qZWN0b3IsIG51bGwsIHtza2lwU2VsZjogdHJ1ZX0pO1xuICBpZiAoIXBhcmVudEluamVjdG9yKSByZXR1cm4gaXRlbXM7XG4gIHJldHVybiBbLi4ubmV3IFNldChbLi4uaW5qZWN0RGVlcE11bHRpKHRva2VuLCBwYXJlbnRJbmplY3RvciksIC4uLml0ZW1zXSldO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVidWdJbmplY3RvcihpbmplY3RvcjogSW5qZWN0b3IgfCBudWxsID0gaW5qZWN0KEluamVjdG9yKSkge1xuICAgICAgY29uc3QgZ2V0UGFyZW50ID0gKGluamVjdG9yOiBJbmplY3RvciwgbiA9IDApOiBJbmplY3RvciB8IG51bGwgPT4ge1xuICAgICAgd2hpbGUgKGluamVjdG9yICYmIG4tLSA+IDApIHtcbiAgICAgICAgaW5qZWN0b3IgPSBpbmplY3Rvci5nZXQoSW5qZWN0b3IsIG51bGwsIHsgc2tpcFNlbGY6IHRydWUgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gaW5qZWN0b3I7XG4gICAgfVxuXG4gICAgY29uc3QgZ2V0SW5qZWN0b3JOYW1lID0gKGluamVjdG9yOiBJbmplY3Rvcik6IHN0cmluZyA9PiB7XG4gICAgICBjb25zdCBuYW1lID0gaW5qZWN0b3IuZ2V0KEVsZW1lbnRSZWYsIG51bGwpPy5uYXRpdmVFbGVtZW50Py50YWdOYW1lPy50b0xvd2VyQ2FzZSgpO1xuICAgICAgaWYgKG5hbWUpIHJldHVybiBgPCR7bmFtZX0+YDtcbiAgICAgIHJldHVybiBgJHtpbmplY3Rvclsnc291cmNlJ119YDtcbiAgICB9XG5cbiAgICBjb25zdCBpc05vZGVJbmplY3RvciA9IChpbmplY3RvcjogSW5qZWN0b3IpOiBib29sZWFuID0+IHtcbiAgICAgIHJldHVybiBpbmplY3Rvci5nZXQoRWxlbWVudFJlZiwgbnVsbCkgIT09IG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgbWFwVG9OYW1lcyA9IChyZWR1Y2VyczogYW55KSA9PiAocmVkdWNlcnMgPz8gW10pLm1hcChyZWR1Y2VyID0+IHJlZHVjZXIubmFtZSk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IDIwOyBpKyspIHtcbiAgICAgIGluamVjdG9yID0gZ2V0UGFyZW50KGluamVjdG9yLCBpKTtcbiAgICAgIGlmIChpbmplY3RvciA9PT0gSW5qZWN0b3IuTlVMTCkgYnJlYWs7XG4gICAgfVxufVxuIl19
@@ -1,5 +1,5 @@
1
1
  import { Inject, Injectable, Optional } from "@angular/core";
2
- import { DOMAIN_LANG_MAP } from "@ng-atomic/common/pipes/domain";
2
+ import { DOMAIN_LANG_MAP } from "@ng-atomic/common/services/language";
3
3
  import { QueryResolverService } from "@ng-atomic/common/services/query-resolver";
4
4
  import { ComponentStore } from "@ngrx/component-store";
5
5
  import * as i0 from "@angular/core";
@@ -28,4 +28,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.2", ngImpor
28
28
  type: Inject,
29
29
  args: [DOMAIN_LANG_MAP]
30
30
  }] }] });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3N0b3Jlcy9xdWVyeS9xdWVyeS5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBT3ZELE1BQU0sT0FBTyxVQUFtQyxTQUFRLGNBQTBCO0lBQ2hGLFlBQ1ksYUFBc0MsRUFDRCxPQUErQjtRQUU5RSxLQUFLLENBQUMsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFDLENBQUMsQ0FBQztRQUhULGtCQUFhLEdBQWIsYUFBYSxDQUF5QjtRQUNELFlBQU8sR0FBUCxPQUFPLENBQXdCO1FBT2hGLFdBQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0MsYUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUMsR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBTnJFLElBQUksQ0FBQyxPQUFPLEtBQUssRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLEtBQUssS0FBYSxPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBS2hELE9BQU8sQ0FBQyxRQUFhO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDOzhHQWhCVSxVQUFVLHNEQUdDLGVBQWU7a0hBSDFCLFVBQVU7OzJGQUFWLFVBQVU7a0JBRHRCLFVBQVU7OzBCQUlOLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRE9NQUlOX0xBTkdfTUFQIH0gZnJvbSBcIkBuZy1hdG9taWMvY29tbW9uL3BpcGVzL2RvbWFpblwiO1xuaW1wb3J0IHsgUXVlcnlSZXNvbHZlclNlcnZpY2UgfSBmcm9tIFwiQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvcXVlcnktcmVzb2x2ZXJcIjtcbmltcG9ydCB7IENvbXBvbmVudFN0b3JlIH0gZnJvbSBcIkBuZ3J4L2NvbXBvbmVudC1zdG9yZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5U3RhdGUge1xuICBxdWVyeTogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUXVlcnlTdG9yZTxFIGV4dGVuZHMgb2JqZWN0ID0gYW55PiBleHRlbmRzIENvbXBvbmVudFN0b3JlPFF1ZXJ5U3RhdGU+IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHF1ZXJ5UmVzb2x2ZXI6IFF1ZXJ5UmVzb2x2ZXJTZXJ2aWNlPEU+LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRE9NQUlOX0xBTkdfTUFQKSBwcm90ZWN0ZWQgbGFuZ01hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgKSB7XG4gICAgc3VwZXIoe3F1ZXJ5OiAnJ30pO1xuICAgIHRoaXMubGFuZ01hcCA/Pz0ge307XG4gIH1cblxuICBnZXQgcXVlcnkoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuZ2V0KCkucXVlcnk7IH1cbiAgcXVlcnkkID0gdGhpcy5zZWxlY3QoKHN0YXRlKSA9PiBzdGF0ZS5xdWVyeSk7XG5cbiAgc2V0UXVlcnkgPSB0aGlzLnVwZGF0ZXIoKHN0YXRlLCBxdWVyeTogc3RyaW5nKSA9PiAoey4uLnN0YXRlLCBxdWVyeX0pKTtcblxuICByZXNvbHZlKGVudGl0aWVzOiBFW10pOiBFW10ge1xuICAgIHJldHVybiB0aGlzLnF1ZXJ5UmVzb2x2ZXIucmVzb2x2ZShlbnRpdGllcywgdGhpcy5xdWVyeSk7XG4gIH1cblxufSJdfQ==
31
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuc3RvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3N0b3Jlcy9xdWVyeS9xdWVyeS5zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBT3ZELE1BQU0sT0FBTyxVQUFtQyxTQUFRLGNBQTBCO0lBQ2hGLFlBQ1ksYUFBc0MsRUFDRCxPQUErQjtRQUU5RSxLQUFLLENBQUMsRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFDLENBQUMsQ0FBQztRQUhULGtCQUFhLEdBQWIsYUFBYSxDQUF5QjtRQUNELFlBQU8sR0FBUCxPQUFPLENBQXdCO1FBT2hGLFdBQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFN0MsYUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUMsR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFDO1FBTnJFLElBQUksQ0FBQyxPQUFPLEtBQUssRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLEtBQUssS0FBYSxPQUFPLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBS2hELE9BQU8sQ0FBQyxRQUFhO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxRCxDQUFDOzhHQWhCVSxVQUFVLHNEQUdDLGVBQWU7a0hBSDFCLFVBQVU7OzJGQUFWLFVBQVU7a0JBRHRCLFVBQVU7OzBCQUlOLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRE9NQUlOX0xBTkdfTUFQIH0gZnJvbSBcIkBuZy1hdG9taWMvY29tbW9uL3NlcnZpY2VzL2xhbmd1YWdlXCI7XG5pbXBvcnQgeyBRdWVyeVJlc29sdmVyU2VydmljZSB9IGZyb20gXCJAbmctYXRvbWljL2NvbW1vbi9zZXJ2aWNlcy9xdWVyeS1yZXNvbHZlclwiO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RvcmUgfSBmcm9tIFwiQG5ncngvY29tcG9uZW50LXN0b3JlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlTdGF0ZSB7XG4gIHF1ZXJ5OiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBRdWVyeVN0b3JlPEUgZXh0ZW5kcyBvYmplY3QgPSBhbnk+IGV4dGVuZHMgQ29tcG9uZW50U3RvcmU8UXVlcnlTdGF0ZT4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcXVlcnlSZXNvbHZlcjogUXVlcnlSZXNvbHZlclNlcnZpY2U8RT4sXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChET01BSU5fTEFOR19NQVApIHByb3RlY3RlZCBsYW5nTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICApIHtcbiAgICBzdXBlcih7cXVlcnk6ICcnfSk7XG4gICAgdGhpcy5sYW5nTWFwID8/PSB7fTtcbiAgfVxuXG4gIGdldCBxdWVyeSgpOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5nZXQoKS5xdWVyeTsgfVxuICBxdWVyeSQgPSB0aGlzLnNlbGVjdCgoc3RhdGUpID0+IHN0YXRlLnF1ZXJ5KTtcblxuICBzZXRRdWVyeSA9IHRoaXMudXBkYXRlcigoc3RhdGUsIHF1ZXJ5OiBzdHJpbmcpID0+ICh7Li4uc3RhdGUsIHF1ZXJ5fSkpO1xuXG4gIHJlc29sdmUoZW50aXRpZXM6IEVbXSk6IEVbXSB7XG4gICAgcmV0dXJuIHRoaXMucXVlcnlSZXNvbHZlci5yZXNvbHZlKGVudGl0aWVzLCB0aGlzLnF1ZXJ5KTtcbiAgfVxuXG59Il19
@@ -0,0 +1,38 @@
1
+ import { inject, InjectionToken } from '@angular/core';
2
+ import dayjs from 'dayjs';
3
+ import { comma } from '../comma';
4
+ export const yenTransform = (value, _unit = '') => {
5
+ return `${comma(value)} ${_unit}`;
6
+ };
7
+ export const defaultExpressionTransformer = input => {
8
+ if (dayjs.isDayjs(input)) {
9
+ return input.format('YY/MM/DD');
10
+ }
11
+ else if (Array.isArray(input)) {
12
+ return `${input.length}個のアイテム`;
13
+ }
14
+ else if (typeof input === 'object') {
15
+ return JSON.stringify(input);
16
+ }
17
+ else if (typeof input === 'string') {
18
+ return input;
19
+ }
20
+ else if (typeof input === 'number') {
21
+ return yenTransform(input);
22
+ }
23
+ else {
24
+ return input;
25
+ }
26
+ };
27
+ export const EXPRESSION_TRANSFORMER = new InjectionToken('[@ng-atomic/common] Expression Transformer', {
28
+ providedIn: 'root',
29
+ factory: () => defaultExpressionTransformer,
30
+ });
31
+ export function provideExpressionTransformer(useFactory) {
32
+ return { provide: EXPRESSION_TRANSFORMER, useFactory };
33
+ }
34
+ export function injectParentExpressionTransformer() {
35
+ return inject(EXPRESSION_TRANSFORMER, { skipSelf: true, optional: true }) ?? defaultExpressionTransformer;
36
+ }
37
+ export const smartExpTransformer = defaultExpressionTransformer;
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwcmVzc2lvbi50cmFuc2Zvcm1lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL0BuZy1hdG9taWMvY29tbW9uL3NyYy9saWIvdXRpbHMvZXhwcmVzc2lvbi9leHByZXNzaW9uLnRyYW5zZm9ybWVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWpDLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFDLEtBQWEsRUFBRSxLQUFLLEdBQUcsRUFBRSxFQUFVLEVBQUU7SUFDaEUsT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUNwQyxDQUFDLENBQUE7QUFHRCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBMEIsS0FBSyxDQUFDLEVBQUU7SUFDekUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDekIsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7U0FBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0lBQ2pDLENBQUM7U0FBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO1NBQU0sSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNyQyxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7U0FBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3JDLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQXdCLDRDQUE0QyxFQUFFO0lBQzVILFVBQVUsRUFBRSxNQUFNO0lBQ2xCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyw0QkFBNEI7Q0FDNUMsQ0FBQyxDQUFDO0FBRUgsTUFBTSxVQUFVLDRCQUE0QixDQUFDLFVBQXVDO0lBQ2xGLE9BQU8sRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsVUFBVSxFQUFFLENBQUM7QUFDekQsQ0FBQztBQUVELE1BQU0sVUFBVSxpQ0FBaUM7SUFDL0MsT0FBTyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsRUFBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUMsQ0FBQyxJQUFJLDRCQUE0QixDQUFBO0FBQ3pHLENBQUM7QUFFRCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBMEIsNEJBQTRCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHsgY29tbWEgfSBmcm9tICcuLi9jb21tYSc7XG5cbmV4cG9ydCBjb25zdCB5ZW5UcmFuc2Zvcm0gPSAodmFsdWU6IG51bWJlciwgX3VuaXQgPSAnJyk6IHN0cmluZyA9PiB7XG4gIHJldHVybiBgJHtjb21tYSh2YWx1ZSl9ICR7X3VuaXR9YDtcbn1cblxuZXhwb3J0IHR5cGUgRXhwcmVzc2lvblRyYW5zZm9ybWVyID0gKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBkYXlqcy5EYXlqcyB8IGFueSwgY29udGV4dD86IGFueSkgPT4gc3RyaW5nO1xuZXhwb3J0IGNvbnN0IGRlZmF1bHRFeHByZXNzaW9uVHJhbnNmb3JtZXI6IEV4cHJlc3Npb25UcmFuc2Zvcm1lciA9IGlucHV0ID0+IHtcbiAgaWYgKGRheWpzLmlzRGF5anMoaW5wdXQpKSB7XG4gICAgcmV0dXJuIGlucHV0LmZvcm1hdCgnWVkvTU0vREQnKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGlucHV0KSkge1xuICAgIHJldHVybiBgJHtpbnB1dC5sZW5ndGh95YCL44Gu44Ki44Kk44OG44OgYDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGlucHV0KTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgaW5wdXQgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGlucHV0O1xuICB9IGVsc2UgaWYgKHR5cGVvZiBpbnB1dCA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4geWVuVHJhbnNmb3JtKGlucHV0KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gaW5wdXQ7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IEVYUFJFU1NJT05fVFJBTlNGT1JNRVIgPSBuZXcgSW5qZWN0aW9uVG9rZW48RXhwcmVzc2lvblRyYW5zZm9ybWVyPignW0BuZy1hdG9taWMvY29tbW9uXSBFeHByZXNzaW9uIFRyYW5zZm9ybWVyJywge1xuICBwcm92aWRlZEluOiAncm9vdCcsXG4gIGZhY3Rvcnk6ICgpID0+IGRlZmF1bHRFeHByZXNzaW9uVHJhbnNmb3JtZXIsXG59KTtcblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVFeHByZXNzaW9uVHJhbnNmb3JtZXIodXNlRmFjdG9yeTogKCkgPT4gRXhwcmVzc2lvblRyYW5zZm9ybWVyKSB7XG4gIHJldHVybiB7IHByb3ZpZGU6IEVYUFJFU1NJT05fVFJBTlNGT1JNRVIsIHVzZUZhY3RvcnkgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFBhcmVudEV4cHJlc3Npb25UcmFuc2Zvcm1lcigpIHtcbiAgcmV0dXJuIGluamVjdChFWFBSRVNTSU9OX1RSQU5TRk9STUVSLCB7c2tpcFNlbGY6IHRydWUsIG9wdGlvbmFsOiB0cnVlfSkgPz8gZGVmYXVsdEV4cHJlc3Npb25UcmFuc2Zvcm1lclxufVxuXG5leHBvcnQgY29uc3Qgc21hcnRFeHBUcmFuc2Zvcm1lcjogRXhwcmVzc2lvblRyYW5zZm9ybWVyID0gZGVmYXVsdEV4cHJlc3Npb25UcmFuc2Zvcm1lcjtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './expression.transformer';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3V0aWxzL2V4cHJlc3Npb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZXhwcmVzc2lvbi50cmFuc2Zvcm1lcic7XG4iXX0=
@@ -1,6 +1,6 @@
1
- import _get from 'lodash.get';
1
+ import { get as _get } from 'lodash-es';
2
2
  /** @deprecated use lodash-es */
3
3
  export function get(obj, path) {
4
4
  return _get(obj, path);
5
5
  }
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi91dGlscy9nZXQvZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFlBQVksQ0FBQztBQWlCOUIsZ0NBQWdDO0FBQ2hDLE1BQU0sVUFBVSxHQUFHLENBQTJCLEdBQU0sRUFBRSxJQUFPO0lBQzNELE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF9nZXQgZnJvbSAnbG9kYXNoLmdldCc7XG5cbi8vIOODjeOCueODiOOBleOCjOOBn+OCquODluOCuOOCp+OCr+ODiOOBruOCreODvOOBrue1hOOBv+WQiOOCj+OBm+OCkueUn+aIkOOBmeOCi+Wei+ODmOODq+ODkeODvFxuZXhwb3J0IHR5cGUgUGF0aEtleXM8VD4gPSBUIGV4dGVuZHMgb2JqZWN0ID8ge1xuICBbSyBpbiBrZXlvZiBUXS0/OiBLIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyID9cbiAgICBUW0tdIGV4dGVuZHMgb2JqZWN0ID8gW0tdIHwgW0ssIC4uLlBhdGhLZXlzPFRbS10+XSA6IFtLXVxuICAgIDogbmV2ZXJcbn1ba2V5b2YgVF0gOiBbXTtcblxuLy8g44ON44K544OI44GV44KM44Gf44OR44K544Gr5a++5b+c44GZ44KL5Z6L44KS5oq95Ye644GZ44KL44Gf44KB44Gu5Z6L44OY44Or44OR44O8XG5leHBvcnQgdHlwZSBOZXN0ZWRHZXRUeXBlPFQsIFAgZXh0ZW5kcyBhbnlbXT4gPSBcbiAgUCBleHRlbmRzIFtpbmZlciBGLCAuLi5pbmZlciBSXVxuICAgID8gRiBleHRlbmRzIGtleW9mIFRcbiAgICAgID8gTmVzdGVkR2V0VHlwZTxUW0ZdLCBSPlxuICAgICAgOiBuZXZlclxuICAgIDogVDtcblxuLyoqIEBkZXByZWNhdGVkIHVzZSBsb2Rhc2gtZXMgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXQ8VCwgUCBleHRlbmRzIFBhdGhLZXlzPFQ+PihvYmo6IFQsIHBhdGg6IFApOiBOZXN0ZWRHZXRUeXBlPFQsIFA+IHtcbiAgcmV0dXJuIF9nZXQob2JqLCBwYXRoKTtcbn0iXX0=
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi91dGlscy9nZXQvZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxHQUFHLElBQUksSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBaUJ4QyxnQ0FBZ0M7QUFDaEMsTUFBTSxVQUFVLEdBQUcsQ0FBMkIsR0FBTSxFQUFFLElBQU87SUFDM0QsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQVcsQ0FBQyxDQUFDO0FBQ2hDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXQgYXMgX2dldCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbi8vIOODjeOCueODiOOBleOCjOOBn+OCquODluOCuOOCp+OCr+ODiOOBruOCreODvOOBrue1hOOBv+WQiOOCj+OBm+OCkueUn+aIkOOBmeOCi+Wei+ODmOODq+ODkeODvFxuZXhwb3J0IHR5cGUgUGF0aEtleXM8VD4gPSBUIGV4dGVuZHMgb2JqZWN0ID8ge1xuICBbSyBpbiBrZXlvZiBUXS0/OiBLIGV4dGVuZHMgc3RyaW5nIHwgbnVtYmVyID9cbiAgICBUW0tdIGV4dGVuZHMgb2JqZWN0ID8gW0tdIHwgW0ssIC4uLlBhdGhLZXlzPFRbS10+XSA6IFtLXVxuICAgIDogbmV2ZXJcbn1ba2V5b2YgVF0gOiBbXTtcblxuLy8g44ON44K544OI44GV44KM44Gf44OR44K544Gr5a++5b+c44GZ44KL5Z6L44KS5oq95Ye644GZ44KL44Gf44KB44Gu5Z6L44OY44Or44OR44O8XG5leHBvcnQgdHlwZSBOZXN0ZWRHZXRUeXBlPFQsIFAgZXh0ZW5kcyBhbnlbXT4gPSBcbiAgUCBleHRlbmRzIFtpbmZlciBGLCAuLi5pbmZlciBSXVxuICAgID8gRiBleHRlbmRzIGtleW9mIFRcbiAgICAgID8gTmVzdGVkR2V0VHlwZTxUW0ZdLCBSPlxuICAgICAgOiBuZXZlclxuICAgIDogVDtcblxuLyoqIEBkZXByZWNhdGVkIHVzZSBsb2Rhc2gtZXMgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXQ8VCwgUCBleHRlbmRzIFBhdGhLZXlzPFQ+PihvYmo6IFQsIHBhdGg6IFApOiBOZXN0ZWRHZXRUeXBlPFQsIFA+IHtcbiAgcmV0dXJuIF9nZXQob2JqLCBwYXRoIGFzIGFueSk7XG59Il19
@@ -8,8 +8,8 @@ export * from './inject';
8
8
  export * from './mat-dayjs-date';
9
9
  export * from './page';
10
10
  export * from './router';
11
- export * from './smart-exp-transformer';
11
+ export * from './expression';
12
12
  export * from './to-object';
13
13
  export * from './time';
14
14
  // export * from './define-element';
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxPQUFPLENBQUM7QUFDdEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsYUFBYSxDQUFDO0FBRTVCLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLG9DQUFvQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29tbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9jb21wYXJlLWJ5LWlkJztcbmV4cG9ydCAqIGZyb20gJy4vZGF0ZS11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2RpZmYnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtJztcbmV4cG9ydCAqIGZyb20gJy4vZ2V0JztcbmV4cG9ydCAqIGZyb20gJy4vaW5qZWN0JztcbmV4cG9ydCAqIGZyb20gJy4vbWF0LWRheWpzLWRhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9wYWdlJztcbmV4cG9ydCAqIGZyb20gJy4vcm91dGVyJztcbmV4cG9ydCAqIGZyb20gJy4vc21hcnQtZXhwLXRyYW5zZm9ybWVyJztcbmV4cG9ydCAqIGZyb20gJy4vdG8tb2JqZWN0JztcblxuZXhwb3J0ICogZnJvbSAnLi90aW1lJztcbi8vIGV4cG9ydCAqIGZyb20gJy4vZGVmaW5lLWVsZW1lbnQnO1xuIl19
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AbmctYXRvbWljL2NvbW1vbi9zcmMvbGliL3V0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsU0FBUyxDQUFDO0FBQ3hCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxRQUFRLENBQUM7QUFDdkIsY0FBYyxPQUFPLENBQUM7QUFDdEIsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGFBQWEsQ0FBQztBQUU1QixjQUFjLFFBQVEsQ0FBQztBQUN2QixvQ0FBb0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbW1hJztcbmV4cG9ydCAqIGZyb20gJy4vY29tcGFyZS1ieS1pZCc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGUtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9kaWZmJztcbmV4cG9ydCAqIGZyb20gJy4vZm9ybSc7XG5leHBvcnQgKiBmcm9tICcuL2dldCc7XG5leHBvcnQgKiBmcm9tICcuL2luamVjdCc7XG5leHBvcnQgKiBmcm9tICcuL21hdC1kYXlqcy1kYXRlJztcbmV4cG9ydCAqIGZyb20gJy4vcGFnZSc7XG5leHBvcnQgKiBmcm9tICcuL3JvdXRlcic7XG5leHBvcnQgKiBmcm9tICcuL2V4cHJlc3Npb24nO1xuZXhwb3J0ICogZnJvbSAnLi90by1vYmplY3QnO1xuXG5leHBvcnQgKiBmcm9tICcuL3RpbWUnO1xuLy8gZXhwb3J0ICogZnJvbSAnLi9kZWZpbmUtZWxlbWVudCc7XG4iXX0=
@@ -174,4 +174,4 @@ export function injectRouteSkip$() {
174
174
  export function injectRouteSkip() {
175
175
  return toSignal(injectRouteSkip$());
176
176
  }
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi91dGlscy9pbmplY3QvaW5qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBb0IsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUYsT0FBTyxFQUFjLGFBQWEsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUVqQyxNQUFNLFVBQVUsa0JBQWtCLENBQUMsR0FBVztJQUM1QyxPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN6QyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDaEMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLGtCQUFrQixFQUFFLENBQ3JCLENBQUM7QUFDSixDQUFDO0FBRUQsa0JBQWtCO0FBQ2xCLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUFXO0lBQzNDLE9BQU8sUUFBUSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVELE1B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S0FBSyxFQUFDLENBQUMsQ0FBQyxJQUFJLENBQ25ELEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxFQUM5QixXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQ2Qsa0JBQWtCLEVBQUUsQ0FDckIsQ0FBQTtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZTtJQUM3QixPQUFPLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7QUFDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yLCBTaWduYWwsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3BcIjtcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBQYXJhbU1hcCwgUGFyYW1zLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBjb21iaW5lTGF0ZXN0LCBmaWx0ZXIsIG1hcCwgb2YsIHNoYXJlUmVwbGF5LCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFR5cGUgfSBmcm9tIFwiQG54LWRkZC9jb21tb24vZG9tYWluL21vZGVsc1wiO1xuaW1wb3J0IHsgZ2V0IH0gZnJvbSBcImxvZGFzaC1lc1wiO1xuaW1wb3J0IHsgdW5mbGF0dGVuIH0gZnJvbSAnZmxhdCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZXJQYXJhbSQoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICByZXR1cm4gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKS5wYXJhbU1hcC5waXBlKFxuICAgIG1hcCgocGFyYW1zKSA9PiBwYXJhbXMuZ2V0KGtleSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG4vKiogQGRlcHJlY2F0ZWQgKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZXJQYXJhbShrZXk6IHN0cmluZyk6IFNpZ25hbDxzdHJpbmc+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdFJvdXRlclBhcmFtJChrZXkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlUXVlcnlQYXJhbSQ8VCBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4oa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgcmV0dXJuIGluamVjdChBY3RpdmF0ZWRSb3V0ZSkucXVlcnlQYXJhbU1hcC5waXBlKFxuICAgIG1hcCgocGFyYW1zKSA9PiBwYXJhbXMuZ2V0KGtleSkgYXMgVCksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZVF1ZXJ5UGFyYW0oa2V5OiBzdHJpbmcpOiBTaWduYWw8c3RyaW5nPiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RSb3V0ZVF1ZXJ5UGFyYW0kKGtleSkpO1xufVxuXG4vLyBleHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVQYXJhbU1hcCQoKTogT2JzZXJ2YWJsZTxQYXJhbU1hcD4ge1xuLy8gICByZXR1cm4gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKS5wYXJhbU1hcC5waXBlKFxuLy8gICAgIHNoYXJlUmVwbGF5KDEpLFxuLy8gICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuLy8gICApO1xuLy8gfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVQYXJhbXMkKHtcbiAgbWVyZ2UgPSB0cnVlLFxuICByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSksXG59OiB7XG4gIG1lcmdlPzogYm9vbGVhbixcbiAgcm91dGU/OiBBY3RpdmF0ZWRSb3V0ZSxcbn0gPSB7fSk6IE9ic2VydmFibGU8UGFyYW1zPiB7XG4gIGNvbnN0IHBhcmVudFBhcmFtcyA9IChtZXJnZSAmJiByb3V0ZS5wYXJlbnQpID8gaW5qZWN0Um91dGVQYXJhbXMkKHttZXJnZSwgcm91dGU6IHJvdXRlLnBhcmVudH0pIDogb2YobmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKSk7XG4gIHJldHVybiBjb21iaW5lTGF0ZXN0KHtcbiAgICBwYXJlbnRQYXJhbXMsXG4gICAgcGFyYW1zOiByb3V0ZS5wYXJhbXNcbiAgfSkucGlwZShcbiAgICBtYXAoKHtwYXJlbnRQYXJhbXMsIHBhcmFtc30pID0+ICh7XG4gICAgICAuLi5wYXJlbnRQYXJhbXMsXG4gICAgICAuLi5wYXJhbXMsXG4gICAgfSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RVbmZsYXR0ZW5Sb3V0ZVBhcmFtcyQoe1xuICBtZXJnZSA9IHRydWUsXG4gIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKSxcbn06IHtcbiAgbWVyZ2U/OiBib29sZWFuLFxuICByb3V0ZT86IEFjdGl2YXRlZFJvdXRlLFxufSA9IHt9KSB7XG4gIHJldHVybiBpbmplY3RSb3V0ZVBhcmFtcyQoe21lcmdlLCByb3V0ZX0pLnBpcGUoXG4gICAgbWFwKChwYXJhbXMpID0+ICh1bmZsYXR0ZW4ocGFyYW1zKSBhcyBhbnkpKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFVuZmxhdHRlblJvdXRlUGFyYW0kPFQgPSBhbnk+KGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XG4gIHJldHVybiBpbmplY3RVbmZsYXR0ZW5Sb3V0ZVBhcmFtcyQoKS5waXBlKFxuICAgIG1hcCgocGFyYW1zKSA9PiBwYXJhbXNba2V5XSksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RVbmZsYXR0ZW5Sb3V0ZVBhcmFtPFQgPSBhbnk+KGtleTogc3RyaW5nKTogU2lnbmFsPFQ+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdFVuZmxhdHRlblJvdXRlUGFyYW0kKGtleSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VW5mbGF0dGVuUm91dGVQYXJhbXMoe1xuICBtZXJnZSA9IHRydWUsXG59OiB7XG4gIG1lcmdlPzogYm9vbGVhbixcbn0gPSB7fSk6IFNpZ25hbDxhbnk+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdFVuZmxhdHRlblJvdXRlUGFyYW1zJCh7bWVyZ2V9KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZVBhcmFtTWFwJCh7XG4gIG1lcmdlID0gdHJ1ZSxcbn06IHtcbiAgbWVyZ2U/OiBib29sZWFuLFxufSA9IHt9KSB7XG4gIHJldHVybiBpbmplY3RSb3V0ZVBhcmFtcyQoe21lcmdlfSkucGlwZShcbiAgICBtYXAoKHBhcmFtcykgPT4gbmV3IE1hcChPYmplY3QuZW50cmllcyhwYXJhbXMpKSBhcyBuZXZlciBhcyBQYXJhbU1hcCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZVBhcmFtTWFwKHtcbiAgbWVyZ2UgPSB0cnVlLFxufToge1xuICBtZXJnZT86IGJvb2xlYW4sXG59ID0ge30pOiBTaWduYWw8UGFyYW1NYXA+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdFJvdXRlUGFyYW1NYXAkKHttZXJnZX0pKTtcbn1cblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlUGFyYW1zJCgpOiBPYnNlcnZhYmxlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+IHtcbi8vICAgcmV0dXJuIGluamVjdChBY3RpdmF0ZWRSb3V0ZSkucGFyYW1NYXAucGlwZShcbi8vICAgICBtYXAoKHBhcmFtcykgPT4ge1xuLy8gICAgICAgY29uc3QgcmVzdWx0ID0ge307XG4vLyAgICAgICBwYXJhbXMua2V5cy5mb3JFYWNoKGtleSA9PiByZXN1bHRba2V5XSA9IHBhcmFtcy5nZXQoa2V5KSk7XG4vLyAgICAgICByZXR1cm4gcmVzdWx0O1xuLy8gICAgIH0pLFxuLy8gICAgIHNoYXJlUmVwbGF5KDEpLFxuLy8gICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuLy8gICApO1xuLy8gfVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVQYXJhbXMoe1xuICBtZXJnZSA9IHRydWUsXG59OiB7XG4gIG1lcmdlPzogYm9vbGVhbixcbn0gPSB7fSk6IFNpZ25hbDxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RSb3V0ZVBhcmFtcyQoe21lcmdlfSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVOYXZpZ2F0ZWQkKCkge1xuICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgY29uc3Qgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICByZXR1cm4gcm91dGVyLmV2ZW50cy5waXBlKFxuICAgIGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpLFxuICAgIG1hcCgoKSA9PiByb3V0ZSksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZU5hdmlnYXRlZCgpIHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdFJvdXRlTmF2aWdhdGVkJCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFByaW1hcnlQYXRocyQoKSB7XG4gIHJldHVybiBpbmplY3RSb3V0ZU5hdmlnYXRlZCQoKS5waXBlKFxuICAgIG1hcChyb3V0ZSA9PiB7XG4gICAgICBjb25zdCBwYXRocyA9IFtdO1xuICAgICAgbGV0IGN1cnJlbnQgPSByb3V0ZS5yb290O1xuICAgICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgICAgcGF0aHMucHVzaChjdXJyZW50Py5yb3V0ZUNvbmZpZz8ucGF0aCA/PyBudWxsKTtcbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQuZmlyc3RDaGlsZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwYXRocy5maWx0ZXIoQm9vbGVhbik7XG4gICAgfSksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RQcmltYXJ5UGF0aHMoKSB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RQcmltYXJ5UGF0aHMkKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Q2hpbGRSb3V0ZVBhcmFtJChrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gIHJldHVybiBpbmplY3RSb3V0ZU5hdmlnYXRlZCQoKS5waXBlKFxuICAgIHN3aXRjaE1hcCgocm91dGUpID0+IHJvdXRlPy5maXJzdENoaWxkID8gcm91dGUuZmlyc3RDaGlsZC5wYXJhbU1hcCA6IG9mKG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCkpKSxcbiAgICBtYXAoKHBhcmFtcykgPT4gcGFyYW1zLmdldChrZXkpKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdENoaWxkUm91dGVQYXJhbShrZXk6IHN0cmluZyk6IFNpZ25hbDxzdHJpbmc+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdENoaWxkUm91dGVQYXJhbSQoa2V5KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RDaGlsZFJvdXRlJCgpIHtcbiAgcmV0dXJuIGluamVjdFJvdXRlTmF2aWdhdGVkJCgpLnBpcGUoXG4gICAgbWFwKChyb3V0ZSkgPT4gcm91dGU/LmZpcnN0Q2hpbGQ/LmZpcnN0Q2hpbGQpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Q2hpbGRSb3V0ZSgpOiBTaWduYWw8QWN0aXZhdGVkUm91dGU+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdENoaWxkUm91dGUkKCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0SGFzTmV4dCQoKSB7XG4gIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBjb25zdCByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSk7XG4gIHJldHVybiByb3V0ZXIuZXZlbnRzLnBpcGUoXG4gICAgc3RhcnRXaXRoKG51bGwpLFxuICAgIG1hcCgoKSA9PiAhIXJvdXRlPy5maXJzdENoaWxkPy5maXJzdENoaWxkKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEhhc05leHQoKSB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RIYXNOZXh0JCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlclF1ZXJ5UGFyYW0kKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgcmV0dXJuIGluamVjdChBY3RpdmF0ZWRSb3V0ZSkucXVlcnlQYXJhbU1hcC5waXBlKFxuICAgIG1hcCgocGFyYW1zKSA9PiBwYXJhbXMuZ2V0KGtleSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVyUXVlcnlQYXJhbShrZXk6IHN0cmluZyk6IFNpZ25hbDxzdHJpbmc+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdFJvdXRlclF1ZXJ5UGFyYW0kKGtleSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVEYXRhJDxUPihwYXRoOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgcmV0dXJuIGluamVjdChBY3RpdmF0ZWRSb3V0ZSkuZGF0YS5waXBlKG1hcChkYXRhID0+IGdldChkYXRhLCBwYXRoKSBhcyBUKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZURhdGE8VD4oa2V5OiBzdHJpbmcpOiBTaWduYWw8VD4ge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0Um91dGVEYXRhJChrZXkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEFjdGl2YXRlZENvbXBvbmVudHMoaW5qZWN0b3I6IEluamVjdG9yID0gaW5qZWN0KEluamVjdG9yKSk6IGFueVtdIHtcbiAgY29uc3QgY29tcG9uZW50cyA9IFtdO1xuICBsZXQgcm91dGUgPSBpbmplY3Rvci5nZXQoQWN0aXZhdGVkUm91dGUsIHtvcHRpb25hbDogdHJ1ZX0pID8/IG51bGw7XG4gIHdoaWxlKHJvdXRlKSB7XG4gICAgaWYgKHJvdXRlLmNvbXBvbmVudCkgY29tcG9uZW50cy5wdXNoKHJvdXRlLmNvbXBvbmVudCk7XG4gICAgcm91dGUgPSByb3V0ZS5wYXJlbnQ7XG4gIH1cbiAgcmV0dXJuIGNvbXBvbmVudHM7XG59XG5cblxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc29sdmVyPFQ+IHtcbiAgcmVzb2x2ZShlbnRyeTogVCk6IFQ7XG4gIHJlc29sdmVNYW55KGVudGl0aWVzOiBUW10pOiBUW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlUmVzb2x2ZXIoXG4gIEVudGl0eTogVHlwZTx7aWQ6IHN0cmluZ30+LFxuICBSZXNvbHZlclR5cGU6IG5ldyAocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBPYnNlcnZhYmxlPGFueT4+KSA9PiBSZXNvbHZlcjxhbnk+LFxuKSB7XG4gIHJldHVybiB7XG4gICAgcHJvdmlkZTogRW50aXR5LFxuICAgIC8vIHVzZUZhY3Rvcnk6ICgpID0+IG5ldyBSZXNvbHZlclR5cGUocGFyYW1zKSxcbiAgICBkZXBzOiBbXSxcbiAgICBtdWx0aTogdHJ1ZSxcbiAgfTtcbn1cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgUmVzb2x2ZXJNYW5hZ2VyIHtcbiAgcHJvdGVjdGVkIG1hcCA9IG5ldyBNYXA8c3RyaW5nLCBSZXNvbHZlcjxhbnk+PigpO1xuXG4gIGdldChFbnRpdHk6IFR5cGU8e2lkOiBzdHJpbmd9Pikge1xuICAgIGlmICghdGhpcy5tYXAuaGFzKEVudGl0eS5uYW1lKSkge1xuICAgICAgLy8gcmV0dXJuIHRoaXMubWFwLnNldCgpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLm1hcC5nZXQoRW50aXR5Lm5hbWUpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSZXNvbHZlciQ8VD4oXG4gIFJlc29sdmVyVHlwZTogbmV3IChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IFJlc29sdmVyPFQ+LFxuICBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIE9ic2VydmFibGU8YW55Pj4sXG4pOiBPYnNlcnZhYmxlPFJlc29sdmVyPFQ+PiB7XG4gIHJldHVybiBjb21iaW5lTGF0ZXN0KHBhcmFtcykucGlwZShcbiAgICBtYXAoKHBhcmFtcykgPT4gbmV3IFJlc29sdmVyVHlwZShwYXJhbXMpKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc29sdmVyPFQ+KFxuICBSZXNvbHZlclR5cGU6IG5ldyAocGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiBSZXNvbHZlcjxUPixcbiAgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuKTogUmVzb2x2ZXI8VD4ge1xuICByZXR1cm4gbmV3IFJlc29sdmVyVHlwZShwYXJhbXMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVQYXJhbSQoa2V5OiBzdHJpbmcsIHtcbiAgbWVyZ2UgPSB0cnVlLFxufToge1xuICBtZXJnZT86IGJvb2xlYW4sXG59ID0ge30pOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICByZXR1cm4gaW5qZWN0Um91dGVQYXJhbU1hcCQoe21lcmdlfSkucGlwZShcbiAgICBtYXAoKHBhcmFtcykgPT4gcGFyYW1zLmdldChrZXkpKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlUGFyYW0oa2V5OiBzdHJpbmcsIGluamVjdG9yPzogSW5qZWN0b3IpOiBTaWduYWw8c3RyaW5nPiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RSb3V0ZVBhcmFtJChrZXkpLCB7aW5qZWN0b3J9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlU2tpcCQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gIHJldHVybiBpbmplY3RSb3V0ZVBhcmFtJCgnc2tpcCcsIHttZXJnZTogZmFsc2V9KS5waXBlKFxuICAgIG1hcCgoc2tpcCkgPT4gc2tpcCA9PT0gJ3RydWUnKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVTa2lwKCk6IFNpZ25hbDxib29sZWFuPiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RSb3V0ZVNraXAkKCkpO1xufVxuIl19
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQG5nLWF0b21pYy9jb21tb24vc3JjL2xpYi91dGlscy9pbmplY3QvaW5qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBb0IsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUYsT0FBTyxFQUFjLGFBQWEsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyRyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNoQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQUVqQyxNQUFNLFVBQVUsa0JBQWtCLENBQUMsR0FBVztJQUM1QyxPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUN6QyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFDaEMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLGtCQUFrQixFQUFFLENBQ3JCLENBQUM7QUFDSixDQUFDO0FBRUQsa0JBQWtCO0FBQ2xCLE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUFXO0lBQzNDLE9BQU8sUUFBUSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVELE1B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LEtBQUssRUFBQyxDQUFDLENBQUMsSUFBSSxDQUNuRCxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUMsRUFDOUIsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNkLGtCQUFrQixFQUFFLENBQ3JCLENBQUE7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLGVBQWU7SUFDN0IsT0FBTyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0FBQ3RDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3RvciwgU2lnbmFsLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wXCI7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgTmF2aWdhdGlvbkVuZCwgUGFyYW1NYXAsIFBhcmFtcywgUm91dGVyIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgY29tYmluZUxhdGVzdCwgZmlsdGVyLCBtYXAsIG9mLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSBcIkBueC1kZGQvY29tbW9uL2RvbWFpbi9tb2RlbHNcIjtcbmltcG9ydCB7IGdldCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IHVuZmxhdHRlbiB9IGZyb20gJ2ZsYXQnO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVyUGFyYW0kKGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgcmV0dXJuIGluamVjdChBY3RpdmF0ZWRSb3V0ZSkucGFyYW1NYXAucGlwZShcbiAgICBtYXAoKHBhcmFtcykgPT4gcGFyYW1zLmdldChrZXkpKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuLyoqIEBkZXByZWNhdGVkICovXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVyUGFyYW0oa2V5OiBzdHJpbmcpOiBTaWduYWw8c3RyaW5nPiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RSb3V0ZXJQYXJhbSQoa2V5KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZVF1ZXJ5UGFyYW0kPFQgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmc+KGtleTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XG4gIHJldHVybiBpbmplY3QoQWN0aXZhdGVkUm91dGUpLnF1ZXJ5UGFyYW1NYXAucGlwZShcbiAgICBtYXAoKHBhcmFtcykgPT4gcGFyYW1zLmdldChrZXkpIGFzIFQpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVRdWVyeVBhcmFtKGtleTogc3RyaW5nKTogU2lnbmFsPHN0cmluZz4ge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0Um91dGVRdWVyeVBhcmFtJChrZXkpKTtcbn1cblxuLy8gZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlUGFyYW1NYXAkKCk6IE9ic2VydmFibGU8UGFyYW1NYXA+IHtcbi8vICAgcmV0dXJuIGluamVjdChBY3RpdmF0ZWRSb3V0ZSkucGFyYW1NYXAucGlwZShcbi8vICAgICBzaGFyZVJlcGxheSgxKSxcbi8vICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbi8vICAgKTtcbi8vIH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlUGFyYW1zJCh7XG4gIG1lcmdlID0gdHJ1ZSxcbiAgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpLFxufToge1xuICBtZXJnZT86IGJvb2xlYW4sXG4gIHJvdXRlPzogQWN0aXZhdGVkUm91dGUsXG59ID0ge30pOiBPYnNlcnZhYmxlPFBhcmFtcz4ge1xuICBjb25zdCBwYXJlbnRQYXJhbXMgPSAobWVyZ2UgJiYgcm91dGUucGFyZW50KSA/IGluamVjdFJvdXRlUGFyYW1zJCh7bWVyZ2UsIHJvdXRlOiByb3V0ZS5wYXJlbnR9KSA6IG9mKG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCkpO1xuICByZXR1cm4gY29tYmluZUxhdGVzdCh7XG4gICAgcGFyZW50UGFyYW1zLFxuICAgIHBhcmFtczogcm91dGUucGFyYW1zXG4gIH0pLnBpcGUoXG4gICAgbWFwKCh7cGFyZW50UGFyYW1zLCBwYXJhbXN9KSA9PiAoe1xuICAgICAgLi4ucGFyZW50UGFyYW1zLFxuICAgICAgLi4ucGFyYW1zLFxuICAgIH0pKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VW5mbGF0dGVuUm91dGVQYXJhbXMkKHtcbiAgbWVyZ2UgPSB0cnVlLFxuICByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSksXG59OiB7XG4gIG1lcmdlPzogYm9vbGVhbixcbiAgcm91dGU/OiBBY3RpdmF0ZWRSb3V0ZSxcbn0gPSB7fSkge1xuICByZXR1cm4gaW5qZWN0Um91dGVQYXJhbXMkKHttZXJnZSwgcm91dGV9KS5waXBlKFxuICAgIG1hcCgocGFyYW1zKSA9PiAodW5mbGF0dGVuKHBhcmFtcykgYXMgYW55KSksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RVbmZsYXR0ZW5Sb3V0ZVBhcmFtJDxUID0gYW55PihrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICByZXR1cm4gaW5qZWN0VW5mbGF0dGVuUm91dGVQYXJhbXMkKCkucGlwZShcbiAgICBtYXAoKHBhcmFtcykgPT4gcGFyYW1zW2tleV0pLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0VW5mbGF0dGVuUm91dGVQYXJhbTxUID0gYW55PihrZXk6IHN0cmluZyk6IFNpZ25hbDxUPiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RVbmZsYXR0ZW5Sb3V0ZVBhcmFtJChrZXkpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFVuZmxhdHRlblJvdXRlUGFyYW1zKHtcbiAgbWVyZ2UgPSB0cnVlLFxufToge1xuICBtZXJnZT86IGJvb2xlYW4sXG59ID0ge30pOiBTaWduYWw8YW55PiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RVbmZsYXR0ZW5Sb3V0ZVBhcmFtcyQoe21lcmdlfSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVQYXJhbU1hcCQoe1xuICBtZXJnZSA9IHRydWUsXG59OiB7XG4gIG1lcmdlPzogYm9vbGVhbixcbn0gPSB7fSkge1xuICByZXR1cm4gaW5qZWN0Um91dGVQYXJhbXMkKHttZXJnZX0pLnBpcGUoXG4gICAgbWFwKChwYXJhbXMpID0+IG5ldyBNYXAoT2JqZWN0LmVudHJpZXMocGFyYW1zKSkgYXMgbmV2ZXIgYXMgUGFyYW1NYXApLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVQYXJhbU1hcCh7XG4gIG1lcmdlID0gdHJ1ZSxcbn06IHtcbiAgbWVyZ2U/OiBib29sZWFuLFxufSA9IHt9KTogU2lnbmFsPFBhcmFtTWFwPiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RSb3V0ZVBhcmFtTWFwJCh7bWVyZ2V9KSk7XG59XG5cbi8vIGV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZVBhcmFtcyQoKTogT2JzZXJ2YWJsZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiB7XG4vLyAgIHJldHVybiBpbmplY3QoQWN0aXZhdGVkUm91dGUpLnBhcmFtTWFwLnBpcGUoXG4vLyAgICAgbWFwKChwYXJhbXMpID0+IHtcbi8vICAgICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuLy8gICAgICAgcGFyYW1zLmtleXMuZm9yRWFjaChrZXkgPT4gcmVzdWx0W2tleV0gPSBwYXJhbXMuZ2V0KGtleSkpO1xuLy8gICAgICAgcmV0dXJuIHJlc3VsdDtcbi8vICAgICB9KSxcbi8vICAgICBzaGFyZVJlcGxheSgxKSxcbi8vICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbi8vICAgKTtcbi8vIH1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlUGFyYW1zKHtcbiAgbWVyZ2UgPSB0cnVlLFxufToge1xuICBtZXJnZT86IGJvb2xlYW4sXG59ID0ge30pOiBTaWduYWw8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0Um91dGVQYXJhbXMkKHttZXJnZX0pKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlTmF2aWdhdGVkJCgpIHtcbiAgY29uc3Qgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIGNvbnN0IHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKTtcbiAgcmV0dXJuIHJvdXRlci5ldmVudHMucGlwZShcbiAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSxcbiAgICBtYXAoKCkgPT4gcm91dGUpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVOYXZpZ2F0ZWQoKSB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RSb3V0ZU5hdmlnYXRlZCQoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RQcmltYXJ5UGF0aHMkKCkge1xuICByZXR1cm4gaW5qZWN0Um91dGVOYXZpZ2F0ZWQkKCkucGlwZShcbiAgICBtYXAocm91dGUgPT4ge1xuICAgICAgY29uc3QgcGF0aHMgPSBbXTtcbiAgICAgIGxldCBjdXJyZW50ID0gcm91dGUucm9vdDtcbiAgICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICAgIHBhdGhzLnB1c2goY3VycmVudD8ucm91dGVDb25maWc/LnBhdGggPz8gbnVsbCk7XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LmZpcnN0Q2hpbGQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gcGF0aHMuZmlsdGVyKEJvb2xlYW4pO1xuICAgIH0pLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0UHJpbWFyeVBhdGhzKCkge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0UHJpbWFyeVBhdGhzJCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdENoaWxkUm91dGVQYXJhbSQoa2V5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICByZXR1cm4gaW5qZWN0Um91dGVOYXZpZ2F0ZWQkKCkucGlwZShcbiAgICBzd2l0Y2hNYXAoKHJvdXRlKSA9PiByb3V0ZT8uZmlyc3RDaGlsZCA/IHJvdXRlLmZpcnN0Q2hpbGQucGFyYW1NYXAgOiBvZihuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpKSksXG4gICAgbWFwKChwYXJhbXMpID0+IHBhcmFtcy5nZXQoa2V5KSksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RDaGlsZFJvdXRlUGFyYW0oa2V5OiBzdHJpbmcpOiBTaWduYWw8c3RyaW5nPiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RDaGlsZFJvdXRlUGFyYW0kKGtleSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Q2hpbGRSb3V0ZSQoKSB7XG4gIHJldHVybiBpbmplY3RSb3V0ZU5hdmlnYXRlZCQoKS5waXBlKFxuICAgIG1hcCgocm91dGUpID0+IHJvdXRlPy5maXJzdENoaWxkPy5maXJzdENoaWxkKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdENoaWxkUm91dGUoKTogU2lnbmFsPEFjdGl2YXRlZFJvdXRlPiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RDaGlsZFJvdXRlJCgpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdEhhc05leHQkKCkge1xuICBjb25zdCByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgY29uc3Qgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICByZXR1cm4gcm91dGVyLmV2ZW50cy5waXBlKFxuICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICBtYXAoKCkgPT4gISFyb3V0ZT8uZmlyc3RDaGlsZD8uZmlyc3RDaGlsZCksXG4gICAgc2hhcmVSZXBsYXkoMSksXG4gICAgdGFrZVVudGlsRGVzdHJveWVkKCksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RIYXNOZXh0KCkge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0SGFzTmV4dCQoKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZXJRdWVyeVBhcmFtJDxcbiAgVCBleHRlbmRzIHN0cmluZyA9IHN0cmluZ1xuPihrZXk6IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICByZXR1cm4gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKS5xdWVyeVBhcmFtTWFwLnBpcGUoXG4gICAgbWFwKChwYXJhbXMpID0+IHBhcmFtcy5nZXQoa2V5KSBhcyBUKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlclF1ZXJ5UGFyYW08VCBleHRlbmRzIHN0cmluZyA9IHN0cmluZz4oa2V5OiBzdHJpbmcpOiBTaWduYWw8VD4ge1xuICByZXR1cm4gdG9TaWduYWwoaW5qZWN0Um91dGVyUXVlcnlQYXJhbSQoa2V5KSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZURhdGEkPFQ+KHBhdGg6IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xuICByZXR1cm4gaW5qZWN0KEFjdGl2YXRlZFJvdXRlKS5kYXRhLnBpcGUobWFwKGRhdGEgPT4gZ2V0KGRhdGEsIHBhdGgpIGFzIFQpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJvdXRlRGF0YTxUPihrZXk6IHN0cmluZyk6IFNpZ25hbDxUPiB7XG4gIHJldHVybiB0b1NpZ25hbChpbmplY3RSb3V0ZURhdGEkKGtleSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0QWN0aXZhdGVkQ29tcG9uZW50cyhpbmplY3RvcjogSW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpKTogYW55W10ge1xuICBjb25zdCBjb21wb25lbnRzID0gW107XG4gIGxldCByb3V0ZSA9IGluamVjdG9yLmdldChBY3RpdmF0ZWRSb3V0ZSwge29wdGlvbmFsOiB0cnVlfSkgPz8gbnVsbDtcbiAgd2hpbGUocm91dGUpIHtcbiAgICBpZiAocm91dGUuY29tcG9uZW50KSBjb21wb25lbnRzLnB1c2gocm91dGUuY29tcG9uZW50KTtcbiAgICByb3V0ZSA9IHJvdXRlLnBhcmVudDtcbiAgfVxuICByZXR1cm4gY29tcG9uZW50cztcbn1cblxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZXI8VD4ge1xuICByZXNvbHZlKGVudHJ5OiBUKTogVDtcbiAgcmVzb2x2ZU1hbnkoZW50aXRpZXM6IFRbXSk6IFRbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVSZXNvbHZlcihcbiAgRW50aXR5OiBUeXBlPHtpZDogc3RyaW5nfT4sXG4gIFJlc29sdmVyVHlwZTogbmV3IChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIE9ic2VydmFibGU8YW55Pj4pID0+IFJlc29sdmVyPGFueT4sXG4pIHtcbiAgcmV0dXJuIHtcbiAgICBwcm92aWRlOiBFbnRpdHksXG4gICAgLy8gdXNlRmFjdG9yeTogKCkgPT4gbmV3IFJlc29sdmVyVHlwZShwYXJhbXMpLFxuICAgIGRlcHM6IFtdLFxuICAgIG11bHRpOiB0cnVlLFxuICB9O1xufVxuXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBSZXNvbHZlck1hbmFnZXIge1xuICBwcm90ZWN0ZWQgbWFwID0gbmV3IE1hcDxzdHJpbmcsIFJlc29sdmVyPGFueT4+KCk7XG5cbiAgZ2V0KEVudGl0eTogVHlwZTx7aWQ6IHN0cmluZ30+KSB7XG4gICAgaWYgKCF0aGlzLm1hcC5oYXMoRW50aXR5Lm5hbWUpKSB7XG4gICAgICAvLyByZXR1cm4gdGhpcy5tYXAuc2V0KClcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubWFwLmdldChFbnRpdHkubmFtZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGluamVjdFJlc29sdmVyJDxUPihcbiAgUmVzb2x2ZXJUeXBlOiBuZXcgKHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PikgPT4gUmVzb2x2ZXI8VD4sXG4gIHBhcmFtczogUmVjb3JkPHN0cmluZywgT2JzZXJ2YWJsZTxhbnk+Pixcbik6IE9ic2VydmFibGU8UmVzb2x2ZXI8VD4+IHtcbiAgcmV0dXJuIGNvbWJpbmVMYXRlc3QocGFyYW1zKS5waXBlKFxuICAgIG1hcCgocGFyYW1zKSA9PiBuZXcgUmVzb2x2ZXJUeXBlKHBhcmFtcykpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb2x2ZXI8VD4oXG4gIFJlc29sdmVyVHlwZTogbmV3IChwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4pID0+IFJlc29sdmVyPFQ+LFxuICBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4pOiBSZXNvbHZlcjxUPiB7XG4gIHJldHVybiBuZXcgUmVzb2x2ZXJUeXBlKHBhcmFtcyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZVBhcmFtJChrZXk6IHN0cmluZywge1xuICBtZXJnZSA9IHRydWUsXG59OiB7XG4gIG1lcmdlPzogYm9vbGVhbixcbn0gPSB7fSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gIHJldHVybiBpbmplY3RSb3V0ZVBhcmFtTWFwJCh7bWVyZ2V9KS5waXBlKFxuICAgIG1hcCgocGFyYW1zKSA9PiBwYXJhbXMuZ2V0KGtleSkpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVQYXJhbShrZXk6IHN0cmluZywgaW5qZWN0b3I/OiBJbmplY3Rvcik6IFNpZ25hbDxzdHJpbmc+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdFJvdXRlUGFyYW0kKGtleSksIHtpbmplY3Rvcn0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5qZWN0Um91dGVTa2lwJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgcmV0dXJuIGluamVjdFJvdXRlUGFyYW0kKCdza2lwJywge21lcmdlOiBmYWxzZX0pLnBpcGUoXG4gICAgbWFwKChza2lwKSA9PiBza2lwID09PSAndHJ1ZScpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICApXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbmplY3RSb3V0ZVNraXAoKTogU2lnbmFsPGJvb2xlYW4+IHtcbiAgcmV0dXJuIHRvU2lnbmFsKGluamVjdFJvdXRlU2tpcCQoKSk7XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"ng-atomic-common-directives-fallback-src.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/directives/fallback-src/fallback-src.directive.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/fallback-src/ng-atomic-common-directives-fallback-src.ts"],"sourcesContent":["import { Directive, ElementRef, HostListener, inject, signal } from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[fallbackSrc]',\n})\nexport class FallbackSrcDirective {\n readonly fallbackSrc = signal('data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==');\n protected el = inject(ElementRef<HTMLImageElement>)\n\n @HostListener('error')\n onError() {\n const element: HTMLImageElement = this.el.nativeElement;\n element.src = this.fallbackSrc();\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAMa,oBAAoB,CAAA;AAJjC,IAAA,WAAA,GAAA;AAKW,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,4EAA4E,CAAC,CAAC;AAClG,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,EAAC,UAA4B,EAAC,CAAA;AAOpD,KAAA;IAJC,OAAO,GAAA;AACL,QAAA,MAAM,OAAO,GAAqB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;AACxD,QAAA,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;KAClC;8GARU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,eAAe;AAC1B,iBAAA,CAAA;8BAMC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,CAAA;;;ACVvB;;AAEG;;;;"}
1
+ {"version":3,"file":"ng-atomic-common-directives-fallback-src.mjs","sources":["../../../../../packages/@ng-atomic/common/src/lib/directives/fallback-src/fallback-src.directive.ts","../../../../../packages/@ng-atomic/common/src/lib/directives/fallback-src/ng-atomic-common-directives-fallback-src.ts"],"sourcesContent":["import { Directive, ElementRef, HostListener, inject, signal } from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[fallbackSrc]',\n})\nexport class FallbackSrcDirective {\n readonly fallbackSrc = signal('data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==');\n protected el = inject(ElementRef<HTMLImageElement>)\n\n @HostListener('error')\n onError() {\n const element: HTMLImageElement = this.el.nativeElement;\n element.src = this.fallbackSrc();\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;MAMa,oBAAoB,CAAA;AAJjC,IAAA,WAAA,GAAA;AAKW,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,4EAA4E,CAAC;AACjG,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,EAAC,UAA4B,EAAC;AAOpD;IAJC,OAAO,GAAA;AACL,QAAA,MAAM,OAAO,GAAqB,IAAI,CAAC,EAAE,CAAC,aAAa;AACvD,QAAA,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE;;8GAPvB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,eAAe;AAC1B,iBAAA;8BAMC,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO;;;ACVvB;;AAEG;;;;"}