bways-report 0.1.2 → 0.1.4

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 (107) hide show
  1. package/README.md +150 -51
  2. package/esm2022/lib/core/errors/reporting-errors.mjs +2 -2
  3. package/esm2022/lib/core/index.mjs +3 -1
  4. package/esm2022/lib/core/models/report-datasource.model.mjs +1 -1
  5. package/esm2022/lib/core/models/report-definition.model.mjs +1 -1
  6. package/esm2022/lib/core/models/report-grid.model.mjs +1 -1
  7. package/esm2022/lib/core/services/report-session-context.service.mjs +50 -5
  8. package/esm2022/lib/core/utils/data-normalization.util.mjs +56 -0
  9. package/esm2022/lib/core/utils/report-parameter.util.mjs +180 -0
  10. package/esm2022/lib/data-access/adapters/http-datasource.adapter.mjs +82 -0
  11. package/esm2022/lib/data-access/adapters/http-lookup.adapter.mjs +34 -9
  12. package/esm2022/lib/data-access/adapters/http-masterdata.adapter.mjs +38 -0
  13. package/esm2022/lib/data-access/adapters/http-persistence.adapter.mjs +217 -0
  14. package/esm2022/lib/data-access/adapters/http-schema-discovery.adapter.mjs +3 -1
  15. package/esm2022/lib/data-access/adapters/index.mjs +8 -3
  16. package/esm2022/lib/data-access/adapters/local-storage-persistence.adapter.mjs +167 -0
  17. package/esm2022/lib/data-access/adapters/mock-datasource.adapter.mjs +60 -0
  18. package/esm2022/lib/data-access/contracts/api-dtos.mjs +6 -0
  19. package/esm2022/lib/data-access/contracts/index.mjs +2 -1
  20. package/esm2022/lib/features/designer/components/component-palette/component-palette.component.mjs +24 -3
  21. package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +572 -102
  22. package/esm2022/lib/features/designer/components/property-editor/property-editor-action.component.mjs +593 -0
  23. package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +225 -25
  24. package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +568 -12
  25. package/esm2022/lib/features/designer/components/property-editor/property-editor.component.mjs +238 -11
  26. package/esm2022/lib/features/designer/components/toolbar/designer-toolbar.component.mjs +191 -25
  27. package/esm2022/lib/features/designer/designer.component.mjs +245 -27
  28. package/esm2022/lib/features/designer/index.mjs +4 -1
  29. package/esm2022/lib/features/designer/rpt-report-designer.component.mjs +102 -0
  30. package/esm2022/lib/features/designer/services/designer-state.service.mjs +18 -10
  31. package/esm2022/lib/features/designer/services/report-template.service.mjs +318 -0
  32. package/esm2022/lib/features/designer/utilities/canvas-layout.util.mjs +41 -9
  33. package/esm2022/lib/features/export/index.mjs +2 -2
  34. package/esm2022/lib/features/export/models/export.models.mjs +1 -1
  35. package/esm2022/lib/features/export/services/report-export.service.mjs +420 -5
  36. package/esm2022/lib/features/routing/components/routed-report-runtime.component.mjs +2 -2
  37. package/esm2022/lib/features/runtime/dynamic-renderer.component.mjs +239 -33
  38. package/esm2022/lib/features/runtime/index.mjs +2 -1
  39. package/esm2022/lib/features/runtime/report-execution.service.mjs +56 -0
  40. package/esm2022/lib/features/runtime/report-grid-bridge.component.mjs +423 -30
  41. package/esm2022/lib/features/runtime/report-runtime.component.mjs +349 -7
  42. package/esm2022/lib/features/runtime/rpt-report.component.mjs +545 -0
  43. package/esm2022/lib/primitives/components/button/rpt-button.component.mjs +19 -8
  44. package/esm2022/lib/primitives/components/chart-bridge/report-chart-bridge.component.mjs +18 -7
  45. package/esm2022/lib/primitives/components/checkbox/rpt-checkbox.component.mjs +3 -3
  46. package/esm2022/lib/primitives/components/date/rpt-date.component.mjs +3 -3
  47. package/esm2022/lib/primitives/components/date-range/rpt-date-range.component.mjs +346 -0
  48. package/esm2022/lib/primitives/components/dropdown/rpt-dropdown.component.mjs +728 -74
  49. package/esm2022/lib/primitives/components/icon/rpt-icon.component.mjs +30 -1
  50. package/esm2022/lib/primitives/components/index.mjs +2 -1
  51. package/esm2022/lib/primitives/components/input/rpt-input.component.mjs +3 -3
  52. package/esm2022/lib/primitives/components/kpi-card/rpt-kpi-card.component.mjs +3 -3
  53. package/esm2022/lib/primitives/components/number/rpt-number.component.mjs +3 -3
  54. package/esm2022/lib/primitives/register-builtins.mjs +51 -2
  55. package/esm2022/lib/provide-reporting.mjs +145 -24
  56. package/fesm2022/bways-report.mjs +7797 -921
  57. package/fesm2022/bways-report.mjs.map +1 -1
  58. package/lib/core/index.d.ts +2 -0
  59. package/lib/core/models/report-datasource.model.d.ts +9 -0
  60. package/lib/core/models/report-definition.model.d.ts +2 -0
  61. package/lib/core/models/report-grid.model.d.ts +67 -1
  62. package/lib/core/services/report-session-context.service.d.ts +6 -1
  63. package/lib/core/utils/data-normalization.util.d.ts +15 -0
  64. package/lib/core/utils/report-parameter.util.d.ts +35 -0
  65. package/lib/data-access/adapters/http-datasource.adapter.d.ts +20 -0
  66. package/lib/data-access/adapters/http-lookup.adapter.d.ts +3 -0
  67. package/lib/data-access/adapters/http-masterdata.adapter.d.ts +13 -0
  68. package/lib/data-access/adapters/http-persistence.adapter.d.ts +27 -0
  69. package/lib/data-access/adapters/http-schema-discovery.adapter.d.ts +2 -0
  70. package/lib/data-access/adapters/index.d.ts +7 -2
  71. package/lib/data-access/adapters/local-storage-persistence.adapter.d.ts +19 -0
  72. package/lib/data-access/adapters/mock-datasource.adapter.d.ts +9 -0
  73. package/lib/data-access/contracts/api-dtos.d.ts +67 -0
  74. package/lib/data-access/contracts/index.d.ts +1 -0
  75. package/lib/features/designer/components/component-palette/component-palette.component.d.ts +2 -1
  76. package/lib/features/designer/components/design-canvas/design-canvas.component.d.ts +22 -0
  77. package/lib/features/designer/components/property-editor/parameter-binding-editor.component.d.ts +1 -1
  78. package/lib/features/designer/components/property-editor/property-editor-action.component.d.ts +33 -0
  79. package/lib/features/designer/components/property-editor/property-editor-datasource.component.d.ts +13 -0
  80. package/lib/features/designer/components/property-editor/property-editor-grid.component.d.ts +16 -2
  81. package/lib/features/designer/components/property-editor/property-editor.component.d.ts +9 -1
  82. package/lib/features/designer/components/toolbar/designer-toolbar.component.d.ts +12 -1
  83. package/lib/features/designer/designer.component.d.ts +11 -0
  84. package/lib/features/designer/index.d.ts +4 -0
  85. package/lib/features/designer/rpt-report-designer.component.d.ts +38 -0
  86. package/lib/features/designer/services/designer-state.service.d.ts +1 -1
  87. package/lib/features/designer/services/report-template.service.d.ts +32 -0
  88. package/lib/features/designer/utilities/canvas-layout.util.d.ts +4 -0
  89. package/lib/features/export/index.d.ts +2 -2
  90. package/lib/features/export/models/export.models.d.ts +23 -0
  91. package/lib/features/export/services/report-export.service.d.ts +31 -2
  92. package/lib/features/runtime/dynamic-renderer.component.d.ts +42 -2
  93. package/lib/features/runtime/index.d.ts +2 -0
  94. package/lib/features/runtime/report-execution.service.d.ts +16 -0
  95. package/lib/features/runtime/report-grid-bridge.component.d.ts +171 -6
  96. package/lib/features/runtime/report-runtime.component.d.ts +86 -1
  97. package/lib/features/runtime/rpt-report.component.d.ts +69 -0
  98. package/lib/primitives/components/button/rpt-button.component.d.ts +5 -2
  99. package/lib/primitives/components/chart-bridge/report-chart-bridge.component.d.ts +1 -0
  100. package/lib/primitives/components/date-range/rpt-date-range.component.d.ts +43 -0
  101. package/lib/primitives/components/dropdown/rpt-dropdown.component.d.ts +55 -7
  102. package/lib/primitives/components/index.d.ts +2 -0
  103. package/lib/provide-reporting.d.ts +79 -26
  104. package/package.json +2 -1
  105. package/schematics/collection.json +10 -0
  106. package/schematics/ng-add/index.js +45 -0
  107. package/schematics/ng-add/schema.json +17 -0
@@ -0,0 +1,318 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { generateId } from '../../../core/utilities/id-generator';
3
+ import * as i0 from "@angular/core";
4
+ const BUILTIN_BLUEPRINTS = [
5
+ {
6
+ id: 'blueprint-audit-register',
7
+ name: 'Standard Audit Register',
8
+ category: 'Registers & Logs',
9
+ description: 'Transaction and change audit log with relative date range filter, branch dropdown, and tabular data grid.',
10
+ icon: 'table',
11
+ tags: ['audit', 'register', 'transactions', 'date-range'],
12
+ definition: {
13
+ name: 'Standard Audit Register',
14
+ description: 'Audit log with relative date range filtering and tabular register.',
15
+ schemaVersion: 1,
16
+ version: 1,
17
+ parameters: [],
18
+ layout: {
19
+ columns: 12,
20
+ gap: 16,
21
+ padding: 24,
22
+ },
23
+ dataSources: [
24
+ {
25
+ id: 'ds-audit-log',
26
+ name: 'Audit Log Data',
27
+ endpoint: '/api/audit-log',
28
+ method: 'GET',
29
+ },
30
+ ],
31
+ components: [
32
+ {
33
+ id: 'comp-date-range',
34
+ type: 'date-range',
35
+ key: 'dateRange',
36
+ label: 'Audit Period',
37
+ order: 1,
38
+ layout: { columnSpan: 4 },
39
+ properties: {
40
+ defaultPreset: 'This Month',
41
+ },
42
+ },
43
+ {
44
+ id: 'comp-branch',
45
+ type: 'dropdown',
46
+ key: 'branch',
47
+ label: 'Branch Location',
48
+ order: 2,
49
+ layout: { columnSpan: 3 },
50
+ properties: {
51
+ placeholder: 'All Branches',
52
+ options: [
53
+ { label: 'All Branches', value: '' },
54
+ { label: 'Headquarters (HQ)', value: 'HQ' },
55
+ { label: 'APAC Regional Hub', value: 'APAC' },
56
+ { label: 'EMEA Office', value: 'EMEA' },
57
+ ],
58
+ },
59
+ },
60
+ {
61
+ id: 'comp-btn-run',
62
+ type: 'button',
63
+ label: 'Run Report',
64
+ order: 3,
65
+ layout: { columnSpan: 2 },
66
+ properties: {
67
+ action: 'execute-report',
68
+ variant: 'primary',
69
+ },
70
+ },
71
+ {
72
+ id: 'comp-btn-reset',
73
+ type: 'button',
74
+ label: 'Reset Filters',
75
+ order: 4,
76
+ layout: { columnSpan: 2 },
77
+ properties: {
78
+ action: 'reset',
79
+ variant: 'secondary',
80
+ },
81
+ },
82
+ ],
83
+ grid: {
84
+ dataSourceId: 'ds-audit-log',
85
+ columns: [
86
+ { field: 'timestamp', label: 'Timestamp', dataType: 'date', format: 'dd/MM/yyyy HH:mm' },
87
+ { field: 'userName', label: 'User', dataType: 'string' },
88
+ { field: 'actionType', label: 'Action', dataType: 'string' },
89
+ { field: 'recordRef', label: 'Reference #', dataType: 'string' },
90
+ { field: 'status', label: 'Status', dataType: 'string' },
91
+ ],
92
+ options: {
93
+ pagination: true,
94
+ pageSize: 20,
95
+ showRowNumbers: true,
96
+ allowExport: true,
97
+ },
98
+ },
99
+ },
100
+ },
101
+ {
102
+ id: 'blueprint-master-detail',
103
+ name: 'Master-Detail Account Statement',
104
+ category: 'Financial & Ledger',
105
+ description: 'Account selector with statement date range and drill-down transaction drawer.',
106
+ icon: 'file-text',
107
+ tags: ['finance', 'ledger', 'statement', 'drill-down'],
108
+ definition: {
109
+ name: 'Account Statement',
110
+ description: 'Account statement with slide-over line item drill-down.',
111
+ schemaVersion: 1,
112
+ version: 1,
113
+ parameters: [],
114
+ layout: {
115
+ columns: 12,
116
+ gap: 16,
117
+ padding: 24,
118
+ },
119
+ dataSources: [
120
+ {
121
+ id: 'ds-account-statement',
122
+ name: 'Account Statement Data',
123
+ endpoint: '/api/statements',
124
+ method: 'GET',
125
+ },
126
+ ],
127
+ components: [
128
+ {
129
+ id: 'comp-account-code',
130
+ type: 'dropdown',
131
+ key: 'accountCode',
132
+ label: 'Account / Customer',
133
+ order: 1,
134
+ layout: { columnSpan: 4 },
135
+ properties: {
136
+ placeholder: 'Search customer account...',
137
+ },
138
+ },
139
+ {
140
+ id: 'comp-statement-period',
141
+ type: 'date-range',
142
+ key: 'period',
143
+ label: 'Statement Period',
144
+ order: 2,
145
+ layout: { columnSpan: 5 },
146
+ properties: {
147
+ defaultPreset: 'This Month',
148
+ },
149
+ },
150
+ {
151
+ id: 'comp-btn-generate',
152
+ type: 'button',
153
+ label: 'Generate Statement',
154
+ order: 3,
155
+ layout: { columnSpan: 3 },
156
+ properties: {
157
+ action: 'execute-report',
158
+ variant: 'primary',
159
+ },
160
+ },
161
+ ],
162
+ grid: {
163
+ dataSourceId: 'ds-account-statement',
164
+ columns: [
165
+ { field: 'transDate', label: 'Date', dataType: 'date', format: 'dd/MM/yyyy' },
166
+ { field: 'documentNo', label: 'Document #', dataType: 'string' },
167
+ { field: 'description', label: 'Description', dataType: 'string' },
168
+ { field: 'debit', label: 'Debit', dataType: 'currency', align: 'right', aggregate: 'sum' },
169
+ { field: 'credit', label: 'Credit', dataType: 'currency', align: 'right', aggregate: 'sum' },
170
+ { field: 'balance', label: 'Balance', dataType: 'currency', align: 'right' },
171
+ ],
172
+ options: {
173
+ pagination: true,
174
+ pageSize: 25,
175
+ showFooter: true,
176
+ allowExport: true,
177
+ },
178
+ rowClickAction: {
179
+ type: 'open-drawer',
180
+ targetReportId: 'document-details-subreport',
181
+ drawerTitle: 'Transaction Details',
182
+ drawerWidth: '780px',
183
+ parameterMapping: {
184
+ docNo: 'row.documentNo',
185
+ account: 'form.accountCode',
186
+ },
187
+ },
188
+ },
189
+ },
190
+ },
191
+ {
192
+ id: 'blueprint-kpi-summary',
193
+ name: 'Executive Performance Summary',
194
+ category: 'Analytics & Executive',
195
+ description: 'High-level KPI register with date filter controls and exportable breakdown.',
196
+ icon: 'bar-chart-2',
197
+ tags: ['executive', 'kpi', 'performance', 'metrics'],
198
+ definition: {
199
+ name: 'Executive Performance Summary',
200
+ description: 'Departmental performance summary metrics.',
201
+ schemaVersion: 1,
202
+ version: 1,
203
+ parameters: [],
204
+ layout: {
205
+ columns: 12,
206
+ gap: 16,
207
+ padding: 24,
208
+ },
209
+ dataSources: [
210
+ {
211
+ id: 'ds-kpi-metrics',
212
+ name: 'Performance Metrics',
213
+ endpoint: '/api/metrics',
214
+ method: 'GET',
215
+ },
216
+ ],
217
+ components: [
218
+ {
219
+ id: 'comp-kpi-period',
220
+ type: 'date-range',
221
+ key: 'reportingPeriod',
222
+ label: 'Reporting Period',
223
+ order: 1,
224
+ layout: { columnSpan: 6 },
225
+ properties: {
226
+ defaultPreset: 'This Quarter',
227
+ },
228
+ },
229
+ {
230
+ id: 'comp-btn-refresh',
231
+ type: 'button',
232
+ label: 'Refresh Analytics',
233
+ order: 2,
234
+ layout: { columnSpan: 3 },
235
+ properties: {
236
+ action: 'execute-report',
237
+ variant: 'primary',
238
+ },
239
+ },
240
+ ],
241
+ grid: {
242
+ dataSourceId: 'ds-kpi-metrics',
243
+ columns: [
244
+ { field: 'department', label: 'Department / Unit', dataType: 'string' },
245
+ { field: 'targetRevenue', label: 'Target ($)', dataType: 'currency', align: 'right', aggregate: 'sum' },
246
+ { field: 'actualRevenue', label: 'Actual ($)', dataType: 'currency', align: 'right', aggregate: 'sum' },
247
+ { field: 'variance', label: 'Variance ($)', dataType: 'currency', align: 'right' },
248
+ { field: 'achievementPct', label: 'Achievement %', dataType: 'string', align: 'right' },
249
+ ],
250
+ options: {
251
+ pagination: true,
252
+ pageSize: 15,
253
+ showFooter: true,
254
+ allowExport: true,
255
+ },
256
+ },
257
+ },
258
+ },
259
+ ];
260
+ export class ReportTemplateService {
261
+ customBlueprints = [];
262
+ /**
263
+ * Returns all available report blueprints (built-in + user registered).
264
+ */
265
+ getTemplates() {
266
+ return [...BUILTIN_BLUEPRINTS, ...this.customBlueprints];
267
+ }
268
+ /**
269
+ * Retrieves a blueprint by its unique identifier.
270
+ */
271
+ getTemplateById(id) {
272
+ return this.getTemplates().find((t) => t.id === id);
273
+ }
274
+ /**
275
+ * Instantiates a new ReportDefinition from a template with unique IDs.
276
+ */
277
+ instantiateTemplate(templateId, customName) {
278
+ const blueprint = this.getTemplateById(templateId);
279
+ if (!blueprint) {
280
+ throw new Error(`Report blueprint "${templateId}" not found.`);
281
+ }
282
+ const reportId = generateId('rep');
283
+ const def = blueprint.definition;
284
+ return {
285
+ id: reportId,
286
+ name: customName || def.name,
287
+ description: def.description,
288
+ schemaVersion: def.schemaVersion ?? 1,
289
+ version: 1,
290
+ parameters: def.parameters ? JSON.parse(JSON.stringify(def.parameters)) : [],
291
+ layout: JSON.parse(JSON.stringify(def.layout)),
292
+ dataSources: JSON.parse(JSON.stringify(def.dataSources)),
293
+ components: JSON.parse(JSON.stringify(def.components)),
294
+ grid: def.grid ? JSON.parse(JSON.stringify(def.grid)) : undefined,
295
+ };
296
+ }
297
+ /**
298
+ * Registers a custom blueprint to make it available in the gallery.
299
+ */
300
+ registerTemplate(blueprint) {
301
+ const existingIdx = this.customBlueprints.findIndex((b) => b.id === blueprint.id);
302
+ if (existingIdx >= 0) {
303
+ this.customBlueprints[existingIdx] = blueprint;
304
+ }
305
+ else {
306
+ this.customBlueprints.push(blueprint);
307
+ }
308
+ }
309
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportTemplateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
310
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportTemplateService, providedIn: 'root' });
311
+ }
312
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportTemplateService, decorators: [{
313
+ type: Injectable,
314
+ args: [{
315
+ providedIn: 'root',
316
+ }]
317
+ }] });
318
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXRlbXBsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9mZWF0dXJlcy9kZXNpZ25lci9zZXJ2aWNlcy9yZXBvcnQtdGVtcGxhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7QUFZbEUsTUFBTSxrQkFBa0IsR0FBc0I7SUFDNUM7UUFDRSxFQUFFLEVBQUUsMEJBQTBCO1FBQzlCLElBQUksRUFBRSx5QkFBeUI7UUFDL0IsUUFBUSxFQUFFLGtCQUFrQjtRQUM1QixXQUFXLEVBQUUsMkdBQTJHO1FBQ3hILElBQUksRUFBRSxPQUFPO1FBQ2IsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsWUFBWSxDQUFDO1FBQ3pELFVBQVUsRUFBRTtZQUNWLElBQUksRUFBRSx5QkFBeUI7WUFDL0IsV0FBVyxFQUFFLG9FQUFvRTtZQUNqRixhQUFhLEVBQUUsQ0FBQztZQUNoQixPQUFPLEVBQUUsQ0FBQztZQUNWLFVBQVUsRUFBRSxFQUFFO1lBQ2QsTUFBTSxFQUFFO2dCQUNOLE9BQU8sRUFBRSxFQUFFO2dCQUNYLEdBQUcsRUFBRSxFQUFFO2dCQUNQLE9BQU8sRUFBRSxFQUFFO2FBQ1o7WUFDRCxXQUFXLEVBQUU7Z0JBQ1g7b0JBQ0UsRUFBRSxFQUFFLGNBQWM7b0JBQ2xCLElBQUksRUFBRSxnQkFBZ0I7b0JBQ3RCLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLE1BQU0sRUFBRSxLQUFLO2lCQUNkO2FBQ0Y7WUFDRCxVQUFVLEVBQUU7Z0JBQ1Y7b0JBQ0UsRUFBRSxFQUFFLGlCQUFpQjtvQkFDckIsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLEdBQUcsRUFBRSxXQUFXO29CQUNoQixLQUFLLEVBQUUsY0FBYztvQkFDckIsS0FBSyxFQUFFLENBQUM7b0JBQ1IsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRTtvQkFDekIsVUFBVSxFQUFFO3dCQUNWLGFBQWEsRUFBRSxZQUFZO3FCQUM1QjtpQkFDRjtnQkFDRDtvQkFDRSxFQUFFLEVBQUUsYUFBYTtvQkFDakIsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLEdBQUcsRUFBRSxRQUFRO29CQUNiLEtBQUssRUFBRSxpQkFBaUI7b0JBQ3hCLEtBQUssRUFBRSxDQUFDO29CQUNSLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUU7b0JBQ3pCLFVBQVUsRUFBRTt3QkFDVixXQUFXLEVBQUUsY0FBYzt3QkFDM0IsT0FBTyxFQUFFOzRCQUNQLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFOzRCQUNwQyxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFOzRCQUMzQyxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFOzRCQUM3QyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTt5QkFDeEM7cUJBQ0Y7aUJBQ0Y7Z0JBQ0Q7b0JBQ0UsRUFBRSxFQUFFLGNBQWM7b0JBQ2xCLElBQUksRUFBRSxRQUFRO29CQUNkLEtBQUssRUFBRSxZQUFZO29CQUNuQixLQUFLLEVBQUUsQ0FBQztvQkFDUixNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFO29CQUN6QixVQUFVLEVBQUU7d0JBQ1YsTUFBTSxFQUFFLGdCQUFnQjt3QkFDeEIsT0FBTyxFQUFFLFNBQVM7cUJBQ25CO2lCQUNGO2dCQUNEO29CQUNFLEVBQUUsRUFBRSxnQkFBZ0I7b0JBQ3BCLElBQUksRUFBRSxRQUFRO29CQUNkLEtBQUssRUFBRSxlQUFlO29CQUN0QixLQUFLLEVBQUUsQ0FBQztvQkFDUixNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFO29CQUN6QixVQUFVLEVBQUU7d0JBQ1YsTUFBTSxFQUFFLE9BQU87d0JBQ2YsT0FBTyxFQUFFLFdBQVc7cUJBQ3JCO2lCQUNGO2FBQ0Y7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osWUFBWSxFQUFFLGNBQWM7Z0JBQzVCLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxrQkFBa0IsRUFBRTtvQkFDeEYsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRTtvQkFDeEQsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRTtvQkFDNUQsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRTtvQkFDaEUsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRTtpQkFDekQ7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsRUFBRTtvQkFDWixjQUFjLEVBQUUsSUFBSTtvQkFDcEIsV0FBVyxFQUFFLElBQUk7aUJBQ2xCO2FBQ0Y7U0FDRjtLQUNGO0lBQ0Q7UUFDRSxFQUFFLEVBQUUseUJBQXlCO1FBQzdCLElBQUksRUFBRSxpQ0FBaUM7UUFDdkMsUUFBUSxFQUFFLG9CQUFvQjtRQUM5QixXQUFXLEVBQUUsK0VBQStFO1FBQzVGLElBQUksRUFBRSxXQUFXO1FBQ2pCLElBQUksRUFBRSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQztRQUN0RCxVQUFVLEVBQUU7WUFDVixJQUFJLEVBQUUsbUJBQW1CO1lBQ3pCLFdBQVcsRUFBRSx5REFBeUQ7WUFDdEUsYUFBYSxFQUFFLENBQUM7WUFDaEIsT0FBTyxFQUFFLENBQUM7WUFDVixVQUFVLEVBQUUsRUFBRTtZQUNkLE1BQU0sRUFBRTtnQkFDTixPQUFPLEVBQUUsRUFBRTtnQkFDWCxHQUFHLEVBQUUsRUFBRTtnQkFDUCxPQUFPLEVBQUUsRUFBRTthQUNaO1lBQ0QsV0FBVyxFQUFFO2dCQUNYO29CQUNFLEVBQUUsRUFBRSxzQkFBc0I7b0JBQzFCLElBQUksRUFBRSx3QkFBd0I7b0JBQzlCLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLE1BQU0sRUFBRSxLQUFLO2lCQUNkO2FBQ0Y7WUFDRCxVQUFVLEVBQUU7Z0JBQ1Y7b0JBQ0UsRUFBRSxFQUFFLG1CQUFtQjtvQkFDdkIsSUFBSSxFQUFFLFVBQVU7b0JBQ2hCLEdBQUcsRUFBRSxhQUFhO29CQUNsQixLQUFLLEVBQUUsb0JBQW9CO29CQUMzQixLQUFLLEVBQUUsQ0FBQztvQkFDUixNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFO29CQUN6QixVQUFVLEVBQUU7d0JBQ1YsV0FBVyxFQUFFLDRCQUE0QjtxQkFDMUM7aUJBQ0Y7Z0JBQ0Q7b0JBQ0UsRUFBRSxFQUFFLHVCQUF1QjtvQkFDM0IsSUFBSSxFQUFFLFlBQVk7b0JBQ2xCLEdBQUcsRUFBRSxRQUFRO29CQUNiLEtBQUssRUFBRSxrQkFBa0I7b0JBQ3pCLEtBQUssRUFBRSxDQUFDO29CQUNSLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUU7b0JBQ3pCLFVBQVUsRUFBRTt3QkFDVixhQUFhLEVBQUUsWUFBWTtxQkFDNUI7aUJBQ0Y7Z0JBQ0Q7b0JBQ0UsRUFBRSxFQUFFLG1CQUFtQjtvQkFDdkIsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsS0FBSyxFQUFFLG9CQUFvQjtvQkFDM0IsS0FBSyxFQUFFLENBQUM7b0JBQ1IsTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRTtvQkFDekIsVUFBVSxFQUFFO3dCQUNWLE1BQU0sRUFBRSxnQkFBZ0I7d0JBQ3hCLE9BQU8sRUFBRSxTQUFTO3FCQUNuQjtpQkFDRjthQUNGO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLFlBQVksRUFBRSxzQkFBc0I7Z0JBQ3BDLE9BQU8sRUFBRTtvQkFDUCxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUU7b0JBQzdFLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUU7b0JBQ2hFLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUU7b0JBQ2xFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFO29CQUMxRixFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRTtvQkFDNUYsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO2lCQUM3RTtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxFQUFFO29CQUNaLFVBQVUsRUFBRSxJQUFJO29CQUNoQixXQUFXLEVBQUUsSUFBSTtpQkFDbEI7Z0JBQ0QsY0FBYyxFQUFFO29CQUNkLElBQUksRUFBRSxhQUFhO29CQUNuQixjQUFjLEVBQUUsNEJBQTRCO29CQUM1QyxXQUFXLEVBQUUscUJBQXFCO29CQUNsQyxXQUFXLEVBQUUsT0FBTztvQkFDcEIsZ0JBQWdCLEVBQUU7d0JBQ2hCLEtBQUssRUFBRSxnQkFBZ0I7d0JBQ3ZCLE9BQU8sRUFBRSxrQkFBa0I7cUJBQzVCO2lCQUNGO2FBQ0Y7U0FDRjtLQUNGO0lBQ0Q7UUFDRSxFQUFFLEVBQUUsdUJBQXVCO1FBQzNCLElBQUksRUFBRSwrQkFBK0I7UUFDckMsUUFBUSxFQUFFLHVCQUF1QjtRQUNqQyxXQUFXLEVBQUUsNkVBQTZFO1FBQzFGLElBQUksRUFBRSxhQUFhO1FBQ25CLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFNBQVMsQ0FBQztRQUNwRCxVQUFVLEVBQUU7WUFDVixJQUFJLEVBQUUsK0JBQStCO1lBQ3JDLFdBQVcsRUFBRSwyQ0FBMkM7WUFDeEQsYUFBYSxFQUFFLENBQUM7WUFDaEIsT0FBTyxFQUFFLENBQUM7WUFDVixVQUFVLEVBQUUsRUFBRTtZQUNkLE1BQU0sRUFBRTtnQkFDTixPQUFPLEVBQUUsRUFBRTtnQkFDWCxHQUFHLEVBQUUsRUFBRTtnQkFDUCxPQUFPLEVBQUUsRUFBRTthQUNaO1lBQ0QsV0FBVyxFQUFFO2dCQUNYO29CQUNFLEVBQUUsRUFBRSxnQkFBZ0I7b0JBQ3BCLElBQUksRUFBRSxxQkFBcUI7b0JBQzNCLFFBQVEsRUFBRSxjQUFjO29CQUN4QixNQUFNLEVBQUUsS0FBSztpQkFDZDthQUNGO1lBQ0QsVUFBVSxFQUFFO2dCQUNWO29CQUNFLEVBQUUsRUFBRSxpQkFBaUI7b0JBQ3JCLElBQUksRUFBRSxZQUFZO29CQUNsQixHQUFHLEVBQUUsaUJBQWlCO29CQUN0QixLQUFLLEVBQUUsa0JBQWtCO29CQUN6QixLQUFLLEVBQUUsQ0FBQztvQkFDUixNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFO29CQUN6QixVQUFVLEVBQUU7d0JBQ1YsYUFBYSxFQUFFLGNBQWM7cUJBQzlCO2lCQUNGO2dCQUNEO29CQUNFLEVBQUUsRUFBRSxrQkFBa0I7b0JBQ3RCLElBQUksRUFBRSxRQUFRO29CQUNkLEtBQUssRUFBRSxtQkFBbUI7b0JBQzFCLEtBQUssRUFBRSxDQUFDO29CQUNSLE1BQU0sRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUU7b0JBQ3pCLFVBQVUsRUFBRTt3QkFDVixNQUFNLEVBQUUsZ0JBQWdCO3dCQUN4QixPQUFPLEVBQUUsU0FBUztxQkFDbkI7aUJBQ0Y7YUFDRjtZQUNELElBQUksRUFBRTtnQkFDSixZQUFZLEVBQUUsZ0JBQWdCO2dCQUM5QixPQUFPLEVBQUU7b0JBQ1AsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFO29CQUN2RSxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRTtvQkFDdkcsRUFBRSxLQUFLLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUU7b0JBQ3ZHLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtvQkFDbEYsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsS0FBSyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7aUJBQ3hGO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFdBQVcsRUFBRSxJQUFJO2lCQUNsQjthQUNGO1NBQ0Y7S0FDRjtDQUNGLENBQUM7QUFLRixNQUFNLE9BQU8scUJBQXFCO0lBQ2YsZ0JBQWdCLEdBQXNCLEVBQUUsQ0FBQztJQUUxRDs7T0FFRztJQUNILFlBQVk7UUFDVixPQUFPLENBQUMsR0FBRyxrQkFBa0IsRUFBRSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWUsQ0FBQyxFQUFVO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxtQkFBbUIsQ0FBQyxVQUFrQixFQUFFLFVBQW1CO1FBQ3pELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsVUFBVSxjQUFjLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25DLE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxVQUFVLENBQUM7UUFFakMsT0FBTztZQUNMLEVBQUUsRUFBRSxRQUFRO1lBQ1osSUFBSSxFQUFFLFVBQVUsSUFBSSxHQUFHLENBQUMsSUFBSTtZQUM1QixXQUFXLEVBQUUsR0FBRyxDQUFDLFdBQVc7WUFDNUIsYUFBYSxFQUFFLEdBQUcsQ0FBQyxhQUFhLElBQUksQ0FBQztZQUNyQyxPQUFPLEVBQUUsQ0FBQztZQUNWLFVBQVUsRUFBRSxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDNUUsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDOUMsV0FBVyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDeEQsVUFBVSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdEQsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUNsRSxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsU0FBMEI7UUFDekMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEYsSUFBSSxXQUFXLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUNqRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7d0dBckRVLHFCQUFxQjs0R0FBckIscUJBQXFCLGNBRnBCLE1BQU07OzRGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZXBvcnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29yZS9tb2RlbHMvcmVwb3J0LWRlZmluaXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgZ2VuZXJhdGVJZCB9IGZyb20gJy4uLy4uLy4uL2NvcmUvdXRpbGl0aWVzL2lkLWdlbmVyYXRvcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVwb3J0Qmx1ZXByaW50IHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBjYXRlZ29yeTogJ1JlZ2lzdGVycyAmIExvZ3MnIHwgJ0ZpbmFuY2lhbCAmIExlZGdlcicgfCAnQW5hbHl0aWNzICYgRXhlY3V0aXZlJyB8ICdDdXN0b20nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBpY29uPzogc3RyaW5nO1xuICB0YWdzPzogc3RyaW5nW107XG4gIGRlZmluaXRpb246IE9taXQ8UmVwb3J0RGVmaW5pdGlvbiwgJ2lkJz47XG59XG5cbmNvbnN0IEJVSUxUSU5fQkxVRVBSSU5UUzogUmVwb3J0Qmx1ZXByaW50W10gPSBbXG4gIHtcbiAgICBpZDogJ2JsdWVwcmludC1hdWRpdC1yZWdpc3RlcicsXG4gICAgbmFtZTogJ1N0YW5kYXJkIEF1ZGl0IFJlZ2lzdGVyJyxcbiAgICBjYXRlZ29yeTogJ1JlZ2lzdGVycyAmIExvZ3MnLFxuICAgIGRlc2NyaXB0aW9uOiAnVHJhbnNhY3Rpb24gYW5kIGNoYW5nZSBhdWRpdCBsb2cgd2l0aCByZWxhdGl2ZSBkYXRlIHJhbmdlIGZpbHRlciwgYnJhbmNoIGRyb3Bkb3duLCBhbmQgdGFidWxhciBkYXRhIGdyaWQuJyxcbiAgICBpY29uOiAndGFibGUnLFxuICAgIHRhZ3M6IFsnYXVkaXQnLCAncmVnaXN0ZXInLCAndHJhbnNhY3Rpb25zJywgJ2RhdGUtcmFuZ2UnXSxcbiAgICBkZWZpbml0aW9uOiB7XG4gICAgICBuYW1lOiAnU3RhbmRhcmQgQXVkaXQgUmVnaXN0ZXInLFxuICAgICAgZGVzY3JpcHRpb246ICdBdWRpdCBsb2cgd2l0aCByZWxhdGl2ZSBkYXRlIHJhbmdlIGZpbHRlcmluZyBhbmQgdGFidWxhciByZWdpc3Rlci4nLFxuICAgICAgc2NoZW1hVmVyc2lvbjogMSxcbiAgICAgIHZlcnNpb246IDEsXG4gICAgICBwYXJhbWV0ZXJzOiBbXSxcbiAgICAgIGxheW91dDoge1xuICAgICAgICBjb2x1bW5zOiAxMixcbiAgICAgICAgZ2FwOiAxNixcbiAgICAgICAgcGFkZGluZzogMjQsXG4gICAgICB9LFxuICAgICAgZGF0YVNvdXJjZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnZHMtYXVkaXQtbG9nJyxcbiAgICAgICAgICBuYW1lOiAnQXVkaXQgTG9nIERhdGEnLFxuICAgICAgICAgIGVuZHBvaW50OiAnL2FwaS9hdWRpdC1sb2cnLFxuICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgY29tcG9uZW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdjb21wLWRhdGUtcmFuZ2UnLFxuICAgICAgICAgIHR5cGU6ICdkYXRlLXJhbmdlJyxcbiAgICAgICAgICBrZXk6ICdkYXRlUmFuZ2UnLFxuICAgICAgICAgIGxhYmVsOiAnQXVkaXQgUGVyaW9kJyxcbiAgICAgICAgICBvcmRlcjogMSxcbiAgICAgICAgICBsYXlvdXQ6IHsgY29sdW1uU3BhbjogNCB9LFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIGRlZmF1bHRQcmVzZXQ6ICdUaGlzIE1vbnRoJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdjb21wLWJyYW5jaCcsXG4gICAgICAgICAgdHlwZTogJ2Ryb3Bkb3duJyxcbiAgICAgICAgICBrZXk6ICdicmFuY2gnLFxuICAgICAgICAgIGxhYmVsOiAnQnJhbmNoIExvY2F0aW9uJyxcbiAgICAgICAgICBvcmRlcjogMixcbiAgICAgICAgICBsYXlvdXQ6IHsgY29sdW1uU3BhbjogMyB9LFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiAnQWxsIEJyYW5jaGVzJyxcbiAgICAgICAgICAgIG9wdGlvbnM6IFtcbiAgICAgICAgICAgICAgeyBsYWJlbDogJ0FsbCBCcmFuY2hlcycsIHZhbHVlOiAnJyB9LFxuICAgICAgICAgICAgICB7IGxhYmVsOiAnSGVhZHF1YXJ0ZXJzIChIUSknLCB2YWx1ZTogJ0hRJyB9LFxuICAgICAgICAgICAgICB7IGxhYmVsOiAnQVBBQyBSZWdpb25hbCBIdWInLCB2YWx1ZTogJ0FQQUMnIH0sXG4gICAgICAgICAgICAgIHsgbGFiZWw6ICdFTUVBIE9mZmljZScsIHZhbHVlOiAnRU1FQScgfSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnY29tcC1idG4tcnVuJyxcbiAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICBsYWJlbDogJ1J1biBSZXBvcnQnLFxuICAgICAgICAgIG9yZGVyOiAzLFxuICAgICAgICAgIGxheW91dDogeyBjb2x1bW5TcGFuOiAyIH0sXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgYWN0aW9uOiAnZXhlY3V0ZS1yZXBvcnQnLFxuICAgICAgICAgICAgdmFyaWFudDogJ3ByaW1hcnknLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ2NvbXAtYnRuLXJlc2V0JyxcbiAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICBsYWJlbDogJ1Jlc2V0IEZpbHRlcnMnLFxuICAgICAgICAgIG9yZGVyOiA0LFxuICAgICAgICAgIGxheW91dDogeyBjb2x1bW5TcGFuOiAyIH0sXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgYWN0aW9uOiAncmVzZXQnLFxuICAgICAgICAgICAgdmFyaWFudDogJ3NlY29uZGFyeScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBncmlkOiB7XG4gICAgICAgIGRhdGFTb3VyY2VJZDogJ2RzLWF1ZGl0LWxvZycsXG4gICAgICAgIGNvbHVtbnM6IFtcbiAgICAgICAgICB7IGZpZWxkOiAndGltZXN0YW1wJywgbGFiZWw6ICdUaW1lc3RhbXAnLCBkYXRhVHlwZTogJ2RhdGUnLCBmb3JtYXQ6ICdkZC9NTS95eXl5IEhIOm1tJyB9LFxuICAgICAgICAgIHsgZmllbGQ6ICd1c2VyTmFtZScsIGxhYmVsOiAnVXNlcicsIGRhdGFUeXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgIHsgZmllbGQ6ICdhY3Rpb25UeXBlJywgbGFiZWw6ICdBY3Rpb24nLCBkYXRhVHlwZTogJ3N0cmluZycgfSxcbiAgICAgICAgICB7IGZpZWxkOiAncmVjb3JkUmVmJywgbGFiZWw6ICdSZWZlcmVuY2UgIycsIGRhdGFUeXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgIHsgZmllbGQ6ICdzdGF0dXMnLCBsYWJlbDogJ1N0YXR1cycsIGRhdGFUeXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICBdLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgcGFnaW5hdGlvbjogdHJ1ZSxcbiAgICAgICAgICBwYWdlU2l6ZTogMjAsXG4gICAgICAgICAgc2hvd1Jvd051bWJlcnM6IHRydWUsXG4gICAgICAgICAgYWxsb3dFeHBvcnQ6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIHtcbiAgICBpZDogJ2JsdWVwcmludC1tYXN0ZXItZGV0YWlsJyxcbiAgICBuYW1lOiAnTWFzdGVyLURldGFpbCBBY2NvdW50IFN0YXRlbWVudCcsXG4gICAgY2F0ZWdvcnk6ICdGaW5hbmNpYWwgJiBMZWRnZXInLFxuICAgIGRlc2NyaXB0aW9uOiAnQWNjb3VudCBzZWxlY3RvciB3aXRoIHN0YXRlbWVudCBkYXRlIHJhbmdlIGFuZCBkcmlsbC1kb3duIHRyYW5zYWN0aW9uIGRyYXdlci4nLFxuICAgIGljb246ICdmaWxlLXRleHQnLFxuICAgIHRhZ3M6IFsnZmluYW5jZScsICdsZWRnZXInLCAnc3RhdGVtZW50JywgJ2RyaWxsLWRvd24nXSxcbiAgICBkZWZpbml0aW9uOiB7XG4gICAgICBuYW1lOiAnQWNjb3VudCBTdGF0ZW1lbnQnLFxuICAgICAgZGVzY3JpcHRpb246ICdBY2NvdW50IHN0YXRlbWVudCB3aXRoIHNsaWRlLW92ZXIgbGluZSBpdGVtIGRyaWxsLWRvd24uJyxcbiAgICAgIHNjaGVtYVZlcnNpb246IDEsXG4gICAgICB2ZXJzaW9uOiAxLFxuICAgICAgcGFyYW1ldGVyczogW10sXG4gICAgICBsYXlvdXQ6IHtcbiAgICAgICAgY29sdW1uczogMTIsXG4gICAgICAgIGdhcDogMTYsXG4gICAgICAgIHBhZGRpbmc6IDI0LFxuICAgICAgfSxcbiAgICAgIGRhdGFTb3VyY2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ2RzLWFjY291bnQtc3RhdGVtZW50JyxcbiAgICAgICAgICBuYW1lOiAnQWNjb3VudCBTdGF0ZW1lbnQgRGF0YScsXG4gICAgICAgICAgZW5kcG9pbnQ6ICcvYXBpL3N0YXRlbWVudHMnLFxuICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgY29tcG9uZW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdjb21wLWFjY291bnQtY29kZScsXG4gICAgICAgICAgdHlwZTogJ2Ryb3Bkb3duJyxcbiAgICAgICAgICBrZXk6ICdhY2NvdW50Q29kZScsXG4gICAgICAgICAgbGFiZWw6ICdBY2NvdW50IC8gQ3VzdG9tZXInLFxuICAgICAgICAgIG9yZGVyOiAxLFxuICAgICAgICAgIGxheW91dDogeyBjb2x1bW5TcGFuOiA0IH0sXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICdTZWFyY2ggY3VzdG9tZXIgYWNjb3VudC4uLicsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnY29tcC1zdGF0ZW1lbnQtcGVyaW9kJyxcbiAgICAgICAgICB0eXBlOiAnZGF0ZS1yYW5nZScsXG4gICAgICAgICAga2V5OiAncGVyaW9kJyxcbiAgICAgICAgICBsYWJlbDogJ1N0YXRlbWVudCBQZXJpb2QnLFxuICAgICAgICAgIG9yZGVyOiAyLFxuICAgICAgICAgIGxheW91dDogeyBjb2x1bW5TcGFuOiA1IH0sXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgZGVmYXVsdFByZXNldDogJ1RoaXMgTW9udGgnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ2NvbXAtYnRuLWdlbmVyYXRlJyxcbiAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICBsYWJlbDogJ0dlbmVyYXRlIFN0YXRlbWVudCcsXG4gICAgICAgICAgb3JkZXI6IDMsXG4gICAgICAgICAgbGF5b3V0OiB7IGNvbHVtblNwYW46IDMgfSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBhY3Rpb246ICdleGVjdXRlLXJlcG9ydCcsXG4gICAgICAgICAgICB2YXJpYW50OiAncHJpbWFyeScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBncmlkOiB7XG4gICAgICAgIGRhdGFTb3VyY2VJZDogJ2RzLWFjY291bnQtc3RhdGVtZW50JyxcbiAgICAgICAgY29sdW1uczogW1xuICAgICAgICAgIHsgZmllbGQ6ICd0cmFuc0RhdGUnLCBsYWJlbDogJ0RhdGUnLCBkYXRhVHlwZTogJ2RhdGUnLCBmb3JtYXQ6ICdkZC9NTS95eXl5JyB9LFxuICAgICAgICAgIHsgZmllbGQ6ICdkb2N1bWVudE5vJywgbGFiZWw6ICdEb2N1bWVudCAjJywgZGF0YVR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgeyBmaWVsZDogJ2Rlc2NyaXB0aW9uJywgbGFiZWw6ICdEZXNjcmlwdGlvbicsIGRhdGFUeXBlOiAnc3RyaW5nJyB9LFxuICAgICAgICAgIHsgZmllbGQ6ICdkZWJpdCcsIGxhYmVsOiAnRGViaXQnLCBkYXRhVHlwZTogJ2N1cnJlbmN5JywgYWxpZ246ICdyaWdodCcsIGFnZ3JlZ2F0ZTogJ3N1bScgfSxcbiAgICAgICAgICB7IGZpZWxkOiAnY3JlZGl0JywgbGFiZWw6ICdDcmVkaXQnLCBkYXRhVHlwZTogJ2N1cnJlbmN5JywgYWxpZ246ICdyaWdodCcsIGFnZ3JlZ2F0ZTogJ3N1bScgfSxcbiAgICAgICAgICB7IGZpZWxkOiAnYmFsYW5jZScsIGxhYmVsOiAnQmFsYW5jZScsIGRhdGFUeXBlOiAnY3VycmVuY3knLCBhbGlnbjogJ3JpZ2h0JyB9LFxuICAgICAgICBdLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgcGFnaW5hdGlvbjogdHJ1ZSxcbiAgICAgICAgICBwYWdlU2l6ZTogMjUsXG4gICAgICAgICAgc2hvd0Zvb3RlcjogdHJ1ZSxcbiAgICAgICAgICBhbGxvd0V4cG9ydDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgcm93Q2xpY2tBY3Rpb246IHtcbiAgICAgICAgICB0eXBlOiAnb3Blbi1kcmF3ZXInLFxuICAgICAgICAgIHRhcmdldFJlcG9ydElkOiAnZG9jdW1lbnQtZGV0YWlscy1zdWJyZXBvcnQnLFxuICAgICAgICAgIGRyYXdlclRpdGxlOiAnVHJhbnNhY3Rpb24gRGV0YWlscycsXG4gICAgICAgICAgZHJhd2VyV2lkdGg6ICc3ODBweCcsXG4gICAgICAgICAgcGFyYW1ldGVyTWFwcGluZzoge1xuICAgICAgICAgICAgZG9jTm86ICdyb3cuZG9jdW1lbnRObycsXG4gICAgICAgICAgICBhY2NvdW50OiAnZm9ybS5hY2NvdW50Q29kZScsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbiAge1xuICAgIGlkOiAnYmx1ZXByaW50LWtwaS1zdW1tYXJ5JyxcbiAgICBuYW1lOiAnRXhlY3V0aXZlIFBlcmZvcm1hbmNlIFN1bW1hcnknLFxuICAgIGNhdGVnb3J5OiAnQW5hbHl0aWNzICYgRXhlY3V0aXZlJyxcbiAgICBkZXNjcmlwdGlvbjogJ0hpZ2gtbGV2ZWwgS1BJIHJlZ2lzdGVyIHdpdGggZGF0ZSBmaWx0ZXIgY29udHJvbHMgYW5kIGV4cG9ydGFibGUgYnJlYWtkb3duLicsXG4gICAgaWNvbjogJ2Jhci1jaGFydC0yJyxcbiAgICB0YWdzOiBbJ2V4ZWN1dGl2ZScsICdrcGknLCAncGVyZm9ybWFuY2UnLCAnbWV0cmljcyddLFxuICAgIGRlZmluaXRpb246IHtcbiAgICAgIG5hbWU6ICdFeGVjdXRpdmUgUGVyZm9ybWFuY2UgU3VtbWFyeScsXG4gICAgICBkZXNjcmlwdGlvbjogJ0RlcGFydG1lbnRhbCBwZXJmb3JtYW5jZSBzdW1tYXJ5IG1ldHJpY3MuJyxcbiAgICAgIHNjaGVtYVZlcnNpb246IDEsXG4gICAgICB2ZXJzaW9uOiAxLFxuICAgICAgcGFyYW1ldGVyczogW10sXG4gICAgICBsYXlvdXQ6IHtcbiAgICAgICAgY29sdW1uczogMTIsXG4gICAgICAgIGdhcDogMTYsXG4gICAgICAgIHBhZGRpbmc6IDI0LFxuICAgICAgfSxcbiAgICAgIGRhdGFTb3VyY2VzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ2RzLWtwaS1tZXRyaWNzJyxcbiAgICAgICAgICBuYW1lOiAnUGVyZm9ybWFuY2UgTWV0cmljcycsXG4gICAgICAgICAgZW5kcG9pbnQ6ICcvYXBpL21ldHJpY3MnLFxuICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgY29tcG9uZW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdjb21wLWtwaS1wZXJpb2QnLFxuICAgICAgICAgIHR5cGU6ICdkYXRlLXJhbmdlJyxcbiAgICAgICAgICBrZXk6ICdyZXBvcnRpbmdQZXJpb2QnLFxuICAgICAgICAgIGxhYmVsOiAnUmVwb3J0aW5nIFBlcmlvZCcsXG4gICAgICAgICAgb3JkZXI6IDEsXG4gICAgICAgICAgbGF5b3V0OiB7IGNvbHVtblNwYW46IDYgfSxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBkZWZhdWx0UHJlc2V0OiAnVGhpcyBRdWFydGVyJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdjb21wLWJ0bi1yZWZyZXNoJyxcbiAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgICAgICBsYWJlbDogJ1JlZnJlc2ggQW5hbHl0aWNzJyxcbiAgICAgICAgICBvcmRlcjogMixcbiAgICAgICAgICBsYXlvdXQ6IHsgY29sdW1uU3BhbjogMyB9LFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIGFjdGlvbjogJ2V4ZWN1dGUtcmVwb3J0JyxcbiAgICAgICAgICAgIHZhcmlhbnQ6ICdwcmltYXJ5JyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIGdyaWQ6IHtcbiAgICAgICAgZGF0YVNvdXJjZUlkOiAnZHMta3BpLW1ldHJpY3MnLFxuICAgICAgICBjb2x1bW5zOiBbXG4gICAgICAgICAgeyBmaWVsZDogJ2RlcGFydG1lbnQnLCBsYWJlbDogJ0RlcGFydG1lbnQgLyBVbml0JywgZGF0YVR5cGU6ICdzdHJpbmcnIH0sXG4gICAgICAgICAgeyBmaWVsZDogJ3RhcmdldFJldmVudWUnLCBsYWJlbDogJ1RhcmdldCAoJCknLCBkYXRhVHlwZTogJ2N1cnJlbmN5JywgYWxpZ246ICdyaWdodCcsIGFnZ3JlZ2F0ZTogJ3N1bScgfSxcbiAgICAgICAgICB7IGZpZWxkOiAnYWN0dWFsUmV2ZW51ZScsIGxhYmVsOiAnQWN0dWFsICgkKScsIGRhdGFUeXBlOiAnY3VycmVuY3knLCBhbGlnbjogJ3JpZ2h0JywgYWdncmVnYXRlOiAnc3VtJyB9LFxuICAgICAgICAgIHsgZmllbGQ6ICd2YXJpYW5jZScsIGxhYmVsOiAnVmFyaWFuY2UgKCQpJywgZGF0YVR5cGU6ICdjdXJyZW5jeScsIGFsaWduOiAncmlnaHQnIH0sXG4gICAgICAgICAgeyBmaWVsZDogJ2FjaGlldmVtZW50UGN0JywgbGFiZWw6ICdBY2hpZXZlbWVudCAlJywgZGF0YVR5cGU6ICdzdHJpbmcnLCBhbGlnbjogJ3JpZ2h0JyB9LFxuICAgICAgICBdLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgcGFnaW5hdGlvbjogdHJ1ZSxcbiAgICAgICAgICBwYWdlU2l6ZTogMTUsXG4gICAgICAgICAgc2hvd0Zvb3RlcjogdHJ1ZSxcbiAgICAgICAgICBhbGxvd0V4cG9ydDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbl07XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBSZXBvcnRUZW1wbGF0ZVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGN1c3RvbUJsdWVwcmludHM6IFJlcG9ydEJsdWVwcmludFtdID0gW107XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYWxsIGF2YWlsYWJsZSByZXBvcnQgYmx1ZXByaW50cyAoYnVpbHQtaW4gKyB1c2VyIHJlZ2lzdGVyZWQpLlxuICAgKi9cbiAgZ2V0VGVtcGxhdGVzKCk6IFJlcG9ydEJsdWVwcmludFtdIHtcbiAgICByZXR1cm4gWy4uLkJVSUxUSU5fQkxVRVBSSU5UUywgLi4udGhpcy5jdXN0b21CbHVlcHJpbnRzXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYSBibHVlcHJpbnQgYnkgaXRzIHVuaXF1ZSBpZGVudGlmaWVyLlxuICAgKi9cbiAgZ2V0VGVtcGxhdGVCeUlkKGlkOiBzdHJpbmcpOiBSZXBvcnRCbHVlcHJpbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmdldFRlbXBsYXRlcygpLmZpbmQoKHQpID0+IHQuaWQgPT09IGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnN0YW50aWF0ZXMgYSBuZXcgUmVwb3J0RGVmaW5pdGlvbiBmcm9tIGEgdGVtcGxhdGUgd2l0aCB1bmlxdWUgSURzLlxuICAgKi9cbiAgaW5zdGFudGlhdGVUZW1wbGF0ZSh0ZW1wbGF0ZUlkOiBzdHJpbmcsIGN1c3RvbU5hbWU/OiBzdHJpbmcpOiBSZXBvcnREZWZpbml0aW9uIHtcbiAgICBjb25zdCBibHVlcHJpbnQgPSB0aGlzLmdldFRlbXBsYXRlQnlJZCh0ZW1wbGF0ZUlkKTtcbiAgICBpZiAoIWJsdWVwcmludCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBSZXBvcnQgYmx1ZXByaW50IFwiJHt0ZW1wbGF0ZUlkfVwiIG5vdCBmb3VuZC5gKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXBvcnRJZCA9IGdlbmVyYXRlSWQoJ3JlcCcpO1xuICAgIGNvbnN0IGRlZiA9IGJsdWVwcmludC5kZWZpbml0aW9uO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiByZXBvcnRJZCxcbiAgICAgIG5hbWU6IGN1c3RvbU5hbWUgfHwgZGVmLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogZGVmLmRlc2NyaXB0aW9uLFxuICAgICAgc2NoZW1hVmVyc2lvbjogZGVmLnNjaGVtYVZlcnNpb24gPz8gMSxcbiAgICAgIHZlcnNpb246IDEsXG4gICAgICBwYXJhbWV0ZXJzOiBkZWYucGFyYW1ldGVycyA/IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGVmLnBhcmFtZXRlcnMpKSA6IFtdLFxuICAgICAgbGF5b3V0OiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRlZi5sYXlvdXQpKSxcbiAgICAgIGRhdGFTb3VyY2VzOiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRlZi5kYXRhU291cmNlcykpLFxuICAgICAgY29tcG9uZW50czogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShkZWYuY29tcG9uZW50cykpLFxuICAgICAgZ3JpZDogZGVmLmdyaWQgPyBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRlZi5ncmlkKSkgOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBjdXN0b20gYmx1ZXByaW50IHRvIG1ha2UgaXQgYXZhaWxhYmxlIGluIHRoZSBnYWxsZXJ5LlxuICAgKi9cbiAgcmVnaXN0ZXJUZW1wbGF0ZShibHVlcHJpbnQ6IFJlcG9ydEJsdWVwcmludCk6IHZvaWQge1xuICAgIGNvbnN0IGV4aXN0aW5nSWR4ID0gdGhpcy5jdXN0b21CbHVlcHJpbnRzLmZpbmRJbmRleCgoYikgPT4gYi5pZCA9PT0gYmx1ZXByaW50LmlkKTtcbiAgICBpZiAoZXhpc3RpbmdJZHggPj0gMCkge1xuICAgICAgdGhpcy5jdXN0b21CbHVlcHJpbnRzW2V4aXN0aW5nSWR4XSA9IGJsdWVwcmludDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jdXN0b21CbHVlcHJpbnRzLnB1c2goYmx1ZXByaW50KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -58,36 +58,67 @@ export function resolveCanvasCardHeight(comp, overrideComponentHeight, overhead
58
58
  const parsed = parseInt(h, 10);
59
59
  return isNaN(parsed) ? h : `${parsed + overhead}px`;
60
60
  }
61
+ /**
62
+ * Natural minimum height in pixels required for a component type to render without cramping or overflow.
63
+ */
64
+ export function getComponentNaturalMinHeight(type) {
65
+ switch (type) {
66
+ case 'chart':
67
+ return 240;
68
+ case 'kpi-card':
69
+ return 100;
70
+ case 'table':
71
+ case 'grid':
72
+ return 200;
73
+ default:
74
+ return 0;
75
+ }
76
+ }
61
77
  /**
62
78
  * Resolves the CSS min-height property for the canvas component card.
63
79
  */
64
80
  export function resolveCanvasCardMinHeight(comp, overrideComponentHeight, overhead = CANVAS_CARD_OVERHEAD) {
81
+ const naturalMin = getComponentNaturalMinHeight(comp.type);
65
82
  if (overrideComponentHeight !== undefined && overrideComponentHeight !== null) {
66
- return `${overrideComponentHeight + overhead}px`;
83
+ return `${Math.max(naturalMin, overrideComponentHeight) + overhead}px`;
67
84
  }
68
85
  const minH = comp.layout?.minHeight;
69
- if (!minH || minH === 'auto')
70
- return 'auto';
86
+ if (!minH || minH === 'auto') {
87
+ return naturalMin > 0 ? `${naturalMin + overhead}px` : 'auto';
88
+ }
71
89
  const parsed = parseInt(minH, 10);
72
- return isNaN(parsed) ? minH : `${parsed + overhead}px`;
90
+ return isNaN(parsed) ? minH : `${Math.max(naturalMin, parsed) + overhead}px`;
73
91
  }
74
92
  /**
75
93
  * Resolves the CSS height property for a runtime component.
76
94
  */
77
95
  export function resolveComponentHeight(comp, overrideHeight) {
96
+ const naturalMin = getComponentNaturalMinHeight(comp.type);
78
97
  if (overrideHeight !== undefined && overrideHeight !== null) {
79
- return `${overrideHeight}px`;
98
+ return `${Math.max(naturalMin, overrideHeight)}px`;
80
99
  }
81
- return comp.layout?.height || 'auto';
100
+ const h = comp.layout?.height;
101
+ if (!h || h === 'auto')
102
+ return 'auto';
103
+ const parsed = parseInt(h, 10);
104
+ if (isNaN(parsed))
105
+ return h;
106
+ return `${Math.max(naturalMin, parsed)}px`;
82
107
  }
83
108
  /**
84
109
  * Resolves the CSS min-height property for a runtime component.
85
110
  */
86
111
  export function resolveComponentMinHeight(comp, overrideHeight) {
112
+ const naturalMin = getComponentNaturalMinHeight(comp.type);
87
113
  if (overrideHeight !== undefined && overrideHeight !== null) {
88
- return `${overrideHeight}px`;
114
+ return `${Math.max(naturalMin, overrideHeight)}px`;
89
115
  }
90
- return comp.layout?.minHeight || 'auto';
116
+ const minH = comp.layout?.minHeight;
117
+ if (!minH || minH === 'auto') {
118
+ return naturalMin > 0 ? `${naturalMin}px` : 'auto';
119
+ }
120
+ const parsed = parseInt(minH, 10);
121
+ return isNaN(parsed) ? minH : `${Math.max(naturalMin, parsed)}px`;
91
122
  }
92
123
  /**
93
124
  * Calculates new snapped span given drag deltaX, column width, and grid gap.
@@ -113,6 +144,7 @@ export function getComponentIconName(type) {
113
144
  case 'input': return 'text-fields';
114
145
  case 'dropdown': return 'dropdown';
115
146
  case 'date': return 'calendar';
147
+ case 'date-range': return 'calendar';
116
148
  case 'number': return 'number';
117
149
  case 'checkbox': return 'checkbox';
118
150
  case 'button': return 'button';
@@ -121,4 +153,4 @@ export function getComponentIconName(type) {
121
153
  default: return 'box';
122
154
  }
123
155
  }
124
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLWxheW91dC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZmVhdHVyZXMvZGVzaWduZXIvdXRpbGl0aWVzL2NhbnZhcy1sYXlvdXQudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7OztHQUlHO0FBRUg7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxJQUErQixFQUMvQixlQUF1QixFQUFFLEVBQ3pCLFlBQTRCO0lBRTVCLElBQUksWUFBWSxLQUFLLFNBQVMsSUFBSSxZQUFZLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDeEQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLElBQUksV0FBVyxDQUFDO0lBQ3ZELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLElBQStCLEVBQy9CLGVBQXVCLEVBQUUsRUFDekIsSUFBYTtJQUViLE1BQU0sYUFBYSxHQUFHLElBQUksSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdkUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdB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TyxRQUFRLENBQUM7UUFDL0IsS0FBSyxVQUFVLENBQUMsQ0FBQyxPQUFPLFVBQVUsQ0FBQztRQUNuQyxLQUFLLFFBQVEsQ0FBQyxDQUFDLE9BQU8sUUFBUSxDQUFDO1FBQy9CLEtBQUssVUFBVSxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUM7UUFDOUIsS0FBSyxPQUFPLENBQUMsQ0FBQyxPQUFPLFdBQVcsQ0FBQztRQUNqQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQztJQUN4QixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24gfSBmcm9tICcuLi8uLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtY29tcG9uZW50Lm1vZGVsJztcblxuLyoqXG4gKiBQdXJlIHV0aWxpdHkgZnVuY3Rpb25zIGZvciBkZXNpZ24gY2FudmFzIGxheW91dCwgZ3JpZCBjYWxjdWxhdGlvbnMsIGFuZCBzaXppbmcuXG4gKlxuICogSW1wbGVtZW50ZWQgYXMgZnJhbWV3b3JrLWluZGVwZW5kZW50IHB1cmUgZnVuY3Rpb25zIHBlciBSdWxlIDEwICYgMTEgKFB1cmUgTG9naWMgRmlyc3QpLlxuICovXG5cbi8qKlxuICogUmVzb2x2ZXMgdGhlIGVmZmVjdGl2ZSBjb2x1bW4gc3BhbiBmb3IgYSBjb21wb25lbnQuXG4gKiBVc2VzIGxheW91dC5jb2x1bW5TcGFuIGlmIHNwZWNpZmllZCwgb3RoZXJ3aXNlIGRlZmF1bHRzIGJhc2VkIG9uIGNvbXBvbmVudCB0eXBlIChlLmcuIDIgZm9yIGJ1dHRvbiwgNCBmb3Igb3RoZXJzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDb21wb25lbnRTcGFuKFxuICBjb21wOiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uLFxuICB0b3RhbENvbHVtbnM6IG51bWJlciA9IDEyLFxuICBvdmVycmlkZVNwYW4/OiBudW1iZXIgfCBudWxsXG4pOiBudW1iZXIge1xuICBpZiAob3ZlcnJpZGVTcGFuICE9PSB1bmRlZmluZWQgJiYgb3ZlcnJpZGVTcGFuICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIE1hdGgubWF4KDEsIE1hdGgubWluKHRvdGFsQ29sdW1ucywgb3ZlcnJpZGVTcGFuKSk7XG4gIH1cbiAgY29uc3QgZGVmYXVsdFNwYW4gPSBjb21wLnR5cGUgPT09ICdidXR0b24nID8gMiA6IDQ7XG4gIGNvbnN0IHJhd1NwYW4gPSBjb21wLmxheW91dD8uY29sdW1uU3BhbiA/PyBkZWZhdWx0U3BhbjtcbiAgcmV0dXJuIE1hdGgubWF4KDEsIE1hdGgubWluKHRvdGFsQ29sdW1ucywgcmF3U3BhbikpO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBDU1MgYGdyaWQtY29sdW1uYCBzcGVjaWZpY2F0aW9uIHN0cmluZyBmb3IgYSBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVHcmlkQ29sdW1uKFxuICBjb21wOiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uLFxuICB0b3RhbENvbHVtbnM6IG51bWJlciA9IDEyLFxuICBzcGFuPzogbnVtYmVyXG4pOiBzdHJpbmcge1xuICBjb25zdCBlZmZlY3RpdmVTcGFuID0gc3BhbiA/PyByZXNvbHZlQ29tcG9uZW50U3Bhbihjb21wLCB0b3RhbENvbHVtbnMpO1xuICBjb25zdCBjbGFtcGVkID0gTWF0aC5tYXgoMSwgTWF0aC5taW4oZWZmZWN0aXZlU3BhbiwgdG90YWxDb2x1bW5zKSk7XG4gIGNvbnN0IGNvbCA9IGNvbXAubGF5b3V0Py5jb2x1bW47XG5cbiAgaWYgKGNvbCAmJiBjb2wgPj0gMSAmJiBjb2wgPD0gdG90YWxDb2x1bW5zKSB7XG4gICAgcmV0dXJuIGAke2NvbH0gLyBzcGFuICR7Y2xhbXBlZH1gO1xuICB9XG5cbiAgcmV0dXJuIGNvbXAubGF5b3V0Py5uZXdSb3cgPyBgMSAvIHNwYW4gJHtjbGFtcGVkfWAgOiBgc3BhbiAke2NsYW1wZWR9YDtcbn1cblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgQ1NTIGBncmlkLXJvd2Agc3BlY2lmaWNhdGlvbiBzdHJpbmcgZm9yIGEgY29tcG9uZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlR3JpZFJvdyhjb21wOiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uKTogc3RyaW5nIHtcbiAgY29uc3Qgcm93U3BhbiA9IGNvbXAubGF5b3V0Py5yb3dTcGFuO1xuICBpZiAocm93U3BhbiAmJiByb3dTcGFuID4gMSkge1xuICAgIHJldHVybiBgc3BhbiAke3Jvd1NwYW59YDtcbiAgfVxuICByZXR1cm4gJ2F1dG8nO1xufVxuXG4vKipcbiAqIE92ZXJoZWFkIGluIHBpeGVscyBmb3IgdGhlIFZpc3VhbCBDYW52YXMgY2FyZCAoY2FyZCBoZWFkZXIgMzJweCArIGNhcmQgYm9keSB2ZXJ0aWNhbCBwYWRkaW5nIDE2cHgpLlxuICogQWRkaW5nIHRoaXMgb3ZlcmhlYWQgdG8gdGhlIGNvbXBvbmVudCdzIGxvZ2ljYWwgaGVpZ2h0IGVuc3VyZXMgdGhhdCB0aGUgY2FudmFzIGNhcmQgYm9keVxuICogcmVuZGVycyBhdCB0aGUgZXhhY3Qgc2FtZSBwaXhlbCBkaW1lbnNpb25zIGFzIHRoZSBsaXZlIHByZXZpZXcgY29tcG9uZW50LlxuICovXG5leHBvcnQgY29uc3QgQ0FOVkFTX0NBUkRfT1ZFUkhFQUQgPSA0ODtcblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgQ1NTIGhlaWdodCBwcm9wZXJ0eSBmb3IgdGhlIGNhbnZhcyBjb21wb25lbnQgY2FyZC5cbiAqIEFjY291bnRzIGZvciB0aGUgY2FyZCBoZWFkZXIgYW5kIHBhZGRpbmcgb3ZlcmhlYWQgc28gdGhlIGlubmVyIG1vY2sgYm9keVxuICogYWNjdXJhdGVseSBtaXJyb3JzIHRoZSBydW50aW1lIGNvbXBvbmVudCBoZWlnaHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQ2FudmFzQ2FyZEhlaWdodChcbiAgY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbixcbiAgb3ZlcnJpZGVDb21wb25lbnRIZWlnaHQ/OiBudW1iZXIgfCBudWxsLFxuICBvdmVyaGVhZDogbnVtYmVyID0gQ0FOVkFTX0NBUkRfT1ZFUkhFQURcbik6IHN0cmluZyB7XG4gIGlmIChvdmVycmlkZUNvbXBvbmVudEhlaWdodCAhPT0gdW5kZWZpbmVkICYmIG92ZXJyaWRlQ29tcG9uZW50SGVpZ2h0ICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIGAke292ZXJyaWRlQ29tcG9uZW50SGVpZ2h0ICsgb3ZlcmhlYWR9cHhgO1xuICB9XG4gIGNvbnN0IGggPSBjb21wLmxheW91dD8uaGVpZ2h0O1xuICBpZiAoIWggfHwgaCA9PT0gJ2F1dG8nKSByZXR1cm4gJ2F1dG8nO1xuICBjb25zdCBwYXJzZWQgPSBwYXJzZUludChoLCAxMCk7XG4gIHJldHVybiBpc05hTihwYXJzZWQpID8gaCA6IGAke3BhcnNlZCArIG92ZXJoZWFkfXB4YDtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgQ1NTIG1pbi1oZWlnaHQgcHJvcGVydHkgZm9yIHRoZSBjYW52YXMgY29tcG9uZW50IGNhcmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQ2FudmFzQ2FyZE1pbkhlaWdodChcbiAgY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbixcbiAgb3ZlcnJpZGVDb21wb25lbnRIZWlnaHQ/OiBudW1iZXIgfCBudWxsLFxuICBvdmVyaGVhZDogbnVtYmVyID0gQ0FOVkFTX0NBUkRfT1ZFUkhFQURcbik6IHN0cmluZyB7XG4gIGlmIChvdmVycmlkZUNvbXBvbmVudEhlaWdodCAhPT0gdW5kZWZpbmVkICYmIG92ZXJyaWRlQ29tcG9uZW50SGVpZ2h0ICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIGAke292ZXJyaWRlQ29tcG9uZW50SGVpZ2h0ICsgb3ZlcmhlYWR9cHhgO1xuICB9XG4gIGNvbnN0IG1pbkggPSBjb21wLmxheW91dD8ubWluSGVpZ2h0O1xuICBpZiAoIW1pbkggfHwgbWluSCA9PT0gJ2F1dG8nKSByZXR1cm4gJ2F1dG8nO1xuICBjb25zdCBwYXJzZWQgPSBwYXJzZUludChtaW5ILCAxMCk7XG4gIHJldHVybiBpc05hTihwYXJzZWQpID8gbWluSCA6IGAke3BhcnNlZCArIG92ZXJoZWFkfXB4YDtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgQ1NTIGhlaWdodCBwcm9wZXJ0eSBmb3IgYSBydW50aW1lIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDb21wb25lbnRIZWlnaHQoXG4gIGNvbXA6IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24sXG4gIG92ZXJyaWRlSGVpZ2h0PzogbnVtYmVyIHwgbnVsbFxuKTogc3RyaW5nIHtcbiAgaWYgKG92ZXJyaWRlSGVpZ2h0ICE9PSB1bmRlZmluZWQgJiYgb3ZlcnJpZGVIZWlnaHQgIT09IG51bGwpIHtcbiAgICByZXR1cm4gYCR7b3ZlcnJpZGVIZWlnaHR9cHhgO1xuICB9XG4gIHJldHVybiBjb21wLmxheW91dD8uaGVpZ2h0IHx8ICdhdXRvJztcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgQ1NTIG1pbi1oZWlnaHQgcHJvcGVydHkgZm9yIGEgcnVudGltZSBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQ29tcG9uZW50TWluSGVpZ2h0KFxuICBjb21wOiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uLFxuICBvdmVycmlkZUhlaWdodD86IG51bWJlciB8IG51bGxcbik6IHN0cmluZyB7XG4gIGlmIChvdmVycmlkZUhlaWdodCAhPT0gdW5kZWZpbmVkICYmIG92ZXJyaWRlSGVpZ2h0ICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIGAke292ZXJyaWRlSGVpZ2h0fXB4YDtcbiAgfVxuICByZXR1cm4gY29tcC5sYXlvdXQ/Lm1pbkhlaWdodCB8fCAnYXV0byc7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlcyBuZXcgc25hcHBlZCBzcGFuIGdpdmVuIGRyYWcgZGVsdGFYLCBjb2x1bW4gd2lkdGgsIGFuZCBncmlkIGdhcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZVNuYXBwZWRTcGFuKFxuICBkZWx0YVg6IG51bWJlcixcbiAgc3RhcnRTcGFuOiBudW1iZXIsXG4gIGNvbFdpZHRoOiBudW1iZXIsXG4gIGdhcDogbnVtYmVyLFxuICB0b3RhbENvbHM6IG51bWJlclxuKTogbnVtYmVyIHtcbiAgY29uc3Qgc3RlcCA9IGNvbFdpZHRoICsgZ2FwO1xuICBpZiAoc3RlcCA8PSAwKSByZXR1cm4gc3RhcnRTcGFuO1xuICBjb25zdCBzcGFuRGVsdGEgPSBNYXRoLnJvdW5kKGRlbHRhWCAvIHN0ZXApO1xuICByZXR1cm4gTWF0aC5tYXgoMSwgTWF0aC5taW4odG90YWxDb2xzLCBzdGFydFNwYW4gKyBzcGFuRGVsdGEpKTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGVzIG5ldyBoZWlnaHQgZ2l2ZW4gZHJhZyBkZWx0YVkgYW5kIG1pbmltdW0gaGVpZ2h0IGNvbnN0cmFpbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVTbmFwcGVkSGVpZ2h0KFxuICBkZWx0YVk6IG51bWJlcixcbiAgc3RhcnRIZWlnaHQ6IG51bWJlcixcbiAgbWluSGVpZ2h0OiBudW1iZXIgPSA1MFxuKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGgubWF4KG1pbkhlaWdodCwgTWF0aC5yb3VuZChzdGFydEhlaWdodCArIGRlbHRhWSkpO1xufVxuXG4vKipcbiAqIE1hcHMgY29tcG9uZW50IHR5cGUgdG8gc3RhbmRhcmQgaWNvbiBpZGVudGlmaWVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tcG9uZW50SWNvbk5hbWUodHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnaW5wdXQnOiByZXR1cm4gJ3RleHQtZmllbGRzJztcbiAgICBjYXNlICdkcm9wZG93bic6IHJldHVybiAnZHJvcGRvd24nO1xuICAgIGNhc2UgJ2RhdGUnOiByZXR1cm4gJ2NhbGVuZGFyJztcbiAgICBjYXNlICdudW1iZXInOiByZXR1cm4gJ251bWJlcic7XG4gICAgY2FzZSAnY2hlY2tib3gnOiByZXR1cm4gJ2NoZWNrYm94JztcbiAgICBjYXNlICdidXR0b24nOiByZXR1cm4gJ2J1dHRvbic7XG4gICAgY2FzZSAna3BpLWNhcmQnOiByZXR1cm4gJ2twaSc7XG4gICAgY2FzZSAnY2hhcnQnOiByZXR1cm4gJ2NoYXJ0LWJhcic7XG4gICAgZGVmYXVsdDogcmV0dXJuICdib3gnO1xuICB9XG59XG4iXX0=
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudmFzLWxheW91dC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZmVhdHVyZXMvZGVzaWduZXIvdXRpbGl0aWVzL2NhbnZhcy1sYXlvdXQudXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7OztHQUlHO0FBRUg7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUNsQyxJQUErQixFQUMvQixlQUF1QixFQUFFLEVBQ3pCLFlBQTRCO0lBRTVCLElBQUksWUFBWSxLQUFLLFNBQVMsSUFBSSxZQUFZLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDeEQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFDRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLElBQUksV0FBVyxDQUFDO0lBQ3ZELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN0RCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLElBQStCLEVBQy9CLGVBQXVCLEVBQUUsRUFDekIsSUFBYTtJQUViLE1BQU0sYUFBYSxHQUFHLElBQUksSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDdkUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdB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LENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFDLElBQVk7SUFDL0MsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNiLEtBQUssT0FBTyxDQUFDLENBQUMsT0FBTyxhQUFhLENBQUM7UUFDbkMsS0FBSyxVQUFVLENBQUMsQ0FBQyxPQUFPLFVBQVUsQ0FBQztRQUNuQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLE9BQU8sVUFBVSxDQUFDO1FBQy9CLEtBQUssWUFBWSxDQUFDLENBQUMsT0FBTyxVQUFVLENBQUM7UUFDckMsS0FBSyxRQUFRLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQztRQUMvQixLQUFLLFVBQVUsQ0FBQyxDQUFDLE9BQU8sVUFBVSxDQUFDO1FBQ25DLEtBQUssUUFBUSxDQUFDLENBQUMsT0FBTyxRQUFRLENBQUM7UUFDL0IsS0FBSyxVQUFVLENBQUMsQ0FBQyxPQUFPLEtBQUssQ0FBQztRQUM5QixLQUFLLE9BQU8sQ0FBQyxDQUFDLE9BQU8sV0FBVyxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sS0FBSyxDQUFDO0lBQ3hCLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uLy4uL2NvcmUvbW9kZWxzL3JlcG9ydC1jb21wb25lbnQubW9kZWwnO1xuXG4vKipcbiAqIFB1cmUgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGRlc2lnbiBjYW52YXMgbGF5b3V0LCBncmlkIGNhbGN1bGF0aW9ucywgYW5kIHNpemluZy5cbiAqXG4gKiBJbXBsZW1lbnRlZCBhcyBmcmFtZXdvcmstaW5kZXBlbmRlbnQgcHVyZSBmdW5jdGlvbnMgcGVyIFJ1bGUgMTAgJiAxMSAoUHVyZSBMb2dpYyBGaXJzdCkuXG4gKi9cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgZWZmZWN0aXZlIGNvbHVtbiBzcGFuIGZvciBhIGNvbXBvbmVudC5cbiAqIFVzZXMgbGF5b3V0LmNvbHVtblNwYW4gaWYgc3BlY2lmaWVkLCBvdGhlcndpc2UgZGVmYXVsdHMgYmFzZWQgb24gY29tcG9uZW50IHR5cGUgKGUuZy4gMiBmb3IgYnV0dG9uLCA0IGZvciBvdGhlcnMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUNvbXBvbmVudFNwYW4oXG4gIGNvbXA6IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24sXG4gIHRvdGFsQ29sdW1uczogbnVtYmVyID0gMTIsXG4gIG92ZXJyaWRlU3Bhbj86IG51bWJlciB8IG51bGxcbik6IG51bWJlciB7XG4gIGlmIChvdmVycmlkZVNwYW4gIT09IHVuZGVmaW5lZCAmJiBvdmVycmlkZVNwYW4gIT09IG51bGwpIHtcbiAgICByZXR1cm4gTWF0aC5tYXgoMSwgTWF0aC5taW4odG90YWxDb2x1bW5zLCBvdmVycmlkZVNwYW4pKTtcbiAgfVxuICBjb25zdCBkZWZhdWx0U3BhbiA9IGNvbXAudHlwZSA9PT0gJ2J1dHRvbicgPyAyIDogNDtcbiAgY29uc3QgcmF3U3BhbiA9IGNvbXAubGF5b3V0Py5jb2x1bW5TcGFuID8/IGRlZmF1bHRTcGFuO1xuICByZXR1cm4gTWF0aC5tYXgoMSwgTWF0aC5taW4odG90YWxDb2x1bW5zLCByYXdTcGFuKSk7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIENTUyBgZ3JpZC1jb2x1bW5gIHNwZWNpZmljYXRpb24gc3RyaW5nIGZvciBhIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUdyaWRDb2x1bW4oXG4gIGNvbXA6IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24sXG4gIHRvdGFsQ29sdW1uczogbnVtYmVyID0gMTIsXG4gIHNwYW4/OiBudW1iZXJcbik6IHN0cmluZyB7XG4gIGNvbnN0IGVmZmVjdGl2ZVNwYW4gPSBzcGFuID8/IHJlc29sdmVDb21wb25lbnRTcGFuKGNvbXAsIHRvdGFsQ29sdW1ucyk7XG4gIGNvbnN0IGNsYW1wZWQgPSBNYXRoLm1heCgxLCBNYXRoLm1pbihlZmZlY3RpdmVTcGFuLCB0b3RhbENvbHVtbnMpKTtcbiAgY29uc3QgY29sID0gY29tcC5sYXlvdXQ/LmNvbHVtbjtcblxuICBpZiAoY29sICYmIGNvbCA+PSAxICYmIGNvbCA8PSB0b3RhbENvbHVtbnMpIHtcbiAgICByZXR1cm4gYCR7Y29sfSAvIHNwYW4gJHtjbGFtcGVkfWA7XG4gIH1cblxuICByZXR1cm4gY29tcC5sYXlvdXQ/Lm5ld1JvdyA/IGAxIC8gc3BhbiAke2NsYW1wZWR9YCA6IGBzcGFuICR7Y2xhbXBlZH1gO1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBDU1MgYGdyaWQtcm93YCBzcGVjaWZpY2F0aW9uIHN0cmluZyBmb3IgYSBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVHcmlkUm93KGNvbXA6IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24pOiBzdHJpbmcge1xuICBjb25zdCByb3dTcGFuID0gY29tcC5sYXlvdXQ/LnJvd1NwYW47XG4gIGlmIChyb3dTcGFuICYmIHJvd1NwYW4gPiAxKSB7XG4gICAgcmV0dXJuIGBzcGFuICR7cm93U3Bhbn1gO1xuICB9XG4gIHJldHVybiAnYXV0byc7XG59XG5cbi8qKlxuICogT3ZlcmhlYWQgaW4gcGl4ZWxzIGZvciB0aGUgVmlzdWFsIENhbnZhcyBjYXJkIChjYXJkIGhlYWRlciAzMnB4ICsgY2FyZCBib2R5IHZlcnRpY2FsIHBhZGRpbmcgMTZweCkuXG4gKiBBZGRpbmcgdGhpcyBvdmVyaGVhZCB0byB0aGUgY29tcG9uZW50J3MgbG9naWNhbCBoZWlnaHQgZW5zdXJlcyB0aGF0IHRoZSBjYW52YXMgY2FyZCBib2R5XG4gKiByZW5kZXJzIGF0IHRoZSBleGFjdCBzYW1lIHBpeGVsIGRpbWVuc2lvbnMgYXMgdGhlIGxpdmUgcHJldmlldyBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCBjb25zdCBDQU5WQVNfQ0FSRF9PVkVSSEVBRCA9IDQ4O1xuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBDU1MgaGVpZ2h0IHByb3BlcnR5IGZvciB0aGUgY2FudmFzIGNvbXBvbmVudCBjYXJkLlxuICogQWNjb3VudHMgZm9yIHRoZSBjYXJkIGhlYWRlciBhbmQgcGFkZGluZyBvdmVyaGVhZCBzbyB0aGUgaW5uZXIgbW9jayBib2R5XG4gKiBhY2N1cmF0ZWx5IG1pcnJvcnMgdGhlIHJ1bnRpbWUgY29tcG9uZW50IGhlaWdodC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDYW52YXNDYXJkSGVpZ2h0KFxuICBjb21wOiBSZXBvcnRDb21wb25lbnREZWZpbml0aW9uLFxuICBvdmVycmlkZUNvbXBvbmVudEhlaWdodD86IG51bWJlciB8IG51bGwsXG4gIG92ZXJoZWFkOiBudW1iZXIgPSBDQU5WQVNfQ0FSRF9PVkVSSEVBRFxuKTogc3RyaW5nIHtcbiAgaWYgKG92ZXJyaWRlQ29tcG9uZW50SGVpZ2h0ICE9PSB1bmRlZmluZWQgJiYgb3ZlcnJpZGVDb21wb25lbnRIZWlnaHQgIT09IG51bGwpIHtcbiAgICByZXR1cm4gYCR7b3ZlcnJpZGVDb21wb25lbnRIZWlnaHQgKyBvdmVyaGVhZH1weGA7XG4gIH1cbiAgY29uc3QgaCA9IGNvbXAubGF5b3V0Py5oZWlnaHQ7XG4gIGlmICghaCB8fCBoID09PSAnYXV0bycpIHJldHVybiAnYXV0byc7XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KGgsIDEwKTtcbiAgcmV0dXJuIGlzTmFOKHBhcnNlZCkgPyBoIDogYCR7cGFyc2VkICsgb3ZlcmhlYWR9cHhgO1xufVxuXG4vKipcbiAqIE5hdHVyYWwgbWluaW11bSBoZWlnaHQgaW4gcGl4ZWxzIHJlcXVpcmVkIGZvciBhIGNvbXBvbmVudCB0eXBlIHRvIHJlbmRlciB3aXRob3V0IGNyYW1waW5nIG9yIG92ZXJmbG93LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tcG9uZW50TmF0dXJhbE1pbkhlaWdodCh0eXBlOiBzdHJpbmcpOiBudW1iZXIge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlICdjaGFydCc6XG4gICAgICByZXR1cm4gMjQwO1xuICAgIGNhc2UgJ2twaS1jYXJkJzpcbiAgICAgIHJldHVybiAxMDA7XG4gICAgY2FzZSAndGFibGUnOlxuICAgIGNhc2UgJ2dyaWQnOlxuICAgICAgcmV0dXJuIDIwMDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXNvbHZlcyB0aGUgQ1NTIG1pbi1oZWlnaHQgcHJvcGVydHkgZm9yIHRoZSBjYW52YXMgY29tcG9uZW50IGNhcmQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXNvbHZlQ2FudmFzQ2FyZE1pbkhlaWdodChcbiAgY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbixcbiAgb3ZlcnJpZGVDb21wb25lbnRIZWlnaHQ/OiBudW1iZXIgfCBudWxsLFxuICBvdmVyaGVhZDogbnVtYmVyID0gQ0FOVkFTX0NBUkRfT1ZFUkhFQURcbik6IHN0cmluZyB7XG4gIGNvbnN0IG5hdHVyYWxNaW4gPSBnZXRDb21wb25lbnROYXR1cmFsTWluSGVpZ2h0KGNvbXAudHlwZSk7XG4gIGlmIChvdmVycmlkZUNvbXBvbmVudEhlaWdodCAhPT0gdW5kZWZpbmVkICYmIG92ZXJyaWRlQ29tcG9uZW50SGVpZ2h0ICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIGAke01hdGgubWF4KG5hdHVyYWxNaW4sIG92ZXJyaWRlQ29tcG9uZW50SGVpZ2h0KSArIG92ZXJoZWFkfXB4YDtcbiAgfVxuICBjb25zdCBtaW5IID0gY29tcC5sYXlvdXQ/Lm1pbkhlaWdodDtcbiAgaWYgKCFtaW5IIHx8IG1pbkggPT09ICdhdXRvJykge1xuICAgIHJldHVybiBuYXR1cmFsTWluID4gMCA/IGAke25hdHVyYWxNaW4gKyBvdmVyaGVhZH1weGAgOiAnYXV0byc7XG4gIH1cbiAgY29uc3QgcGFyc2VkID0gcGFyc2VJbnQobWluSCwgMTApO1xuICByZXR1cm4gaXNOYU4ocGFyc2VkKSA/IG1pbkggOiBgJHtNYXRoLm1heChuYXR1cmFsTWluLCBwYXJzZWQpICsgb3ZlcmhlYWR9cHhgO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBDU1MgaGVpZ2h0IHByb3BlcnR5IGZvciBhIHJ1bnRpbWUgY29tcG9uZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZUNvbXBvbmVudEhlaWdodChcbiAgY29tcDogUmVwb3J0Q29tcG9uZW50RGVmaW5pdGlvbixcbiAgb3ZlcnJpZGVIZWlnaHQ/OiBudW1iZXIgfCBudWxsXG4pOiBzdHJpbmcge1xuICBjb25zdCBuYXR1cmFsTWluID0gZ2V0Q29tcG9uZW50TmF0dXJhbE1pbkhlaWdodChjb21wLnR5cGUpO1xuICBpZiAob3ZlcnJpZGVIZWlnaHQgIT09IHVuZGVmaW5lZCAmJiBvdmVycmlkZUhlaWdodCAhPT0gbnVsbCkge1xuICAgIHJldHVybiBgJHtNYXRoLm1heChuYXR1cmFsTWluLCBvdmVycmlkZUhlaWdodCl9cHhgO1xuICB9XG4gIGNvbnN0IGggPSBjb21wLmxheW91dD8uaGVpZ2h0O1xuICBpZiAoIWggfHwgaCA9PT0gJ2F1dG8nKSByZXR1cm4gJ2F1dG8nO1xuICBjb25zdCBwYXJzZWQgPSBwYXJzZUludChoLCAxMCk7XG4gIGlmIChpc05hTihwYXJzZWQpKSByZXR1cm4gaDtcbiAgcmV0dXJuIGAke01hdGgubWF4KG5hdHVyYWxNaW4sIHBhcnNlZCl9cHhgO1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHRoZSBDU1MgbWluLWhlaWdodCBwcm9wZXJ0eSBmb3IgYSBydW50aW1lIGNvbXBvbmVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVDb21wb25lbnRNaW5IZWlnaHQoXG4gIGNvbXA6IFJlcG9ydENvbXBvbmVudERlZmluaXRpb24sXG4gIG92ZXJyaWRlSGVpZ2h0PzogbnVtYmVyIHwgbnVsbFxuKTogc3RyaW5nIHtcbiAgY29uc3QgbmF0dXJhbE1pbiA9IGdldENvbXBvbmVudE5hdHVyYWxNaW5IZWlnaHQoY29tcC50eXBlKTtcbiAgaWYgKG92ZXJyaWRlSGVpZ2h0ICE9PSB1bmRlZmluZWQgJiYgb3ZlcnJpZGVIZWlnaHQgIT09IG51bGwpIHtcbiAgICByZXR1cm4gYCR7TWF0aC5tYXgobmF0dXJhbE1pbiwgb3ZlcnJpZGVIZWlnaHQpfXB4YDtcbiAgfVxuICBjb25zdCBtaW5IID0gY29tcC5sYXlvdXQ/Lm1pbkhlaWdodDtcbiAgaWYgKCFtaW5IIHx8IG1pbkggPT09ICdhdXRvJykge1xuICAgIHJldHVybiBuYXR1cmFsTWluID4gMCA/IGAke25hdHVyYWxNaW59cHhgIDogJ2F1dG8nO1xuICB9XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlSW50KG1pbkgsIDEwKTtcbiAgcmV0dXJuIGlzTmFOKHBhcnNlZCkgPyBtaW5IIDogYCR7TWF0aC5tYXgobmF0dXJhbE1pbiwgcGFyc2VkKX1weGA7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlcyBuZXcgc25hcHBlZCBzcGFuIGdpdmVuIGRyYWcgZGVsdGFYLCBjb2x1bW4gd2lkdGgsIGFuZCBncmlkIGdhcC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZVNuYXBwZWRTcGFuKFxuICBkZWx0YVg6IG51bWJlcixcbiAgc3RhcnRTcGFuOiBudW1iZXIsXG4gIGNvbFdpZHRoOiBudW1iZXIsXG4gIGdhcDogbnVtYmVyLFxuICB0b3RhbENvbHM6IG51bWJlclxuKTogbnVtYmVyIHtcbiAgY29uc3Qgc3RlcCA9IGNvbFdpZHRoICsgZ2FwO1xuICBpZiAoc3RlcCA8PSAwKSByZXR1cm4gc3RhcnRTcGFuO1xuICBjb25zdCBzcGFuRGVsdGEgPSBNYXRoLnJvdW5kKGRlbHRhWCAvIHN0ZXApO1xuICByZXR1cm4gTWF0aC5tYXgoMSwgTWF0aC5taW4odG90YWxDb2xzLCBzdGFydFNwYW4gKyBzcGFuRGVsdGEpKTtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGVzIG5ldyBoZWlnaHQgZ2l2ZW4gZHJhZyBkZWx0YVkgYW5kIG1pbmltdW0gaGVpZ2h0IGNvbnN0cmFpbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVTbmFwcGVkSGVpZ2h0KFxuICBkZWx0YVk6IG51bWJlcixcbiAgc3RhcnRIZWlnaHQ6IG51bWJlcixcbiAgbWluSGVpZ2h0OiBudW1iZXIgPSA1MFxuKTogbnVtYmVyIHtcbiAgcmV0dXJuIE1hdGgubWF4KG1pbkhlaWdodCwgTWF0aC5yb3VuZChzdGFydEhlaWdodCArIGRlbHRhWSkpO1xufVxuXG4vKipcbiAqIE1hcHMgY29tcG9uZW50IHR5cGUgdG8gc3RhbmRhcmQgaWNvbiBpZGVudGlmaWVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29tcG9uZW50SWNvbk5hbWUodHlwZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSAnaW5wdXQnOiByZXR1cm4gJ3RleHQtZmllbGRzJztcbiAgICBjYXNlICdkcm9wZG93bic6IHJldHVybiAnZHJvcGRvd24nO1xuICAgIGNhc2UgJ2RhdGUnOiByZXR1cm4gJ2NhbGVuZGFyJztcbiAgICBjYXNlICdkYXRlLXJhbmdlJzogcmV0dXJuICdjYWxlbmRhcic7XG4gICAgY2FzZSAnbnVtYmVyJzogcmV0dXJuICdudW1iZXInO1xuICAgIGNhc2UgJ2NoZWNrYm94JzogcmV0dXJuICdjaGVja2JveCc7XG4gICAgY2FzZSAnYnV0dG9uJzogcmV0dXJuICdidXR0b24nO1xuICAgIGNhc2UgJ2twaS1jYXJkJzogcmV0dXJuICdrcGknO1xuICAgIGNhc2UgJ2NoYXJ0JzogcmV0dXJuICdjaGFydC1iYXInO1xuICAgIGRlZmF1bHQ6IHJldHVybiAnYm94JztcbiAgfVxufVxuIl19
@@ -1,2 +1,2 @@
1
- export { ReportExportService, sanitizeCsvCell, generateCsvContent } from './services/report-export.service';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9mZWF0dXJlcy9leHBvcnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ25CLE1BQU0sa0NBQWtDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7IEV4cG9ydENvbHVtbiwgQ3N2RXhwb3J0T3B0aW9ucywgSnNvbkV4cG9ydE9wdGlvbnMgfSBmcm9tICcuL21vZGVscy9leHBvcnQubW9kZWxzJztcbmV4cG9ydCB7XG4gIFJlcG9ydEV4cG9ydFNlcnZpY2UsXG4gIHNhbml0aXplQ3N2Q2VsbCxcbiAgZ2VuZXJhdGVDc3ZDb250ZW50XG59IGZyb20gJy4vc2VydmljZXMvcmVwb3J0LWV4cG9ydC5zZXJ2aWNlJztcbiJdfQ==
1
+ export { ReportExportService, sanitizeCsvCell, generateCsvContent, generateExcelXml, generateHtmlContent, formatFilterSummary, } from './services/report-export.service';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9id2F5cy1yZXBvcnQvc3JjL2xpYi9mZWF0dXJlcy9leHBvcnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsT0FBTyxFQUNMLG1CQUFtQixFQUNuQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixtQkFBbUIsRUFDbkIsbUJBQW1CLEdBQ3BCLE1BQU0sa0NBQWtDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSB7XG4gIEV4cG9ydENvbHVtbixcbiAgQ3N2RXhwb3J0T3B0aW9ucyxcbiAgRXhjZWxFeHBvcnRPcHRpb25zLFxuICBIdG1sRXhwb3J0T3B0aW9ucyxcbiAgSnNvbkV4cG9ydE9wdGlvbnMsXG4gIEJyYW5kZWRIZWFkZXJPcHRpb25zLFxufSBmcm9tICcuL21vZGVscy9leHBvcnQubW9kZWxzJztcbmV4cG9ydCB7XG4gIFJlcG9ydEV4cG9ydFNlcnZpY2UsXG4gIHNhbml0aXplQ3N2Q2VsbCxcbiAgZ2VuZXJhdGVDc3ZDb250ZW50LFxuICBnZW5lcmF0ZUV4Y2VsWG1sLFxuICBnZW5lcmF0ZUh0bWxDb250ZW50LFxuICBmb3JtYXRGaWx0ZXJTdW1tYXJ5LFxufSBmcm9tICcuL3NlcnZpY2VzL3JlcG9ydC1leHBvcnQuc2VydmljZSc7XG4iXX0=
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0Lm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2ZlYXR1cmVzL2V4cG9ydC9tb2RlbHMvZXhwb3J0Lm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBFeHBvcnRDb2x1bW4ge1xuICBmaWVsZDogc3RyaW5nO1xuICBoZWFkZXI6IHN0cmluZztcbiAgZm9ybWF0dGVyPzogKHZhbHVlOiBhbnksIHJvdz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3N2RXhwb3J0T3B0aW9ucyB7XG4gIGZpbGVOYW1lPzogc3RyaW5nO1xuICBjb2x1bW5zPzogRXhwb3J0Q29sdW1uW107XG4gIGluY2x1ZGVIZWFkZXI/OiBib29sZWFuO1xuICBkZWxpbWl0ZXI/OiBzdHJpbmc7XG4gIGFkZEJvbT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbkV4cG9ydE9wdGlvbnMge1xuICBmaWxlTmFtZT86IHN0cmluZztcbiAgcHJldHR5PzogYm9vbGVhbjtcbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwb3J0Lm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2ZlYXR1cmVzL2V4cG9ydC9tb2RlbHMvZXhwb3J0Lm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBFeHBvcnRDb2x1bW4ge1xuICBmaWVsZDogc3RyaW5nO1xuICBoZWFkZXI6IHN0cmluZztcbiAgZm9ybWF0dGVyPzogKHZhbHVlOiBhbnksIHJvdz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnJhbmRlZEhlYWRlck9wdGlvbnMge1xuICBjb21wYW55TmFtZT86IHN0cmluZztcbiAgYnJhbmNoTmFtZT86IHN0cmluZztcbiAgcmVwb3J0VGl0bGU/OiBzdHJpbmc7XG4gIGdlbmVyYXRlZEF0PzogRGF0ZSB8IHN0cmluZztcbiAgZ2VuZXJhdGVkQnk/OiBzdHJpbmc7XG4gIGFjdGl2ZUZpbHRlclN1bW1hcnk/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDc3ZFeHBvcnRPcHRpb25zIHtcbiAgZmlsZU5hbWU/OiBzdHJpbmc7XG4gIGNvbHVtbnM/OiBFeHBvcnRDb2x1bW5bXTtcbiAgaW5jbHVkZUhlYWRlcj86IGJvb2xlYW47XG4gIGRlbGltaXRlcj86IHN0cmluZztcbiAgYWRkQm9tPzogYm9vbGVhbjtcbiAgYnJhbmRlZEhlYWRlcj86IEJyYW5kZWRIZWFkZXJPcHRpb25zO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4Y2VsRXhwb3J0T3B0aW9ucyB7XG4gIGZpbGVOYW1lPzogc3RyaW5nO1xuICBzaGVldE5hbWU/OiBzdHJpbmc7XG4gIGNvbHVtbnM/OiBFeHBvcnRDb2x1bW5bXTtcbiAgaW5jbHVkZUhlYWRlcj86IGJvb2xlYW47XG4gIGJyYW5kZWRIZWFkZXI/OiBCcmFuZGVkSGVhZGVyT3B0aW9ucztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIdG1sRXhwb3J0T3B0aW9ucyB7XG4gIGZpbGVOYW1lPzogc3RyaW5nO1xuICBjb2x1bW5zPzogRXhwb3J0Q29sdW1uW107XG4gIGJyYW5kZWRIZWFkZXI/OiBCcmFuZGVkSGVhZGVyT3B0aW9ucztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGF1dG9QcmludD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbkV4cG9ydE9wdGlvbnMge1xuICBmaWxlTmFtZT86IHN0cmluZztcbiAgcHJldHR5PzogYm9vbGVhbjtcbn1cbiJdfQ==