bways-report 0.1.9 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +463 -316
- package/esm2022/lib/core/config/bways-report-config.mjs +29 -32
- package/esm2022/lib/core/models/report-datasource.model.mjs +1 -1
- package/esm2022/lib/core/services/report-api-execution.service.mjs +33 -11
- package/esm2022/lib/core/services/report-session-context.service.mjs +72 -3
- package/esm2022/lib/core/tokens/designer-config.token.mjs +4 -0
- package/esm2022/lib/core/tokens/reporting-config.token.mjs +1 -1
- package/esm2022/lib/core/utils/report-endpoint.util.mjs +22 -0
- package/esm2022/lib/core/utils/report-request-scope.mjs +48 -0
- package/esm2022/lib/data-access/adapters/endpoint-datasource.adapter.mjs +8 -1
- package/esm2022/lib/data-access/adapters/endpoint-lookup.adapter.mjs +5 -2
- package/esm2022/lib/data-access/adapters/endpoint-masterdata.adapter.mjs +5 -2
- package/esm2022/lib/data-access/adapters/endpoint-persistence.adapter.mjs +30 -14
- package/esm2022/lib/data-access/adapters/endpoint-schema-discovery.adapter.mjs +32 -28
- package/esm2022/lib/data-access/adapters/endpoint-tokens.mjs +1 -1
- package/esm2022/lib/data-access/adapters/http-datasource.adapter.mjs +4 -37
- package/esm2022/lib/data-access/adapters/http-lookup.adapter.mjs +4 -50
- package/esm2022/lib/data-access/adapters/http-persistence.adapter.mjs +43 -194
- package/esm2022/lib/data-access/adapters/http-schema-discovery.adapter.mjs +17 -65
- package/esm2022/lib/data-access/adapters/index.mjs +1 -1
- package/esm2022/lib/data-access/adapters/local-storage-persistence.adapter.mjs +13 -4
- package/esm2022/lib/data-access/adapters/report-id-availability.mjs +20 -0
- package/esm2022/lib/data-access/adapters/session-headers.mjs +11 -0
- package/esm2022/lib/data-access/contracts/index.mjs +1 -1
- package/esm2022/lib/data-access/contracts/report-persistence.contract.mjs +13 -1
- package/esm2022/lib/features/designer/components/design-canvas/design-canvas.component.mjs +50 -40
- package/esm2022/lib/features/designer/components/dialogs/report-saved-dialog.component.mjs +546 -119
- package/esm2022/lib/features/designer/components/property-editor/property-editor-datasource.component.mjs +12 -6
- package/esm2022/lib/features/designer/components/property-editor/property-editor-grid.component.mjs +9 -8
- package/esm2022/lib/features/designer/components/property-editor/property-editor.component.mjs +9 -4
- package/esm2022/lib/features/designer/components/toolbar/designer-toolbar.component.mjs +54 -32
- package/esm2022/lib/features/designer/designer.component.mjs +100 -67
- package/esm2022/lib/features/designer/rpt-report-designer.component.mjs +10 -4
- package/esm2022/lib/features/designer/services/designer-config.service.mjs +56 -0
- package/esm2022/lib/features/designer/services/designer-endpoints.service.mjs +155 -0
- package/esm2022/lib/features/designer/services/designer-state.service.mjs +3 -2
- package/esm2022/lib/features/embed/bways-report-builder.component.mjs +3 -3
- package/esm2022/lib/features/export/services/report-export.service.mjs +11 -6
- package/esm2022/lib/features/persistence/services/report-store.service.mjs +78 -23
- package/esm2022/lib/features/persistence/services/schema-validator.service.mjs +59 -3
- package/esm2022/lib/features/routing/components/routed-report-designer.component.mjs +12 -17
- package/esm2022/lib/features/routing/components/routed-report-runtime.component.mjs +5 -3
- package/esm2022/lib/features/routing/report-routes.mjs +6 -6
- package/esm2022/lib/features/routing/resolvers/report-route-identifier.mjs +5 -0
- package/esm2022/lib/features/routing/resolvers/report.resolver.mjs +3 -2
- package/esm2022/lib/features/runtime/report-execution.service.mjs +18 -5
- package/esm2022/lib/features/runtime/report-grid-bridge.component.mjs +4 -2
- package/esm2022/lib/features/runtime/report-runtime.component.mjs +94 -71
- package/esm2022/lib/features/runtime/rpt-report.component.mjs +49 -41
- package/esm2022/lib/primitives/components/chart-bridge/report-chart-bridge.component.mjs +7 -2
- package/esm2022/lib/primitives/components/icon/rpt-icon.component.mjs +13 -1
- package/esm2022/lib/provide-reporting.mjs +9 -29
- package/fesm2022/bways-report.mjs +1789 -1041
- package/fesm2022/bways-report.mjs.map +1 -1
- package/lib/core/config/bways-report-config.d.ts +14 -5
- package/lib/core/models/report-datasource.model.d.ts +5 -0
- package/lib/core/services/report-session-context.service.d.ts +9 -0
- package/lib/core/tokens/designer-config.token.d.ts +4 -0
- package/lib/core/tokens/reporting-config.token.d.ts +4 -0
- package/lib/core/utils/report-endpoint.util.d.ts +12 -0
- package/lib/core/utils/report-request-scope.d.ts +14 -0
- package/lib/data-access/adapters/endpoint-persistence.adapter.d.ts +6 -2
- package/lib/data-access/adapters/endpoint-schema-discovery.adapter.d.ts +4 -2
- package/lib/data-access/adapters/endpoint-tokens.d.ts +4 -0
- package/lib/data-access/adapters/http-datasource.adapter.d.ts +1 -3
- package/lib/data-access/adapters/http-lookup.adapter.d.ts +1 -3
- package/lib/data-access/adapters/http-persistence.adapter.d.ts +11 -16
- package/lib/data-access/adapters/http-schema-discovery.adapter.d.ts +3 -5
- package/lib/data-access/adapters/index.d.ts +1 -1
- package/lib/data-access/adapters/local-storage-persistence.adapter.d.ts +2 -2
- package/lib/data-access/adapters/report-id-availability.d.ts +6 -0
- package/lib/data-access/adapters/session-headers.d.ts +3 -0
- package/lib/data-access/contracts/index.d.ts +1 -0
- package/lib/data-access/contracts/report-persistence.contract.d.ts +16 -1
- package/lib/features/designer/components/design-canvas/design-canvas.component.d.ts +2 -0
- package/lib/features/designer/components/dialogs/report-saved-dialog.component.d.ts +37 -5
- package/lib/features/designer/components/property-editor/property-editor-datasource.component.d.ts +4 -3
- package/lib/features/designer/components/property-editor/property-editor-grid.component.d.ts +1 -0
- package/lib/features/designer/components/property-editor/property-editor.component.d.ts +1 -0
- package/lib/features/designer/components/toolbar/designer-toolbar.component.d.ts +7 -1
- package/lib/features/designer/designer.component.d.ts +15 -2
- package/lib/features/designer/rpt-report-designer.component.d.ts +5 -1
- package/lib/features/designer/services/designer-config.service.d.ts +13 -0
- package/lib/features/designer/services/designer-endpoints.service.d.ts +25 -0
- package/lib/features/persistence/services/report-store.service.d.ts +15 -1
- package/lib/features/persistence/services/schema-validator.service.d.ts +2 -0
- package/lib/features/routing/resolvers/report-route-identifier.d.ts +2 -0
- package/lib/features/runtime/report-execution.service.d.ts +3 -0
- package/lib/features/runtime/report-grid-bridge.component.d.ts +1 -0
- package/lib/features/runtime/report-runtime.component.d.ts +1 -0
- package/lib/features/runtime/rpt-report.component.d.ts +5 -0
- package/lib/primitives/components/chart-bridge/report-chart-bridge.component.d.ts +3 -1
- package/package.json +2 -1
|
@@ -10,7 +10,7 @@ import { extractLookupOptionItem, extractRowArray } from '../../core/utils/data-
|
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
/**
|
|
12
12
|
* Built-in HTTP adapter for fetching dropdown options from backend database tables, SPs, and REST APIs.
|
|
13
|
-
* Includes in-memory caching with TTL, in-flight request deduplication, and
|
|
13
|
+
* Includes in-memory caching with TTL, in-flight request deduplication, and explicit request errors.
|
|
14
14
|
*/
|
|
15
15
|
export class HttpReportLookupAdapter extends ReportLookupAdapter {
|
|
16
16
|
http = inject(HttpClient, { optional: true });
|
|
@@ -19,45 +19,6 @@ export class HttpReportLookupAdapter extends ReportLookupAdapter {
|
|
|
19
19
|
apiExecutionService = inject(ReportApiExecutionService, { optional: true });
|
|
20
20
|
cache = new Map();
|
|
21
21
|
inFlight = new Map();
|
|
22
|
-
mockDataStore = {
|
|
23
|
-
Customers: [
|
|
24
|
-
{ customerId: 101, customerName: 'Acme Corporation', branchId: 1, isActive: true },
|
|
25
|
-
{ customerId: 102, customerName: 'Globex Industries', branchId: 2, isActive: true },
|
|
26
|
-
{ customerId: 103, customerName: 'Initech Software', branchId: 1, isActive: true },
|
|
27
|
-
{ customerId: 104, customerName: 'Umbrella Corporation', branchId: 3, isActive: true },
|
|
28
|
-
{ customerId: 105, customerName: 'Wayne Enterprises', branchId: 2, isActive: true },
|
|
29
|
-
{ customerId: 106, customerName: 'Stark Industries', branchId: 1, isActive: true },
|
|
30
|
-
],
|
|
31
|
-
Branches: [
|
|
32
|
-
{ branchId: 1, branchName: 'North America HQ (New York)', region: 'North America' },
|
|
33
|
-
{ branchId: 2, branchName: 'EMEA Division (London)', region: 'Europe' },
|
|
34
|
-
{ branchId: 3, branchName: 'APAC Hub (Singapore)', region: 'Asia Pacific' },
|
|
35
|
-
{ branchId: 4, branchName: 'LATAM Office (São Paulo)', region: 'Latin America' },
|
|
36
|
-
],
|
|
37
|
-
Products: [
|
|
38
|
-
{ productId: 1, productName: 'Enterprise ERP Suite', category: 'Software', unitPrice: 2400 },
|
|
39
|
-
{ productId: 2, productName: 'Cloud Analytics Pro', category: 'SaaS', unitPrice: 1200 },
|
|
40
|
-
{ productId: 3, productName: 'Security Shield Endpoint', category: 'Security', unitPrice: 850 },
|
|
41
|
-
{ productId: 4, productName: 'Dedicated API Gateway', category: 'Infrastructure', unitPrice: 3100 },
|
|
42
|
-
],
|
|
43
|
-
PaymentMethods: [
|
|
44
|
-
{ code: 'BANK_TRANSFER', title: 'Direct Bank Wire' },
|
|
45
|
-
{ code: 'CREDIT_CARD', title: 'Corporate Credit Card' },
|
|
46
|
-
{ code: 'PAYPAL', title: 'PayPal Corporate' },
|
|
47
|
-
{ code: 'NET_30', title: 'Net 30 Invoicing' },
|
|
48
|
-
],
|
|
49
|
-
usp_GetCustomerList: [
|
|
50
|
-
{ id: 101, name: 'Acme Corporation (SP)', branchId: 1, branch: 'NA' },
|
|
51
|
-
{ id: 102, name: 'Globex Industries (SP)', branchId: 2, branch: 'EMEA' },
|
|
52
|
-
{ id: 105, name: 'Wayne Enterprises (SP)', branchId: 1, branch: 'NA' },
|
|
53
|
-
{ id: 106, name: 'Stark Industries (SP)', branchId: 3, branch: 'APAC' },
|
|
54
|
-
],
|
|
55
|
-
usp_GetBranchLookup: [
|
|
56
|
-
{ id: 1, name: 'North America HQ' },
|
|
57
|
-
{ id: 2, name: 'EMEA Division' },
|
|
58
|
-
{ id: 3, name: 'APAC Hub' },
|
|
59
|
-
],
|
|
60
|
-
};
|
|
61
22
|
fetchOptions(request) {
|
|
62
23
|
const cacheKey = this.generateCacheKey(request);
|
|
63
24
|
const cached = this.cache.get(cacheKey);
|
|
@@ -116,9 +77,7 @@ export class HttpReportLookupAdapter extends ReportLookupAdapter {
|
|
|
116
77
|
this.inFlight.set(cacheKey, obs$);
|
|
117
78
|
return obs$;
|
|
118
79
|
}
|
|
119
|
-
|
|
120
|
-
this.setCache(cacheKey, fallback, 600);
|
|
121
|
-
return of(fallback);
|
|
80
|
+
return throwError(() => new Error('[bways-report] Lookup requires HttpClient and apiBaseUrl.'));
|
|
122
81
|
}
|
|
123
82
|
setCache(key, data, ttlSeconds = 600) {
|
|
124
83
|
this.cache.set(key, {
|
|
@@ -127,12 +86,7 @@ export class HttpReportLookupAdapter extends ReportLookupAdapter {
|
|
|
127
86
|
});
|
|
128
87
|
}
|
|
129
88
|
generateCacheKey(req) {
|
|
130
|
-
return `${req.sourceType}:${req.entityName || req.apiEndpoint}:${req.valueField}:${req.displayField}:${req.dataPath ?? ''}:${JSON.stringify(req.filter ?? {})}:${JSON.stringify(req.parameters ?? {})}`;
|
|
131
|
-
}
|
|
132
|
-
resolveMockOptions(req) {
|
|
133
|
-
const entity = req.entityName || '';
|
|
134
|
-
const records = this.mockDataStore[entity] ?? [];
|
|
135
|
-
return records.map((r) => extractLookupOptionItem(r, req.valueField, req.displayField));
|
|
89
|
+
return JSON.stringify(this.sessionService?.getCurrentSessionContext() ?? {}) + ':' + `${req.sourceType}:${req.entityName || req.apiEndpoint}:${req.valueField}:${req.displayField}:${req.dataPath ?? ''}:${req.schema ?? 'dbo'}:${req.limit ?? 500}:${JSON.stringify(req.filter ?? {})}:${JSON.stringify(req.parameters ?? {})}`;
|
|
136
90
|
}
|
|
137
91
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpReportLookupAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
138
92
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpReportLookupAdapter });
|
|
@@ -142,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
142
96
|
}] });
|
|
143
97
|
/** Convenience alias */
|
|
144
98
|
export const HttpLookupAdapter = HttpReportLookupAdapter;
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1sb29rdXAuYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2RhdGEtYWNjZXNzL2FkYXB0ZXJzL2h0dHAtbG9va3VwLmFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFHTCxtQkFBbUIsR0FDcEIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7O0FBT3BHOzs7R0FHRztBQUVILE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxtQkFBbUI7SUFDN0MsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5QyxNQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEQsY0FBYyxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSxFQUFFLFFB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QUcsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1FBQ3BDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pELE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQzVCLHVCQUF1QixDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FDN0QsQ0FBQztJQUNKLENBQUM7d0dBN0pVLHVCQUF1Qjs0R0FBdkIsdUJBQXVCOzs0RkFBdkIsdUJBQXVCO2tCQURuQyxVQUFVOztBQWlLWCx3QkFBd0I7QUFDeEIsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsdUJBQXVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbmFsaXplLCBtYXAsIHNoYXJlUmVwbGF5LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBMb29rdXBPcHRpb25JdGVtLFxuICBMb29rdXBRdWVyeVJlcXVlc3QsXG4gIFJlcG9ydExvb2t1cEFkYXB0ZXIsXG59IGZyb20gJy4uL2NvbnRyYWN0cy9sb29rdXAuY29udHJhY3QnO1xuaW1wb3J0IHsgUkVQT1JUSU5HX0NPTkZJRyB9IGZyb20gJy4uLy4uL2NvcmUvdG9rZW5zL3JlcG9ydGluZy1jb25maWcudG9rZW4nO1xuaW1wb3J0IHsgUmVwb3J0U2Vzc2lvbkNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9zZXJ2aWNlcy9yZXBvcnQtc2Vzc2lvbi1jb250ZXh0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVwb3J0QXBpRXhlY3V0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcmVwb3J0LWFwaS1leGVjdXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBleHRyYWN0TG9va3VwT3B0aW9uSXRlbSwgZXh0cmFjdFJvd0FycmF5IH0gZnJvbSAnLi4vLi4vY29yZS91dGlscy9kYXRhLW5vcm1hbGl6YXRpb24udXRpbCc7XG5cbmludGVyZmFjZSBDYWNoZUVudHJ5IHtcbiAgZXhwaXJlc0F0OiBudW1iZXI7XG4gIGRhdGE6IExvb2t1cE9wdGlvbkl0ZW1bXTtcbn1cblxuLyoqXG4gKiBCdWlsdC1pbiBIVFRQIGFkYXB0ZXIgZm9yIGZldGNoaW5nIGRyb3Bkb3duIG9wdGlvbnMgZnJvbSBiYWNrZW5kIGRhdGFiYXNlIHRhYmxlcywgU1BzLCBhbmQgUkVTVCBBUElzLlxuICogSW5jbHVkZXMgaW4tbWVtb3J5IGNhY2hpbmcgd2l0aCBUVEwsIGluLWZsaWdodCByZXF1ZXN0IGRlZHVwbGljYXRpb24sIGFuZCBmYWxsYmFjayBtb2NrIGRhdGEuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIdHRwUmVwb3J0TG9va3VwQWRhcHRlciBleHRlbmRzIFJlcG9ydExvb2t1cEFkYXB0ZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3QoUkVQT1JUSU5HX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU2VydmljZSA9IGluamVjdChSZXBvcnRTZXNzaW9uQ29udGV4dFNlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpRXhlY3V0aW9uU2VydmljZSA9IGluamVjdChSZXBvcnRBcGlFeGVjdXRpb25TZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2FjaGUgPSBuZXcgTWFwPHN0cmluZywgQ2FjaGVFbnRyeT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbkZsaWdodCA9IG5ldyBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPExvb2t1cE9wdGlvbkl0ZW1bXT4+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtb2NrRGF0YVN0b3JlOiBSZWNvcmQ8c3RyaW5nLCBBcnJheTx7IFtrZXk6IHN0cmluZ106IHVua25vd24gfT4+ID0ge1xuICAgIEN1c3RvbWVyczogW1xuICAgICAgeyBjdXN0b21lcklkOiAxMDEsIGN1c3RvbWVyTmFtZTogJ0FjbWUgQ29ycG9yYXRpb24nLCBicmFuY2hJZDogMSwgaXNBY3RpdmU6IHRydWUgfSxcbiAgICAgIHsgY3VzdG9tZXJJZDogMTAyLCBjdXN0b21lck5hbWU6ICdHbG9iZXggSW5kdXN0cmllcycsIGJyYW5jaElkOiAyLCBpc0FjdGl2ZTogdHJ1ZSB9LFxuICAgICAgeyBjdXN0b21lcklkOiAxMDMsIGN1c3RvbWVyTmFtZTogJ0luaXRlY2ggU29mdHdhcmUnLCBicmFuY2hJZDogMSwgaXNBY3RpdmU6IHRydWUgfSxcbiAgICAgIHsgY3VzdG9tZXJJZDogMTA0LCBjdXN0b21lck5hbWU6ICdVbWJyZWxsYSBDb3Jwb3JhdGlvbicsIGJyYW5jaElkOiAzLCBpc0FjdGl2ZTogdHJ1ZSB9LFxuICAgICAgeyBjdXN0b21lcklkOiAxMDUsIGN1c3RvbWVyTmFtZTogJ1dheW5lIEVudGVycHJpc2VzJywgYnJhbmNoSWQ6IDIsIGlzQWN0aXZlOiB0cnVlIH0sXG4gICAgICB7IGN1c3RvbWVySWQ6IDEwNiwgY3VzdG9tZXJOYW1lOiAnU3RhcmsgSW5kdXN0cmllcycsIGJyYW5jaElkOiAxLCBpc0FjdGl2ZTogdHJ1ZSB9LFxuICAgIF0sXG4gICAgQnJhbmNoZXM6IFtcbiAgICAgIHsgYnJhbmNoSWQ6IDEsIGJyYW5jaE5hbWU6ICdOb3J0aCBBbWVyaWNhIEhRIChOZXcgWW9yayknLCByZWdpb246ICdOb3J0aCBBbWVyaWNhJyB9LFxuICAgICAgeyBicmFuY2hJZDogMiwgYnJhbmNoTmFtZTogJ0VNRUEgRGl2aXNpb24gKExvbmRvbiknLCByZWdpb246ICdFdXJvcGUnIH0sXG4gICAgICB7IGJyYW5jaElkOiAzLCBicmFuY2hOYW1lOiAnQVBBQyBIdWIgKFNpbmdhcG9yZSknLCByZWdpb246ICdBc2lhIFBhY2lmaWMnIH0sXG4gICAgICB7IGJyYW5jaElkOiA0LCBicmFuY2hOYW1lOiAnTEFUQU0gT2ZmaWNlIChTw6NvIFBhdWxvKScsIHJlZ2lvbjogJ0xhdGluIEFtZXJpY2EnIH0sXG4gICAgXSxcbiAgICBQcm9kdWN0czogW1xuICAgICAgeyBwcm9kdWN0SWQ6IDEsIHByb2R1Y3ROYW1lOiAnRW50ZXJwcmlzZSBFUlAgU3VpdGUnLCBjYXRlZ29yeTogJ1NvZnR3YXJlJywgdW5pdFByaWNlOiAyNDAwIH0sXG4gICAgICB7IHByb2R1Y3RJZDogMiwgcHJvZHVjdE5hbWU6ICdDbG91ZCBBbmFseXRpY3MgUHJvJywgY2F0ZWdvcnk6ICdTYWFTJywgdW5pdFByaWNlOiAxMjAwIH0sXG4gICAgICB7IHByb2R1Y3RJZDogMywgcHJvZHVjdE5hbWU6ICdTZWN1cml0eSBTaGllbGQgRW5kcG9pbnQnLCBjYXRlZ29yeTogJ1NlY3VyaXR5JywgdW5pdFByaWNlOiA4NTAgfSxcbiAgICAgIHsgcHJvZHVjdElkOiA0LCBwcm9kdWN0TmFtZTogJ0RlZGljYXRlZCBBUEkgR2F0ZXdheScsIGNhdGVnb3J5OiAnSW5mcmFzdHJ1Y3R1cmUnLCB1bml0UHJpY2U6IDMxMDAgfSxcbiAgICBdLFxuICAgIFBheW1lbnRNZXRob2RzOiBbXG4gICAgICB7IGNvZGU6ICdCQU5LX1RSQU5TRkVSJywgdGl0bGU6ICdEaXJlY3QgQmFuayBXaXJlJyB9LFxuICAgICAgeyBjb2RlOiAnQ1JFRElUX0NBUkQnLCB0aXRsZTogJ0NvcnBvcmF0ZSBDcmVkaXQgQ2FyZCcgfSxcbiAgICAgIHsgY29kZTogJ1BBWVBBTCcsIHRpdGxlOiAnUGF5UGFsIENvcnBvcmF0ZScgfSxcbiAgICAgIHsgY29kZTogJ05FVF8zMCcsIHRpdGxlOiAnTmV0IDMwIEludm9pY2luZycgfSxcbiAgICBdLFxuICAgIHVzcF9HZXRDdXN0b21lckxpc3Q6IFtcbiAgICAgIHsgaWQ6IDEwMSwgbmFtZTogJ0FjbWUgQ29ycG9yYXRpb24gKFNQKScsIGJyYW5jaElkOiAxLCBicmFuY2g6ICdOQScgfSxcbiAgICAgIHsgaWQ6IDEwMiwgbmFtZTogJ0dsb2JleCBJbmR1c3RyaWVzIChTUCknLCBicmFuY2hJZDogMiwgYnJhbmNoOiAnRU1FQScgfSxcbiAgICAgIHsgaWQ6IDEwNSwgbmFtZTogJ1dheW5lIEVudGVycHJpc2VzIChTUCknLCBicmFuY2hJZDogMSwgYnJhbmNoOiAnTkEnIH0sXG4gICAgICB7IGlkOiAxMDYsIG5hbWU6ICdTdGFyayBJbmR1c3RyaWVzIChTUCknLCBicmFuY2hJZDogMywgYnJhbmNoOiAnQVBBQycgfSxcbiAgICBdLFxuICAgIHVzcF9HZXRCcmFuY2hMb29rdXA6IFtcbiAgICAgIHsgaWQ6IDEsIG5hbWU6ICdOb3J0aCBBbWVyaWNhIEhRJyB9LFxuICAgICAgeyBpZDogMiwgbmFtZTogJ0VNRUEgRGl2aXNpb24nIH0sXG4gICAgICB7IGlkOiAzLCBuYW1lOiAnQVBBQyBIdWInIH0sXG4gICAgXSxcbiAgfTtcblxuICBmZXRjaE9wdGlvbnMocmVxdWVzdDogTG9va3VwUXVlcnlSZXF1ZXN0KTogT2JzZXJ2YWJsZTxMb29rdXBPcHRpb25JdGVtW10+IHtcbiAgICBjb25zdCBjYWNoZUtleSA9IHRoaXMuZ2VuZXJhdGVDYWNoZUtleShyZXF1ZXN0KTtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLmNhY2hlLmdldChjYWNoZUtleSk7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgIGlmIChjYWNoZWQgJiYgY2FjaGVkLmV4cGlyZXNBdCA+IG5vdykge1xuICAgICAgcmV0dXJuIG9mKGNhY2hlZC5kYXRhKTtcbiAgICB9XG5cbiAgICBjb25zdCBydW5uaW5nID0gdGhpcy5pbkZsaWdodC5nZXQoY2FjaGVLZXkpO1xuICAgIGlmIChydW5uaW5nKSB7XG4gICAgICByZXR1cm4gcnVubmluZztcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgQVBJLWJhc2VkIGRyb3Bkb3duIGxvb2t1cHNcbiAgICBpZiAoKHJlcXVlc3Quc291cmNlVHlwZSA9PT0gJ2FwaScgfHwgcmVxdWVzdC5hcGlFbmRwb2ludCkgJiYgdGhpcy5hcGlFeGVjdXRpb25TZXJ2aWNlKSB7XG4gICAgICBjb25zdCBlbmRwb2ludFVybCA9IHJlcXVlc3QuYXBpRW5kcG9pbnQgfHwgcmVxdWVzdC5lbnRpdHlOYW1lIHx8ICcnO1xuICAgICAgY29uc3Qgb2JzJCA9IHRoaXMuYXBpRXhlY3V0aW9uU2VydmljZVxuICAgICAgICAuZXhlY3V0ZUFwaShcbiAgICAgICAgICB7XG4gICAgICAgICAgICBlbmRwb2ludDogZW5kcG9pbnRVcmwsXG4gICAgICAgICAgICBkYXRhUGF0aDogcmVxdWVzdC5kYXRhUGF0aCxcbiAgICAgICAgICAgIHVzZVByb3h5OiByZXF1ZXN0LnVzZVByb3h5LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWVzdC5wYXJhbWV0ZXJzIGFzIGFueSxcbiAgICAgICAgICByZXF1ZXN0LmZpbHRlciBhcyBhbnlcbiAgICAgICAgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGl0ZW1zKSA9PlxuICAgICAgICAgICAgaXRlbXMubWFwKChyOiBhbnkpID0+XG4gICAgICAgICAgICAgIGV4dHJhY3RMb29rdXBPcHRpb25JdGVtKHIsIHJlcXVlc3QudmFsdWVGaWVsZCwgcmVxdWVzdC5kaXNwbGF5RmllbGQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0YXAoKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID4gMCkgdGhpcy5zZXRDYWNoZShjYWNoZUtleSwgaXRlbXMsIDYwMCk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtc2cgPSBlcnI/LmVycm9yPy5tZXNzYWdlIHx8IGVycj8ubWVzc2FnZSB8fCAnQVBJIGxvb2t1cCByZXF1ZXN0IGZhaWxlZCc7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoQXJyYXkuaXNBcnJheShtc2cpID8gbXNnLmpvaW4oJywgJykgOiBtc2cpKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluRmxpZ2h0LmRlbGV0ZShjYWNoZUtleSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgICAgICApO1xuXG4gICAgICB0aGlzLmluRmxpZ2h0LnNldChjYWNoZUtleSwgb2JzJCk7XG4gICAgICByZXR1cm4gb2JzJDtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5jb25maWc/LmFwaUJhc2VVcmw7XG4gICAgaWYgKGJhc2VVcmwgJiYgdGhpcy5odHRwKSB7XG4gICAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9uU2VydmljZT8uc2Vzc2lvbkNvbnRleHQoKSA/PyB7fTtcbiAgICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgICBpZiAoc2Vzc2lvblsnY29tcGFueUlkJ10gIT09IHVuZGVmaW5lZCAmJiBzZXNzaW9uWydjb21wYW55SWQnXSAhPT0gbnVsbCkge1xuICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ1gtQ29tcGFueS1JZCcsIFN0cmluZyhzZXNzaW9uWydjb21wYW55SWQnXSkpO1xuICAgICAgfVxuICAgICAgaWYgKHNlc3Npb25bJ2JyYW5jaElkJ10gIT09IHVuZGVmaW5lZCAmJiBzZXNzaW9uWydicmFuY2hJZCddICE9PSBudWxsKSB7XG4gICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnWC1CcmFuY2gtSWQnLCBTdHJpbmcoc2Vzc2lvblsnYnJhbmNoSWQnXSkpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvYnMkID0gdGhpcy5odHRwLnBvc3Q8dW5rbm93bj4oYCR7YmFzZVVybH0vbG9va3VwYCwgcmVxdWVzdCwgeyBoZWFkZXJzIH0pLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBjb25zdCByYXdJdGVtcyA9IGV4dHJhY3RSb3dBcnJheShyZXNwb25zZSk7XG4gICAgICAgICAgcmV0dXJuIHJhd0l0ZW1zLm1hcCgocjogYW55KSA9PlxuICAgICAgICAgICAgZXh0cmFjdExvb2t1cE9wdGlvbkl0ZW0ociwgcmVxdWVzdC52YWx1ZUZpZWxkLCByZXF1ZXN0LmRpc3BsYXlGaWVsZClcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKChpdGVtcykgPT4ge1xuICAgICAgICAgIC8vIE5ldmVyIGNhY2hlIGVtcHR5IHJlc3VsdHM6IHBhcmFtZXRlcnMgbWF5IHNpbXBseSBub3QgaGF2ZSBiZWVuIGZpbGxlZCB5ZXQuXG4gICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA+IDApIHRoaXMuc2V0Q2FjaGUoY2FjaGVLZXksIGl0ZW1zLCA2MDApO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc3QgbXNnID0gZXJyPy5lcnJvcj8ubWVzc2FnZSB8fCBlcnI/Lm1lc3NhZ2UgfHwgJ0xvb2t1cCByZXF1ZXN0IGZhaWxlZCc7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKEFycmF5LmlzQXJyYXkobXNnKSA/IG1zZy5qb2luKCcsICcpIDogbXNnKSk7XG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbkZsaWdodC5kZWxldGUoY2FjaGVLZXkpO1xuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgICAgKTtcblxuICAgICAgdGhpcy5pbkZsaWdodC5zZXQoY2FjaGVLZXksIG9icyQpO1xuICAgICAgcmV0dXJuIG9icyQ7XG4gICAgfVxuXG4gICAgY29uc3QgZmFsbGJhY2sgPSB0aGlzLnJlc29sdmVNb2NrT3B0aW9ucyhyZXF1ZXN0KTtcbiAgICB0aGlzLnNldENhY2hlKGNhY2hlS2V5LCBmYWxsYmFjaywgNjAwKTtcbiAgICByZXR1cm4gb2YoZmFsbGJhY2spO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRDYWNoZShrZXk6IHN0cmluZywgZGF0YTogTG9va3VwT3B0aW9uSXRlbVtdLCB0dGxTZWNvbmRzID0gNjAwKTogdm9pZCB7XG4gICAgdGhpcy5jYWNoZS5zZXQoa2V5LCB7XG4gICAgICBleHBpcmVzQXQ6IERhdGUubm93KCkgKyB0dGxTZWNvbmRzICogMTAwMCxcbiAgICAgIGRhdGEsXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdlbmVyYXRlQ2FjaGVLZXkocmVxOiBMb29rdXBRdWVyeVJlcXVlc3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtyZXEuc291cmNlVHlwZX06JHtyZXEuZW50aXR5TmFtZSB8fCByZXEuYXBpRW5kcG9pbnR9OiR7cmVxLnZhbHVlRmllbGR9OiR7cmVxLmRpc3BsYXlGaWVsZH06JHtyZXEuZGF0YVBhdGggPz8gJyd9OiR7SlNPTi5zdHJpbmdpZnkocmVxLmZpbHRlciA/PyB7fSl9OiR7SlNPTi5zdHJpbmdpZnkocmVxLnBhcmFtZXRlcnMgPz8ge30pfWA7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVNb2NrT3B0aW9ucyhyZXE6IExvb2t1cFF1ZXJ5UmVxdWVzdCk6IExvb2t1cE9wdGlvbkl0ZW1bXSB7XG4gICAgY29uc3QgZW50aXR5ID0gcmVxLmVudGl0eU5hbWUgfHwgJyc7XG4gICAgY29uc3QgcmVjb3JkcyA9IHRoaXMubW9ja0RhdGFTdG9yZVtlbnRpdHldID8/IFtdO1xuICAgIHJldHVybiByZWNvcmRzLm1hcCgocjogYW55KSA9PlxuICAgICAgZXh0cmFjdExvb2t1cE9wdGlvbkl0ZW0ociwgcmVxLnZhbHVlRmllbGQsIHJlcS5kaXNwbGF5RmllbGQpXG4gICAgKTtcbiAgfVxufVxuXG4vKiogQ29udmVuaWVuY2UgYWxpYXMgKi9cbmV4cG9ydCBjb25zdCBIdHRwTG9va3VwQWRhcHRlciA9IEh0dHBSZXBvcnRMb29rdXBBZGFwdGVyO1xuIl19
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1sb29rdXAuYWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2J3YXlzLXJlcG9ydC9zcmMvbGliL2RhdGEtYWNjZXNzL2FkYXB0ZXJzL2h0dHAtbG9va3VwLmFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFHTCxtQkFBbUIsR0FDcEIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUNqRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsZUFBZSxFQUFFLE1BQU0sMENBQTBDLENBQUM7O0FBT3BHOzs7R0FHRztBQUVILE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxtQkFBbUI7SUFDN0MsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5QyxNQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEQsY0FBYyxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRTVFLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztJQUN0QyxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQTBDLENBQUM7SUFHOUUsWUFBWSxDQUFDLE9BQTJCO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFFdkIsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUUsQ0FBQztZQUNyQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLElBQUksT0FBTyxFQUFFLENBQUM7WUFDWixPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBRUQsb0NBQW9DO1FBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxLQUFLLEtBQUssSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDdEYsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQztZQUNwRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsbUJBQW1CO2lCQUNsQyxVQUFVLENBQ1Q7Z0JBQ0UsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtnQkFDMUIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO2FBQzNCLEVBQ0QsT0FBTyxDQUFDLFVBQWlCLEVBQ3pCLE9BQU8sQ0FBQyxNQUFhLENBQ3RCO2lCQUNBLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNaLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUNuQix1QkFBdUIsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDLENBQ3JFLENBQ0YsRUFDRCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDWixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQztvQkFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUQsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQ2pCLE1BQU0sR0FBRyxHQUFHLEdBQUcsRUFBRSxLQUFLLEVBQUUsT0FBTyxJQUFJLEdBQUcsRUFBRSxPQUFPLElBQUksMkJBQTJCLENBQUM7Z0JBQy9FLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDaEYsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtnQkFDWixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqQyxDQUFDLENBQUMsRUFDRixXQUFXLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUMvQyxDQUFDO1lBRUosSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDO1FBQ3hDLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUM1RCxJQUFJLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLFNBQVMsSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3hFLE9BQU8sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RSxDQUFDO1lBQ0QsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssU0FBUyxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztnQkFDdEUsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBVSxHQUFHLE9BQU8sU0FBUyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNsRixHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDZixNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzNDLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQzdCLHVCQUF1QixDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FDckUsQ0FBQztZQUNKLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNaLDZFQUE2RTtnQkFDN0UsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQzVELENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNqQixNQUFNLEdBQUcsR0FBRyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sSUFBSSxHQUFHLEVBQUUsT0FBTyxJQUFJLHVCQUF1QixDQUFDO2dCQUMzRSxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ2hGLENBQUMsQ0FBQyxFQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDakMsQ0FBQyxDQUFDLEVBQ0YsV0FBVyxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FDL0MsQ0FBQztZQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNsQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDLENBQUM7SUFDbEcsQ0FBQztJQUVPLFFBQVEsQ0FBQyxHQUFXLEVBQUUsSUFBd0IsRUFBRSxVQUFVLEdBQUcsR0FBRztRQUN0RSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDbEIsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxVQUFVLEdBQUcsSUFBSTtZQUN6QyxJQUFJO1NBQ0wsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEdBQXVCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLHdCQUF3QixFQUFFLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQyxXQUFXLElBQUksR0FBRyxDQUFDLFVBQVUsSUFBSSxHQUFHLENBQUMsWUFBWSxJQUFJLEdBQUcsQ0FBQyxRQUFRLElBQUksRUFBRSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksS0FBSyxJQUFJLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNuVSxDQUFDO3dHQTVHVSx1QkFBdUI7NEdBQXZCLHVCQUF1Qjs7NEZBQXZCLHVCQUF1QjtrQkFEbkMsVUFBVTs7QUFrSFgsd0JBQXdCO0FBQ3hCLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaW5hbGl6ZSwgbWFwLCBzaGFyZVJlcGxheSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgTG9va3VwT3B0aW9uSXRlbSxcbiAgTG9va3VwUXVlcnlSZXF1ZXN0LFxuICBSZXBvcnRMb29rdXBBZGFwdGVyLFxufSBmcm9tICcuLi9jb250cmFjdHMvbG9va3VwLmNvbnRyYWN0JztcbmltcG9ydCB7IFJFUE9SVElOR19DT05GSUcgfSBmcm9tICcuLi8uLi9jb3JlL3Rva2Vucy9yZXBvcnRpbmctY29uZmlnLnRva2VuJztcbmltcG9ydCB7IFJlcG9ydFNlc3Npb25Db250ZXh0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZXMvcmVwb3J0LXNlc3Npb24tY29udGV4dC5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcG9ydEFwaUV4ZWN1dGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL3JlcG9ydC1hcGktZXhlY3V0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgZXh0cmFjdExvb2t1cE9wdGlvbkl0ZW0sIGV4dHJhY3RSb3dBcnJheSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvZGF0YS1ub3JtYWxpemF0aW9uLnV0aWwnO1xuXG5pbnRlcmZhY2UgQ2FjaGVFbnRyeSB7XG4gIGV4cGlyZXNBdDogbnVtYmVyO1xuICBkYXRhOiBMb29rdXBPcHRpb25JdGVtW107XG59XG5cbi8qKlxuICogQnVpbHQtaW4gSFRUUCBhZGFwdGVyIGZvciBmZXRjaGluZyBkcm9wZG93biBvcHRpb25zIGZyb20gYmFja2VuZCBkYXRhYmFzZSB0YWJsZXMsIFNQcywgYW5kIFJFU1QgQVBJcy5cbiAqIEluY2x1ZGVzIGluLW1lbW9yeSBjYWNoaW5nIHdpdGggVFRMLCBpbi1mbGlnaHQgcmVxdWVzdCBkZWR1cGxpY2F0aW9uLCBhbmQgZXhwbGljaXQgcmVxdWVzdCBlcnJvcnMuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIdHRwUmVwb3J0TG9va3VwQWRhcHRlciBleHRlbmRzIFJlcG9ydExvb2t1cEFkYXB0ZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWcgPSBpbmplY3QoUkVQT1JUSU5HX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU2VydmljZSA9IGluamVjdChSZXBvcnRTZXNzaW9uQ29udGV4dFNlcnZpY2UsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpRXhlY3V0aW9uU2VydmljZSA9IGluamVjdChSZXBvcnRBcGlFeGVjdXRpb25TZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2FjaGUgPSBuZXcgTWFwPHN0cmluZywgQ2FjaGVFbnRyeT4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpbkZsaWdodCA9IG5ldyBNYXA8c3RyaW5nLCBPYnNlcnZhYmxlPExvb2t1cE9wdGlvbkl0ZW1bXT4+KCk7XG5cblxuICBmZXRjaE9wdGlvbnMocmVxdWVzdDogTG9va3VwUXVlcnlSZXF1ZXN0KTogT2JzZXJ2YWJsZTxMb29rdXBPcHRpb25JdGVtW10+IHtcbiAgICBjb25zdCBjYWNoZUtleSA9IHRoaXMuZ2VuZXJhdGVDYWNoZUtleShyZXF1ZXN0KTtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLmNhY2hlLmdldChjYWNoZUtleSk7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgIGlmIChjYWNoZWQgJiYgY2FjaGVkLmV4cGlyZXNBdCA+IG5vdykge1xuICAgICAgcmV0dXJuIG9mKGNhY2hlZC5kYXRhKTtcbiAgICB9XG5cbiAgICBjb25zdCBydW5uaW5nID0gdGhpcy5pbkZsaWdodC5nZXQoY2FjaGVLZXkpO1xuICAgIGlmIChydW5uaW5nKSB7XG4gICAgICByZXR1cm4gcnVubmluZztcbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgQVBJLWJhc2VkIGRyb3Bkb3duIGxvb2t1cHNcbiAgICBpZiAoKHJlcXVlc3Quc291cmNlVHlwZSA9PT0gJ2FwaScgfHwgcmVxdWVzdC5hcGlFbmRwb2ludCkgJiYgdGhpcy5hcGlFeGVjdXRpb25TZXJ2aWNlKSB7XG4gICAgICBjb25zdCBlbmRwb2ludFVybCA9IHJlcXVlc3QuYXBpRW5kcG9pbnQgfHwgcmVxdWVzdC5lbnRpdHlOYW1lIHx8ICcnO1xuICAgICAgY29uc3Qgb2JzJCA9IHRoaXMuYXBpRXhlY3V0aW9uU2VydmljZVxuICAgICAgICAuZXhlY3V0ZUFwaShcbiAgICAgICAgICB7XG4gICAgICAgICAgICBlbmRwb2ludDogZW5kcG9pbnRVcmwsXG4gICAgICAgICAgICBkYXRhUGF0aDogcmVxdWVzdC5kYXRhUGF0aCxcbiAgICAgICAgICAgIHVzZVByb3h5OiByZXF1ZXN0LnVzZVByb3h5LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWVzdC5wYXJhbWV0ZXJzIGFzIGFueSxcbiAgICAgICAgICByZXF1ZXN0LmZpbHRlciBhcyBhbnlcbiAgICAgICAgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKGl0ZW1zKSA9PlxuICAgICAgICAgICAgaXRlbXMubWFwKChyOiBhbnkpID0+XG4gICAgICAgICAgICAgIGV4dHJhY3RMb29rdXBPcHRpb25JdGVtKHIsIHJlcXVlc3QudmFsdWVGaWVsZCwgcmVxdWVzdC5kaXNwbGF5RmllbGQpXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSxcbiAgICAgICAgICB0YXAoKGl0ZW1zKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbXMubGVuZ3RoID4gMCkgdGhpcy5zZXRDYWNoZShjYWNoZUtleSwgaXRlbXMsIDYwMCk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtc2cgPSBlcnI/LmVycm9yPy5tZXNzYWdlIHx8IGVycj8ubWVzc2FnZSB8fCAnQVBJIGxvb2t1cCByZXF1ZXN0IGZhaWxlZCc7XG4gICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoQXJyYXkuaXNBcnJheShtc2cpID8gbXNnLmpvaW4oJywgJykgOiBtc2cpKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluRmxpZ2h0LmRlbGV0ZShjYWNoZUtleSk7XG4gICAgICAgICAgfSksXG4gICAgICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgICAgICApO1xuXG4gICAgICB0aGlzLmluRmxpZ2h0LnNldChjYWNoZUtleSwgb2JzJCk7XG4gICAgICByZXR1cm4gb2JzJDtcbiAgICB9XG5cbiAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5jb25maWc/LmFwaUJhc2VVcmw7XG4gICAgaWYgKGJhc2VVcmwgJiYgdGhpcy5odHRwKSB7XG4gICAgICBjb25zdCBzZXNzaW9uID0gdGhpcy5zZXNzaW9uU2VydmljZT8uc2Vzc2lvbkNvbnRleHQoKSA/PyB7fTtcbiAgICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgICBpZiAoc2Vzc2lvblsnY29tcGFueUlkJ10gIT09IHVuZGVmaW5lZCAmJiBzZXNzaW9uWydjb21wYW55SWQnXSAhPT0gbnVsbCkge1xuICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ1gtQ29tcGFueS1JZCcsIFN0cmluZyhzZXNzaW9uWydjb21wYW55SWQnXSkpO1xuICAgICAgfVxuICAgICAgaWYgKHNlc3Npb25bJ2JyYW5jaElkJ10gIT09IHVuZGVmaW5lZCAmJiBzZXNzaW9uWydicmFuY2hJZCddICE9PSBudWxsKSB7XG4gICAgICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnWC1CcmFuY2gtSWQnLCBTdHJpbmcoc2Vzc2lvblsnYnJhbmNoSWQnXSkpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBvYnMkID0gdGhpcy5odHRwLnBvc3Q8dW5rbm93bj4oYCR7YmFzZVVybH0vbG9va3VwYCwgcmVxdWVzdCwgeyBoZWFkZXJzIH0pLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICBjb25zdCByYXdJdGVtcyA9IGV4dHJhY3RSb3dBcnJheShyZXNwb25zZSk7XG4gICAgICAgICAgcmV0dXJuIHJhd0l0ZW1zLm1hcCgocjogYW55KSA9PlxuICAgICAgICAgICAgZXh0cmFjdExvb2t1cE9wdGlvbkl0ZW0ociwgcmVxdWVzdC52YWx1ZUZpZWxkLCByZXF1ZXN0LmRpc3BsYXlGaWVsZClcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKChpdGVtcykgPT4ge1xuICAgICAgICAgIC8vIE5ldmVyIGNhY2hlIGVtcHR5IHJlc3VsdHM6IHBhcmFtZXRlcnMgbWF5IHNpbXBseSBub3QgaGF2ZSBiZWVuIGZpbGxlZCB5ZXQuXG4gICAgICAgICAgaWYgKGl0ZW1zLmxlbmd0aCA+IDApIHRoaXMuc2V0Q2FjaGUoY2FjaGVLZXksIGl0ZW1zLCA2MDApO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc3QgbXNnID0gZXJyPy5lcnJvcj8ubWVzc2FnZSB8fCBlcnI/Lm1lc3NhZ2UgfHwgJ0xvb2t1cCByZXF1ZXN0IGZhaWxlZCc7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKEFycmF5LmlzQXJyYXkobXNnKSA/IG1zZy5qb2luKCcsICcpIDogbXNnKSk7XG4gICAgICAgIH0pLFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pbkZsaWdodC5kZWxldGUoY2FjaGVLZXkpO1xuICAgICAgICB9KSxcbiAgICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgICAgKTtcblxuICAgICAgdGhpcy5pbkZsaWdodC5zZXQoY2FjaGVLZXksIG9icyQpO1xuICAgICAgcmV0dXJuIG9icyQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdbYndheXMtcmVwb3J0XSBMb29rdXAgcmVxdWlyZXMgSHR0cENsaWVudCBhbmQgYXBpQmFzZVVybC4nKSk7XG4gIH1cblxuICBwcml2YXRlIHNldENhY2hlKGtleTogc3RyaW5nLCBkYXRhOiBMb29rdXBPcHRpb25JdGVtW10sIHR0bFNlY29uZHMgPSA2MDApOiB2b2lkIHtcbiAgICB0aGlzLmNhY2hlLnNldChrZXksIHtcbiAgICAgIGV4cGlyZXNBdDogRGF0ZS5ub3coKSArIHR0bFNlY29uZHMgKiAxMDAwLFxuICAgICAgZGF0YSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVDYWNoZUtleShyZXE6IExvb2t1cFF1ZXJ5UmVxdWVzdCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuc2Vzc2lvblNlcnZpY2U/LmdldEN1cnJlbnRTZXNzaW9uQ29udGV4dCgpID8/IHt9KSArICc6JyArIGAke3JlcS5zb3VyY2VUeXBlfToke3JlcS5lbnRpdHlOYW1lIHx8IHJlcS5hcGlFbmRwb2ludH06JHtyZXEudmFsdWVGaWVsZH06JHtyZXEuZGlzcGxheUZpZWxkfToke3JlcS5kYXRhUGF0aCA/PyAnJ306JHtyZXEuc2NoZW1hID8/ICdkYm8nfToke3JlcS5saW1pdCA/PyA1MDB9OiR7SlNPTi5zdHJpbmdpZnkocmVxLmZpbHRlciA/PyB7fSl9OiR7SlNPTi5zdHJpbmdpZnkocmVxLnBhcmFtZXRlcnMgPz8ge30pfWA7XG4gIH1cblxuXG59XG5cbi8qKiBDb252ZW5pZW5jZSBhbGlhcyAqL1xuZXhwb3J0IGNvbnN0IEh0dHBMb29rdXBBZGFwdGVyID0gSHR0cFJlcG9ydExvb2t1cEFkYXB0ZXI7XG4iXX0=
|
|
@@ -1,217 +1,66 @@
|
|
|
1
|
+
import { reportIdAvailability, reportIdInspection } from './report-id-availability';
|
|
2
|
+
import { ReportSessionContextService } from '../../core/services/report-session-context.service';
|
|
3
|
+
import { reportSessionHeaders } from './session-headers';
|
|
1
4
|
import { inject, Injectable } from '@angular/core';
|
|
2
5
|
import { HttpClient } from '@angular/common/http';
|
|
3
|
-
import {
|
|
6
|
+
import { throwError } from 'rxjs';
|
|
4
7
|
import { catchError } from 'rxjs/operators';
|
|
5
8
|
import { ReportPersistenceAdapter } from '../contracts/report-persistence.contract';
|
|
6
9
|
import { REPORTING_CONFIG } from '../../core/tokens/reporting-config.token';
|
|
7
10
|
import * as i0 from "@angular/core";
|
|
8
|
-
/**
|
|
9
|
-
* Built-in HTTP adapter for report definitions persistence.
|
|
10
|
-
* Connects to NestJS `/api/reporting/reports` endpoints.
|
|
11
|
-
* Includes in-memory mock fallback when the remote backend is unreachable.
|
|
12
|
-
*/
|
|
11
|
+
/** HTTP-only persistence. Use withLocalStorage() explicitly for offline demos. */
|
|
13
12
|
export class HttpReportPersistenceAdapter extends ReportPersistenceAdapter {
|
|
13
|
+
session = inject(ReportSessionContextService, { optional: true });
|
|
14
|
+
get headers() { return reportSessionHeaders(this.session?.getCurrentSessionContext() ?? {}); }
|
|
14
15
|
http = inject(HttpClient, { optional: true });
|
|
15
16
|
config = inject(REPORTING_CONFIG, { optional: true });
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
this.
|
|
17
|
+
checkId(reportId) {
|
|
18
|
+
if (!this.http || !this.config?.apiBaseUrl)
|
|
19
|
+
return throwError(() => new Error('HTTP report storage is not configured.'));
|
|
20
|
+
const url = this.config.apiBaseUrl.replace(/\/+$/, '') + '/reports/' + encodeURIComponent(reportId) + '/availability';
|
|
21
|
+
return reportIdAvailability(this.http, url, this.headers, () => super.checkId(reportId));
|
|
20
22
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
.pipe(catchError((err) => {
|
|
27
|
-
console.warn(`[HttpReportPersistenceAdapter] Failed to load remote report ${reportId}:`, err);
|
|
28
|
-
return of(this.getMockReport(reportId));
|
|
29
|
-
}));
|
|
30
|
-
}
|
|
31
|
-
return of(this.getMockReport(reportId));
|
|
23
|
+
inspectId(reportId) {
|
|
24
|
+
if (!this.http || !this.config?.apiBaseUrl)
|
|
25
|
+
return throwError(() => new Error('HTTP report storage is not configured.'));
|
|
26
|
+
const url = this.config.apiBaseUrl.replace(/\/+$/, '') + '/reports/' + encodeURIComponent(reportId) + '/availability';
|
|
27
|
+
return reportIdInspection(this.http, url, this.headers, () => super.inspectId(reportId));
|
|
32
28
|
}
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
if (baseUrl && this.http) {
|
|
36
|
-
const payload = {
|
|
37
|
-
id: report.id,
|
|
38
|
-
name: report.name,
|
|
39
|
-
description: report.description,
|
|
40
|
-
category: report.category,
|
|
41
|
-
version: report.version,
|
|
42
|
-
isPublished: report.isPublished ?? false,
|
|
43
|
-
definition: report,
|
|
44
|
-
};
|
|
45
|
-
return this.http
|
|
46
|
-
.post(`${baseUrl}/reports`, payload)
|
|
47
|
-
.pipe(catchError((err) => {
|
|
48
|
-
console.warn('[HttpReportPersistenceAdapter] Failed to save remote report, storing in mock:', err);
|
|
49
|
-
this.mockStore.set(report.id, { ...report, updatedAt: new Date().toISOString() });
|
|
50
|
-
return of(report);
|
|
51
|
-
}));
|
|
52
|
-
}
|
|
53
|
-
this.mockStore.set(report.id, { ...report, updatedAt: new Date().toISOString() });
|
|
54
|
-
return of(report);
|
|
29
|
+
load(id) {
|
|
30
|
+
return this.request('GET', '/' + encodeURIComponent(id));
|
|
55
31
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
})
|
|
63
|
-
}
|
|
64
|
-
return of(this.getMockSummaries());
|
|
32
|
+
save(report, options) {
|
|
33
|
+
return this.request('POST', '', {
|
|
34
|
+
id: report.id, name: report.name, description: report.description,
|
|
35
|
+
category: report.category, version: report.version,
|
|
36
|
+
isPublished: report.isPublished ?? false, definition: report,
|
|
37
|
+
...(options?.createOnly ? { createOnly: true } : {}),
|
|
38
|
+
...(options?.expectedVersion !== undefined ? { expectedVersion: options.expectedVersion } : {}),
|
|
39
|
+
});
|
|
65
40
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
if (baseUrl && this.http) {
|
|
69
|
-
return this.http
|
|
70
|
-
.delete(`${baseUrl}/reports/${encodeURIComponent(reportId)}`)
|
|
71
|
-
.pipe(catchError((err) => {
|
|
72
|
-
console.warn(`[HttpReportPersistenceAdapter] Failed to delete remote report ${reportId}:`, err);
|
|
73
|
-
this.mockStore.delete(reportId);
|
|
74
|
-
return of(undefined);
|
|
75
|
-
}));
|
|
76
|
-
}
|
|
77
|
-
this.mockStore.delete(reportId);
|
|
78
|
-
return of(undefined);
|
|
41
|
+
list() {
|
|
42
|
+
return this.request('GET', '');
|
|
79
43
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
if (baseUrl && this.http) {
|
|
83
|
-
return this.http
|
|
84
|
-
.post(`${baseUrl}/reports/${encodeURIComponent(reportId)}/publish`, { version })
|
|
85
|
-
.pipe(catchError((err) => {
|
|
86
|
-
console.warn(`[HttpReportPersistenceAdapter] Failed to publish remote report ${reportId}:`, err);
|
|
87
|
-
const r = this.mockStore.get(reportId);
|
|
88
|
-
if (r) {
|
|
89
|
-
r.isPublished = true;
|
|
90
|
-
r.version = version;
|
|
91
|
-
}
|
|
92
|
-
return of(undefined);
|
|
93
|
-
}));
|
|
94
|
-
}
|
|
95
|
-
const r = this.mockStore.get(reportId);
|
|
96
|
-
if (r) {
|
|
97
|
-
r.isPublished = true;
|
|
98
|
-
r.version = version;
|
|
99
|
-
}
|
|
100
|
-
return of(undefined);
|
|
44
|
+
delete(id) {
|
|
45
|
+
return this.request('DELETE', '/' + encodeURIComponent(id));
|
|
101
46
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
if (existing)
|
|
105
|
-
return existing;
|
|
106
|
-
const fallback = {
|
|
107
|
-
id,
|
|
108
|
-
name: 'Default Report',
|
|
109
|
-
schemaVersion: 1,
|
|
110
|
-
version: 1,
|
|
111
|
-
isPublished: true,
|
|
112
|
-
components: [],
|
|
113
|
-
parameters: [],
|
|
114
|
-
dataSources: [],
|
|
115
|
-
layout: {
|
|
116
|
-
columns: 12,
|
|
117
|
-
gap: 16,
|
|
118
|
-
padding: 16,
|
|
119
|
-
},
|
|
120
|
-
};
|
|
121
|
-
this.mockStore.set(id, fallback);
|
|
122
|
-
return fallback;
|
|
47
|
+
publish(id, version) {
|
|
48
|
+
return this.request('POST', '/' + encodeURIComponent(id) + '/publish', { version });
|
|
123
49
|
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
isPublished: Boolean(r.isPublished),
|
|
132
|
-
updatedAt: r.updatedAt,
|
|
50
|
+
request(method, path, body) {
|
|
51
|
+
if (!this.http || !this.config?.apiBaseUrl) {
|
|
52
|
+
return throwError(() => new Error('[bways-report] HTTP persistence requires HttpClient and apiBaseUrl. Use withLocalStorage() for offline storage.'));
|
|
53
|
+
}
|
|
54
|
+
return this.http.request(method, this.config.apiBaseUrl.replace(/\/+$/, '') + '/reports' + path, { body, headers: this.headers }).pipe(catchError(err => {
|
|
55
|
+
const message = err?.error?.message || err?.message || 'Report persistence failed';
|
|
56
|
+
return throwError(() => new Error(Array.isArray(message) ? message.join(', ') : message));
|
|
133
57
|
}));
|
|
134
58
|
}
|
|
135
|
-
|
|
136
|
-
const seed = {
|
|
137
|
-
id: 'sales-summary',
|
|
138
|
-
name: 'Sales Register & Analysis',
|
|
139
|
-
description: 'Comprehensive sales performance and invoice tracking',
|
|
140
|
-
category: 'Sales',
|
|
141
|
-
schemaVersion: 1,
|
|
142
|
-
version: 1,
|
|
143
|
-
isPublished: true,
|
|
144
|
-
parameters: [],
|
|
145
|
-
dataSources: [
|
|
146
|
-
{
|
|
147
|
-
id: 'ds-sales',
|
|
148
|
-
name: 'Sales Register SP',
|
|
149
|
-
endpoint: 'usp_GetSalesRegister',
|
|
150
|
-
method: 'STORED_PROCEDURE',
|
|
151
|
-
},
|
|
152
|
-
],
|
|
153
|
-
components: [
|
|
154
|
-
{
|
|
155
|
-
id: 'cmp-from-date',
|
|
156
|
-
key: 'fromDate',
|
|
157
|
-
type: 'date',
|
|
158
|
-
properties: { label: 'From Date', placeholder: 'dd/MM/yyyy' },
|
|
159
|
-
validation: {},
|
|
160
|
-
},
|
|
161
|
-
{
|
|
162
|
-
id: 'cmp-to-date',
|
|
163
|
-
key: 'toDate',
|
|
164
|
-
type: 'date',
|
|
165
|
-
properties: { label: 'To Date', placeholder: 'dd/MM/yyyy' },
|
|
166
|
-
validation: {},
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
id: 'cmp-customer',
|
|
170
|
-
key: 'customerId',
|
|
171
|
-
type: 'dropdown',
|
|
172
|
-
properties: {
|
|
173
|
-
label: 'Customer',
|
|
174
|
-
sourceType: 'table',
|
|
175
|
-
entityName: 'Customers',
|
|
176
|
-
valueField: 'customerId',
|
|
177
|
-
displayField: 'customerName',
|
|
178
|
-
},
|
|
179
|
-
validation: {},
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
id: 'cmp-grid',
|
|
183
|
-
key: 'salesGrid',
|
|
184
|
-
type: 'grid',
|
|
185
|
-
properties: {
|
|
186
|
-
dataSourceId: 'ds-sales',
|
|
187
|
-
pageSize: 25,
|
|
188
|
-
enableSorting: true,
|
|
189
|
-
enableFiltering: true,
|
|
190
|
-
columns: [
|
|
191
|
-
{ field: 'invoiceNo', headerText: 'Invoice #' },
|
|
192
|
-
{ field: 'date', headerText: 'Date' },
|
|
193
|
-
{ field: 'customer', headerText: 'Customer' },
|
|
194
|
-
{ field: 'amount', headerText: 'Amount', format: 'currency' },
|
|
195
|
-
{ field: 'status', headerText: 'Status' },
|
|
196
|
-
],
|
|
197
|
-
},
|
|
198
|
-
validation: {},
|
|
199
|
-
},
|
|
200
|
-
],
|
|
201
|
-
layout: {
|
|
202
|
-
columns: 12,
|
|
203
|
-
gap: 16,
|
|
204
|
-
padding: 16,
|
|
205
|
-
},
|
|
206
|
-
};
|
|
207
|
-
this.mockStore.set(seed.id, seed);
|
|
208
|
-
}
|
|
209
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpReportPersistenceAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
59
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpReportPersistenceAdapter, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
210
60
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpReportPersistenceAdapter });
|
|
211
61
|
}
|
|
212
62
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HttpReportPersistenceAdapter, decorators: [{
|
|
213
63
|
type: Injectable
|
|
214
|
-
}]
|
|
215
|
-
/** Convenience alias */
|
|
64
|
+
}] });
|
|
216
65
|
export const HttpPersistenceAdapter = HttpReportPersistenceAdapter;
|
|
217
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1wZXJzaXN0ZW5jZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZGF0YS1hY2Nlc3MvYWRhcHRlcnMvaHR0cC1wZXJzaXN0ZW5jZS5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUs1QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQzs7QUFHNUU7Ozs7R0FJRztBQUVILE1BQU0sT0FBTyw0QkFBNkIsU0FBUSx3QkFBd0I7SUFDdkQsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5QyxNQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFFdEQsU0FBUyxHQUFHLElBQUksR0FBRyxFQUE0QixDQUFDO0lBRWpFO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFDUixJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxDQUFDLFFBQWdCO1FBQ25CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDO1FBQ3hDLElBQUksT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QixPQUFPLElBQUks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LE9BQU8sRUFBRSxFQUFFO2FBQ1o7U0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO3dHQXpOVSw0QkFBNEI7NEdBQTVCLDRCQUE0Qjs7NEZBQTVCLDRCQUE0QjtrQkFEeEMsVUFBVTs7QUE2Tlgsd0JBQXdCO0FBQ3hCLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBSZXBvcnREZWZpbml0aW9uLFxuICBSZXBvcnRTdW1tYXJ5LFxufSBmcm9tICcuLi8uLi9jb3JlL21vZGVscy9yZXBvcnQtZGVmaW5pdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIgfSBmcm9tICcuLi9jb250cmFjdHMvcmVwb3J0LXBlcnNpc3RlbmNlLmNvbnRyYWN0JztcbmltcG9ydCB7IFJFUE9SVElOR19DT05GSUcgfSBmcm9tICcuLi8uLi9jb3JlL3Rva2Vucy9yZXBvcnRpbmctY29uZmlnLnRva2VuJztcbmltcG9ydCB7IFNhdmVSZXBvcnRSZXF1ZXN0RHRvIH0gZnJvbSAnLi4vY29udHJhY3RzL2FwaS1kdG9zJztcblxuLyoqXG4gKiBCdWlsdC1pbiBIVFRQIGFkYXB0ZXIgZm9yIHJlcG9ydCBkZWZpbml0aW9ucyBwZXJzaXN0ZW5jZS5cbiAqIENvbm5lY3RzIHRvIE5lc3RKUyBgL2FwaS9yZXBvcnRpbmcvcmVwb3J0c2AgZW5kcG9pbnRzLlxuICogSW5jbHVkZXMgaW4tbWVtb3J5IG1vY2sgZmFsbGJhY2sgd2hlbiB0aGUgcmVtb3RlIGJhY2tlbmQgaXMgdW5yZWFjaGFibGUuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIdHRwUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyIGV4dGVuZHMgUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KFJFUE9SVElOR19DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBtb2NrU3RvcmUgPSBuZXcgTWFwPHN0cmluZywgUmVwb3J0RGVmaW5pdGlvbj4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuc2VlZERlZmF1bHRNb2NrUmVwb3J0cygpO1xuICB9XG5cbiAgbG9hZChyZXBvcnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZXBvcnREZWZpbml0aW9uPiB7XG4gICAgY29uc3QgYmFzZVVybCA9IHRoaXMuY29uZmlnPy5hcGlCYXNlVXJsO1xuICAgIGlmIChiYXNlVXJsICYmIHRoaXMuaHR0cCkge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAuZ2V0PFJlcG9ydERlZmluaXRpb24+KGAke2Jhc2VVcmx9L3JlcG9ydHMvJHtlbmNvZGVVUklDb21wb25lbnQocmVwb3J0SWQpfWApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBbSHR0cFJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlcl0gRmFpbGVkIHRvIGxvYWQgcmVtb3RlIHJlcG9ydCAke3JlcG9ydElkfTpgLCBlcnIpO1xuICAgICAgICAgICAgcmV0dXJuIG9mKHRoaXMuZ2V0TW9ja1JlcG9ydChyZXBvcnRJZCkpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBvZih0aGlzLmdldE1vY2tSZXBvcnQocmVwb3J0SWQpKTtcbiAgfVxuXG4gIHNhdmUocmVwb3J0OiBSZXBvcnREZWZpbml0aW9uKTogT2JzZXJ2YWJsZTxSZXBvcnREZWZpbml0aW9uPiB7XG4gICAgY29uc3QgYmFzZVVybCA9IHRoaXMuY29uZmlnPy5hcGlCYXNlVXJsO1xuICAgIGlmIChiYXNlVXJsICYmIHRoaXMuaHR0cCkge1xuICAgICAgY29uc3QgcGF5bG9hZDogU2F2ZVJlcG9ydFJlcXVlc3REdG8gPSB7XG4gICAgICAgIGlkOiByZXBvcnQuaWQsXG4gICAgICAgIG5hbWU6IHJlcG9ydC5uYW1lLFxuICAgICAgICBkZXNjcmlwdGlvbjogcmVwb3J0LmRlc2NyaXB0aW9uLFxuICAgICAgICBjYXRlZ29yeTogcmVwb3J0LmNhdGVnb3J5LFxuICAgICAgICB2ZXJzaW9uOiByZXBvcnQudmVyc2lvbixcbiAgICAgICAgaXNQdWJsaXNoZWQ6IHJlcG9ydC5pc1B1Ymxpc2hlZCA/PyBmYWxzZSxcbiAgICAgICAgZGVmaW5pdGlvbjogcmVwb3J0LFxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgICAucG9zdDxSZXBvcnREZWZpbml0aW9uPihgJHtiYXNlVXJsfS9yZXBvcnRzYCwgcGF5bG9hZClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1tIdHRwUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyXSBGYWlsZWQgdG8gc2F2ZSByZW1vdGUgcmVwb3J0LCBzdG9yaW5nIGluIG1vY2s6JywgZXJyKTtcbiAgICAgICAgICAgIHRoaXMubW9ja1N0b3JlLnNldChyZXBvcnQuaWQsIHsgLi4ucmVwb3J0LCB1cGRhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSB9KTtcbiAgICAgICAgICAgIHJldHVybiBvZihyZXBvcnQpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5tb2NrU3RvcmUuc2V0KHJlcG9ydC5pZCwgeyAuLi5yZXBvcnQsIHVwZGF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpIH0pO1xuICAgIHJldHVybiBvZihyZXBvcnQpO1xuICB9XG5cbiAgbGlzdCgpOiBPYnNlcnZhYmxlPFJlcG9ydFN1bW1hcnlbXT4ge1xuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmNvbmZpZz8uYXBpQmFzZVVybDtcbiAgICBpZiAoYmFzZVVybCAmJiB0aGlzLmh0dHApIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFJlcG9ydFN1bW1hcnlbXT4oYCR7YmFzZVVybH0vcmVwb3J0c2ApLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUud2FybignW0h0dHBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXJdIEZhaWxlZCB0byBsaXN0IHJlbW90ZSByZXBvcnRzLCByZXR1cm5pbmcgbW9jayBsaXN0OicsIGVycik7XG4gICAgICAgICAgcmV0dXJuIG9mKHRoaXMuZ2V0TW9ja1N1bW1hcmllcygpKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBvZih0aGlzLmdldE1vY2tTdW1tYXJpZXMoKSk7XG4gIH1cblxuICBkZWxldGUocmVwb3J0SWQ6IHN0cmluZyk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmNvbmZpZz8uYXBpQmFzZVVybDtcbiAgICBpZiAoYmFzZVVybCAmJiB0aGlzLmh0dHApIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgLmRlbGV0ZTx2b2lkPihgJHtiYXNlVXJsfS9yZXBvcnRzLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHJlcG9ydElkKX1gKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgW0h0dHBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXJdIEZhaWxlZCB0byBkZWxldGUgcmVtb3RlIHJlcG9ydCAke3JlcG9ydElkfTpgLCBlcnIpO1xuICAgICAgICAgICAgdGhpcy5tb2NrU3RvcmUuZGVsZXRlKHJlcG9ydElkKTtcbiAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICAgIHRoaXMubW9ja1N0b3JlLmRlbGV0ZShyZXBvcnRJZCk7XG4gICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gIH1cblxuICBwdWJsaXNoKHJlcG9ydElkOiBzdHJpbmcsIHZlcnNpb246IG51bWJlcik6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IGJhc2VVcmwgPSB0aGlzLmNvbmZpZz8uYXBpQmFzZVVybDtcbiAgICBpZiAoYmFzZVVybCAmJiB0aGlzLmh0dHApIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgICAgLnBvc3Q8dm9pZD4oYCR7YmFzZVVybH0vcmVwb3J0cy8ke2VuY29kZVVSSUNvbXBvbmVudChyZXBvcnRJZCl9L3B1Ymxpc2hgLCB7IHZlcnNpb24gfSlcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgY2F0Y2hFcnJvcigoZXJyKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFtIdHRwUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyXSBGYWlsZWQgdG8gcHVibGlzaCByZW1vdGUgcmVwb3J0ICR7cmVwb3J0SWR9OmAsIGVycik7XG4gICAgICAgICAgICBjb25zdCByID0gdGhpcy5tb2NrU3RvcmUuZ2V0KHJlcG9ydElkKTtcbiAgICAgICAgICAgIGlmIChyKSB7XG4gICAgICAgICAgICAgIHIuaXNQdWJsaXNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgICByLnZlcnNpb24gPSB2ZXJzaW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgciA9IHRoaXMubW9ja1N0b3JlLmdldChyZXBvcnRJZCk7XG4gICAgaWYgKHIpIHtcbiAgICAgIHIuaXNQdWJsaXNoZWQgPSB0cnVlO1xuICAgICAgci52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICB9XG4gICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gIH1cblxuICBwcml2YXRlIGdldE1vY2tSZXBvcnQoaWQ6IHN0cmluZyk6IFJlcG9ydERlZmluaXRpb24ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5tb2NrU3RvcmUuZ2V0KGlkKTtcbiAgICBpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZztcblxuICAgIGNvbnN0IGZhbGxiYWNrOiBSZXBvcnREZWZpbml0aW9uID0ge1xuICAgICAgaWQsXG4gICAgICBuYW1lOiAnRGVmYXVsdCBSZXBvcnQnLFxuICAgICAgc2NoZW1hVmVyc2lvbjogMSxcbiAgICAgIHZlcnNpb246IDEsXG4gICAgICBpc1B1Ymxpc2hlZDogdHJ1ZSxcbiAgICAgIGNvbXBvbmVudHM6IFtdLFxuICAgICAgcGFyYW1ldGVyczogW10sXG4gICAgICBkYXRhU291cmNlczogW10sXG4gICAgICBsYXlvdXQ6IHtcbiAgICAgICAgY29sdW1uczogMTIsXG4gICAgICAgIGdhcDogMTYsXG4gICAgICAgIHBhZGRpbmc6IDE2LFxuICAgICAgfSxcbiAgICB9O1xuICAgIHRoaXMubW9ja1N0b3JlLnNldChpZCwgZmFsbGJhY2spO1xuICAgIHJldHVybiBmYWxsYmFjaztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TW9ja1N1bW1hcmllcygpOiBSZXBvcnRTdW1tYXJ5W10ge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMubW9ja1N0b3JlLnZhbHVlcygpKS5tYXAoKHIpID0+ICh7XG4gICAgICBpZDogci5pZCxcbiAgICAgIG5hbWU6IHIubmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiByLmRlc2NyaXB0aW9uLFxuICAgICAgY2F0ZWdvcnk6IHIuY2F0ZWdvcnksXG4gICAgICB2ZXJzaW9uOiByLnZlcnNpb24sXG4gICAgICBpc1B1Ymxpc2hlZDogQm9vbGVhbihyLmlzUHVibGlzaGVkKSxcbiAgICAgIHVwZGF0ZWRBdDogci51cGRhdGVkQXQsXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWVkRGVmYXVsdE1vY2tSZXBvcnRzKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlZWQ6IFJlcG9ydERlZmluaXRpb24gPSB7XG4gICAgICBpZDogJ3NhbGVzLXN1bW1hcnknLFxuICAgICAgbmFtZTogJ1NhbGVzIFJlZ2lzdGVyICYgQW5hbHlzaXMnLFxuICAgICAgZGVzY3JpcHRpb246ICdDb21wcmVoZW5zaXZlIHNhbGVzIHBlcmZvcm1hbmNlIGFuZCBpbnZvaWNlIHRyYWNraW5nJyxcbiAgICAgIGNhdGVnb3J5OiAnU2FsZXMnLFxuICAgICAgc2NoZW1hVmVyc2lvbjogMSxcbiAgICAgIHZlcnNpb246IDEsXG4gICAgICBpc1B1Ymxpc2hlZDogdHJ1ZSxcbiAgICAgIHBhcmFtZXRlcnM6IFtdLFxuICAgICAgZGF0YVNvdXJjZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnZHMtc2FsZXMnLFxuICAgICAgICAgIG5hbWU6ICdTYWxlcyBSZWdpc3RlciBTUCcsXG4gICAgICAgICAgZW5kcG9pbnQ6ICd1c3BfR2V0U2FsZXNSZWdpc3RlcicsXG4gICAgICAgICAgbWV0aG9kOiAnU1RPUkVEX1BST0NFRFVSRScsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgY29tcG9uZW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdjbXAtZnJvbS1kYXRlJyxcbiAgICAgICAgICBrZXk6ICdmcm9tRGF0ZScsXG4gICAgICAgICAgdHlwZTogJ2RhdGUnLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHsgbGFiZWw6ICdGcm9tIERhdGUnLCBwbGFjZWhvbGRlcjogJ2RkL01NL3l5eXknIH0sXG4gICAgICAgICAgdmFsaWRhdGlvbjoge30sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ2NtcC10by1kYXRlJyxcbiAgICAgICAgICBrZXk6ICd0b0RhdGUnLFxuICAgICAgICAgIHR5cGU6ICdkYXRlJyxcbiAgICAgICAgICBwcm9wZXJ0aWVzOiB7IGxhYmVsOiAnVG8gRGF0ZScsIHBsYWNlaG9sZGVyOiAnZGQvTU0veXl5eScgfSxcbiAgICAgICAgICB2YWxpZGF0aW9uOiB7fSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnY21wLWN1c3RvbWVyJyxcbiAgICAgICAgICBrZXk6ICdjdXN0b21lcklkJyxcbiAgICAgICAgICB0eXBlOiAnZHJvcGRvd24nLFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIGxhYmVsOiAnQ3VzdG9tZXInLFxuICAgICAgICAgICAgc291cmNlVHlwZTogJ3RhYmxlJyxcbiAgICAgICAgICAgIGVudGl0eU5hbWU6ICdDdXN0b21lcnMnLFxuICAgICAgICAgICAgdmFsdWVGaWVsZDogJ2N1c3RvbWVySWQnLFxuICAgICAgICAgICAgZGlzcGxheUZpZWxkOiAnY3VzdG9tZXJOYW1lJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHZhbGlkYXRpb246IHt9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgaWQ6ICdjbXAtZ3JpZCcsXG4gICAgICAgICAga2V5OiAnc2FsZXNHcmlkJyxcbiAgICAgICAgICB0eXBlOiAnZ3JpZCcsXG4gICAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgICAgZGF0YVNvdXJjZUlkOiAnZHMtc2FsZXMnLFxuICAgICAgICAgICAgcGFnZVNpemU6IDI1LFxuICAgICAgICAgICAgZW5hYmxlU29ydGluZzogdHJ1ZSxcbiAgICAgICAgICAgIGVuYWJsZUZpbHRlcmluZzogdHJ1ZSxcbiAgICAgICAgICAgIGNvbHVtbnM6IFtcbiAgICAgICAgICAgICAgeyBmaWVsZDogJ2ludm9pY2VObycsIGhlYWRlclRleHQ6ICdJbnZvaWNlICMnIH0sXG4gICAgICAgICAgICAgIHsgZmllbGQ6ICdkYXRlJywgaGVhZGVyVGV4dDogJ0RhdGUnIH0sXG4gICAgICAgICAgICAgIHsgZmllbGQ6ICdjdXN0b21lcicsIGhlYWRlclRleHQ6ICdDdXN0b21lcicgfSxcbiAgICAgICAgICAgICAgeyBmaWVsZDogJ2Ftb3VudCcsIGhlYWRlclRleHQ6ICdBbW91bnQnLCBmb3JtYXQ6ICdjdXJyZW5jeScgfSxcbiAgICAgICAgICAgICAgeyBmaWVsZDogJ3N0YXR1cycsIGhlYWRlclRleHQ6ICdTdGF0dXMnIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdmFsaWRhdGlvbjoge30sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgbGF5b3V0OiB7XG4gICAgICAgIGNvbHVtbnM6IDEyLFxuICAgICAgICBnYXA6IDE2LFxuICAgICAgICBwYWRkaW5nOiAxNixcbiAgICAgIH0sXG4gICAgfTtcbiAgICB0aGlzLm1vY2tTdG9yZS5zZXQoc2VlZC5pZCwgc2VlZCk7XG4gIH1cbn1cblxuLyoqIENvbnZlbmllbmNlIGFsaWFzICovXG5leHBvcnQgY29uc3QgSHR0cFBlcnNpc3RlbmNlQWRhcHRlciA9IEh0dHBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXI7XG4iXX0=
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1wZXJzaXN0ZW5jZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYndheXMtcmVwb3J0L3NyYy9saWIvZGF0YS1hY2Nlc3MvYWRhcHRlcnMvaHR0cC1wZXJzaXN0ZW5jZS5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BGLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQWMsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1QyxPQUFPLEVBQUUsd0JBQXdCLEVBQXFDLE1BQU0sMENBQTBDLENBQUM7QUFDdkgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMENBQTBDLENBQUM7O0FBRTVFLGtGQUFrRjtBQUVsRixNQUFNLE9BQU8sNEJBQTZCLFNBQVEsd0JBQXdCO0lBQ3ZELE9BQU8sR0FBRyxNQUFNLENBQUMsMkJBQTJCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNuRixJQUFZLE9BQU8sS0FBSyxPQUFPLG9CQUFvQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckYsSUFBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENB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LE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVwb3J0SWRBdmFpbGFiaWxpdHksIHJlcG9ydElkSW5zcGVjdGlvbiB9IGZyb20gJy4vcmVwb3J0LWlkLWF2YWlsYWJpbGl0eSc7XG5pbXBvcnQgeyBSZXBvcnRTZXNzaW9uQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3NlcnZpY2VzL3JlcG9ydC1zZXNzaW9uLWNvbnRleHQuc2VydmljZSc7XG5pbXBvcnQgeyByZXBvcnRTZXNzaW9uSGVhZGVycyB9IGZyb20gJy4vc2Vzc2lvbi1oZWFkZXJzJztcbmltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSZXBvcnREZWZpbml0aW9uLCBSZXBvcnRTdW1tYXJ5IH0gZnJvbSAnLi4vLi4vY29yZS9tb2RlbHMvcmVwb3J0LWRlZmluaXRpb24ubW9kZWwnO1xuaW1wb3J0IHsgUmVwb3J0UGVyc2lzdGVuY2VBZGFwdGVyLCBSZXBvcnRTYXZlT3B0aW9ucywgUmVwb3J0SWRTdGF0dXMgfSBmcm9tICcuLi9jb250cmFjdHMvcmVwb3J0LXBlcnNpc3RlbmNlLmNvbnRyYWN0JztcbmltcG9ydCB7IFJFUE9SVElOR19DT05GSUcgfSBmcm9tICcuLi8uLi9jb3JlL3Rva2Vucy9yZXBvcnRpbmctY29uZmlnLnRva2VuJztcblxuLyoqIEhUVFAtb25seSBwZXJzaXN0ZW5jZS4gVXNlIHdpdGhMb2NhbFN0b3JhZ2UoKSBleHBsaWNpdGx5IGZvciBvZmZsaW5lIGRlbW9zLiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEh0dHBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIgZXh0ZW5kcyBSZXBvcnRQZXJzaXN0ZW5jZUFkYXB0ZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHNlc3Npb24gPSBpbmplY3QoUmVwb3J0U2Vzc2lvbkNvbnRleHRTZXJ2aWNlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuICBwcml2YXRlIGdldCBoZWFkZXJzKCkgeyByZXR1cm4gcmVwb3J0U2Vzc2lvbkhlYWRlcnModGhpcy5zZXNzaW9uPy5nZXRDdXJyZW50U2Vzc2lvbkNvbnRleHQoKSA/PyB7fSk7IH1cbiAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KFJFUE9SVElOR19DT05GSUcsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgb3ZlcnJpZGUgY2hlY2tJZChyZXBvcnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgaWYgKCF0aGlzLmh0dHAgfHwgIXRoaXMuY29uZmlnPy5hcGlCYXNlVXJsKSByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoJ0hUVFAgcmVwb3J0IHN0b3JhZ2UgaXMgbm90IGNvbmZpZ3VyZWQuJykpO1xuICAgIGNvbnN0IHVybCA9IHRoaXMuY29uZmlnLmFwaUJhc2VVcmwucmVwbGFjZSgvXFwvKyQvLCAnJykgKyAnL3JlcG9ydHMvJyArIGVuY29kZVVSSUNvbXBvbmVudChyZXBvcnRJZCkgKyAnL2F2YWlsYWJpbGl0eSc7XG4gICAgcmV0dXJuIHJlcG9ydElkQXZhaWxhYmlsaXR5KHRoaXMuaHR0cCwgdXJsLCB0aGlzLmhlYWRlcnMsICgpID0+IHN1cGVyLmNoZWNrSWQocmVwb3J0SWQpKTtcbiAgfVxuXG4gIG92ZXJyaWRlIGluc3BlY3RJZChyZXBvcnRJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxSZXBvcnRJZFN0YXR1cz4ge1xuICAgIGlmICghdGhpcy5odHRwIHx8ICF0aGlzLmNvbmZpZz8uYXBpQmFzZVVybCkgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdIVFRQIHJlcG9ydCBzdG9yYWdlIGlzIG5vdCBjb25maWd1cmVkLicpKTtcbiAgICBjb25zdCB1cmwgPSB0aGlzLmNvbmZpZy5hcGlCYXNlVXJsLnJlcGxhY2UoL1xcLyskLywgJycpICsgJy9yZXBvcnRzLycgKyBlbmNvZGVVUklDb21wb25lbnQocmVwb3J0SWQpICsgJy9hdmFpbGFiaWxpdHknO1xuICAgIHJldHVybiByZXBvcnRJZEluc3BlY3Rpb24odGhpcy5odHRwLCB1cmwsIHRoaXMuaGVhZGVycywgKCkgPT4gc3VwZXIuaW5zcGVjdElkKHJlcG9ydElkKSk7XG4gIH1cblxuICBsb2FkKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFJlcG9ydERlZmluaXRpb24+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdHRVQnLCAnLycgKyBlbmNvZGVVUklDb21wb25lbnQoaWQpKTtcbiAgfVxuXG4gIHNhdmUocmVwb3J0OiBSZXBvcnREZWZpbml0aW9uLCBvcHRpb25zPzogUmVwb3J0U2F2ZU9wdGlvbnMpOiBPYnNlcnZhYmxlPFJlcG9ydERlZmluaXRpb24+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdQT1NUJywgJycsIHtcbiAgICAgIGlkOiByZXBvcnQuaWQsIG5hbWU6IHJlcG9ydC5uYW1lLCBkZXNjcmlwdGlvbjogcmVwb3J0LmRlc2NyaXB0aW9uLFxuICAgICAgY2F0ZWdvcnk6IHJlcG9ydC5jYXRlZ29yeSwgdmVyc2lvbjogcmVwb3J0LnZlcnNpb24sXG4gICAgICBpc1B1Ymxpc2hlZDogcmVwb3J0LmlzUHVibGlzaGVkID8/IGZhbHNlLCBkZWZpbml0aW9uOiByZXBvcnQsXG4gICAgICAuLi4ob3B0aW9ucz8uY3JlYXRlT25seSA/IHsgY3JlYXRlT25seTogdHJ1ZSB9IDoge30pLFxuICAgICAgLi4uKG9wdGlvbnM/LmV4cGVjdGVkVmVyc2lvbiAhPT0gdW5kZWZpbmVkID8geyBleHBlY3RlZFZlcnNpb246IG9wdGlvbnMuZXhwZWN0ZWRWZXJzaW9uIH0gOiB7fSksXG4gICAgfSk7XG4gIH1cblxuICBsaXN0KCk6IE9ic2VydmFibGU8UmVwb3J0U3VtbWFyeVtdPiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnR0VUJywgJycpO1xuICB9XG5cbiAgZGVsZXRlKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0KCdERUxFVEUnLCAnLycgKyBlbmNvZGVVUklDb21wb25lbnQoaWQpKTtcbiAgfVxuXG4gIHB1Ymxpc2goaWQ6IHN0cmluZywgdmVyc2lvbjogbnVtYmVyKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdCgnUE9TVCcsICcvJyArIGVuY29kZVVSSUNvbXBvbmVudChpZCkgKyAnL3B1Ymxpc2gnLCB7IHZlcnNpb24gfSk7XG4gIH1cblxuICBwcml2YXRlIHJlcXVlc3Q8VD4obWV0aG9kOiBzdHJpbmcsIHBhdGg6IHN0cmluZywgYm9keT86IHVua25vd24pOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICBpZiAoIXRoaXMuaHR0cCB8fCAhdGhpcy5jb25maWc/LmFwaUJhc2VVcmwpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcignW2J3YXlzLXJlcG9ydF0gSFRUUCBwZXJzaXN0ZW5jZSByZXF1aXJlcyBIdHRwQ2xpZW50IGFuZCBhcGlCYXNlVXJsLiBVc2Ugd2l0aExvY2FsU3RvcmFnZSgpIGZvciBvZmZsaW5lIHN0b3JhZ2UuJykpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnJlcXVlc3Q8VD4obWV0aG9kLCB0aGlzLmNvbmZpZy5hcGlCYXNlVXJsLnJlcGxhY2UoL1xcLyskLywgJycpICsgJy9yZXBvcnRzJyArIHBhdGgsIHsgYm9keSwgaGVhZGVyczogdGhpcy5oZWFkZXJzIH0pLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnI/LmVycm9yPy5tZXNzYWdlIHx8IGVycj8ubWVzc2FnZSB8fCAnUmVwb3J0IHBlcnNpc3RlbmNlIGZhaWxlZCc7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihBcnJheS5pc0FycmF5KG1lc3NhZ2UpID8gbWVzc2FnZS5qb2luKCcsICcpIDogbWVzc2FnZSkpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBIdHRwUGVyc2lzdGVuY2VBZGFwdGVyID0gSHR0cFJlcG9ydFBlcnNpc3RlbmNlQWRhcHRlcjtcbiJdfQ==
|