@techextensor/tab-core-utility 2.2.188 → 2.2.191
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/esm2022/index.mjs +1 -5
- package/esm2022/lib/tab-core-utility/app/constants/api-constants.mjs +15 -27
- package/esm2022/lib/tab-core-utility/app/constants/common.mjs +50 -14
- package/esm2022/lib/tab-core-utility/app/constants/storage-constants.mjs +2 -2
- package/esm2022/lib/tab-core-utility/app/crud/tab-crud.service.mjs +54 -41
- package/esm2022/lib/tab-core-utility/app/crud/tab-delete.service.mjs +30 -84
- package/esm2022/lib/tab-core-utility/app/crud/tab-formio.service.mjs +12 -141
- package/esm2022/lib/tab-core-utility/app/crud/tab-get.service.mjs +35 -136
- package/esm2022/lib/tab-core-utility/app/crud/tab-insert.service.mjs +38 -89
- package/esm2022/lib/tab-core-utility/app/crud/tab-update.service.mjs +129 -159
- package/esm2022/lib/tab-core-utility/app/enums/query.enum.mjs +7 -7
- package/esm2022/lib/tab-core-utility/app/helpers/common/app.helpers.mjs +19 -26
- package/esm2022/lib/tab-core-utility/app/helpers/common/dsq.helpers.mjs +11 -9
- package/esm2022/lib/tab-core-utility/app/helpers/common/meta-data.helpers.mjs +13 -13
- package/esm2022/lib/tab-core-utility/app/helpers/common/req-res.helpers.mjs +45 -7
- package/esm2022/lib/tab-core-utility/app/helpers/common/where-clause.helpers.mjs +76 -79
- package/esm2022/lib/tab-core-utility/app/helpers/screen/grid.helpers.mjs +4 -8
- package/esm2022/lib/tab-core-utility/app/helpers/screen/screen.helpers.mjs +33 -8
- package/esm2022/lib/tab-core-utility/app/interfaces/common.interface.mjs +1 -1
- package/esm2022/lib/tab-core-utility/app/models/api-query.class.mjs +1 -39
- package/esm2022/lib/tab-core-utility/app/models/app-field.model.mjs +7 -36
- package/esm2022/lib/tab-core-utility/app/models/app-object.model.mjs +47 -84
- package/esm2022/lib/tab-core-utility/app/models/app-screen.model.mjs +13 -24
- package/esm2022/lib/tab-core-utility/app/models/data-source-query.model.mjs +23 -57
- package/esm2022/lib/tab-core-utility/app/models/filter.model.mjs +10 -21
- package/esm2022/lib/tab-core-utility/app/models/parameter.model.mjs +6 -12
- package/esm2022/lib/tab-core-utility/app/models/sort.model.mjs +4 -11
- package/esm2022/lib/tab-core-utility/app/utils/json.util.mjs +16 -17
- package/esm2022/lib/tab-core-utility/app/utils/req-res.util.mjs +55 -1
- package/esm2022/lib/tab-core-utility/app/utils/tab-app.util.mjs +164 -1
- package/esm2022/lib/tab-core-utility/core/http-client/api.service.mjs +1 -78
- package/index.d.ts +0 -4
- package/lib/tab-core-utility/app/constants/api-constants.d.ts +12 -15
- package/lib/tab-core-utility/app/constants/common.d.ts +0 -9
- package/lib/tab-core-utility/app/constants/storage-constants.d.ts +1 -1
- package/lib/tab-core-utility/app/crud/tab-crud.service.d.ts +1 -8
- package/lib/tab-core-utility/app/crud/tab-delete.service.d.ts +10 -20
- package/lib/tab-core-utility/app/crud/tab-formio.service.d.ts +6 -33
- package/lib/tab-core-utility/app/crud/tab-get.service.d.ts +3 -45
- package/lib/tab-core-utility/app/crud/tab-insert.service.d.ts +21 -16
- package/lib/tab-core-utility/app/crud/tab-update.service.d.ts +19 -34
- package/lib/tab-core-utility/app/enums/query.enum.d.ts +6 -3
- package/lib/tab-core-utility/app/helpers/common/app.helpers.d.ts +8 -5
- package/lib/tab-core-utility/app/helpers/common/dsq.helpers.d.ts +0 -3
- package/lib/tab-core-utility/app/helpers/common/meta-data.helpers.d.ts +3 -3
- package/lib/tab-core-utility/app/helpers/common/req-res.helpers.d.ts +51 -7
- package/lib/tab-core-utility/app/helpers/common/where-clause.helpers.d.ts +0 -1
- package/lib/tab-core-utility/app/helpers/screen/grid.helpers.d.ts +1 -2
- package/lib/tab-core-utility/app/helpers/screen/screen.helpers.d.ts +0 -1
- package/lib/tab-core-utility/app/interfaces/common.interface.d.ts +2 -51
- package/lib/tab-core-utility/app/models/api-query.class.d.ts +9 -54
- package/lib/tab-core-utility/app/models/app-field.model.d.ts +2 -4
- package/lib/tab-core-utility/app/models/app-object.model.d.ts +3 -5
- package/lib/tab-core-utility/app/models/app-screen.model.d.ts +2 -2
- package/lib/tab-core-utility/app/models/data-source-query.model.d.ts +2 -7
- package/lib/tab-core-utility/app/models/filter.model.d.ts +2 -2
- package/lib/tab-core-utility/app/models/parameter.model.d.ts +2 -2
- package/lib/tab-core-utility/app/models/sort.model.d.ts +1 -1
- package/lib/tab-core-utility/app/utils/json.util.d.ts +2 -3
- package/lib/tab-core-utility/app/utils/req-res.util.d.ts +9 -1
- package/lib/tab-core-utility/app/utils/tab-app.util.d.ts +61 -0
- package/lib/tab-core-utility/core/http-client/api.service.d.ts +0 -46
- package/package.json +2 -3
- package/esm2022/lib/tab-core-utility/app/helpers/response.adapter.mjs +0 -38
- package/esm2022/lib/tab-core-utility/app/interfaces/signalr.interface.mjs +0 -42
- package/esm2022/lib/tab-core-utility/core/service/signalr/operation-tracker.service.mjs +0 -90
- package/esm2022/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.mjs +0 -268
- package/esm2022/lib/tab-core-utility/core/service/signalr/signalr.service.mjs +0 -207
- package/lib/tab-core-utility/app/helpers/response.adapter.d.ts +0 -22
- package/lib/tab-core-utility/app/interfaces/signalr.interface.d.ts +0 -84
- package/lib/tab-core-utility/core/service/signalr/operation-tracker.service.d.ts +0 -40
- package/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.d.ts +0 -73
- package/lib/tab-core-utility/core/service/signalr/signalr.service.d.ts +0 -122
|
@@ -1,192 +1,162 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import { Injectable, inject } from "@angular/core";
|
|
3
|
-
import {
|
|
4
|
-
import { switchMap, map, catchError } from 'rxjs/operators';
|
|
3
|
+
import { DSQHelper } from "../helpers/common/dsq.helpers";
|
|
5
4
|
import { ScreenHelper } from "../helpers/screen/screen.helpers";
|
|
6
5
|
import { WhereClauseHelper } from "../helpers/common/where-clause.helpers";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
6
|
+
import { RequestResponseHelper } from "../helpers/common/req-res.helpers";
|
|
7
|
+
import { APIFilterCriteria } from "../models/api-query.class";
|
|
8
|
+
import { QueryType } from "../enums/query.enum";
|
|
9
|
+
import { getAppObject, getAppObjectFromDataSourceQueryID, getAppObjectFromSystemDBTableName, getDataFromDataSourceQueryID, syncAppObjectFields } from "../utils/tab-app.util";
|
|
10
|
+
import { AppObject } from "../models/app-object.class";
|
|
11
|
+
import { createDynamicData } from "../utils/json.util";
|
|
12
|
+
import { getEditRecordId, getPrimaryKeyFields, removeMultiplePrimaryKey, removePrimaryKey } from "../utils/req-res.util";
|
|
14
13
|
import * as i0 from "@angular/core";
|
|
15
14
|
export class TabUpdateService {
|
|
16
15
|
constructor() {
|
|
16
|
+
this.dsqHelper = inject(DSQHelper);
|
|
17
17
|
this.screenHelper = inject(ScreenHelper);
|
|
18
18
|
this.whereClauseHelper = inject(WhereClauseHelper);
|
|
19
|
-
this.
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
this.requestResponseHelper = inject(RequestResponseHelper);
|
|
20
|
+
}
|
|
21
|
+
update(data, headers) {
|
|
22
|
+
return this.dsqHelper.executeQuery(data, QueryType.Update, headers);
|
|
23
|
+
}
|
|
24
|
+
updateUsingDSQ(dsqId, data, tableName, queryFieldsArray, headers) {
|
|
25
|
+
const appObject = getDataFromDataSourceQueryID(dsqId);
|
|
26
|
+
if (appObject) {
|
|
27
|
+
if (data && data.data) {
|
|
28
|
+
const whereClause = this.whereClauseHelper.bindWhereClauseForUpdate(tableName, queryFieldsArray);
|
|
29
|
+
let dataObj = [];
|
|
30
|
+
dataObj = createDynamicData(data.data);
|
|
31
|
+
const requestPayload = this.requestResponseHelper.updateRequestPayload(tableName, whereClause, dataObj);
|
|
32
|
+
return this.update(requestPayload, headers);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return null;
|
|
22
36
|
}
|
|
23
37
|
/**
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
* @param
|
|
28
|
-
* @
|
|
38
|
+
* Parth B Thakkar - 2024-11-06
|
|
39
|
+
* Updates a record in the database based on the provided object ID.
|
|
40
|
+
* Same code as updateUsingScreenId with minor modifications like using the object ID directly instead of the screen ID.
|
|
41
|
+
* @param objectId The object ID of the record to update.
|
|
42
|
+
* @param data The data to update the record with.
|
|
43
|
+
* @returns The response from the update operation.
|
|
29
44
|
*/
|
|
30
|
-
updateByObjectId(objectId, data
|
|
45
|
+
updateByObjectId(objectId, data) {
|
|
31
46
|
const fields = [];
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
return throwError(() => new Error(`AppObject not found: ${objectId}`));
|
|
36
|
-
}
|
|
37
|
-
appObjectModel.fields().forEach((element) => {
|
|
47
|
+
let appObject = AppObject;
|
|
48
|
+
appObject = getAppObject(objectId);
|
|
49
|
+
appObject.Fields.forEach((element) => {
|
|
38
50
|
fields.push({ Field: element });
|
|
39
51
|
});
|
|
40
|
-
const crudTableName =
|
|
52
|
+
const crudTableName = appObject.SystemDBTableName;
|
|
41
53
|
syncAppObjectFields(data.data, appObject);
|
|
42
54
|
const PrimaryKeyFields = getPrimaryKeyFields(appObject);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
// Transform to new API format using createDynamicData utility
|
|
61
|
-
const requestBody = {
|
|
62
|
-
entityName: crudTableName,
|
|
63
|
-
fields: createDynamicData(filteredData),
|
|
64
|
-
whereClause: whereClause
|
|
65
|
-
};
|
|
66
|
-
const header = getHeaders(headers);
|
|
67
|
-
// PUT to new endpoint
|
|
68
|
-
return this.apiService.putToService(APIServices.crudService, API.recordsUpdate, requestBody, header).pipe(switchMap((response) => {
|
|
69
|
-
if (!response?.IsSuccess) {
|
|
70
|
-
console.error('[TabUpdateService] Update failed:', response?.Errors);
|
|
71
|
-
return of(response);
|
|
72
|
-
}
|
|
73
|
-
// CASE 1: SYNC - Operation completed immediately
|
|
74
|
-
if (response?.Result?.length) {
|
|
75
|
-
return of({
|
|
76
|
-
...response,
|
|
77
|
-
Result: response?.Result?.[0]
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
// CASE 2: ASYNC - Has correlationId
|
|
81
|
-
else if (response?.CorrelationId) {
|
|
82
|
-
return this.handleAsyncUpdate(response);
|
|
55
|
+
let whereClause = APIFilterCriteria;
|
|
56
|
+
if (appObject) {
|
|
57
|
+
if (data.data) {
|
|
58
|
+
const recordId = getEditRecordId(data.data, PrimaryKeyFields[0]?.FieldName);
|
|
59
|
+
data['recordId'] = recordId;
|
|
60
|
+
if (PrimaryKeyFields && PrimaryKeyFields.length === 1) {
|
|
61
|
+
removePrimaryKey(data.data, PrimaryKeyFields[0]?.FieldName);
|
|
62
|
+
whereClause = this.whereClauseHelper.bindWhereClauseForUpdateGrid(fields, data.recordId, PrimaryKeyFields[0].FieldName, crudTableName);
|
|
63
|
+
}
|
|
64
|
+
else if (PrimaryKeyFields && PrimaryKeyFields.length > 1) {
|
|
65
|
+
whereClause =
|
|
66
|
+
this.whereClauseHelper.bindWhereClauseForMultiplePrimaryKeys(data.data, PrimaryKeyFields, crudTableName);
|
|
67
|
+
removeMultiplePrimaryKey(data.data, PrimaryKeyFields);
|
|
68
|
+
}
|
|
69
|
+
const dataObj = createDynamicData(data.data);
|
|
70
|
+
const requestPayload = this.requestResponseHelper.updateRequestPayload(crudTableName, whereClause, dataObj);
|
|
71
|
+
return this.update(requestPayload);
|
|
83
72
|
}
|
|
84
|
-
// CASE 3: Unknown response format
|
|
85
|
-
return of(response);
|
|
86
|
-
}), catchError((error) => {
|
|
87
|
-
console.error('[TabUpdateService] Update error:', error);
|
|
88
|
-
return throwError(() => error);
|
|
89
|
-
}));
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Handle async update - wait for SignalR notification
|
|
93
|
-
* @param response Initial response with correlationId
|
|
94
|
-
* @returns Observable with update result
|
|
95
|
-
*/
|
|
96
|
-
handleAsyncUpdate(response) {
|
|
97
|
-
const correlationId = response?.CorrelationId;
|
|
98
|
-
if (!correlationId) {
|
|
99
|
-
console.error('[TabUpdateService] Missing correlationId in async response');
|
|
100
|
-
return of(response);
|
|
101
73
|
}
|
|
102
|
-
|
|
103
|
-
return this.signalRService.waitForOperation(correlationId).pipe(map((notification) => {
|
|
104
|
-
// Check if operation succeeded
|
|
105
|
-
if (!notification.isSuccess) {
|
|
106
|
-
throw new Error(notification.errorMessage || 'Update operation failed');
|
|
107
|
-
}
|
|
108
|
-
// Return response with success
|
|
109
|
-
return {
|
|
110
|
-
...response,
|
|
111
|
-
Result: notification.result?.[0],
|
|
112
|
-
RecordAffectted: notification.affectedRecords || 1
|
|
113
|
-
};
|
|
114
|
-
}), catchError((error) => {
|
|
115
|
-
if (error.message === 'Operation timed out') {
|
|
116
|
-
return throwError(() => new Error('Update operation timed out. The operation may still complete in the background. Please refresh to see the result.'));
|
|
117
|
-
}
|
|
118
|
-
return throwError(() => error);
|
|
119
|
-
}));
|
|
74
|
+
return null;
|
|
120
75
|
}
|
|
121
|
-
/**
|
|
122
|
-
* Update using screen ID
|
|
123
|
-
* @param screenId The screen ID
|
|
124
|
-
* @param data The data to update
|
|
125
|
-
* @param objectIdToSave Optional object ID to save
|
|
126
|
-
* @param headers Optional headers
|
|
127
|
-
* @returns Observable with update result
|
|
128
|
-
*/
|
|
129
76
|
updateUsingScreenId(screenId, data, objectIdToSave, headers) {
|
|
130
|
-
let
|
|
77
|
+
let fields;
|
|
78
|
+
let appObject = AppObject;
|
|
79
|
+
let crudTableName;
|
|
131
80
|
if (screenId) {
|
|
132
81
|
const screen = this.screenHelper.getScreen(screenId);
|
|
133
|
-
const screenDataSource =
|
|
134
|
-
|
|
82
|
+
const screenDataSource = getDataFromDataSourceQueryID(screen.DataSourceQuery);
|
|
83
|
+
appObject = getAppObject(screenDataSource.ObjectID_Tosave);
|
|
84
|
+
crudTableName = appObject.SystemDBTableName;
|
|
85
|
+
fields = screenDataSource?.Fields?.map((field) => {
|
|
86
|
+
const appField = appObject?.Fields?.find((f) => f?.ID?.toLowerCase() === field?.AppFieldID?.toLowerCase()) ?? {};
|
|
87
|
+
return {
|
|
88
|
+
...field,
|
|
89
|
+
Field: appField
|
|
90
|
+
};
|
|
91
|
+
});
|
|
92
|
+
syncAppObjectFields(data.data, appObject);
|
|
135
93
|
}
|
|
136
94
|
if (objectIdToSave) {
|
|
137
|
-
|
|
95
|
+
fields = [];
|
|
96
|
+
appObject = getAppObject(objectIdToSave);
|
|
97
|
+
appObject.Fields.forEach((element) => {
|
|
98
|
+
fields.push({ Field: element });
|
|
99
|
+
});
|
|
100
|
+
crudTableName = appObject.SystemDBTableName;
|
|
101
|
+
syncAppObjectFields(data.data, appObject);
|
|
102
|
+
}
|
|
103
|
+
const PrimaryKeyFields = getPrimaryKeyFields(appObject);
|
|
104
|
+
let whereClause = APIFilterCriteria;
|
|
105
|
+
if (appObject) {
|
|
106
|
+
if (data.data) {
|
|
107
|
+
const recordId = getEditRecordId(data.data, PrimaryKeyFields[0]?.FieldName);
|
|
108
|
+
data['recordId'] = recordId;
|
|
109
|
+
if (PrimaryKeyFields && PrimaryKeyFields.length === 1) {
|
|
110
|
+
removePrimaryKey(data.data, PrimaryKeyFields[0]?.FieldName);
|
|
111
|
+
whereClause = this.whereClauseHelper.bindWhereClauseForUpdateGrid(fields, data.recordId, PrimaryKeyFields[0].FieldName, crudTableName);
|
|
112
|
+
}
|
|
113
|
+
else if (PrimaryKeyFields && PrimaryKeyFields.length > 1) {
|
|
114
|
+
whereClause = this.whereClauseHelper.bindWhereClauseForMultiplePrimaryKeys(data.data, PrimaryKeyFields, crudTableName);
|
|
115
|
+
removeMultiplePrimaryKey(data.data, PrimaryKeyFields);
|
|
116
|
+
}
|
|
117
|
+
const dataObj = createDynamicData(data.data);
|
|
118
|
+
const requestPayload = this.requestResponseHelper.updateRequestPayload(crudTableName, whereClause, dataObj);
|
|
119
|
+
return this.update(requestPayload, headers);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
updateScreen(screenId, screenData) {
|
|
125
|
+
const screen = this.screenHelper.getScreen(screenId);
|
|
126
|
+
if (screen) {
|
|
127
|
+
const appObject = getAppObjectFromSystemDBTableName('TABMD_AppScreen');
|
|
128
|
+
if (appObject) {
|
|
129
|
+
syncAppObjectFields(screenData, appObject);
|
|
130
|
+
}
|
|
131
|
+
Object.assign({}, screen, { Container: screenData.Container });
|
|
132
|
+
const queryFilters = [];
|
|
133
|
+
queryFilters.push({ FieldName: 'ID', FieldValue: screenId });
|
|
134
|
+
const whereClause = this.whereClauseHelper.bindWhereClauseForUpdate('TABMD_AppScreen', queryFilters);
|
|
135
|
+
const dataObj = createDynamicData(screenData);
|
|
136
|
+
const requestPayload = this.requestResponseHelper.updateRequestPayload('TABMD_AppScreen', whereClause, dataObj);
|
|
137
|
+
return this.update(requestPayload);
|
|
138
138
|
}
|
|
139
|
-
return
|
|
139
|
+
return null;
|
|
140
140
|
}
|
|
141
141
|
/**
|
|
142
|
-
* Update using DSQ ID
|
|
143
|
-
*
|
|
144
|
-
* @param dsqId The DSQ ID
|
|
142
|
+
* Update records using the provided DSQ ID, data, filters
|
|
143
|
+
* @param dsqId The ID of the DataSourceQuery to use for the update
|
|
145
144
|
* @param data The data to update
|
|
146
|
-
* @param
|
|
147
|
-
* @
|
|
148
|
-
* @param headers Optional headers
|
|
149
|
-
* @returns Observable with update result
|
|
145
|
+
* @param filters The filters to apply to the update
|
|
146
|
+
* @returns The response from the update operation
|
|
150
147
|
*/
|
|
151
|
-
|
|
152
|
-
const
|
|
153
|
-
if (
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
// Use provided tableName or fallback to appObject's table name
|
|
161
|
-
const entityName = tableName || appObjectModel.SystemDBTableName;
|
|
162
|
-
const whereClause = this.whereClauseHelper.bindWhereClauseForUpdate(entityName, queryFieldsArray);
|
|
163
|
-
const dataObj = createDynamicData(data.data);
|
|
164
|
-
removeBlankValue(dataObj);
|
|
165
|
-
const requestBody = {
|
|
166
|
-
entityName: entityName,
|
|
167
|
-
fields: dataObj,
|
|
168
|
-
whereClause: whereClause
|
|
169
|
-
};
|
|
170
|
-
const header = getHeaders(headers);
|
|
171
|
-
return this.apiService.putToService(APIServices.crudService, API.recordsUpdate, requestBody, header).pipe(switchMap((response) => {
|
|
172
|
-
if (!response?.IsSuccess) {
|
|
173
|
-
console.error('[TabUpdateService] Update using DSQ failed:', response?.Errors);
|
|
174
|
-
return of(response);
|
|
175
|
-
}
|
|
176
|
-
if (response?.Result?.length) {
|
|
177
|
-
return of({
|
|
178
|
-
...response,
|
|
179
|
-
Result: response?.Result?.[0]
|
|
180
|
-
});
|
|
148
|
+
updateUsingDsqIdFiltersAndCustomViewId(dsqId, data, filters) {
|
|
149
|
+
const appObject = getAppObjectFromDataSourceQueryID(dsqId);
|
|
150
|
+
if (appObject) {
|
|
151
|
+
if (data) {
|
|
152
|
+
const whereClause = this.whereClauseHelper.bindWhereClauseForUpdateUsingFilters(appObject.SystemDBTableName, filters, appObject.Fields);
|
|
153
|
+
let dataObj = [];
|
|
154
|
+
dataObj = createDynamicData(data);
|
|
155
|
+
const requestPayload = this.requestResponseHelper.updateRequestPayload(appObject.SystemDBTableName, whereClause, dataObj);
|
|
156
|
+
return this.update(requestPayload);
|
|
181
157
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
}
|
|
185
|
-
return of(response);
|
|
186
|
-
}), catchError((error) => {
|
|
187
|
-
console.error('[TabUpdateService] Update using DSQ error:', error);
|
|
188
|
-
return throwError(() => error);
|
|
189
|
-
}));
|
|
158
|
+
}
|
|
159
|
+
return null;
|
|
190
160
|
}
|
|
191
161
|
static { this.ɵfac = function TabUpdateService_Factory(t) { return new (t || TabUpdateService)(); }; }
|
|
192
162
|
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: TabUpdateService, factory: TabUpdateService.ɵfac, providedIn: 'root' }); }
|
|
@@ -195,4 +165,4 @@ export class TabUpdateService {
|
|
|
195
165
|
type: Injectable,
|
|
196
166
|
args: [{ providedIn: 'root' }]
|
|
197
167
|
}], null, null); })();
|
|
198
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXVwZGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NydWQvdGFiLXVwZGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckksT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUs5RCxNQUFNLE9BQU8sZ0JBQWdCO0lBRDdCO1FBRW1CLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BDLHNCQUFpQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlDLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEMsbUJBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7S0FxTzFEO0lBbk9DOzs7Ozs7T0FNRztJQUNILGdCQUFnQixDQUFDLFFBQWdCLEVBQUUsSUFBUyxFQUFFLE9BQWE7UUFDekQsTUFBTSxNQUFNLEdBQVUsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDNUUsTUFBTSxTQUFTLEdBQWMsY0FBYyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBRXRELElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDeEIsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsd0JBQXdCLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBRUQsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFO1lBQy9DLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sYUFBYSxHQUFHLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQztRQUN2RCxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRTFDLE1BQU0sZ0JBQWdCLEdBQVEsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFN0QsSUFBSSxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM3QixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBRTVCLElBQUksV0FBZ0IsQ0FBQztRQUNyQixJQUFJLGdCQUFnQixJQUFJLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0RCxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQzVELFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsNEJBQTRCLENBQy9ELE1BQU0sRUFDTixJQUFJLENBQUMsUUFBUSxFQUNiLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFDN0IsYUFBYSxDQUNkLENBQUM7UUFDSixDQUFDO2FBQU0sSUFBSSxnQkFBZ0IsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDM0QsV0FBVyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxxQ0FBcUMsQ0FDeEUsSUFBSSxDQUFDLElBQUksRUFDVCxnQkFBZ0IsRUFDaEIsYUFBYSxDQUNkLENBQUM7WUFDRix3QkFBd0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUVELHNCQUFzQjtRQUN0QixNQUFNLFlBQVksR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3RDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRS9CLDhEQUE4RDtRQUM5RCxNQUFNLFdBQVcsR0FBRztZQUNsQixVQUFVLEVBQUUsYUFBYTtZQUN6QixNQUFNLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxDQUFDO1lBQ3ZDLFdBQVcsRUFBRSxXQUFXO1NBQ3pCLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkMsc0JBQXNCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQ2pDLFdBQVcsQ0FBQyxXQUFXLEVBQ3ZCLEdBQUcsQ0FBQyxhQUFhLEVBQ2pCLFdBQVcsRUFDWCxNQUFNLENBQ1AsQ0FBQyxJQUFJLENBQ0osU0FBUyxDQUFDLENBQUMsUUFBMkIsRUFBRSxFQUFFO1lBQ3hDLElBQUksQ0FBQyxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUM7Z0JBQ3pCLE9BQU8sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNyRSxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN0QixDQUFDO1lBRUQsaURBQWlEO1lBQ2pELElBQUksUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztnQkFDN0IsT0FBUSxFQUFFLENBQUM7b0JBQ1QsR0FBRyxRQUFRO29CQUNYLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUM5QixDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsb0NBQW9DO2lCQUMvQixJQUFJLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBQztnQkFDakMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsQ0FBQztZQUVELGtDQUFrQztZQUNsQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixPQUFPLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3pELE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGlCQUFpQixDQUFDLFFBQTJCO1FBQ25ELE1BQU0sYUFBYSxHQUFHLFFBQVEsRUFBRSxhQUFhLENBQUM7UUFFOUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsNERBQTRELENBQUMsQ0FBQztZQUM1RSxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QixDQUFDO1FBRUQsNERBQTREO1FBQzVELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQzdELEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQ25CLCtCQUErQjtZQUMvQixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUM1QixNQUFNLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFZLElBQUkseUJBQXlCLENBQUMsQ0FBQztZQUMxRSxDQUFDO1lBRUQsK0JBQStCO1lBQy9CLE9BQU87Z0JBQ0wsR0FBRyxRQUFRO2dCQUNYLE1BQU0sRUFBRSxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNoQyxlQUFlLEVBQUUsWUFBWSxDQUFDLGVBQWUsSUFBSSxDQUFDO2FBQ25ELENBQUM7UUFDSixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNuQixJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUsscUJBQXFCLEVBQUUsQ0FBQztnQkFDNUMsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxLQUFLLENBQy9CLG1IQUFtSCxDQUNwSCxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsbUJBQW1CLENBQUMsUUFBZ0IsRUFBRSxJQUFTLEVBQUUsY0FBdUIsRUFBRSxPQUFhO1FBQ3JGLElBQUksUUFBZ0IsQ0FBQztRQUVyQixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsTUFBTSxNQUFNLEdBQWMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEUsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLDRCQUE0QixDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNsRyxRQUFRLEdBQUcsZ0JBQWdCLEVBQUUsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUM5QyxDQUFDO1FBRUQsSUFBSSxjQUFjLEVBQUUsQ0FBQztZQUNuQixRQUFRLEdBQUcsY0FBYyxDQUFDO1FBQzVCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCxjQUFjLENBQUMsS0FBYSxFQUFFLElBQVMsRUFBRSxTQUFrQixFQUFFLGdCQUFzQixFQUFFLE9BQWE7UUFDaEcsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUNyQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLGdCQUFnQixDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNuRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDcEIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsK0RBQStEO1FBQy9ELE1BQU0sVUFBVSxHQUFHLFNBQVMsSUFBSSxjQUFjLENBQUMsaUJBQWlCLENBQUM7UUFFakUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHdCQUF3QixDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ2xHLE1BQU0sT0FBTyxHQUFRLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUUxQixNQUFNLFdBQVcsR0FBRztZQUNsQixVQUFVLEVBQUUsVUFBVTtZQUN0QixNQUFNLEVBQUUsT0FBTztZQUNmLFdBQVcsRUFBRSxXQUFXO1NBQ3pCLENBQUM7UUFFRixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFbkMsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FDakMsV0FBVyxDQUFDLFdBQVcsRUFDdkIsR0FBRyxDQUFDLGFBQWEsRUFDakIsV0FBVyxFQUNYLE1BQU0sQ0FDUCxDQUFDLElBQUksQ0FDSixTQUFTLENBQUMsQ0FBQyxRQUEyQixFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxDQUFDLEtBQUssQ0FBQyw2Q0FBNkMsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQy9FLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RCLENBQUM7WUFFRCxJQUFJLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQzdCLE9BQVEsRUFBRSxDQUFDO29CQUNULEdBQUcsUUFBUTtvQkFDWCxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDOUIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxJQUFJLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBQztnQkFDbkMsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsQ0FBQztZQUVELE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsNENBQTRDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbkUsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7aUZBek9VLGdCQUFnQjt1RUFBaEIsZ0JBQWdCLFdBQWhCLGdCQUFnQixtQkFESCxNQUFNOztpRkFDbkIsZ0JBQWdCO2NBRDVCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAsIG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU2NyZWVuSGVscGVyIH0gZnJvbSBcIi4uL2hlbHBlcnMvc2NyZWVuL3NjcmVlbi5oZWxwZXJzXCI7XHJcbmltcG9ydCB7IFdoZXJlQ2xhdXNlSGVscGVyIH0gZnJvbSBcIi4uL2hlbHBlcnMvY29tbW9uL3doZXJlLWNsYXVzZS5oZWxwZXJzXCI7XHJcbmltcG9ydCB7IE1ldGFkYXRhSGVscGVyIH0gZnJvbSBcIi4uL2hlbHBlcnMvY29tbW9uL21ldGEtZGF0YS5oZWxwZXJzXCI7XHJcbmltcG9ydCB7IHN5bmNBcHBPYmplY3RGaWVsZHMgfSBmcm9tIFwiLi4vdXRpbHMvdGFiLWFwcC51dGlsXCI7XHJcbmltcG9ydCB7IEFwcE9iamVjdCwgQXBwU2NyZWVuIH0gZnJvbSBcIi4uL21vZGVscy9hcHAtb2JqZWN0LmNsYXNzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUR5bmFtaWNEYXRhLCByZW1vdmVCbGFua1ZhbHVlIH0gZnJvbSBcIi4uL3V0aWxzL2pzb24udXRpbFwiO1xyXG5pbXBvcnQgeyBnZXRFZGl0UmVjb3JkSWQsIGdldFByaW1hcnlLZXlGaWVsZHMsIHJlbW92ZU11bHRpcGxlUHJpbWFyeUtleSwgcmVtb3ZlUHJpbWFyeUtleSwgZ2V0SGVhZGVycyB9IGZyb20gXCIuLi91dGlscy9yZXEtcmVzLnV0aWxcIjtcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvaHR0cC1jbGllbnQvYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaWduYWxSU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZS9zaWduYWxyL3NpZ25hbHIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFQSSwgQVBJU2VydmljZXMgfSBmcm9tICcuLi9jb25zdGFudHMvYXBpLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IENvbW1vbkFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb21tb24uaW50ZXJmYWNlJztcclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgVGFiVXBkYXRlU2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBzY3JlZW5IZWxwZXIgPSBpbmplY3QoU2NyZWVuSGVscGVyKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHdoZXJlQ2xhdXNlSGVscGVyID0gaW5qZWN0KFdoZXJlQ2xhdXNlSGVscGVyKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGFwaVNlcnZpY2UgPSBpbmplY3QoQXBpU2VydmljZSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBzaWduYWxSU2VydmljZSA9IGluamVjdChTaWduYWxSU2VydmljZSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBtZXRhZGF0YUhlbHBlciA9IGluamVjdChNZXRhZGF0YUhlbHBlcik7XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSB1c2luZyAvcmVjb3Jkcy91cGRhdGUgZW5kcG9pbnQgd2l0aCBTWU5DL0FTWU5DIHN1cHBvcnRcclxuICAgKiBAcGFyYW0gb2JqZWN0SWQgVGhlIG9iamVjdCBJRFxyXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIHRvIHVwZGF0ZVxyXG4gICAqIEBwYXJhbSBoZWFkZXJzIE9wdGlvbmFsIGhlYWRlcnNcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHdpdGggdXBkYXRlIHJlc3VsdFxyXG4gICAqL1xyXG4gIHVwZGF0ZUJ5T2JqZWN0SWQob2JqZWN0SWQ6IHN0cmluZywgZGF0YTogYW55LCBoZWFkZXJzPzogYW55KTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4gfCBudWxsIHtcclxuICAgIGNvbnN0IGZpZWxkczogYW55W10gPSBbXTtcclxuICAgIGNvbnN0IGFwcE9iamVjdE1vZGVsID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRBcHBPYmplY3RCeUlkT3JOYW1lKG9iamVjdElkKTtcclxuICAgIGNvbnN0IGFwcE9iamVjdDogQXBwT2JqZWN0ID0gYXBwT2JqZWN0TW9kZWw/LnRvSlNPTigpO1xyXG5cclxuICAgIGlmICghYXBwT2JqZWN0TW9kZWw/LklEKSB7XHJcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihgQXBwT2JqZWN0IG5vdCBmb3VuZDogJHtvYmplY3RJZH1gKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXBwT2JqZWN0TW9kZWwuZmllbGRzKCkuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGZpZWxkcy5wdXNoKHsgRmllbGQ6IGVsZW1lbnQgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBjcnVkVGFibGVOYW1lID0gYXBwT2JqZWN0TW9kZWwuU3lzdGVtREJUYWJsZU5hbWU7XHJcbiAgICBzeW5jQXBwT2JqZWN0RmllbGRzKGRhdGEuZGF0YSwgYXBwT2JqZWN0KTtcclxuXHJcbiAgICBjb25zdCBQcmltYXJ5S2V5RmllbGRzOiBhbnkgPSBnZXRQcmltYXJ5S2V5RmllbGRzKGFwcE9iamVjdCk7XHJcblxyXG4gICAgaWYgKCFhcHBPYmplY3QgfHwgIWRhdGEuZGF0YSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZWNvcmRJZCA9IGdldEVkaXRSZWNvcmRJZChkYXRhLmRhdGEsIFByaW1hcnlLZXlGaWVsZHNbMF0/LkZpZWxkTmFtZSk7XHJcbiAgICBkYXRhWydyZWNvcmRJZCddID0gcmVjb3JkSWQ7XHJcblxyXG4gICAgbGV0IHdoZXJlQ2xhdXNlOiBhbnk7XHJcbiAgICBpZiAoUHJpbWFyeUtleUZpZWxkcyAmJiBQcmltYXJ5S2V5RmllbGRzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICByZW1vdmVQcmltYXJ5S2V5KGRhdGEuZGF0YSwgUHJpbWFyeUtleUZpZWxkc1swXT8uRmllbGROYW1lKTtcclxuICAgICAgd2hlcmVDbGF1c2UgPSB0aGlzLndoZXJlQ2xhdXNlSGVscGVyLmJpbmRXaGVyZUNsYXVzZUZvclVwZGF0ZUdyaWQoXHJcbiAgICAgICAgZmllbGRzLFxyXG4gICAgICAgIGRhdGEucmVjb3JkSWQsXHJcbiAgICAgICAgUHJpbWFyeUtleUZpZWxkc1swXS5GaWVsZE5hbWUsXHJcbiAgICAgICAgY3J1ZFRhYmxlTmFtZVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChQcmltYXJ5S2V5RmllbGRzICYmIFByaW1hcnlLZXlGaWVsZHMubGVuZ3RoID4gMSkge1xyXG4gICAgICB3aGVyZUNsYXVzZSA9IHRoaXMud2hlcmVDbGF1c2VIZWxwZXIuYmluZFdoZXJlQ2xhdXNlRm9yTXVsdGlwbGVQcmltYXJ5S2V5cyhcclxuICAgICAgICBkYXRhLmRhdGEsXHJcbiAgICAgICAgUHJpbWFyeUtleUZpZWxkcyxcclxuICAgICAgICBjcnVkVGFibGVOYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIHJlbW92ZU11bHRpcGxlUHJpbWFyeUtleShkYXRhLmRhdGEsIFByaW1hcnlLZXlGaWVsZHMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlbW92ZSBibGFuayB2YWx1ZXNcclxuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IHsgLi4uZGF0YS5kYXRhIH07XHJcbiAgICByZW1vdmVCbGFua1ZhbHVlKGZpbHRlcmVkRGF0YSk7XHJcblxyXG4gICAgLy8gVHJhbnNmb3JtIHRvIG5ldyBBUEkgZm9ybWF0IHVzaW5nIGNyZWF0ZUR5bmFtaWNEYXRhIHV0aWxpdHlcclxuICAgIGNvbnN0IHJlcXVlc3RCb2R5ID0ge1xyXG4gICAgICBlbnRpdHlOYW1lOiBjcnVkVGFibGVOYW1lLFxyXG4gICAgICBmaWVsZHM6IGNyZWF0ZUR5bmFtaWNEYXRhKGZpbHRlcmVkRGF0YSksXHJcbiAgICAgIHdoZXJlQ2xhdXNlOiB3aGVyZUNsYXVzZVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBoZWFkZXIgPSBnZXRIZWFkZXJzKGhlYWRlcnMpO1xyXG5cclxuICAgIC8vIFBVVCB0byBuZXcgZW5kcG9pbnRcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucHV0VG9TZXJ2aWNlKFxyXG4gICAgICBBUElTZXJ2aWNlcy5jcnVkU2VydmljZSxcclxuICAgICAgQVBJLnJlY29yZHNVcGRhdGUsXHJcbiAgICAgIHJlcXVlc3RCb2R5LFxyXG4gICAgICBoZWFkZXJcclxuICAgICkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChyZXNwb25zZTogQ29tbW9uQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoIXJlc3BvbnNlPy5Jc1N1Y2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUYWJVcGRhdGVTZXJ2aWNlXSBVcGRhdGUgZmFpbGVkOicsIHJlc3BvbnNlPy5FcnJvcnMpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENBU0UgMTogU1lOQyAtIE9wZXJhdGlvbiBjb21wbGV0ZWQgaW1tZWRpYXRlbHlcclxuICAgICAgICBpZiAocmVzcG9uc2U/LlJlc3VsdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXR1cm4gIG9mKHtcclxuICAgICAgICAgICAgLi4ucmVzcG9uc2UsXHJcbiAgICAgICAgICAgIFJlc3VsdDogcmVzcG9uc2U/LlJlc3VsdD8uWzBdXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENBU0UgMjogQVNZTkMgLSBIYXMgY29ycmVsYXRpb25JZFxyXG4gICAgICAgIGVsc2UgaWYgKHJlc3BvbnNlPy5Db3JyZWxhdGlvbklkKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVBc3luY1VwZGF0ZShyZXNwb25zZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBDQVNFIDM6IFVua25vd24gcmVzcG9uc2UgZm9ybWF0XHJcbiAgICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignW1RhYlVwZGF0ZVNlcnZpY2VdIFVwZGF0ZSBlcnJvcjonLCBlcnJvcik7XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBhc3luYyB1cGRhdGUgLSB3YWl0IGZvciBTaWduYWxSIG5vdGlmaWNhdGlvblxyXG4gICAqIEBwYXJhbSByZXNwb25zZSBJbml0aWFsIHJlc3BvbnNlIHdpdGggY29ycmVsYXRpb25JZFxyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgd2l0aCB1cGRhdGUgcmVzdWx0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVBc3luY1VwZGF0ZShyZXNwb25zZTogQ29tbW9uQXBpUmVzcG9uc2UpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBjb3JyZWxhdGlvbklkID0gcmVzcG9uc2U/LkNvcnJlbGF0aW9uSWQ7XHJcblxyXG4gICAgaWYgKCFjb3JyZWxhdGlvbklkKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUYWJVcGRhdGVTZXJ2aWNlXSBNaXNzaW5nIGNvcnJlbGF0aW9uSWQgaW4gYXN5bmMgcmVzcG9uc2UnKTtcclxuICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBXYWl0IGZvciBTaWduYWxSIG5vdGlmaWNhdGlvbiB3aXRoIG1hdGNoaW5nIGNvcnJlbGF0aW9uSWRcclxuICAgIHJldHVybiB0aGlzLnNpZ25hbFJTZXJ2aWNlLndhaXRGb3JPcGVyYXRpb24oY29ycmVsYXRpb25JZCkucGlwZShcclxuICAgICAgbWFwKChub3RpZmljYXRpb24pID0+IHtcclxuICAgICAgICAvLyBDaGVjayBpZiBvcGVyYXRpb24gc3VjY2VlZGVkXHJcbiAgICAgICAgaWYgKCFub3RpZmljYXRpb24uaXNTdWNjZXNzKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Iobm90aWZpY2F0aW9uLmVycm9yTWVzc2FnZSB8fCAnVXBkYXRlIG9wZXJhdGlvbiBmYWlsZWQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIFJldHVybiByZXNwb25zZSB3aXRoIHN1Y2Nlc3NcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4ucmVzcG9uc2UsXHJcbiAgICAgICAgICBSZXN1bHQ6IG5vdGlmaWNhdGlvbi5yZXN1bHQ/LlswXSxcclxuICAgICAgICAgIFJlY29yZEFmZmVjdHRlZDogbm90aWZpY2F0aW9uLmFmZmVjdGVkUmVjb3JkcyB8fCAxXHJcbiAgICAgICAgfTtcclxuICAgICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XHJcbiAgICAgICAgaWYgKGVycm9yLm1lc3NhZ2UgPT09ICdPcGVyYXRpb24gdGltZWQgb3V0Jykge1xyXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKFxyXG4gICAgICAgICAgICAnVXBkYXRlIG9wZXJhdGlvbiB0aW1lZCBvdXQuIFRoZSBvcGVyYXRpb24gbWF5IHN0aWxsIGNvbXBsZXRlIGluIHRoZSBiYWNrZ3JvdW5kLiBQbGVhc2UgcmVmcmVzaCB0byBzZWUgdGhlIHJlc3VsdC4nXHJcbiAgICAgICAgICApKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSB1c2luZyBzY3JlZW4gSURcclxuICAgKiBAcGFyYW0gc2NyZWVuSWQgVGhlIHNjcmVlbiBJRFxyXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIHRvIHVwZGF0ZVxyXG4gICAqIEBwYXJhbSBvYmplY3RJZFRvU2F2ZSBPcHRpb25hbCBvYmplY3QgSUQgdG8gc2F2ZVxyXG4gICAqIEBwYXJhbSBoZWFkZXJzIE9wdGlvbmFsIGhlYWRlcnNcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHdpdGggdXBkYXRlIHJlc3VsdFxyXG4gICAqL1xyXG4gIHVwZGF0ZVVzaW5nU2NyZWVuSWQoc2NyZWVuSWQ6IHN0cmluZywgZGF0YTogYW55LCBvYmplY3RJZFRvU2F2ZT86IHN0cmluZywgaGVhZGVycz86IGFueSkge1xyXG4gICAgbGV0IG9iamVjdElkOiBzdHJpbmc7XHJcblxyXG4gICAgaWYgKHNjcmVlbklkKSB7XHJcbiAgICAgIGNvbnN0IHNjcmVlbjogQXBwU2NyZWVuID0gdGhpcy5zY3JlZW5IZWxwZXIuZ2V0U2NyZWVuKHNjcmVlbklkKTtcclxuICAgICAgY29uc3Qgc2NyZWVuRGF0YVNvdXJjZSA9IHRoaXMubWV0YWRhdGFIZWxwZXIuZ2V0RGF0YVNvdXJjZVF1ZXJ5QnlJZE9yTmFtZShzY3JlZW4uRGF0YVNvdXJjZVF1ZXJ5KTtcclxuICAgICAgb2JqZWN0SWQgPSBzY3JlZW5EYXRhU291cmNlPy5PYmplY3RJRCB8fCAnJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAob2JqZWN0SWRUb1NhdmUpIHtcclxuICAgICAgb2JqZWN0SWQgPSBvYmplY3RJZFRvU2F2ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy51cGRhdGVCeU9iamVjdElkKG9iamVjdElkISwgZGF0YSwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgdXNpbmcgRFNRIElEIHdpdGggY3VzdG9tIHRhYmxlIG5hbWUgYW5kIHF1ZXJ5IGZpZWxkc1xyXG4gICAqIFVzZXMgY3VzdG9tIHF1ZXJ5RmllbGRzQXJyYXkgZm9yIHdoZXJlIGNsYXVzZSBpbnN0ZWFkIG9mIHByaW1hcnkga2V5XHJcbiAgICogQHBhcmFtIGRzcUlkIFRoZSBEU1EgSURcclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byB1cGRhdGVcclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSB0YWJsZSBuYW1lXHJcbiAgICogQHBhcmFtIHF1ZXJ5RmllbGRzQXJyYXkgUXVlcnkgZmllbGRzIGFycmF5IGZvciBjdXN0b20gd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIGhlYWRlcnMgT3B0aW9uYWwgaGVhZGVyc1xyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgd2l0aCB1cGRhdGUgcmVzdWx0XHJcbiAgICovXHJcbiAgdXBkYXRlVXNpbmdEU1EoZHNxSWQ6IHN0cmluZywgZGF0YTogYW55LCB0YWJsZU5hbWU/OiBzdHJpbmcsIHF1ZXJ5RmllbGRzQXJyYXk/OiBhbnksIGhlYWRlcnM/OiBhbnkpIHtcclxuICAgIGNvbnN0IHNjcmVlbkRhdGFTb3VyY2UgPSB0aGlzLm1ldGFkYXRhSGVscGVyLmdldERhdGFTb3VyY2VRdWVyeUJ5SWRPck5hbWUoZHNxSWQpO1xyXG4gICAgaWYgKCFzY3JlZW5EYXRhU291cmNlIHx8ICFkYXRhPy5kYXRhKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFwcE9iamVjdE1vZGVsID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRBcHBPYmplY3RCeUlkT3JOYW1lKHNjcmVlbkRhdGFTb3VyY2UuT2JqZWN0SUQgfHwgJycpO1xyXG4gICAgaWYgKCFhcHBPYmplY3RNb2RlbCkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBVc2UgcHJvdmlkZWQgdGFibGVOYW1lIG9yIGZhbGxiYWNrIHRvIGFwcE9iamVjdCdzIHRhYmxlIG5hbWVcclxuICAgIGNvbnN0IGVudGl0eU5hbWUgPSB0YWJsZU5hbWUgfHwgYXBwT2JqZWN0TW9kZWwuU3lzdGVtREJUYWJsZU5hbWU7XHJcblxyXG4gICAgY29uc3Qgd2hlcmVDbGF1c2UgPSB0aGlzLndoZXJlQ2xhdXNlSGVscGVyLmJpbmRXaGVyZUNsYXVzZUZvclVwZGF0ZShlbnRpdHlOYW1lLCBxdWVyeUZpZWxkc0FycmF5KTtcclxuICAgIGNvbnN0IGRhdGFPYmo6IGFueSA9IGNyZWF0ZUR5bmFtaWNEYXRhKGRhdGEuZGF0YSk7XHJcbiAgICByZW1vdmVCbGFua1ZhbHVlKGRhdGFPYmopO1xyXG5cclxuICAgIGNvbnN0IHJlcXVlc3RCb2R5ID0ge1xyXG4gICAgICBlbnRpdHlOYW1lOiBlbnRpdHlOYW1lLFxyXG4gICAgICBmaWVsZHM6IGRhdGFPYmosXHJcbiAgICAgIHdoZXJlQ2xhdXNlOiB3aGVyZUNsYXVzZVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBoZWFkZXIgPSBnZXRIZWFkZXJzKGhlYWRlcnMpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucHV0VG9TZXJ2aWNlKFxyXG4gICAgICBBUElTZXJ2aWNlcy5jcnVkU2VydmljZSxcclxuICAgICAgQVBJLnJlY29yZHNVcGRhdGUsXHJcbiAgICAgIHJlcXVlc3RCb2R5LFxyXG4gICAgICBoZWFkZXJcclxuICAgICkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChyZXNwb25zZTogQ29tbW9uQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoIXJlc3BvbnNlPy5Jc1N1Y2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUYWJVcGRhdGVTZXJ2aWNlXSBVcGRhdGUgdXNpbmcgRFNRIGZhaWxlZDonLCByZXNwb25zZT8uRXJyb3JzKTtcclxuICAgICAgICAgIHJldHVybiBvZihyZXNwb25zZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAocmVzcG9uc2U/LlJlc3VsdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXR1cm4gIG9mKHtcclxuICAgICAgICAgICAgLi4ucmVzcG9uc2UsXHJcbiAgICAgICAgICAgIFJlc3VsdDogcmVzcG9uc2U/LlJlc3VsdD8uWzBdXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlPy5Db3JyZWxhdGlvbklkKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVBc3luY1VwZGF0ZShyZXNwb25zZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdbVGFiVXBkYXRlU2VydmljZV0gVXBkYXRlIHVzaW5nIERTUSBlcnJvcjonLCBlcnJvcik7XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbn0iXX0=
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXVwZGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NydWQvdGFiLXVwZGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBa0IsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxpQ0FBaUMsRUFBRSxpQ0FBaUMsRUFBRSw0QkFBNEIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlLLE9BQU8sRUFBRSxTQUFTLEVBQWEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBS3pILE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFbUIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNwQyxz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RyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLG9CQUFvQixDQUNwRSxTQUFTLENBQUMsaUJBQWlCLEVBQzNCLFdBQVcsRUFDWCxPQUFPLENBQ1IsQ0FBQztnQkFDRixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDckMsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7aUZBcExVLGdCQUFnQjt1RUFBaEIsZ0JBQWdCLFdBQWhCLGdCQUFnQixtQkFESCxNQUFNOztpRkFDbkIsZ0JBQWdCO2NBRDVCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBEU1FIZWxwZXIgfSBmcm9tIFwiLi4vaGVscGVycy9jb21tb24vZHNxLmhlbHBlcnNcIjtcclxuaW1wb3J0IHsgU2NyZWVuSGVscGVyIH0gZnJvbSBcIi4uL2hlbHBlcnMvc2NyZWVuL3NjcmVlbi5oZWxwZXJzXCI7XHJcbmltcG9ydCB7IFdoZXJlQ2xhdXNlSGVscGVyIH0gZnJvbSBcIi4uL2hlbHBlcnMvY29tbW9uL3doZXJlLWNsYXVzZS5oZWxwZXJzXCI7XHJcbmltcG9ydCB7IFJlcXVlc3RSZXNwb25zZUhlbHBlciB9IGZyb20gXCIuLi9oZWxwZXJzL2NvbW1vbi9yZXEtcmVzLmhlbHBlcnNcIjtcclxuaW1wb3J0IHsgQVBJRmlsdGVyQ3JpdGVyaWEsIEFQSVVwZGF0ZVF1ZXJ5IH0gZnJvbSBcIi4uL21vZGVscy9hcGktcXVlcnkuY2xhc3NcIjtcclxuaW1wb3J0IHsgUXVlcnlUeXBlIH0gZnJvbSBcIi4uL2VudW1zL3F1ZXJ5LmVudW1cIjtcclxuaW1wb3J0IHsgZ2V0QXBwT2JqZWN0LCBnZXRBcHBPYmplY3RGcm9tRGF0YVNvdXJjZVF1ZXJ5SUQsIGdldEFwcE9iamVjdEZyb21TeXN0ZW1EQlRhYmxlTmFtZSwgZ2V0RGF0YUZyb21EYXRhU291cmNlUXVlcnlJRCwgc3luY0FwcE9iamVjdEZpZWxkcyB9IGZyb20gXCIuLi91dGlscy90YWItYXBwLnV0aWxcIjtcclxuaW1wb3J0IHsgQXBwT2JqZWN0LCBBcHBTY3JlZW4gfSBmcm9tIFwiLi4vbW9kZWxzL2FwcC1vYmplY3QuY2xhc3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlRHluYW1pY0RhdGEgfSBmcm9tIFwiLi4vdXRpbHMvanNvbi51dGlsXCI7XHJcbmltcG9ydCB7IGdldEVkaXRSZWNvcmRJZCwgZ2V0UHJpbWFyeUtleUZpZWxkcywgcmVtb3ZlTXVsdGlwbGVQcmltYXJ5S2V5LCByZW1vdmVQcmltYXJ5S2V5IH0gZnJvbSBcIi4uL3V0aWxzL3JlcS1yZXMudXRpbFwiO1xyXG5pbXBvcnQgeyBVcGRhdGVRdWVyeVBhcmFtZXRlciB9IGZyb20gXCIuLi9tb2RlbHMvZGF0YS1zb3VyY2UtcXVlcmllcy5jbGFzc1wiO1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBUYWJVcGRhdGVTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRzcUhlbHBlciA9IGluamVjdChEU1FIZWxwZXIpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc2NyZWVuSGVscGVyID0gaW5qZWN0KFNjcmVlbkhlbHBlcik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSB3aGVyZUNsYXVzZUhlbHBlciA9IGluamVjdChXaGVyZUNsYXVzZUhlbHBlcik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSByZXF1ZXN0UmVzcG9uc2VIZWxwZXIgPSBpbmplY3QoUmVxdWVzdFJlc3BvbnNlSGVscGVyKTtcclxuXHJcbiAgdXBkYXRlKGRhdGE6IEFQSVVwZGF0ZVF1ZXJ5ICxoZWFkZXJzPzogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5kc3FIZWxwZXIuZXhlY3V0ZVF1ZXJ5KGRhdGEsIFF1ZXJ5VHlwZS5VcGRhdGUsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlVXNpbmdEU1EoZHNxSWQ6IHN0cmluZywgZGF0YTogYW55LCB0YWJsZU5hbWU6IHN0cmluZywgcXVlcnlGaWVsZHNBcnJheT86IGFueSwgaGVhZGVycz86IGFueSkge1xyXG4gICAgY29uc3QgYXBwT2JqZWN0OiBBcHBPYmplY3QgPSBnZXREYXRhRnJvbURhdGFTb3VyY2VRdWVyeUlEKGRzcUlkKTtcclxuICAgIGlmIChhcHBPYmplY3QpIHtcclxuICAgICAgaWYgKGRhdGEgJiYgZGF0YS5kYXRhKSB7XHJcbiAgICAgICAgY29uc3Qgd2hlcmVDbGF1c2U6IEFQSUZpbHRlckNyaXRlcmlhID0gdGhpcy53aGVyZUNsYXVzZUhlbHBlci5iaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGUodGFibGVOYW1lLCBxdWVyeUZpZWxkc0FycmF5KTtcclxuICAgICAgICBsZXQgZGF0YU9iajogYW55ID0gW107XHJcbiAgICAgICAgZGF0YU9iaiA9IGNyZWF0ZUR5bmFtaWNEYXRhKGRhdGEuZGF0YSk7XHJcbiAgICAgICAgY29uc3QgcmVxdWVzdFBheWxvYWQgPSB0aGlzLnJlcXVlc3RSZXNwb25zZUhlbHBlci51cGRhdGVSZXF1ZXN0UGF5bG9hZCh0YWJsZU5hbWUsIHdoZXJlQ2xhdXNlLCBkYXRhT2JqKTtcclxuICAgICAgICByZXR1cm4gdGhpcy51cGRhdGUocmVxdWVzdFBheWxvYWQsIGhlYWRlcnMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBhcnRoIEIgVGhha2thciAtIDIwMjQtMTEtMDZcclxuICAgKiBVcGRhdGVzIGEgcmVjb3JkIGluIHRoZSBkYXRhYmFzZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgb2JqZWN0IElELlxyXG4gICAqIFNhbWUgY29kZSBhcyB1cGRhdGVVc2luZ1NjcmVlbklkIHdpdGggbWlub3IgbW9kaWZpY2F0aW9ucyBsaWtlIHVzaW5nIHRoZSBvYmplY3QgSUQgZGlyZWN0bHkgaW5zdGVhZCBvZiB0aGUgc2NyZWVuIElELlxyXG4gICAqIEBwYXJhbSBvYmplY3RJZCBUaGUgb2JqZWN0IElEIG9mIHRoZSByZWNvcmQgdG8gdXBkYXRlLlxyXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIHRvIHVwZGF0ZSB0aGUgcmVjb3JkIHdpdGguXHJcbiAgICogQHJldHVybnMgVGhlIHJlc3BvbnNlIGZyb20gdGhlIHVwZGF0ZSBvcGVyYXRpb24uXHJcbiAgICovXHJcbiAgdXBkYXRlQnlPYmplY3RJZChvYmplY3RJZDogc3RyaW5nLCBkYXRhOiBhbnkpIHtcclxuICAgIGNvbnN0IGZpZWxkczogYW55W10gPSBbXTtcclxuICAgIGxldCBhcHBPYmplY3Q6IGFueSA9IEFwcE9iamVjdDtcclxuXHJcbiAgICBhcHBPYmplY3QgPSBnZXRBcHBPYmplY3Qob2JqZWN0SWQpO1xyXG4gICAgYXBwT2JqZWN0LkZpZWxkcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgZmllbGRzLnB1c2goeyBGaWVsZDogZWxlbWVudCB9KTtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgY3J1ZFRhYmxlTmFtZSA9IGFwcE9iamVjdC5TeXN0ZW1EQlRhYmxlTmFtZTtcclxuICAgIHN5bmNBcHBPYmplY3RGaWVsZHMoZGF0YS5kYXRhLCBhcHBPYmplY3QpO1xyXG5cclxuICAgIGNvbnN0IFByaW1hcnlLZXlGaWVsZHM6IGFueSA9IGdldFByaW1hcnlLZXlGaWVsZHMoYXBwT2JqZWN0KTtcclxuICAgIGxldCB3aGVyZUNsYXVzZTogYW55ID0gQVBJRmlsdGVyQ3JpdGVyaWE7XHJcbiAgICBpZiAoYXBwT2JqZWN0KSB7XHJcbiAgICAgIGlmIChkYXRhLmRhdGEpIHtcclxuICAgICAgICBjb25zdCByZWNvcmRJZCA9IGdldEVkaXRSZWNvcmRJZChcclxuICAgICAgICAgIGRhdGEuZGF0YSxcclxuICAgICAgICAgIFByaW1hcnlLZXlGaWVsZHNbMF0/LkZpZWxkTmFtZVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgZGF0YVsncmVjb3JkSWQnXSA9IHJlY29yZElkO1xyXG5cclxuICAgICAgICBpZiAoUHJpbWFyeUtleUZpZWxkcyAmJiBQcmltYXJ5S2V5RmllbGRzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgcmVtb3ZlUHJpbWFyeUtleShkYXRhLmRhdGEsIFByaW1hcnlLZXlGaWVsZHNbMF0/LkZpZWxkTmFtZSk7XHJcbiAgICAgICAgICB3aGVyZUNsYXVzZSA9IHRoaXMud2hlcmVDbGF1c2VIZWxwZXIuYmluZFdoZXJlQ2xhdXNlRm9yVXBkYXRlR3JpZChcclxuICAgICAgICAgICAgZmllbGRzLFxyXG4gICAgICAgICAgICBkYXRhLnJlY29yZElkLFxyXG4gICAgICAgICAgICBQcmltYXJ5S2V5RmllbGRzWzBdLkZpZWxkTmFtZSxcclxuICAgICAgICAgICAgY3J1ZFRhYmxlTmFtZVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKFByaW1hcnlLZXlGaWVsZHMgJiYgUHJpbWFyeUtleUZpZWxkcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICB3aGVyZUNsYXVzZSA9XHJcbiAgICAgICAgICAgIHRoaXMud2hlcmVDbGF1c2VIZWxwZXIuYmluZFdoZXJlQ2xhdXNlRm9yTXVsdGlwbGVQcmltYXJ5S2V5cyhcclxuICAgICAgICAgICAgICBkYXRhLmRhdGEsXHJcbiAgICAgICAgICAgICAgUHJpbWFyeUtleUZpZWxkcyxcclxuICAgICAgICAgICAgICBjcnVkVGFibGVOYW1lXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICByZW1vdmVNdWx0aXBsZVByaW1hcnlLZXkoZGF0YS5kYXRhLCBQcmltYXJ5S2V5RmllbGRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGF0YU9iajogYW55ID0gY3JlYXRlRHluYW1pY0RhdGEoZGF0YS5kYXRhKTtcclxuICAgICAgICBjb25zdCByZXF1ZXN0UGF5bG9hZCA9IHRoaXMucmVxdWVzdFJlc3BvbnNlSGVscGVyLnVwZGF0ZVJlcXVlc3RQYXlsb2FkKFxyXG4gICAgICAgICAgY3J1ZFRhYmxlTmFtZSxcclxuICAgICAgICAgIHdoZXJlQ2xhdXNlLFxyXG4gICAgICAgICAgZGF0YU9ialxyXG4gICAgICAgICk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlKHJlcXVlc3RQYXlsb2FkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIHVwZGF0ZVVzaW5nU2NyZWVuSWQoc2NyZWVuSWQ6IHN0cmluZywgZGF0YTogYW55LCBvYmplY3RJZFRvU2F2ZT86IHN0cmluZywgaGVhZGVycz86IGFueSkge1xyXG4gICAgbGV0IGZpZWxkcztcclxuICAgIGxldCBhcHBPYmplY3Q6IGFueSA9IEFwcE9iamVjdDtcclxuICAgIGxldCBjcnVkVGFibGVOYW1lO1xyXG4gICAgaWYgKHNjcmVlbklkKSB7XHJcbiAgICAgIGNvbnN0IHNjcmVlbjogQXBwU2NyZWVuID0gdGhpcy5zY3JlZW5IZWxwZXIuZ2V0U2NyZWVuKHNjcmVlbklkKTtcclxuICAgICAgY29uc3Qgc2NyZWVuRGF0YVNvdXJjZSA9IGdldERhdGFGcm9tRGF0YVNvdXJjZVF1ZXJ5SUQoc2NyZWVuLkRhdGFTb3VyY2VRdWVyeSk7XHJcbiAgICAgIGFwcE9iamVjdCA9IGdldEFwcE9iamVjdChzY3JlZW5EYXRhU291cmNlLk9iamVjdElEX1Rvc2F2ZSk7XHJcbiAgICAgIGNydWRUYWJsZU5hbWUgPSBhcHBPYmplY3QuU3lzdGVtREJUYWJsZU5hbWU7XHJcbiAgICAgIGZpZWxkcyA9IHNjcmVlbkRhdGFTb3VyY2U/LkZpZWxkcz8ubWFwKChmaWVsZDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgYXBwRmllbGQgPSBhcHBPYmplY3Q/LkZpZWxkcz8uZmluZCgoZjogYW55KSA9PiBmPy5JRD8udG9Mb3dlckNhc2UoKSA9PT0gZmllbGQ/LkFwcEZpZWxkSUQ/LnRvTG93ZXJDYXNlKCkpID8/IHt9O1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAuLi5maWVsZCxcclxuICAgICAgICAgIEZpZWxkOiBhcHBGaWVsZFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgICBzeW5jQXBwT2JqZWN0RmllbGRzKGRhdGEuZGF0YSwgYXBwT2JqZWN0KTtcclxuICAgIH1cclxuICAgIGlmIChvYmplY3RJZFRvU2F2ZSkge1xyXG4gICAgICBmaWVsZHMgPSBbXTtcclxuICAgICAgYXBwT2JqZWN0ID0gZ2V0QXBwT2JqZWN0KG9iamVjdElkVG9TYXZlKTtcclxuICAgICAgYXBwT2JqZWN0LkZpZWxkcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICBmaWVsZHMucHVzaCh7IEZpZWxkOiBlbGVtZW50IH0pXHJcbiAgICAgIH0pO1xyXG4gICAgICBjcnVkVGFibGVOYW1lID0gYXBwT2JqZWN0LlN5c3RlbURCVGFibGVOYW1lO1xyXG4gICAgICBzeW5jQXBwT2JqZWN0RmllbGRzKGRhdGEuZGF0YSwgYXBwT2JqZWN0KTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBQcmltYXJ5S2V5RmllbGRzOiBhbnkgPSBnZXRQcmltYXJ5S2V5RmllbGRzKGFwcE9iamVjdCk7XHJcbiAgICBsZXQgd2hlcmVDbGF1c2U6IGFueSA9IEFQSUZpbHRlckNyaXRlcmlhO1xyXG4gICAgaWYgKGFwcE9iamVjdCkge1xyXG4gICAgICBpZiAoZGF0YS5kYXRhKSB7XHJcbiAgICAgICAgY29uc3QgcmVjb3JkSWQgPSBnZXRFZGl0UmVjb3JkSWQoZGF0YS5kYXRhLCBQcmltYXJ5S2V5RmllbGRzWzBdPy5GaWVsZE5hbWUpO1xyXG4gICAgICAgIGRhdGFbJ3JlY29yZElkJ10gPSByZWNvcmRJZDtcclxuXHJcbiAgICAgICAgaWYgKFByaW1hcnlLZXlGaWVsZHMgJiYgUHJpbWFyeUtleUZpZWxkcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgIHJlbW92ZVByaW1hcnlLZXkoZGF0YS5kYXRhLCBQcmltYXJ5S2V5RmllbGRzWzBdPy5GaWVsZE5hbWUpO1xyXG4gICAgICAgICAgd2hlcmVDbGF1c2UgPSB0aGlzLndoZXJlQ2xhdXNlSGVscGVyLmJpbmRXaGVyZUNsYXVzZUZvclVwZGF0ZUdyaWQoZmllbGRzLCBkYXRhLnJlY29yZElkLCBQcmltYXJ5S2V5RmllbGRzWzBdLkZpZWxkTmFtZSwgY3J1ZFRhYmxlTmFtZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChQcmltYXJ5S2V5RmllbGRzICYmIFByaW1hcnlLZXlGaWVsZHMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgd2hlcmVDbGF1c2UgPSB0aGlzLndoZXJlQ2xhdXNlSGVscGVyLmJpbmRXaGVyZUNsYXVzZUZvck11bHRpcGxlUHJpbWFyeUtleXMoZGF0YS5kYXRhLCBQcmltYXJ5S2V5RmllbGRzLCBjcnVkVGFibGVOYW1lKTtcclxuICAgICAgICAgIHJlbW92ZU11bHRpcGxlUHJpbWFyeUtleShkYXRhLmRhdGEsIFByaW1hcnlLZXlGaWVsZHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkYXRhT2JqOiBhbnkgPSBjcmVhdGVEeW5hbWljRGF0YShkYXRhLmRhdGEpO1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3RQYXlsb2FkID0gdGhpcy5yZXF1ZXN0UmVzcG9uc2VIZWxwZXIudXBkYXRlUmVxdWVzdFBheWxvYWQoY3J1ZFRhYmxlTmFtZSwgd2hlcmVDbGF1c2UsIGRhdGFPYmopO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZShyZXF1ZXN0UGF5bG9hZCwgaGVhZGVycyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlU2NyZWVuKHNjcmVlbklkOiBzdHJpbmcsIHNjcmVlbkRhdGE6IGFueSkge1xyXG4gICAgY29uc3Qgc2NyZWVuOiBBcHBTY3JlZW4gPSB0aGlzLnNjcmVlbkhlbHBlci5nZXRTY3JlZW4oc2NyZWVuSWQpO1xyXG4gICAgaWYgKHNjcmVlbikge1xyXG4gICAgICBjb25zdCBhcHBPYmplY3QgPSBnZXRBcHBPYmplY3RGcm9tU3lzdGVtREJUYWJsZU5hbWUoJ1RBQk1EX0FwcFNjcmVlbicpO1xyXG4gICAgICBpZiAoYXBwT2JqZWN0KSB7XHJcbiAgICAgICAgc3luY0FwcE9iamVjdEZpZWxkcyhzY3JlZW5EYXRhLCBhcHBPYmplY3QpO1xyXG4gICAgICB9XHJcbiAgICAgIE9iamVjdC5hc3NpZ24oe30sIHNjcmVlbiwgeyBDb250YWluZXI6IHNjcmVlbkRhdGEuQ29udGFpbmVyIH0pO1xyXG4gICAgICBjb25zdCBxdWVyeUZpbHRlcnM6IFVwZGF0ZVF1ZXJ5UGFyYW1ldGVyW10gPSBbXTtcclxuICAgICAgcXVlcnlGaWx0ZXJzLnB1c2goeyBGaWVsZE5hbWU6ICdJRCcsIEZpZWxkVmFsdWU6IHNjcmVlbklkIH0pXHJcbiAgICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gdGhpcy53aGVyZUNsYXVzZUhlbHBlci5iaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGUoJ1RBQk1EX0FwcFNjcmVlbicsIHF1ZXJ5RmlsdGVycyk7XHJcbiAgICAgIGNvbnN0IGRhdGFPYmo6IGFueSA9IGNyZWF0ZUR5bmFtaWNEYXRhKHNjcmVlbkRhdGEpO1xyXG4gICAgICBjb25zdCByZXF1ZXN0UGF5bG9hZCA9IHRoaXMucmVxdWVzdFJlc3BvbnNlSGVscGVyLnVwZGF0ZVJlcXVlc3RQYXlsb2FkKCdUQUJNRF9BcHBTY3JlZW4nLCB3aGVyZUNsYXVzZSwgZGF0YU9iaik7XHJcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZShyZXF1ZXN0UGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHJlY29yZHMgdXNpbmcgdGhlIHByb3ZpZGVkIERTUSBJRCwgZGF0YSwgZmlsdGVyc1xyXG4gICAqIEBwYXJhbSBkc3FJZCBUaGUgSUQgb2YgdGhlIERhdGFTb3VyY2VRdWVyeSB0byB1c2UgZm9yIHRoZSB1cGRhdGVcclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byB1cGRhdGVcclxuICAgKiBAcGFyYW0gZmlsdGVycyBUaGUgZmlsdGVycyB0byBhcHBseSB0byB0aGUgdXBkYXRlXHJcbiAgICogQHJldHVybnMgVGhlIHJlc3BvbnNlIGZyb20gdGhlIHVwZGF0ZSBvcGVyYXRpb25cclxuICAgKi9cclxuICB1cGRhdGVVc2luZ0RzcUlkRmlsdGVyc0FuZEN1c3RvbVZpZXdJZChcclxuICAgIGRzcUlkOiBzdHJpbmcsXHJcbiAgICBkYXRhOiBhbnksXHJcbiAgICBmaWx0ZXJzOiBhbnlcclxuICApIHtcclxuICAgIGNvbnN0IGFwcE9iamVjdDogQXBwT2JqZWN0ID0gZ2V0QXBwT2JqZWN0RnJvbURhdGFTb3VyY2VRdWVyeUlEKGRzcUlkKTtcclxuICAgIGlmIChhcHBPYmplY3QpIHtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICBjb25zdCB3aGVyZUNsYXVzZTogQVBJRmlsdGVyQ3JpdGVyaWEgPVxyXG4gICAgICAgICAgdGhpcy53aGVyZUNsYXVzZUhlbHBlci5iaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGVVc2luZ0ZpbHRlcnMoXHJcbiAgICAgICAgICAgIGFwcE9iamVjdC5TeXN0ZW1EQlRhYmxlTmFtZSxcclxuICAgICAgICAgICAgZmlsdGVycyxcclxuICAgICAgICAgICAgYXBwT2JqZWN0LkZpZWxkc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICBsZXQgZGF0YU9iajogYW55ID0gW107XHJcbiAgICAgICAgZGF0YU9iaiA9IGNyZWF0ZUR5bmFtaWNEYXRhKGRhdGEpO1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3RQYXlsb2FkID0gdGhpcy5yZXF1ZXN0UmVzcG9uc2VIZWxwZXIudXBkYXRlUmVxdWVzdFBheWxvYWQoXHJcbiAgICAgICAgICBhcHBPYmplY3QuU3lzdGVtREJUYWJsZU5hbWUsXHJcbiAgICAgICAgICB3aGVyZUNsYXVzZSxcclxuICAgICAgICAgIGRhdGFPYmpcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZShyZXF1ZXN0UGF5bG9hZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
export var QueryType;
|
|
2
2
|
(function (QueryType) {
|
|
3
3
|
QueryType[QueryType["Select"] = 0] = "Select";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
QueryType[QueryType["Upsert"] =
|
|
8
|
-
QueryType[QueryType["BulkUpdate"] =
|
|
9
|
-
QueryType[QueryType["BulkInsert"] =
|
|
4
|
+
QueryType[QueryType["Insert"] = 1] = "Insert";
|
|
5
|
+
QueryType[QueryType["Update"] = 2] = "Update";
|
|
6
|
+
QueryType[QueryType["Delete"] = 3] = "Delete";
|
|
7
|
+
QueryType[QueryType["Upsert"] = 4] = "Upsert";
|
|
8
|
+
QueryType[QueryType["BulkUpdate"] = 5] = "BulkUpdate";
|
|
9
|
+
QueryType[QueryType["BulkInsert"] = 6] = "BulkInsert";
|
|
10
10
|
})(QueryType || (QueryType = {}));
|
|
11
11
|
export var JoinType;
|
|
12
12
|
(function (JoinType) {
|
|
13
13
|
JoinType[JoinType["LeftJoin"] = 1] = "LeftJoin";
|
|
14
14
|
JoinType[JoinType["RightJoin"] = 2] = "RightJoin";
|
|
15
15
|
})(JoinType || (JoinType = {}));
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9lbnVtcy9xdWVyeS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFNBUVg7QUFSRCxXQUFZLFNBQVM7SUFDbkIsNkNBQU0sQ0FBQTtJQUNOLDZDQUFNLENBQUE7SUFDTiw2Q0FBTSxDQUFBO0lBQ04sNkNBQU0sQ0FBQTtJQUNOLDZDQUFNLENBQUE7SUFDTixxREFBVSxDQUFBO0lBQ1YscURBQVUsQ0FBQTtBQUNaLENBQUMsRUFSVyxTQUFTLEtBQVQsU0FBUyxRQVFwQjtBQUVELE1BQU0sQ0FBTixJQUFZLFFBR1g7QUFIRCxXQUFZLFFBQVE7SUFDbEIsK0NBQVksQ0FBQTtJQUNaLGlEQUFhLENBQUE7QUFDZixDQUFDLEVBSFcsUUFBUSxLQUFSLFFBQVEsUUFHbkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBRdWVyeVR5cGUge1xyXG4gIFNlbGVjdCxcclxuICBJbnNlcnQsXHJcbiAgVXBkYXRlLFxyXG4gIERlbGV0ZSxcclxuICBVcHNlcnQsXHJcbiAgQnVsa1VwZGF0ZSxcclxuICBCdWxrSW5zZXJ0LFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBKb2luVHlwZSB7XHJcbiAgTGVmdEpvaW4gPSAxLFxyXG4gIFJpZ2h0Sm9pbiA9IDIsXHJcbn1cclxuIl19
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { Injectable, inject } from '@angular/core';
|
|
3
3
|
import { ApiService } from '../../../core/http-client/api.service';
|
|
4
4
|
import { getHeaders } from '../../utils/req-res.util';
|
|
5
|
-
import { API
|
|
5
|
+
import { API } from '../../constants/api-constants';
|
|
6
6
|
import { map } from 'rxjs';
|
|
7
7
|
import { MetadataHelper } from './meta-data.helpers';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
@@ -35,13 +35,24 @@ export class AppHelper {
|
|
|
35
35
|
// return null;
|
|
36
36
|
// }
|
|
37
37
|
/**
|
|
38
|
-
* Retrieves
|
|
39
|
-
*
|
|
40
|
-
* @returns
|
|
38
|
+
* Retrieves screen data.
|
|
39
|
+
* @param params Optional parameters for retrieving screen data
|
|
40
|
+
* @returns Screen data
|
|
41
|
+
*/
|
|
42
|
+
getScreen(params) {
|
|
43
|
+
const headers = getHeaders();
|
|
44
|
+
if (headers) {
|
|
45
|
+
return this.apiService.get(API.getScreen, params, headers);
|
|
46
|
+
}
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Retrieves schema data.
|
|
51
|
+
* @returns Subscription for getting schema data
|
|
41
52
|
*/
|
|
42
53
|
getSchema() {
|
|
43
54
|
const headers = getHeaders();
|
|
44
|
-
return this.apiService.
|
|
55
|
+
return this.apiService.get(API.getSchema, undefined, headers);
|
|
45
56
|
}
|
|
46
57
|
// storeSchemaIntoIDB(){
|
|
47
58
|
// // this.idbService.clearIndexedDB()
|
|
@@ -146,39 +157,21 @@ export class AppHelper {
|
|
|
146
157
|
}
|
|
147
158
|
/**
|
|
148
159
|
* Exports a report based on the given parameters.
|
|
149
|
-
* Uses Report microservice with camelCase payload
|
|
150
160
|
* @param payload Parameters for exporting the report
|
|
151
161
|
* @returns The result of the export operation
|
|
152
162
|
*/
|
|
153
163
|
exportReport(payload) {
|
|
154
164
|
const headers = getHeaders();
|
|
155
|
-
|
|
156
|
-
const newPayload = {
|
|
157
|
-
dataReportId: payload.DataReportId,
|
|
158
|
-
reqTokens: payload.Reqtokens
|
|
159
|
-
};
|
|
160
|
-
return this.apiService.postToService(APIServices.reportService, API.reportExport, newPayload, headers).pipe(map((res) => {
|
|
161
|
-
// Convert result back to original format if needed
|
|
162
|
-
return {
|
|
163
|
-
...res,
|
|
164
|
-
Result: res?.Result?.content
|
|
165
|
-
};
|
|
166
|
-
}));
|
|
165
|
+
return this.apiService.post(API.exportReport, payload, headers);
|
|
167
166
|
}
|
|
168
167
|
/**
|
|
169
168
|
* Downloads a report file based on the given parameters.
|
|
170
|
-
* Uses Report microservice with camelCase payload
|
|
171
169
|
* @param payload Parameters for downloading the report file
|
|
172
170
|
* @returns The result of the download operation
|
|
173
171
|
*/
|
|
174
172
|
downloadReport(payload) {
|
|
175
173
|
const headers = getHeaders();
|
|
176
|
-
|
|
177
|
-
const newPayload = {
|
|
178
|
-
dataReportId: payload.DataReportId,
|
|
179
|
-
reqTokens: payload.Reqtokens
|
|
180
|
-
};
|
|
181
|
-
return this.apiService.postBlobToService(APIServices.reportService, API.reportDownload, newPayload, headers);
|
|
174
|
+
return this.apiService.postBlob(API.downloadReportFile, payload, headers);
|
|
182
175
|
}
|
|
183
176
|
/**
|
|
184
177
|
* Sends a report based on the given parameters.
|
|
@@ -242,4 +235,4 @@ export class AppHelper {
|
|
|
242
235
|
type: Injectable,
|
|
243
236
|
args: [{ providedIn: 'root' }]
|
|
244
237
|
}], null, null); })();
|
|
245
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vYXBwLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRXZDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7QUFHckQsTUFBTSxPQUFPLFNBQVM7SUFEdEI7UUFFbUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNoQyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztLQTJRMUQ7SUF4UUM7OztPQUdHO0lBQ0gsVUFBVSxDQUFDLFVBQWUsRUFBRSxFQUFFLE9BQWE7UUFDekMsT0FBTyxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDOUQsR0FBRyxDQUFDLENBQUMsR0FBc0IsRUFBRSxFQUFFO1lBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDakMsT0FBTyxHQUFHLENBQUM7UUFDYixDQUFDLENBQUMsQ0FDSCxDQUFD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LElBQUksQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZUFBZSxDQUFDLE9BQWE7UUFDM0IsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZUFBZSxDQUFDLEVBQVUsRUFBRSxPQUFhO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEYsQ0FBQzswRUE1UVUsU0FBUzt1RUFBVCxTQUFTLFdBQVQsU0FBUyxtQkFESSxNQUFNOztpRkFDbkIsU0FBUztjQURyQixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2h0dHAtY2xpZW50L2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZ2V0SGVhZGVycyB9IGZyb20gJy4uLy4uL3V0aWxzL3JlcS1yZXMudXRpbCc7XHJcbmltcG9ydCB7IEFQSSwgQVBJU2VydmljZXMgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvYXBpLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBDbG9uZURzcVBheWxvYWQsIENvbW1vbkFwaVJlc3BvbnNlLCBHZXREYXRhSnNvbkJ5VHlwZVBheWxvYWQsIFBlcmZvcm1hbmNlQW5hbHl0aWNzUGF5bG9hZCwgUmVmcmVzaEdsb2JhbFNlYXJjaERhdGFQYXlsb2FkLCBSZWZyZXNoUmVjb3JkSW5mb0RhdGFQYXlsb2FkLCBSZWdpc3RlckFwcE9iamVjdHNQYXlsb2FkLCBSZXBvcnRQYXlsb2FkLCBTY3JlZW5QZXJmb3JtYW5jZVBheWxvYWQsIFN5bmNBcHBGaWVsZHNQYXlsb2FkIH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9jb21tb24uaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgTWV0YWRhdGFIZWxwZXIgfSBmcm9tICcuL21ldGEtZGF0YS5oZWxwZXJzJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBBcHBIZWxwZXIge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpU2VydmljZSA9IGluamVjdChBcGlTZXJ2aWNlKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IG1ldGFkYXRhSGVscGVyID0gaW5qZWN0KE1ldGFkYXRhSGVscGVyKTtcclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIFJlYnVpbGRzIHRoZSBhcHBsaWNhdGlvbi5cclxuICAgKiBAcmV0dXJucyBSZXN1bHQgb2YgdGhlIHJlYnVpbGQgb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgcmVidWlsZEFwcChwYXlsb2FkOiBhbnkgPSB7fSwgaGVhZGVycz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGhlYWRlcnMgPSBnZXRIZWFkZXJzKGhlYWRlcnMpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KEFQSS5idWlsZEFwcCwgcGF5bG9hZCwgaGVhZGVycykucGlwZShcclxuICAgICAgbWFwKChyZXM6IENvbW1vbkFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5tZXRhZGF0YUhlbHBlci5jbGVhckNhY2hlKCk7XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyAvKipcclxuICAvLyAgKiBQdWJsaXNoZXMgdGhlIGFwcGxpY2F0aW9uLlxyXG4gIC8vICAqIEBwYXJhbSBwYXJhbXMgT3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgcHVibGlzaGluZyB0aGUgYXBwbGljYXRpb25cclxuICAvLyAgKiBAcmV0dXJucyBSZXN1bHQgb2YgdGhlIHB1Ymxpc2ggb3BlcmF0aW9uXHJcbiAgLy8gICovXHJcbiAgLy8gcHVibGlzaEFwcChwYXJhbXM/OiBhbnkpIHtcclxuICAvLyAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgLy8gICBpZiAoaGVhZGVycykge1xyXG4gIC8vICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldChBUEkucHVibGlzaEFwcCwgcGFyYW1zLCBoZWFkZXJzKTtcclxuICAvLyAgIH1cclxuICAvLyAgIHJldHVybiBudWxsO1xyXG4gIC8vIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHNjaGVtYSBkYXRhIGZyb20gdGhlIG5ldyBtZXRhZGF0YSBBUEkuXHJcbiAgICogVXNlcyBtZXRhZGF0YVNlcnZpY2UgbWljcm9zZXJ2aWNlIGVuZHBvaW50XHJcbiAgICogQHJldHVybnMgU3Vic2NyaXB0aW9uIGZvciBnZXR0aW5nIHNjaGVtYSBkYXRhIChyZXN1bHQgaXMgb2JqZWN0LCBub3Qgc3RyaW5naWZpZWQgSlNPTilcclxuICAgKi9cclxuICBnZXRTY2hlbWEoKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0RnJvbVNlcnZpY2UoXHJcbiAgICAgIEFQSVNlcnZpY2VzLm1ldGFkYXRhU2VydmljZSxcclxuICAgICAgQVBJLm1ldGFkYXRhU2NoZW1hLFxyXG4gICAgICB1bmRlZmluZWQsXHJcbiAgICAgIGhlYWRlcnNcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBzdG9yZVNjaGVtYUludG9JREIoKXtcclxuICAvLyAgIC8vIHRoaXMuaWRiU2VydmljZS5jbGVhckluZGV4ZWREQigpXHJcbiAgLy8gICB0aGlzLmdldFNjaGVtYSgpPy5zdWJzY3JpYmUoe1xyXG4gIC8vICAgICBuZXh0OiAodmFsdWU6IFNjaGVtYVJlc3BvbnNlKSA9PiB7XHJcbiAgLy8gICAgICAgICBDb21tb24udGFiSnNvbiA9IEpTT04ucGFyc2UodmFsdWUuUmVzdWx0KTtcclxuICAvLyAgICAgICAgIHRoaXMuaWRiU2VydmljZS5zZXRJdGVtKFN0b3JhZ2VDb25zdGFudHMudGFiRGF0YSwgSlNPTi5wYXJzZSh2YWx1ZS5SZXN1bHQpKVxyXG4gIC8vICAgICB9LFxyXG4gIC8vICAgICBlcnJvcjogKHJlc3BvbnNlOiBFcnJvcikgPT4ge1xyXG4gIC8vICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpXHJcbiAgLy8gICAgIH1cclxuICAvLyB9KVxyXG4gIC8vIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHBlcm1pc3Npb24gZGF0YS5cclxuICAgKiBAcmV0dXJucyBTdWJzY3JpcHRpb24gZm9yIGdldHRpbmcgcGVybWlzc2lvbiBkYXRhXHJcbiAgICovXHJcbiAgZ2V0UGVybWlzc2lvbigpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoQVBJLmdldFBlcm1pc3Npb24sIHVuZGVmaW5lZCwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWdpc3RlcnMgYXBwbGljYXRpb24gb2JqZWN0cy5cclxuICAgKiBAcGFyYW0gcGF5bG9hZCBQYXJhbWV0ZXJzIGZvciByZWdpc3RlcmluZyBhcHBsaWNhdGlvbiBvYmplY3RzXHJcbiAgICogQHJldHVybnMgUmVzdWx0IG9mIHRoZSByZWdpc3RyYXRpb24gb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgcmVnaXN0ZXJBcHBPYmplY3RzKHBheWxvYWQ6IFJlZ2lzdGVyQXBwT2JqZWN0c1BheWxvYWQpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KEFQSS5yZWdpc3RlckFwcE9iamVjdHMsIHBheWxvYWQsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xvbmVzIGEgRGF0YVNvdXJjZVF1ZXJ5IChEU1EpIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuXHJcbiAgICogQHBhcmFtIHBheWxvYWQgcGFyYW1ldGVycyBmb3IgY2xvbmluZyB0aGUgRFNRXHJcbiAgICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgY2xvbmluZyBvcGVyYXRpb25cclxuICAgKi9cclxuICBjbG9uZURzcShwYXlsb2FkOiBDbG9uZURzcVBheWxvYWQpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KEFQSS5jbG9uZURzcSwgcGF5bG9hZCwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgZGF0YSBpbiBKU09OIGZvcm1hdCBiYXNlZCBvbiB0aGUgZ2l2ZW4gSlNPTiB0eXBlIGFuZCByZXF1ZXN0IHRva2Vucy5cclxuICAgKiBAcGFyYW0gcGF5bG9hZCBQYXlsb2FkIGNvbnRhaW5pbmcgdGhlIEpTT04gdHlwZSBhbmQgcmVxdWVzdCB0b2tlbnNcclxuICAgKiBAcmV0dXJucyBUaGUgSlNPTiBkYXRhIHJldHJpZXZlZFxyXG4gICAqL1xyXG4gIGdldERhdGFKc29uQnlUeXBlKHBheWxvYWQ6IEdldERhdGFKc29uQnlUeXBlUGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLkdldERhdGFKc29uQnlUeXBlLCBwYXlsb2FkLCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN5bmNzIHRoZSBmaWVsZHMgb2YgdGhlIGFwcGxpY2F0aW9uIG9iamVjdCB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLlxyXG4gICAqIEBwYXJhbSBwYXlsb2FkIFBhcmFtZXRlcnMgZm9yIHN5bmNpbmcgdGhlIGZpZWxkc1xyXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIHN5bmNocm9uaXphdGlvbiBvcGVyYXRpb25cclxuICAgKi9cclxuICBzeW5jQXBwRmllbGRzKHBheWxvYWQ6IFN5bmNBcHBGaWVsZHNQYXlsb2FkKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChBUEkuU3luY0FwcEZpZWxkcywgcGF5bG9hZCwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSB0YWIgY29tcG9uZW50cyBmb3IgdGhlIGdpdmVuIHRlbmFudFxyXG4gICAqIEBwYXJhbSBjb25uZWN0aW9uSWQgVGhlIElEIG9mIHRoZSBjb25uZWN0aW9uXHJcbiAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSBvZiB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgQVBJXHJcbiAgICovXHJcbiAgc2V0VGFiQ29tcG9uZW50cyhjb25uZWN0aW9uSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoYCR7QVBJLnNldFRhYkNvbXBvbmVudHN9LyR7Y29ubmVjdGlvbklkfWAsIHt9LCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHJlc3VsdCBvZiB0aGUgdmFsaWRhdGlvbiBmb3IgdGhlIGdpdmVuIGNvbm5lY3Rpb25cclxuICAgKiBAcGFyYW0gY29ubmVjdGlvbklkIFRoZSBJRCBvZiB0aGUgY29ubmVjdGlvblxyXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIHBlcmZvcm1WYWxpZGF0aW9uKGNvbm5lY3Rpb25JZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0KGAke0FQSS5wZXJmb3JtVmFsaWRhdGlvbn0vJHtjb25uZWN0aW9uSWR9YCwgdW5kZWZpbmVkLCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRlc3RzIHRoZSBjb25uZWN0aW9uIGZvciB0aGUgZ2l2ZW4gY29ubmVjdGlvbiBJRC5cclxuICAgKiBAcGFyYW0gY29ubmVjdGlvbklkIFRoZSBJRCBvZiB0aGUgY29ubmVjdGlvblxyXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIHRlc3RDb25uZWN0aW9uKGNvbm5lY3Rpb25JZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0KGAke0FQSS50ZXN0Q29ubmVjdGlvbn0vJHtjb25uZWN0aW9uSWR9YCwgdW5kZWZpbmVkLCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZnJlc2hlcyB0aGUgZ2xvYmFsIHNlYXJjaCBkYXRhIHVzaW5nIHRoZSBwcm92aWRlZCBwYXlsb2FkLlxyXG4gICAqIEBwYXJhbSBkYXRhIFBheWxvYWQgY29udGFpbmluZyB0aGUgcXVlcnkgb2JqZWN0IElEIGZvciByZWZyZXNoaW5nIHNlYXJjaCBkYXRhXHJcbiAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSBvZiB0aGUgQVBJIHJlc3BvbnNlXHJcbiAgICovXHJcbiAgcmVmcmVzaEdsb2JhbFNlYXJjaERhdGEoZGF0YTogUmVmcmVzaEdsb2JhbFNlYXJjaERhdGFQYXlsb2FkKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChgJHtBUEkuUmVmcmVzaEdsb2JhbFNlYXJjaERhdGF9YCwgZGF0YSwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZWZyZXNoZXMgdGhlIHJlY29yZCBpbmZvcm1hdGlvbiBkYXRhIHVzaW5nIHRoZSBwcm92aWRlZCBwYXlsb2FkLlxyXG4gICAqIEBwYXJhbSBkYXRhIFBheWxvYWQgY29udGFpbmluZyB0aGUgcXVlcnkgb2JqZWN0IElEIGZvciByZWZyZXNoaW5nIHJlY29yZCBpbmZvcm1hdGlvbiBkYXRhXHJcbiAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSBvZiB0aGUgQVBJIHJlc3BvbnNlXHJcbiAgICovXHJcbiAgcmVmcmVzaFJlY29yZEluZm9EYXRhKGRhdGE6IFJlZnJlc2hSZWNvcmRJbmZvRGF0YVBheWxvYWQpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KGAke0FQSS5SZWZyZXNoUmVjb3JkSW5mb0RhdGF9YCwgZGF0YSwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeHBvcnRzIGEgcmVwb3J0IGJhc2VkIG9uIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLlxyXG4gICAqIFVzZXMgUmVwb3J0IG1pY3Jvc2VydmljZSB3aXRoIGNhbWVsQ2FzZSBwYXlsb2FkXHJcbiAgICogQHBhcmFtIHBheWxvYWQgUGFyYW1ldGVycyBmb3IgZXhwb3J0aW5nIHRoZSByZXBvcnRcclxuICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBleHBvcnQgb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgZXhwb3J0UmVwb3J0KHBheWxvYWQ6IFJlcG9ydFBheWxvYWQpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgLy8gQ29udmVydCBwYXlsb2FkIHRvIGNhbWVsQ2FzZSBmb3IgbmV3IEFQSVxyXG4gICAgY29uc3QgbmV3UGF5bG9hZCA9IHtcclxuICAgICAgZGF0YVJlcG9ydElkOiBwYXlsb2FkLkRhdGFSZXBvcnRJZCxcclxuICAgICAgcmVxVG9rZW5zOiBwYXlsb2FkLlJlcXRva2Vuc1xyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdFRvU2VydmljZShcclxuICAgICAgQVBJU2VydmljZXMucmVwb3J0U2VydmljZSxcclxuICAgICAgQVBJLnJlcG9ydEV4cG9ydCxcclxuICAgICAgbmV3UGF5bG9hZCxcclxuICAgICAgaGVhZGVyc1xyXG4gICAgKS5waXBlKFxyXG4gICAgICBtYXAoKHJlczogQ29tbW9uQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAvLyBDb252ZXJ0IHJlc3VsdCBiYWNrIHRvIG9yaWdpbmFsIGZvcm1hdCBpZiBuZWVkZWRcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4ucmVzLFxyXG4gICAgICAgICAgUmVzdWx0OiByZXM/LlJlc3VsdD8uY29udGVudFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRG93bmxvYWRzIGEgcmVwb3J0IGZpbGUgYmFzZWQgb24gdGhlIGdpdmVuIHBhcmFtZXRlcnMuXHJcbiAgICogVXNlcyBSZXBvcnQgbWljcm9zZXJ2aWNlIHdpdGggY2FtZWxDYXNlIHBheWxvYWRcclxuICAgKiBAcGFyYW0gcGF5bG9hZCBQYXJhbWV0ZXJzIGZvciBkb3dubG9hZGluZyB0aGUgcmVwb3J0IGZpbGVcclxuICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBkb3dubG9hZCBvcGVyYXRpb25cclxuICAgKi9cclxuICBkb3dubG9hZFJlcG9ydChwYXlsb2FkOiBSZXBvcnRQYXlsb2FkKTogT2JzZXJ2YWJsZTxCbG9iPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgLy8gQ29udmVydCBwYXlsb2FkIHRvIGNhbWVsQ2FzZSBmb3IgbmV3IEFQSVxyXG4gICAgY29uc3QgbmV3UGF5bG9hZCA9IHtcclxuICAgICAgZGF0YVJlcG9ydElkOiBwYXlsb2FkLkRhdGFSZXBvcnRJZCxcclxuICAgICAgcmVxVG9rZW5zOiBwYXlsb2FkLlJlcXRva2Vuc1xyXG4gICAgfTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdEJsb2JUb1NlcnZpY2UoXHJcbiAgICAgIEFQSVNlcnZpY2VzLnJlcG9ydFNlcnZpY2UsXHJcbiAgICAgIEFQSS5yZXBvcnREb3dubG9hZCxcclxuICAgICAgbmV3UGF5bG9hZCxcclxuICAgICAgaGVhZGVyc1xyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNlbmRzIGEgcmVwb3J0IGJhc2VkIG9uIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLlxyXG4gICAqIEBwYXJhbSBwYXlsb2FkIFBhcmFtZXRlcnMgZm9yIHNlbmRpbmcgdGhlIHJlcG9ydFxyXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIHNlbmQgb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgc2VuZFJlcG9ydChwYXlsb2FkOiBSZXBvcnRQYXlsb2FkKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChBUEkuc2VuZFJlcG9ydCwgcGF5bG9hZCwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGRldGFpbGVkIGFuYWx5dGljcyBvZiBhIHNjcmVlbidzIHBlcmZvcm1hbmNlLlxyXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0YSB0byBiZSBzZW50IHRvIHRoZSBBUElcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBnZXREZXRhaWxPZlBlcmZvcm1hbmNlQW5hbHl0aWNzKGRhdGE6IFBlcmZvcm1hbmNlQW5hbHl0aWNzUGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLkdldERldGFpbE9mUGVyZm9ybWFuY2VBbmFseXRpY3MsIGRhdGEsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHN1bW1hcnkgb2YgcGVyZm9ybWFuY2UgYW5hbHl0aWNzXHJcbiAgICogQHBhcmFtIGRhdGEgLSBEYXRhIHRvIGJlIHNlbnQgdG8gdGhlIEFQSVxyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGdldFN1bW1hcnlPZlBlcmZvcm1hbmNlQW5hbHl0aWNzKGRhdGE6IFBlcmZvcm1hbmNlQW5hbHl0aWNzUGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLkdldFN1bW1hcnlPZlBlcmZvcm1hbmNlQW5hbHl0aWNzLCBkYXRhLCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluc2VydCBTY3JlZW4gUGVyZm9ybWFuY2UgU3RhdGlzdGljc1xyXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0YSB0byBpbnNlcnRcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBpbnNlcnRTY3JlZW5QZXJmb3JtYW5jZVN0YXRpc3RpY3MoZGF0YTogU2NyZWVuUGVyZm9ybWFuY2VQYXlsb2FkKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChBUEkuSW5zZXJ0U2NyZWVuUGVyZm9ybWFuY2VBbmFseXRpY3MsIGRhdGEsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGFsbCBkb2N1bWVudHMuXHJcbiAgICogQHBhcmFtIGhlYWRlcnMgT3B0aW9uYWwgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3QuXHJcbiAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSBvZiB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgQVBJLlxyXG4gICAqL1xyXG4gIGdldEFsbERvY3VtbmV0cyhoZWFkZXJzPzogYW55KTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVyID0gZ2V0SGVhZGVycyhoZWFkZXJzKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0KEFQSS5HZXRBbGxEb2N1bW5ldHMsIHVuZGVmaW5lZCwgaGVhZGVyKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIGRvY3VtZW50IGJ5IGl0cyBJRC5cclxuICAgKiBAcGFyYW0gaWQgVGhlIElEIG9mIHRoZSBkb2N1bWVudCB0byByZXRyaWV2ZS5cclxuICAgKiBAcGFyYW0gaGVhZGVycyBPcHRpb25hbCBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdC5cclxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSByZXNwb25zZSBmcm9tIHRoZSBBUEkuXHJcbiAgICovXHJcbiAgZ2V0RG9jdW1lbnRCeUlkKGlkOiBzdHJpbmcsIGhlYWRlcnM/OiBhbnkpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXIgPSBnZXRIZWFkZXJzKGhlYWRlcnMpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoYCR7QVBJLkdldERvY3VtZW50QnlJZH0vJHtpZH1gLCB1bmRlZmluZWQsIGhlYWRlcik7XHJcbiAgfVxyXG59Il19
|
|
238
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvaGVscGVycy9jb21tb24vYXBwLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUdyRCxNQUFNLE9BQU8sU0FBUztJQUR0QjtRQUVtQixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0tBb1AxRDtJQWpQQzs7O09BR0c7SUFDSCxVQUFVLENBQUMsVUFBZSxFQUFFLEVBQUUsT0FBYTtRQUN6QyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUM5RCxHQUFHLENBQUMsQ0FBQyxHQUFzQixFQUFFLEVBQUU7WUFDN0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNqQyxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFD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LENBQUM7SUFDckUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsZUFBZSxDQUFDLEVBQVUsRUFBRSxPQUFhO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLGVBQWUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEYsQ0FBQzswRUFyUFUsU0FBUzt1RUFBVCxTQUFTLFdBQVQsU0FBUyxtQkFESSxNQUFNOztpRkFDbkIsU0FBUztjQURyQixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9jb3JlL2h0dHAtY2xpZW50L2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgZ2V0SGVhZGVycyB9IGZyb20gJy4uLy4uL3V0aWxzL3JlcS1yZXMudXRpbCc7XHJcbmltcG9ydCB7IEFQSSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9hcGktY29uc3RhbnRzJztcclxuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENsb25lRHNxUGF5bG9hZCwgQ29tbW9uQXBpUmVzcG9uc2UsIEdldERhdGFKc29uQnlUeXBlUGF5bG9hZCwgUGVyZm9ybWFuY2VBbmFseXRpY3NQYXlsb2FkLCBSZWZyZXNoR2xvYmFsU2VhcmNoRGF0YVBheWxvYWQsIFJlZnJlc2hSZWNvcmRJbmZvRGF0YVBheWxvYWQsIFJlZ2lzdGVyQXBwT2JqZWN0c1BheWxvYWQsIFJlcG9ydFBheWxvYWQsIFNjcmVlblBlcmZvcm1hbmNlUGF5bG9hZCwgU3luY0FwcEZpZWxkc1BheWxvYWQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBNZXRhZGF0YUhlbHBlciB9IGZyb20gJy4vbWV0YS1kYXRhLmhlbHBlcnMnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIEFwcEhlbHBlciB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlTZXJ2aWNlID0gaW5qZWN0KEFwaVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbWV0YWRhdGFIZWxwZXIgPSBpbmplY3QoTWV0YWRhdGFIZWxwZXIpO1xyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogUmVidWlsZHMgdGhlIGFwcGxpY2F0aW9uLlxyXG4gICAqIEByZXR1cm5zIFJlc3VsdCBvZiB0aGUgcmVidWlsZCBvcGVyYXRpb25cclxuICAgKi9cclxuICByZWJ1aWxkQXBwKHBheWxvYWQ6IGFueSA9IHt9LCBoZWFkZXJzPzogYW55KTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgaGVhZGVycyA9IGdldEhlYWRlcnMoaGVhZGVycyk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLmJ1aWxkQXBwLCBwYXlsb2FkLCBoZWFkZXJzKS5waXBlKFxyXG4gICAgICBtYXAoKHJlczogQ29tbW9uQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgICB0aGlzLm1ldGFkYXRhSGVscGVyLmNsZWFyQ2FjaGUoKTtcclxuICAgICAgICByZXR1cm4gcmVzO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIC8qKlxyXG4gIC8vICAqIFB1Ymxpc2hlcyB0aGUgYXBwbGljYXRpb24uXHJcbiAgLy8gICogQHBhcmFtIHBhcmFtcyBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciBwdWJsaXNoaW5nIHRoZSBhcHBsaWNhdGlvblxyXG4gIC8vICAqIEByZXR1cm5zIFJlc3VsdCBvZiB0aGUgcHVibGlzaCBvcGVyYXRpb25cclxuICAvLyAgKi9cclxuICAvLyBwdWJsaXNoQXBwKHBhcmFtcz86IGFueSkge1xyXG4gIC8vICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAvLyAgIGlmIChoZWFkZXJzKSB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0KEFQSS5wdWJsaXNoQXBwLCBwYXJhbXMsIGhlYWRlcnMpO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgcmV0dXJuIG51bGw7XHJcbiAgLy8gfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgc2NyZWVuIGRhdGEuXHJcbiAgICogQHBhcmFtIHBhcmFtcyBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciByZXRyaWV2aW5nIHNjcmVlbiBkYXRhXHJcbiAgICogQHJldHVybnMgU2NyZWVuIGRhdGFcclxuICAgKi9cclxuICBnZXRTY3JlZW4ocGFyYW1zPzogYW55KSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoQVBJLmdldFNjcmVlbiwgcGFyYW1zLCBoZWFkZXJzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHNjaGVtYSBkYXRhLlxyXG4gICAqIEByZXR1cm5zIFN1YnNjcmlwdGlvbiBmb3IgZ2V0dGluZyBzY2hlbWEgZGF0YVxyXG4gICAqL1xyXG4gIGdldFNjaGVtYSgpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoQVBJLmdldFNjaGVtYSwgdW5kZWZpbmVkLCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8vIHN0b3JlU2NoZW1hSW50b0lEQigpe1xyXG4gIC8vICAgLy8gdGhpcy5pZGJTZXJ2aWNlLmNsZWFySW5kZXhlZERCKClcclxuICAvLyAgIHRoaXMuZ2V0U2NoZW1hKCk/LnN1YnNjcmliZSh7XHJcbiAgLy8gICAgIG5leHQ6ICh2YWx1ZTogU2NoZW1hUmVzcG9uc2UpID0+IHtcclxuICAvLyAgICAgICAgIENvbW1vbi50YWJKc29uID0gSlNPTi5wYXJzZSh2YWx1ZS5SZXN1bHQpO1xyXG4gIC8vICAgICAgICAgdGhpcy5pZGJTZXJ2aWNlLnNldEl0ZW0oU3RvcmFnZUNvbnN0YW50cy50YWJEYXRhLCBKU09OLnBhcnNlKHZhbHVlLlJlc3VsdCkpXHJcbiAgLy8gICAgIH0sXHJcbiAgLy8gICAgIGVycm9yOiAocmVzcG9uc2U6IEVycm9yKSA9PiB7XHJcbiAgLy8gICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSlcclxuICAvLyAgICAgfVxyXG4gIC8vIH0pXHJcbiAgLy8gfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgcGVybWlzc2lvbiBkYXRhLlxyXG4gICAqIEByZXR1cm5zIFN1YnNjcmlwdGlvbiBmb3IgZ2V0dGluZyBwZXJtaXNzaW9uIGRhdGFcclxuICAgKi9cclxuICBnZXRQZXJtaXNzaW9uKCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldChBUEkuZ2V0UGVybWlzc2lvbiwgdW5kZWZpbmVkLCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZ2lzdGVycyBhcHBsaWNhdGlvbiBvYmplY3RzLlxyXG4gICAqIEBwYXJhbSBwYXlsb2FkIFBhcmFtZXRlcnMgZm9yIHJlZ2lzdGVyaW5nIGFwcGxpY2F0aW9uIG9iamVjdHNcclxuICAgKiBAcmV0dXJucyBSZXN1bHQgb2YgdGhlIHJlZ2lzdHJhdGlvbiBvcGVyYXRpb25cclxuICAgKi9cclxuICByZWdpc3RlckFwcE9iamVjdHMocGF5bG9hZDogUmVnaXN0ZXJBcHBPYmplY3RzUGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLnJlZ2lzdGVyQXBwT2JqZWN0cywgcGF5bG9hZCwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbG9uZXMgYSBEYXRhU291cmNlUXVlcnkgKERTUSkgd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy5cclxuICAgKiBAcGFyYW0gcGF5bG9hZCBwYXJhbWV0ZXJzIGZvciBjbG9uaW5nIHRoZSBEU1FcclxuICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBjbG9uaW5nIG9wZXJhdGlvblxyXG4gICAqL1xyXG4gIGNsb25lRHNxKHBheWxvYWQ6IENsb25lRHNxUGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLmNsb25lRHNxLCBwYXlsb2FkLCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBkYXRhIGluIEpTT04gZm9ybWF0IGJhc2VkIG9uIHRoZSBnaXZlbiBKU09OIHR5cGUgYW5kIHJlcXVlc3QgdG9rZW5zLlxyXG4gICAqIEBwYXJhbSBwYXlsb2FkIFBheWxvYWQgY29udGFpbmluZyB0aGUgSlNPTiB0eXBlIGFuZCByZXF1ZXN0IHRva2Vuc1xyXG4gICAqIEByZXR1cm5zIFRoZSBKU09OIGRhdGEgcmV0cmlldmVkXHJcbiAgICovXHJcbiAgZ2V0RGF0YUpzb25CeVR5cGUocGF5bG9hZDogR2V0RGF0YUpzb25CeVR5cGVQYXlsb2FkKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChBUEkuR2V0RGF0YUpzb25CeVR5cGUsIHBheWxvYWQsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU3luY3MgdGhlIGZpZWxkcyBvZiB0aGUgYXBwbGljYXRpb24gb2JqZWN0IHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuXHJcbiAgICogQHBhcmFtIHBheWxvYWQgUGFyYW1ldGVycyBmb3Igc3luY2luZyB0aGUgZmllbGRzXHJcbiAgICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgc3luY2hyb25pemF0aW9uIG9wZXJhdGlvblxyXG4gICAqL1xyXG4gIHN5bmNBcHBGaWVsZHMocGF5bG9hZDogU3luY0FwcEZpZWxkc1BheWxvYWQpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KEFQSS5TeW5jQXBwRmllbGRzLCBwYXlsb2FkLCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHRhYiBjb21wb25lbnRzIGZvciB0aGUgZ2l2ZW4gdGVuYW50XHJcbiAgICogQHBhcmFtIGNvbm5lY3Rpb25JZCBUaGUgSUQgb2YgdGhlIGNvbm5lY3Rpb25cclxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSByZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBzZXRUYWJDb21wb25lbnRzKGNvbm5lY3Rpb25JZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChgJHtBUEkuc2V0VGFiQ29tcG9uZW50c30vJHtjb25uZWN0aW9uSWR9YCwge30sIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgcmVzdWx0IG9mIHRoZSB2YWxpZGF0aW9uIGZvciB0aGUgZ2l2ZW4gY29ubmVjdGlvblxyXG4gICAqIEBwYXJhbSBjb25uZWN0aW9uSWQgVGhlIElEIG9mIHRoZSBjb25uZWN0aW9uXHJcbiAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSBvZiB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgQVBJXHJcbiAgICovXHJcbiAgcGVyZm9ybVZhbGlkYXRpb24oY29ubmVjdGlvbklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoYCR7QVBJLnBlcmZvcm1WYWxpZGF0aW9ufS8ke2Nvbm5lY3Rpb25JZH1gLCB1bmRlZmluZWQsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGVzdHMgdGhlIGNvbm5lY3Rpb24gZm9yIHRoZSBnaXZlbiBjb25uZWN0aW9uIElELlxyXG4gICAqIEBwYXJhbSBjb25uZWN0aW9uSWQgVGhlIElEIG9mIHRoZSBjb25uZWN0aW9uXHJcbiAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSBvZiB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgQVBJXHJcbiAgICovXHJcbiAgdGVzdENvbm5lY3Rpb24oY29ubmVjdGlvbklkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoYCR7QVBJLnRlc3RDb25uZWN0aW9ufS8ke2Nvbm5lY3Rpb25JZH1gLCB1bmRlZmluZWQsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVmcmVzaGVzIHRoZSBnbG9iYWwgc2VhcmNoIGRhdGEgdXNpbmcgdGhlIHByb3ZpZGVkIHBheWxvYWQuXHJcbiAgICogQHBhcmFtIGRhdGEgUGF5bG9hZCBjb250YWluaW5nIHRoZSBxdWVyeSBvYmplY3QgSUQgZm9yIHJlZnJlc2hpbmcgc2VhcmNoIGRhdGFcclxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSBBUEkgcmVzcG9uc2VcclxuICAgKi9cclxuICByZWZyZXNoR2xvYmFsU2VhcmNoRGF0YShkYXRhOiBSZWZyZXNoR2xvYmFsU2VhcmNoRGF0YVBheWxvYWQpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KGAke0FQSS5SZWZyZXNoR2xvYmFsU2VhcmNoRGF0YX1gLCBkYXRhLCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZnJlc2hlcyB0aGUgcmVjb3JkIGluZm9ybWF0aW9uIGRhdGEgdXNpbmcgdGhlIHByb3ZpZGVkIHBheWxvYWQuXHJcbiAgICogQHBhcmFtIGRhdGEgUGF5bG9hZCBjb250YWluaW5nIHRoZSBxdWVyeSBvYmplY3QgSUQgZm9yIHJlZnJlc2hpbmcgcmVjb3JkIGluZm9ybWF0aW9uIGRhdGFcclxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSBBUEkgcmVzcG9uc2VcclxuICAgKi9cclxuICByZWZyZXNoUmVjb3JkSW5mb0RhdGEoZGF0YTogUmVmcmVzaFJlY29yZEluZm9EYXRhUGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoYCR7QVBJLlJlZnJlc2hSZWNvcmRJbmZvRGF0YX1gLCBkYXRhLCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4cG9ydHMgYSByZXBvcnQgYmFzZWQgb24gdGhlIGdpdmVuIHBhcmFtZXRlcnMuXHJcbiAgICogQHBhcmFtIHBheWxvYWQgUGFyYW1ldGVycyBmb3IgZXhwb3J0aW5nIHRoZSByZXBvcnRcclxuICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBleHBvcnQgb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgZXhwb3J0UmVwb3J0KHBheWxvYWQ6IFJlcG9ydFBheWxvYWQpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KEFQSS5leHBvcnRSZXBvcnQsIHBheWxvYWQsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRG93bmxvYWRzIGEgcmVwb3J0IGZpbGUgYmFzZWQgb24gdGhlIGdpdmVuIHBhcmFtZXRlcnMuXHJcbiAgICogQHBhcmFtIHBheWxvYWQgUGFyYW1ldGVycyBmb3IgZG93bmxvYWRpbmcgdGhlIHJlcG9ydCBmaWxlXHJcbiAgICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiB0aGUgZG93bmxvYWQgb3BlcmF0aW9uXHJcbiAgICovXHJcbiAgZG93bmxvYWRSZXBvcnQocGF5bG9hZDogUmVwb3J0UGF5bG9hZCk6IE9ic2VydmFibGU8QmxvYj4ge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdEJsb2IoQVBJLmRvd25sb2FkUmVwb3J0RmlsZSwgcGF5bG9hZCwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZW5kcyBhIHJlcG9ydCBiYXNlZCBvbiB0aGUgZ2l2ZW4gcGFyYW1ldGVycy5cclxuICAgKiBAcGFyYW0gcGF5bG9hZCBQYXJhbWV0ZXJzIGZvciBzZW5kaW5nIHRoZSByZXBvcnRcclxuICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBzZW5kIG9wZXJhdGlvblxyXG4gICAqL1xyXG4gIHNlbmRSZXBvcnQocGF5bG9hZDogUmVwb3J0UGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLnNlbmRSZXBvcnQsIHBheWxvYWQsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBkZXRhaWxlZCBhbmFseXRpY3Mgb2YgYSBzY3JlZW4ncyBwZXJmb3JtYW5jZS5cclxuICAgKiBAcGFyYW0gZGF0YSAtIERhdGEgdG8gYmUgc2VudCB0byB0aGUgQVBJXHJcbiAgICogQHJldHVybnMgUmVzcG9uc2UgZnJvbSB0aGUgQVBJXHJcbiAgICovXHJcbiAgZ2V0RGV0YWlsT2ZQZXJmb3JtYW5jZUFuYWx5dGljcyhkYXRhOiBQZXJmb3JtYW5jZUFuYWx5dGljc1BheWxvYWQpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KEFQSS5HZXREZXRhaWxPZlBlcmZvcm1hbmNlQW5hbHl0aWNzLCBkYXRhLCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBzdW1tYXJ5IG9mIHBlcmZvcm1hbmNlIGFuYWx5dGljc1xyXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0YSB0byBiZSBzZW50IHRvIHRoZSBBUElcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBnZXRTdW1tYXJ5T2ZQZXJmb3JtYW5jZUFuYWx5dGljcyhkYXRhOiBQZXJmb3JtYW5jZUFuYWx5dGljc1BheWxvYWQpOiBPYnNlcnZhYmxlPENvbW1vbkFwaVJlc3BvbnNlPiB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KEFQSS5HZXRTdW1tYXJ5T2ZQZXJmb3JtYW5jZUFuYWx5dGljcywgZGF0YSwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbnNlcnQgU2NyZWVuIFBlcmZvcm1hbmNlIFN0YXRpc3RpY3NcclxuICAgKiBAcGFyYW0gZGF0YSAtIERhdGEgdG8gaW5zZXJ0XHJcbiAgICogQHJldHVybnMgUmVzcG9uc2UgZnJvbSB0aGUgQVBJXHJcbiAgICovXHJcbiAgaW5zZXJ0U2NyZWVuUGVyZm9ybWFuY2VTdGF0aXN0aWNzKGRhdGE6IFNjcmVlblBlcmZvcm1hbmNlUGF5bG9hZCk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoQVBJLkluc2VydFNjcmVlblBlcmZvcm1hbmNlQW5hbHl0aWNzLCBkYXRhLCBoZWFkZXJzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhbGwgZG9jdW1lbnRzLlxyXG4gICAqIEBwYXJhbSBoZWFkZXJzIE9wdGlvbmFsIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0LlxyXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSS5cclxuICAgKi9cclxuICBnZXRBbGxEb2N1bW5ldHMoaGVhZGVycz86IGFueSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGhlYWRlciA9IGdldEhlYWRlcnMoaGVhZGVycyk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldChBUEkuR2V0QWxsRG9jdW1uZXRzLCB1bmRlZmluZWQsIGhlYWRlcik7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBkb2N1bWVudCBieSBpdHMgSUQuXHJcbiAgICogQHBhcmFtIGlkIFRoZSBJRCBvZiB0aGUgZG9jdW1lbnQgdG8gcmV0cmlldmUuXHJcbiAgICogQHBhcmFtIGhlYWRlcnMgT3B0aW9uYWwgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3QuXHJcbiAgICogQHJldHVybnMgQW4gb2JzZXJ2YWJsZSBvZiB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgQVBJLlxyXG4gICAqL1xyXG4gIGdldERvY3VtZW50QnlJZChpZDogc3RyaW5nLCBoZWFkZXJzPzogYW55KTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgaGVhZGVyID0gZ2V0SGVhZGVycyhoZWFkZXJzKTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0KGAke0FQSS5HZXREb2N1bWVudEJ5SWR9LyR7aWR9YCwgdW5kZWZpbmVkLCBoZWFkZXIpO1xyXG4gIH1cclxufSJdfQ==
|