@techextensor/tab-core-utility 2.2.114 → 2.2.119

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.
@@ -22,12 +22,9 @@ export class TabGetService {
22
22
  * @param data - Object containing AppObjectName and DSQName
23
23
  * @returns Response from the API
24
24
  */
25
- executeRAWDSQWithName(data) {
26
- const headers = getHeaders();
27
- if (headers) {
28
- return this.apiService.post(`${API.getDSQ}/${data.AppObjectName}/${data.DSQName}`, data, headers);
29
- }
30
- return null;
25
+ executeRAWDSQWithName(data, headers) {
26
+ const header = getHeaders(headers);
27
+ return this.apiService.post(`${API.getDSQ}/${data.AppObjectName}/${data.DSQName}`, data, header);
31
28
  }
32
29
  /**
33
30
  * Get Record
@@ -168,6 +165,9 @@ export class TabGetService {
168
165
  }).pipe(switchMap((res) => {
169
166
  if (res.StatusCode === '200') {
170
167
  const Configuration = JSON.parse(res.Result[0].Configuration || '{}');
168
+ if (Configuration.WhereClause?.Filters) {
169
+ Configuration.WhereClause.Filters = this.removeWhereClauseForEmptyParams(Configuration.WhereClause.Filters, parameters || {});
170
+ }
171
171
  return this.selectExecutor(Configuration, parameters);
172
172
  }
173
173
  else {
@@ -175,6 +175,20 @@ export class TabGetService {
175
175
  }
176
176
  }));
177
177
  }
178
+ removeWhereClauseForEmptyParams(filters, parameters) {
179
+ return filters.filter((filter) => {
180
+ if (filter.ValueType === FilterValueType.Parameter) {
181
+ const parameterName = filter.Value;
182
+ if (parameters?.hasOwnProperty(parameterName) && parameters[parameterName] === '') {
183
+ return false; // Remove filter
184
+ }
185
+ }
186
+ if (Object.keys(parameters || {}).length === 0 && filter.ValueType === FilterValueType.Parameter) {
187
+ return false; // Remove filter
188
+ }
189
+ return true; // Keep filter
190
+ });
191
+ }
178
192
  getTestConnection(connectionId, params) {
179
193
  if (connectionId) {
180
194
  const headers = getHeaders();
@@ -363,4 +377,4 @@ export class TabGetService {
363
377
  type: Injectable,
364
378
  args: [{ providedIn: 'root' }]
365
379
  }], null, null); })();
366
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdldC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NydWQvdGFiLWdldC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLDBCQUEwQixHQUMzQixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBR2pDLE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBRW1CLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztLQXNaaEQ7SUFwWkM7Ozs7T0FJRztJQUNILHFCQUFxQixDQUFDLElBQVM7UUFDN0IsTUFB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eEMsSUFBSTtZQUNKLDhCQUE4QjtZQUM5QixPQUFPLENBQ1IsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZ0NBQWdDLENBQUMsSUFBUztRQUN4QyxNQUFNLE9BQU8sR0FBRyxVQUFVLEVBQUUsQ0FBQztRQUM3QixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ1osd0NBQXdDO1lBQ3hDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJO1lBQ3pCLDJEQUEyRDtZQUMzRCxHQUFHLEdBQUcsQ0FBQyxnQ0FBZ0MsRUFBRSxFQUN6QyxJQUFJO1lBQ0osOEJBQThCO1lBQzlCLE9BQU8sQ0FDUixDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs4RUF2WlUsYUFBYTt1RUFBYixhQUFhLFdBQWIsYUFBYSxtQkFEQSxNQUFNOztpRkFDbkIsYUFBYTtjQUR6QixVQUFVO2VBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xyXG5cclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBcGlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9odHRwLWNsaWVudC9hcGkuc2VydmljZSc7XHJcbmltcG9ydCB7IERTUUhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvY29tbW9uL2RzcS5oZWxwZXJzJztcclxuaW1wb3J0IHsgZ2V0SGVhZGVycyB9IGZyb20gJy4uL3V0aWxzL3JlcS1yZXMudXRpbCc7XHJcbmltcG9ydCB7IEFQSSB9IGZyb20gJy4uL2NvbnN0YW50cy9hcGktY29uc3RhbnRzJztcclxuaW1wb3J0IHsgZ2V0QXBwT2JqZWN0IH0gZnJvbSAnLi4vdXRpbHMvdGFiLWFwcC51dGlsJztcclxuaW1wb3J0IHsgQ29tbW9uIH0gZnJvbSAnLi4vY29uc3RhbnRzL2NvbW1vbic7XHJcbmltcG9ydCB7IEFQSVNlbGVjdFF1ZXJ5IH0gZnJvbSAnLi4vbW9kZWxzL2FwaS1xdWVyeS5jbGFzcyc7XHJcbmltcG9ydCB7IEZpbHRlclZhbHVlVHlwZSB9IGZyb20gJy4uL2VudW1zL2RzcS5lbnVtJztcclxuaW1wb3J0IHsgUXVlcnlUeXBlIH0gZnJvbSAnLi4vZW51bXMvcXVlcnkuZW51bSc7XHJcbmltcG9ydCB7XHJcbiAgQXBwT2JqZWN0c0NvbnN0YW50cyxcclxuICBEYXRhU291cmNlUXVlcmllc0NvbnN0YW50cyxcclxufSBmcm9tICcuLi9jb25zdGFudHMvYXBwLW9iamVjdC1jb25zdGFudHMnO1xyXG5pbXBvcnQgeyBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBUYWJHZXRTZXJ2aWNlIHtcclxuICBwcml2YXRlIHJlYWRvbmx5IGFwaVNlcnZpY2UgPSBpbmplY3QoQXBpU2VydmljZSk7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkc3FIZWxwZXIgPSBpbmplY3QoRFNRSGVscGVyKTtcclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZSBSQVcgRFNRIHdpdGggTmFtZVxyXG4gICAqIEBwYXJhbSBkYXRhIC0gT2JqZWN0IGNvbnRhaW5pbmcgQXBwT2JqZWN0TmFtZSBhbmQgRFNRTmFtZVxyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGV4ZWN1dGVSQVdEU1FXaXRoTmFtZShkYXRhOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChcclxuICAgICAgICBgJHtBUEkuZ2V0RFNRfS8ke2RhdGEuQXBwT2JqZWN0TmFtZX0vJHtkYXRhLkRTUU5hbWV9YCxcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIGhlYWRlcnNcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IFJlY29yZFxyXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBQYXJhbWV0ZXJzIGZvciB0aGUgcmVxdWVzdFxyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGdldFJlY29yZChwYXJhbXM6IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoYCR7QVBJLmdldHJlY29yZH1gLCBwYXJhbXMsIGhlYWRlcnMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlIFJhdyBTUUxcclxuICAgKiBAcGFyYW0gZGF0YSAtIERhdGEgZm9yIHRoZSByZXF1ZXN0XHJcbiAgICogQHJldHVybnMgUmVzcG9uc2UgZnJvbSB0aGUgQVBJXHJcbiAgICovXHJcbiAgZXhlY3V0ZVJhd1NxbChkYXRhOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChgJHtBUEkucmF3U1FMfSR7ZGF0YX1gLCAnJywgaGVhZGVycyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBIaXN0b3J5XHJcbiAgICogQHBhcmFtIGFwcE9iamVjdElkIC0gSUQgb2YgdGhlIGFwcGxpY2F0aW9uIG9iamVjdFxyXG4gICAqIEBwYXJhbSByZWNvcmRJZHMgLSBBcnJheSBvZiByZWNvcmQgSURzXHJcbiAgICogQHJldHVybnMgUmVzcG9uc2UgZnJvbSB0aGUgQVBJXHJcbiAgICovXHJcbiAgZ2V0SGlzdG9yeShhcHBPYmplY3RJZDogc3RyaW5nLCByZWNvcmRJZHM6IHN0cmluZ1tdKTogYW55IHtcclxuICAgIGNvbnN0IGRhdGE6IGFueSA9IHt9O1xyXG4gICAgaWYgKGFwcE9iamVjdElkICYmIHJlY29yZElkcykge1xyXG4gICAgICBjb25zdCBhcHBPYmplY3ROYW1lID0gZ2V0QXBwT2JqZWN0KGFwcE9iamVjdElkKT8uT2JqZWN0TmFtZTtcclxuICAgICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgICAgaWYgKGFwcE9iamVjdE5hbWUgJiYgaGVhZGVycykge1xyXG4gICAgICAgIGRhdGEuT2JqZWN0TmFtZSA9IGFwcE9iamVjdE5hbWU7XHJcbiAgICAgICAgZGF0YS5SZWNvcmRJZHMgPSByZWNvcmRJZHM7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KGAke0FQSS5nZXRIaXN0b3J5fWAsIGRhdGEsIGhlYWRlcnMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENoYW5nZSBQYXNzd29yZFxyXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0YSBmb3IgY2hhbmdpbmcgcGFzc3dvcmRcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBjaGFuZ2VQYXNzd29yZChkYXRhOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChgJHtBUEkuY2hhbmdlUGFzc3dvcmR9YCwgZGF0YSwgaGVhZGVycyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXNldCBQYXNzd29yZFxyXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0YSBmb3IgcmVzZXR0aW5nIHBhc3N3b3JkXHJcbiAgICogQHJldHVybnMgUmVzcG9uc2UgZnJvbSB0aGUgQVBJXHJcbiAgICovXHJcbiAgcmVzZXRQYXNzd29yZChkYXRhOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgIGFwcGxpY2F0aW9uQ29kZTogQ29tbW9uLmFwcGxpY2F0aW9uQ29kZSxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KGAke0FQSS5yZXN0cGFzc3dvcmR9YCwgZGF0YSwgaGVhZGVycyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQTUpBWSBJbXBvcnRcclxuICAgKiBAcGFyYW0gZGF0YSAtIERhdGEgZm9yIFBNSkFZIGltcG9ydFxyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIHBtamF5SW1wb3J0KGRhdGE6IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KGAke0FQSS5wbWpheUltcG9ydH1gLCBkYXRhLCBoZWFkZXJzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4ZWN1dGVzIGEgc2VsZWN0IHF1ZXJ5IHdpdGggb3B0aW9uYWwgcGFyYW1ldGVyc1xyXG4gICAqIEBwYXJhbSBkYXRhIC0gVGhlIHNlbGVjdCBxdWVyeSBkYXRhXHJcbiAgICogQHBhcmFtIHBhcmFtZXRlcnMgLSBPcHRpb25hbCBwYXJhbWV0ZXJzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHF1ZXJ5XHJcbiAgICogQHJldHVybnMgUmVzdWx0IG9mIHRoZSBzZWxlY3QgcXVlcnkgZXhlY3V0aW9uXHJcbiAgICovXHJcbiAgc2VsZWN0RXhlY3V0b3IoZGF0YTogQVBJU2VsZWN0UXVlcnksIHBhcmFtZXRlcnM/OiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKHBhcmFtZXRlcnMgJiYgT2JqZWN0LmtleXMocGFyYW1ldGVycykubGVuZ3RoKSB7XHJcbiAgICAgIGRhdGEuV2hlcmVDbGF1c2UuRmlsdGVyTG9naWMgPSBkYXRhLldoZXJlQ2xhdXNlLkZpbHRlckxvZ2ljIHx8ICdbXSc7XHJcbiAgICAgIGRhdGEuV2hlcmVDbGF1c2UuRmlsdGVycyA9IGRhdGEuV2hlcmVDbGF1c2UuRmlsdGVycyB8fCBbXTtcclxuICAgICAgZGF0YS5XaGVyZUNsYXVzZS5TUUxRdWVyeSA9IGRhdGEuV2hlcmVDbGF1c2UuU1FMUXVlcnkgfHwgJyc7XHJcbiAgICAgIC8qKlxyXG4gICAgICAgKiBSZXBsYWNlcyB2YWx1ZXMgZnJvbSBwYXJhbWV0ZXJzIGlmIG1hdGNoZWQgYW5kIGluIGZvcm1hdCBvZiB7e2tleX19LlxyXG4gICAgICAgKiBFeGFtcGxlOiBpZiBmaWx0ZXIuVmFsdWUgaXMgXCJ7e3VzZXJJZH19XCIgYW5kXHJcbiAgICAgICAqIHRoaXMuX3ZhbHVlLnBhcmFtZXRlcnMudXNlcklkIGlzIDEyMywgdGhlbiBmaWx0ZXIuVmFsdWUgd2lsbCBiZSByZXBsYWNlZCB3aXRoXHJcbiAgICAgICAqIFwiMTIzXCIuXHJcbiAgICAgICAqL1xyXG4gICAgICBkYXRhLldoZXJlQ2xhdXNlLkZpbHRlcnMuZm9yRWFjaCgoZmlsdGVyOiBhbnkpID0+IHtcclxuICAgICAgICAvLyBmaWx0ZXIuVmFsdWVUeXBlIGlzIDEgKGxpdGVyYWwpXHJcbiAgICAgICAgaWYgKGZpbHRlci5WYWx1ZSAmJiBmaWx0ZXIuVmFsdWVUeXBlID09IEZpbHRlclZhbHVlVHlwZS5MaXRlcmFsKSB7XHJcbiAgICAgICAgICBmaWx0ZXIuVmFsdWUgPSBmaWx0ZXIuVmFsdWUucmVwbGFjZShcclxuICAgICAgICAgICAgL3t7KFtefV0rKX19L2csXHJcbiAgICAgICAgICAgIChtYXRjaDogc3RyaW5nLCBrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyc1trZXldO1xyXG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpZiB2YWx1ZVR5cGUgPSAyIChQYXJhbWV0ZXJzKVxyXG4gICAgICAgIC8vIHRoZW4gd2UgbmVlZCB0byByZXBsYWNlIHRoZSB2YWx1ZSB3aXRoIHBhcmFtZXRlcnMgYW5kIGNoYW5nZSB0aGUgdmFsdWVUeXBlIHRvIDEgKExpdGVyYWwpXHJcbiAgICAgICAgZWxzZSBpZiAoZmlsdGVyLlZhbHVlVHlwZSA9PSBGaWx0ZXJWYWx1ZVR5cGUuUGFyYW1ldGVyKSB7XHJcbiAgICAgICAgICBmaWx0ZXIuVmFsdWUgPSBmaWx0ZXIuVmFsdWUucmVwbGFjZShcclxuICAgICAgICAgICAgLyhbXn1dKykvZyxcclxuICAgICAgICAgICAgKG1hdGNoOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbWV0ZXJzW2tleV07XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlICE9PSB1bmRlZmluZWQgPyB2YWx1ZSA6IG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBmaWx0ZXIuVmFsdWVUeXBlID0gRmlsdGVyVmFsdWVUeXBlLkxpdGVyYWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgKGRhdGE/LldoZXJlQ2xhdXNlPy5GaWx0ZXJzIHx8IFtdKS5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBlbGVtZW50LlZhbHVlVHlwZSA9PT0gRmlsdGVyVmFsdWVUeXBlLlBhcmFtZXRlciAmJlxyXG4gICAgICAgICAgcGFyYW1ldGVyc1tlbGVtZW50LkZpZWxkSURdXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBlbGVtZW50LlZhbHVlID0gcGFyYW1ldGVyc1tlbGVtZW50LkZpZWxkSURdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5kc3FIZWxwZXIuZXhlY3V0ZVF1ZXJ5KGRhdGEsIFF1ZXJ5VHlwZS5TZWxlY3QpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZXMgYSBzZWxlY3QgcXVlcnkgYnkgaXRzIElELCB1c2luZyB0aGUgcHJvdmlkZWQgcGFyYW1ldGVycy5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBzZWxlY3RRdWVyeUlkIC0gVGhlIElEIG9mIHRoZSBzZWxlY3QgcXVlcnkgdG8gYmUgZXhlY3V0ZWQuXHJcbiAgICogQHBhcmFtIHBhcmFtZXRlcnMgLSBPcHRpb25hbCBwYXJhbWV0ZXJzIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHF1ZXJ5LlxyXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIHNlbGVjdCBxdWVyeSBleGVjdXRpb24uXHJcbiAgICogQHRocm93cyBBbiBlcnJvciBpZiB0aGUgQVBJIHJlc3BvbnNlIHN0YXR1cyBjb2RlIGlzIG5vdCAnMjAwJy5cclxuICAgKi9cclxuICBleGVjdXRlU2VsZWN0UXVlcnlCeUlkKHNlbGVjdFF1ZXJ5SWQ6IHN0cmluZywgcGFyYW1ldGVycz86IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5leGVjdXRlUkFXRFNRV2l0aE5hbWUoe1xyXG4gICAgICBBcHBPYmplY3ROYW1lOiBBcHBPYmplY3RzQ29uc3RhbnRzLlRBQkRfUXVlcmllcyxcclxuICAgICAgRFNRTmFtZTogRGF0YVNvdXJjZVF1ZXJpZXNDb25zdGFudHMuRGV0YWlsX1RBQkRfUXVlcmllcyxcclxuICAgICAgUmVxdG9rZW5zOiB7XHJcbiAgICAgICAgSUQ6IHNlbGVjdFF1ZXJ5SWQsXHJcbiAgICAgIH0sXHJcbiAgICB9KS5waXBlKFxyXG4gICAgICBzd2l0Y2hNYXAoKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlcy5TdGF0dXNDb2RlID09PSAnMjAwJykge1xyXG4gICAgICAgICAgY29uc3QgQ29uZmlndXJhdGlvbiA9IEpTT04ucGFyc2UocmVzLlJlc3VsdFswXS5Db25maWd1cmF0aW9uIHx8ICd7fScpO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0RXhlY3V0b3IoQ29uZmlndXJhdGlvbiwgcGFyYW1ldGVycyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihyZXMuTWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldFRlc3RDb25uZWN0aW9uKGNvbm5lY3Rpb25JZDogYW55LCBwYXJhbXM/OiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKGNvbm5lY3Rpb25JZCkge1xyXG4gICAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0KFxyXG4gICAgICAgICAgYCR7QVBJLnRlc3RDb25uZWN0aW9ufSR7Y29ubmVjdGlvbklkfWAsXHJcbiAgICAgICAgICBwYXJhbXMsXHJcbiAgICAgICAgICBoZWFkZXJzXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIGdldFBlcmZvcm1WYWxpZGF0aW9uKGNvbm5lY3Rpb25JZDogYW55LCBwYXJhbXM/OiBhbnkpOiBhbnkge1xyXG4gICAgaWYgKGNvbm5lY3Rpb25JZCkge1xyXG4gICAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0KFxyXG4gICAgICAgICAgYCR7QVBJLnBlcmZvcm1WYWxpZGF0aW9ufSR7Y29ubmVjdGlvbklkfWAsXHJcbiAgICAgICAgICBwYXJhbXMsXHJcbiAgICAgICAgICBoZWFkZXJzXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHRhYiBjb21wb25lbnRzIGZvciB0aGUgZ2l2ZW4gdGVuYW50XHJcbiAgICogQHBhcmFtIGNvbm5lY3Rpb25JZCBUaGUgSUQgb2YgdGhlIGNvbm5lY3Rpb25cclxuICAgKiBAcmV0dXJucyBBbiBvYnNlcnZhYmxlIG9mIHRoZSByZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBzZXRUYWJDb21wb25lbnRzRm9yVGVuYW50KGNvbm5lY3Rpb25JZDogc3RyaW5nLCBkYXRhPzogYW55KTogYW55IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICAvLyBTZXQgdGhlIHRhYiBjb21wb25lbnRzIGZvciB0aGUgdGVuYW50XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChcclxuICAgICAgICAvLyBBUEkgZW5kcG9pbnQgZm9yIHNldHRpbmcgdGFiIGNvbXBvbmVudHNcclxuICAgICAgICBgJHtBUEkuc2V0VGFiQ29tcG9uZW50c30ke2Nvbm5lY3Rpb25JZH1gLFxyXG4gICAgICAgIGRhdGEsXHJcbiAgICAgICAgLy8gVGhlIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0XHJcbiAgICAgICAgaGVhZGVyc1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgZm9ybSBjb25maWd1cmF0aW9uIGZvciBhIGNvbW1vbiBmaWx0ZXIgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGFwcGxpY2F0aW9uIG9iamVjdCBJRC5cclxuICAgKiBAcGFyYW0gYXBwT2JqZWN0SWQgLSBUaGUgSUQgb2YgdGhlIGFwcGxpY2F0aW9uIG9iamVjdC5cclxuICAgKiBAcGFyYW0gcGFyYW1zIC0gT3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIHJlcXVlc3QuXHJcbiAgICogQHJldHVybnMgVGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSSBvciBudWxsIGlmIGhlYWRlcnMgYXJlIHVuYXZhaWxhYmxlLlxyXG4gICAqL1xyXG4gIGdldEJ1aWxkRm9ybUlPRm9yQ29tbW9uRmlsdGVyKGFwcE9iamVjdElkOiBzdHJpbmcsIHBhcmFtcz86IGFueSkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0KFxyXG4gICAgICAgIGAke0FQSS5CdWlsZEZvcm1JT0NvbXBvbmVudHN9JHthcHBPYmplY3RJZH0mVHlwZT1Db21tb25GaWx0ZXJgLFxyXG4gICAgICAgIHBhcmFtcyxcclxuICAgICAgICBoZWFkZXJzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyBhIGZvcm0gY29uZmlndXJhdGlvbiBmb3IgYSBidWxrIHVwZGF0ZSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgYXBwbGljYXRpb24gb2JqZWN0IElELlxyXG4gICAqIEBwYXJhbSBhcHBPYmplY3RJZCAtIFRoZSBJRCBvZiB0aGUgYXBwbGljYXRpb24gb2JqZWN0LlxyXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciB0aGUgcmVxdWVzdC5cclxuICAgKiBAcmV0dXJucyBUaGUgcmVzcG9uc2UgZnJvbSB0aGUgQVBJIG9yIG51bGwgaWYgaGVhZGVycyBhcmUgdW5hdmFpbGFibGUuXHJcbiAgICovXHJcbiAgZ2V0QnVpbGRGb3JtSU9Gb3JCdWxrVXBkYXRlKGFwcE9iamVjdElkOiBzdHJpbmcsIHBhcmFtcz86IGFueSkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0KFxyXG4gICAgICAgIGAke0FQSS5CdWlsZEZvcm1JT0NvbXBvbmVudHN9JHthcHBPYmplY3RJZH0mVHlwZT1CdWxrVXBkYXRlYCxcclxuICAgICAgICBwYXJhbXMsXHJcbiAgICAgICAgaGVhZGVyc1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyAvKipcclxuICAvLyAgKiBHZXQgUmVzb3VyY2UgTGFuZ3VhZ2UgQnkgTGFuZ3VhZ2UgQ29kZVxyXG4gIC8vICAqIEBwYXJhbSBsYW5ndWFnZUNvZGUgLSBMYW5ndWFnZSBDb2RlXHJcbiAgLy8gICogQHJldHVybnMgUmVzcG9uc2UgZnJvbSB0aGUgQVBJXHJcbiAgLy8gICovXHJcbiAgLy8gZ2V0UmVzb3VyY2VMYW5ndWFnZUJ5TGFuZ3VhZ2VDb2RlKGxhbmd1YWdlQ29kZTogbnVtYmVyKTogYW55IHtcclxuICAvLyAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgLy8gICBpZiAoaGVhZGVycykge1xyXG4gIC8vICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoXHJcbiAgLy8gICAgICAgYCR7QVBJLmxhbmd1YWdlUmVzb3VyY2V9YCxcclxuICAvLyAgICAgICB7IExhbmd1YWdlQ29kZTogbGFuZ3VhZ2VDb2RlIH0sXHJcbiAgLy8gICAgICAgaGVhZGVyc1xyXG4gIC8vICAgICApO1xyXG4gIC8vICAgfVxyXG4gIC8vICAgcmV0dXJuIG51bGw7XHJcbiAgLy8gfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgU2VhcmNoIERhdGFcclxuICAgKiBAcGFyYW0gc2VhcmNoUXVlcnkgLSBTZWFyY2ggUXVlcnkgc3RyaW5nXHJcbiAgICogQHBhcmFtIGxpbWl0IC0gTGltaXQgb2Ygc2VhcmNoIHJlc3VsdHNcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBnZXRTZWFyY2hEYXRhKHNlYXJjaFF1ZXJ5OiBzdHJpbmcsIGxpbWl0OiBudW1iZXIsIHBhcmFtcz86IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoXHJcbiAgICAgICAgYCR7QVBJLnNlYXJjaH0/c2VhcmNoUXVlcnk9JHtzZWFyY2hRdWVyeX0mbGltaXQ9JHtsaW1pdH1gLFxyXG4gICAgICAgIHBhcmFtcyxcclxuICAgICAgICBoZWFkZXJzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluc2VydCBTY3JlZW4gUGVyZm9ybWFuY2UgU3RhdGlzdGljc1xyXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0YSB0byBpbnNlcnRcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBpbnNlcnRTY3JlZW5QZXJmb3JtYW5jZVN0YXRpc3RpY3MoZGF0YTogYW55KTogYW55IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICAvLyBTZXQgdGhlIHRhYiBjb21wb25lbnRzIGZvciB0aGUgdGVuYW50XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChcclxuICAgICAgICAvLyBBUEkgZW5kcG9pbnQgZm9yIGluc2VydGluZyBzY3JlZW4gcGVyZm9ybWFuY2Ugc3RhdGlzdGljc1xyXG4gICAgICAgIGAke0FQSS5JbnNlcnRTY3JlZW5QZXJmb3JtYW5jZUFuYWx5dGljc31gLFxyXG4gICAgICAgIGRhdGEsXHJcbiAgICAgICAgLy8gVGhlIGhlYWRlcnMgZm9yIHRoZSByZXF1ZXN0XHJcbiAgICAgICAgaGVhZGVyc1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlcyBhbiBIVFRQIHJlcXVlc3Qgd2l0aCB0aGUgc3BlY2lmaWVkIG1ldGhvZCwgVVJMLCBoZWFkZXJzLCBhbmQgYm9keS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBmdWxsVXJsIC1UaGUgZnVsbCBVUkwgb2YgdGhlIHJlcXVlc3QgY29udGFpbmluZyB0aGUgcXVlcnkgcGFyYW1ldGVycy5cclxuICAgKiBAcGFyYW0gbWV0aG9kIC0gVGhlIEhUVFAgbWV0aG9kIHRvIGJlIHVzZWQgKCdHRVQnLCAnUE9TVCcsICdQVVQnLCAnREVMRVRFJykuXHJcbiAgICogQHBhcmFtIGhlYWRlcnMgLSBUaGUgaGVhZGVycyB0byBpbmNsdWRlIGluIHRoZSByZXF1ZXN0LlxyXG4gICAqIEBwYXJhbSBib2R5IC0gVGhlIGJvZHkgY29udGVudCBmb3IgbWV0aG9kcyBsaWtlIFBPU1QgYW5kIFBVVC5cclxuICAgKiBAcmV0dXJucyBUaGUgQVBJIHJlc3BvbnNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHJlcXVlc3QuXHJcbiAgICovXHJcbiAgZXhlY3V0ZUh0dHBSZXF1ZXN0KFxyXG4gICAgZnVsbFVybDogYW55LFxyXG4gICAgbWV0aG9kOiAnR0VUJyB8ICdQT1NUJyB8ICdQVVQnIHwgJ0RFTEVURScsXHJcbiAgICBoZWFkZXJzOiBhbnksXHJcbiAgICBib2R5OiBhbnlcclxuICApOiBhbnkge1xyXG4gICAgaGVhZGVycyA9IHtcclxuICAgICAgLi4uKGhlYWRlcnMgfHwge30pLFxyXG4gICAgICAnWC1Ta2lwLUludGVyY2VwdG9yJzogJ3RydWUnLFxyXG4gICAgICAnWC1Ta2lwLUF1dGgnOiAndHJ1ZScsXHJcbiAgICAgICdYLVRyYWNrLUFQSS1EZXRhaWxzJzogJ3RydWUnLFxyXG4gICAgfTtcclxuICAgIGlmIChtZXRob2QgPT0gJ0dFVCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXRCeVVybChmdWxsVXJsLCB7IGhlYWRlcnMgfSk7XHJcbiAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PSAnUE9TVCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0QnlVcmwoZnVsbFVybCwgYm9keSwgeyBoZWFkZXJzIH0pO1xyXG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT0gJ1BVVCcpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wdXRCeVVybChmdWxsVXJsLCBib2R5LCB7IGhlYWRlcnMgfSk7XHJcbiAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PSAnREVMRVRFJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmRlbGV0ZUJ5VXJsKGZ1bGxVcmwsIHsgaGVhZGVycyB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdlbmVyYXRlcyBhbiBIVFRQIFJlcXVlc3QgYmFzZWQgb24gdGhlIHByb3ZpZGVkIERhdGFTb3VyY2VRdWVyeSBuYW1lXHJcbiAgICogQHBhcmFtIFF1ZXJ5TmFtZSAtIFRoZSBuYW1lIG9mIHRoZSBEYXRhU291cmNlUXVlcnlcclxuICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBnZW5lcmF0ZWQgSFRUUCByZXF1ZXN0XHJcbiAgICovXHJcbiAgZ2VuZXJhdGVIdHRwUmVxdWVzdChRdWVyeU5hbWU6IHN0cmluZyk6IGFueSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoXHJcbiAgICAgICAgYCR7QVBJLkdlbmVyYXRlSHR0cFJlcXVlc3R9P2RzcU5hbWU9JHtRdWVyeU5hbWV9YCxcclxuICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgaGVhZGVyc1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgdGhlIGRldGFpbGVkIGFuYWx5dGljcyBvZiBhIHNjcmVlbidzIHBlcmZvcm1hbmNlLlxyXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0YSB0byBiZSBzZW50IHRvIHRoZSBBUElcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBnZXREZXRhaWxPZlBlcmZvcm1hbmNlQW5hbHl0aWNzKGRhdGE6IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgLy8gU2V0IHRoZSB0YWIgY29tcG9uZW50cyBmb3IgdGhlIHRlbmFudFxyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoXHJcbiAgICAgICAgLy8gQVBJIGVuZHBvaW50IGZvciByZXRyaWV2aW5nIHRoZSBkZXRhaWxlZCBhbmFseXRpY3Mgb2YgYSBzY3JlZW4ncyBwZXJmb3JtYW5jZVxyXG4gICAgICAgIGAke0FQSS5HZXREZXRhaWxPZlBlcmZvcm1hbmNlQW5hbHl0aWNzfWAsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICAvLyBUaGUgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3RcclxuICAgICAgICBoZWFkZXJzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBzdW1tYXJ5IG9mIHBlcmZvcm1hbmNlIGFuYWx5dGljc1xyXG4gICAqIEBwYXJhbSBkYXRhIC0gRGF0YSB0byBiZSBzZW50IHRvIHRoZSBBUElcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBnZXRTdW1tYXJ5T2ZQZXJmb3JtYW5jZUFuYWx5dGljcyhkYXRhOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgIC8vIFNldCB0aGUgdGFiIGNvbXBvbmVudHMgZm9yIHRoZSB0ZW5hbnRcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KFxyXG4gICAgICAgIC8vIEFQSSBlbmRwb2ludCBmb3IgaW5zZXJ0aW5nIHNjcmVlbiBwZXJmb3JtYW5jZSBzdGF0aXN0aWNzXHJcbiAgICAgICAgYCR7QVBJLkdldFN1bW1hcnlPZlBlcmZvcm1hbmNlQW5hbHl0aWNzfWAsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICAvLyBUaGUgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3RcclxuICAgICAgICBoZWFkZXJzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn1cclxuIl19
380
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLWdldC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9zcmMvbGliL3RhYi1jb3JlLXV0aWxpdHkvYXBwL2NydWQvdGFiLWdldC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUV2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDbkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLDBCQUEwQixHQUMzQixNQUFNLG1DQUFtQyxDQUFDO0FBQzNDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBR2pDLE1BQU0sT0FBTyxhQUFhO0lBRDFCO1FBRW1CLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztLQW1haEQ7SUFqYUM7Ozs7T0FJRztJQUNILHFCQUFxQixDQUFDLElBQVMsRUFBQyxPQUFZ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QUFVLENBQUMsSUFBSTtZQUN6QiwyREFBMkQ7WUFDM0QsR0FBRyxHQUFHLENBQUMsZ0NBQWdDLEVBQUUsRUFDekMsSUFBSTtZQUNKLDhCQUE4QjtZQUM5QixPQUFPLENBQ1IsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OEVBcGFVLGFBQWE7dUVBQWIsYUFBYSxXQUFiLGFBQWEsbUJBREEsTUFBTTs7aUZBQ25CLGFBQWE7Y0FEekIsVUFBVTtlQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cclxuXHJcbmltcG9ydCB7IEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQXBpU2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUvaHR0cC1jbGllbnQvYXBpLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBEU1FIZWxwZXIgfSBmcm9tICcuLi9oZWxwZXJzL2NvbW1vbi9kc3EuaGVscGVycyc7XHJcbmltcG9ydCB7IGdldEhlYWRlcnMgfSBmcm9tICcuLi91dGlscy9yZXEtcmVzLnV0aWwnO1xyXG5pbXBvcnQgeyBBUEkgfSBmcm9tICcuLi9jb25zdGFudHMvYXBpLWNvbnN0YW50cyc7XHJcbmltcG9ydCB7IGdldEFwcE9iamVjdCB9IGZyb20gJy4uL3V0aWxzL3RhYi1hcHAudXRpbCc7XHJcbmltcG9ydCB7IENvbW1vbiB9IGZyb20gJy4uL2NvbnN0YW50cy9jb21tb24nO1xyXG5pbXBvcnQgeyBBUElTZWxlY3RRdWVyeSB9IGZyb20gJy4uL21vZGVscy9hcGktcXVlcnkuY2xhc3MnO1xyXG5pbXBvcnQgeyBGaWx0ZXJWYWx1ZVR5cGUgfSBmcm9tICcuLi9lbnVtcy9kc3EuZW51bSc7XHJcbmltcG9ydCB7IFF1ZXJ5VHlwZSB9IGZyb20gJy4uL2VudW1zL3F1ZXJ5LmVudW0nO1xyXG5pbXBvcnQge1xyXG4gIEFwcE9iamVjdHNDb25zdGFudHMsXHJcbiAgRGF0YVNvdXJjZVF1ZXJpZXNDb25zdGFudHMsXHJcbn0gZnJvbSAnLi4vY29uc3RhbnRzL2FwcC1vYmplY3QtY29uc3RhbnRzJztcclxuaW1wb3J0IHsgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgVGFiR2V0U2VydmljZSB7XHJcbiAgcHJpdmF0ZSByZWFkb25seSBhcGlTZXJ2aWNlID0gaW5qZWN0KEFwaVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgZHNxSGVscGVyID0gaW5qZWN0KERTUUhlbHBlcik7XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4ZWN1dGUgUkFXIERTUSB3aXRoIE5hbWVcclxuICAgKiBAcGFyYW0gZGF0YSAtIE9iamVjdCBjb250YWluaW5nIEFwcE9iamVjdE5hbWUgYW5kIERTUU5hbWVcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBleGVjdXRlUkFXRFNRV2l0aE5hbWUoZGF0YTogYW55LGhlYWRlcnM/OmFueSk6IGFueSB7XHJcbiAgICBjb25zdCBoZWFkZXIgPSBnZXRIZWFkZXJzKGhlYWRlcnMpO1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoXHJcbiAgICAgICAgYCR7QVBJLmdldERTUX0vJHtkYXRhLkFwcE9iamVjdE5hbWV9LyR7ZGF0YS5EU1FOYW1lfWAsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICBoZWFkZXJcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBSZWNvcmRcclxuICAgKiBAcGFyYW0gcGFyYW1zIC0gUGFyYW1ldGVycyBmb3IgdGhlIHJlcXVlc3RcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBnZXRSZWNvcmQocGFyYW1zOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZ2V0KGAke0FQSS5nZXRyZWNvcmR9YCwgcGFyYW1zLCBoZWFkZXJzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRXhlY3V0ZSBSYXcgU1FMXHJcbiAgICogQHBhcmFtIGRhdGEgLSBEYXRhIGZvciB0aGUgcmVxdWVzdFxyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGV4ZWN1dGVSYXdTcWwoZGF0YTogYW55KTogYW55IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoYCR7QVBJLnJhd1NRTH0ke2RhdGF9YCwgJycsIGhlYWRlcnMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBHZXQgSGlzdG9yeVxyXG4gICAqIEBwYXJhbSBhcHBPYmplY3RJZCAtIElEIG9mIHRoZSBhcHBsaWNhdGlvbiBvYmplY3RcclxuICAgKiBAcGFyYW0gcmVjb3JkSWRzIC0gQXJyYXkgb2YgcmVjb3JkIElEc1xyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGdldEhpc3RvcnkoYXBwT2JqZWN0SWQ6IHN0cmluZywgcmVjb3JkSWRzOiBzdHJpbmdbXSk6IGFueSB7XHJcbiAgICBjb25zdCBkYXRhOiBhbnkgPSB7fTtcclxuICAgIGlmIChhcHBPYmplY3RJZCAmJiByZWNvcmRJZHMpIHtcclxuICAgICAgY29uc3QgYXBwT2JqZWN0TmFtZSA9IGdldEFwcE9iamVjdChhcHBPYmplY3RJZCk/Lk9iamVjdE5hbWU7XHJcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICAgIGlmIChhcHBPYmplY3ROYW1lICYmIGhlYWRlcnMpIHtcclxuICAgICAgICBkYXRhLk9iamVjdE5hbWUgPSBhcHBPYmplY3ROYW1lO1xyXG4gICAgICAgIGRhdGEuUmVjb3JkSWRzID0gcmVjb3JkSWRzO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChgJHtBUEkuZ2V0SGlzdG9yeX1gLCBkYXRhLCBoZWFkZXJzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDaGFuZ2UgUGFzc3dvcmRcclxuICAgKiBAcGFyYW0gZGF0YSAtIERhdGEgZm9yIGNoYW5naW5nIHBhc3N3b3JkXHJcbiAgICogQHJldHVybnMgUmVzcG9uc2UgZnJvbSB0aGUgQVBJXHJcbiAgICovXHJcbiAgY2hhbmdlUGFzc3dvcmQoZGF0YTogYW55KTogYW55IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoYCR7QVBJLmNoYW5nZVBhc3N3b3JkfWAsIGRhdGEsIGhlYWRlcnMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzZXQgUGFzc3dvcmRcclxuICAgKiBAcGFyYW0gZGF0YSAtIERhdGEgZm9yIHJlc2V0dGluZyBwYXNzd29yZFxyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIHJlc2V0UGFzc3dvcmQoZGF0YTogYW55KTogYW55IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICBhcHBsaWNhdGlvbkNvZGU6IENvbW1vbi5hcHBsaWNhdGlvbkNvZGUsXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChgJHtBUEkucmVzdHBhc3N3b3JkfWAsIGRhdGEsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUE1KQVkgSW1wb3J0XHJcbiAgICogQHBhcmFtIGRhdGEgLSBEYXRhIGZvciBQTUpBWSBpbXBvcnRcclxuICAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAgKi9cclxuICBwbWpheUltcG9ydChkYXRhOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChgJHtBUEkucG1qYXlJbXBvcnR9YCwgZGF0YSwgaGVhZGVycyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFeGVjdXRlcyBhIHNlbGVjdCBxdWVyeSB3aXRoIG9wdGlvbmFsIHBhcmFtZXRlcnNcclxuICAgKiBAcGFyYW0gZGF0YSAtIFRoZSBzZWxlY3QgcXVlcnkgZGF0YVxyXG4gICAqIEBwYXJhbSBwYXJhbWV0ZXJzIC0gT3B0aW9uYWwgcGFyYW1ldGVycyB0byBiZSBhcHBsaWVkIHRvIHRoZSBxdWVyeVxyXG4gICAqIEByZXR1cm5zIFJlc3VsdCBvZiB0aGUgc2VsZWN0IHF1ZXJ5IGV4ZWN1dGlvblxyXG4gICAqL1xyXG4gIHNlbGVjdEV4ZWN1dG9yKGRhdGE6IEFQSVNlbGVjdFF1ZXJ5LCBwYXJhbWV0ZXJzPzogYW55KTogYW55IHtcclxuICAgIGlmIChwYXJhbWV0ZXJzICYmIE9iamVjdC5rZXlzKHBhcmFtZXRlcnMpLmxlbmd0aCkge1xyXG4gICAgICBkYXRhLldoZXJlQ2xhdXNlLkZpbHRlckxvZ2ljID0gZGF0YS5XaGVyZUNsYXVzZS5GaWx0ZXJMb2dpYyB8fCAnW10nO1xyXG4gICAgICBkYXRhLldoZXJlQ2xhdXNlLkZpbHRlcnMgPSBkYXRhLldoZXJlQ2xhdXNlLkZpbHRlcnMgfHwgW107XHJcbiAgICAgIGRhdGEuV2hlcmVDbGF1c2UuU1FMUXVlcnkgPSBkYXRhLldoZXJlQ2xhdXNlLlNRTFF1ZXJ5IHx8ICcnO1xyXG4gICAgICAvKipcclxuICAgICAgICogUmVwbGFjZXMgdmFsdWVzIGZyb20gcGFyYW1ldGVycyBpZiBtYXRjaGVkIGFuZCBpbiBmb3JtYXQgb2Yge3trZXl9fS5cclxuICAgICAgICogRXhhbXBsZTogaWYgZmlsdGVyLlZhbHVlIGlzIFwie3t1c2VySWR9fVwiIGFuZFxyXG4gICAgICAgKiB0aGlzLl92YWx1ZS5wYXJhbWV0ZXJzLnVzZXJJZCBpcyAxMjMsIHRoZW4gZmlsdGVyLlZhbHVlIHdpbGwgYmUgcmVwbGFjZWQgd2l0aFxyXG4gICAgICAgKiBcIjEyM1wiLlxyXG4gICAgICAgKi9cclxuICAgICAgZGF0YS5XaGVyZUNsYXVzZS5GaWx0ZXJzLmZvckVhY2goKGZpbHRlcjogYW55KSA9PiB7XHJcbiAgICAgICAgLy8gZmlsdGVyLlZhbHVlVHlwZSBpcyAxIChsaXRlcmFsKVxyXG4gICAgICAgIGlmIChmaWx0ZXIuVmFsdWUgJiYgZmlsdGVyLlZhbHVlVHlwZSA9PSBGaWx0ZXJWYWx1ZVR5cGUuTGl0ZXJhbCkge1xyXG4gICAgICAgICAgZmlsdGVyLlZhbHVlID0gZmlsdGVyLlZhbHVlLnJlcGxhY2UoXHJcbiAgICAgICAgICAgIC97eyhbXn1dKyl9fS9nLFxyXG4gICAgICAgICAgICAobWF0Y2g6IHN0cmluZywga2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBhcmFtZXRlcnNba2V5XTtcclxuICAgICAgICAgICAgICByZXR1cm4gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDogbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaWYgdmFsdWVUeXBlID0gMiAoUGFyYW1ldGVycylcclxuICAgICAgICAvLyB0aGVuIHdlIG5lZWQgdG8gcmVwbGFjZSB0aGUgdmFsdWUgd2l0aCBwYXJhbWV0ZXJzIGFuZCBjaGFuZ2UgdGhlIHZhbHVlVHlwZSB0byAxIChMaXRlcmFsKVxyXG4gICAgICAgIGVsc2UgaWYgKGZpbHRlci5WYWx1ZVR5cGUgPT0gRmlsdGVyVmFsdWVUeXBlLlBhcmFtZXRlcikge1xyXG4gICAgICAgICAgZmlsdGVyLlZhbHVlID0gZmlsdGVyLlZhbHVlLnJlcGxhY2UoXHJcbiAgICAgICAgICAgIC8oW159XSspL2csXHJcbiAgICAgICAgICAgIChtYXRjaDogc3RyaW5nLCBrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gcGFyYW1ldGVyc1trZXldO1xyXG4gICAgICAgICAgICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgZmlsdGVyLlZhbHVlVHlwZSA9IEZpbHRlclZhbHVlVHlwZS5MaXRlcmFsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIChkYXRhPy5XaGVyZUNsYXVzZT8uRmlsdGVycyB8fCBbXSkuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZWxlbWVudC5WYWx1ZVR5cGUgPT09IEZpbHRlclZhbHVlVHlwZS5QYXJhbWV0ZXIgJiZcclxuICAgICAgICAgIHBhcmFtZXRlcnNbZWxlbWVudC5GaWVsZElEXVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgZWxlbWVudC5WYWx1ZSA9IHBhcmFtZXRlcnNbZWxlbWVudC5GaWVsZElEXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuZHNxSGVscGVyLmV4ZWN1dGVRdWVyeShkYXRhLCBRdWVyeVR5cGUuU2VsZWN0KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4ZWN1dGVzIGEgc2VsZWN0IHF1ZXJ5IGJ5IGl0cyBJRCwgdXNpbmcgdGhlIHByb3ZpZGVkIHBhcmFtZXRlcnMuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gc2VsZWN0UXVlcnlJZCAtIFRoZSBJRCBvZiB0aGUgc2VsZWN0IHF1ZXJ5IHRvIGJlIGV4ZWN1dGVkLlxyXG4gICAqIEBwYXJhbSBwYXJhbWV0ZXJzIC0gT3B0aW9uYWwgcGFyYW1ldGVycyB0byBiZSBhcHBsaWVkIHRvIHRoZSBxdWVyeS5cclxuICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBzZWxlY3QgcXVlcnkgZXhlY3V0aW9uLlxyXG4gICAqIEB0aHJvd3MgQW4gZXJyb3IgaWYgdGhlIEFQSSByZXNwb25zZSBzdGF0dXMgY29kZSBpcyBub3QgJzIwMCcuXHJcbiAgICovXHJcbiAgZXhlY3V0ZVNlbGVjdFF1ZXJ5QnlJZChzZWxlY3RRdWVyeUlkOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBhbnkpOiBhbnkge1xyXG4gICAgcmV0dXJuIHRoaXMuZXhlY3V0ZVJBV0RTUVdpdGhOYW1lKHtcclxuICAgICAgQXBwT2JqZWN0TmFtZTogQXBwT2JqZWN0c0NvbnN0YW50cy5UQUJEX1F1ZXJpZXMsXHJcbiAgICAgIERTUU5hbWU6IERhdGFTb3VyY2VRdWVyaWVzQ29uc3RhbnRzLkRldGFpbF9UQUJEX1F1ZXJpZXMsXHJcbiAgICAgIFJlcXRva2Vuczoge1xyXG4gICAgICAgIElEOiBzZWxlY3RRdWVyeUlkLFxyXG4gICAgICB9LFxyXG4gICAgfSkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXMuU3RhdHVzQ29kZSA9PT0gJzIwMCcpIHtcclxuICAgICAgICAgIGNvbnN0IENvbmZpZ3VyYXRpb24gPSBKU09OLnBhcnNlKHJlcy5SZXN1bHRbMF0uQ29uZmlndXJhdGlvbiB8fCAne30nKTtcclxuICAgICAgICAgIGlmIChDb25maWd1cmF0aW9uLldoZXJlQ2xhdXNlPy5GaWx0ZXJzKSB7XHJcbiAgICAgICAgICAgIENvbmZpZ3VyYXRpb24uV2hlcmVDbGF1c2UuRmlsdGVycyA9IHRoaXMucmVtb3ZlV2hlcmVDbGF1c2VGb3JFbXB0eVBhcmFtcyhDb25maWd1cmF0aW9uLldoZXJlQ2xhdXNlLkZpbHRlcnMsIHBhcmFtZXRlcnMgfHwge30pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0RXhlY3V0b3IoQ29uZmlndXJhdGlvbiwgcGFyYW1ldGVycyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihyZXMuTWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVtb3ZlV2hlcmVDbGF1c2VGb3JFbXB0eVBhcmFtcyhmaWx0ZXJzOiBhbnlbXSwgcGFyYW1ldGVyczogUmVjb3JkPHN0cmluZywgYW55Pik6IGFueVtdIHtcclxuICAgIHJldHVybiBmaWx0ZXJzLmZpbHRlcigoZmlsdGVyOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZmlsdGVyLlZhbHVlVHlwZSA9PT0gRmlsdGVyVmFsdWVUeXBlLlBhcmFtZXRlcikge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJhbWV0ZXJOYW1lID0gZmlsdGVyLlZhbHVlO1xyXG4gICAgICAgICAgICBpZiAocGFyYW1ldGVycz8uaGFzT3duUHJvcGVydHkocGFyYW1ldGVyTmFtZSkgJiYgcGFyYW1ldGVyc1twYXJhbWV0ZXJOYW1lXSA9PT0gJycpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gUmVtb3ZlIGZpbHRlclxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChPYmplY3Qua2V5cyhwYXJhbWV0ZXJzIHx8IHt9KS5sZW5ndGggPT09IDAgJiYgZmlsdGVyLlZhbHVlVHlwZSA9PT0gRmlsdGVyVmFsdWVUeXBlLlBhcmFtZXRlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFJlbW92ZSBmaWx0ZXJcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7IC8vIEtlZXAgZmlsdGVyXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0VGVzdENvbm5lY3Rpb24oY29ubmVjdGlvbklkOiBhbnksIHBhcmFtcz86IGFueSk6IGFueSB7XHJcbiAgICBpZiAoY29ubmVjdGlvbklkKSB7XHJcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoXHJcbiAgICAgICAgICBgJHtBUEkudGVzdENvbm5lY3Rpb259JHtjb25uZWN0aW9uSWR9YCxcclxuICAgICAgICAgIHBhcmFtcyxcclxuICAgICAgICAgIGhlYWRlcnNcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgZ2V0UGVyZm9ybVZhbGlkYXRpb24oY29ubmVjdGlvbklkOiBhbnksIHBhcmFtcz86IGFueSk6IGFueSB7XHJcbiAgICBpZiAoY29ubmVjdGlvbklkKSB7XHJcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoXHJcbiAgICAgICAgICBgJHtBUEkucGVyZm9ybVZhbGlkYXRpb259JHtjb25uZWN0aW9uSWR9YCxcclxuICAgICAgICAgIHBhcmFtcyxcclxuICAgICAgICAgIGhlYWRlcnNcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdGFiIGNvbXBvbmVudHMgZm9yIHRoZSBnaXZlbiB0ZW5hbnRcclxuICAgKiBAcGFyYW0gY29ubmVjdGlvbklkIFRoZSBJRCBvZiB0aGUgY29ubmVjdGlvblxyXG4gICAqIEByZXR1cm5zIEFuIG9ic2VydmFibGUgb2YgdGhlIHJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIHNldFRhYkNvbXBvbmVudHNGb3JUZW5hbnQoY29ubmVjdGlvbklkOiBzdHJpbmcsIGRhdGE/OiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgIC8vIFNldCB0aGUgdGFiIGNvbXBvbmVudHMgZm9yIHRoZSB0ZW5hbnRcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KFxyXG4gICAgICAgIC8vIEFQSSBlbmRwb2ludCBmb3Igc2V0dGluZyB0YWIgY29tcG9uZW50c1xyXG4gICAgICAgIGAke0FQSS5zZXRUYWJDb21wb25lbnRzfSR7Y29ubmVjdGlvbklkfWAsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICAvLyBUaGUgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3RcclxuICAgICAgICBoZWFkZXJzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXRyaWV2ZXMgYSBmb3JtIGNvbmZpZ3VyYXRpb24gZm9yIGEgY29tbW9uIGZpbHRlciBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgYXBwbGljYXRpb24gb2JqZWN0IElELlxyXG4gICAqIEBwYXJhbSBhcHBPYmplY3RJZCAtIFRoZSBJRCBvZiB0aGUgYXBwbGljYXRpb24gb2JqZWN0LlxyXG4gICAqIEBwYXJhbSBwYXJhbXMgLSBPcHRpb25hbCBwYXJhbWV0ZXJzIGZvciB0aGUgcmVxdWVzdC5cclxuICAgKiBAcmV0dXJucyBUaGUgcmVzcG9uc2UgZnJvbSB0aGUgQVBJIG9yIG51bGwgaWYgaGVhZGVycyBhcmUgdW5hdmFpbGFibGUuXHJcbiAgICovXHJcbiAgZ2V0QnVpbGRGb3JtSU9Gb3JDb21tb25GaWx0ZXIoYXBwT2JqZWN0SWQ6IHN0cmluZywgcGFyYW1zPzogYW55KSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoXHJcbiAgICAgICAgYCR7QVBJLkJ1aWxkRm9ybUlPQ29tcG9uZW50c30ke2FwcE9iamVjdElkfSZUeXBlPUNvbW1vbkZpbHRlcmAsXHJcbiAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgIGhlYWRlcnNcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIGEgZm9ybSBjb25maWd1cmF0aW9uIGZvciBhIGJ1bGsgdXBkYXRlIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBhcHBsaWNhdGlvbiBvYmplY3QgSUQuXHJcbiAgICogQHBhcmFtIGFwcE9iamVjdElkIC0gVGhlIElEIG9mIHRoZSBhcHBsaWNhdGlvbiBvYmplY3QuXHJcbiAgICogQHBhcmFtIHBhcmFtcyAtIE9wdGlvbmFsIHBhcmFtZXRlcnMgZm9yIHRoZSByZXF1ZXN0LlxyXG4gICAqIEByZXR1cm5zIFRoZSByZXNwb25zZSBmcm9tIHRoZSBBUEkgb3IgbnVsbCBpZiBoZWFkZXJzIGFyZSB1bmF2YWlsYWJsZS5cclxuICAgKi9cclxuICBnZXRCdWlsZEZvcm1JT0ZvckJ1bGtVcGRhdGUoYXBwT2JqZWN0SWQ6IHN0cmluZywgcGFyYW1zPzogYW55KSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5nZXQoXHJcbiAgICAgICAgYCR7QVBJLkJ1aWxkRm9ybUlPQ29tcG9uZW50c30ke2FwcE9iamVjdElkfSZUeXBlPUJ1bGtVcGRhdGVgLFxyXG4gICAgICAgIHBhcmFtcyxcclxuICAgICAgICBoZWFkZXJzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vIC8qKlxyXG4gIC8vICAqIEdldCBSZXNvdXJjZSBMYW5ndWFnZSBCeSBMYW5ndWFnZSBDb2RlXHJcbiAgLy8gICogQHBhcmFtIGxhbmd1YWdlQ29kZSAtIExhbmd1YWdlIENvZGVcclxuICAvLyAgKiBAcmV0dXJucyBSZXNwb25zZSBmcm9tIHRoZSBBUElcclxuICAvLyAgKi9cclxuICAvLyBnZXRSZXNvdXJjZUxhbmd1YWdlQnlMYW5ndWFnZUNvZGUobGFuZ3VhZ2VDb2RlOiBudW1iZXIpOiBhbnkge1xyXG4gIC8vICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAvLyAgIGlmIChoZWFkZXJzKSB7XHJcbiAgLy8gICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChcclxuICAvLyAgICAgICBgJHtBUEkubGFuZ3VhZ2VSZXNvdXJjZX1gLFxyXG4gIC8vICAgICAgIHsgTGFuZ3VhZ2VDb2RlOiBsYW5ndWFnZUNvZGUgfSxcclxuICAvLyAgICAgICBoZWFkZXJzXHJcbiAgLy8gICAgICk7XHJcbiAgLy8gICB9XHJcbiAgLy8gICByZXR1cm4gbnVsbDtcclxuICAvLyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCBTZWFyY2ggRGF0YVxyXG4gICAqIEBwYXJhbSBzZWFyY2hRdWVyeSAtIFNlYXJjaCBRdWVyeSBzdHJpbmdcclxuICAgKiBAcGFyYW0gbGltaXQgLSBMaW1pdCBvZiBzZWFyY2ggcmVzdWx0c1xyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGdldFNlYXJjaERhdGEoc2VhcmNoUXVlcnk6IHN0cmluZywgbGltaXQ6IG51bWJlciwgcGFyYW1zPzogYW55KTogYW55IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldChcclxuICAgICAgICBgJHtBUEkuc2VhcmNofT9zZWFyY2hRdWVyeT0ke3NlYXJjaFF1ZXJ5fSZsaW1pdD0ke2xpbWl0fWAsXHJcbiAgICAgICAgcGFyYW1zLFxyXG4gICAgICAgIGhlYWRlcnNcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSW5zZXJ0IFNjcmVlbiBQZXJmb3JtYW5jZSBTdGF0aXN0aWNzXHJcbiAgICogQHBhcmFtIGRhdGEgLSBEYXRhIHRvIGluc2VydFxyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGluc2VydFNjcmVlblBlcmZvcm1hbmNlU3RhdGlzdGljcyhkYXRhOiBhbnkpOiBhbnkge1xyXG4gICAgY29uc3QgaGVhZGVycyA9IGdldEhlYWRlcnMoKTtcclxuICAgIGlmIChoZWFkZXJzKSB7XHJcbiAgICAgIC8vIFNldCB0aGUgdGFiIGNvbXBvbmVudHMgZm9yIHRoZSB0ZW5hbnRcclxuICAgICAgcmV0dXJuIHRoaXMuYXBpU2VydmljZS5wb3N0KFxyXG4gICAgICAgIC8vIEFQSSBlbmRwb2ludCBmb3IgaW5zZXJ0aW5nIHNjcmVlbiBwZXJmb3JtYW5jZSBzdGF0aXN0aWNzXHJcbiAgICAgICAgYCR7QVBJLkluc2VydFNjcmVlblBlcmZvcm1hbmNlQW5hbHl0aWNzfWAsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICAvLyBUaGUgaGVhZGVycyBmb3IgdGhlIHJlcXVlc3RcclxuICAgICAgICBoZWFkZXJzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEV4ZWN1dGVzIGFuIEhUVFAgcmVxdWVzdCB3aXRoIHRoZSBzcGVjaWZpZWQgbWV0aG9kLCBVUkwsIGhlYWRlcnMsIGFuZCBib2R5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIGZ1bGxVcmwgLVRoZSBmdWxsIFVSTCBvZiB0aGUgcmVxdWVzdCBjb250YWluaW5nIHRoZSBxdWVyeSBwYXJhbWV0ZXJzLlxyXG4gICAqIEBwYXJhbSBtZXRob2QgLSBUaGUgSFRUUCBtZXRob2QgdG8gYmUgdXNlZCAoJ0dFVCcsICdQT1NUJywgJ1BVVCcsICdERUxFVEUnKS5cclxuICAgKiBAcGFyYW0gaGVhZGVycyAtIFRoZSBoZWFkZXJzIHRvIGluY2x1ZGUgaW4gdGhlIHJlcXVlc3QuXHJcbiAgICogQHBhcmFtIGJvZHkgLSBUaGUgYm9keSBjb250ZW50IGZvciBtZXRob2RzIGxpa2UgUE9TVCBhbmQgUFVULlxyXG4gICAqIEByZXR1cm5zIFRoZSBBUEkgcmVzcG9uc2UgY29ycmVzcG9uZGluZyB0byB0aGUgcmVxdWVzdC5cclxuICAgKi9cclxuICBleGVjdXRlSHR0cFJlcXVlc3QoXHJcbiAgICBmdWxsVXJsOiBhbnksXHJcbiAgICBtZXRob2Q6ICdHRVQnIHwgJ1BPU1QnIHwgJ1BVVCcgfCAnREVMRVRFJyxcclxuICAgIGhlYWRlcnM6IGFueSxcclxuICAgIGJvZHk6IGFueVxyXG4gICk6IGFueSB7XHJcbiAgICBoZWFkZXJzID0ge1xyXG4gICAgICAuLi4oaGVhZGVycyB8fCB7fSksXHJcbiAgICAgICdYLVNraXAtSW50ZXJjZXB0b3InOiAndHJ1ZScsXHJcbiAgICAgICdYLVNraXAtQXV0aCc6ICd0cnVlJyxcclxuICAgICAgJ1gtVHJhY2stQVBJLURldGFpbHMnOiAndHJ1ZScsXHJcbiAgICB9O1xyXG4gICAgaWYgKG1ldGhvZCA9PSAnR0VUJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldEJ5VXJsKGZ1bGxVcmwsIHsgaGVhZGVycyB9KTtcclxuICAgIH0gZWxzZSBpZiAobWV0aG9kID09ICdQT1NUJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3RCeVVybChmdWxsVXJsLCBib2R5LCB7IGhlYWRlcnMgfSk7XHJcbiAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PSAnUFVUJykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnB1dEJ5VXJsKGZ1bGxVcmwsIGJvZHksIHsgaGVhZGVycyB9KTtcclxuICAgIH0gZWxzZSBpZiAobWV0aG9kID09ICdERUxFVEUnKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UuZGVsZXRlQnlVcmwoZnVsbFVybCwgeyBoZWFkZXJzIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2VuZXJhdGVzIGFuIEhUVFAgUmVxdWVzdCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgRGF0YVNvdXJjZVF1ZXJ5IG5hbWVcclxuICAgKiBAcGFyYW0gUXVlcnlOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIERhdGFTb3VyY2VRdWVyeVxyXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGdlbmVyYXRlZCBIVFRQIHJlcXVlc3RcclxuICAgKi9cclxuICBnZW5lcmF0ZUh0dHBSZXF1ZXN0KFF1ZXJ5TmFtZTogc3RyaW5nKTogYW55IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLmdldChcclxuICAgICAgICBgJHtBUEkuR2VuZXJhdGVIdHRwUmVxdWVzdH0/ZHNxTmFtZT0ke1F1ZXJ5TmFtZX1gLFxyXG4gICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICBoZWFkZXJzXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHJpZXZlcyB0aGUgZGV0YWlsZWQgYW5hbHl0aWNzIG9mIGEgc2NyZWVuJ3MgcGVyZm9ybWFuY2UuXHJcbiAgICogQHBhcmFtIGRhdGEgLSBEYXRhIHRvIGJlIHNlbnQgdG8gdGhlIEFQSVxyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGdldERldGFpbE9mUGVyZm9ybWFuY2VBbmFseXRpY3MoZGF0YTogYW55KTogYW55IHtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBnZXRIZWFkZXJzKCk7XHJcbiAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICAvLyBTZXQgdGhlIHRhYiBjb21wb25lbnRzIGZvciB0aGUgdGVuYW50XHJcbiAgICAgIHJldHVybiB0aGlzLmFwaVNlcnZpY2UucG9zdChcclxuICAgICAgICAvLyBBUEkgZW5kcG9pbnQgZm9yIHJldHJpZXZpbmcgdGhlIGRldGFpbGVkIGFuYWx5dGljcyBvZiBhIHNjcmVlbidzIHBlcmZvcm1hbmNlXHJcbiAgICAgICAgYCR7QVBJLkdldERldGFpbE9mUGVyZm9ybWFuY2VBbmFseXRpY3N9YCxcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIC8vIFRoZSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdFxyXG4gICAgICAgIGhlYWRlcnNcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHN1bW1hcnkgb2YgcGVyZm9ybWFuY2UgYW5hbHl0aWNzXHJcbiAgICogQHBhcmFtIGRhdGEgLSBEYXRhIHRvIGJlIHNlbnQgdG8gdGhlIEFQSVxyXG4gICAqIEByZXR1cm5zIFJlc3BvbnNlIGZyb20gdGhlIEFQSVxyXG4gICAqL1xyXG4gIGdldFN1bW1hcnlPZlBlcmZvcm1hbmNlQW5hbHl0aWNzKGRhdGE6IGFueSk6IGFueSB7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgLy8gU2V0IHRoZSB0YWIgY29tcG9uZW50cyBmb3IgdGhlIHRlbmFudFxyXG4gICAgICByZXR1cm4gdGhpcy5hcGlTZXJ2aWNlLnBvc3QoXHJcbiAgICAgICAgLy8gQVBJIGVuZHBvaW50IGZvciBpbnNlcnRpbmcgc2NyZWVuIHBlcmZvcm1hbmNlIHN0YXRpc3RpY3NcclxuICAgICAgICBgJHtBUEkuR2V0U3VtbWFyeU9mUGVyZm9ybWFuY2VBbmFseXRpY3N9YCxcclxuICAgICAgICBkYXRhLFxyXG4gICAgICAgIC8vIFRoZSBoZWFkZXJzIGZvciB0aGUgcmVxdWVzdFxyXG4gICAgICAgIGhlYWRlcnNcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -8,7 +8,7 @@ export declare class TabGetService {
8
8
  * @param data - Object containing AppObjectName and DSQName
9
9
  * @returns Response from the API
10
10
  */
11
- executeRAWDSQWithName(data: any): any;
11
+ executeRAWDSQWithName(data: any, headers?: any): any;
12
12
  /**
13
13
  * Get Record
14
14
  * @param params - Parameters for the request
@@ -62,6 +62,7 @@ export declare class TabGetService {
62
62
  * @throws An error if the API response status code is not '200'.
63
63
  */
64
64
  executeSelectQueryById(selectQueryId: string, parameters?: any): any;
65
+ removeWhereClauseForEmptyParams(filters: any[], parameters: Record<string, any>): any[];
65
66
  getTestConnection(connectionId: any, params?: any): any;
66
67
  getPerformValidation(connectionId: any, params?: any): any;
67
68
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@techextensor/tab-core-utility",
3
- "version": "2.2.114",
3
+ "version": "2.2.119",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.0",
6
6
  "@angular/core": "^17.3.0",