@techextensor/tab-core-utility 2.2.180 → 2.2.184

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/esm2022/index.mjs +5 -1
  2. package/esm2022/lib/tab-core-utility/app/constants/api-constants.mjs +24 -13
  3. package/esm2022/lib/tab-core-utility/app/constants/common.mjs +14 -50
  4. package/esm2022/lib/tab-core-utility/app/constants/storage-constants.mjs +2 -2
  5. package/esm2022/lib/tab-core-utility/app/crud/tab-crud.service.mjs +38 -49
  6. package/esm2022/lib/tab-core-utility/app/crud/tab-delete.service.mjs +81 -30
  7. package/esm2022/lib/tab-core-utility/app/crud/tab-formio.service.mjs +141 -12
  8. package/esm2022/lib/tab-core-utility/app/crud/tab-get.service.mjs +136 -35
  9. package/esm2022/lib/tab-core-utility/app/crud/tab-insert.service.mjs +89 -38
  10. package/esm2022/lib/tab-core-utility/app/crud/tab-update.service.mjs +152 -131
  11. package/esm2022/lib/tab-core-utility/app/crud/tab-workflow.service.mjs +7 -9
  12. package/esm2022/lib/tab-core-utility/app/enums/query.enum.mjs +7 -7
  13. package/esm2022/lib/tab-core-utility/app/helpers/common/app.helpers.mjs +6 -17
  14. package/esm2022/lib/tab-core-utility/app/helpers/common/dsq.helpers.mjs +9 -11
  15. package/esm2022/lib/tab-core-utility/app/helpers/common/meta-data.helpers.mjs +13 -13
  16. package/esm2022/lib/tab-core-utility/app/helpers/common/req-res.helpers.mjs +7 -45
  17. package/esm2022/lib/tab-core-utility/app/helpers/common/where-clause.helpers.mjs +79 -76
  18. package/esm2022/lib/tab-core-utility/app/helpers/response.adapter.mjs +38 -0
  19. package/esm2022/lib/tab-core-utility/app/helpers/screen/grid.helpers.mjs +8 -4
  20. package/esm2022/lib/tab-core-utility/app/helpers/screen/screen.helpers.mjs +8 -33
  21. package/esm2022/lib/tab-core-utility/app/interfaces/common.interface.mjs +1 -1
  22. package/esm2022/lib/tab-core-utility/app/interfaces/signalr.interface.mjs +42 -0
  23. package/esm2022/lib/tab-core-utility/app/models/api-query.class.mjs +39 -1
  24. package/esm2022/lib/tab-core-utility/app/models/app-field.model.mjs +36 -7
  25. package/esm2022/lib/tab-core-utility/app/models/app-object.model.mjs +84 -47
  26. package/esm2022/lib/tab-core-utility/app/models/app-screen.model.mjs +24 -13
  27. package/esm2022/lib/tab-core-utility/app/models/data-source-query.model.mjs +57 -23
  28. package/esm2022/lib/tab-core-utility/app/models/filter.model.mjs +21 -10
  29. package/esm2022/lib/tab-core-utility/app/models/parameter.model.mjs +12 -6
  30. package/esm2022/lib/tab-core-utility/app/models/sort.model.mjs +11 -4
  31. package/esm2022/lib/tab-core-utility/app/utils/json.util.mjs +17 -16
  32. package/esm2022/lib/tab-core-utility/app/utils/req-res.util.mjs +1 -55
  33. package/esm2022/lib/tab-core-utility/app/utils/tab-app.util.mjs +1 -164
  34. package/esm2022/lib/tab-core-utility/core/http-client/api.service.mjs +64 -15
  35. package/esm2022/lib/tab-core-utility/core/service/signalr/operation-tracker.service.mjs +82 -0
  36. package/esm2022/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.mjs +252 -0
  37. package/esm2022/lib/tab-core-utility/core/service/signalr/signalr.service.mjs +207 -0
  38. package/index.d.ts +4 -0
  39. package/lib/tab-core-utility/app/constants/api-constants.d.ts +13 -10
  40. package/lib/tab-core-utility/app/constants/common.d.ts +9 -0
  41. package/lib/tab-core-utility/app/constants/storage-constants.d.ts +1 -1
  42. package/lib/tab-core-utility/app/crud/tab-crud.service.d.ts +8 -1
  43. package/lib/tab-core-utility/app/crud/tab-delete.service.d.ts +20 -10
  44. package/lib/tab-core-utility/app/crud/tab-formio.service.d.ts +33 -6
  45. package/lib/tab-core-utility/app/crud/tab-get.service.d.ts +45 -3
  46. package/lib/tab-core-utility/app/crud/tab-insert.service.d.ts +16 -21
  47. package/lib/tab-core-utility/app/crud/tab-update.service.d.ts +34 -19
  48. package/lib/tab-core-utility/app/crud/tab-workflow.service.d.ts +3 -1
  49. package/lib/tab-core-utility/app/enums/query.enum.d.ts +3 -6
  50. package/lib/tab-core-utility/app/helpers/common/app.helpers.d.ts +3 -8
  51. package/lib/tab-core-utility/app/helpers/common/dsq.helpers.d.ts +3 -0
  52. package/lib/tab-core-utility/app/helpers/common/meta-data.helpers.d.ts +3 -3
  53. package/lib/tab-core-utility/app/helpers/common/req-res.helpers.d.ts +7 -51
  54. package/lib/tab-core-utility/app/helpers/common/where-clause.helpers.d.ts +1 -0
  55. package/lib/tab-core-utility/app/helpers/response.adapter.d.ts +22 -0
  56. package/lib/tab-core-utility/app/helpers/screen/grid.helpers.d.ts +2 -1
  57. package/lib/tab-core-utility/app/helpers/screen/screen.helpers.d.ts +1 -0
  58. package/lib/tab-core-utility/app/interfaces/common.interface.d.ts +50 -2
  59. package/lib/tab-core-utility/app/interfaces/signalr.interface.d.ts +80 -0
  60. package/lib/tab-core-utility/app/models/api-query.class.d.ts +54 -9
  61. package/lib/tab-core-utility/app/models/app-field.model.d.ts +4 -2
  62. package/lib/tab-core-utility/app/models/app-object.model.d.ts +5 -3
  63. package/lib/tab-core-utility/app/models/app-screen.model.d.ts +2 -2
  64. package/lib/tab-core-utility/app/models/data-source-query.model.d.ts +7 -2
  65. package/lib/tab-core-utility/app/models/filter.model.d.ts +2 -2
  66. package/lib/tab-core-utility/app/models/parameter.model.d.ts +2 -2
  67. package/lib/tab-core-utility/app/models/sort.model.d.ts +1 -1
  68. package/lib/tab-core-utility/app/utils/json.util.d.ts +3 -2
  69. package/lib/tab-core-utility/app/utils/req-res.util.d.ts +1 -9
  70. package/lib/tab-core-utility/app/utils/tab-app.util.d.ts +0 -61
  71. package/lib/tab-core-utility/core/http-client/api.service.d.ts +37 -9
  72. package/lib/tab-core-utility/core/service/signalr/operation-tracker.service.d.ts +40 -0
  73. package/lib/tab-core-utility/core/service/signalr/signalr-infrastructure.service.d.ts +68 -0
  74. package/lib/tab-core-utility/core/service/signalr/signalr.service.d.ts +122 -0
  75. package/package.json +3 -2
@@ -1,165 +1,186 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
2
  import { Injectable, inject } from "@angular/core";
3
- import { DSQHelper } from "../helpers/common/dsq.helpers";
3
+ import { of, throwError } from 'rxjs';
4
+ import { switchMap, map, catchError } from 'rxjs/operators';
4
5
  import { ScreenHelper } from "../helpers/screen/screen.helpers";
5
6
  import { WhereClauseHelper } from "../helpers/common/where-clause.helpers";
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";
7
+ import { MetadataHelper } from "../helpers/common/meta-data.helpers";
8
+ import { syncAppObjectFields } from "../utils/tab-app.util";
11
9
  import { createDynamicData, removeBlankValue } from "../utils/json.util";
12
- import { getEditRecordId, getPrimaryKeyFields, removeMultiplePrimaryKey, removePrimaryKey } from "../utils/req-res.util";
10
+ import { getEditRecordId, getPrimaryKeyFields, removeMultiplePrimaryKey, removePrimaryKey, getHeaders } from "../utils/req-res.util";
11
+ import { ApiService } from '../../core/http-client/api.service';
12
+ import { SignalRService } from '../../core/service/signalr/signalr.service';
13
+ import { API, APIServices } from '../constants/api-constants';
13
14
  import * as i0 from "@angular/core";
14
15
  export class TabUpdateService {
15
16
  constructor() {
16
- this.dsqHelper = inject(DSQHelper);
17
17
  this.screenHelper = inject(ScreenHelper);
18
18
  this.whereClauseHelper = inject(WhereClauseHelper);
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;
19
+ this.apiService = inject(ApiService);
20
+ this.signalRService = inject(SignalRService);
21
+ this.metadataHelper = inject(MetadataHelper);
36
22
  }
37
23
  /**
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.
24
+ * Update using /records/update endpoint with SYNC/ASYNC support
25
+ * @param objectId The object ID
26
+ * @param data The data to update
27
+ * @param headers Optional headers
28
+ * @returns Observable with update result
44
29
  */
45
- updateByObjectId(objectId, data) {
30
+ updateByObjectId(objectId, data, headers) {
46
31
  const fields = [];
47
- let appObject = AppObject;
48
- appObject = getAppObject(objectId);
49
- appObject.Fields.forEach((element) => {
32
+ const appObjectModel = this.metadataHelper.getAppObjectByIdOrName(objectId);
33
+ const appObject = appObjectModel?.toJSON();
34
+ if (!appObjectModel?.ID) {
35
+ return throwError(() => new Error(`AppObject not found: ${objectId}`));
36
+ }
37
+ appObjectModel.fields().forEach((element) => {
50
38
  fields.push({ Field: element });
51
39
  });
52
- const crudTableName = appObject.SystemDBTableName;
40
+ const crudTableName = appObjectModel.SystemDBTableName;
53
41
  syncAppObjectFields(data.data, appObject);
54
42
  const PrimaryKeyFields = getPrimaryKeyFields(appObject);
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
- removeBlankValue(dataObj);
71
- const requestPayload = this.requestResponseHelper.updateRequestPayload(crudTableName, whereClause, dataObj);
72
- return this.update(requestPayload);
43
+ if (!appObject || !data.data) {
44
+ return null;
45
+ }
46
+ const recordId = getEditRecordId(data.data, PrimaryKeyFields[0]?.FieldName);
47
+ data['recordId'] = recordId;
48
+ let whereClause;
49
+ if (PrimaryKeyFields && PrimaryKeyFields.length === 1) {
50
+ removePrimaryKey(data.data, PrimaryKeyFields[0]?.FieldName);
51
+ whereClause = this.whereClauseHelper.bindWhereClauseForUpdateGrid(fields, data.recordId, PrimaryKeyFields[0].FieldName, crudTableName);
52
+ }
53
+ else if (PrimaryKeyFields && PrimaryKeyFields.length > 1) {
54
+ whereClause = this.whereClauseHelper.bindWhereClauseForMultiplePrimaryKeys(data.data, PrimaryKeyFields, crudTableName);
55
+ removeMultiplePrimaryKey(data.data, PrimaryKeyFields);
56
+ }
57
+ // Remove blank values
58
+ const filteredData = { ...data.data };
59
+ removeBlankValue(filteredData);
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(response);
76
+ }
77
+ // CASE 2: ASYNC - Has correlationId
78
+ else if (response?.CorrelationId) {
79
+ return this.handleAsyncUpdate(response);
73
80
  }
81
+ // CASE 3: Unknown response format
82
+ return of(response);
83
+ }), catchError((error) => {
84
+ console.error('[TabUpdateService] Update error:', error);
85
+ return throwError(() => error);
86
+ }));
87
+ }
88
+ /**
89
+ * Handle async update - wait for SignalR notification
90
+ * @param response Initial response with correlationId
91
+ * @returns Observable with update result
92
+ */
93
+ handleAsyncUpdate(response) {
94
+ const correlationId = response?.CorrelationId;
95
+ if (!correlationId) {
96
+ console.error('[TabUpdateService] Missing correlationId in async response');
97
+ return of(response);
74
98
  }
75
- return null;
99
+ // Wait for SignalR notification with matching correlationId
100
+ return this.signalRService.waitForOperation(correlationId).pipe(map((notification) => {
101
+ // Check if operation succeeded
102
+ if (!notification.isSuccess) {
103
+ throw new Error(notification.errorMessage || 'Update operation failed');
104
+ }
105
+ // Return response with success
106
+ return {
107
+ ...response,
108
+ Result: notification.recordId,
109
+ RecordAffectted: notification.affectedRecords || 1
110
+ };
111
+ }), catchError((error) => {
112
+ if (error.message === 'Operation timed out') {
113
+ return throwError(() => new Error('Update operation timed out. The operation may still complete in the background. Please refresh to see the result.'));
114
+ }
115
+ return throwError(() => error);
116
+ }));
76
117
  }
118
+ /**
119
+ * Update using screen ID
120
+ * @param screenId The screen ID
121
+ * @param data The data to update
122
+ * @param objectIdToSave Optional object ID to save
123
+ * @param headers Optional headers
124
+ * @returns Observable with update result
125
+ */
77
126
  updateUsingScreenId(screenId, data, objectIdToSave, headers) {
78
- let fields;
79
- let appObject = AppObject;
80
- let crudTableName;
127
+ let objectId;
81
128
  if (screenId) {
82
129
  const screen = this.screenHelper.getScreen(screenId);
83
- const screenDataSource = getDataFromDataSourceQueryID(screen.DataSourceQuery);
84
- appObject = getAppObject(screenDataSource.ObjectID_Tosave);
85
- crudTableName = appObject.SystemDBTableName;
86
- fields = screenDataSource?.Fields?.map((field) => {
87
- const appField = appObject?.Fields?.find((f) => f?.ID?.toLowerCase() === field?.AppFieldID?.toLowerCase()) ?? {};
88
- return {
89
- ...field,
90
- Field: appField
91
- };
92
- });
93
- syncAppObjectFields(data.data, appObject);
130
+ const screenDataSource = this.metadataHelper.getDataSourceQueryByIdOrName(screen.DataSourceQuery);
131
+ objectId = screenDataSource?.ObjectID_Tosave || '';
94
132
  }
95
133
  if (objectIdToSave) {
96
- fields = [];
97
- appObject = getAppObject(objectIdToSave);
98
- appObject.Fields.forEach((element) => {
99
- fields.push({ Field: element });
100
- });
101
- crudTableName = appObject.SystemDBTableName;
102
- syncAppObjectFields(data.data, appObject);
103
- }
104
- const PrimaryKeyFields = getPrimaryKeyFields(appObject);
105
- let whereClause = APIFilterCriteria;
106
- if (appObject) {
107
- if (data.data) {
108
- const recordId = getEditRecordId(data.data, PrimaryKeyFields[0]?.FieldName);
109
- data['recordId'] = recordId;
110
- if (PrimaryKeyFields && PrimaryKeyFields.length === 1) {
111
- removePrimaryKey(data.data, PrimaryKeyFields[0]?.FieldName);
112
- whereClause = this.whereClauseHelper.bindWhereClauseForUpdateGrid(fields, data.recordId, PrimaryKeyFields[0].FieldName, crudTableName);
113
- }
114
- else if (PrimaryKeyFields && PrimaryKeyFields.length > 1) {
115
- whereClause = this.whereClauseHelper.bindWhereClauseForMultiplePrimaryKeys(data.data, PrimaryKeyFields, crudTableName);
116
- removeMultiplePrimaryKey(data.data, PrimaryKeyFields);
117
- }
118
- const dataObj = createDynamicData(data.data);
119
- removeBlankValue(dataObj);
120
- const requestPayload = this.requestResponseHelper.updateRequestPayload(crudTableName, whereClause, dataObj);
121
- return this.update(requestPayload, headers);
122
- }
123
- }
124
- return null;
125
- }
126
- updateScreen(screenId, screenData) {
127
- const screen = this.screenHelper.getScreen(screenId);
128
- if (screen) {
129
- const appObject = getAppObjectFromSystemDBTableName('TABMD_AppScreen');
130
- if (appObject) {
131
- syncAppObjectFields(screenData, appObject);
132
- }
133
- Object.assign({}, screen, { Container: screenData.Container });
134
- const queryFilters = [];
135
- queryFilters.push({ FieldName: 'ID', FieldValue: screenId });
136
- const whereClause = this.whereClauseHelper.bindWhereClauseForUpdate('TABMD_AppScreen', queryFilters);
137
- const dataObj = createDynamicData(screenData);
138
- removeBlankValue(dataObj);
139
- const requestPayload = this.requestResponseHelper.updateRequestPayload('TABMD_AppScreen', whereClause, dataObj);
140
- return this.update(requestPayload);
134
+ objectId = objectIdToSave;
141
135
  }
142
- return null;
136
+ return this.updateByObjectId(objectId, data, headers);
143
137
  }
144
138
  /**
145
- * Update records using the provided DSQ ID, data, filters
146
- * @param dsqId The ID of the DataSourceQuery to use for the update
139
+ * Update using DSQ ID with custom table name and query fields
140
+ * Uses custom queryFieldsArray for where clause instead of primary key
141
+ * @param dsqId The DSQ ID
147
142
  * @param data The data to update
148
- * @param filters The filters to apply to the update
149
- * @returns The response from the update operation
143
+ * @param tableName The table name
144
+ * @param queryFieldsArray Query fields array for custom where clause
145
+ * @param headers Optional headers
146
+ * @returns Observable with update result
150
147
  */
151
- updateUsingDsqIdFiltersAndCustomViewId(dsqId, data, filters) {
152
- const appObject = getAppObjectFromDataSourceQueryID(dsqId);
153
- if (appObject) {
154
- if (data) {
155
- const whereClause = this.whereClauseHelper.bindWhereClauseForUpdateUsingFilters(appObject.SystemDBTableName, filters, appObject.Fields);
156
- let dataObj = [];
157
- dataObj = createDynamicData(data);
158
- const requestPayload = this.requestResponseHelper.updateRequestPayload(appObject.SystemDBTableName, whereClause, dataObj);
159
- return this.update(requestPayload);
160
- }
148
+ updateUsingDSQ(dsqId, data, tableName, queryFieldsArray, headers) {
149
+ const screenDataSource = this.metadataHelper.getDataSourceQueryByIdOrName(dsqId);
150
+ if (!screenDataSource || !data?.data) {
151
+ return null;
161
152
  }
162
- return null;
153
+ const appObjectModel = this.metadataHelper.getAppObjectByIdOrName(screenDataSource.ObjectID_Tosave || '');
154
+ if (!appObjectModel) {
155
+ return null;
156
+ }
157
+ // Use provided tableName or fallback to appObject's table name
158
+ const entityName = tableName || appObjectModel.SystemDBTableName;
159
+ const whereClause = this.whereClauseHelper.bindWhereClauseForUpdate(entityName, queryFieldsArray);
160
+ const dataObj = createDynamicData(data.data);
161
+ removeBlankValue(dataObj);
162
+ const requestBody = {
163
+ entityName: entityName,
164
+ fields: dataObj,
165
+ whereClause: whereClause
166
+ };
167
+ const header = getHeaders(headers);
168
+ return this.apiService.putToService(APIServices.crudService, API.recordsUpdate, requestBody, header).pipe(switchMap((response) => {
169
+ if (!response?.IsSuccess) {
170
+ console.error('[TabUpdateService] Update using DSQ failed:', response?.Errors);
171
+ return of(response);
172
+ }
173
+ if (response?.Result?.length) {
174
+ return of(response);
175
+ }
176
+ else if (response?.CorrelationId) {
177
+ return this.handleAsyncUpdate(response);
178
+ }
179
+ return of(response);
180
+ }), catchError((error) => {
181
+ console.error('[TabUpdateService] Update using DSQ error:', error);
182
+ return throwError(() => error);
183
+ }));
163
184
  }
164
185
  static { this.ɵfac = function TabUpdateService_Factory(t) { return new (t || TabUpdateService)(); }; }
165
186
  static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: TabUpdateService, factory: TabUpdateService.ɵfac, providedIn: 'root' }); }
@@ -168,4 +189,4 @@ export class TabUpdateService {
168
189
  type: Injectable,
169
190
  args: [{ providedIn: 'root' }]
170
191
  }], null, null); })();
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXVwZGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NydWQvdGFiLXVwZGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBa0IsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFlBQVksRUFBRSxpQ0FBaUMsRUFBRSxpQ0FBaUMsRUFBRSw0QkFBNEIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlLLE9BQU8sRUFBRSxTQUFTLEVBQWEsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLHdCQUF3QixFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7O0FBS3pILE1BQU0sT0FBTyxnQkFBZ0I7SUFEN0I7UUFFbUIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QixpQkFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMs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QyxDQUN6RCxTQUFTLENBQUMsaUJBQWlCLEVBQzNCLE9BQU8sRUFDUCxTQUFTLENBQUMsTUFBTSxDQUNqQixDQUFDO2dCQUNKLElBQUksT0FBTyxHQUFRLEVBQUUsQ0FBQztnQkFDdEIsT0FBTyxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsb0JBQW9CLENBQ3BFLFNBQVMsQ0FBQyxpQkFBaUIsRUFDM0IsV0FBVyxFQUNYLE9BQU8sQ0FDUixDQUFDO2dCQUNGLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNyQyxDQUFDO1FBQ0gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztpRkF2TFUsZ0JBQWdCO3VFQUFoQixnQkFBZ0IsV0FBaEIsZ0JBQWdCLG1CQURILE1BQU07O2lGQUNuQixnQkFBZ0I7Y0FENUIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IERTUUhlbHBlciB9IGZyb20gXCIuLi9oZWxwZXJzL2NvbW1vbi9kc3EuaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBTY3JlZW5IZWxwZXIgfSBmcm9tIFwiLi4vaGVscGVycy9zY3JlZW4vc2NyZWVuLmhlbHBlcnNcIjtcclxuaW1wb3J0IHsgV2hlcmVDbGF1c2VIZWxwZXIgfSBmcm9tIFwiLi4vaGVscGVycy9jb21tb24vd2hlcmUtY2xhdXNlLmhlbHBlcnNcIjtcclxuaW1wb3J0IHsgUmVxdWVzdFJlc3BvbnNlSGVscGVyIH0gZnJvbSBcIi4uL2hlbHBlcnMvY29tbW9uL3JlcS1yZXMuaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBBUElGaWx0ZXJDcml0ZXJpYSwgQVBJVXBkYXRlUXVlcnkgfSBmcm9tIFwiLi4vbW9kZWxzL2FwaS1xdWVyeS5jbGFzc1wiO1xyXG5pbXBvcnQgeyBRdWVyeVR5cGUgfSBmcm9tIFwiLi4vZW51bXMvcXVlcnkuZW51bVwiO1xyXG5pbXBvcnQgeyBnZXRBcHBPYmplY3QsIGdldEFwcE9iamVjdEZyb21EYXRhU291cmNlUXVlcnlJRCwgZ2V0QXBwT2JqZWN0RnJvbVN5c3RlbURCVGFibGVOYW1lLCBnZXREYXRhRnJvbURhdGFTb3VyY2VRdWVyeUlELCBzeW5jQXBwT2JqZWN0RmllbGRzIH0gZnJvbSBcIi4uL3V0aWxzL3RhYi1hcHAudXRpbFwiO1xyXG5pbXBvcnQgeyBBcHBPYmplY3QsIEFwcFNjcmVlbiB9IGZyb20gXCIuLi9tb2RlbHMvYXBwLW9iamVjdC5jbGFzc1wiO1xyXG5pbXBvcnQgeyBjcmVhdGVEeW5hbWljRGF0YSwgcmVtb3ZlQmxhbmtWYWx1ZSB9IGZyb20gXCIuLi91dGlscy9qc29uLnV0aWxcIjtcclxuaW1wb3J0IHsgZ2V0RWRpdFJlY29yZElkLCBnZXRQcmltYXJ5S2V5RmllbGRzLCByZW1vdmVNdWx0aXBsZVByaW1hcnlLZXksIHJlbW92ZVByaW1hcnlLZXkgfSBmcm9tIFwiLi4vdXRpbHMvcmVxLXJlcy51dGlsXCI7XHJcbmltcG9ydCB7IFVwZGF0ZVF1ZXJ5UGFyYW1ldGVyIH0gZnJvbSBcIi4uL21vZGVscy9kYXRhLXNvdXJjZS1xdWVyaWVzLmNsYXNzXCI7XHJcblxyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFRhYlVwZGF0ZVNlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZHNxSGVscGVyID0gaW5qZWN0KERTUUhlbHBlcik7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBzY3JlZW5IZWxwZXIgPSBpbmplY3QoU2NyZWVuSGVscGVyKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHdoZXJlQ2xhdXNlSGVscGVyID0gaW5qZWN0KFdoZXJlQ2xhdXNlSGVscGVyKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHJlcXVlc3RSZXNwb25zZUhlbHBlciA9IGluamVjdChSZXF1ZXN0UmVzcG9uc2VIZWxwZXIpO1xyXG5cclxuICB1cGRhdGUoZGF0YTogQVBJVXBkYXRlUXVlcnkgLGhlYWRlcnM/OiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmRzcUhlbHBlci5leGVjdXRlUXVlcnkoZGF0YSwgUXVlcnlUeXBlLlVwZGF0ZSwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVVc2luZ0RTUShkc3FJZDogc3RyaW5nLCBkYXRhOiBhbnksIHRhYmxlTmFtZTogc3RyaW5nLCBxdWVyeUZpZWxkc0FycmF5PzogYW55LCBoZWFkZXJzPzogYW55KSB7XHJcbiAgICBjb25zdCBhcHBPYmplY3Q6IEFwcE9iamVjdCA9IGdldERhdGFGcm9tRGF0YVNvdXJjZVF1ZXJ5SUQoZHNxSWQpO1xyXG4gICAgaWYgKGFwcE9iamVjdCkge1xyXG4gICAgICBpZiAoZGF0YSAmJiBkYXRhLmRhdGEpIHtcclxuICAgICAgICBjb25zdCB3aGVyZUNsYXVzZTogQVBJRmlsdGVyQ3JpdGVyaWEgPSB0aGlzLndoZXJlQ2xhdXNlSGVscGVyLmJpbmRXaGVyZUNsYXVzZUZvclVwZGF0ZSh0YWJsZU5hbWUsIHF1ZXJ5RmllbGRzQXJyYXkpO1xyXG4gICAgICAgIGxldCBkYXRhT2JqOiBhbnkgPSBbXTtcclxuICAgICAgICBkYXRhT2JqID0gY3JlYXRlRHluYW1pY0RhdGEoZGF0YS5kYXRhKTtcclxuICAgICAgICBjb25zdCByZXF1ZXN0UGF5bG9hZCA9IHRoaXMucmVxdWVzdFJlc3BvbnNlSGVscGVyLnVwZGF0ZVJlcXVlc3RQYXlsb2FkKHRhYmxlTmFtZSwgd2hlcmVDbGF1c2UsIGRhdGFPYmopO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZShyZXF1ZXN0UGF5bG9hZCwgaGVhZGVycyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGFydGggQiBUaGFra2FyIC0gMjAyNC0xMS0wNlxyXG4gICAqIFVwZGF0ZXMgYSByZWNvcmQgaW4gdGhlIGRhdGFiYXNlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBvYmplY3QgSUQuXHJcbiAgICogU2FtZSBjb2RlIGFzIHVwZGF0ZVVzaW5nU2NyZWVuSWQgd2l0aCBtaW5vciBtb2RpZmljYXRpb25zIGxpa2UgdXNpbmcgdGhlIG9iamVjdCBJRCBkaXJlY3RseSBpbnN0ZWFkIG9mIHRoZSBzY3JlZW4gSUQuXHJcbiAgICogQHBhcmFtIG9iamVjdElkIFRoZSBvYmplY3QgSUQgb2YgdGhlIHJlY29yZCB0byB1cGRhdGUuXHJcbiAgICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8gdXBkYXRlIHRoZSByZWNvcmQgd2l0aC5cclxuICAgKiBAcmV0dXJucyBUaGUgcmVzcG9uc2UgZnJvbSB0aGUgdXBkYXRlIG9wZXJhdGlvbi5cclxuICAgKi9cclxuICB1cGRhdGVCeU9iamVjdElkKG9iamVjdElkOiBzdHJpbmcsIGRhdGE6IGFueSkge1xyXG4gICAgY29uc3QgZmllbGRzOiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IGFwcE9iamVjdDogYW55ID0gQXBwT2JqZWN0O1xyXG5cclxuICAgIGFwcE9iamVjdCA9IGdldEFwcE9iamVjdChvYmplY3RJZCk7XHJcbiAgICBhcHBPYmplY3QuRmllbGRzLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBmaWVsZHMucHVzaCh7IEZpZWxkOiBlbGVtZW50IH0pO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBjcnVkVGFibGVOYW1lID0gYXBwT2JqZWN0LlN5c3RlbURCVGFibGVOYW1lO1xyXG4gICAgc3luY0FwcE9iamVjdEZpZWxkcyhkYXRhLmRhdGEsIGFwcE9iamVjdCk7XHJcblxyXG4gICAgY29uc3QgUHJpbWFyeUtleUZpZWxkczogYW55ID0gZ2V0UHJpbWFyeUtleUZpZWxkcyhhcHBPYmplY3QpO1xyXG4gICAgbGV0IHdoZXJlQ2xhdXNlOiBhbnkgPSBBUElGaWx0ZXJDcml0ZXJpYTtcclxuICAgIGlmIChhcHBPYmplY3QpIHtcclxuICAgICAgaWYgKGRhdGEuZGF0YSkge1xyXG4gICAgICAgIGNvbnN0IHJlY29yZElkID0gZ2V0RWRpdFJlY29yZElkKFxyXG4gICAgICAgICAgZGF0YS5kYXRhLFxyXG4gICAgICAgICAgUHJpbWFyeUtleUZpZWxkc1swXT8uRmllbGROYW1lXHJcbiAgICAgICAgKTtcclxuICAgICAgICBkYXRhWydyZWNvcmRJZCddID0gcmVjb3JkSWQ7XHJcblxyXG4gICAgICAgIGlmIChQcmltYXJ5S2V5RmllbGRzICYmIFByaW1hcnlLZXlGaWVsZHMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICByZW1vdmVQcmltYXJ5S2V5KGRhdGEuZGF0YSwgUHJpbWFyeUtleUZpZWxkc1swXT8uRmllbGROYW1lKTtcclxuICAgICAgICAgIHdoZXJlQ2xhdXNlID0gdGhpcy53aGVyZUNsYXVzZUhlbHBlci5iaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGVHcmlkKFxyXG4gICAgICAgICAgICBmaWVsZHMsXHJcbiAgICAgICAgICAgIGRhdGEucmVjb3JkSWQsXHJcbiAgICAgICAgICAgIFByaW1hcnlLZXlGaWVsZHNbMF0uRmllbGROYW1lLFxyXG4gICAgICAgICAgICBjcnVkVGFibGVOYW1lXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoUHJpbWFyeUtleUZpZWxkcyAmJiBQcmltYXJ5S2V5RmllbGRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHdoZXJlQ2xhdXNlID1cclxuICAgICAgICAgICAgdGhpcy53aGVyZUNsYXVzZUhlbHBlci5iaW5kV2hlcmVDbGF1c2VGb3JNdWx0aXBsZVByaW1hcnlLZXlzKFxyXG4gICAgICAgICAgICAgIGRhdGEuZGF0YSxcclxuICAgICAgICAgICAgICBQcmltYXJ5S2V5RmllbGRzLFxyXG4gICAgICAgICAgICAgIGNydWRUYWJsZU5hbWVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIHJlbW92ZU11bHRpcGxlUHJpbWFyeUtleShkYXRhLmRhdGEsIFByaW1hcnlLZXlGaWVsZHMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkYXRhT2JqOiBhbnkgPSBjcmVhdGVEeW5hbWljRGF0YShkYXRhLmRhdGEpO1xyXG4gICAgICAgIHJlbW92ZUJsYW5rVmFsdWUoZGF0YU9iaik7XHJcbiAgICAgICAgY29uc3QgcmVxdWVzdFBheWxvYWQgPSB0aGlzLnJlcXVlc3RSZXNwb25zZUhlbHBlci51cGRhdGVSZXF1ZXN0UGF5bG9hZChcclxuICAgICAgICAgIGNydWRUYWJsZU5hbWUsXHJcbiAgICAgICAgICB3aGVyZUNsYXVzZSxcclxuICAgICAgICAgIGRhdGFPYmpcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZShyZXF1ZXN0UGF5bG9hZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuICB1cGRhdGVVc2luZ1NjcmVlbklkKHNjcmVlbklkOiBzdHJpbmcsIGRhdGE6IGFueSwgb2JqZWN0SWRUb1NhdmU/OiBzdHJpbmcsIGhlYWRlcnM/OiBhbnkpIHtcclxuICAgIGxldCBmaWVsZHM7XHJcbiAgICBsZXQgYXBwT2JqZWN0OiBhbnkgPSBBcHBPYmplY3Q7XHJcbiAgICBsZXQgY3J1ZFRhYmxlTmFtZTtcclxuICAgIGlmIChzY3JlZW5JZCkge1xyXG4gICAgICBjb25zdCBzY3JlZW46IEFwcFNjcmVlbiA9IHRoaXMuc2NyZWVuSGVscGVyLmdldFNjcmVlbihzY3JlZW5JZCk7XHJcbiAgICAgIGNvbnN0IHNjcmVlbkRhdGFTb3VyY2UgPSBnZXREYXRhRnJvbURhdGFTb3VyY2VRdWVyeUlEKHNjcmVlbi5EYXRhU291cmNlUXVlcnkpO1xyXG4gICAgICBhcHBPYmplY3QgPSBnZXRBcHBPYmplY3Qoc2NyZWVuRGF0YVNvdXJjZS5PYmplY3RJRF9Ub3NhdmUpO1xyXG4gICAgICBjcnVkVGFibGVOYW1lID0gYXBwT2JqZWN0LlN5c3RlbURCVGFibGVOYW1lO1xyXG4gICAgICBmaWVsZHMgPSBzY3JlZW5EYXRhU291cmNlPy5GaWVsZHM/Lm1hcCgoZmllbGQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGFwcEZpZWxkID0gYXBwT2JqZWN0Py5GaWVsZHM/LmZpbmQoKGY6IGFueSkgPT4gZj8uSUQ/LnRvTG93ZXJDYXNlKCkgPT09IGZpZWxkPy5BcHBGaWVsZElEPy50b0xvd2VyQ2FzZSgpKSA/PyB7fTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgLi4uZmllbGQsXHJcbiAgICAgICAgICBGaWVsZDogYXBwRmllbGRcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgICAgc3luY0FwcE9iamVjdEZpZWxkcyhkYXRhLmRhdGEsIGFwcE9iamVjdCk7XHJcbiAgICB9XHJcbiAgICBpZiAob2JqZWN0SWRUb1NhdmUpIHtcclxuICAgICAgZmllbGRzID0gW107XHJcbiAgICAgIGFwcE9iamVjdCA9IGdldEFwcE9iamVjdChvYmplY3RJZFRvU2F2ZSk7XHJcbiAgICAgIGFwcE9iamVjdC5GaWVsZHMuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgZmllbGRzLnB1c2goeyBGaWVsZDogZWxlbWVudCB9KVxyXG4gICAgICB9KTtcclxuICAgICAgY3J1ZFRhYmxlTmFtZSA9IGFwcE9iamVjdC5TeXN0ZW1EQlRhYmxlTmFtZTtcclxuICAgICAgc3luY0FwcE9iamVjdEZpZWxkcyhkYXRhLmRhdGEsIGFwcE9iamVjdCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgUHJpbWFyeUtleUZpZWxkczogYW55ID0gZ2V0UHJpbWFyeUtleUZpZWxkcyhhcHBPYmplY3QpO1xyXG4gICAgbGV0IHdoZXJlQ2xhdXNlOiBhbnkgPSBBUElGaWx0ZXJDcml0ZXJpYTtcclxuICAgIGlmIChhcHBPYmplY3QpIHtcclxuICAgICAgaWYgKGRhdGEuZGF0YSkge1xyXG4gICAgICAgIGNvbnN0IHJlY29yZElkID0gZ2V0RWRpdFJlY29yZElkKGRhdGEuZGF0YSwgUHJpbWFyeUtleUZpZWxkc1swXT8uRmllbGROYW1lKTtcclxuICAgICAgICBkYXRhWydyZWNvcmRJZCddID0gcmVjb3JkSWQ7XHJcblxyXG4gICAgICAgIGlmIChQcmltYXJ5S2V5RmllbGRzICYmIFByaW1hcnlLZXlGaWVsZHMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICByZW1vdmVQcmltYXJ5S2V5KGRhdGEuZGF0YSwgUHJpbWFyeUtleUZpZWxkc1swXT8uRmllbGROYW1lKTtcclxuICAgICAgICAgIHdoZXJlQ2xhdXNlID0gdGhpcy53aGVyZUNsYXVzZUhlbHBlci5iaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGVHcmlkKGZpZWxkcywgZGF0YS5yZWNvcmRJZCwgUHJpbWFyeUtleUZpZWxkc1swXS5GaWVsZE5hbWUsIGNydWRUYWJsZU5hbWUpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoUHJpbWFyeUtleUZpZWxkcyAmJiBQcmltYXJ5S2V5RmllbGRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHdoZXJlQ2xhdXNlID0gdGhpcy53aGVyZUNsYXVzZUhlbHBlci5iaW5kV2hlcmVDbGF1c2VGb3JNdWx0aXBsZVByaW1hcnlLZXlzKGRhdGEuZGF0YSwgUHJpbWFyeUtleUZpZWxkcywgY3J1ZFRhYmxlTmFtZSk7XHJcbiAgICAgICAgICByZW1vdmVNdWx0aXBsZVByaW1hcnlLZXkoZGF0YS5kYXRhLCBQcmltYXJ5S2V5RmllbGRzKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGF0YU9iajogYW55ID0gY3JlYXRlRHluYW1pY0RhdGEoZGF0YS5kYXRhKTtcclxuICAgICAgICByZW1vdmVCbGFua1ZhbHVlKGRhdGFPYmopO1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3RQYXlsb2FkID0gdGhpcy5yZXF1ZXN0UmVzcG9uc2VIZWxwZXIudXBkYXRlUmVxdWVzdFBheWxvYWQoY3J1ZFRhYmxlTmFtZSwgd2hlcmVDbGF1c2UsIGRhdGFPYmopO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZShyZXF1ZXN0UGF5bG9hZCwgaGVhZGVycyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgdXBkYXRlU2NyZWVuKHNjcmVlbklkOiBzdHJpbmcsIHNjcmVlbkRhdGE6IGFueSkge1xyXG4gICAgY29uc3Qgc2NyZWVuOiBBcHBTY3JlZW4gPSB0aGlzLnNjcmVlbkhlbHBlci5nZXRTY3JlZW4oc2NyZWVuSWQpO1xyXG4gICAgaWYgKHNjcmVlbikge1xyXG4gICAgICBjb25zdCBhcHBPYmplY3QgPSBnZXRBcHBPYmplY3RGcm9tU3lzdGVtREJUYWJsZU5hbWUoJ1RBQk1EX0FwcFNjcmVlbicpO1xyXG4gICAgICBpZiAoYXBwT2JqZWN0KSB7XHJcbiAgICAgICAgc3luY0FwcE9iamVjdEZpZWxkcyhzY3JlZW5EYXRhLCBhcHBPYmplY3QpO1xyXG4gICAgICB9XHJcbiAgICAgIE9iamVjdC5hc3NpZ24oe30sIHNjcmVlbiwgeyBDb250YWluZXI6IHNjcmVlbkRhdGEuQ29udGFpbmVyIH0pO1xyXG4gICAgICBjb25zdCBxdWVyeUZpbHRlcnM6IFVwZGF0ZVF1ZXJ5UGFyYW1ldGVyW10gPSBbXTtcclxuICAgICAgcXVlcnlGaWx0ZXJzLnB1c2goeyBGaWVsZE5hbWU6ICdJRCcsIEZpZWxkVmFsdWU6IHNjcmVlbklkIH0pXHJcbiAgICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gdGhpcy53aGVyZUNsYXVzZUhlbHBlci5iaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGUoJ1RBQk1EX0FwcFNjcmVlbicsIHF1ZXJ5RmlsdGVycyk7XHJcbiAgICAgIGNvbnN0IGRhdGFPYmo6IGFueSA9IGNyZWF0ZUR5bmFtaWNEYXRhKHNjcmVlbkRhdGEpO1xyXG4gICAgICByZW1vdmVCbGFua1ZhbHVlKGRhdGFPYmopO1xyXG4gICAgICBjb25zdCByZXF1ZXN0UGF5bG9hZCA9IHRoaXMucmVxdWVzdFJlc3BvbnNlSGVscGVyLnVwZGF0ZVJlcXVlc3RQYXlsb2FkKCdUQUJNRF9BcHBTY3JlZW4nLCB3aGVyZUNsYXVzZSwgZGF0YU9iaik7XHJcbiAgICAgIHJldHVybiB0aGlzLnVwZGF0ZShyZXF1ZXN0UGF5bG9hZCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHJlY29yZHMgdXNpbmcgdGhlIHByb3ZpZGVkIERTUSBJRCwgZGF0YSwgZmlsdGVyc1xyXG4gICAqIEBwYXJhbSBkc3FJZCBUaGUgSUQgb2YgdGhlIERhdGFTb3VyY2VRdWVyeSB0byB1c2UgZm9yIHRoZSB1cGRhdGVcclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byB1cGRhdGVcclxuICAgKiBAcGFyYW0gZmlsdGVycyBUaGUgZmlsdGVycyB0byBhcHBseSB0byB0aGUgdXBkYXRlXHJcbiAgICogQHJldHVybnMgVGhlIHJlc3BvbnNlIGZyb20gdGhlIHVwZGF0ZSBvcGVyYXRpb25cclxuICAgKi9cclxuICB1cGRhdGVVc2luZ0RzcUlkRmlsdGVyc0FuZEN1c3RvbVZpZXdJZChcclxuICAgIGRzcUlkOiBzdHJpbmcsXHJcbiAgICBkYXRhOiBhbnksXHJcbiAgICBmaWx0ZXJzOiBhbnlcclxuICApIHtcclxuICAgIGNvbnN0IGFwcE9iamVjdDogQXBwT2JqZWN0ID0gZ2V0QXBwT2JqZWN0RnJvbURhdGFTb3VyY2VRdWVyeUlEKGRzcUlkKTtcclxuICAgIGlmIChhcHBPYmplY3QpIHtcclxuICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICBjb25zdCB3aGVyZUNsYXVzZTogQVBJRmlsdGVyQ3JpdGVyaWEgPVxyXG4gICAgICAgICAgdGhpcy53aGVyZUNsYXVzZUhlbHBlci5iaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGVVc2luZ0ZpbHRlcnMoXHJcbiAgICAgICAgICAgIGFwcE9iamVjdC5TeXN0ZW1EQlRhYmxlTmFtZSxcclxuICAgICAgICAgICAgZmlsdGVycyxcclxuICAgICAgICAgICAgYXBwT2JqZWN0LkZpZWxkc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICBsZXQgZGF0YU9iajogYW55ID0gW107XHJcbiAgICAgICAgZGF0YU9iaiA9IGNyZWF0ZUR5bmFtaWNEYXRhKGRhdGEpO1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3RQYXlsb2FkID0gdGhpcy5yZXF1ZXN0UmVzcG9uc2VIZWxwZXIudXBkYXRlUmVxdWVzdFBheWxvYWQoXHJcbiAgICAgICAgICBhcHBPYmplY3QuU3lzdGVtREJUYWJsZU5hbWUsXHJcbiAgICAgICAgICB3aGVyZUNsYXVzZSxcclxuICAgICAgICAgIGRhdGFPYmpcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVwZGF0ZShyZXF1ZXN0UGF5bG9hZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
192
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXVwZGF0ZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NydWQvdGFiLXVwZGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBRTVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckksT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUM1RSxPQUFPLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUs5RCxNQUFNLE9BQU8sZ0JBQWdCO0lBRDdCO1FBRW1CLGlCQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxD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QWdCLFdBQWhCLGdCQUFnQixtQkFESCxNQUFNOztpRkFDbkIsZ0JBQWdCO2NBRDVCLFVBQVU7ZUFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXHJcblxyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAsIG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU2NyZWVuSGVscGVyIH0gZnJvbSBcIi4uL2hlbHBlcnMvc2NyZWVuL3NjcmVlbi5oZWxwZXJzXCI7XHJcbmltcG9ydCB7IFdoZXJlQ2xhdXNlSGVscGVyIH0gZnJvbSBcIi4uL2hlbHBlcnMvY29tbW9uL3doZXJlLWNsYXVzZS5oZWxwZXJzXCI7XHJcbmltcG9ydCB7IE1ldGFkYXRhSGVscGVyIH0gZnJvbSBcIi4uL2hlbHBlcnMvY29tbW9uL21ldGEtZGF0YS5oZWxwZXJzXCI7XHJcbmltcG9ydCB7IHN5bmNBcHBPYmplY3RGaWVsZHMgfSBmcm9tIFwiLi4vdXRpbHMvdGFiLWFwcC51dGlsXCI7XHJcbmltcG9ydCB7IEFwcE9iamVjdCwgQXBwU2NyZWVuIH0gZnJvbSBcIi4uL21vZGVscy9hcHAtb2JqZWN0LmNsYXNzXCI7XHJcbmltcG9ydCB7IGNyZWF0ZUR5bmFtaWNEYXRhLCByZW1vdmVCbGFua1ZhbHVlIH0gZnJvbSBcIi4uL3V0aWxzL2pzb24udXRpbFwiO1xyXG5pbXBvcnQgeyBnZXRFZGl0UmVjb3JkSWQsIGdldFByaW1hcnlLZXlGaWVsZHMsIHJlbW92ZU11bHRpcGxlUHJpbWFyeUtleSwgcmVtb3ZlUHJpbWFyeUtleSwgZ2V0SGVhZGVycyB9IGZyb20gXCIuLi91dGlscy9yZXEtcmVzLnV0aWxcIjtcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvaHR0cC1jbGllbnQvYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaWduYWxSU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvc2VydmljZS9zaWduYWxyL3NpZ25hbHIuc2VydmljZSc7XHJcbmltcG9ydCB7IEFQSSwgQVBJU2VydmljZXMgfSBmcm9tICcuLi9jb25zdGFudHMvYXBpLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IENvbW1vbkFwaVJlc3BvbnNlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb21tb24uaW50ZXJmYWNlJztcclxuXHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgVGFiVXBkYXRlU2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBzY3JlZW5IZWxwZXIgPSBpbmplY3QoU2NyZWVuSGVscGVyKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHdoZXJlQ2xhdXNlSGVscGVyID0gaW5qZWN0KFdoZXJlQ2xhdXNlSGVscGVyKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGFwaVNlcnZpY2UgPSBpbmplY3QoQXBpU2VydmljZSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBzaWduYWxSU2VydmljZSA9IGluamVjdChTaWduYWxSU2VydmljZSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBtZXRhZGF0YUhlbHBlciA9IGluamVjdChNZXRhZGF0YUhlbHBlcik7XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSB1c2luZyAvcmVjb3Jkcy91cGRhdGUgZW5kcG9pbnQgd2l0aCBTWU5DL0FTWU5DIHN1cHBvcnRcclxuICAgKiBAcGFyYW0gb2JqZWN0SWQgVGhlIG9iamVjdCBJRFxyXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIHRvIHVwZGF0ZVxyXG4gICAqIEBwYXJhbSBoZWFkZXJzIE9wdGlvbmFsIGhlYWRlcnNcclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlIHdpdGggdXBkYXRlIHJlc3VsdFxyXG4gICAqL1xyXG4gIHVwZGF0ZUJ5T2JqZWN0SWQob2JqZWN0SWQ6IHN0cmluZywgZGF0YTogYW55LCBoZWFkZXJzPzogYW55KTogT2JzZXJ2YWJsZTxDb21tb25BcGlSZXNwb25zZT4gfCBudWxsIHtcclxuICAgIGNvbnN0IGZpZWxkczogYW55W10gPSBbXTtcclxuICAgIGNvbnN0IGFwcE9iamVjdE1vZGVsID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRBcHBPYmplY3RCeUlkT3JOYW1lKG9iamVjdElkKTtcclxuICAgIGNvbnN0IGFwcE9iamVjdDogQXBwT2JqZWN0ID0gYXBwT2JqZWN0TW9kZWw/LnRvSlNPTigpO1xyXG5cclxuICAgIGlmICghYXBwT2JqZWN0TW9kZWw/LklEKSB7XHJcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihgQXBwT2JqZWN0IG5vdCBmb3VuZDogJHtvYmplY3RJZH1gKSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXBwT2JqZWN0TW9kZWwuZmllbGRzKCkuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgIGZpZWxkcy5wdXNoKHsgRmllbGQ6IGVsZW1lbnQgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCBjcnVkVGFibGVOYW1lID0gYXBwT2JqZWN0TW9kZWwuU3lzdGVtREJUYWJsZU5hbWU7XHJcbiAgICBzeW5jQXBwT2JqZWN0RmllbGRzKGRhdGEuZGF0YSwgYXBwT2JqZWN0KTtcclxuXHJcbiAgICBjb25zdCBQcmltYXJ5S2V5RmllbGRzOiBhbnkgPSBnZXRQcmltYXJ5S2V5RmllbGRzKGFwcE9iamVjdCk7XHJcblxyXG4gICAgaWYgKCFhcHBPYmplY3QgfHwgIWRhdGEuZGF0YSkge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZWNvcmRJZCA9IGdldEVkaXRSZWNvcmRJZChkYXRhLmRhdGEsIFByaW1hcnlLZXlGaWVsZHNbMF0/LkZpZWxkTmFtZSk7XHJcbiAgICBkYXRhWydyZWNvcmRJZCddID0gcmVjb3JkSWQ7XHJcblxyXG4gICAgbGV0IHdoZXJlQ2xhdXNlOiBhbnk7XHJcbiAgICBpZiAoUHJpbWFyeUtleUZpZWxkcyAmJiBQcmltYXJ5S2V5RmllbGRzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICByZW1vdmVQcmltYXJ5S2V5KGRhdGEuZGF0YSwgUHJpbWFyeUtleUZpZWxkc1swXT8uRmllbGROYW1lKTtcclxuICAgICAgd2hlcmVDbGF1c2UgPSB0aGlzLndoZXJlQ2xhdXNlSGVscGVyLmJpbmRXaGVyZUNsYXVzZUZvclVwZGF0ZUdyaWQoXHJcbiAgICAgICAgZmllbGRzLFxyXG4gICAgICAgIGRhdGEucmVjb3JkSWQsXHJcbiAgICAgICAgUHJpbWFyeUtleUZpZWxkc1swXS5GaWVsZE5hbWUsXHJcbiAgICAgICAgY3J1ZFRhYmxlTmFtZVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChQcmltYXJ5S2V5RmllbGRzICYmIFByaW1hcnlLZXlGaWVsZHMubGVuZ3RoID4gMSkge1xyXG4gICAgICB3aGVyZUNsYXVzZSA9IHRoaXMud2hlcmVDbGF1c2VIZWxwZXIuYmluZFdoZXJlQ2xhdXNlRm9yTXVsdGlwbGVQcmltYXJ5S2V5cyhcclxuICAgICAgICBkYXRhLmRhdGEsXHJcbiAgICAgICAgUHJpbWFyeUtleUZpZWxkcyxcclxuICAgICAgICBjcnVkVGFibGVOYW1lXHJcbiAgICAgICk7XHJcbiAgICAgIHJlbW92ZU11bHRpcGxlUHJpbWFyeUtleShkYXRhLmRhdGEsIFByaW1hcnlLZXlGaWVsZHMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFJlbW92ZSBibGFuayB2YWx1ZXNcclxuICAgIGNvbnN0IGZpbHRlcmVkRGF0YSA9IHsgLi4uZGF0YS5kYXRhIH07XHJcbiAgICByZW1vdmVCbGFua1ZhbHVlKGZpbHRlcmVkRGF0YSk7XHJcblxyXG4gICAgLy8gVHJhbnNmb3JtIHRvIG5ldyBBUEkgZm9ybWF0IHVzaW5nIGNyZWF0ZUR5bmFtaWNEYXRhIHV0aWxpdHlcclxuICAgIGNvbnN0IHJlcXVlc3RCb2R5ID0ge1xyXG4gICAgICBlbnRpdHlOYW1lOiBjcnVkVGFibGVOYW1lLFxyXG4gICAgICBmaWVsZHM6IGNyZWF0ZUR5bmFtaWNEYXRhKGZpbHRlcmVkRGF0YSksXHJcbiAgICAgIHdoZXJlQ2xhdXNlOiB3aGVyZUNsYXVzZVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBoZWFkZXIgPSBnZXRIZWFkZXJzKGhlYWRlcnMpO1xyXG5cclxuICAgIC8vIFBVVCB0byBuZXcgZW5kcG9pbnRcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucHV0VG9TZXJ2aWNlKFxyXG4gICAgICBBUElTZXJ2aWNlcy5jcnVkU2VydmljZSxcclxuICAgICAgQVBJLnJlY29yZHNVcGRhdGUsXHJcbiAgICAgIHJlcXVlc3RCb2R5LFxyXG4gICAgICBoZWFkZXJcclxuICAgICkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChyZXNwb25zZTogQ29tbW9uQXBpUmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAoIXJlc3BvbnNlPy5Jc1N1Y2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1tUYWJVcGRhdGVTZXJ2aWNlXSBVcGRhdGUgZmFpbGVkOicsIHJlc3BvbnNlPy5FcnJvcnMpO1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENBU0UgMTogU1lOQyAtIE9wZXJhdGlvbiBjb21wbGV0ZWQgaW1tZWRpYXRlbHlcclxuICAgICAgICBpZiAocmVzcG9uc2U/LlJlc3VsdD8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ0FTRSAyOiBBU1lOQyAtIEhhcyBjb3JyZWxhdGlvbklkXHJcbiAgICAgICAgZWxzZSBpZiAocmVzcG9uc2U/LkNvcnJlbGF0aW9uSWQpIHtcclxuICAgICAgICAgIHJldHVybiB0aGlzLmhhbmRsZUFzeW5jVXBkYXRlKHJlc3BvbnNlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIENBU0UgMzogVW5rbm93biByZXNwb25zZSBmb3JtYXRcclxuICAgICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdbVGFiVXBkYXRlU2VydmljZV0gVXBkYXRlIGVycm9yOicsIGVycm9yKTtcclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlIGFzeW5jIHVwZGF0ZSAtIHdhaXQgZm9yIFNpZ25hbFIgbm90aWZpY2F0aW9uXHJcbiAgICogQHBhcmFtIHJlc3BvbnNlIEluaXRpYWwgcmVzcG9uc2Ugd2l0aCBjb3JyZWxhdGlvbklkXHJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSB3aXRoIHVwZGF0ZSByZXN1bHRcclxuICAgKi9cclxuICBwcml2YXRlIGhhbmRsZUFzeW5jVXBkYXRlKHJlc3BvbnNlOiBDb21tb25BcGlSZXNwb25zZSk6IE9ic2VydmFibGU8Q29tbW9uQXBpUmVzcG9uc2U+IHtcclxuICAgIGNvbnN0IGNvcnJlbGF0aW9uSWQgPSByZXNwb25zZT8uQ29ycmVsYXRpb25JZDtcclxuXHJcbiAgICBpZiAoIWNvcnJlbGF0aW9uSWQpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignW1RhYlVwZGF0ZVNlcnZpY2VdIE1pc3NpbmcgY29ycmVsYXRpb25JZCBpbiBhc3luYyByZXNwb25zZScpO1xyXG4gICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFdhaXQgZm9yIFNpZ25hbFIgbm90aWZpY2F0aW9uIHdpdGggbWF0Y2hpbmcgY29ycmVsYXRpb25JZFxyXG4gICAgcmV0dXJuIHRoaXMuc2lnbmFsUlNlcnZpY2Uud2FpdEZvck9wZXJhdGlvbihjb3JyZWxhdGlvbklkKS5waXBlKFxyXG4gICAgICBtYXAoKG5vdGlmaWNhdGlvbikgPT4ge1xyXG4gICAgICAgIC8vIENoZWNrIGlmIG9wZXJhdGlvbiBzdWNjZWVkZWRcclxuICAgICAgICBpZiAoIW5vdGlmaWNhdGlvbi5pc1N1Y2Nlc3MpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihub3RpZmljYXRpb24uZXJyb3JNZXNzYWdlIHx8ICdVcGRhdGUgb3BlcmF0aW9uIGZhaWxlZCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gUmV0dXJuIHJlc3BvbnNlIHdpdGggc3VjY2Vzc1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAuLi5yZXNwb25zZSxcclxuICAgICAgICAgIFJlc3VsdDogbm90aWZpY2F0aW9uLnJlY29yZElkLFxyXG4gICAgICAgICAgUmVjb3JkQWZmZWN0dGVkOiBub3RpZmljYXRpb24uYWZmZWN0ZWRSZWNvcmRzIHx8IDFcclxuICAgICAgICB9O1xyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICBpZiAoZXJyb3IubWVzc2FnZSA9PT0gJ09wZXJhdGlvbiB0aW1lZCBvdXQnKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoXHJcbiAgICAgICAgICAgICdVcGRhdGUgb3BlcmF0aW9uIHRpbWVkIG91dC4gVGhlIG9wZXJhdGlvbiBtYXkgc3RpbGwgY29tcGxldGUgaW4gdGhlIGJhY2tncm91bmQuIFBsZWFzZSByZWZyZXNoIHRvIHNlZSB0aGUgcmVzdWx0LidcclxuICAgICAgICAgICkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIHVzaW5nIHNjcmVlbiBJRFxyXG4gICAqIEBwYXJhbSBzY3JlZW5JZCBUaGUgc2NyZWVuIElEXHJcbiAgICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8gdXBkYXRlXHJcbiAgICogQHBhcmFtIG9iamVjdElkVG9TYXZlIE9wdGlvbmFsIG9iamVjdCBJRCB0byBzYXZlXHJcbiAgICogQHBhcmFtIGhlYWRlcnMgT3B0aW9uYWwgaGVhZGVyc1xyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgd2l0aCB1cGRhdGUgcmVzdWx0XHJcbiAgICovXHJcbiAgdXBkYXRlVXNpbmdTY3JlZW5JZChzY3JlZW5JZDogc3RyaW5nLCBkYXRhOiBhbnksIG9iamVjdElkVG9TYXZlPzogc3RyaW5nLCBoZWFkZXJzPzogYW55KSB7XHJcbiAgICBsZXQgb2JqZWN0SWQ6IHN0cmluZztcclxuXHJcbiAgICBpZiAoc2NyZWVuSWQpIHtcclxuICAgICAgY29uc3Qgc2NyZWVuOiBBcHBTY3JlZW4gPSB0aGlzLnNjcmVlbkhlbHBlci5nZXRTY3JlZW4oc2NyZWVuSWQpO1xyXG4gICAgICBjb25zdCBzY3JlZW5EYXRhU291cmNlID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXREYXRhU291cmNlUXVlcnlCeUlkT3JOYW1lKHNjcmVlbi5EYXRhU291cmNlUXVlcnkpO1xyXG4gICAgICBvYmplY3RJZCA9IHNjcmVlbkRhdGFTb3VyY2U/Lk9iamVjdElEX1Rvc2F2ZSB8fCAnJztcclxuICAgIH1cclxuXHJcbiAgICBpZiAob2JqZWN0SWRUb1NhdmUpIHtcclxuICAgICAgb2JqZWN0SWQgPSBvYmplY3RJZFRvU2F2ZTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy51cGRhdGVCeU9iamVjdElkKG9iamVjdElkISwgZGF0YSwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgdXNpbmcgRFNRIElEIHdpdGggY3VzdG9tIHRhYmxlIG5hbWUgYW5kIHF1ZXJ5IGZpZWxkc1xyXG4gICAqIFVzZXMgY3VzdG9tIHF1ZXJ5RmllbGRzQXJyYXkgZm9yIHdoZXJlIGNsYXVzZSBpbnN0ZWFkIG9mIHByaW1hcnkga2V5XHJcbiAgICogQHBhcmFtIGRzcUlkIFRoZSBEU1EgSURcclxuICAgKiBAcGFyYW0gZGF0YSBUaGUgZGF0YSB0byB1cGRhdGVcclxuICAgKiBAcGFyYW0gdGFibGVOYW1lIFRoZSB0YWJsZSBuYW1lXHJcbiAgICogQHBhcmFtIHF1ZXJ5RmllbGRzQXJyYXkgUXVlcnkgZmllbGRzIGFycmF5IGZvciBjdXN0b20gd2hlcmUgY2xhdXNlXHJcbiAgICogQHBhcmFtIGhlYWRlcnMgT3B0aW9uYWwgaGVhZGVyc1xyXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGUgd2l0aCB1cGRhdGUgcmVzdWx0XHJcbiAgICovXHJcbiAgdXBkYXRlVXNpbmdEU1EoZHNxSWQ6IHN0cmluZywgZGF0YTogYW55LCB0YWJsZU5hbWU/OiBzdHJpbmcsIHF1ZXJ5RmllbGRzQXJyYXk/OiBhbnksIGhlYWRlcnM/OiBhbnkpIHtcclxuICAgIGNvbnN0IHNjcmVlbkRhdGFTb3VyY2UgPSB0aGlzLm1ldGFkYXRhSGVscGVyLmdldERhdGFTb3VyY2VRdWVyeUJ5SWRPck5hbWUoZHNxSWQpO1xyXG4gICAgaWYgKCFzY3JlZW5EYXRhU291cmNlIHx8ICFkYXRhPy5kYXRhKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFwcE9iamVjdE1vZGVsID0gdGhpcy5tZXRhZGF0YUhlbHBlci5nZXRBcHBPYmplY3RCeUlkT3JOYW1lKHNjcmVlbkRhdGFTb3VyY2UuT2JqZWN0SURfVG9zYXZlIHx8ICcnKTtcclxuICAgIGlmICghYXBwT2JqZWN0TW9kZWwpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVXNlIHByb3ZpZGVkIHRhYmxlTmFtZSBvciBmYWxsYmFjayB0byBhcHBPYmplY3QncyB0YWJsZSBuYW1lXHJcbiAgICBjb25zdCBlbnRpdHlOYW1lID0gdGFibGVOYW1lIHx8IGFwcE9iamVjdE1vZGVsLlN5c3RlbURCVGFibGVOYW1lO1xyXG5cclxuICAgIGNvbnN0IHdoZXJlQ2xhdXNlID0gdGhpcy53aGVyZUNsYXVzZUhlbHBlci5iaW5kV2hlcmVDbGF1c2VGb3JVcGRhdGUoZW50aXR5TmFtZSwgcXVlcnlGaWVsZHNBcnJheSk7XHJcbiAgICBjb25zdCBkYXRhT2JqOiBhbnkgPSBjcmVhdGVEeW5hbWljRGF0YShkYXRhLmRhdGEpO1xyXG4gICAgcmVtb3ZlQmxhbmtWYWx1ZShkYXRhT2JqKTtcclxuXHJcbiAgICBjb25zdCByZXF1ZXN0Qm9keSA9IHtcclxuICAgICAgZW50aXR5TmFtZTogZW50aXR5TmFtZSxcclxuICAgICAgZmllbGRzOiBkYXRhT2JqLFxyXG4gICAgICB3aGVyZUNsYXVzZTogd2hlcmVDbGF1c2VcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgaGVhZGVyID0gZ2V0SGVhZGVycyhoZWFkZXJzKTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnB1dFRvU2VydmljZShcclxuICAgICAgQVBJU2VydmljZXMuY3J1ZFNlcnZpY2UsXHJcbiAgICAgIEFQSS5yZWNvcmRzVXBkYXRlLFxyXG4gICAgICByZXF1ZXN0Qm9keSxcclxuICAgICAgaGVhZGVyXHJcbiAgICApLnBpcGUoXHJcbiAgICAgIHN3aXRjaE1hcCgocmVzcG9uc2U6IENvbW1vbkFwaVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKCFyZXNwb25zZT8uSXNTdWNjZXNzKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdbVGFiVXBkYXRlU2VydmljZV0gVXBkYXRlIHVzaW5nIERTUSBmYWlsZWQ6JywgcmVzcG9uc2U/LkVycm9ycyk7XHJcbiAgICAgICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlPy5SZXN1bHQ/Lmxlbmd0aCkge1xyXG4gICAgICAgICAgcmV0dXJuIG9mKHJlc3BvbnNlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlPy5Db3JyZWxhdGlvbklkKSB7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5oYW5kbGVBc3luY1VwZGF0ZShyZXNwb25zZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gb2YocmVzcG9uc2UpO1xyXG4gICAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdbVGFiVXBkYXRlU2VydmljZV0gVXBkYXRlIHVzaW5nIERTUSBlcnJvcjonLCBlcnJvcik7XHJcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbn0iXX0=
@@ -3,10 +3,13 @@ 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
5
  import { API } from "../constants/api-constants";
6
+ import { API_URL, Workflow_URL } from "../../core/http-client/api-url.token";
6
7
  import * as i0 from "@angular/core";
7
8
  export class TabWorkflowService {
8
9
  constructor() {
9
10
  this.apiService = inject(ApiService);
11
+ this.api_url = inject(API_URL);
12
+ this.workflow_url = inject(Workflow_URL);
10
13
  }
11
14
  /**
12
15
  * Executes a TAB workflow.
@@ -15,10 +18,8 @@ export class TabWorkflowService {
15
18
  * @returns An observable of the workflow execution result.
16
19
  */
17
20
  executeTABWorkflow(payload, headers) {
18
- if (!headers) {
19
- headers = getHeaders(headers);
20
- }
21
- return this.apiService.postWorkflow(API.ExecuteWorkflow, payload, headers);
21
+ headers = getHeaders(headers);
22
+ return this.apiService.postByUrl(`${this.api_url}${API.ExecuteWorkflow}`, payload, { headers });
22
23
  }
23
24
  /**
24
25
  * Executes an ELSA workflow.
@@ -28,10 +29,7 @@ export class TabWorkflowService {
28
29
  */
29
30
  executeELSAWorkflow(endPoint, data) {
30
31
  const headers = getHeaders();
31
- if (headers) {
32
- return this.apiService.postWorkflow(endPoint, data, headers);
33
- }
34
- return null;
32
+ return this.apiService.postByUrl(`${this.workflow_url}${endPoint}`, data, { headers });
35
33
  }
36
34
  static { this.ɵfac = function TabWorkflowService_Factory(t) { return new (t || TabWorkflowService)(); }; }
37
35
  static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: TabWorkflowService, factory: TabWorkflowService.ɵfac, providedIn: 'root' }); }
@@ -40,4 +38,4 @@ export class TabWorkflowService {
40
38
  type: Injectable,
41
39
  args: [{ providedIn: 'root' }]
42
40
  }], null, null); })();
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXdvcmtmbG93LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvY3J1ZC90YWItd29ya2Zsb3cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBS2pELE1BQU0sT0FBTyxrQkFBa0I7SUFEL0I7UUFFbUIsZUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztLQTRCbEQ7SUExQkM7Ozs7O09BS0c7SUFDSCxrQkFBa0IsQ0FBQyxPQUFrQyxFQUFFLE9BQWE7UUFDbEUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsT0FBTyxHQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxtQkFBbUIsQ0FBQyxRQUFnQixFQUFFLElBQVk7UUFDaEQsTUFBTSxPQUFPLEdBQUcsVUFBVSxFQUFFLENBQUM7UUFDN0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO21GQTVCVSxrQkFBa0I7dUVBQWxCLGtCQUFrQixXQUFsQixrQkFBa0IsbUJBREwsTUFBTTs7aUZBQ25CLGtCQUFrQjtjQUQ5QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5cclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL2h0dHAtY2xpZW50L2FwaS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IGdldEhlYWRlcnMgfSBmcm9tIFwiLi4vdXRpbHMvcmVxLXJlcy51dGlsXCI7XHJcbmltcG9ydCB7IEFQSSB9IGZyb20gXCIuLi9jb25zdGFudHMvYXBpLWNvbnN0YW50c1wiO1xyXG5pbXBvcnQgeyBleGVjdXRlVEFCV29ya2Zsb3dQYXlsb2FkIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvY29tbW9uLmludGVyZmFjZVwiO1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBUYWJXb3JrZmxvd1NlcnZpY2Uge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpU2VydmljZSA9IGluamVjdChBcGlTZXJ2aWNlKTtcclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZXMgYSBUQUIgd29ya2Zsb3cuXHJcbiAgICogQHBhcmFtIGVuZFBvaW50IFRoZSBlbmRwb2ludCBmb3IgdGhlIHdvcmtmbG93LlxyXG4gICAqIEBwYXJhbSBkYXRhIFRoZSBkYXRhIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cclxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSB3b3JrZmxvdyBleGVjdXRpb24gcmVzdWx0LlxyXG4gICAqL1xyXG4gIGV4ZWN1dGVUQUJXb3JrZmxvdyhwYXlsb2FkOiBleGVjdXRlVEFCV29ya2Zsb3dQYXlsb2FkLCBoZWFkZXJzPzogYW55KSB7XHJcbiAgICBpZiAoIWhlYWRlcnMpIHtcclxuICAgICAgaGVhZGVycyA9Z2V0SGVhZGVycyhoZWFkZXJzKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdFdvcmtmbG93KEFQSS5FeGVjdXRlV29ya2Zsb3csIHBheWxvYWQsIGhlYWRlcnMpOyAgIFxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZXMgYW4gRUxTQSB3b3JrZmxvdy5cclxuICAgKiBAcGFyYW0gZW5kUG9pbnQgVGhlIGVuZHBvaW50IGZvciB0aGUgd29ya2Zsb3cuXHJcbiAgICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxyXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIHdvcmtmbG93IGV4ZWN1dGlvbiByZXN1bHQuXHJcbiAgICovXHJcbiAgZXhlY3V0ZUVMU0FXb3JrZmxvdyhlbmRQb2ludDogc3RyaW5nLCBkYXRhOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3RXb3JrZmxvdyhlbmRQb2ludCwgZGF0YSwgaGVhZGVycyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn1cclxuIl19
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXdvcmtmbG93LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL3NyYy9saWIvdGFiLWNvcmUtdXRpbGl0eS9hcHAvY3J1ZC90YWItd29ya2Zsb3cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7QUFHN0UsTUFBTSxPQUFPLGtCQUFrQjtJQUQvQjtRQUVtQixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLFlBQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUIsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7S0F1QnREO0lBckJDOzs7OztPQUtHO0lBQ0gsa0JBQWtCLENBQUMsT0FBa0MsRUFBRSxPQUFhO1FBQ2xFLE9BQU8sR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLGVBQWUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsbUJBQW1CLENBQUMsUUFBZ0IsRUFBRSxJQUFZO1FBQ2hELE1BQU0sT0FBTyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUM7SUFDdkYsQ0FBQzttRkF6QlUsa0JBQWtCO3VFQUFsQixrQkFBa0IsV0FBbEIsa0JBQWtCLG1CQURMLE1BQU07O2lGQUNuQixrQkFBa0I7Y0FEOUIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuXHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFwaVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS9odHRwLWNsaWVudC9hcGkuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBnZXRIZWFkZXJzIH0gZnJvbSBcIi4uL3V0aWxzL3JlcS1yZXMudXRpbFwiO1xyXG5pbXBvcnQgeyBBUEkgfSBmcm9tIFwiLi4vY29uc3RhbnRzL2FwaS1jb25zdGFudHNcIjtcclxuaW1wb3J0IHsgZXhlY3V0ZVRBQldvcmtmbG93UGF5bG9hZCB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL2NvbW1vbi5pbnRlcmZhY2VcIjtcclxuaW1wb3J0IHsgQVBJX1VSTCwgV29ya2Zsb3dfVVJMIH0gZnJvbSBcIi4uLy4uL2NvcmUvaHR0cC1jbGllbnQvYXBpLXVybC50b2tlblwiO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIFRhYldvcmtmbG93U2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlTZXJ2aWNlID0gaW5qZWN0KEFwaVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBpX3VybCA9IGluamVjdChBUElfVVJMKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHdvcmtmbG93X3VybCA9IGluamVjdChXb3JrZmxvd19VUkwpO1xyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlcyBhIFRBQiB3b3JrZmxvdy5cclxuICAgKiBAcGFyYW0gZW5kUG9pbnQgVGhlIGVuZHBvaW50IGZvciB0aGUgd29ya2Zsb3cuXHJcbiAgICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxyXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIHdvcmtmbG93IGV4ZWN1dGlvbiByZXN1bHQuXHJcbiAgICovXHJcbiAgZXhlY3V0ZVRBQldvcmtmbG93KHBheWxvYWQ6IGV4ZWN1dGVUQUJXb3JrZmxvd1BheWxvYWQsIGhlYWRlcnM/OiBhbnkpIHtcclxuICAgIGhlYWRlcnMgPSBnZXRIZWFkZXJzKGhlYWRlcnMpO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0QnlVcmwoYCR7dGhpcy5hcGlfdXJsfSR7QVBJLkV4ZWN1dGVXb3JrZmxvd31gLCBwYXlsb2FkLCB7aGVhZGVyc30pOyAgIFxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZXMgYW4gRUxTQSB3b3JrZmxvdy5cclxuICAgKiBAcGFyYW0gZW5kUG9pbnQgVGhlIGVuZHBvaW50IGZvciB0aGUgd29ya2Zsb3cuXHJcbiAgICogQHBhcmFtIGRhdGEgVGhlIGRhdGEgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxyXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIHdvcmtmbG93IGV4ZWN1dGlvbiByZXN1bHQuXHJcbiAgICovXHJcbiAgZXhlY3V0ZUVMU0FXb3JrZmxvdyhlbmRQb2ludDogc3RyaW5nLCBkYXRhOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3RCeVVybChgJHt0aGlzLndvcmtmbG93X3VybH0ke2VuZFBvaW50fWAsIGRhdGEsIHtoZWFkZXJzfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,16 +1,16 @@
1
1
  export var QueryType;
2
2
  (function (QueryType) {
3
3
  QueryType[QueryType["Select"] = 0] = "Select";
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";
4
+ // Insert,
5
+ // Update,
6
+ // Delete,
7
+ QueryType[QueryType["Upsert"] = 1] = "Upsert";
8
+ QueryType[QueryType["BulkUpdate"] = 2] = "BulkUpdate";
9
+ QueryType[QueryType["BulkInsert"] = 3] = "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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9lbnVtcy9xdWVyeS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFNBUVg7QUFSRCxXQUFZLFNBQVM7SUFDbkIsNkNBQU0sQ0FBQTtJQUNOLDZDQUFNLENBQUE7SUFDTiw2Q0FBTSxDQUFBO0lBQ04sNkNBQU0sQ0FBQTtJQUNOLDZDQUFNLENBQUE7SUFDTixxREFBVSxDQUFBO0lBQ1YscURBQVUsQ0FBQTtBQUNaLENBQUMsRUFSVyxTQUFTLEtBQVQsU0FBUyxRQVFwQjtBQUVELE1BQU0sQ0FBTixJQUFZLFFBR1g7QUFIRCxXQUFZLFFBQVE7SUFDbEIsK0NBQVksQ0FBQTtJQUNaLGlEQUFhLENBQUE7QUFDZixDQUFDLEVBSFcsUUFBUSxLQUFSLFFBQVEsUUFHbkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBRdWVyeVR5cGUge1xyXG4gIFNlbGVjdCxcclxuICBJbnNlcnQsXHJcbiAgVXBkYXRlLFxyXG4gIERlbGV0ZSxcclxuICBVcHNlcnQsXHJcbiAgQnVsa1VwZGF0ZSxcclxuICBCdWxrSW5zZXJ0LFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBKb2luVHlwZSB7XHJcbiAgTGVmdEpvaW4gPSAxLFxyXG4gIFJpZ2h0Sm9pbiA9IDIsXHJcbn1cclxuIl19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9lbnVtcy9xdWVyeS5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLFNBUVg7QUFSRCxXQUFZLFNBQVM7SUFDbkIsNkNBQU0sQ0FBQTtJQUNOLFVBQVU7SUFDVixVQUFVO0lBQ1YsVUFBVTtJQUNWLDZDQUFNLENBQUE7SUFDTixxREFBVSxDQUFBO0lBQ1YscURBQVUsQ0FBQTtBQUNaLENBQUMsRUFSVyxTQUFTLEtBQVQsU0FBUyxRQVFwQjtBQUVELE1BQU0sQ0FBTixJQUFZLFFBR1g7QUFIRCxXQUFZLFFBQVE7SUFDbEIsK0NBQVksQ0FBQTtJQUNaLGlEQUFhLENBQUE7QUFDZixDQUFDLEVBSFcsUUFBUSxLQUFSLFFBQVEsUUFHbkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBRdWVyeVR5cGUge1xyXG4gIFNlbGVjdCxcclxuICAvLyBJbnNlcnQsXHJcbiAgLy8gVXBkYXRlLFxyXG4gIC8vIERlbGV0ZSxcclxuICBVcHNlcnQsXHJcbiAgQnVsa1VwZGF0ZSxcclxuICBCdWxrSW5zZXJ0LFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBKb2luVHlwZSB7XHJcbiAgTGVmdEpvaW4gPSAxLFxyXG4gIFJpZ2h0Sm9pbiA9IDIsXHJcbn1cclxuIl19