@sinequa/assistant 3.9.3 → 3.9.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,10 +6,6 @@ import * as i0 from "@angular/core";
6
6
  export class SavedChatsService {
7
7
  constructor() { }
8
8
  init(config) {
9
- if (this.operationConfig) {
10
- console.warn('SavedChatsService already initialized.');
11
- return;
12
- }
13
9
  this.operationConfig = config;
14
10
  }
15
11
  ensureInitialized() {
@@ -162,4 +158,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
162
158
  providedIn: 'root'
163
159
  }]
164
160
  }], ctorParameters: () => [] });
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZWQtY2hhdHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fzc2lzdGFudC9jaGF0L3NhdmVkLWNoYXRzL3NhdmVkLWNoYXRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQXlCNUMsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixnQkFBZSxDQUFDO0lBRVQsSUFBSSxDQUFDLE1BQWlDO1FBQzNDLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0NBQXdDLENBQUMsQ0FBQztZQUN2RCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7UUFDM0UsQ0FBQztJQUNILENBQUM7SUFFTSxTQUFTO1FBQ2QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWdCLENBQUM7UUFFckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUM7WUFDbEMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUMs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O1lBQ25CLE1BQU0sUUFBUSxHQUFHLHVEQUF1RCxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDO1lBQ3JHLE9BQU8sQ0FBQyxLQUFLLENBQUMscUJBQXFCLEdBQUcsUUFBUSxDQUFDLENBQUM7WUFDaEQsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7K0dBak1VLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07OzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAsIGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGdldCwgcG9zdCB9IGZyb20gJ0BzaW5lcXVhL2F0b21pYyc7XG5cbmltcG9ydCB7XG4gIENoYXRNZXNzYWdlLFxuICBTYXZlZENoYXQsXG4gIFNhdmVkQ2hhdEhpc3RvcnksXG4gIFNhdmVkQ2hhdFJlc3BvbnNlLFxuICBEZWxldGVTYXZlZENoYXRSZXNwb25zZVxufSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2F2ZWRDaGF0c09wZXJhdGlvbkNvbmZpZyB7XG4gIGdldEFwcE5hbWU6ICgpID0+IHN0cmluZztcbiAgZ2V0SW5zdGFuY2VJZDogKCkgPT4gc3RyaW5nO1xuICBnZXRSZXN0VXJsOiAoKSA9PiBzdHJpbmc7XG4gIGdldERlYnVnRmxhZzogKCkgPT4gYm9vbGVhbjtcbiAgaXNTYXZlZENoYXRzRW5hYmxlZDogKCkgPT4gYm9vbGVhbjtcblxuICBzZXRTYXZlZENoYXRzRXJyb3JTdGF0dXM6IChoYXNFcnJvcjogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlU2F2ZWRDaGF0c0xpc3Q6IChjaGF0czogU2F2ZWRDaGF0W10pID0+IHZvaWQ7XG4gIGdlbmVyYXRlQXVkaXRFdmVudDogKHR5cGU6IHN0cmluZywgZGV0YWlsczogUmVjb3JkPHN0cmluZywgYW55PiwgaWQ/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNhdmVkQ2hhdHNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBvcGVyYXRpb25Db25maWc6IFNhdmVkQ2hhdHNPcGVyYXRpb25Db25maWcgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIHB1YmxpYyBpbml0KGNvbmZpZzogU2F2ZWRDaGF0c09wZXJhdGlvbkNvbmZpZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9wZXJhdGlvbkNvbmZpZykge1xuICAgICAgY29uc29sZS53YXJuKCdTYXZlZENoYXRzU2VydmljZSBhbHJlYWR5IGluaXRpYWxpemVkLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm9wZXJhdGlvbkNvbmZpZyA9IGNvbmZpZztcbiAgfVxuXG4gIHByaXZhdGUgZW5zdXJlSW5pdGlhbGl6ZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm9wZXJhdGlvbkNvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTYXZlZENoYXRzU2VydmljZSBub3QgaW5pdGlhbGl6ZWQuIENhbGwgaW5pdCgpIGZpcnN0LicpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsaXN0Q2hhdHMoKTogdm9pZCB7XG4gICAgdGhpcy5lbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMub3BlcmF0aW9uQ29uZmlnITtcblxuICAgIGlmICghY29uZmlnLmlzU2F2ZWRDaGF0c0VuYWJsZWQoKSkge1xuICAgICAgdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoXCJPcGVyYXRpb25zIG9uIHNhdmVkIGNoYXRzIGFyZSBkaXNhYmxlZFwiKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGFjdGlvbjogXCJTYXZlZENoYXRMaXN0XCIsXG4gICAgICBhcHBOYW1lOiBjb25maWcuZ2V0QXBwTmFtZSgpLFxuICAgICAgaW5zdGFuY2VJZDogY29uZmlnLmdldEluc3RhbmNlSWQoKSxcbiAgICAgIGRlYnVnOiBjb25maWcuZ2V0RGVidWdGbGFnKClcbiAgICB9O1xuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoT2JqZWN0LmVudHJpZXMoZGF0YSkucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgYWNjW2tleV0gPSBTdHJpbmcodmFsdWUpO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSk7XG5cbiAgICBmcm9tKGdldDx7IHNhdmVkQ2hhdHM6IFNhdmVkQ2hhdFtdIH0+KGBwbHVnaW4vJHtjb25maWcuZ2V0UmVzdFVybCgpfWAsIHNlYXJjaFBhcmFtcykpLnBpcGUoXG4gICAgICB0YXAocmVzID0+IHtcbiAgICAgICAgY29uZmlnLnVwZGF0ZVNhdmVkQ2hhdHNMaXN0KHJlcy5zYXZlZENoYXRzKTtcbiAgICAgICAgY29uZmlnLnNldFNhdmVkQ2hhdHNFcnJvclN0YXR1cyhmYWxzZSk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9yTXNnID0gJ0Vycm9yIG9jY3VycmVkIHdoaWxlIGNhbGxpbmcgdGhlIFNhdmVkQ2hhdExpc3QgQVBJOiAnICsgZXJyb3IuZXJyb3I/LmVycm9yTWVzc2FnZTtcbiAgICAgICAgY29uc29sZS5lcnJvcignU2F2ZWRDaGF0c1NlcnZpY2U6ICcgKyBlcnJvck1zZyk7XG4gICAgICAgIGNvbmZpZy5zZXRTYXZlZENoYXRzRXJyb3JTdGF0dXModHJ1ZSk7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgIH0pXG4gICAgKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDaGF0QnlJZChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxTYXZlZENoYXRIaXN0b3J5IHwgdW5kZWZpbmVkPiB7XG4gICAgdGhpcy5lbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMub3BlcmF0aW9uQ29uZmlnITtcblxuICAgIGlmICghY29uZmlnLmlzU2F2ZWRDaGF0c0VuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKFwiT3BlcmF0aW9ucyBvbiBzYXZlZCBjaGF0cyBhcmUgZGlzYWJsZWRcIikpO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBhY3Rpb246IFwiU2F2ZWRDaGF0R2V0XCIsXG4gICAgICBhcHBOYW1lOiBjb25maWcuZ2V0QXBwTmFtZSgpLFxuICAgICAgaW5zdGFuY2VJZDogY29uZmlnLmdldEluc3RhbmNlSWQoKSxcbiAgICAgIGNoYXRJZDogaWQsXG4gICAgICBkZWJ1ZzogY29uZmlnLmdldERlYnVnRmxhZygpXG4gICAgfTtcbiAgICBjb25zdCBzZWFyY2hQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKE9iamVjdC5lbnRyaWVzKGRhdGEpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGFjY1trZXldID0gU3RyaW5nKHZhbHVlKTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPikpO1xuXG4gICAgcmV0dXJuIGZyb20oZ2V0PHsgc2F2ZWRDaGF0OiBTYXZlZENoYXRIaXN0b3J5LCBleGVjdXRpb25UaW1lTWlsbGlzZWNvbmRzOiBudW1iZXIgfT4oYHBsdWdpbi8ke2NvbmZpZy5nZXRSZXN0VXJsKCl9YCwgc2VhcmNoUGFyYW1zKSkucGlwZShcbiAgICAgIHRhcChyZXMgPT4ge1xuICAgICAgICBjb25maWcuZ2VuZXJhdGVBdWRpdEV2ZW50KCdhc3Qtc2F2ZWQtY2hhdC5sb2FkJywgeyBkdXJhdGlvbjogcmVzLmV4ZWN1dGlvblRpbWVNaWxsaXNlY29uZHMgfSwgcmVzLnNhdmVkQ2hhdC5pZCk7XG4gICAgICB9KSxcbiAgICAgIG1hcChyZXMgPT4gcmVzLnNhdmVkQ2hhdCksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zdCBlcnJvck1zZyA9ICdFcnJvciBvY2N1cnJlZCB3aGlsZSBjYWxsaW5nIHRoZSBTYXZlZENoYXRHZXQgQVBJOiAnICsgZXJyb3IuZXJyb3I/LmVycm9yTWVzc2FnZTtcbiAgICAgICAgY29uc29sZS5lcnJvcignU2F2ZWRDaGF0c1NlcnZpY2U6ICcgKyBlcnJvck1zZyk7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRDaGF0KGlkOiBzdHJpbmcsIG1lc3NhZ2VzOiBDaGF0TWVzc2FnZVtdKTogT2JzZXJ2YWJsZTxTYXZlZENoYXRSZXNwb25zZT4ge1xuICAgIHRoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKTtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLm9wZXJhdGlvbkNvbmZpZyE7XG5cbiAgICBpZiAoIWNvbmZpZy5pc1NhdmVkQ2hhdHNFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihcIk9wZXJhdGlvbnMgb24gc2F2ZWQgY2hhdHMgYXJlIGRpc2FibGVkXCIpKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgYWN0aW9uOiBcIlNhdmVkQ2hhdEFkZFwiLFxuICAgICAgYXBwTmFtZTogY29uZmlnLmdldEFwcE5hbWUoKSxcbiAgICAgIGluc3RhbmNlSWQ6IGNvbmZpZy5nZXRJbnN0YW5jZUlkKCksXG4gICAgICBjaGF0SWQ6IGlkLFxuICAgICAgaGlzdG9yeTogbWVzc2FnZXMsXG4gICAgICBkZWJ1ZzogY29uZmlnLmdldERlYnVnRmxhZygpXG4gICAgfTtcblxuICAgIHJldHVybiBmcm9tKHBvc3Q8U2F2ZWRDaGF0UmVzcG9uc2U+KGBwbHVnaW4vJHtjb25maWcuZ2V0UmVzdFVybCgpfWAsIGRhdGEpKS5waXBlKFxuICAgICAgdGFwKHJlcyA9PiB7XG4gICAgICAgIGNvbmZpZy5nZW5lcmF0ZUF1ZGl0RXZlbnQoJ2FzdC1zYXZlZC1jaGF0LmFkZCcsIHsgZHVyYXRpb246IHJlcy5leGVjdXRpb25UaW1lTWlsbGlzZWNvbmRzIH0sIHJlcy5zYXZlZENoYXQuaWQpO1xuICAgICAgfSksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zdCBlcnJvck1zZyA9ICdFcnJvciBvY2N1cnJlZCB3aGlsZSBjYWxsaW5nIHRoZSBTYXZlZENoYXRBZGQgQVBJOiAnICsgZXJyb3IuZXJyb3I/LmVycm9yTWVzc2FnZTtcbiAgICAgICAgY29uc29sZS5lcnJvcignU2F2ZWRDaGF0c1NlcnZpY2U6ICcgKyBlcnJvck1zZyk7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVDaGF0KGlkOiBzdHJpbmcsIG5hbWU/OiBzdHJpbmcsIG1lc3NhZ2VzPzogQ2hhdE1lc3NhZ2VbXSk6IE9ic2VydmFibGU8U2F2ZWRDaGF0UmVzcG9uc2U+IHtcbiAgICB0aGlzLmVuc3VyZUluaXRpYWxpemVkKCk7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5vcGVyYXRpb25Db25maWchO1xuXG4gICAgaWYgKCFjb25maWcuaXNTYXZlZENoYXRzRW5hYmxlZCgpKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoXCJPcGVyYXRpb25zIG9uIHNhdmVkIGNoYXRzIGFyZSBkaXNhYmxlZFwiKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YTogYW55ID0ge1xuICAgICAgYWN0aW9uOiBcIlNhdmVkQ2hhdFVwZGF0ZVwiLFxuICAgICAgYXBwTmFtZTogY29uZmlnLmdldEFwcE5hbWUoKSxcbiAgICAgIGluc3RhbmNlSWQ6IGNvbmZpZy5nZXRJbnN0YW5jZUlkKCksXG4gICAgICBjaGF0SWQ6IGlkLFxuICAgICAgZGVidWc6IGNvbmZpZy5nZXREZWJ1Z0ZsYWcoKVxuICAgIH07XG5cbiAgICBpZiAobmFtZSkgZGF0YVtcInRpdGxlXCJdID0gbmFtZTtcbiAgICBpZiAobWVzc2FnZXMpIGRhdGFbXCJoaXN0b3J5XCJdID0gbWVzc2FnZXM7XG5cbiAgICByZXR1cm4gZnJvbShwb3N0PFNhdmVkQ2hhdFJlc3BvbnNlPihgcGx1Z2luLyR7Y29uZmlnLmdldFJlc3RVcmwoKX1gLCBkYXRhKSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9yTXNnID0gJ0Vycm9yIG9jY3VycmVkIHdoaWxlIGNhbGxpbmcgdGhlIFNhdmVkQ2hhdFVwZGF0ZSBBUEk6ICcgKyBlcnJvci5lcnJvcj8uZXJyb3JNZXNzYWdlO1xuICAgICAgICBjb25zb2xlLmVycm9yKCdTYXZlZENoYXRzU2VydmljZTogJyArIGVycm9yTXNnKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZUNoYXQoaWRzOiBzdHJpbmdbXSk6IE9ic2VydmFibGU8RGVsZXRlU2F2ZWRDaGF0UmVzcG9uc2U+IHtcbiAgICB0aGlzLmVuc3VyZUluaXRpYWxpemVkKCk7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5vcGVyYXRpb25Db25maWchO1xuXG4gICAgaWYgKCFjb25maWcuaXNTYXZlZENoYXRzRW5hYmxlZCgpKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoXCJPcGVyYXRpb25zIG9uIHNhdmVkIGNoYXRzIGFyZSBkaXNhYmxlZFwiKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGFjdGlvbjogXCJTYXZlZENoYXREZWxldGVcIixcbiAgICAgIGFwcE5hbWU6IGNvbmZpZy5nZXRBcHBOYW1lKCksXG4gICAgICBpbnN0YW5jZUlkOiBjb25maWcuZ2V0SW5zdGFuY2VJZCgpLFxuICAgICAgY2hhdElkczogaWRzLFxuICAgICAgZGVidWc6IGNvbmZpZy5nZXREZWJ1Z0ZsYWcoKVxuICAgIH07XG5cbiAgICByZXR1cm4gZnJvbShwb3N0PERlbGV0ZVNhdmVkQ2hhdFJlc3BvbnNlPihgcGx1Z2luLyR7Y29uZmlnLmdldFJlc3RVcmwoKX1gLCBkYXRhKSkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0V4aXN0aW5nQ2hhdChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgdGhpcy5lbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMub3BlcmF0aW9uQ29uZmlnITtcblxuICAgIGlmICghY29uZmlnLmlzU2F2ZWRDaGF0c0VuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKFwiT3BlcmF0aW9ucyBvbiBzYXZlZCBjaGF0cyBhcmUgZGlzYWJsZWRcIikpO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBhY3Rpb246IFwiU2F2ZWRDaGF0RXhpc3RcIixcbiAgICAgIGFwcE5hbWU6IGNvbmZpZy5nZXRBcHBOYW1lKCksXG4gICAgICBpbnN0YW5jZUlkOiBjb25maWcuZ2V0SW5zdGFuY2VJZCgpLFxuICAgICAgY2hhdElkOiBpZCxcbiAgICAgIGRlYnVnOiBjb25maWcuZ2V0RGVidWdGbGFnKClcbiAgICB9O1xuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoT2JqZWN0LmVudHJpZXMoZGF0YSkucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgYWNjW2tleV0gPSBTdHJpbmcodmFsdWUpO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSk7XG5cbiAgICByZXR1cm4gZnJvbShnZXQ8eyBleGlzdHM6IGJvb2xlYW4sIGV4ZWN1dGlvblRpbWU6IHN0cmluZywgZXhlY3V0aW9uVGltZU1pbGxpc2Vjb25kczogbnVtYmVyIH0+KGBwbHVnaW4vJHtjb25maWcuZ2V0UmVzdFVybCgpfWAsIHNlYXJjaFBhcmFtcykpLnBpcGUoXG4gICAgICBtYXAocmVzID0+IHJlcy5leGlzdHMpLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc3QgZXJyb3JNc2cgPSAnRXJyb3Igb2NjdXJyZWQgd2hpbGUgY2FsbGluZyB0aGUgU2F2ZWRDaGF0RXhpc3QgQVBJOiAnICsgZXJyb3IuZXJyb3I/LmVycm9yTWVzc2FnZTtcbiAgICAgICAgY29uc29sZS5lcnJvcignU2F2ZWRDaGF0c1NlcnZpY2U6ICcgKyBlcnJvck1zZyk7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZWQtY2hhdHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fzc2lzdGFudC9jaGF0L3NhdmVkLWNoYXRzL3NhdmVkLWNoYXRzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQXlCNUMsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixnQkFBZSxDQUFDO0lBRVQsSUFBSSxDQUFDLE1BQWlDO1FBQzNDLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMxQixNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7UUFDM0UsQ0FBQztJQUNILENBQUM7SUFFTSxTQUFTO1FBQ2QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWdCLENBQUM7UUFFckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLENBQUM7WUFDbEMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUMsQ0FBQztRQUN4RSxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUc7WUFDWCxNQUFNLEVBQUUsZUFBZTtZQUN2QixPQUFPLEVBQUUsTUFBTSxDQUFDLFVBQVUsRUFBRTtZQUM1QixV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QUcsUUFBUSxDQUFDLENBQUM7WUFDaEQsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7K0dBN0xVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07OzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAsIGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGdldCwgcG9zdCB9IGZyb20gJ0BzaW5lcXVhL2F0b21pYyc7XG5cbmltcG9ydCB7XG4gIENoYXRNZXNzYWdlLFxuICBTYXZlZENoYXQsXG4gIFNhdmVkQ2hhdEhpc3RvcnksXG4gIFNhdmVkQ2hhdFJlc3BvbnNlLFxuICBEZWxldGVTYXZlZENoYXRSZXNwb25zZVxufSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2F2ZWRDaGF0c09wZXJhdGlvbkNvbmZpZyB7XG4gIGdldEFwcE5hbWU6ICgpID0+IHN0cmluZztcbiAgZ2V0SW5zdGFuY2VJZDogKCkgPT4gc3RyaW5nO1xuICBnZXRSZXN0VXJsOiAoKSA9PiBzdHJpbmc7XG4gIGdldERlYnVnRmxhZzogKCkgPT4gYm9vbGVhbjtcbiAgaXNTYXZlZENoYXRzRW5hYmxlZDogKCkgPT4gYm9vbGVhbjtcblxuICBzZXRTYXZlZENoYXRzRXJyb3JTdGF0dXM6IChoYXNFcnJvcjogYm9vbGVhbikgPT4gdm9pZDtcbiAgdXBkYXRlU2F2ZWRDaGF0c0xpc3Q6IChjaGF0czogU2F2ZWRDaGF0W10pID0+IHZvaWQ7XG4gIGdlbmVyYXRlQXVkaXRFdmVudDogKHR5cGU6IHN0cmluZywgZGV0YWlsczogUmVjb3JkPHN0cmluZywgYW55PiwgaWQ/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFNhdmVkQ2hhdHNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBvcGVyYXRpb25Db25maWc6IFNhdmVkQ2hhdHNPcGVyYXRpb25Db25maWcgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIHB1YmxpYyBpbml0KGNvbmZpZzogU2F2ZWRDaGF0c09wZXJhdGlvbkNvbmZpZyk6IHZvaWQge1xuICAgIHRoaXMub3BlcmF0aW9uQ29uZmlnID0gY29uZmlnO1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVJbml0aWFsaXplZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMub3BlcmF0aW9uQ29uZmlnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NhdmVkQ2hhdHNTZXJ2aWNlIG5vdCBpbml0aWFsaXplZC4gQ2FsbCBpbml0KCkgZmlyc3QuJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGxpc3RDaGF0cygpOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZUluaXRpYWxpemVkKCk7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5vcGVyYXRpb25Db25maWchO1xuXG4gICAgaWYgKCFjb25maWcuaXNTYXZlZENoYXRzRW5hYmxlZCgpKSB7XG4gICAgICB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihcIk9wZXJhdGlvbnMgb24gc2F2ZWQgY2hhdHMgYXJlIGRpc2FibGVkXCIpKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgYWN0aW9uOiBcIlNhdmVkQ2hhdExpc3RcIixcbiAgICAgIGFwcE5hbWU6IGNvbmZpZy5nZXRBcHBOYW1lKCksXG4gICAgICBpbnN0YW5jZUlkOiBjb25maWcuZ2V0SW5zdGFuY2VJZCgpLFxuICAgICAgZGVidWc6IGNvbmZpZy5nZXREZWJ1Z0ZsYWcoKVxuICAgIH07XG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhPYmplY3QuZW50cmllcyhkYXRhKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBhY2Nba2V5XSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9IGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4pKTtcblxuICAgIGZyb20oZ2V0PHsgc2F2ZWRDaGF0czogU2F2ZWRDaGF0W10gfT4oYHBsdWdpbi8ke2NvbmZpZy5nZXRSZXN0VXJsKCl9YCwgc2VhcmNoUGFyYW1zKSkucGlwZShcbiAgICAgIHRhcChyZXMgPT4ge1xuICAgICAgICBjb25maWcudXBkYXRlU2F2ZWRDaGF0c0xpc3QocmVzLnNhdmVkQ2hhdHMpO1xuICAgICAgICBjb25maWcuc2V0U2F2ZWRDaGF0c0Vycm9yU3RhdHVzKGZhbHNlKTtcbiAgICAgIH0pLFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc3QgZXJyb3JNc2cgPSAnRXJyb3Igb2NjdXJyZWQgd2hpbGUgY2FsbGluZyB0aGUgU2F2ZWRDaGF0TGlzdCBBUEk6ICcgKyBlcnJvci5lcnJvcj8uZXJyb3JNZXNzYWdlO1xuICAgICAgICBjb25zb2xlLmVycm9yKCdTYXZlZENoYXRzU2VydmljZTogJyArIGVycm9yTXNnKTtcbiAgICAgICAgY29uZmlnLnNldFNhdmVkQ2hhdHNFcnJvclN0YXR1cyh0cnVlKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSlcbiAgICApLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGdldENoYXRCeUlkKGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNhdmVkQ2hhdEhpc3RvcnkgfCB1bmRlZmluZWQ+IHtcbiAgICB0aGlzLmVuc3VyZUluaXRpYWxpemVkKCk7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5vcGVyYXRpb25Db25maWchO1xuXG4gICAgaWYgKCFjb25maWcuaXNTYXZlZENoYXRzRW5hYmxlZCgpKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoXCJPcGVyYXRpb25zIG9uIHNhdmVkIGNoYXRzIGFyZSBkaXNhYmxlZFwiKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGFjdGlvbjogXCJTYXZlZENoYXRHZXRcIixcbiAgICAgIGFwcE5hbWU6IGNvbmZpZy5nZXRBcHBOYW1lKCksXG4gICAgICBpbnN0YW5jZUlkOiBjb25maWcuZ2V0SW5zdGFuY2VJZCgpLFxuICAgICAgY2hhdElkOiBpZCxcbiAgICAgIGRlYnVnOiBjb25maWcuZ2V0RGVidWdGbGFnKClcbiAgICB9O1xuICAgIGNvbnN0IHNlYXJjaFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoT2JqZWN0LmVudHJpZXMoZGF0YSkucmVkdWNlKChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgYWNjW2tleV0gPSBTdHJpbmcodmFsdWUpO1xuICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSk7XG5cbiAgICByZXR1cm4gZnJvbShnZXQ8eyBzYXZlZENoYXQ6IFNhdmVkQ2hhdEhpc3RvcnksIGV4ZWN1dGlvblRpbWVNaWxsaXNlY29uZHM6IG51bWJlciB9PihgcGx1Z2luLyR7Y29uZmlnLmdldFJlc3RVcmwoKX1gLCBzZWFyY2hQYXJhbXMpKS5waXBlKFxuICAgICAgdGFwKHJlcyA9PiB7XG4gICAgICAgIGNvbmZpZy5nZW5lcmF0ZUF1ZGl0RXZlbnQoJ2FzdC1zYXZlZC1jaGF0LmxvYWQnLCB7IGR1cmF0aW9uOiByZXMuZXhlY3V0aW9uVGltZU1pbGxpc2Vjb25kcyB9LCByZXMuc2F2ZWRDaGF0LmlkKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKHJlcyA9PiByZXMuc2F2ZWRDaGF0KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9yTXNnID0gJ0Vycm9yIG9jY3VycmVkIHdoaWxlIGNhbGxpbmcgdGhlIFNhdmVkQ2hhdEdldCBBUEk6ICcgKyBlcnJvci5lcnJvcj8uZXJyb3JNZXNzYWdlO1xuICAgICAgICBjb25zb2xlLmVycm9yKCdTYXZlZENoYXRzU2VydmljZTogJyArIGVycm9yTXNnKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGFkZENoYXQoaWQ6IHN0cmluZywgbWVzc2FnZXM6IENoYXRNZXNzYWdlW10pOiBPYnNlcnZhYmxlPFNhdmVkQ2hhdFJlc3BvbnNlPiB7XG4gICAgdGhpcy5lbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMub3BlcmF0aW9uQ29uZmlnITtcblxuICAgIGlmICghY29uZmlnLmlzU2F2ZWRDaGF0c0VuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKFwiT3BlcmF0aW9ucyBvbiBzYXZlZCBjaGF0cyBhcmUgZGlzYWJsZWRcIikpO1xuICAgIH1cblxuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBhY3Rpb246IFwiU2F2ZWRDaGF0QWRkXCIsXG4gICAgICBhcHBOYW1lOiBjb25maWcuZ2V0QXBwTmFtZSgpLFxuICAgICAgaW5zdGFuY2VJZDogY29uZmlnLmdldEluc3RhbmNlSWQoKSxcbiAgICAgIGNoYXRJZDogaWQsXG4gICAgICBoaXN0b3J5OiBtZXNzYWdlcyxcbiAgICAgIGRlYnVnOiBjb25maWcuZ2V0RGVidWdGbGFnKClcbiAgICB9O1xuXG4gICAgcmV0dXJuIGZyb20ocG9zdDxTYXZlZENoYXRSZXNwb25zZT4oYHBsdWdpbi8ke2NvbmZpZy5nZXRSZXN0VXJsKCl9YCwgZGF0YSkpLnBpcGUoXG4gICAgICB0YXAocmVzID0+IHtcbiAgICAgICAgY29uZmlnLmdlbmVyYXRlQXVkaXRFdmVudCgnYXN0LXNhdmVkLWNoYXQuYWRkJywgeyBkdXJhdGlvbjogcmVzLmV4ZWN1dGlvblRpbWVNaWxsaXNlY29uZHMgfSwgcmVzLnNhdmVkQ2hhdC5pZCk7XG4gICAgICB9KSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGVycm9yTXNnID0gJ0Vycm9yIG9jY3VycmVkIHdoaWxlIGNhbGxpbmcgdGhlIFNhdmVkQ2hhdEFkZCBBUEk6ICcgKyBlcnJvci5lcnJvcj8uZXJyb3JNZXNzYWdlO1xuICAgICAgICBjb25zb2xlLmVycm9yKCdTYXZlZENoYXRzU2VydmljZTogJyArIGVycm9yTXNnKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZUNoYXQoaWQ6IHN0cmluZywgbmFtZT86IHN0cmluZywgbWVzc2FnZXM/OiBDaGF0TWVzc2FnZVtdKTogT2JzZXJ2YWJsZTxTYXZlZENoYXRSZXNwb25zZT4ge1xuICAgIHRoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKTtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLm9wZXJhdGlvbkNvbmZpZyE7XG5cbiAgICBpZiAoIWNvbmZpZy5pc1NhdmVkQ2hhdHNFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihcIk9wZXJhdGlvbnMgb24gc2F2ZWQgY2hhdHMgYXJlIGRpc2FibGVkXCIpKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhOiBhbnkgPSB7XG4gICAgICBhY3Rpb246IFwiU2F2ZWRDaGF0VXBkYXRlXCIsXG4gICAgICBhcHBOYW1lOiBjb25maWcuZ2V0QXBwTmFtZSgpLFxuICAgICAgaW5zdGFuY2VJZDogY29uZmlnLmdldEluc3RhbmNlSWQoKSxcbiAgICAgIGNoYXRJZDogaWQsXG4gICAgICBkZWJ1ZzogY29uZmlnLmdldERlYnVnRmxhZygpXG4gICAgfTtcblxuICAgIGlmIChuYW1lKSBkYXRhW1widGl0bGVcIl0gPSBuYW1lO1xuICAgIGlmIChtZXNzYWdlcykgZGF0YVtcImhpc3RvcnlcIl0gPSBtZXNzYWdlcztcblxuICAgIHJldHVybiBmcm9tKHBvc3Q8U2F2ZWRDaGF0UmVzcG9uc2U+KGBwbHVnaW4vJHtjb25maWcuZ2V0UmVzdFVybCgpfWAsIGRhdGEpKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgY29uc3QgZXJyb3JNc2cgPSAnRXJyb3Igb2NjdXJyZWQgd2hpbGUgY2FsbGluZyB0aGUgU2F2ZWRDaGF0VXBkYXRlIEFQSTogJyArIGVycm9yLmVycm9yPy5lcnJvck1lc3NhZ2U7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NhdmVkQ2hhdHNTZXJ2aWNlOiAnICsgZXJyb3JNc2cpO1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZGVsZXRlQ2hhdChpZHM6IHN0cmluZ1tdKTogT2JzZXJ2YWJsZTxEZWxldGVTYXZlZENoYXRSZXNwb25zZT4ge1xuICAgIHRoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKTtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLm9wZXJhdGlvbkNvbmZpZyE7XG5cbiAgICBpZiAoIWNvbmZpZy5pc1NhdmVkQ2hhdHNFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IG5ldyBFcnJvcihcIk9wZXJhdGlvbnMgb24gc2F2ZWQgY2hhdHMgYXJlIGRpc2FibGVkXCIpKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgYWN0aW9uOiBcIlNhdmVkQ2hhdERlbGV0ZVwiLFxuICAgICAgYXBwTmFtZTogY29uZmlnLmdldEFwcE5hbWUoKSxcbiAgICAgIGluc3RhbmNlSWQ6IGNvbmZpZy5nZXRJbnN0YW5jZUlkKCksXG4gICAgICBjaGF0SWRzOiBpZHMsXG4gICAgICBkZWJ1ZzogY29uZmlnLmdldERlYnVnRmxhZygpXG4gICAgfTtcblxuICAgIHJldHVybiBmcm9tKHBvc3Q8RGVsZXRlU2F2ZWRDaGF0UmVzcG9uc2U+KGBwbHVnaW4vJHtjb25maWcuZ2V0UmVzdFVybCgpfWAsIGRhdGEpKS5waXBlKFxuICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGlzRXhpc3RpbmdDaGF0KGlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICB0aGlzLmVuc3VyZUluaXRpYWxpemVkKCk7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5vcGVyYXRpb25Db25maWchO1xuXG4gICAgaWYgKCFjb25maWcuaXNTYXZlZENoYXRzRW5hYmxlZCgpKSB7XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBuZXcgRXJyb3IoXCJPcGVyYXRpb25zIG9uIHNhdmVkIGNoYXRzIGFyZSBkaXNhYmxlZFwiKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGFjdGlvbjogXCJTYXZlZENoYXRFeGlzdFwiLFxuICAgICAgYXBwTmFtZTogY29uZmlnLmdldEFwcE5hbWUoKSxcbiAgICAgIGluc3RhbmNlSWQ6IGNvbmZpZy5nZXRJbnN0YW5jZUlkKCksXG4gICAgICBjaGF0SWQ6IGlkLFxuICAgICAgZGVidWc6IGNvbmZpZy5nZXREZWJ1Z0ZsYWcoKVxuICAgIH07XG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhPYmplY3QuZW50cmllcyhkYXRhKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBhY2Nba2V5XSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9IGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4pKTtcblxuICAgIHJldHVybiBmcm9tKGdldDx7IGV4aXN0czogYm9vbGVhbiwgZXhlY3V0aW9uVGltZTogc3RyaW5nLCBleGVjdXRpb25UaW1lTWlsbGlzZWNvbmRzOiBudW1iZXIgfT4oYHBsdWdpbi8ke2NvbmZpZy5nZXRSZXN0VXJsKCl9YCwgc2VhcmNoUGFyYW1zKSkucGlwZShcbiAgICAgIG1hcChyZXMgPT4gcmVzLmV4aXN0cyksXG4gICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICBjb25zdCBlcnJvck1zZyA9ICdFcnJvciBvY2N1cnJlZCB3aGlsZSBjYWxsaW5nIHRoZSBTYXZlZENoYXRFeGlzdCBBUEk6ICcgKyBlcnJvci5lcnJvcj8uZXJyb3JNZXNzYWdlO1xuICAgICAgICBjb25zb2xlLmVycm9yKCdTYXZlZENoYXRzU2VydmljZTogJyArIGVycm9yTXNnKTtcbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
@@ -20,10 +20,6 @@ export class AssistantConfigurationService {
20
20
  this.transloco = inject(TranslocoService);
21
21
  }
22
22
  init(context) {
23
- if (this.context) {
24
- console.warn('AssistantConfigurationService already initialized.');
25
- return;
26
- }
27
23
  this.context = context;
28
24
  }
29
25
  ensureInitialized() {
@@ -168,4 +164,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
168
164
  providedIn: 'root'
169
165
  }]
170
166
  }], ctorParameters: () => [] });
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaXN0YW50LWNvbmZpZ3VyYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fzc2lzdGFudC9jaGF0L3NlcnZpY2VzL2Fzc2lzdGFudC1jb25maWd1cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUNMLFFBQVEsRUFDUixjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLE1BQU0sR0FDUCxNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pFLE9BQU8sRUFBYyxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFpQnBFLE1BQU0sT0FBTyw2QkFBNkI7SUFVeEM7UUFQUSxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3JELHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVDLGlCQUFZLEdBQUcsTUFBTSxD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QU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJztcbmltcG9ydCB7XG4gIGZldGNoQXBwLFxuICBmZXRjaFByaW5jaXBhbCxcbiAgZmV0Y2hVc2VyU2V0dGluZ3MsXG4gIHNoYTUxMixcbn0gZnJvbSAnQHNpbmVxdWEvYXRvbWljJztcblxuaW1wb3J0IHsgRGlhbG9nVXBkYXRlc0NvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZ3MvdXBkYXRlcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gJy4vYXBwLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4vZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICcuL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFByaW5jaXBhbFNlcnZpY2UgfSBmcm9tICcuL3ByaW5jaXBhbC5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXR0aW5nc1dlYlNlcnZpY2UgfSBmcm9tICcuL3VzZXItc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBDaGF0Q29uZmlnLCBjaGF0Q29uZmlnU2NoZW1hIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0QXNzaXN0YW50SnNvbkZyb21DQ0FwcCB9IGZyb20gJy4uL3V0aWxzL2Fzc2lzdGFudC1qc29uJztcblxuZXhwb3J0IGludGVyZmFjZSBBc3Npc3RhbnRDb25maWd1cmF0aW9uT3BlcmF0aW9uQ29udGV4dCB7XG4gIGdldENoYXRJbnN0YW5jZUlkOiAoKSA9PiBzdHJpbmc7XG4gIGdldENoYXRJZDogKCkgPT4gc3RyaW5nO1xuICBnZXRBc3Npc3RhbnRDb25maWdWYWx1ZTogKCkgPT4gQ2hhdENvbmZpZyB8IHVuZGVmaW5lZDtcblxuICBzZXRBc3Npc3RhbnRDb25maWc6IChjb25maWc6IENoYXRDb25maWcgfCB1bmRlZmluZWQpID0+IHZvaWQ7XG4gIHNldFdTUmVxdWVzdHNVcmw6ICh1cmw6IHN0cmluZykgPT4gdm9pZDtcbiAgc2V0UkVTVFJlcXVlc3RzVXJsOiAodXJsOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHNldEluaXRDb25maWdTdGF0dXM6IChzdGF0dXM6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIGdlbmVyYXRlQXVkaXRFdmVudDogKHR5cGU6IHN0cmluZywgZGV0YWlsczogUmVjb3JkPHN0cmluZywgYW55PiwgaWQ/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFzc2lzdGFudENvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb250ZXh0OiBBc3Npc3RhbnRDb25maWd1cmF0aW9uT3BlcmF0aW9uQ29udGV4dCB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIGFwcFNlcnZpY2UgPSBpbmplY3QoQXBwU2VydmljZSk7XG4gIHByaXZhdGUgdXNlclNldHRpbmdzU2VydmljZSA9IGluamVjdChVc2VyU2V0dGluZ3NXZWJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBwcmluY2lwYWxTZXJ2aWNlID0gaW5qZWN0KFByaW5jaXBhbFNlcnZpY2UpO1xuICBwcml2YXRlIG1vZGFsU2VydmljZSA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBub3RpZmljYXRpb25zU2VydmljZSA9IGluamVjdChOb3RpZmljYXRpb25zU2VydmljZSk7XG4gIHByaXZhdGUgdHJhbnNsb2NvID0gaW5qZWN0KFRyYW5zbG9jb1NlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBwdWJsaWMgaW5pdChjb250ZXh0OiBBc3Npc3RhbnRDb25maWd1cmF0aW9uT3BlcmF0aW9uQ29udGV4dCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRleHQpIHtcbiAgICAgIGNvbnNvbGUud2FybignQXNzaXN0YW50Q29uZmlndXJhdGlvblNlcnZpY2UgYWxyZWFkeSBpbml0aWFsaXplZC4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgfVxuXG4gIHByaXZhdGUgZW5zdXJlSW5pdGlhbGl6ZWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmNvbnRleHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQXNzaXN0YW50Q29uZmlndXJhdGlvblNlcnZpY2Ugbm90IGluaXRpYWxpemVkLiBDYWxsIGluaXQoKSBmaXJzdC4nKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0QXNzaXN0YW50c1NldHRpbmcoKTogYW55IHtcbiAgICBpZiAoIXRoaXMudXNlclNldHRpbmdzU2VydmljZS51c2VyU2V0dGluZ3MpIHtcbiAgICAgIHRoaXMudXNlclNldHRpbmdzU2VydmljZS51c2VyU2V0dGluZ3MgPSB7fTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnVzZXJTZXR0aW5nc1NlcnZpY2UudXNlclNldHRpbmdzW1wiYXNzaXN0YW50c1wiXSkge1xuICAgICAgdGhpcy51c2VyU2V0dGluZ3NTZXJ2aWNlLnVzZXJTZXR0aW5nc1tcImFzc2lzdGFudHNcIl0gPSB7fTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudXNlclNldHRpbmdzU2VydmljZS51c2VyU2V0dGluZ3NbXCJhc3Npc3RhbnRzXCJdO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGluaXRDaGF0Q29uZmlnKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKTtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0ITtcblxuICAgIC8vIGZldGNoIHRoZSBzdGFuZGFyZCBhcHAgY29uZmlnIHRvIGdldCB0aGUgZGVmYXVsdFZhbHVlcyBvZiB0aGUgY2hhdCBjb25maWcgZm9yIHRoZSBnaXZlbiBpbnN0YW5jZVxuICAgIC8vIFBlcnNpc3QgdGhlIGFwcCBpbiB0aGUgYXBwIHNlcnZpY2VcbiAgICBjb25zdCBjYXBwID0gYXdhaXQgZmV0Y2hBcHAoKTtcbiAgICB0aGlzLmFwcFNlcnZpY2UuYXBwID0gY2FwcDtcblxuICAgIGNvbnN0IHNldHRpbmdzID0gYXdhaXQgZmV0Y2hVc2VyU2V0dGluZ3M8e30+KCk7XG4gICAgdGhpcy51c2VyU2V0dGluZ3NTZXJ2aWNlLnVzZXJTZXR0aW5ncyA9IHNldHRpbmdzO1xuICAgIGNvbnN0IGtleSA9IGNvbnRleHQuZ2V0Q2hhdEluc3RhbmNlSWQoKTtcbiAgICBjb25zdCB1c2VyU2V0dGluZ3NDb25maWcgPSB0aGlzLmdldEFzc2lzdGFudHNTZXR0aW5nKClba2V5XSB8fCB7fTtcblxuICAgIGNvbnN0IHByaW5jaXBhbCA9IGF3YWl0IGZldGNoUHJpbmNpcGFsKCk7XG4gICAgdGhpcy5wcmluY2lwYWxTZXJ2aWNlLnByaW5jaXBhbCA9IHByaW5jaXBhbDtcblxuICAgIGNvbnN0IHN0YW5kYXJkQ2hhdENvbmZpZyA9IGdldEFzc2lzdGFudEpzb25Gcm9tQ0NBcHAodGhpcy5hcHBTZXJ2aWNlLmFwcCwga2V5KTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBWYWxpZGF0ZSB0aGUgd2hvbGUgY29uZmlnIG9iamVjdCBhZ2FpbnN0IHRoZSBzY2hlbWFcbiAgICAgIGNoYXRDb25maWdTY2hlbWEucGFyc2Uoc3RhbmRhcmRDaGF0Q29uZmlnKTtcbiAgICAgIC8vIElmIHRoZSB1c2VyIHByZWZlcmVuY2VzIGRvIG5vdCBjb250YWluIGEgY29uZmlnJ3MgZGVmYXVsdFZhbHVlcyBvYmplY3QsIGtlZXAgdXNpbmcgdGhlIHN0YW5kYXJkIGFwcCBjb25maWcgYW5kIG5vdGhpbmcgdG8gc3RvcmUgaW4gdGhlIHVzZXIgcHJlZmVyZW5jZXNcbiAgICAgIGlmICghdXNlclNldHRpbmdzQ29uZmlnLmRlZmF1bHRWYWx1ZXMpIHtcbiAgICAgICAgY29udGV4dC5zZXRBc3Npc3RhbnRDb25maWcoeyAuLi5zdGFuZGFyZENoYXRDb25maWcgfSk7XG4gICAgICAgIGNvbnRleHQuc2V0SW5pdENvbmZpZ1N0YXR1cyh0cnVlKTtcbiAgICAgIH0gZWxzZSB7Ly8gSWYgdGhlIHVzZXIgaGFzIGl0cyBvd24gZGVmYXVsdFZhbHVlcyBpbiBpdHMgdXNlclNldHRpbmdzLCB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgZm9yIHBvdGVudGlhbCB1cGRhdGVzIG1hZGUgYnkgYWRtaW5zIGluIHRoZSBtZWFudGltZSBhbmQgaG93IGhlIHdhbnRzIHRvIG1hbmFnZSB0aGVtXG5cbiAgICAgICAgLy8gUmV0cmlldmUgYWxyZWFkeSBzdG9yZWQgaGFzaGVzIGluIHRoZSB1c2VyIHNldHRpbmdzIGlmIGV4aXN0c1xuICAgICAgICBjb25zdCBhcHBsaWVkRGVmYXVsdFZhbHVlc0hhc2ggPSB1c2VyU2V0dGluZ3NDb25maWcuaGFzaGVzPy5bXCJhcHBsaWVkLWRlZmF1bHRWYWx1ZXMtaGFzaFwiXTtcbiAgICAgICAgY29uc3Qgc2tpcHBlZERlZmF1bHRWYWx1ZXNIYXNoID0gdXNlclNldHRpbmdzQ29uZmlnLmhhc2hlcz8uW1wic2tpcHBlZC1kZWZhdWx0VmFsdWVzLWhhc2hcIl07XG4gICAgICAgIC8vIENyZWF0ZSBhIGhhc2ggb2YgdGhlIGN1cnJlbnQgZGVmYXVsdFZhbHVlcyBvZiB0aGUgc3RhbmRhcmRDaGF0Q29uZmlnXG4gICAgICAgIGNvbnN0IGN1cnJlbnREZWZhdWx0VmFsdWVzSGFzaCA9IGF3YWl0IHNoYTUxMihKU09OLnN0cmluZ2lmeShzdGFuZGFyZENoYXRDb25maWcuZGVmYXVsdFZhbHVlcykpO1xuXG4gICAgICAgIC8vIEltcGxlbWVudCB0aGUgdHJhY2tpbmcgbWVjaGFuaXNtIHRvIG5vdGlmeSB0aGUgdXNlciBhYm91dCB0aGUgYXZhaWxhYmxlIHVwZGF0ZXMgaW4gdGhlIGRlZmF1bHRWYWx1ZXMgb2JqZWN0IG9mIHRoZSBzdGFuZGFyZCBhcHAgY29uZmlnXG4gICAgICAgIGNvbnN0IGNvbmRpdGlvbiA9IChjdXJyZW50RGVmYXVsdFZhbHVlc0hhc2ggIT09IGFwcGxpZWREZWZhdWx0VmFsdWVzSGFzaCkgJiYgKGN1cnJlbnREZWZhdWx0VmFsdWVzSGFzaCAhPT0gc2tpcHBlZERlZmF1bHRWYWx1ZXNIYXNoKTtcbiAgICAgICAgaWYgKGNvbmRpdGlvbikge1xuICAgICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oRGlhbG9nVXBkYXRlc0NvbXBvbmVudClcbiAgICAgICAgICAgIC50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICAgIGlmIChyZXMgPT09IFwiZGlhbG9nLWNvbmZpcm1cIikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hlcyA9IHsgLi4udXNlclNldHRpbmdzQ29uZmlnLmhhc2hlcywgXCJhcHBsaWVkLWRlZmF1bHRWYWx1ZXMtaGFzaFwiOiBjdXJyZW50RGVmYXVsdFZhbHVlc0hhc2gsIFwic2tpcHBlZC1kZWZhdWx0VmFsdWVzLWhhc2hcIjogdW5kZWZpbmVkIH07XG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBjaGF0IGNvbmZpZyBhbmQgc3RvcmUgaXRzIGRlZmF1bHRWYWx1ZXMgaW4gdGhlIHVzZXIgcHJlZmVyZW5jZXNcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNoYXRDb25maWcoeyAuLi5zdGFuZGFyZENoYXRDb25maWcgfSwgaGFzaGVzLCB0cnVlKTtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldEluaXRDb25maWdTdGF0dXModHJ1ZSk7XG4gICAgICAgICAgICAgICAgY29udGV4dC5nZW5lcmF0ZUF1ZGl0RXZlbnQoXCJhc3QtY29uZmlndXJhdGlvbi5jbGlja1wiLCB7ICdjb25maWd1cmF0aW9uJzogSlNPTi5zdHJpbmdpZnkoeyAuLi5zdGFuZGFyZENoYXRDb25maWcgfSkgfSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzID09PSBcImRpYWxvZy1ub1wiKSB7XG4gICAgICAgICAgICAgICAgLy8gRG8gbm90IG5vdGlmeSB0aGUgdXNlciBhYm91dCBjaGFuZ2VzIHdoaWxlIHRoaXMgc2tpcHBlZCB2ZXJzaW9uIGlzIG5vdCB1cGRhdGVkXG4gICAgICAgICAgICAgICAgY29uc3QgaGFzaGVzID0geyAuLi51c2VyU2V0dGluZ3NDb25maWcuaGFzaGVzLCBcInNraXBwZWQtZGVmYXVsdFZhbHVlcy1oYXNoXCI6IGN1cnJlbnREZWZhdWx0VmFsdWVzSGFzaCB9O1xuICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2hhdENvbmZpZyh7IC4uLnN0YW5kYXJkQ2hhdENvbmZpZywgZGVmYXVsdFZhbHVlczogdXNlclNldHRpbmdzQ29uZmlnLmRlZmF1bHRWYWx1ZXMgfSwgaGFzaGVzLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgY29udGV4dC5zZXRJbml0Q29uZmlnU3RhdHVzKHRydWUpO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEp1c3QgcGljayB0aGUgdmVyc2lvbiBpbiB0aGUgdXNlciBzZXR0aW5ncywgbm90aGluZyB0byBiZSB1cGRhdGVkXG4gICAgICAgICAgICAgICAgY29udGV4dC5zZXRBc3Npc3RhbnRDb25maWcoeyAuLi5zdGFuZGFyZENoYXRDb25maWcsIGRlZmF1bHRWYWx1ZXM6IHVzZXJTZXR0aW5nc0NvbmZpZy5kZWZhdWx0VmFsdWVzIH0pO1xuICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0SW5pdENvbmZpZ1N0YXR1cyh0cnVlKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gTm8gYXZhaWxhYmxlIHVwZGF0ZXMgT3IgdXBkYXRlcyBoYXMgYmVlbiBhbHJlYWR5IHNraXBwZWQsIHRoZW4ganVzdCBwaWNrIHRoZSB2ZXJzaW9uIGluIHRoZSB1c2VyIHNldHRpbmdzXG4gICAgICAgICAgY29udGV4dC5zZXRBc3Npc3RhbnRDb25maWcoeyAuLi5zdGFuZGFyZENoYXRDb25maWcsIGRlZmF1bHRWYWx1ZXM6IHVzZXJTZXR0aW5nc0NvbmZpZy5kZWZhdWx0VmFsdWVzIH0pO1xuICAgICAgICAgIGNvbnRleHQuc2V0SW5pdENvbmZpZ1N0YXR1cyh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmVycm9yKGBNaXNzaW5nIHZhbGlkIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhc3Npc3RhbnQgaW5zdGFuY2UgJyR7a2V5fScuIFNlZSB0aGUgYnJvd3NlciBjb25zb2xlIG1lc3NhZ2VzIGZvciBkZXRhaWxzIG9uIHRoZSBtaXNzaW5nIG9yIGluY29ycmVjdCBwcm9wZXJ0aWVzLmApO1xuICAgICAgLy8gRW5zdXJlIGVycm9yIGlzIHByb3Blcmx5IHR5cGVkIGZvciBhY2Nlc3NpbmcgJ2lzc3VlcydcbiAgICAgIGNvbnN0IGlzc3VlcyA9IChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmICdpc3N1ZXMnIGluIGVycm9yKSA/IChlcnJvciBhcyBhbnkpLmlzc3VlcyA6IHVuZGVmaW5lZDtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyB2YWxpZCBjb25maWd1cmF0aW9uIGZvciB0aGUgYXNzaXN0YW50IGluc3RhbmNlICcke2tleX0nIC4gXFxuICR7SlNPTi5zdHJpbmdpZnkoaXNzdWVzLCBudWxsLCAyKX1gKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQ2hhdENvbmZpZyhcbiAgICBjb25maWc6IENoYXRDb25maWcsXG4gICAgaGFzaGVzPzogeyBcImFwcGxpZWQtZGVmYXVsdFZhbHVlcy1oYXNoXCI/OiBzdHJpbmcsIFwic2tpcHBlZC1kZWZhdWx0VmFsdWVzLWhhc2hcIj86IHN0cmluZyB9LFxuICAgIG5vdGlmeSA9IHRydWUsXG4gICAgc3VjY2Vzc0NhbGxiYWNrPzogKCkgPT4gYW55LFxuICAgIGVycm9yQ2FsbGJhY2s/OiAoKSA9PiBhbnlcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5lbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNvbnRleHQhO1xuXG4gICAgY29udGV4dC5zZXRBc3Npc3RhbnRDb25maWcoY29uZmlnKTtcblxuICAgIGNvbnN0IGFzc2lzdGFudHMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmdldEFzc2lzdGFudHNTZXR0aW5nKCkpO1xuICAgIGNvbnN0IGNoYXRJbnN0YW5jZUlkID0gY29udGV4dC5nZXRDaGF0SW5zdGFuY2VJZCgpO1xuICAgIGFzc2lzdGFudHNbY2hhdEluc3RhbmNlSWRdID0geyAuLi5hc3Npc3RhbnRzW2NoYXRJbnN0YW5jZUlkXSwgZGVmYXVsdFZhbHVlczogY29uZmlnLmRlZmF1bHRWYWx1ZXMgfTtcbiAgICBpZiAoaGFzaGVzKSBhc3Npc3RhbnRzW2NoYXRJbnN0YW5jZUlkXS5oYXNoZXMgPSBoYXNoZXM7XG5cbiAgICB0aGlzLnVzZXJTZXR0aW5nc1NlcnZpY2UucGF0Y2goeyBhc3Npc3RhbnRzIH0pLnN1YnNjcmliZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKG5vdGlmeSkge1xuICAgICAgICAgIGlmIChzdWNjZXNzQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjaygpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLnN1Y2Nlc3ModGhpcy50cmFuc2xvY28udHJhbnNsYXRlKCdjaGF0LnNhdmVDaGF0Q29uZmlnLnN1Y2Nlc3MnLCB7IHZhbHVlOiBjaGF0SW5zdGFuY2VJZCB9KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3IgPT4ge1xuICAgICAgICBpZiAobm90aWZ5KSB7XG4gICAgICAgICAgaWYgKGVycm9yQ2FsbGJhY2spIHtcbiAgICAgICAgICAgIGVycm9yQ2FsbGJhY2soKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5lcnJvcih0aGlzLnRyYW5zbG9jby50cmFuc2xhdGUoJ2NoYXQuc2F2ZUNoYXRDb25maWcuZmFpbCcsIHsgdmFsdWU6IGNoYXRJbnN0YW5jZUlkIH0pKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5lcnJvcihcIkNvdWxkIG5vdCBwYXRjaCBhc3Npc3RhbnRzIVwiLCBlcnJvcik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRXU1JlcXVlc3RzVXJsKCkge1xuICAgIHRoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKTtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0ITtcbiAgICBjb25zdCB1cmwgPSBjb250ZXh0LmdldEFzc2lzdGFudENvbmZpZ1ZhbHVlKCk/LmNvbm5lY3Rpb25TZXR0aW5ncy53ZWJzb2NrZXRFbmRwb2ludDtcbiAgICBpZiAodXJsKSB7XG4gICAgICBjb250ZXh0LnNldFdTUmVxdWVzdHNVcmwodXJsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgcHJvcGVydHkgJ3dlYnNvY2tldEVuZHBvaW50JyBtdXN0IGJlIHByb3ZpZGVkYCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFJFU1RSZXF1ZXN0c1VybCgpIHtcbiAgICB0aGlzLmVuc3VyZUluaXRpYWxpemVkKCk7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuY29udGV4dCE7XG4gICAgY29uc3QgdXJsID0gY29udGV4dC5nZXRBc3Npc3RhbnRDb25maWdWYWx1ZSgpPy5jb25uZWN0aW9uU2V0dGluZ3MucmVzdEVuZHBvaW50O1xuICAgIGlmICh1cmwpIHtcbiAgICAgIGNvbnRleHQuc2V0UkVTVFJlcXVlc3RzVXJsKHVybCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHByb3BlcnR5ICdyZXN0RW5kcG9pbnQnIG11c3QgYmUgcHJvdmlkZWRgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaXN0YW50LWNvbmZpZ3VyYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fzc2lzdGFudC9jaGF0L3NlcnZpY2VzL2Fzc2lzdGFudC1jb25maWd1cmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdEQsT0FBTyxFQUNMLFFBQVEsRUFDUixjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLE1BQU0sR0FDUCxNQUFNLGlCQUFpQixDQUFDO0FBRXpCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ2pFLE9BQU8sRUFBYyxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN4RCxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFpQnBFLE1BQU0sT0FBTyw2QkFBNkI7SUFVeEM7UUFQUSxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLHdCQUFtQixHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3JELHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVDLGlCQUFZLEdBQUcsTUFBTSxD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O1lBQ0gsQ0FBQztZQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsNkJBQTZCLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdEQsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRU0sZ0JBQWdCO1FBQ3JCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFRLENBQUM7UUFDOUIsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLHVCQUF1QixFQUFFLEVBQUUsa0JBQWtCLENBQUMsaUJBQWlCLENBQUM7UUFDcEYsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNoQyxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztRQUN2RSxDQUFDO0lBQ0gsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBUSxDQUFDO1FBQzlCLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxFQUFFLGtCQUFrQixDQUFDLFlBQVksQ0FBQztRQUMvRSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsT0FBTyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7SUFDSCxDQUFDOytHQWxLVSw2QkFBNkI7bUhBQTdCLDZCQUE2QixjQUY1QixNQUFNOzs0RkFFUCw2QkFBNkI7a0JBSHpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xvY29TZXJ2aWNlIH0gZnJvbSAnQGpzdmVyc2UvdHJhbnNsb2NvJztcbmltcG9ydCB7XG4gIGZldGNoQXBwLFxuICBmZXRjaFByaW5jaXBhbCxcbiAgZmV0Y2hVc2VyU2V0dGluZ3MsXG4gIHNoYTUxMixcbn0gZnJvbSAnQHNpbmVxdWEvYXRvbWljJztcblxuaW1wb3J0IHsgRGlhbG9nVXBkYXRlc0NvbXBvbmVudCB9IGZyb20gJy4uL2RpYWxvZ3MvdXBkYXRlcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXBwU2VydmljZSB9IGZyb20gJy4vYXBwLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJy4vZGlhbG9nLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICcuL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFByaW5jaXBhbFNlcnZpY2UgfSBmcm9tICcuL3ByaW5jaXBhbC5zZXJ2aWNlJztcbmltcG9ydCB7IFVzZXJTZXR0aW5nc1dlYlNlcnZpY2UgfSBmcm9tICcuL3VzZXItc2V0dGluZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBDaGF0Q29uZmlnLCBjaGF0Q29uZmlnU2NoZW1hIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0QXNzaXN0YW50SnNvbkZyb21DQ0FwcCB9IGZyb20gJy4uL3V0aWxzL2Fzc2lzdGFudC1qc29uJztcblxuZXhwb3J0IGludGVyZmFjZSBBc3Npc3RhbnRDb25maWd1cmF0aW9uT3BlcmF0aW9uQ29udGV4dCB7XG4gIGdldENoYXRJbnN0YW5jZUlkOiAoKSA9PiBzdHJpbmc7XG4gIGdldENoYXRJZDogKCkgPT4gc3RyaW5nO1xuICBnZXRBc3Npc3RhbnRDb25maWdWYWx1ZTogKCkgPT4gQ2hhdENvbmZpZyB8IHVuZGVmaW5lZDtcblxuICBzZXRBc3Npc3RhbnRDb25maWc6IChjb25maWc6IENoYXRDb25maWcgfCB1bmRlZmluZWQpID0+IHZvaWQ7XG4gIHNldFdTUmVxdWVzdHNVcmw6ICh1cmw6IHN0cmluZykgPT4gdm9pZDtcbiAgc2V0UkVTVFJlcXVlc3RzVXJsOiAodXJsOiBzdHJpbmcpID0+IHZvaWQ7XG4gIHNldEluaXRDb25maWdTdGF0dXM6IChzdGF0dXM6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIGdlbmVyYXRlQXVkaXRFdmVudDogKHR5cGU6IHN0cmluZywgZGV0YWlsczogUmVjb3JkPHN0cmluZywgYW55PiwgaWQ/OiBzdHJpbmcpID0+IFByb21pc2U8dm9pZD47XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEFzc2lzdGFudENvbmZpZ3VyYXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb250ZXh0OiBBc3Npc3RhbnRDb25maWd1cmF0aW9uT3BlcmF0aW9uQ29udGV4dCB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIGFwcFNlcnZpY2UgPSBpbmplY3QoQXBwU2VydmljZSk7XG4gIHByaXZhdGUgdXNlclNldHRpbmdzU2VydmljZSA9IGluamVjdChVc2VyU2V0dGluZ3NXZWJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBwcmluY2lwYWxTZXJ2aWNlID0gaW5qZWN0KFByaW5jaXBhbFNlcnZpY2UpO1xuICBwcml2YXRlIG1vZGFsU2VydmljZSA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBub3RpZmljYXRpb25zU2VydmljZSA9IGluamVjdChOb3RpZmljYXRpb25zU2VydmljZSk7XG4gIHByaXZhdGUgdHJhbnNsb2NvID0gaW5qZWN0KFRyYW5zbG9jb1NlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBwdWJsaWMgaW5pdChjb250ZXh0OiBBc3Npc3RhbnRDb25maWd1cmF0aW9uT3BlcmF0aW9uQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZUluaXRpYWxpemVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250ZXh0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fzc2lzdGFudENvbmZpZ3VyYXRpb25TZXJ2aWNlIG5vdCBpbml0aWFsaXplZC4gQ2FsbCBpbml0KCkgZmlyc3QuJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldEFzc2lzdGFudHNTZXR0aW5nKCk6IGFueSB7XG4gICAgaWYgKCF0aGlzLnVzZXJTZXR0aW5nc1NlcnZpY2UudXNlclNldHRpbmdzKSB7XG4gICAgICB0aGlzLnVzZXJTZXR0aW5nc1NlcnZpY2UudXNlclNldHRpbmdzID0ge307XG4gICAgfVxuICAgIGlmICghdGhpcy51c2VyU2V0dGluZ3NTZXJ2aWNlLnVzZXJTZXR0aW5nc1tcImFzc2lzdGFudHNcIl0pIHtcbiAgICAgIHRoaXMudXNlclNldHRpbmdzU2VydmljZS51c2VyU2V0dGluZ3NbXCJhc3Npc3RhbnRzXCJdID0ge307XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVzZXJTZXR0aW5nc1NlcnZpY2UudXNlclNldHRpbmdzW1wiYXNzaXN0YW50c1wiXTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBpbml0Q2hhdENvbmZpZygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLmVuc3VyZUluaXRpYWxpemVkKCk7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuY29udGV4dCE7XG5cbiAgICAvLyBmZXRjaCB0aGUgc3RhbmRhcmQgYXBwIGNvbmZpZyB0byBnZXQgdGhlIGRlZmF1bHRWYWx1ZXMgb2YgdGhlIGNoYXQgY29uZmlnIGZvciB0aGUgZ2l2ZW4gaW5zdGFuY2VcbiAgICAvLyBQZXJzaXN0IHRoZSBhcHAgaW4gdGhlIGFwcCBzZXJ2aWNlXG4gICAgY29uc3QgY2FwcCA9IGF3YWl0IGZldGNoQXBwKCk7XG4gICAgdGhpcy5hcHBTZXJ2aWNlLmFwcCA9IGNhcHA7XG5cbiAgICBjb25zdCBzZXR0aW5ncyA9IGF3YWl0IGZldGNoVXNlclNldHRpbmdzPHt9PigpO1xuICAgIHRoaXMudXNlclNldHRpbmdzU2VydmljZS51c2VyU2V0dGluZ3MgPSBzZXR0aW5ncztcbiAgICBjb25zdCBrZXkgPSBjb250ZXh0LmdldENoYXRJbnN0YW5jZUlkKCk7XG4gICAgY29uc3QgdXNlclNldHRpbmdzQ29uZmlnID0gdGhpcy5nZXRBc3Npc3RhbnRzU2V0dGluZygpW2tleV0gfHwge307XG5cbiAgICBjb25zdCBwcmluY2lwYWwgPSBhd2FpdCBmZXRjaFByaW5jaXBhbCgpO1xuICAgIHRoaXMucHJpbmNpcGFsU2VydmljZS5wcmluY2lwYWwgPSBwcmluY2lwYWw7XG5cbiAgICBjb25zdCBzdGFuZGFyZENoYXRDb25maWcgPSBnZXRBc3Npc3RhbnRKc29uRnJvbUNDQXBwKHRoaXMuYXBwU2VydmljZS5hcHAsIGtleSk7XG5cbiAgICB0cnkge1xuICAgICAgLy8gVmFsaWRhdGUgdGhlIHdob2xlIGNvbmZpZyBvYmplY3QgYWdhaW5zdCB0aGUgc2NoZW1hXG4gICAgICBjaGF0Q29uZmlnU2NoZW1hLnBhcnNlKHN0YW5kYXJkQ2hhdENvbmZpZyk7XG4gICAgICAvLyBJZiB0aGUgdXNlciBwcmVmZXJlbmNlcyBkbyBub3QgY29udGFpbiBhIGNvbmZpZydzIGRlZmF1bHRWYWx1ZXMgb2JqZWN0LCBrZWVwIHVzaW5nIHRoZSBzdGFuZGFyZCBhcHAgY29uZmlnIGFuZCBub3RoaW5nIHRvIHN0b3JlIGluIHRoZSB1c2VyIHByZWZlcmVuY2VzXG4gICAgICBpZiAoIXVzZXJTZXR0aW5nc0NvbmZpZy5kZWZhdWx0VmFsdWVzKSB7XG4gICAgICAgIGNvbnRleHQuc2V0QXNzaXN0YW50Q29uZmlnKHsgLi4uc3RhbmRhcmRDaGF0Q29uZmlnIH0pO1xuICAgICAgICBjb250ZXh0LnNldEluaXRDb25maWdTdGF0dXModHJ1ZSk7XG4gICAgICB9IGVsc2Ugey8vIElmIHRoZSB1c2VyIGhhcyBpdHMgb3duIGRlZmF1bHRWYWx1ZXMgaW4gaXRzIHVzZXJTZXR0aW5ncywgdGhlbiB3ZSBuZWVkIHRvIGNoZWNrIGZvciBwb3RlbnRpYWwgdXBkYXRlcyBtYWRlIGJ5IGFkbWlucyBpbiB0aGUgbWVhbnRpbWUgYW5kIGhvdyBoZSB3YW50cyB0byBtYW5hZ2UgdGhlbVxuXG4gICAgICAgIC8vIFJldHJpZXZlIGFscmVhZHkgc3RvcmVkIGhhc2hlcyBpbiB0aGUgdXNlciBzZXR0aW5ncyBpZiBleGlzdHNcbiAgICAgICAgY29uc3QgYXBwbGllZERlZmF1bHRWYWx1ZXNIYXNoID0gdXNlclNldHRpbmdzQ29uZmlnLmhhc2hlcz8uW1wiYXBwbGllZC1kZWZhdWx0VmFsdWVzLWhhc2hcIl07XG4gICAgICAgIGNvbnN0IHNraXBwZWREZWZhdWx0VmFsdWVzSGFzaCA9IHVzZXJTZXR0aW5nc0NvbmZpZy5oYXNoZXM/LltcInNraXBwZWQtZGVmYXVsdFZhbHVlcy1oYXNoXCJdO1xuICAgICAgICAvLyBDcmVhdGUgYSBoYXNoIG9mIHRoZSBjdXJyZW50IGRlZmF1bHRWYWx1ZXMgb2YgdGhlIHN0YW5kYXJkQ2hhdENvbmZpZ1xuICAgICAgICBjb25zdCBjdXJyZW50RGVmYXVsdFZhbHVlc0hhc2ggPSBhd2FpdCBzaGE1MTIoSlNPTi5zdHJpbmdpZnkoc3RhbmRhcmRDaGF0Q29uZmlnLmRlZmF1bHRWYWx1ZXMpKTtcblxuICAgICAgICAvLyBJbXBsZW1lbnQgdGhlIHRyYWNraW5nIG1lY2hhbmlzbSB0byBub3RpZnkgdGhlIHVzZXIgYWJvdXQgdGhlIGF2YWlsYWJsZSB1cGRhdGVzIGluIHRoZSBkZWZhdWx0VmFsdWVzIG9iamVjdCBvZiB0aGUgc3RhbmRhcmQgYXBwIGNvbmZpZ1xuICAgICAgICBjb25zdCBjb25kaXRpb24gPSAoY3VycmVudERlZmF1bHRWYWx1ZXNIYXNoICE9PSBhcHBsaWVkRGVmYXVsdFZhbHVlc0hhc2gpICYmIChjdXJyZW50RGVmYXVsdFZhbHVlc0hhc2ggIT09IHNraXBwZWREZWZhdWx0VmFsdWVzSGFzaCk7XG4gICAgICAgIGlmIChjb25kaXRpb24pIHtcbiAgICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKERpYWxvZ1VwZGF0ZXNDb21wb25lbnQpXG4gICAgICAgICAgICAudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgICBpZiAocmVzID09PSBcImRpYWxvZy1jb25maXJtXCIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBoYXNoZXMgPSB7IC4uLnVzZXJTZXR0aW5nc0NvbmZpZy5oYXNoZXMsIFwiYXBwbGllZC1kZWZhdWx0VmFsdWVzLWhhc2hcIjogY3VycmVudERlZmF1bHRWYWx1ZXNIYXNoLCBcInNraXBwZWQtZGVmYXVsdFZhbHVlcy1oYXNoXCI6IHVuZGVmaW5lZCB9O1xuICAgICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgY2hhdCBjb25maWcgYW5kIHN0b3JlIGl0cyBkZWZhdWx0VmFsdWVzIGluIHRoZSB1c2VyIHByZWZlcmVuY2VzXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDaGF0Q29uZmlnKHsgLi4uc3RhbmRhcmRDaGF0Q29uZmlnIH0sIGhhc2hlcywgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgY29udGV4dC5zZXRJbml0Q29uZmlnU3RhdHVzKHRydWUpO1xuICAgICAgICAgICAgICAgIGNvbnRleHQuZ2VuZXJhdGVBdWRpdEV2ZW50KFwiYXN0LWNvbmZpZ3VyYXRpb24uY2xpY2tcIiwgeyAnY29uZmlndXJhdGlvbic6IEpTT04uc3RyaW5naWZ5KHsgLi4uc3RhbmRhcmRDaGF0Q29uZmlnIH0pIH0pO1xuICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PT0gXCJkaWFsb2ctbm9cIikge1xuICAgICAgICAgICAgICAgIC8vIERvIG5vdCBub3RpZnkgdGhlIHVzZXIgYWJvdXQgY2hhbmdlcyB3aGlsZSB0aGlzIHNraXBwZWQgdmVyc2lvbiBpcyBub3QgdXBkYXRlZFxuICAgICAgICAgICAgICAgIGNvbnN0IGhhc2hlcyA9IHsgLi4udXNlclNldHRpbmdzQ29uZmlnLmhhc2hlcywgXCJza2lwcGVkLWRlZmF1bHRWYWx1ZXMtaGFzaFwiOiBjdXJyZW50RGVmYXVsdFZhbHVlc0hhc2ggfTtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNoYXRDb25maWcoeyAuLi5zdGFuZGFyZENoYXRDb25maWcsIGRlZmF1bHRWYWx1ZXM6IHVzZXJTZXR0aW5nc0NvbmZpZy5kZWZhdWx0VmFsdWVzIH0sIGhhc2hlcywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0SW5pdENvbmZpZ1N0YXR1cyh0cnVlKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAvLyBKdXN0IHBpY2sgdGhlIHZlcnNpb24gaW4gdGhlIHVzZXIgc2V0dGluZ3MsIG5vdGhpbmcgdG8gYmUgdXBkYXRlZFxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0QXNzaXN0YW50Q29uZmlnKHsgLi4uc3RhbmRhcmRDaGF0Q29uZmlnLCBkZWZhdWx0VmFsdWVzOiB1c2VyU2V0dGluZ3NDb25maWcuZGVmYXVsdFZhbHVlcyB9KTtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldEluaXRDb25maWdTdGF0dXModHJ1ZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE5vIGF2YWlsYWJsZSB1cGRhdGVzIE9yIHVwZGF0ZXMgaGFzIGJlZW4gYWxyZWFkeSBza2lwcGVkLCB0aGVuIGp1c3QgcGljayB0aGUgdmVyc2lvbiBpbiB0aGUgdXNlciBzZXR0aW5nc1xuICAgICAgICAgIGNvbnRleHQuc2V0QXNzaXN0YW50Q29uZmlnKHsgLi4uc3RhbmRhcmRDaGF0Q29uZmlnLCBkZWZhdWx0VmFsdWVzOiB1c2VyU2V0dGluZ3NDb25maWcuZGVmYXVsdFZhbHVlcyB9KTtcbiAgICAgICAgICBjb250ZXh0LnNldEluaXRDb25maWdTdGF0dXModHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5lcnJvcihgTWlzc2luZyB2YWxpZCBjb25maWd1cmF0aW9uIGZvciB0aGUgYXNzaXN0YW50IGluc3RhbmNlICcke2tleX0nLiBTZWUgdGhlIGJyb3dzZXIgY29uc29sZSBtZXNzYWdlcyBmb3IgZGV0YWlscyBvbiB0aGUgbWlzc2luZyBvciBpbmNvcnJlY3QgcHJvcGVydGllcy5gKTtcbiAgICAgIC8vIEVuc3VyZSBlcnJvciBpcyBwcm9wZXJseSB0eXBlZCBmb3IgYWNjZXNzaW5nICdpc3N1ZXMnXG4gICAgICBjb25zdCBpc3N1ZXMgPSAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiAnaXNzdWVzJyBpbiBlcnJvcikgPyAoZXJyb3IgYXMgYW55KS5pc3N1ZXMgOiB1bmRlZmluZWQ7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgdmFsaWQgY29uZmlndXJhdGlvbiBmb3IgdGhlIGFzc2lzdGFudCBpbnN0YW5jZSAnJHtrZXl9JyAuIFxcbiAke0pTT04uc3RyaW5naWZ5KGlzc3VlcywgbnVsbCwgMil9YCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZUNoYXRDb25maWcoXG4gICAgY29uZmlnOiBDaGF0Q29uZmlnLFxuICAgIGhhc2hlcz86IHsgXCJhcHBsaWVkLWRlZmF1bHRWYWx1ZXMtaGFzaFwiPzogc3RyaW5nLCBcInNraXBwZWQtZGVmYXVsdFZhbHVlcy1oYXNoXCI/OiBzdHJpbmcgfSxcbiAgICBub3RpZnkgPSB0cnVlLFxuICAgIHN1Y2Nlc3NDYWxsYmFjaz86ICgpID0+IGFueSxcbiAgICBlcnJvckNhbGxiYWNrPzogKCkgPT4gYW55XG4gICk6IHZvaWQge1xuICAgIHRoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKTtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0ITtcblxuICAgIGNvbnRleHQuc2V0QXNzaXN0YW50Q29uZmlnKGNvbmZpZyk7XG5cbiAgICBjb25zdCBhc3Npc3RhbnRzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5nZXRBc3Npc3RhbnRzU2V0dGluZygpKTtcbiAgICBjb25zdCBjaGF0SW5zdGFuY2VJZCA9IGNvbnRleHQuZ2V0Q2hhdEluc3RhbmNlSWQoKTtcbiAgICBhc3Npc3RhbnRzW2NoYXRJbnN0YW5jZUlkXSA9IHsgLi4uYXNzaXN0YW50c1tjaGF0SW5zdGFuY2VJZF0sIGRlZmF1bHRWYWx1ZXM6IGNvbmZpZy5kZWZhdWx0VmFsdWVzIH07XG4gICAgaWYgKGhhc2hlcykgYXNzaXN0YW50c1tjaGF0SW5zdGFuY2VJZF0uaGFzaGVzID0gaGFzaGVzO1xuXG4gICAgdGhpcy51c2VyU2V0dGluZ3NTZXJ2aWNlLnBhdGNoKHsgYXNzaXN0YW50cyB9KS5zdWJzY3JpYmUoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmIChub3RpZnkpIHtcbiAgICAgICAgICBpZiAoc3VjY2Vzc0NhbGxiYWNrKSB7XG4gICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2soKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5zdWNjZXNzKHRoaXMudHJhbnNsb2NvLnRyYW5zbGF0ZSgnY2hhdC5zYXZlQ2hhdENvbmZpZy5zdWNjZXNzJywgeyB2YWx1ZTogY2hhdEluc3RhbmNlSWQgfSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yID0+IHtcbiAgICAgICAgaWYgKG5vdGlmeSkge1xuICAgICAgICAgIGlmIChlcnJvckNhbGxiYWNrKSB7XG4gICAgICAgICAgICBlcnJvckNhbGxiYWNrKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuZXJyb3IodGhpcy50cmFuc2xvY28udHJhbnNsYXRlKCdjaGF0LnNhdmVDaGF0Q29uZmlnLmZhaWwnLCB7IHZhbHVlOiBjaGF0SW5zdGFuY2VJZCB9KSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJDb3VsZCBub3QgcGF0Y2ggYXNzaXN0YW50cyFcIiwgZXJyb3IpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0V1NSZXF1ZXN0c1VybCgpIHtcbiAgICB0aGlzLmVuc3VyZUluaXRpYWxpemVkKCk7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuY29udGV4dCE7XG4gICAgY29uc3QgdXJsID0gY29udGV4dC5nZXRBc3Npc3RhbnRDb25maWdWYWx1ZSgpPy5jb25uZWN0aW9uU2V0dGluZ3Mud2Vic29ja2V0RW5kcG9pbnQ7XG4gICAgaWYgKHVybCkge1xuICAgICAgY29udGV4dC5zZXRXU1JlcXVlc3RzVXJsKHVybCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHByb3BlcnR5ICd3ZWJzb2NrZXRFbmRwb2ludCcgbXVzdCBiZSBwcm92aWRlZGApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRSRVNUUmVxdWVzdHNVcmwoKSB7XG4gICAgdGhpcy5lbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNvbnRleHQhO1xuICAgIGNvbnN0IHVybCA9IGNvbnRleHQuZ2V0QXNzaXN0YW50Q29uZmlnVmFsdWUoKT8uY29ubmVjdGlvblNldHRpbmdzLnJlc3RFbmRwb2ludDtcbiAgICBpZiAodXJsKSB7XG4gICAgICBjb250ZXh0LnNldFJFU1RSZXF1ZXN0c1VybCh1cmwpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBwcm9wZXJ0eSAncmVzdEVuZHBvaW50JyBtdXN0IGJlIHByb3ZpZGVkYCk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -5,10 +5,6 @@ import { get } from '@sinequa/atomic';
5
5
  import * as i0 from "@angular/core";
6
6
  export class AssistantMetadataService {
7
7
  init(context) {
8
- if (this.context) {
9
- console.warn('AssistantMetadataService already initialized.');
10
- return;
11
- }
12
8
  this.context = context;
13
9
  }
14
10
  ensureInitialized() {
@@ -64,4 +60,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
64
60
  providedIn: 'root'
65
61
  }]
66
62
  }] });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaXN0YW50LW1ldGFkYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9zZXJ2aWNlcy9hc3Npc3RhbnQtbWV0YWRhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFjdEMsTUFBTSxPQUFPLHdCQUF3QjtJQUc1QixJQUFJLENBQUMsT0FBMEM7UUFDcEQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1lBQzlELE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsOERBQThELENBQUMsQ0FBQztRQUNsRixDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBUSxDQUFDO1FBQzlCLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBRTFELE1BQU0sSUFBSSxHQUFHO1lBQ1gsTUFBTSxFQUFFLFlBQVk7WUFDcEIsS0FBSyxFQUFFLGVBQWdCLENBQUMsYUFBYSxDQUFDLEtB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QVUsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ25CLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0JBQStCLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDdEQsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7K0dBckVVLHdCQUF3QjttSEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzRGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yLCBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ0BzaW5lcXVhL2F0b21pYyc7XG5cbmltcG9ydCB7IENoYXRDb25maWcsIEdsbG1Nb2RlbERlc2NyaXB0aW9uLCBHbGxtRnVuY3Rpb24gfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzaXN0YW50TWV0YWRhdGFPcGVyYXRpb25Db250ZXh0IHtcbiAgZ2V0UmVzdFVybDogKCkgPT4gc3RyaW5nO1xuICBnZXRBc3Npc3RhbnRDb25maWdWYWx1ZTogKCkgPT4gQ2hhdENvbmZpZyB8IHVuZGVmaW5lZDtcbiAgc2V0TW9kZWxzOiAobW9kZWxzOiBHbGxtTW9kZWxEZXNjcmlwdGlvbltdIHwgdW5kZWZpbmVkKSA9PiB2b2lkO1xuICBzZXRGdW5jdGlvbnM6IChmdW5jdGlvbnM6IEdsbG1GdW5jdGlvbltdIHwgdW5kZWZpbmVkKSA9PiB2b2lkO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBc3Npc3RhbnRNZXRhZGF0YVNlcnZpY2Uge1xuICBwcml2YXRlIGNvbnRleHQ6IEFzc2lzdGFudE1ldGFkYXRhT3BlcmF0aW9uQ29udGV4dCB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgaW5pdChjb250ZXh0OiBBc3Npc3RhbnRNZXRhZGF0YU9wZXJhdGlvbkNvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb250ZXh0KSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0Fzc2lzdGFudE1ldGFkYXRhU2VydmljZSBhbHJlYWR5IGluaXRpYWxpemVkLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVJbml0aWFsaXplZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udGV4dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBc3Npc3RhbnRNZXRhZGF0YVNlcnZpY2Ugbm90IGluaXRpYWxpemVkLiBDYWxsIGluaXQoKSBmaXJzdC4nKTtcbiAgICB9XG4gIH1cblxuICBsaXN0TW9kZWxzKCk6IE9ic2VydmFibGU8R2xsbU1vZGVsRGVzY3JpcHRpb25bXSB8IHVuZGVmaW5lZD4ge1xuICAgIHRoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKTtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0ITtcbiAgICBjb25zdCBhc3Npc3RhbnRDb25maWcgPSBjb250ZXh0LmdldEFzc2lzdGFudENvbmZpZ1ZhbHVlKCk7XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgYWN0aW9uOiBcImxpc3Rtb2RlbHNcIixcbiAgICAgIGRlYnVnOiBhc3Npc3RhbnRDb25maWchLmRlZmF1bHRWYWx1ZXMuZGVidWcudG9TdHJpbmcoKVxuICAgIH07XG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhPYmplY3QuZW50cmllcyhkYXRhKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBhY2Nba2V5XSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPikpO1xuXG4gICAgcmV0dXJuIGZyb20oZ2V0PHsgbW9kZWxzOiBHbGxtTW9kZWxEZXNjcmlwdGlvbltdIHwgdW5kZWZpbmVkIH0+KGBwbHVnaW4vJHtjb250ZXh0LmdldFJlc3RVcmwoKX1gLCBzZWFyY2hQYXJhbXMpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4gcmVzPy5tb2RlbHMpLFxuICAgICAgICB0YXAobW9kZWxzID0+IGNvbnRleHQuc2V0TW9kZWxzKG1vZGVscz8uZmlsdGVyKG1vZGVsID0+ICEhbW9kZWwuZW5hYmxlKSkpLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGludm9raW5nIGxpc3Rtb2RlbHM6JywgZXJyb3IpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBsaXN0RnVuY3Rpb25zKCk6IE9ic2VydmFibGU8R2xsbUZ1bmN0aW9uW10gfCB1bmRlZmluZWQ+IHtcbiAgICB0aGlzLmVuc3VyZUluaXRpYWxpemVkKCk7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuY29udGV4dCE7XG4gICAgY29uc3QgYXNzaXN0YW50Q29uZmlnID0gY29udGV4dC5nZXRBc3Npc3RhbnRDb25maWdWYWx1ZSgpO1xuXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGFjdGlvbjogXCJsaXN0ZnVuY3Rpb25zXCIsXG4gICAgICBkZWJ1ZzogYXNzaXN0YW50Q29uZmlnIS5kZWZhdWx0VmFsdWVzLmRlYnVnLnRvU3RyaW5nKClcbiAgICB9O1xuXG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhPYmplY3QuZW50cmllcyhkYXRhKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBhY2Nba2V5XSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPikpO1xuXG4gICAgcmV0dXJuIGZyb20oZ2V0PHsgZnVuY3Rpb25zOiBHbGxtRnVuY3Rpb25bXSB8IHVuZGVmaW5lZCB9PihgcGx1Z2luLyR7Y29udGV4dC5nZXRSZXN0VXJsKCl9YCwgc2VhcmNoUGFyYW1zKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzID0+IHJlcz8uZnVuY3Rpb25zKSxcbiAgICAgICAgdGFwKChmdW5jdGlvbnM6IEdsbG1GdW5jdGlvbltdIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbmFibGVkQ29uZmlnRnVuY3Rpb25zID0gYXNzaXN0YW50Q29uZmlnIS5kZWZhdWx0VmFsdWVzLmZ1bmN0aW9ucztcbiAgICAgICAgICAgIGNvbnRleHQuc2V0RnVuY3Rpb25zKGZ1bmN0aW9ucz8uZmlsdGVyKGZ1bmMgPT4gZnVuYy5lbmFibGVkICYmICEhZW5hYmxlZENvbmZpZ0Z1bmN0aW9ucy5maW5kKGZuID0+IGZuLm5hbWUgPT09IGZ1bmMuZnVuY3Rpb25OYW1lKSkpO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbnZva2luZyBsaXN0ZnVuY3Rpb25zOicsIGVycm9yKTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG59XG4iXX0=
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaXN0YW50LW1ldGFkYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9zZXJ2aWNlcy9hc3Npc3RhbnQtbWV0YWRhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBYyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFjdEMsTUFBTSxPQUFPLHdCQUF3QjtJQUc1QixJQUFJLENBQUMsT0FBMEM7UUFDcEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsOERBQThELENBQUMsQ0FBQztRQUNsRixDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBUSxDQUFDO1FBQzlCLE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBRTFELE1BQU0sSUFBSSxHQUFHO1lBQ1gsTUFBTSxFQUFFLFlBQVk7WUFDcEIsS0FBSyxFQUFFLGVBQWdCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUU7U0FDdkQsQ0FBQztRQUNGLE1BQU0sWUFBWSxHQUFHLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMs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QUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7K0dBakVVLHdCQUF3QjttSEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzRGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yLCBmcm9tIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGdldCB9IGZyb20gJ0BzaW5lcXVhL2F0b21pYyc7XG5cbmltcG9ydCB7IENoYXRDb25maWcsIEdsbG1Nb2RlbERlc2NyaXB0aW9uLCBHbGxtRnVuY3Rpb24gfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzaXN0YW50TWV0YWRhdGFPcGVyYXRpb25Db250ZXh0IHtcbiAgZ2V0UmVzdFVybDogKCkgPT4gc3RyaW5nO1xuICBnZXRBc3Npc3RhbnRDb25maWdWYWx1ZTogKCkgPT4gQ2hhdENvbmZpZyB8IHVuZGVmaW5lZDtcbiAgc2V0TW9kZWxzOiAobW9kZWxzOiBHbGxtTW9kZWxEZXNjcmlwdGlvbltdIHwgdW5kZWZpbmVkKSA9PiB2b2lkO1xuICBzZXRGdW5jdGlvbnM6IChmdW5jdGlvbnM6IEdsbG1GdW5jdGlvbltdIHwgdW5kZWZpbmVkKSA9PiB2b2lkO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBc3Npc3RhbnRNZXRhZGF0YVNlcnZpY2Uge1xuICBwcml2YXRlIGNvbnRleHQ6IEFzc2lzdGFudE1ldGFkYXRhT3BlcmF0aW9uQ29udGV4dCB8IHVuZGVmaW5lZDtcblxuICBwdWJsaWMgaW5pdChjb250ZXh0OiBBc3Npc3RhbnRNZXRhZGF0YU9wZXJhdGlvbkNvbnRleHQpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVJbml0aWFsaXplZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udGV4dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBc3Npc3RhbnRNZXRhZGF0YVNlcnZpY2Ugbm90IGluaXRpYWxpemVkLiBDYWxsIGluaXQoKSBmaXJzdC4nKTtcbiAgICB9XG4gIH1cblxuICBsaXN0TW9kZWxzKCk6IE9ic2VydmFibGU8R2xsbU1vZGVsRGVzY3JpcHRpb25bXSB8IHVuZGVmaW5lZD4ge1xuICAgIHRoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKTtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0ITtcbiAgICBjb25zdCBhc3Npc3RhbnRDb25maWcgPSBjb250ZXh0LmdldEFzc2lzdGFudENvbmZpZ1ZhbHVlKCk7XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgYWN0aW9uOiBcImxpc3Rtb2RlbHNcIixcbiAgICAgIGRlYnVnOiBhc3Npc3RhbnRDb25maWchLmRlZmF1bHRWYWx1ZXMuZGVidWcudG9TdHJpbmcoKVxuICAgIH07XG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhPYmplY3QuZW50cmllcyhkYXRhKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBhY2Nba2V5XSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPikpO1xuXG4gICAgcmV0dXJuIGZyb20oZ2V0PHsgbW9kZWxzOiBHbGxtTW9kZWxEZXNjcmlwdGlvbltdIHwgdW5kZWZpbmVkIH0+KGBwbHVnaW4vJHtjb250ZXh0LmdldFJlc3RVcmwoKX1gLCBzZWFyY2hQYXJhbXMpKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4gcmVzPy5tb2RlbHMpLFxuICAgICAgICB0YXAobW9kZWxzID0+IGNvbnRleHQuc2V0TW9kZWxzKG1vZGVscz8uZmlsdGVyKG1vZGVsID0+ICEhbW9kZWwuZW5hYmxlKSkpLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGludm9raW5nIGxpc3Rtb2RlbHM6JywgZXJyb3IpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBsaXN0RnVuY3Rpb25zKCk6IE9ic2VydmFibGU8R2xsbUZ1bmN0aW9uW10gfCB1bmRlZmluZWQ+IHtcbiAgICB0aGlzLmVuc3VyZUluaXRpYWxpemVkKCk7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuY29udGV4dCE7XG4gICAgY29uc3QgYXNzaXN0YW50Q29uZmlnID0gY29udGV4dC5nZXRBc3Npc3RhbnRDb25maWdWYWx1ZSgpO1xuXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGFjdGlvbjogXCJsaXN0ZnVuY3Rpb25zXCIsXG4gICAgICBkZWJ1ZzogYXNzaXN0YW50Q29uZmlnIS5kZWZhdWx0VmFsdWVzLmRlYnVnLnRvU3RyaW5nKClcbiAgICB9O1xuXG4gICAgY29uc3Qgc2VhcmNoUGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyhPYmplY3QuZW50cmllcyhkYXRhKS5yZWR1Y2UoKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBhY2Nba2V5XSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyB2YWx1ZSA6IEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPikpO1xuXG4gICAgcmV0dXJuIGZyb20oZ2V0PHsgZnVuY3Rpb25zOiBHbGxtRnVuY3Rpb25bXSB8IHVuZGVmaW5lZCB9PihgcGx1Z2luLyR7Y29udGV4dC5nZXRSZXN0VXJsKCl9YCwgc2VhcmNoUGFyYW1zKSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAocmVzID0+IHJlcz8uZnVuY3Rpb25zKSxcbiAgICAgICAgdGFwKChmdW5jdGlvbnM6IEdsbG1GdW5jdGlvbltdIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBlbmFibGVkQ29uZmlnRnVuY3Rpb25zID0gYXNzaXN0YW50Q29uZmlnIS5kZWZhdWx0VmFsdWVzLmZ1bmN0aW9ucztcbiAgICAgICAgICAgIGNvbnRleHQuc2V0RnVuY3Rpb25zKGZ1bmN0aW9ucz8uZmlsdGVyKGZ1bmMgPT4gZnVuYy5lbmFibGVkICYmICEhZW5hYmxlZENvbmZpZ0Z1bmN0aW9ucy5maW5kKGZuID0+IGZuLm5hbWUgPT09IGZ1bmMuZnVuY3Rpb25OYW1lKSkpO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3IpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBpbnZva2luZyBsaXN0ZnVuY3Rpb25zOicsIGVycm9yKTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG59XG4iXX0=
@@ -8,10 +8,6 @@ export class AssistantTokensTrackingService {
8
8
  this.notificationsService = inject(NotificationsService);
9
9
  }
10
10
  init(context) {
11
- if (this.context) {
12
- console.warn('AssistantTokensTrackingService already initialized.');
13
- return;
14
- }
15
11
  this.context = context;
16
12
  }
17
13
  ensureInitialized() {
@@ -54,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
54
50
  providedIn: 'root'
55
51
  }]
56
52
  }], ctorParameters: () => [] });
57
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaXN0YW50LXRva2Vucy10cmFja2luZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvc2VydmljZXMvYXNzaXN0YW50LXRva2Vucy10cmFja2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBVW5ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFlOUQsTUFBTSxPQUFPLDhCQUE4QjtJQUt6QztRQUhRLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hDLHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRTdDLENBQUM7SUFFVCxJQUFJLENBQUMsT0FBZ0Q7UUFDMUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1lBQ3BFLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0VBQW9FLENBQUMsQ0FBQztRQUN4RixDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUFZLEVBQUUsY0FBYyxHQUFHLEtBQUs7UUFDckQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQVEsQ0FBQztRQUU5QixPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLENBQUM7UUFDeEYsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNwRyxPQUFPLENBQUMsdUJBQXVCLENBQUMsRUFBRSxVQUFVLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUV0RixJQUFJLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMxQixPQUFPLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDckQsTUFBTSxHQUFHLEdBQUcsMEVBQTBFLGFBQWEsR0FBRyxDQUFDO1lBQ3ZHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckMsSUFBSSxjQUFjO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxnQkFBa0M7UUFDOUQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQVEsQ0FBQztRQUM5QixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUUxRCxPQUFPLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM5QyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWdCLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxlQUFnQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUxSCxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixDQUFDLGVBQWUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDbkssT0FBTyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsVUFBVSxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO0lBQ0gsQ0FBQzsrR0FsRFUsOEJBQThCO21IQUE5Qiw4QkFBOEIsY0FGN0IsTUFBTTs7NEZBRVAsOEJBQThCO2tCQUgxQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBDaGF0Q29uZmlnLFxuICBDaGF0VXNhZ2VNZXRyaWNzLFxuICBHbGxtTW9kZWxEZXNjcmlwdGlvbixcbiAgUXVvdGEsXG4gIFRva2VuQ29uc3VtcHRpb24sXG4gIFVzZXJUb2tlbkNvbnN1bXB0aW9uXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEFzc2lzdGFudFV0aWxzIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMuc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gJy4vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFzc2lzdGFudFRva2Vuc1RyYWNraW5nT3BlcmF0aW9uQ29udGV4dCB7XG4gIGdldEFzc2lzdGFudENvbmZpZ1ZhbHVlOiAoKSA9PiBDaGF0Q29uZmlnIHwgdW5kZWZpbmVkO1xuICBzZXRRdW90YTogKHF1b3RhOiBRdW90YSB8IHVuZGVmaW5lZCkgPT4gdm9pZDtcbiAgc2V0VXNlclRva2VuQ29uc3VtcHRpb246IChjb25zdW1wdGlvbjogVXNlclRva2VuQ29uc3VtcHRpb24gfCB1bmRlZmluZWQpID0+IHZvaWQ7XG4gIHNldENoYXRVc2FnZU1ldHJpY3M6IChtZXRyaWNzOiBDaGF0VXNhZ2VNZXRyaWNzIHwgdW5kZWZpbmVkKSA9PiB2b2lkO1xuICBzZXRDaGF0VG9rZW5Db25zdW1wdGlvbjogKGNvbnN1bXB0aW9uOiBUb2tlbkNvbnN1bXB0aW9uIHwgdW5kZWZpbmVkKSA9PiB2b2lkO1xuICBnZW5lcmF0ZUF1ZGl0RXZlbnQ6ICh0eXBlOiBzdHJpbmcsIGRldGFpbHM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGlkPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBnZXRNb2RlbDogKHNlcnZpY2VJZDogc3RyaW5nLCBtb2RlbElkOiBzdHJpbmcpID0+IEdsbG1Nb2RlbERlc2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBc3Npc3RhbnRUb2tlbnNUcmFja2luZ1NlcnZpY2Uge1xuICBwcml2YXRlIGNvbnRleHQ6IEFzc2lzdGFudFRva2Vuc1RyYWNraW5nT3BlcmF0aW9uQ29udGV4dCB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBhc3Npc3RhbnRVdGlscyA9IGluamVjdChBc3Npc3RhbnRVdGlscyk7XG4gIHByaXZhdGUgbm90aWZpY2F0aW9uc1NlcnZpY2UgPSBpbmplY3QoTm90aWZpY2F0aW9uc1NlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBwdWJsaWMgaW5pdChjb250ZXh0OiBBc3Npc3RhbnRUb2tlbnNUcmFja2luZ09wZXJhdGlvbkNvbnRleHQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb250ZXh0KSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0Fzc2lzdGFudFRva2Vuc1RyYWNraW5nU2VydmljZSBhbHJlYWR5IGluaXRpYWxpemVkLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVJbml0aWFsaXplZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udGV4dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBc3Npc3RhbnRUb2tlbnNUcmFja2luZ1NlcnZpY2Ugbm90IGluaXRpYWxpemVkLiBDYWxsIGluaXQoKSBmaXJzdC4nKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUXVvdGEocXVvdGE6IFF1b3RhLCBwcm9wYWdhdGVFcnJvciA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy5lbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNvbnRleHQhO1xuXG4gICAgY29udGV4dC5zZXRRdW90YShxdW90YSk7XG4gICAgY29uc3QgbmV4dFJlc2V0RGF0ZSA9IHRoaXMuYXNzaXN0YW50VXRpbHMuZm9ybWF0RGF0ZVRpbWUocXVvdGEubmV4dFJlc2V0VVRDICsgXCIrMDA6MDBcIik7XG4gICAgY29uc3QgY29uc3VtcHRpb25QZXJjZW50YWdlID0gTWF0aC5yb3VuZCgocXVvdGEudG9rZW5Db3VudCAqIDEwMCAvIHF1b3RhLnBlcmlvZFRva2VucykgKiAxMDApIC8gMTAwO1xuICAgIGNvbnRleHQuc2V0VXNlclRva2VuQ29uc3VtcHRpb24oeyBwZXJjZW50YWdlOiBjb25zdW1wdGlvblBlcmNlbnRhZ2UsIG5leHRSZXNldERhdGUgfSk7XG5cbiAgICBpZiAocXVvdGEubWF4UXVvdGFSZWFjaGVkKSB7XG4gICAgICBjb250ZXh0LmdlbmVyYXRlQXVkaXRFdmVudCgnYXN0LXF1b3RhLmV4Y2VlZGVkJywge30pO1xuICAgICAgY29uc3QgbXNnID0gYFNvcnJ5LCB5b3UgaGF2ZSBleGNlZWRlZCB0aGUgYWxsb3dlZCBxdW90YS4gUGxlYXNlIHJldHJ5IHN0YXJ0aW5nIGZyb20gJHtuZXh0UmVzZXREYXRlfS5gO1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5lcnJvcihtc2cpO1xuICAgICAgaWYgKHByb3BhZ2F0ZUVycm9yKSB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQ2hhdFVzYWdlTWV0cmljcyhjaGF0VXNhZ2VNZXRyaWNzOiBDaGF0VXNhZ2VNZXRyaWNzKTogdm9pZCB7XG4gICAgdGhpcy5lbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNvbnRleHQhO1xuICAgIGNvbnN0IGFzc2lzdGFudENvbmZpZyA9IGNvbnRleHQuZ2V0QXNzaXN0YW50Q29uZmlnVmFsdWUoKTtcblxuICAgIGNvbnRleHQuc2V0Q2hhdFVzYWdlTWV0cmljcyhjaGF0VXNhZ2VNZXRyaWNzKTtcbiAgICBjb25zdCBjdXJyZW50TW9kZWwgPSBjb250ZXh0LmdldE1vZGVsKGFzc2lzdGFudENvbmZpZyEuZGVmYXVsdFZhbHVlcy5zZXJ2aWNlX2lkLCBhc3Npc3RhbnRDb25maWchLmRlZmF1bHRWYWx1ZXMubW9kZWxfaWQpO1xuXG4gICAgaWYgKGN1cnJlbnRNb2RlbCkge1xuICAgICAgY29uc3QgY29uc3VtcHRpb25QZXJjZW50YWdlID0gTWF0aC5yb3VuZCgoY2hhdFVzYWdlTWV0cmljcy50b3RhbFRva2VuQ291bnQgKiAxMDAgLyAoY3VycmVudE1vZGVsLmNvbnRleHRXaW5kb3dTaXplIC0gY3VycmVudE1vZGVsLm1heEdlbmVyYXRpb25TaXplKSkgKiAxMDApIC8gMTAwO1xuICAgICAgY29udGV4dC5zZXRDaGF0VG9rZW5Db25zdW1wdGlvbih7IHBlcmNlbnRhZ2U6IGNvbnN1bXB0aW9uUGVyY2VudGFnZSB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaXN0YW50LXRva2Vucy10cmFja2luZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvc2VydmljZXMvYXNzaXN0YW50LXRva2Vucy10cmFja2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBVW5ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFlOUQsTUFBTSxPQUFPLDhCQUE4QjtJQUt6QztRQUhRLG1CQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3hDLHlCQUFvQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRTdDLENBQUM7SUFFVCxJQUFJLENBQUMsT0FBZ0Q7UUFDMUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0VBQW9FLENBQUMsQ0FBQztRQUN4RixDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUFZLEVBQUUsY0FBYyxHQUFHLEtBQUs7UUFDckQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQVEsQ0FBQztRQUU5QixPQUFPLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLENBQUM7UUFDeEYsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNwRyxPQUFPLENBQUMsdUJBQXVCLENBQUMsRUFBRSxVQUFVLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUV0RixJQUFJLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMxQixPQUFPLENBQUMsa0JBQWtCLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDckQsTUFBTSxHQUFHLEdBQUcsMEVBQTBFLGFBQWEsR0FBRyxDQUFDO1lBQ3ZHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDckMsSUFBSSxjQUFjO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxnQkFBa0M7UUFDOUQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQVEsQ0FBQztRQUM5QixNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUUxRCxPQUFPLENBQUMsbUJBQW1CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM5QyxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWdCLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxlQUFnQixDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUxSCxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLE1BQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLGdCQUFnQixDQUFDLGVBQWUsR0FBRyxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsaUJBQWlCLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDbkssT0FBTyxDQUFDLHVCQUF1QixDQUFDLEVBQUUsVUFBVSxFQUFFLHFCQUFxQixFQUFFLENBQUMsQ0FBQztRQUN6RSxDQUFDO0lBQ0gsQ0FBQzsrR0E5Q1UsOEJBQThCO21IQUE5Qiw4QkFBOEIsY0FGN0IsTUFBTTs7NEZBRVAsOEJBQThCO2tCQUgxQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBDaGF0Q29uZmlnLFxuICBDaGF0VXNhZ2VNZXRyaWNzLFxuICBHbGxtTW9kZWxEZXNjcmlwdGlvbixcbiAgUXVvdGEsXG4gIFRva2VuQ29uc3VtcHRpb24sXG4gIFVzZXJUb2tlbkNvbnN1bXB0aW9uXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IEFzc2lzdGFudFV0aWxzIH0gZnJvbSAnLi4vdXRpbHMvdXRpbHMuc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gJy4vbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFzc2lzdGFudFRva2Vuc1RyYWNraW5nT3BlcmF0aW9uQ29udGV4dCB7XG4gIGdldEFzc2lzdGFudENvbmZpZ1ZhbHVlOiAoKSA9PiBDaGF0Q29uZmlnIHwgdW5kZWZpbmVkO1xuICBzZXRRdW90YTogKHF1b3RhOiBRdW90YSB8IHVuZGVmaW5lZCkgPT4gdm9pZDtcbiAgc2V0VXNlclRva2VuQ29uc3VtcHRpb246IChjb25zdW1wdGlvbjogVXNlclRva2VuQ29uc3VtcHRpb24gfCB1bmRlZmluZWQpID0+IHZvaWQ7XG4gIHNldENoYXRVc2FnZU1ldHJpY3M6IChtZXRyaWNzOiBDaGF0VXNhZ2VNZXRyaWNzIHwgdW5kZWZpbmVkKSA9PiB2b2lkO1xuICBzZXRDaGF0VG9rZW5Db25zdW1wdGlvbjogKGNvbnN1bXB0aW9uOiBUb2tlbkNvbnN1bXB0aW9uIHwgdW5kZWZpbmVkKSA9PiB2b2lkO1xuICBnZW5lcmF0ZUF1ZGl0RXZlbnQ6ICh0eXBlOiBzdHJpbmcsIGRldGFpbHM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGlkPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBnZXRNb2RlbDogKHNlcnZpY2VJZDogc3RyaW5nLCBtb2RlbElkOiBzdHJpbmcpID0+IEdsbG1Nb2RlbERlc2NyaXB0aW9uIHwgdW5kZWZpbmVkO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBc3Npc3RhbnRUb2tlbnNUcmFja2luZ1NlcnZpY2Uge1xuICBwcml2YXRlIGNvbnRleHQ6IEFzc2lzdGFudFRva2Vuc1RyYWNraW5nT3BlcmF0aW9uQ29udGV4dCB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBhc3Npc3RhbnRVdGlscyA9IGluamVjdChBc3Npc3RhbnRVdGlscyk7XG4gIHByaXZhdGUgbm90aWZpY2F0aW9uc1NlcnZpY2UgPSBpbmplY3QoTm90aWZpY2F0aW9uc1NlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBwdWJsaWMgaW5pdChjb250ZXh0OiBBc3Npc3RhbnRUb2tlbnNUcmFja2luZ09wZXJhdGlvbkNvbnRleHQpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICB9XG5cbiAgcHJpdmF0ZSBlbnN1cmVJbml0aWFsaXplZCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29udGV4dCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBc3Npc3RhbnRUb2tlbnNUcmFja2luZ1NlcnZpY2Ugbm90IGluaXRpYWxpemVkLiBDYWxsIGluaXQoKSBmaXJzdC4nKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlUXVvdGEocXVvdGE6IFF1b3RhLCBwcm9wYWdhdGVFcnJvciA9IGZhbHNlKTogdm9pZCB7XG4gICAgdGhpcy5lbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNvbnRleHQhO1xuXG4gICAgY29udGV4dC5zZXRRdW90YShxdW90YSk7XG4gICAgY29uc3QgbmV4dFJlc2V0RGF0ZSA9IHRoaXMuYXNzaXN0YW50VXRpbHMuZm9ybWF0RGF0ZVRpbWUocXVvdGEubmV4dFJlc2V0VVRDICsgXCIrMDA6MDBcIik7XG4gICAgY29uc3QgY29uc3VtcHRpb25QZXJjZW50YWdlID0gTWF0aC5yb3VuZCgocXVvdGEudG9rZW5Db3VudCAqIDEwMCAvIHF1b3RhLnBlcmlvZFRva2VucykgKiAxMDApIC8gMTAwO1xuICAgIGNvbnRleHQuc2V0VXNlclRva2VuQ29uc3VtcHRpb24oeyBwZXJjZW50YWdlOiBjb25zdW1wdGlvblBlcmNlbnRhZ2UsIG5leHRSZXNldERhdGUgfSk7XG5cbiAgICBpZiAocXVvdGEubWF4UXVvdGFSZWFjaGVkKSB7XG4gICAgICBjb250ZXh0LmdlbmVyYXRlQXVkaXRFdmVudCgnYXN0LXF1b3RhLmV4Y2VlZGVkJywge30pO1xuICAgICAgY29uc3QgbXNnID0gYFNvcnJ5LCB5b3UgaGF2ZSBleGNlZWRlZCB0aGUgYWxsb3dlZCBxdW90YS4gUGxlYXNlIHJldHJ5IHN0YXJ0aW5nIGZyb20gJHtuZXh0UmVzZXREYXRlfS5gO1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5lcnJvcihtc2cpO1xuICAgICAgaWYgKHByb3BhZ2F0ZUVycm9yKSB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQ2hhdFVzYWdlTWV0cmljcyhjaGF0VXNhZ2VNZXRyaWNzOiBDaGF0VXNhZ2VNZXRyaWNzKTogdm9pZCB7XG4gICAgdGhpcy5lbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNvbnRleHQhO1xuICAgIGNvbnN0IGFzc2lzdGFudENvbmZpZyA9IGNvbnRleHQuZ2V0QXNzaXN0YW50Q29uZmlnVmFsdWUoKTtcblxuICAgIGNvbnRleHQuc2V0Q2hhdFVzYWdlTWV0cmljcyhjaGF0VXNhZ2VNZXRyaWNzKTtcbiAgICBjb25zdCBjdXJyZW50TW9kZWwgPSBjb250ZXh0LmdldE1vZGVsKGFzc2lzdGFudENvbmZpZyEuZGVmYXVsdFZhbHVlcy5zZXJ2aWNlX2lkLCBhc3Npc3RhbnRDb25maWchLmRlZmF1bHRWYWx1ZXMubW9kZWxfaWQpO1xuXG4gICAgaWYgKGN1cnJlbnRNb2RlbCkge1xuICAgICAgY29uc3QgY29uc3VtcHRpb25QZXJjZW50YWdlID0gTWF0aC5yb3VuZCgoY2hhdFVzYWdlTWV0cmljcy50b3RhbFRva2VuQ291bnQgKiAxMDAgLyAoY3VycmVudE1vZGVsLmNvbnRleHRXaW5kb3dTaXplIC0gY3VycmVudE1vZGVsLm1heEdlbmVyYXRpb25TaXplKSkgKiAxMDApIC8gMTAwO1xuICAgICAgY29udGV4dC5zZXRDaGF0VG9rZW5Db25zdW1wdGlvbih7IHBlcmNlbnRhZ2U6IGNvbnN1bXB0aW9uUGVyY2VudGFnZSB9KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -20,10 +20,6 @@ export class AssistantWsFramesService {
20
20
  this._debugMessages = [];
21
21
  }
22
22
  init(context) {
23
- if (this.context) {
24
- console.warn('AssistantWsFramesService already initialized.');
25
- return;
26
- }
27
23
  this.context = context;
28
24
  }
29
25
  ensureInitialized() {
@@ -389,4 +385,4 @@ export class AssistantWsFramesService {
389
385
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: AssistantWsFramesService, decorators: [{
390
386
  type: Injectable
391
387
  }] });
392
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaXN0YW50LXdzLWZyYW1lcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvc2VydmljZXMvYXNzaXN0YW50LXdzLWZyYW1lcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUYsT0FBTyxFQUFFLElBQUksRUFBUyxNQUFNLGlCQUFpQixDQUFDO0FBMkI5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUF5QjlELE1BQU0sT0FBTyx3QkFBd0I7SUFEckM7UUFJVSxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLGNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyQyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4Qyx5QkFBb0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUVwRCxxQkFBZ0IsR0FBcUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUUvRCxlQUFVLEdB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QyxHQUFHLENBQUMsQ0FBQztZQUNuQyx1QkFBdUI7WUFDdkIsc0JBQXNCLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEMsK0JBQStCO1lBQy9CLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztRQUVILGtEQUFrRDtRQUNsRCxVQUFVLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQzthQUM3QixLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLDZCQUE2QixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3BELHNCQUFzQixDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFlLENBQUMsQ0FBQyxDQUFDO1lBQ3pELE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUVMLE9BQU8sc0JBQXNCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0MsQ0FBQzsrR0FuYVUsd0JBQXdCO21IQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh1YkNvbm5lY3Rpb24gfSBmcm9tICdAbWljcm9zb2Z0L3NpZ25hbHInO1xuaW1wb3J0IHsgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmcm9tRXZlbnQsIG1lcmdlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBtZXJnZU1hcCwgdGFrZVVudGlsLCB0YXAsIHRha2UsIHN3aXRjaE1hcCwgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGd1aWQsIFF1ZXJ5IH0gZnJvbSBcIkBzaW5lcXVhL2F0b21pY1wiO1xuXG5pbXBvcnQge1xuICBBY3Rpb25NZXNzYWdlLFxuICBBY3Rpb25SZXN1bHRFdmVudCxcbiAgQWN0aW9uU3RhcnRFdmVudCxcbiAgQWN0aW9uU3RvcEV2ZW50LFxuICBDaGF0Q29uZmlnLFxuICBDaGF0Q29udGV4dEF0dGFjaG1lbnQsXG4gIENoYXRNZXNzYWdlLFxuICBDaGF0UGF5bG9hZCxcbiAgQ2hhdFByb2dyZXNzLFxuICBDaGF0UmVzcG9uc2UsXG4gIENoYXRVc2FnZU1ldHJpY3MsXG4gIENvbnRleHRNZXNzYWdlRXZlbnQsXG4gIERlYnVnTWVzc2FnZSxcbiAgRGVidWdNZXNzYWdlRXZlbnQsXG4gIEVycm9yRXZlbnQsXG4gIEhpc3RvcnlFdmVudCxcbiAgTWVzc2FnZUhhbmRsZXIsXG4gIE1lc3NhZ2VFdmVudCxcbiAgUXVvdGEsXG4gIFF1b3RhRXZlbnQsXG4gIFNhdmVkQ2hhdFJlc3BvbnNlLFxuICBTdWdnZXN0ZWRBY3Rpb25zRXZlbnRcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSAnLi9hcHAuc2VydmljZSc7XG5pbXBvcnQgeyBBc3Npc3RhbnRVdGlscyB9IGZyb20gJy4uL3V0aWxzL3V0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICcuL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE1lc3NhZ2VDb250ZW50LCBUZXh0TWVzc2FnZUNvbnRlbnQgfSBmcm9tICcuLi90eXBlcy9tZXNzYWdlLWNvbnRlbnQudHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFzc2lzdGFudFdzRnJhbWVzQ29udGV4dCB7XG4gIGdldEFzc2lzdGFudENvbmZpZzogKCkgPT4gQ2hhdENvbmZpZyB8IHVuZGVmaW5lZDtcbiAgZ2V0Q2hhdEluc3RhbmNlSWQ6ICgpID0+IHN0cmluZztcbiAgZ2V0Q2hhdElkOiAoKSA9PiBzdHJpbmc7XG4gIGdldEh1YkNvbm5lY3Rpb246ICgpID0+IEh1YkNvbm5lY3Rpb24gfCB1bmRlZmluZWQ7XG4gIGdldENoYXRIaXN0b3J5OiAoKSA9PiBDaGF0TWVzc2FnZVtdIHwgdW5kZWZpbmVkO1xuXG4gIHNldFN0cmVhbWluZ1N0YXR1czogKGlzU3RyZWFtaW5nOiBib29sZWFuKSA9PiB2b2lkO1xuICBzZXRDaGF0SGlzdG9yeTogKGhpc3Rvcnk6IENoYXRNZXNzYWdlW10gfCB1bmRlZmluZWQpID0+IHZvaWQ7XG4gIHNldFN0b3BwaW5nR2VuZXJhdGlvblN0YXR1czogKGlzU3RvcHBpbmc6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHNldFNhdmVkQ2hhdHNFcnJvclN0YXR1czogKGhhc0Vycm9yOiBib29sZWFuKSA9PiB2b2lkO1xuXG4gIHVwZGF0ZVF1b3RhOiAocXVvdGE6IFF1b3RhLCBwcm9wYWdhdGVFcnJvcj86IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZUNoYXRVc2FnZU1ldHJpY3M6IChtZXRyaWNzOiBDaGF0VXNhZ2VNZXRyaWNzKSA9PiB2b2lkO1xuICBnZW5lcmF0ZUF1ZGl0RXZlbnQ6ICh0eXBlOiBzdHJpbmcsIGRldGFpbHM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGlkPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBhZGRTYXZlZENoYXQ6IChpZDogc3RyaW5nLCBtZXNzYWdlczogQ2hhdE1lc3NhZ2VbXSkgPT4gT2JzZXJ2YWJsZTxTYXZlZENoYXRSZXNwb25zZT47XG4gIHVwZGF0ZVNhdmVkQ2hhdDogKGlkOiBzdHJpbmcsIG5hbWU/OiBzdHJpbmcsIG1lc3NhZ2VzPzogQ2hhdE1lc3NhZ2VbXSkgPT4gT2JzZXJ2YWJsZTxTYXZlZENoYXRSZXNwb25zZT47XG4gIGxpc3RTYXZlZENoYXQ6ICgpID0+IHZvaWQ7XG4gIGlzRXhpc3RpbmdTYXZlZENoYXQ6IChpZDogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXNzaXN0YW50V3NGcmFtZXNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb250ZXh0OiBBc3Npc3RhbnRXc0ZyYW1lc0NvbnRleHQgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBhcHBTZXJ2aWNlID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICBwcml2YXRlIHRyYW5zbG9jbyA9IGluamVjdChUcmFuc2xvY29TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhc3Npc3RhbnRVdGlscyA9IGluamVjdChBc3Npc3RhbnRVdGlscyk7XG4gIHByaXZhdGUgbm90aWZpY2F0aW9uc1NlcnZpY2UgPSBpbmplY3QoTm90aWZpY2F0aW9uc1NlcnZpY2UpO1xuXG4gIHByaXZhdGUgX21lc3NhZ2VIYW5kbGVyczogTWFwPHN0cmluZywgTWVzc2FnZUhhbmRsZXI8YW55Pj4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgX3Jlc3BvbnNlOiBDaGF0TWVzc2FnZVtdO1xuICBwcml2YXRlIF9hY3Rpb25NYXAgPSBuZXcgTWFwPHN0cmluZywgQWN0aW9uTWVzc2FnZT4oKTtcbiAgcHJpdmF0ZSBfcHJvZ3Jlc3M6IENoYXRQcm9ncmVzc1tdIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBwcml2YXRlIF9leGVjdXRpb25UaW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgX2V4ZWN1dGlvblRpbWVNaWxsaXNlY29uZHM/OiBudW1iZXI7XG4gIHByaXZhdGUgX2F0dGFjaG1lbnRzOiBDaGF0Q29udGV4dEF0dGFjaG1lbnRbXSA9IFtdO1xuICBwcml2YXRlIF9kZWJ1Z01lc3NhZ2VzOiBEZWJ1Z01lc3NhZ2VbXSA9IFtdO1xuXG4gIHB1YmxpYyBpbml0KGNvbnRleHQ6IEFzc2lzdGFudFdzRnJhbWVzQ29udGV4dCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRleHQpIHtcbiAgICAgIGNvbnNvbGUud2FybignQXNzaXN0YW50V3NGcmFtZXNTZXJ2aWNlIGFscmVhZHkgaW5pdGlhbGl6ZWQuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZUluaXRpYWxpemVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250ZXh0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fzc2lzdGFudFdzRnJhbWVzU2VydmljZSBub3QgaW5pdGlhbGl6ZWQuIENhbGwgaW5pdCgpIGZpcnN0LicpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmZXRjaChtZXNzYWdlczogQ2hhdE1lc3NhZ2VbXSwgcXVlcnk6IFF1ZXJ5KTogT2JzZXJ2YWJsZTxDaGF0UmVzcG9uc2U+IHtcbiAgICB0aGlzLmVuc3VyZUluaXRpYWxpemVkKCk7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuY29udGV4dCE7XG4gICAgY29uc3QgYXNzaXN0YW50Q29uZmlnID0gY29udGV4dC5nZXRBc3Npc3RhbnRDb25maWcoKSE7XG5cbiAgICAgLy8gU3RhcnQgc3RyZWFtaW5nIGJ5IGludm9raW5nIHRoZSBDaGF0IG1ldGhvZFxuICAgIGNvbnRleHQuc2V0U3RyZWFtaW5nU3RhdHVzKHRydWUpO1xuXG4gICAgLy8gUHJlcGFyZSB0aGUgcGF5bG9hZCB0byBzZW5kIHRvIHRoZSBDaGF0IG1ldGhvZFxuICAgIGNvbnN0IGRhdGE6IENoYXRQYXlsb2FkID0ge1xuICAgICAgaGlzdG9yeTogbWVzc2FnZXMsXG4gICAgICBmdW5jdGlvbnM6IGFzc2lzdGFudENvbmZpZy5kZWZhdWx0VmFsdWVzLmZ1bmN0aW9ucz8uZmlsdGVyKGZ1bmMgPT4gZnVuYy5lbmFibGVkKS5tYXAoZnVuYyA9PiBmdW5jLm5hbWUpLFxuICAgICAgZGVidWc6IGFzc2lzdGFudENvbmZpZy5kZWZhdWx0VmFsdWVzLmRlYnVnLFxuICAgICAgc2VydmljZVNldHRpbmdzOiB7XG4gICAgICAgIHNlcnZpY2VfaWQ6IGFzc2lzdGFudENvbmZpZy5kZWZhdWx0VmFsdWVzLnNlcnZpY2VfaWQsXG4gICAgICAgIG1vZGVsX2lkOiBhc3Npc3RhbnRDb25maWcuZGVmYXVsdFZhbHVlcy5tb2RlbF9pZCxcbiAgICAgICAgdG9wX3A6IGFzc2lzdGFudENvbmZpZy5kZWZhdWx0VmFsdWVzLnRvcF9wLFxuICAgICAgICB0ZW1wZXJhdHVyZTogYXNzaXN0YW50Q29uZmlnLmRlZmF1bHRWYWx1ZXMudGVtcGVyYXR1cmUsXG4gICAgICAgIG1heF90b2tlbnM6IGFzc2lzdGFudENvbmZpZy5kZWZhdWx0VmFsdWVzLm1heF90b2tlbnMsXG4gICAgICAgIC4uLmFzc2lzdGFudENvbmZpZy5hZGRpdGlvbmFsU2VydmljZVNldHRpbmdzXG4gICAgICB9LFxuICAgICAgYXBwUXVlcnk6IHtcbiAgICAgICAgYXBwOiB0aGlzLmFwcFNlcnZpY2UuYXBwTmFtZSxcbiAgICAgICAgcXVlcnlcbiAgICAgIH0sXG4gICAgICBpbnN0YW5jZUlkOiBjb250ZXh0LmdldENoYXRJbnN0YW5jZUlkKCksXG4gICAgICBjaGF0SWQ6IGNvbnRleHQuZ2V0Q2hhdElkKCksXG4gICAgICBnZW5lcmljQ2hhdEVycm9yTWVzc2FnZTogYXNzaXN0YW50Q29uZmlnLmdsb2JhbFNldHRpbmdzLmdlbmVyaWNDaGF0RXJyb3JNZXNzYWdlID8gdGhpcy50cmFuc2xvY28udHJhbnNsYXRlKGFzc2lzdGFudENvbmZpZy5nbG9iYWxTZXR0aW5ncy5nZW5lcmljQ2hhdEVycm9yTWVzc2FnZSkgOiBcIlwiXG4gICAgfTtcblxuICAgIC8vIEluaXRpYWxpemUgdGhlIHJlc3BvbnNlIHdpdGggYW4gZW1wdHkgYXNzaXN0YW50IG1lc3NhZ2VcbiAgICAvLyBoZXJlIGRpc3BsYXk6IHRydWUgaXMgbmVlZGVkIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gc2hvdyB0aGUgcHJvZ3Jlc3NcbiAgICAvLyBoZXJlIG1lc3NhZ2VJZCBpcyBuZWVkZWQgYnV0IGl0IGlzIHRlbXBvcmFyeSBhbmQgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgY29ycmVjdCBtZXNzYWdlSWQgZ2VuZXJhdGVkIGJ5IHRoZSBhc3Npc3RhbnQgd2hlbiB0aGUgbWVzc2FnZSBzdGFydHMgc3RyZWFtaW5nXG4gICAgdGhpcy5fcmVzcG9uc2UgPSBbeyByb2xlOiBcImFzc2lzdGFudFwiLCBjb250ZW50OiBcIlwiLCBhZGRpdGlvbmFsUHJvcGVydGllczogeyBkaXNwbGF5OiB0cnVlLCBtZXNzYWdlSWQ6IGd1aWQoKSB9IH1dO1xuXG4gICAgLy8gQ3JlYXRlIGEgU3ViamVjdCB0byBzaWduYWwgY29tcGxldGlvblxuICAgIGNvbnN0IGNvbXBsZXRpb24kID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8vIENyZWF0ZSBvYnNlcnZhYmxlcyBmb3IgZWFjaCBub24tZ2xvYmFsIGhhbmRsZXIgaW4gdGhlIF9tZXNzYWdlSGFuZGxlcnMgbWFwIChkZWZhdWx0IGFuZCBldmVudHVhbCBjdXN0b20gb25lcykgb25jZSBpdCBpcyB0cmlnZ2VyZWQgYnkgdGhlIGh1YiBjb25uZWN0aW9uXG4gICAgY29uc3Qgb2JzZXJ2YWJsZXMgPSBBcnJheVxuICAgICAgLmZyb20odGhpcy5fbWVzc2FnZUhhbmRsZXJzLmVudHJpZXMoKSlcbiAgICAgIC5maWx0ZXIoKFtldmVudE5hbWUsIGV2ZW50SGFuZGxlcl0pID0+ICFldmVudEhhbmRsZXIuaXNHbG9iYWxIYW5kbGVyKVxuICAgICAgLm1hcCgoW2V2ZW50TmFtZSwgZXZlbnRIYW5kbGVyXSkgPT4gZnJvbUV2ZW50PGFueT4oY29udGV4dC5nZXRIdWJDb25uZWN0aW9uKCkhLCBldmVudE5hbWUpLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAvLyBXcmFwIHRoZSBoYW5kbGVyIGluIGEgdHJ5LWNhdGNoIGJsb2NrIHRvIHByZXZlbnQgdGhlIGVudGlyZSBzdHJlYW0gZnJvbSBmYWlsaW5nIGlmIGFuIGVycm9yIG9jY3VycyBpbiBhIHNpbmdsZSBoYW5kbGVyXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAvLyBFeGVjdXRlIHRoZSBoYW5kbGVyIGFuZCBlbWl0IHRoZSByZXN1bHRcbiAgICAgICAgICAgICAgLy8gTkI6IGhlcmUgd2UgY291bGQgdXNlIFtldmVudEhhbmRsZXIuaGFuZGxlcihldmVudCldIHdoaWNoIGJlaGluZCB0aGUgc2NlbmVzIG1lcmdlTWFwIGludGVycHJldHMgdGhpcyBhcnJheSBhcyBhbiBvYnNlcnZhYmxlIHNlcXVlbmNlIHdpdGggb25lIGl0ZW0sIHdoaWNoIGl0IHRoZW4gZW1pdHNcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKGV2ZW50SGFuZGxlci5oYW5kbGVyKGV2ZW50KSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBpbiBldmVudCBoYW5kbGVyIGZvciAke2V2ZW50TmFtZX06YCwgZXJyb3IpO1xuICAgICAgICAgICAgICAvLyBVc2UgdGhyb3dFcnJvciB0byBwcm9wYWdhdGUgdGhlIGVycm9yIGRvd25zdHJlYW1cbiAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGBFcnJvciBpbiBldmVudCBoYW5kbGVyIGZvciAke2V2ZW50TmFtZX06ICR7ZXJyb3J9YCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICkpO1xuXG4gICAgLy8gVGhlbiBtZXJnZSB0aGVtIGludG8gYSBzaW5nbGUgb2JzZXJ2YWJsZSBpbiBvcmRlciB0byBzaW11bGF0ZSB0aGUgc3RyZWFtaW5nIGJlaGF2aW9yXG4gICAgY29uc3QgY29tYmluZWQkID0gbWVyZ2UoLi4ub2JzZXJ2YWJsZXMpLnBpcGUoXG4gICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAvLyBEZWZpbmUgJHByb2dyZXNzIGZyb20gdGhlIF9hY3Rpb25NYXBcbiAgICAgICAgY29uc3QgYWN0aW9ucyA9IEFycmF5LmZyb20odGhpcy5fYWN0aW9uTWFwLnZhbHVlcygpKTtcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MgPSBhY3Rpb25zLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBhY3Rpb25zLm1hcCgoYSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGEuZGlzcGxheU5hbWUgPz8gXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogYS5kaXNwbGF5VmFsdWUgPz8gXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZTogYS5leGVjdXRpb25UaW1lICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU6IGEuZXhlY3V0aW9uVGltZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICAvLyBBbHdheXMgdXBkYXRlIE9OTFkgdGhlIGZpcnN0IGFzc2lzdGFudCBtZXNzYWdlIG9mIHRoZSBfcmVzcG9uc2Ugd2l0aCB0aGUgbmV3ICRwcm9ncmVzcywgJGF0dGFjaG1lbnQgYW5kICRkZWJ1Z1xuICAgICAgICAvLyBBc3N1bWluZyB0aGF0IHRoZSBmaXJzdCBhc3Npc3RhbnQgbWVzc2FnZSBpcyBhbHdheXMgdmlzaWJsZSBzaW5jZSB0aGUgaHViIGRvZXMgbm90IHNlbmQgaGlkZGVuIG1lc3NhZ2VzIGJ5IGRlc2lnblxuICAgICAgICAvLyBTbyBldmVuIGlmIHRoZSBmaXJzdCBhc3Npc3RhbnQgbWVzc2FnZSBpcyBoaWRkZW4gKGRpc3BsYXk6IGZhbHNlKSwgdGhlIF9yZXNwb25zZVswXSB3aWxsIGFuZCBzaG91bGQgY29udGFpbiA6XG4gICAgICAgIC8vICAtICRwcm9ncmVzcywgJGF0dGFjaG1lbnQgYW5kICRkZWJ1Z1xuICAgICAgICAvLyAgLSB0aGUgY29udGVudCBvZiB0aGUgZmlyc3QgdmlzaWJsZSBhc3Npc3RhbnQgbWVzc2FnZSBpbiB0aGUgd29ya2Zsb3dcbiAgICAgICAgLy8gVGhpcyBpcyBtYW5kYXRvcnkgaW4gb3JkZXIgdG8gbWF0Y2ggdGhlIGJlaGF2aW9yIG9mIGNvbnNlY3V0aXZlIG1lc3NhZ2VzIGFuZCBtYWludGFpbiBjb25zaXN0ZW5jeSB3aXRoIHRoZSBjaGF0SGlzdG9yeVxuICAgICAgICBpZighIXRoaXMuX3Byb2dyZXNzIHx8IHRoaXMuX2F0dGFjaG1lbnRzLmxlbmd0aCA+IDAgfHwgdGhpcy5fZGVidWdNZXNzYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5fcmVzcG9uc2VbMF0uYWRkaXRpb25hbFByb3BlcnRpZXMuJHByb2dyZXNzID0gdGhpcy5fcHJvZ3Jlc3M7XG4gICAgICAgICAgdGhpcy5fcmVzcG9uc2VbMF0uYWRkaXRpb25hbFByb3BlcnRpZXMuJGF0dGFjaG1lbnQgPSB0aGlzLl9hdHRhY2htZW50cztcbiAgICAgICAgICB0aGlzLl9yZXNwb25zZVswXS5hZGRpdGlvbmFsUHJvcGVydGllcy4kZGVidWcgPSB0aGlzLl9kZWJ1Z01lc3NhZ2VzO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJldHVybiB0aGUgcmVzdWx0XG4gICAgICAgIHJldHVybiB7IGhpc3Rvcnk6IFsuLi5tZXNzYWdlcywgLi4udGhpcy5fcmVzcG9uc2VdLCBleGVjdXRpb25UaW1lOiB0aGlzLl9leGVjdXRpb25UaW1lLCBleGVjdXRpb25UaW1lTWlsbGlzZWNvbmRzOiB0aGlzLl9leGVjdXRpb25UaW1lTWlsbGlzZWNvbmRzIH07XG4gICAgICB9KSxcbiAgICAgIC8vIENvbXBsZXRlIHRoZSBvYnNlcnZhYmxlIHdoZW4gY29tcGxldGlvbiQgZW1pdHNcbiAgICAgIHRha2VVbnRpbChjb21wbGV0aW9uJCksXG4gICAgKTtcblxuICAgIC8vIHJldHVybiBhIG5ldyBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHJlc3VsdCBvZiB0aGUgY29tYmluZWQgc3RyZWFtIGFuZCBoYW5kbGVzIHRoZSBldmVudHVhbCBlcnJvcnMgb2YgdGhlIGludm9jYXRpb24gb2YgdGhlIENoYXQgbWV0aG9kXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgIC8vIFN1YnNjcmliZSB0byBjb21iaW5lZCBzdHJlYW1cbiAgICAgIGNvbWJpbmVkJC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAodmFsdWUpID0+IG9ic2VydmVyLm5leHQodmFsdWUpLFxuICAgICAgICBlcnJvcjogKGVycikgPT4gb2JzZXJ2ZXIuZXJyb3IoZXJyKVxuICAgICAgfSk7XG5cbiAgICAgIC8vIEludm9rZSB0aGUgQ2hhdCBtZXRob2QgYW5kIGhhbmRsZSBlcnJvcnNcbiAgICAgIGNvbnRleHQuZ2V0SHViQ29ubmVjdGlvbigpIS5pbnZva2UoJ0NoYXQnLCBkYXRhKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY2hhdEhpc3RvcnkgPSBjb250ZXh0LmdldENoYXRIaXN0b3J5KCkhO1xuICAgICAgICAgIC8vIElmIGEgdmFsaWQgYXNzaXN0YW50IG1lc3NhZ2Ugd2l0aCAoZGlzcGxheTogdHJ1ZSkgd2FzIGZvdW5kLCB1cGRhdGUgaXRcbiAgICAgICAgICAvLyBhbmQgaXQgc2hvdWxkIGFsd2F5cyB0aGUgY2FzZVxuICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hc3Npc3RhbnRVdGlscy5maXJzdFZpc2libGVBc3Npc3RhbnRNZXNzYWdlSW5kZXgoY2hhdEhpc3RvcnkpO1xuICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGNoYXRIaXN0b3J5W2luZGV4XS5hZGRpdGlvbmFsUHJvcGVydGllcy4kcHJvZ3Jlc3MgPSB0aGlzLl9wcm9ncmVzcztcbiAgICAgICAgICAgIGNoYXRIaXN0b3J5W2luZGV4XS5hZGRpdGlvbmFsUHJvcGVydGllcy4kYXR0YWNobWVudCA9IHRoaXMuX2F0dGFjaG1lbnRzO1xuICAgICAgICAgICAgY2hhdEhpc3RvcnlbaW5kZXhdLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLiRkZWJ1ZyA9IHRoaXMuX2RlYnVnTWVzc2FnZXM7XG4gICAgICAgICAgICBjb250ZXh0LnNldENoYXRIaXN0b3J5KGNoYXRIaXN0b3J5KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBTYXZlL3VwZGF0ZSB0aGUgY2hhdCBpZiBzYXZlZENoYXQgZW5hYmxlZFxuICAgICAgICAgIGlmIChhc3Npc3RhbnRDb25maWcuc2F2ZWRDaGF0U2V0dGluZ3MuZW5hYmxlZCAmJiBjb250ZXh0LmdldENoYXRIaXN0b3J5KCkhLnNvbWUoKG1zZykgPT4gbXNnLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPy5pc1VzZXJJbnB1dCA9PT0gdHJ1ZSkpIHtcbiAgICAgICAgICAgIGNvbnRleHQuaXNFeGlzdGluZ1NhdmVkQ2hhdChjb250ZXh0LmdldENoYXRJZCgpKS5waXBlKFxuICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICBzd2l0Y2hNYXAoKGV4aXN0cykgPT5cbiAgICAgICAgICAgICAgICBleGlzdHNcbiAgICAgICAgICAgICAgICAgID8gY29udGV4dC51cGRhdGVTYXZlZENoYXQoY29udGV4dC5nZXRDaGF0SWQoKSwgdW5kZWZpbmVkLCBjb250ZXh0LmdldENoYXRIaXN0b3J5KCkhKVxuICAgICAgICAgICAgICAgICAgOiBjb250ZXh0LmFkZFNhdmVkQ2hhdChjb250ZXh0LmdldENoYXRJZCgpLCBjb250ZXh0LmdldENoYXRIaXN0b3J5KCkhKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgIHRhcCgoKSA9PiBjb250ZXh0Lmxpc3RTYXZlZENoYXQoKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiBjb250ZXh0LnNldFN0cmVhbWluZ1N0YXR1cyhmYWxzZSkpXG4gICAgICAgICAgICApLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgIG5leHQ6ICgpID0+IHt9LFxuICAgICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiBvYnNlcnZlci5lcnJvcihlcnJvciksXG4gICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiBvYnNlcnZlci5jb21wbGV0ZSgpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udGV4dC5zZXRTdHJlYW1pbmdTdGF0dXMoZmFsc2UpO1xuICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW52b2tpbmcgQ2hhdDonLCBlcnJvcik7XG4gICAgICAgICAgY29udGV4dC5zZXRTdHJlYW1pbmdTdGF0dXMoZmFsc2UpO1xuICAgICAgICAgIC8vIEVtaXQgdGhlIGVycm9yIHRvIHRoZSBuZXdseSBjcmVhdGVkIG9ic2VydmFibGVcbiAgICAgICAgICBvYnNlcnZlci5lcnJvcihlcnJvcik7XG4gICAgICAgICAgLy8gUmV0dXJuIGEgcmVzb2x2ZWQgcHJvbWlzZSB0byBoYW5kbGUgdGhlIGVycm9yIGFuZCBwcmV2ZW50IHVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvblxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIC8vIFRoaXMgYmxvY2sgY29uY2VybnMgT05MWSB0aGUgY29tcGxldGlvbiBvZiB0aGUgXCJDaGF0XCIgbWV0aG9kIGludm9jYXRpb24uXG4gICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGUgY29tcGxldGlvbiBvZiB0aGUgY29tYmluZWQkIHN0cmVhbS5cbiAgICAgICAgICAvLyBJdCBkb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCB0aGUgY29tcGxldGlvbiBvZiB0aGUgZW50aXJlIGZldGNoIG1ldGhvZCAodGhlIG9ic2VydmFibGUgcmV0dXJuZWQgYnkgZmV0Y2gpIGFuZCB3aGljaCBkZXBlbmRzIG9uIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBzYXZlIGNoYXQgYWN0aW9uIGlmIGVuYWJsZWRcbiAgICAgICAgICB0aGlzLl9yZXNwb25zZSA9IFtdOyAvLyBDbGVhciB0aGUgX3Jlc3BvbnNlXG4gICAgICAgICAgdGhpcy5fYWN0aW9uTWFwLmNsZWFyKCk7IC8vIENsZWFyIHRoZSBfYWN0aW9uTWFwXG4gICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MgPSB1bmRlZmluZWQ7IC8vIENsZWFyIHRoZSBfcHJvZ3Jlc3NcbiAgICAgICAgICB0aGlzLl9hdHRhY2htZW50cyA9IFtdOyAvLyBDbGVhciB0aGUgX2F0dGFjaG1lbnRzXG4gICAgICAgICAgdGhpcy5fZGVidWdNZXNzYWdlcyA9IFtdOyAvLyBDbGVhciB0aGUgX2RlYnVnTWVzc2FnZXNcbiAgICAgICAgICB0aGlzLl9leGVjdXRpb25UaW1lID0gXCJcIjsgLy8gQ2xlYXIgdGhlIF9leGVjdXRpb25UaW1lXG4gICAgICAgICAgdGhpcy5fZXhlY3V0aW9uVGltZU1pbGxpc2Vjb25kcyA9IHVuZGVmaW5lZDsgLy8gQ2xlYXIgdGhlIF9leGVjdXRpb25UaW1lTWlsbGlzZWNvbmRzXG4gICAgICAgICAgY29tcGxldGlvbiQubmV4dCgpOyAvLyBFbWl0IGEgc2lnbmFsIHRvIGNvbXBsZXRlIHRoZSBvYnNlcnZhYmxlc1xuICAgICAgICAgIGNvbXBsZXRpb24kLmNvbXBsZXRlKCk7IC8vIENvbXBsZXRlIHRoZSBzdWJqZWN0XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGluaXRNZXNzYWdlSGFuZGxlcnMoKTogdm9pZCB7XG4gICAgdGhpcy5lbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNvbnRleHQhO1xuXG4gICAgdGhpcy5hZGRNZXNzYWdlSGFuZGxlcihcIkVycm9yXCIsIHtcbiAgICAgICAgaGFuZGxlcjogKGVycm9yOiBFcnJvckV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKGVycm9yLmluZGV4T2YoJ1NhdmVkQ2hhdExpc3QnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnRleHQuc2V0U2F2ZWRDaGF0c0Vycm9yU3RhdHVzKHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmVycm9yKGVycm9yKTtcbiAgICAgICAgfSxcbiAgICAgICAgaXNHbG9iYWxIYW5kbGVyOiB0cnVlXG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLmFkZE1lc3NhZ2VIYW5kbGVyKFwiUXVvdGFcIiwge1xuICAgICAgICBoYW5kbGVyOiAobWVzc2FnZTogUXVvdGFFdmVudCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb250ZXh0LnVwZGF0ZVF1b3RhKG1lc3NhZ2UucXVvdGEpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGlzR2xvYmFsSGFuZGxlcjogdHJ1ZVxuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5hZGRNZXNzYWdlSGFuZGxlcihcIkRlYnVnXCIsIHsgaGFuZGxlcjogKCkgPT4ge30sIGlzR2xvYmFsSGFuZGxlcjogdHJ1ZSB9KTtcbiAgICB0aGlzLmFkZE1lc3NhZ2VIYW5kbGVyKFwiQWN0aW9uU3RhcnRcIiwge1xuICAgICAgaGFuZGxlcjogKGFjdGlvbjogQWN0aW9uU3RhcnRFdmVudCkgPT4gdGhpcy5fYWN0aW9uTWFwLnNldChhY3Rpb24uZ3VpZCwgYWN0aW9uKSxcbiAgICAgIGlzR2xvYmFsSGFuZGxlcjogZmFsc2VcbiAgICB9KTtcbiAgICB0aGlzLmFkZE1lc3NhZ2VIYW5kbGVyKFwiQWN0aW9uUmVzdWx0XCIsIHtcbiAgICAgIGhhbmRsZXI6IChhY3Rpb246IEFjdGlvblJlc3VsdEV2ZW50KSA9PiB0aGlzLl9hY3Rpb25NYXAuc2V0KGFjdGlvbi5ndWlkLCB7IC4uLnRoaXMuX2FjdGlvbk1hcC5nZXQoYWN0aW9uLmd1aWQpLCAuLi5hY3Rpb24gfSksXG4gICAgICBpc0dsb2JhbEhhbmRsZXI6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5hZGRNZXNzYWdlSGFuZGxlcihcIkFjdGlvblN0b3BcIiwge1xuICAgICAgaGFuZGxlcjogKGFjdGlvbjogQWN0aW9uU3RvcEV2ZW50KSA9PiB0aGlzLl9hY3Rpb25NYXAuc2V0KGFjdGlvbi5ndWlkLCB7IC4uLnRoaXMuX2FjdGlvbk1hcC5nZXQoYWN0aW9uLmd1aWQpLCAuLi5hY3Rpb24gfSksXG4gICAgICBpc0dsb2JhbEhhbmRsZXI6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5hZGRNZXNzYWdlSGFuZGxlcihcIkNvbnRleHRNZXNzYWdlXCIsIHtcbiAgICAgIGhhbmRsZXI6IChtZXNzYWdlOiBDb250ZXh0TWVzc2FnZUV2ZW50KSA9PiB7IHRoaXMuX2F0dGFjaG1lbnRzLnB1c2gobWVzc2FnZS5hZGRpdGlvbmFsUHJvcGVydGllcyk7IH0sXG4gICAgICBpc0dsb2JhbEhhbmRsZXI6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5hZGRNZXNzYWdlSGFuZGxlcihcIk1lc3NhZ2VcIiwge1xuICAgICAgaGFuZGxlcjogKG1lc3NhZ2U6IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLl9yZXNwb25zZS5hdCgtMSkhLmNvbnRlbnQgKz0gbWVzc2FnZS5kZWx0YSA/PyBcIlwiO1xuICAgICAgICB0aGlzLl9yZXNwb25zZS5hdCgtMSkhLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLm1lc3NhZ2VJZCA9IG1lc3NhZ2UubWVzc2FnZUlkO1xuICAgICAgfSxcbiAgICAgIGlzR2xvYmFsSGFuZGxlcjogZmFsc2VcbiAgICB9KTtcbiAgICB0aGlzLmFkZE1lc3NhZ2VIYW5kbGVyKFwiSGlzdG9yeVwiLCB7XG4gICAgICAgIGhhbmRsZXI6IChoaXN0b3J5OiBIaXN0b3J5RXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBUaGUgQ2hhdEhpc3RvcnkgaXMgdXBkYXRlZDogaXQgaXMgdGhlIGN1cnJlbnQgY29weSBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgbmV3IGl0ZW1zIE9OTFkgKGl0IGNhbiBoYXZlIG11bHRpcGxlIG1lc3NhZ2VzOiB0aGUgY29udGV4dCBtZXNzYWdlcyArIHRoZSByZXNwb25zZSBtZXNzYWdlKVxuICAgICAgICAgIC8vIFRoaXMgaXMgbWFuZGF0b3J5IHRvIG5vdCBsb3NlIHRoZSBwcmV2aW91cyB1cGRhdGVzIG9mIHRoZSBjaGF0SGlzdG9yeSB3aGVuIHRoZSBhc3Npc3RhbnQgaXMgc3RyZWFtaW5nIG11bHRpcGxlIG1lc3NhZ2Ugc3RlcHNcbiAgICAgICAgICBjb25zdCBjdXJyZW50Q2hhdEhpc3RvcnkgPSAoY29udGV4dC5nZXRDaGF0SGlzdG9yeSgpIHx8IFtdKSBhcyBDaGF0TWVzc2FnZVtdO1xuICAgICAgICAgIGNvbnN0IG5ld0hpc3RvcnkgPSBbLi4uY3VycmVudENoYXRIaXN0b3J5LCAuLi4oaGlzdG9yeS5oaXN0b3J5LnNsaWNlKGN1cnJlbnRDaGF0SGlzdG9yeS5sZW5ndGgpKV0gYXMgQ2hhdE1lc3NhZ2VbXTtcbiAgICAgICAgICBjb250ZXh0LnNldENoYXRIaXN0b3J5KG5ld0hpc3RvcnkpO1xuXG4gICAgICAgICAgLy8gRW1pdCB0aGUgdXBkYXRlZCBjaGF0IHVzYWdlIG1ldHJpY3NcbiAgICAgICAgICBjb25zdCBsYXN0TWVzc2FnZSA9IG5ld0hpc3RvcnkuYXQoLTEpO1xuICAgICAgICAgIGlmIChsYXN0TWVzc2FnZT8uYWRkaXRpb25hbFByb3BlcnRpZXMudXNhZ2VNZXRyaWNzKSB7XG4gICAgICAgICAgICBjb250ZXh0LnVwZGF0ZUNoYXRVc2FnZU1ldHJpY3MobGFzdE1lc3NhZ2UuYWRkaXRpb25hbFByb3BlcnRpZXMudXNhZ2VNZXRyaWNzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5fZXhlY3V0aW9uVGltZSA9IGhpc3RvcnkuZXhlY3V0aW9uVGltZTtcbiAgICAgICAgICB0aGlzLl9leGVjdXRpb25UaW1lTWlsbGlzZWNvbmRzID0gaGlzdG9yeS5leGVjdXRpb25UaW1lTWlsbGlzZWNvbmRzO1xuICAgICAgICB9LFxuICAgICAgICBpc0dsb2JhbEhhbmRsZXI6IGZhbHNlXG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLmFkZE1lc3NhZ2VIYW5kbGVyKFwiU3VnZ2VzdGVkQWN0aW9uc1wiLCB7XG4gICAgICAgIGhhbmRsZXI6IChtZXNzYWdlOiBTdWdnZXN0ZWRBY3Rpb25zRXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBTaW5jZSBhZnRlciB0aGUgXCJIaXN0b3J5XCIgYW5kIFwiTWVzc2FnZUJyZWFrXCIgdGhhdCB0aGlzIGV2ZW50IGlzIGNhdWdodCxcbiAgICAgICAgICAvLyAkc3VnZ2VzdGVkQWN0aW9uIG5lZWRzIHRvIGJlIHVwZGF0ZWQgZGlyZWN0bHkgdG8gdGhlIGxhc3QgdmlzaWJsZSBcImFzc2lzdGFudFwiIG1lc3NhZ2UgaW4gdGhlIF9yZXNwb25zZSBhbmQgdGhlIGNoYXRIaXN0b3J5XG4gICAgICAgICAgdGhpcy5fcmVzcG9uc2UuYXQoLTEpIS5hZGRpdGlvbmFsUHJvcGVydGllcy4kc3VnZ2VzdGVkQWN0aW9uID0gKHRoaXMuX3Jlc3BvbnNlLmF0KC0xKSEuYWRkaXRpb25hbFByb3BlcnRpZXMuJHN1Z2dlc3RlZEFjdGlvbiB8fCBbXSkuY29uY2F0KG1lc3NhZ2Uuc3VnZ2VzdGVkQWN0aW9ucyk7XG4gICAgICAgICAgY29uc3QgY2hhdEhpc3RvcnkgPSBjb250ZXh0LmdldENoYXRIaXN0b3J5KCkhO1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hc3Npc3RhbnRVdGlscy5sYXN0VmlzaWJsZUFzc2lzdGFudE1lc3NhZ2VJbmRleChjaGF0SGlzdG9yeSk7XG4gICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgY2hhdEhpc3RvcnlbaW5kZXhdLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLiRzdWdnZXN0ZWRBY3Rpb24gPSAoY2hhdEhpc3RvcnlbaW5kZXhdLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLiRzdWdnZXN0ZWRBY3Rpb24gfHwgW10pLmNvbmNhdChtZXNzYWdlLnN1Z2dlc3RlZEFjdGlvbnMpO1xuICAgICAgICAgICAgY29udGV4dC5zZXRDaGF0SGlzdG9yeShjaGF0SGlzdG9yeSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpc0dsb2JhbEhhbmRsZXI6IGZhbHNlXG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLmFkZE1lc3NhZ2VIYW5kbGVyKFwiRGVidWdEaXNwbGF5XCIsIHtcbiAgICAgIGhhbmRsZXI6IChtZXNzYWdlOiBEZWJ1Z01lc3NhZ2VFdmVudCkgPT4gdGhpcy5fZGVidWdNZXNzYWdlcyA9IHRoaXMuX2RlYnVnTWVzc2FnZXMuY29uY2F0KG1lc3NhZ2UpLFxuICAgICAgaXNHbG9iYWxIYW5kbGVyOiBmYWxzZVxuICAgIH0pO1xuICAgIHRoaXMuYWRkTWVzc2FnZUhhbmRsZXIoXCJNZXNzYWdlQnJlYWtcIiwge1xuICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgLy8gU3lzdGVtYXRpY2FsbHkgaGFwcGVucyByaWdodCBhZnRlciB0aGUgXCJIaXN0b3J5XCIgZXZlbnRcbiAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBtb21lbnQgd2hlbiB0aGUgYXNzaXN0YW50IG1lc3NhZ2UgaXMgZnVsbHkgc3RyZWFtZWRcbiAgICAgICAgICBjb25zdCBhc3Npc3RhbnRDb25maWcgPSBjb250ZXh0LmdldEFzc2lzdGFudENvbmZpZygpO1xuICAgICAgICAgIGNvbnN0IGNoYXRIaXN0b3J5ID0gY29udGV4dC5nZXRDaGF0SGlzdG9yeSgpO1xuICAgICAgICAgIGlmICghYXNzaXN0YW50Q29uZmlnIHx8ICFjaGF0SGlzdG9yeSB8fCAhY2hhdEhpc3RvcnkubGVuZ3RoKSByZXR1cm47XG5cbiAgICAgICAgICBjb25zdCBsYXN0Q2hhdE1lc3NhZ2UgPSBjaGF0SGlzdG9yeS5hdCgtMSkhO1xuXG4gICAgICAgICAgY29uc3QgZGV0YWlscyA9IHtcbiAgICAgICAgICAgICdkdXJhdGlvbic6IHRoaXMuX2V4ZWN1dGlvblRpbWVNaWxsaXNlY29uZHMgIT09IHVuZGVmaW5lZCA/IHRoaXMuX2V4ZWN1dGlvblRpbWVNaWxsaXNlY29uZHMgOiB0aGlzLl9leGVjdXRpb25UaW1lLFxuICAgICAgICAgICAgJ3JvbGUnOiBsYXN0Q2hhdE1lc3NhZ2Uucm9sZSxcbiAgICAgICAgICAgICdyYW5rJzogY2hhdEhpc3RvcnkubGVuZ3RoLFxuICAgICAgICAgICAgJ21lc3NhZ2UtaWQnOiBsYXN0Q2hhdE1lc3NhZ2UuYWRkaXRpb25hbFByb3BlcnRpZXMubWVzc2FnZUlkLFxuICAgICAgICAgICAgJ2dlbmVyYXRpb24tdG9rZW5jb3VudCc6IGxhc3RDaGF0TWVzc2FnZS5hZGRpdGlvbmFsUHJvcGVydGllcy51c2FnZU1ldHJpY3M/LmNvbXBsZXRpb25Ub2tlbkNvdW50LFxuICAgICAgICAgICAgJ3Byb21wdC10b2tlbmNvdW50JzogbGFzdENoYXRNZXNzYWdlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLnVzYWdlTWV0cmljcz8ucHJvbXB0VG9rZW5Db3VudCxcbiAgICAgICAgICAgICdhdHRhY2htZW50cyc6IEpTT04uc3RyaW5naWZ5KHRoaXMuX2F0dGFjaG1lbnRzLm1hcCgoeyByZWNvcmRJZCwgY29udGV4dElkLCBwYXJ0cywgdHlwZSB9KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0czogcGFydHMubWFwKCh7IHBhcnRJZCwgdGV4dCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFhc3Npc3RhbnRDb25maWcuYXVkaXRTZXR0aW5ncz8ubG9nQ29udGVudCkgcmV0dXJuIHsgcGFydElkLCB0ZXh0IH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBwYXJ0SWQgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSlcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmICghIWFzc2lzdGFudENvbmZpZy5hdWRpdFNldHRpbmdzPy5sb2dDb250ZW50KSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGxhc3RDaGF0TWVzc2FnZS5jb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAoZGV0YWlscyBhcyBhbnkpWyd0ZXh0J10gPSBsYXN0Q2hhdE1lc3NhZ2UuY29udGVudDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShsYXN0Q2hhdE1lc3NhZ2UuY29udGVudCkpIHtcbiAgICAgICAgICAgICAgKGRldGFpbHMgYXMgYW55KVsndGV4dCddID0gKGxhc3RDaGF0TWVzc2FnZS5jb250ZW50LmZpbmQoKG1zZykgPT4gbXNnLnR5cGUgPT09IFwidGV4dFwiKSBhcyBUZXh0TWVzc2FnZUNvbnRlbnQpLnRleHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29udGV4dC5nZW5lcmF0ZUF1ZGl0RXZlbnQoJ2FzdC1tZXNzYWdlLm1lc3NhZ2UnLCBkZXRhaWxzKTtcbiAgICAgICAgICAvLyBQdXNoIGEgbmV3IGFzc2lzdGFudCBtZXNzYWdlIHRvIHRoZSBfcmVzcG9uc2UgYXJyYXkgT05MWSBpZiB0aGUgY29udGVudCBvZiB0aGUgbGFzdCBtZXNzYWdlIGlzIG5vdCBlbXB0eVxuICAgICAgICAgIGlmICh0aGlzLl9yZXNwb25zZS5hdCgtMSkhLmNvbnRlbnQgIT09IFwiXCIpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc3BvbnNlLnB1c2goe3JvbGU6IFwiYXNzaXN0YW50XCIsIGNvbnRlbnQ6IFwiXCIsIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7ZGlzcGxheTogdHJ1ZSwgbWVzc2FnZUlkOiBndWlkKCl9fSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpc0dsb2JhbEhhbmRsZXI6IGZhbHNlXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZU1lc3NhZ2VIYW5kbGVyczxUPihfbWVzc2FnZUhhbmRsZXJzOiBNYXA8c3RyaW5nLCBNZXNzYWdlSGFuZGxlcjxUPj4pOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZUluaXRpYWxpemVkKCk7XG4gICAgLy8gQ2xlYXIgdGhlIGFscmVhZHkgcmVnaXN0ZXJlZCBnbG9iYWwgY2hhdCBoYW5kbGVycyBiZWZvcmUgbWVyZ2luZyB0aGUgbmV3IG9uZXNcbiAgICB0aGlzLl9tZXNzYWdlSGFuZGxlcnMuZm9yRWFjaCgoZXZlbnRIYW5kbGVyLCBldmVudE5hbWUpID0+IHtcbiAgICAgIGlmKGV2ZW50SGFuZGxlci5pc0dsb2JhbEhhbmRsZXIpIHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZU1lc3NhZ2VIYW5kbGVyKGV2ZW50TmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8gTWVyZ2UgdGhlIG5ldyBldmVudCBoYW5kbGVycyB3aXRoIHRoZSBleGlzdGluZyBvbmVzXG4gICAgdGhpcy5fbWVzc2FnZUhhbmRsZXJzID0gbmV3IE1hcChbLi4udGhpcy5fbWVzc2FnZUhhbmRsZXJzLCAuLi5fbWVzc2FnZUhhbmRsZXJzXSk7XG4gICAgLy8gUmVnaXN0ZXIgdGhlIGdsb2JhbCBoYW5kbGVycyBhbW9uZyB0aGUgbWVyZ2VkIG1hcFxuICAgIHRoaXMuX21lc3NhZ2VIYW5kbGVycy5mb3JFYWNoKChldmVudEhhbmRsZXIsIGV2ZW50TmFtZSkgPT4ge1xuICAgICAgaWYoZXZlbnRIYW5kbGVyLmlzR2xvYmFsSGFuZGxlcikge1xuICAgICAgICB0aGlzLnJlZ2lzdGVyTWVzc2FnZUhhbmRsZXIoZXZlbnROYW1lLCBldmVudEhhbmRsZXIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZE1lc3NhZ2VIYW5kbGVyPFQ+KGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEhhbmRsZXI6IE1lc3NhZ2VIYW5kbGVyPFQ+KTogdm9pZCB7XG4gICAgdGhpcy5lbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIHRoaXMuX21lc3NhZ2VIYW5kbGVycy5zZXQoZXZlbnROYW1lLCBldmVudEhhbmRsZXIpO1xuICAgIGlmKGV2ZW50SGFuZGxlci5pc0dsb2JhbEhhbmRsZXIpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJNZXNzYWdlSGFuZGxlcihldmVudE5hbWUsIGV2ZW50SGFuZGxlcik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyTWVzc2FnZUhhbmRsZXI8VD4oZXZlbnROYW1lOiBzdHJpbmcsIGV2ZW50SGFuZGxlcjogTWVzc2FnZUhhbmRsZXI8VD4pOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZUluaXRpYWxpemVkKCk7XG4gICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuY29udGV4dCEuZ2V0SHViQ29ubmVjdGlvbigpO1xuICAgIGlmICghY29ubmVjdGlvbikge1xuICAgICAgY29uc29sZS5sb2coXCJObyBjb25uZWN0aW9uIGZvdW5kIHRvIHJlZ2lzdGVyIHRoZSBsaXN0ZW5lclwiICsgZXZlbnROYW1lKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29ubmVjdGlvbi5vbihldmVudE5hbWUsIChkYXRhOiBUKSA9PiB7XG4gICAgICBldmVudEhhbmRsZXIuaGFuZGxlcihkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVNZXNzYWdlSGFuZGxlcihldmVudE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKTtcbiAgICB0aGlzLl9tZXNzYWdlSGFuZGxlcnMuZGVsZXRlKGV2ZW50TmFtZSk7XG4gICAgdGhpcy51bnN1YnNjcmliZU1lc3NhZ2VIYW5kbGVyKGV2ZW50TmFtZSk7XG4gIH1cblxuICBwdWJsaWMgdW5zdWJzY3JpYmVNZXNzYWdlSGFuZGxlcihldmVudE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKTtcbiAgICBjb25zdCBjb25uZWN0aW9uID0gdGhpcy5jb250ZXh0IS5nZXRIdWJDb25uZWN0aW9uKCk7XG4gICAgY29ubmVjdGlvbj8ub2ZmKGV2ZW50TmFtZSk7XG4gIH1cblxuICBwdWJsaWMgc3RvcEdlbmVyYXRpb24oKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgdGhpcy5lbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNvbnRleHQhO1xuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBjb250ZXh0LmdldEh1YkNvbm5lY3Rpb24oKSE7XG5cbiAgICAgLy8gU3RhcnQgc3RvcHBpbmcgZ2VuZXJhdGlvbiBieSBpbnZva2luZyB0aGUgQ2FuY2VsVGFza3MgbWV0aG9kXG4gICAgY29udGV4dC5zZXRTdG9wcGluZ0dlbmVyYXRpb25TdGF0dXModHJ1ZSk7XG4gICAgLy8gQ3JlYXRlIGEgU3ViamVjdCB0byBob2xkIHRoZSByZXN1bHQgb2YgdGhlIENhbmNlbFRhc2tzIG1ldGhvZFxuICAgIGNvbnN0IHN0b3BHZW5lcmF0aW9uU3ViamVjdCQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgY29ubmVjdGlvbi5vbignQ2FuY2VsVGFza3MnLCAocmVzKSA9PiB7XG4gICAgICAvLyBXaGVuIHRoZSBnZW5lcmF0aW9uIGlzIHN0b3BwZWQgYmVmb3JlIHN0cmVhbWluZyBhbnkgVklTSUJMRSBhc3Npc3RhbnQgbWVzc2FnZSwgdGhpcyBtZWFucyB0aGF0ICRwcm9ncmVzcywgJGF0dGFjaG1lbnQgYW5kICRkZWJ1ZyBwcm9wZXJ0aWVzIHdpbGwgYmUgbG9zdC5cbiAgICAgIC8vIEhvd2V2ZXIsIHRoZSBcIkNvbnRleHRNZXNzYWdlXCIgZnJhbWVzIHdpbGwgYmUgcGVyc2lzdGVkIGluIHRoZSBjaGF0SGlzdG9yeSBhbmQgdGhlIGFzc2lzdGFudCBtYXkgcmVmZXJlbmNlIHRoZW0gaW4gdGhlIG5leHQgZ2VuZXJhdGlvbi5cbiAgICAgIC8vIFRoaXMgbGVhZHMgdG8gdGhlIHByb2JsZW0gb2YgcmVmZXJlbmNpbmcgdW5kaXNwbGF5ZWQgYXR0YWNobWVudHMgaW4gdGhlIG5leHQgZ2VuZXJhdGlvbi5cbiAgICAgIC8vIFRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgd2UgbmVlZCB0byBwZXJzaXN0ICRwcm9ncmVzcywgJGF0dGFjaG1lbnQgYW5kICRkZWJ1ZyBwcm9wZXJ0aWVzIGJ5IGFkZGluZyBhIG5ldyBhc3Npc3RhbnQgbWVzc2FnZSB3aXRoIGVtcHR5IGNvbnRlbnQgYW5kIHRoZXNlIHByb3BlcnRpZXMuXG4gICAgICAvLyBJbiB0aGUgb3RoZXIgaGFuZCwgdGhpcyBsZWFkcyB0byB0aGUgcHJvYmxlbSBvZiBoYXZpbmcgbWFueSBlbXB0eSBhc3Npc3RhbnQgbWVzc2FnZXMgaW4gdGhlIGNoYXQgaGlzdG9yeSwgaWYgYSBzdG9wIGdlbmVyYXRpb24gaGFwcGVucyBtdWx0aXBsZSB0aW1lcyBpbiBhIHJvdyB3aXRoIG5vIGNvbnRlbnQgZ2VuZXJhdGVkIHlldC5cbiAgICAgIC8vIFRvIHNvbHZlIHRoaXMgcHJvYmxlbSBtZW50aW9uZWQgaW4gdGhlIHRpY2tldCBFUy0yNzAyNCwgd2UgbmVlZCB0byBhbGxvdyBzdWNoIG9wZXJhdGlvbiBPTkxZIGlmIHRoZSBsYXN0IGFzc2lzdGFudCBtZXNzYWdlJ3MgY29udGVudCBpbiB0aGUgY2hhdCBoaXN0b3J5IGlzIG5vdCBlbXB0eS5cbiAgICAgIGNvbnN0IGNoYXRIaXN0b3J5ID0gY29udGV4dC5nZXRDaGF0SGlzdG9yeSgpO1xuICAgICAgY29uc3QgaXNMYXN0Q2hhdEhpc3RvcnlNZXNzYWdlQXNzaXN0YW50Q29udGVudEVtcHR5ID0gY2hhdEhpc3Rvcnk/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICBjaGF0SGlzdG9yeS5hdCgtMSk/LnJvbGUgPT09IFwiYXNzaXN0YW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoY2hhdEhpc3RvcnkuYXQoLTEpPy5jb250ZW50ID09PSBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoY2hhdEhpc3RvcnkuYXQoLTEpPy5jb250ZW50IGFzIE1lc3NhZ2VDb250ZW50W10pPy5maW5kKChtc2cpID0+IG1zZy50eXBlID09PSBcInRleHRcIikgYXMgVGV4dE1lc3NhZ2VDb250ZW50KT8udGV4dCA9PT0gXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgIGlmICh0aGlzLl9yZXNwb25zZSAmJiB0aGlzLl9yZXNwb25zZS5sZW5ndGggPT09IDEgJiYgdGhpcy5fcmVzcG9uc2VbMF0uY29udGVudCA9PT0gXCJcIiAmJiAhaXNMYXN0Q2hhdEhpc3RvcnlNZXNzYWdlQXNzaXN0YW50Q29udGVudEVtcHR5KSB7XG4gICAgICAgIGNvbnN0IG5ld0NoYXRIaXN0b3J5ID0gY2hhdEhpc3RvcnkgPyBbLi4uY2hhdEhpc3RvcnldIDogW107XG4gICAgICAgIG5ld0NoYXRIaXN0b3J5LnB1c2goe3JvbGU6IFwiYXNzaXN0YW50XCIsIGNvbnRlbnQ6IFwiXCIsIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7ZGlzcGxheTogdHJ1ZSwgbWVzc2FnZUlkOiBndWlkKCksICRwcm9ncmVzczogdGhpcy5fcHJvZ3Jlc3MsICRhdHRhY2htZW50OiB0aGlzLl9hdHRhY2htZW50cywgJGRlYnVnOiB0aGlzLl9kZWJ1Z01lc3NhZ2VzfX0pO1xuICAgICAgICBjb250ZXh0LnNldENoYXRIaXN0b3J5KG5ld0NoYXRIaXN0b3J5KTtcbiAgICAgIH1cbiAgICAgIC8vIEVtaXQgdGhlIHJlc3VsdCBvZiB0aGUgQ2FuY2VsVGFza3MgbWV0aG9kXG4gICAgICBzdG9wR2VuZXJhdGlvblN1YmplY3QkLm5leHQoISFyZXMpO1xuICAgICAgLy8gQ29tcGxldGUgdGhlIHN1YmplY3RcbiAgICAgIHN0b3BHZW5lcmF0aW9uU3ViamVjdCQuY29tcGxldGUoKTtcbiAgICAgIC8vIENvbXBsZXRlIHN0b3BwaW5nIGdlbmVyYXRpb25cbiAgICAgIGNvbnRleHQuc2V0U3RvcHBpbmdHZW5lcmF0aW9uU3RhdHVzKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIEludm9rZSB0aGUgQ2FuY2VsVGFza3MgbWV0aG9kIGFuZCBoYW5kbGUgZXJyb3JzXG4gICAgY29ubmVjdGlvbi5pbnZva2UoJ0NhbmNlbFRhc2tzJylcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGludm9raW5nIENhbmNlbFRhc2tzOicsIGVycm9yKTtcbiAgICAgICAgc3RvcEdlbmVyYXRpb25TdWJqZWN0JC5lcnJvcihuZXcgRXJyb3IoZXJyb3IgYXMgc3RyaW5nKSk7XG4gICAgICAgIGNvbnRleHQuc2V0U3RvcHBpbmdHZW5lcmF0aW9uU3RhdHVzKGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSk7XG5cbiAgICByZXR1cm4gc3RvcEdlbmVyYXRpb25TdWJqZWN0JC5hc09ic2VydmFibGUoKTtcbiAgfVxufVxuIl19
388
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzaXN0YW50LXdzLWZyYW1lcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvc2VydmljZXMvYXNzaXN0YW50LXdzLWZyYW1lcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFMUYsT0FBTyxFQUFFLElBQUksRUFBUyxNQUFNLGlCQUFpQixDQUFDO0FBMkI5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUF5QjlELE1BQU0sT0FBTyx3QkFBd0I7SUFEckM7UUFJVSxlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLGNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyQyxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUN4Qyx5QkFBb0IsR0FBRyxNQUFNLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUVwRCxxQkFBZ0IsR0FBcUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUUvRCxlQUFVLEdB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Q0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztRQUVILGtEQUFrRDtRQUNsRCxVQUFVLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQzthQUM3QixLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLDZCQUE2QixFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3BELHNCQUFzQixDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxLQUFlLENBQUMsQ0FBQyxDQUFDO1lBQ3pELE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMzQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztRQUVMLE9BQU8sc0JBQXNCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDL0MsQ0FBQzsrR0EvWlUsd0JBQXdCO21IQUF4Qix3QkFBd0I7OzRGQUF4Qix3QkFBd0I7a0JBRHBDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh1YkNvbm5lY3Rpb24gfSBmcm9tICdAbWljcm9zb2Z0L3NpZ25hbHInO1xuaW1wb3J0IHsgVHJhbnNsb2NvU2VydmljZSB9IGZyb20gJ0Bqc3ZlcnNlL3RyYW5zbG9jbyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0LCBmcm9tRXZlbnQsIG1lcmdlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwLCBtZXJnZU1hcCwgdGFrZVVudGlsLCB0YXAsIHRha2UsIHN3aXRjaE1hcCwgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IGd1aWQsIFF1ZXJ5IH0gZnJvbSBcIkBzaW5lcXVhL2F0b21pY1wiO1xuXG5pbXBvcnQge1xuICBBY3Rpb25NZXNzYWdlLFxuICBBY3Rpb25SZXN1bHRFdmVudCxcbiAgQWN0aW9uU3RhcnRFdmVudCxcbiAgQWN0aW9uU3RvcEV2ZW50LFxuICBDaGF0Q29uZmlnLFxuICBDaGF0Q29udGV4dEF0dGFjaG1lbnQsXG4gIENoYXRNZXNzYWdlLFxuICBDaGF0UGF5bG9hZCxcbiAgQ2hhdFByb2dyZXNzLFxuICBDaGF0UmVzcG9uc2UsXG4gIENoYXRVc2FnZU1ldHJpY3MsXG4gIENvbnRleHRNZXNzYWdlRXZlbnQsXG4gIERlYnVnTWVzc2FnZSxcbiAgRGVidWdNZXNzYWdlRXZlbnQsXG4gIEVycm9yRXZlbnQsXG4gIEhpc3RvcnlFdmVudCxcbiAgTWVzc2FnZUhhbmRsZXIsXG4gIE1lc3NhZ2VFdmVudCxcbiAgUXVvdGEsXG4gIFF1b3RhRXZlbnQsXG4gIFNhdmVkQ2hhdFJlc3BvbnNlLFxuICBTdWdnZXN0ZWRBY3Rpb25zRXZlbnRcbn0gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSAnLi9hcHAuc2VydmljZSc7XG5pbXBvcnQgeyBBc3Npc3RhbnRVdGlscyB9IGZyb20gJy4uL3V0aWxzL3V0aWxzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTm90aWZpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICcuL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE1lc3NhZ2VDb250ZW50LCBUZXh0TWVzc2FnZUNvbnRlbnQgfSBmcm9tICcuLi90eXBlcy9tZXNzYWdlLWNvbnRlbnQudHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFzc2lzdGFudFdzRnJhbWVzQ29udGV4dCB7XG4gIGdldEFzc2lzdGFudENvbmZpZzogKCkgPT4gQ2hhdENvbmZpZyB8IHVuZGVmaW5lZDtcbiAgZ2V0Q2hhdEluc3RhbmNlSWQ6ICgpID0+IHN0cmluZztcbiAgZ2V0Q2hhdElkOiAoKSA9PiBzdHJpbmc7XG4gIGdldEh1YkNvbm5lY3Rpb246ICgpID0+IEh1YkNvbm5lY3Rpb24gfCB1bmRlZmluZWQ7XG4gIGdldENoYXRIaXN0b3J5OiAoKSA9PiBDaGF0TWVzc2FnZVtdIHwgdW5kZWZpbmVkO1xuXG4gIHNldFN0cmVhbWluZ1N0YXR1czogKGlzU3RyZWFtaW5nOiBib29sZWFuKSA9PiB2b2lkO1xuICBzZXRDaGF0SGlzdG9yeTogKGhpc3Rvcnk6IENoYXRNZXNzYWdlW10gfCB1bmRlZmluZWQpID0+IHZvaWQ7XG4gIHNldFN0b3BwaW5nR2VuZXJhdGlvblN0YXR1czogKGlzU3RvcHBpbmc6IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHNldFNhdmVkQ2hhdHNFcnJvclN0YXR1czogKGhhc0Vycm9yOiBib29sZWFuKSA9PiB2b2lkO1xuXG4gIHVwZGF0ZVF1b3RhOiAocXVvdGE6IFF1b3RhLCBwcm9wYWdhdGVFcnJvcj86IGJvb2xlYW4pID0+IHZvaWQ7XG4gIHVwZGF0ZUNoYXRVc2FnZU1ldHJpY3M6IChtZXRyaWNzOiBDaGF0VXNhZ2VNZXRyaWNzKSA9PiB2b2lkO1xuICBnZW5lcmF0ZUF1ZGl0RXZlbnQ6ICh0eXBlOiBzdHJpbmcsIGRldGFpbHM6IFJlY29yZDxzdHJpbmcsIGFueT4sIGlkPzogc3RyaW5nKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBhZGRTYXZlZENoYXQ6IChpZDogc3RyaW5nLCBtZXNzYWdlczogQ2hhdE1lc3NhZ2VbXSkgPT4gT2JzZXJ2YWJsZTxTYXZlZENoYXRSZXNwb25zZT47XG4gIHVwZGF0ZVNhdmVkQ2hhdDogKGlkOiBzdHJpbmcsIG5hbWU/OiBzdHJpbmcsIG1lc3NhZ2VzPzogQ2hhdE1lc3NhZ2VbXSkgPT4gT2JzZXJ2YWJsZTxTYXZlZENoYXRSZXNwb25zZT47XG4gIGxpc3RTYXZlZENoYXQ6ICgpID0+IHZvaWQ7XG4gIGlzRXhpc3RpbmdTYXZlZENoYXQ6IChpZDogc3RyaW5nKSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xufVxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXNzaXN0YW50V3NGcmFtZXNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb250ZXh0OiBBc3Npc3RhbnRXc0ZyYW1lc0NvbnRleHQgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBhcHBTZXJ2aWNlID0gaW5qZWN0KEFwcFNlcnZpY2UpO1xuICBwcml2YXRlIHRyYW5zbG9jbyA9IGluamVjdChUcmFuc2xvY29TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhc3Npc3RhbnRVdGlscyA9IGluamVjdChBc3Npc3RhbnRVdGlscyk7XG4gIHByaXZhdGUgbm90aWZpY2F0aW9uc1NlcnZpY2UgPSBpbmplY3QoTm90aWZpY2F0aW9uc1NlcnZpY2UpO1xuXG4gIHByaXZhdGUgX21lc3NhZ2VIYW5kbGVyczogTWFwPHN0cmluZywgTWVzc2FnZUhhbmRsZXI8YW55Pj4gPSBuZXcgTWFwKCk7XG4gIHByaXZhdGUgX3Jlc3BvbnNlOiBDaGF0TWVzc2FnZVtdO1xuICBwcml2YXRlIF9hY3Rpb25NYXAgPSBuZXcgTWFwPHN0cmluZywgQWN0aW9uTWVzc2FnZT4oKTtcbiAgcHJpdmF0ZSBfcHJvZ3Jlc3M6IENoYXRQcm9ncmVzc1tdIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICBwcml2YXRlIF9leGVjdXRpb25UaW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgX2V4ZWN1dGlvblRpbWVNaWxsaXNlY29uZHM/OiBudW1iZXI7XG4gIHByaXZhdGUgX2F0dGFjaG1lbnRzOiBDaGF0Q29udGV4dEF0dGFjaG1lbnRbXSA9IFtdO1xuICBwcml2YXRlIF9kZWJ1Z01lc3NhZ2VzOiBEZWJ1Z01lc3NhZ2VbXSA9IFtdO1xuXG4gIHB1YmxpYyBpbml0KGNvbnRleHQ6IEFzc2lzdGFudFdzRnJhbWVzQ29udGV4dCk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZUluaXRpYWxpemVkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb250ZXh0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Fzc2lzdGFudFdzRnJhbWVzU2VydmljZSBub3QgaW5pdGlhbGl6ZWQuIENhbGwgaW5pdCgpIGZpcnN0LicpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmZXRjaChtZXNzYWdlczogQ2hhdE1lc3NhZ2VbXSwgcXVlcnk6IFF1ZXJ5KTogT2JzZXJ2YWJsZTxDaGF0UmVzcG9uc2U+IHtcbiAgICB0aGlzLmVuc3VyZUluaXRpYWxpemVkKCk7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuY29udGV4dCE7XG4gICAgY29uc3QgYXNzaXN0YW50Q29uZmlnID0gY29udGV4dC5nZXRBc3Npc3RhbnRDb25maWcoKSE7XG5cbiAgICAgLy8gU3RhcnQgc3RyZWFtaW5nIGJ5IGludm9raW5nIHRoZSBDaGF0IG1ldGhvZFxuICAgIGNvbnRleHQuc2V0U3RyZWFtaW5nU3RhdHVzKHRydWUpO1xuXG4gICAgLy8gUHJlcGFyZSB0aGUgcGF5bG9hZCB0byBzZW5kIHRvIHRoZSBDaGF0IG1ldGhvZFxuICAgIGNvbnN0IGRhdGE6IENoYXRQYXlsb2FkID0ge1xuICAgICAgaGlzdG9yeTogbWVzc2FnZXMsXG4gICAgICBmdW5jdGlvbnM6IGFzc2lzdGFudENvbmZpZy5kZWZhdWx0VmFsdWVzLmZ1bmN0aW9ucz8uZmlsdGVyKGZ1bmMgPT4gZnVuYy5lbmFibGVkKS5tYXAoZnVuYyA9PiBmdW5jLm5hbWUpLFxuICAgICAgZGVidWc6IGFzc2lzdGFudENvbmZpZy5kZWZhdWx0VmFsdWVzLmRlYnVnLFxuICAgICAgc2VydmljZVNldHRpbmdzOiB7XG4gICAgICAgIHNlcnZpY2VfaWQ6IGFzc2lzdGFudENvbmZpZy5kZWZhdWx0VmFsdWVzLnNlcnZpY2VfaWQsXG4gICAgICAgIG1vZGVsX2lkOiBhc3Npc3RhbnRDb25maWcuZGVmYXVsdFZhbHVlcy5tb2RlbF9pZCxcbiAgICAgICAgdG9wX3A6IGFzc2lzdGFudENvbmZpZy5kZWZhdWx0VmFsdWVzLnRvcF9wLFxuICAgICAgICB0ZW1wZXJhdHVyZTogYXNzaXN0YW50Q29uZmlnLmRlZmF1bHRWYWx1ZXMudGVtcGVyYXR1cmUsXG4gICAgICAgIG1heF90b2tlbnM6IGFzc2lzdGFudENvbmZpZy5kZWZhdWx0VmFsdWVzLm1heF90b2tlbnMsXG4gICAgICAgIC4uLmFzc2lzdGFudENvbmZpZy5hZGRpdGlvbmFsU2VydmljZVNldHRpbmdzXG4gICAgICB9LFxuICAgICAgYXBwUXVlcnk6IHtcbiAgICAgICAgYXBwOiB0aGlzLmFwcFNlcnZpY2UuYXBwTmFtZSxcbiAgICAgICAgcXVlcnlcbiAgICAgIH0sXG4gICAgICBpbnN0YW5jZUlkOiBjb250ZXh0LmdldENoYXRJbnN0YW5jZUlkKCksXG4gICAgICBjaGF0SWQ6IGNvbnRleHQuZ2V0Q2hhdElkKCksXG4gICAgICBnZW5lcmljQ2hhdEVycm9yTWVzc2FnZTogYXNzaXN0YW50Q29uZmlnLmdsb2JhbFNldHRpbmdzLmdlbmVyaWNDaGF0RXJyb3JNZXNzYWdlID8gdGhpcy50cmFuc2xvY28udHJhbnNsYXRlKGFzc2lzdGFudENvbmZpZy5nbG9iYWxTZXR0aW5ncy5nZW5lcmljQ2hhdEVycm9yTWVzc2FnZSkgOiBcIlwiXG4gICAgfTtcblxuICAgIC8vIEluaXRpYWxpemUgdGhlIHJlc3BvbnNlIHdpdGggYW4gZW1wdHkgYXNzaXN0YW50IG1lc3NhZ2VcbiAgICAvLyBoZXJlIGRpc3BsYXk6IHRydWUgaXMgbmVlZGVkIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gc2hvdyB0aGUgcHJvZ3Jlc3NcbiAgICAvLyBoZXJlIG1lc3NhZ2VJZCBpcyBuZWVkZWQgYnV0IGl0IGlzIHRlbXBvcmFyeSBhbmQgd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgY29ycmVjdCBtZXNzYWdlSWQgZ2VuZXJhdGVkIGJ5IHRoZSBhc3Npc3RhbnQgd2hlbiB0aGUgbWVzc2FnZSBzdGFydHMgc3RyZWFtaW5nXG4gICAgdGhpcy5fcmVzcG9uc2UgPSBbeyByb2xlOiBcImFzc2lzdGFudFwiLCBjb250ZW50OiBcIlwiLCBhZGRpdGlvbmFsUHJvcGVydGllczogeyBkaXNwbGF5OiB0cnVlLCBtZXNzYWdlSWQ6IGd1aWQoKSB9IH1dO1xuXG4gICAgLy8gQ3JlYXRlIGEgU3ViamVjdCB0byBzaWduYWwgY29tcGxldGlvblxuICAgIGNvbnN0IGNvbXBsZXRpb24kID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8vIENyZWF0ZSBvYnNlcnZhYmxlcyBmb3IgZWFjaCBub24tZ2xvYmFsIGhhbmRsZXIgaW4gdGhlIF9tZXNzYWdlSGFuZGxlcnMgbWFwIChkZWZhdWx0IGFuZCBldmVudHVhbCBjdXN0b20gb25lcykgb25jZSBpdCBpcyB0cmlnZ2VyZWQgYnkgdGhlIGh1YiBjb25uZWN0aW9uXG4gICAgY29uc3Qgb2JzZXJ2YWJsZXMgPSBBcnJheVxuICAgICAgLmZyb20odGhpcy5fbWVzc2FnZUhhbmRsZXJzLmVudHJpZXMoKSlcbiAgICAgIC5maWx0ZXIoKFtldmVudE5hbWUsIGV2ZW50SGFuZGxlcl0pID0+ICFldmVudEhhbmRsZXIuaXNHbG9iYWxIYW5kbGVyKVxuICAgICAgLm1hcCgoW2V2ZW50TmFtZSwgZXZlbnRIYW5kbGVyXSkgPT4gZnJvbUV2ZW50PGFueT4oY29udGV4dC5nZXRIdWJDb25uZWN0aW9uKCkhLCBldmVudE5hbWUpLnBpcGUoXG4gICAgICAgICAgbWVyZ2VNYXAoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAvLyBXcmFwIHRoZSBoYW5kbGVyIGluIGEgdHJ5LWNhdGNoIGJsb2NrIHRvIHByZXZlbnQgdGhlIGVudGlyZSBzdHJlYW0gZnJvbSBmYWlsaW5nIGlmIGFuIGVycm9yIG9jY3VycyBpbiBhIHNpbmdsZSBoYW5kbGVyXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAvLyBFeGVjdXRlIHRoZSBoYW5kbGVyIGFuZCBlbWl0IHRoZSByZXN1bHRcbiAgICAgICAgICAgICAgLy8gTkI6IGhlcmUgd2UgY291bGQgdXNlIFtldmVudEhhbmRsZXIuaGFuZGxlcihldmVudCldIHdoaWNoIGJlaGluZCB0aGUgc2NlbmVzIG1lcmdlTWFwIGludGVycHJldHMgdGhpcyBhcnJheSBhcyBhbiBvYnNlcnZhYmxlIHNlcXVlbmNlIHdpdGggb25lIGl0ZW0sIHdoaWNoIGl0IHRoZW4gZW1pdHNcbiAgICAgICAgICAgICAgcmV0dXJuIG9mKGV2ZW50SGFuZGxlci5oYW5kbGVyKGV2ZW50KSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBFcnJvciBpbiBldmVudCBoYW5kbGVyIGZvciAke2V2ZW50TmFtZX06YCwgZXJyb3IpO1xuICAgICAgICAgICAgICAvLyBVc2UgdGhyb3dFcnJvciB0byBwcm9wYWdhdGUgdGhlIGVycm9yIGRvd25zdHJlYW1cbiAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKGBFcnJvciBpbiBldmVudCBoYW5kbGVyIGZvciAke2V2ZW50TmFtZX06ICR7ZXJyb3J9YCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICkpO1xuXG4gICAgLy8gVGhlbiBtZXJnZSB0aGVtIGludG8gYSBzaW5nbGUgb2JzZXJ2YWJsZSBpbiBvcmRlciB0byBzaW11bGF0ZSB0aGUgc3RyZWFtaW5nIGJlaGF2aW9yXG4gICAgY29uc3QgY29tYmluZWQkID0gbWVyZ2UoLi4ub2JzZXJ2YWJsZXMpLnBpcGUoXG4gICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAvLyBEZWZpbmUgJHByb2dyZXNzIGZyb20gdGhlIF9hY3Rpb25NYXBcbiAgICAgICAgY29uc3QgYWN0aW9ucyA9IEFycmF5LmZyb20odGhpcy5fYWN0aW9uTWFwLnZhbHVlcygpKTtcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3MgPSBhY3Rpb25zLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBhY3Rpb25zLm1hcCgoYSkgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGEuZGlzcGxheU5hbWUgPz8gXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogYS5kaXNwbGF5VmFsdWUgPz8gXCJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZTogYS5leGVjdXRpb25UaW1lICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWU6IGEuZXhlY3V0aW9uVGltZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgICAvLyBBbHdheXMgdXBkYXRlIE9OTFkgdGhlIGZpcnN0IGFzc2lzdGFudCBtZXNzYWdlIG9mIHRoZSBfcmVzcG9uc2Ugd2l0aCB0aGUgbmV3ICRwcm9ncmVzcywgJGF0dGFjaG1lbnQgYW5kICRkZWJ1Z1xuICAgICAgICAvLyBBc3N1bWluZyB0aGF0IHRoZSBmaXJzdCBhc3Npc3RhbnQgbWVzc2FnZSBpcyBhbHdheXMgdmlzaWJsZSBzaW5jZSB0aGUgaHViIGRvZXMgbm90IHNlbmQgaGlkZGVuIG1lc3NhZ2VzIGJ5IGRlc2lnblxuICAgICAgICAvLyBTbyBldmVuIGlmIHRoZSBmaXJzdCBhc3Npc3RhbnQgbWVzc2FnZSBpcyBoaWRkZW4gKGRpc3BsYXk6IGZhbHNlKSwgdGhlIF9yZXNwb25zZVswXSB3aWxsIGFuZCBzaG91bGQgY29udGFpbiA6XG4gICAgICAgIC8vICAtICRwcm9ncmVzcywgJGF0dGFjaG1lbnQgYW5kICRkZWJ1Z1xuICAgICAgICAvLyAgLSB0aGUgY29udGVudCBvZiB0aGUgZmlyc3QgdmlzaWJsZSBhc3Npc3RhbnQgbWVzc2FnZSBpbiB0aGUgd29ya2Zsb3dcbiAgICAgICAgLy8gVGhpcyBpcyBtYW5kYXRvcnkgaW4gb3JkZXIgdG8gbWF0Y2ggdGhlIGJlaGF2aW9yIG9mIGNvbnNlY3V0aXZlIG1lc3NhZ2VzIGFuZCBtYWludGFpbiBjb25zaXN0ZW5jeSB3aXRoIHRoZSBjaGF0SGlzdG9yeVxuICAgICAgICBpZighIXRoaXMuX3Byb2dyZXNzIHx8IHRoaXMuX2F0dGFjaG1lbnRzLmxlbmd0aCA+IDAgfHwgdGhpcy5fZGVidWdNZXNzYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5fcmVzcG9uc2VbMF0uYWRkaXRpb25hbFByb3BlcnRpZXMuJHByb2dyZXNzID0gdGhpcy5fcHJvZ3Jlc3M7XG4gICAgICAgICAgdGhpcy5fcmVzcG9uc2VbMF0uYWRkaXRpb25hbFByb3BlcnRpZXMuJGF0dGFjaG1lbnQgPSB0aGlzLl9hdHRhY2htZW50cztcbiAgICAgICAgICB0aGlzLl9yZXNwb25zZVswXS5hZGRpdGlvbmFsUHJvcGVydGllcy4kZGVidWcgPSB0aGlzLl9kZWJ1Z01lc3NhZ2VzO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJldHVybiB0aGUgcmVzdWx0XG4gICAgICAgIHJldHVybiB7IGhpc3Rvcnk6IFsuLi5tZXNzYWdlcywgLi4udGhpcy5fcmVzcG9uc2VdLCBleGVjdXRpb25UaW1lOiB0aGlzLl9leGVjdXRpb25UaW1lLCBleGVjdXRpb25UaW1lTWlsbGlzZWNvbmRzOiB0aGlzLl9leGVjdXRpb25UaW1lTWlsbGlzZWNvbmRzIH07XG4gICAgICB9KSxcbiAgICAgIC8vIENvbXBsZXRlIHRoZSBvYnNlcnZhYmxlIHdoZW4gY29tcGxldGlvbiQgZW1pdHNcbiAgICAgIHRha2VVbnRpbChjb21wbGV0aW9uJCksXG4gICAgKTtcblxuICAgIC8vIHJldHVybiBhIG5ldyBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIHJlc3VsdCBvZiB0aGUgY29tYmluZWQgc3RyZWFtIGFuZCBoYW5kbGVzIHRoZSBldmVudHVhbCBlcnJvcnMgb2YgdGhlIGludm9jYXRpb24gb2YgdGhlIENoYXQgbWV0aG9kXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgIC8vIFN1YnNjcmliZSB0byBjb21iaW5lZCBzdHJlYW1cbiAgICAgIGNvbWJpbmVkJC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAodmFsdWUpID0+IG9ic2VydmVyLm5leHQodmFsdWUpLFxuICAgICAgICBlcnJvcjogKGVycikgPT4gb2JzZXJ2ZXIuZXJyb3IoZXJyKVxuICAgICAgfSk7XG5cbiAgICAgIC8vIEludm9rZSB0aGUgQ2hhdCBtZXRob2QgYW5kIGhhbmRsZSBlcnJvcnNcbiAgICAgIGNvbnRleHQuZ2V0SHViQ29ubmVjdGlvbigpIS5pbnZva2UoJ0NoYXQnLCBkYXRhKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY2hhdEhpc3RvcnkgPSBjb250ZXh0LmdldENoYXRIaXN0b3J5KCkhO1xuICAgICAgICAgIC8vIElmIGEgdmFsaWQgYXNzaXN0YW50IG1lc3NhZ2Ugd2l0aCAoZGlzcGxheTogdHJ1ZSkgd2FzIGZvdW5kLCB1cGRhdGUgaXRcbiAgICAgICAgICAvLyBhbmQgaXQgc2hvdWxkIGFsd2F5cyB0aGUgY2FzZVxuICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hc3Npc3RhbnRVdGlscy5maXJzdFZpc2libGVBc3Npc3RhbnRNZXNzYWdlSW5kZXgoY2hhdEhpc3RvcnkpO1xuICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIGNoYXRIaXN0b3J5W2luZGV4XS5hZGRpdGlvbmFsUHJvcGVydGllcy4kcHJvZ3Jlc3MgPSB0aGlzLl9wcm9ncmVzcztcbiAgICAgICAgICAgIGNoYXRIaXN0b3J5W2luZGV4XS5hZGRpdGlvbmFsUHJvcGVydGllcy4kYXR0YWNobWVudCA9IHRoaXMuX2F0dGFjaG1lbnRzO1xuICAgICAgICAgICAgY2hhdEhpc3RvcnlbaW5kZXhdLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLiRkZWJ1ZyA9IHRoaXMuX2RlYnVnTWVzc2FnZXM7XG4gICAgICAgICAgICBjb250ZXh0LnNldENoYXRIaXN0b3J5KGNoYXRIaXN0b3J5KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBTYXZlL3VwZGF0ZSB0aGUgY2hhdCBpZiBzYXZlZENoYXQgZW5hYmxlZFxuICAgICAgICAgIGlmIChhc3Npc3RhbnRDb25maWcuc2F2ZWRDaGF0U2V0dGluZ3MuZW5hYmxlZCAmJiBjb250ZXh0LmdldENoYXRIaXN0b3J5KCkhLnNvbWUoKG1zZykgPT4gbXNnLmFkZGl0aW9uYWxQcm9wZXJ0aWVzPy5pc1VzZXJJbnB1dCA9PT0gdHJ1ZSkpIHtcbiAgICAgICAgICAgIGNvbnRleHQuaXNFeGlzdGluZ1NhdmVkQ2hhdChjb250ZXh0LmdldENoYXRJZCgpKS5waXBlKFxuICAgICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgICBzd2l0Y2hNYXAoKGV4aXN0cykgPT5cbiAgICAgICAgICAgICAgICBleGlzdHNcbiAgICAgICAgICAgICAgICAgID8gY29udGV4dC51cGRhdGVTYXZlZENoYXQoY29udGV4dC5nZXRDaGF0SWQoKSwgdW5kZWZpbmVkLCBjb250ZXh0LmdldENoYXRIaXN0b3J5KCkhKVxuICAgICAgICAgICAgICAgICAgOiBjb250ZXh0LmFkZFNhdmVkQ2hhdChjb250ZXh0LmdldENoYXRJZCgpLCBjb250ZXh0LmdldENoYXRIaXN0b3J5KCkhKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgIHRhcCgoKSA9PiBjb250ZXh0Lmxpc3RTYXZlZENoYXQoKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiBjb250ZXh0LnNldFN0cmVhbWluZ1N0YXR1cyhmYWxzZSkpXG4gICAgICAgICAgICApLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgIG5leHQ6ICgpID0+IHt9LFxuICAgICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiBvYnNlcnZlci5lcnJvcihlcnJvciksXG4gICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiBvYnNlcnZlci5jb21wbGV0ZSgpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29udGV4dC5zZXRTdHJlYW1pbmdTdGF0dXMoZmFsc2UpO1xuICAgICAgICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgaW52b2tpbmcgQ2hhdDonLCBlcnJvcik7XG4gICAgICAgICAgY29udGV4dC5zZXRTdHJlYW1pbmdTdGF0dXMoZmFsc2UpO1xuICAgICAgICAgIC8vIEVtaXQgdGhlIGVycm9yIHRvIHRoZSBuZXdseSBjcmVhdGVkIG9ic2VydmFibGVcbiAgICAgICAgICBvYnNlcnZlci5lcnJvcihlcnJvcik7XG4gICAgICAgICAgLy8gUmV0dXJuIGEgcmVzb2x2ZWQgcHJvbWlzZSB0byBoYW5kbGUgdGhlIGVycm9yIGFuZCBwcmV2ZW50IHVuaGFuZGxlZCBwcm9taXNlIHJlamVjdGlvblxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICAgIC8vIFRoaXMgYmxvY2sgY29uY2VybnMgT05MWSB0aGUgY29tcGxldGlvbiBvZiB0aGUgXCJDaGF0XCIgbWV0aG9kIGludm9jYXRpb24uXG4gICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGUgY29tcGxldGlvbiBvZiB0aGUgY29tYmluZWQkIHN0cmVhbS5cbiAgICAgICAgICAvLyBJdCBkb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCB0aGUgY29tcGxldGlvbiBvZiB0aGUgZW50aXJlIGZldGNoIG1ldGhvZCAodGhlIG9ic2VydmFibGUgcmV0dXJuZWQgYnkgZmV0Y2gpIGFuZCB3aGljaCBkZXBlbmRzIG9uIHRoZSBjb21wbGV0aW9uIG9mIHRoZSBzYXZlIGNoYXQgYWN0aW9uIGlmIGVuYWJsZWRcbiAgICAgICAgICB0aGlzLl9yZXNwb25zZSA9IFtdOyAvLyBDbGVhciB0aGUgX3Jlc3BvbnNlXG4gICAgICAgICAgdGhpcy5fYWN0aW9uTWFwLmNsZWFyKCk7IC8vIENsZWFyIHRoZSBfYWN0aW9uTWFwXG4gICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MgPSB1bmRlZmluZWQ7IC8vIENsZWFyIHRoZSBfcHJvZ3Jlc3NcbiAgICAgICAgICB0aGlzLl9hdHRhY2htZW50cyA9IFtdOyAvLyBDbGVhciB0aGUgX2F0dGFjaG1lbnRzXG4gICAgICAgICAgdGhpcy5fZGVidWdNZXNzYWdlcyA9IFtdOyAvLyBDbGVhciB0aGUgX2RlYnVnTWVzc2FnZXNcbiAgICAgICAgICB0aGlzLl9leGVjdXRpb25UaW1lID0gXCJcIjsgLy8gQ2xlYXIgdGhlIF9leGVjdXRpb25UaW1lXG4gICAgICAgICAgdGhpcy5fZXhlY3V0aW9uVGltZU1pbGxpc2Vjb25kcyA9IHVuZGVmaW5lZDsgLy8gQ2xlYXIgdGhlIF9leGVjdXRpb25UaW1lTWlsbGlzZWNvbmRzXG4gICAgICAgICAgY29tcGxldGlvbiQubmV4dCgpOyAvLyBFbWl0IGEgc2lnbmFsIHRvIGNvbXBsZXRlIHRoZSBvYnNlcnZhYmxlc1xuICAgICAgICAgIGNvbXBsZXRpb24kLmNvbXBsZXRlKCk7IC8vIENvbXBsZXRlIHRoZSBzdWJqZWN0XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGluaXRNZXNzYWdlSGFuZGxlcnMoKTogdm9pZCB7XG4gICAgdGhpcy5lbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNvbnRleHQhO1xuXG4gICAgdGhpcy5hZGRNZXNzYWdlSGFuZGxlcihcIkVycm9yXCIsIHtcbiAgICAgICAgaGFuZGxlcjogKGVycm9yOiBFcnJvckV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKGVycm9yLmluZGV4T2YoJ1NhdmVkQ2hhdExpc3QnKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnRleHQuc2V0U2F2ZWRDaGF0c0Vycm9yU3RhdHVzKHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmVycm9yKGVycm9yKTtcbiAgICAgICAgfSxcbiAgICAgICAgaXNHbG9iYWxIYW5kbGVyOiB0cnVlXG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLmFkZE1lc3NhZ2VIYW5kbGVyKFwiUXVvdGFcIiwge1xuICAgICAgICBoYW5kbGVyOiAobWVzc2FnZTogUXVvdGFFdmVudCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb250ZXh0LnVwZGF0ZVF1b3RhKG1lc3NhZ2UucXVvdGEpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGlzR2xvYmFsSGFuZGxlcjogdHJ1ZVxuICAgICAgfVxuICAgICk7XG4gICAgdGhpcy5hZGRNZXNzYWdlSGFuZGxlcihcIkRlYnVnXCIsIHsgaGFuZGxlcjogKCkgPT4ge30sIGlzR2xvYmFsSGFuZGxlcjogdHJ1ZSB9KTtcbiAgICB0aGlzLmFkZE1lc3NhZ2VIYW5kbGVyKFwiQWN0aW9uU3RhcnRcIiwge1xuICAgICAgaGFuZGxlcjogKGFjdGlvbjogQWN0aW9uU3RhcnRFdmVudCkgPT4gdGhpcy5fYWN0aW9uTWFwLnNldChhY3Rpb24uZ3VpZCwgYWN0aW9uKSxcbiAgICAgIGlzR2xvYmFsSGFuZGxlcjogZmFsc2VcbiAgICB9KTtcbiAgICB0aGlzLmFkZE1lc3NhZ2VIYW5kbGVyKFwiQWN0aW9uUmVzdWx0XCIsIHtcbiAgICAgIGhhbmRsZXI6IChhY3Rpb246IEFjdGlvblJlc3VsdEV2ZW50KSA9PiB0aGlzLl9hY3Rpb25NYXAuc2V0KGFjdGlvbi5ndWlkLCB7IC4uLnRoaXMuX2FjdGlvbk1hcC5nZXQoYWN0aW9uLmd1aWQpLCAuLi5hY3Rpb24gfSksXG4gICAgICBpc0dsb2JhbEhhbmRsZXI6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5hZGRNZXNzYWdlSGFuZGxlcihcIkFjdGlvblN0b3BcIiwge1xuICAgICAgaGFuZGxlcjogKGFjdGlvbjogQWN0aW9uU3RvcEV2ZW50KSA9PiB0aGlzLl9hY3Rpb25NYXAuc2V0KGFjdGlvbi5ndWlkLCB7IC4uLnRoaXMuX2FjdGlvbk1hcC5nZXQoYWN0aW9uLmd1aWQpLCAuLi5hY3Rpb24gfSksXG4gICAgICBpc0dsb2JhbEhhbmRsZXI6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5hZGRNZXNzYWdlSGFuZGxlcihcIkNvbnRleHRNZXNzYWdlXCIsIHtcbiAgICAgIGhhbmRsZXI6IChtZXNzYWdlOiBDb250ZXh0TWVzc2FnZUV2ZW50KSA9PiB7IHRoaXMuX2F0dGFjaG1lbnRzLnB1c2gobWVzc2FnZS5hZGRpdGlvbmFsUHJvcGVydGllcyk7IH0sXG4gICAgICBpc0dsb2JhbEhhbmRsZXI6IGZhbHNlXG4gICAgfSk7XG4gICAgdGhpcy5hZGRNZXNzYWdlSGFuZGxlcihcIk1lc3NhZ2VcIiwge1xuICAgICAgaGFuZGxlcjogKG1lc3NhZ2U6IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLl9yZXNwb25zZS5hdCgtMSkhLmNvbnRlbnQgKz0gbWVzc2FnZS5kZWx0YSA/PyBcIlwiO1xuICAgICAgICB0aGlzLl9yZXNwb25zZS5hdCgtMSkhLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLm1lc3NhZ2VJZCA9IG1lc3NhZ2UubWVzc2FnZUlkO1xuICAgICAgfSxcbiAgICAgIGlzR2xvYmFsSGFuZGxlcjogZmFsc2VcbiAgICB9KTtcbiAgICB0aGlzLmFkZE1lc3NhZ2VIYW5kbGVyKFwiSGlzdG9yeVwiLCB7XG4gICAgICAgIGhhbmRsZXI6IChoaXN0b3J5OiBIaXN0b3J5RXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBUaGUgQ2hhdEhpc3RvcnkgaXMgdXBkYXRlZDogaXQgaXMgdGhlIGN1cnJlbnQgY29weSBjb25jYXRlbmF0ZWQgd2l0aCB0aGUgbmV3IGl0ZW1zIE9OTFkgKGl0IGNhbiBoYXZlIG11bHRpcGxlIG1lc3NhZ2VzOiB0aGUgY29udGV4dCBtZXNzYWdlcyArIHRoZSByZXNwb25zZSBtZXNzYWdlKVxuICAgICAgICAgIC8vIFRoaXMgaXMgbWFuZGF0b3J5IHRvIG5vdCBsb3NlIHRoZSBwcmV2aW91cyB1cGRhdGVzIG9mIHRoZSBjaGF0SGlzdG9yeSB3aGVuIHRoZSBhc3Npc3RhbnQgaXMgc3RyZWFtaW5nIG11bHRpcGxlIG1lc3NhZ2Ugc3RlcHNcbiAgICAgICAgICBjb25zdCBjdXJyZW50Q2hhdEhpc3RvcnkgPSAoY29udGV4dC5nZXRDaGF0SGlzdG9yeSgpIHx8IFtdKSBhcyBDaGF0TWVzc2FnZVtdO1xuICAgICAgICAgIGNvbnN0IG5ld0hpc3RvcnkgPSBbLi4uY3VycmVudENoYXRIaXN0b3J5LCAuLi4oaGlzdG9yeS5oaXN0b3J5LnNsaWNlKGN1cnJlbnRDaGF0SGlzdG9yeS5sZW5ndGgpKV0gYXMgQ2hhdE1lc3NhZ2VbXTtcbiAgICAgICAgICBjb250ZXh0LnNldENoYXRIaXN0b3J5KG5ld0hpc3RvcnkpO1xuXG4gICAgICAgICAgLy8gRW1pdCB0aGUgdXBkYXRlZCBjaGF0IHVzYWdlIG1ldHJpY3NcbiAgICAgICAgICBjb25zdCBsYXN0TWVzc2FnZSA9IG5ld0hpc3RvcnkuYXQoLTEpO1xuICAgICAgICAgIGlmIChsYXN0TWVzc2FnZT8uYWRkaXRpb25hbFByb3BlcnRpZXMudXNhZ2VNZXRyaWNzKSB7XG4gICAgICAgICAgICBjb250ZXh0LnVwZGF0ZUNoYXRVc2FnZU1ldHJpY3MobGFzdE1lc3NhZ2UuYWRkaXRpb25hbFByb3BlcnRpZXMudXNhZ2VNZXRyaWNzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5fZXhlY3V0aW9uVGltZSA9IGhpc3RvcnkuZXhlY3V0aW9uVGltZTtcbiAgICAgICAgICB0aGlzLl9leGVjdXRpb25UaW1lTWlsbGlzZWNvbmRzID0gaGlzdG9yeS5leGVjdXRpb25UaW1lTWlsbGlzZWNvbmRzO1xuICAgICAgICB9LFxuICAgICAgICBpc0dsb2JhbEhhbmRsZXI6IGZhbHNlXG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLmFkZE1lc3NhZ2VIYW5kbGVyKFwiU3VnZ2VzdGVkQWN0aW9uc1wiLCB7XG4gICAgICAgIGhhbmRsZXI6IChtZXNzYWdlOiBTdWdnZXN0ZWRBY3Rpb25zRXZlbnQpID0+IHtcbiAgICAgICAgICAvLyBTaW5jZSBhZnRlciB0aGUgXCJIaXN0b3J5XCIgYW5kIFwiTWVzc2FnZUJyZWFrXCIgdGhhdCB0aGlzIGV2ZW50IGlzIGNhdWdodCxcbiAgICAgICAgICAvLyAkc3VnZ2VzdGVkQWN0aW9uIG5lZWRzIHRvIGJlIHVwZGF0ZWQgZGlyZWN0bHkgdG8gdGhlIGxhc3QgdmlzaWJsZSBcImFzc2lzdGFudFwiIG1lc3NhZ2UgaW4gdGhlIF9yZXNwb25zZSBhbmQgdGhlIGNoYXRIaXN0b3J5XG4gICAgICAgICAgdGhpcy5fcmVzcG9uc2UuYXQoLTEpIS5hZGRpdGlvbmFsUHJvcGVydGllcy4kc3VnZ2VzdGVkQWN0aW9uID0gKHRoaXMuX3Jlc3BvbnNlLmF0KC0xKSEuYWRkaXRpb25hbFByb3BlcnRpZXMuJHN1Z2dlc3RlZEFjdGlvbiB8fCBbXSkuY29uY2F0KG1lc3NhZ2Uuc3VnZ2VzdGVkQWN0aW9ucyk7XG4gICAgICAgICAgY29uc3QgY2hhdEhpc3RvcnkgPSBjb250ZXh0LmdldENoYXRIaXN0b3J5KCkhO1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5hc3Npc3RhbnRVdGlscy5sYXN0VmlzaWJsZUFzc2lzdGFudE1lc3NhZ2VJbmRleChjaGF0SGlzdG9yeSk7XG4gICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgY2hhdEhpc3RvcnlbaW5kZXhdLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLiRzdWdnZXN0ZWRBY3Rpb24gPSAoY2hhdEhpc3RvcnlbaW5kZXhdLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLiRzdWdnZXN0ZWRBY3Rpb24gfHwgW10pLmNvbmNhdChtZXNzYWdlLnN1Z2dlc3RlZEFjdGlvbnMpO1xuICAgICAgICAgICAgY29udGV4dC5zZXRDaGF0SGlzdG9yeShjaGF0SGlzdG9yeSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpc0dsb2JhbEhhbmRsZXI6IGZhbHNlXG4gICAgICB9XG4gICAgKTtcbiAgICB0aGlzLmFkZE1lc3NhZ2VIYW5kbGVyKFwiRGVidWdEaXNwbGF5XCIsIHtcbiAgICAgIGhhbmRsZXI6IChtZXNzYWdlOiBEZWJ1Z01lc3NhZ2VFdmVudCkgPT4gdGhpcy5fZGVidWdNZXNzYWdlcyA9IHRoaXMuX2RlYnVnTWVzc2FnZXMuY29uY2F0KG1lc3NhZ2UpLFxuICAgICAgaXNHbG9iYWxIYW5kbGVyOiBmYWxzZVxuICAgIH0pO1xuICAgIHRoaXMuYWRkTWVzc2FnZUhhbmRsZXIoXCJNZXNzYWdlQnJlYWtcIiwge1xuICAgICAgICBoYW5kbGVyOiAoKSA9PiB7XG4gICAgICAgICAgLy8gU3lzdGVtYXRpY2FsbHkgaGFwcGVucyByaWdodCBhZnRlciB0aGUgXCJIaXN0b3J5XCIgZXZlbnRcbiAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBtb21lbnQgd2hlbiB0aGUgYXNzaXN0YW50IG1lc3NhZ2UgaXMgZnVsbHkgc3RyZWFtZWRcbiAgICAgICAgICBjb25zdCBhc3Npc3RhbnRDb25maWcgPSBjb250ZXh0LmdldEFzc2lzdGFudENvbmZpZygpO1xuICAgICAgICAgIGNvbnN0IGNoYXRIaXN0b3J5ID0gY29udGV4dC5nZXRDaGF0SGlzdG9yeSgpO1xuICAgICAgICAgIGlmICghYXNzaXN0YW50Q29uZmlnIHx8ICFjaGF0SGlzdG9yeSB8fCAhY2hhdEhpc3RvcnkubGVuZ3RoKSByZXR1cm47XG5cbiAgICAgICAgICBjb25zdCBsYXN0Q2hhdE1lc3NhZ2UgPSBjaGF0SGlzdG9yeS5hdCgtMSkhO1xuXG4gICAgICAgICAgY29uc3QgZGV0YWlscyA9IHtcbiAgICAgICAgICAgICdkdXJhdGlvbic6IHRoaXMuX2V4ZWN1dGlvblRpbWVNaWxsaXNlY29uZHMgIT09IHVuZGVmaW5lZCA/IHRoaXMuX2V4ZWN1dGlvblRpbWVNaWxsaXNlY29uZHMgOiB0aGlzLl9leGVjdXRpb25UaW1lLFxuICAgICAgICAgICAgJ3JvbGUnOiBsYXN0Q2hhdE1lc3NhZ2Uucm9sZSxcbiAgICAgICAgICAgICdyYW5rJzogY2hhdEhpc3RvcnkubGVuZ3RoLFxuICAgICAgICAgICAgJ21lc3NhZ2UtaWQnOiBsYXN0Q2hhdE1lc3NhZ2UuYWRkaXRpb25hbFByb3BlcnRpZXMubWVzc2FnZUlkLFxuICAgICAgICAgICAgJ2dlbmVyYXRpb24tdG9rZW5jb3VudCc6IGxhc3RDaGF0TWVzc2FnZS5hZGRpdGlvbmFsUHJvcGVydGllcy51c2FnZU1ldHJpY3M/LmNvbXBsZXRpb25Ub2tlbkNvdW50LFxuICAgICAgICAgICAgJ3Byb21wdC10b2tlbmNvdW50JzogbGFzdENoYXRNZXNzYWdlLmFkZGl0aW9uYWxQcm9wZXJ0aWVzLnVzYWdlTWV0cmljcz8ucHJvbXB0VG9rZW5Db3VudCxcbiAgICAgICAgICAgICdhdHRhY2htZW50cyc6IEpTT04uc3RyaW5naWZ5KHRoaXMuX2F0dGFjaG1lbnRzLm1hcCgoeyByZWNvcmRJZCwgY29udGV4dElkLCBwYXJ0cywgdHlwZSB9KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZElkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRJZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0czogcGFydHMubWFwKCh7IHBhcnRJZCwgdGV4dCB9KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISFhc3Npc3RhbnRDb25maWcuYXVkaXRTZXR0aW5ncz8ubG9nQ29udGVudCkgcmV0dXJuIHsgcGFydElkLCB0ZXh0IH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBwYXJ0SWQgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSlcbiAgICAgICAgICB9O1xuICAgICAgICAgIGlmICghIWFzc2lzdGFudENvbmZpZy5hdWRpdFNldHRpbmdzPy5sb2dDb250ZW50KSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGxhc3RDaGF0TWVzc2FnZS5jb250ZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAoZGV0YWlscyBhcyBhbnkpWyd0ZXh0J10gPSBsYXN0Q2hhdE1lc3NhZ2UuY29udGVudDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShsYXN0Q2hhdE1lc3NhZ2UuY29udGVudCkpIHtcbiAgICAgICAgICAgICAgKGRldGFpbHMgYXMgYW55KVsndGV4dCddID0gKGxhc3RDaGF0TWVzc2FnZS5jb250ZW50LmZpbmQoKG1zZykgPT4gbXNnLnR5cGUgPT09IFwidGV4dFwiKSBhcyBUZXh0TWVzc2FnZUNvbnRlbnQpLnRleHRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29udGV4dC5nZW5lcmF0ZUF1ZGl0RXZlbnQoJ2FzdC1tZXNzYWdlLm1lc3NhZ2UnLCBkZXRhaWxzKTtcbiAgICAgICAgICAvLyBQdXNoIGEgbmV3IGFzc2lzdGFudCBtZXNzYWdlIHRvIHRoZSBfcmVzcG9uc2UgYXJyYXkgT05MWSBpZiB0aGUgY29udGVudCBvZiB0aGUgbGFzdCBtZXNzYWdlIGlzIG5vdCBlbXB0eVxuICAgICAgICAgIGlmICh0aGlzLl9yZXNwb25zZS5hdCgtMSkhLmNvbnRlbnQgIT09IFwiXCIpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc3BvbnNlLnB1c2goe3JvbGU6IFwiYXNzaXN0YW50XCIsIGNvbnRlbnQ6IFwiXCIsIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7ZGlzcGxheTogdHJ1ZSwgbWVzc2FnZUlkOiBndWlkKCl9fSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpc0dsb2JhbEhhbmRsZXI6IGZhbHNlXG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBvdmVycmlkZU1lc3NhZ2VIYW5kbGVyczxUPihfbWVzc2FnZUhhbmRsZXJzOiBNYXA8c3RyaW5nLCBNZXNzYWdlSGFuZGxlcjxUPj4pOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZUluaXRpYWxpemVkKCk7XG4gICAgLy8gQ2xlYXIgdGhlIGFscmVhZHkgcmVnaXN0ZXJlZCBnbG9iYWwgY2hhdCBoYW5kbGVycyBiZWZvcmUgbWVyZ2luZyB0aGUgbmV3IG9uZXNcbiAgICB0aGlzLl9tZXNzYWdlSGFuZGxlcnMuZm9yRWFjaCgoZXZlbnRIYW5kbGVyLCBldmVudE5hbWUpID0+IHtcbiAgICAgIGlmKGV2ZW50SGFuZGxlci5pc0dsb2JhbEhhbmRsZXIpIHtcbiAgICAgICAgdGhpcy51bnN1YnNjcmliZU1lc3NhZ2VIYW5kbGVyKGV2ZW50TmFtZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8gTWVyZ2UgdGhlIG5ldyBldmVudCBoYW5kbGVycyB3aXRoIHRoZSBleGlzdGluZyBvbmVzXG4gICAgdGhpcy5fbWVzc2FnZUhhbmRsZXJzID0gbmV3IE1hcChbLi4udGhpcy5fbWVzc2FnZUhhbmRsZXJzLCAuLi5fbWVzc2FnZUhhbmRsZXJzXSk7XG4gICAgLy8gUmVnaXN0ZXIgdGhlIGdsb2JhbCBoYW5kbGVycyBhbW9uZyB0aGUgbWVyZ2VkIG1hcFxuICAgIHRoaXMuX21lc3NhZ2VIYW5kbGVycy5mb3JFYWNoKChldmVudEhhbmRsZXIsIGV2ZW50TmFtZSkgPT4ge1xuICAgICAgaWYoZXZlbnRIYW5kbGVyLmlzR2xvYmFsSGFuZGxlcikge1xuICAgICAgICB0aGlzLnJlZ2lzdGVyTWVzc2FnZUhhbmRsZXIoZXZlbnROYW1lLCBldmVudEhhbmRsZXIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZE1lc3NhZ2VIYW5kbGVyPFQ+KGV2ZW50TmFtZTogc3RyaW5nLCBldmVudEhhbmRsZXI6IE1lc3NhZ2VIYW5kbGVyPFQ+KTogdm9pZCB7XG4gICAgdGhpcy5lbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIHRoaXMuX21lc3NhZ2VIYW5kbGVycy5zZXQoZXZlbnROYW1lLCBldmVudEhhbmRsZXIpO1xuICAgIGlmKGV2ZW50SGFuZGxlci5pc0dsb2JhbEhhbmRsZXIpIHtcbiAgICAgIHRoaXMucmVnaXN0ZXJNZXNzYWdlSGFuZGxlcihldmVudE5hbWUsIGV2ZW50SGFuZGxlcik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyTWVzc2FnZUhhbmRsZXI8VD4oZXZlbnROYW1lOiBzdHJpbmcsIGV2ZW50SGFuZGxlcjogTWVzc2FnZUhhbmRsZXI8VD4pOiB2b2lkIHtcbiAgICB0aGlzLmVuc3VyZUluaXRpYWxpemVkKCk7XG4gICAgY29uc3QgY29ubmVjdGlvbiA9IHRoaXMuY29udGV4dCEuZ2V0SHViQ29ubmVjdGlvbigpO1xuICAgIGlmICghY29ubmVjdGlvbikge1xuICAgICAgY29uc29sZS5sb2coXCJObyBjb25uZWN0aW9uIGZvdW5kIHRvIHJlZ2lzdGVyIHRoZSBsaXN0ZW5lclwiICsgZXZlbnROYW1lKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29ubmVjdGlvbi5vbihldmVudE5hbWUsIChkYXRhOiBUKSA9PiB7XG4gICAgICBldmVudEhhbmRsZXIuaGFuZGxlcihkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVNZXNzYWdlSGFuZGxlcihldmVudE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKTtcbiAgICB0aGlzLl9tZXNzYWdlSGFuZGxlcnMuZGVsZXRlKGV2ZW50TmFtZSk7XG4gICAgdGhpcy51bnN1YnNjcmliZU1lc3NhZ2VIYW5kbGVyKGV2ZW50TmFtZSk7XG4gIH1cblxuICBwdWJsaWMgdW5zdWJzY3JpYmVNZXNzYWdlSGFuZGxlcihldmVudE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZW5zdXJlSW5pdGlhbGl6ZWQoKTtcbiAgICBjb25zdCBjb25uZWN0aW9uID0gdGhpcy5jb250ZXh0IS5nZXRIdWJDb25uZWN0aW9uKCk7XG4gICAgY29ubmVjdGlvbj8ub2ZmKGV2ZW50TmFtZSk7XG4gIH1cblxuICBwdWJsaWMgc3RvcEdlbmVyYXRpb24oKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgdGhpcy5lbnN1cmVJbml0aWFsaXplZCgpO1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmNvbnRleHQhO1xuICAgIGNvbnN0IGNvbm5lY3Rpb24gPSBjb250ZXh0LmdldEh1YkNvbm5lY3Rpb24oKSE7XG5cbiAgICAgLy8gU3RhcnQgc3RvcHBpbmcgZ2VuZXJhdGlvbiBieSBpbnZva2luZyB0aGUgQ2FuY2VsVGFza3MgbWV0aG9kXG4gICAgY29udGV4dC5zZXRTdG9wcGluZ0dlbmVyYXRpb25TdGF0dXModHJ1ZSk7XG4gICAgLy8gQ3JlYXRlIGEgU3ViamVjdCB0byBob2xkIHRoZSByZXN1bHQgb2YgdGhlIENhbmNlbFRhc2tzIG1ldGhvZFxuICAgIGNvbnN0IHN0b3BHZW5lcmF0aW9uU3ViamVjdCQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgY29ubmVjdGlvbi5vbignQ2FuY2VsVGFza3MnLCAocmVzKSA9PiB7XG4gICAgICAvLyBXaGVuIHRoZSBnZW5lcmF0aW9uIGlzIHN0b3BwZWQgYmVmb3JlIHN0cmVhbWluZyBhbnkgVklTSUJMRSBhc3Npc3RhbnQgbWVzc2FnZSwgdGhpcyBtZWFucyB0aGF0ICRwcm9ncmVzcywgJGF0dGFjaG1lbnQgYW5kICRkZWJ1ZyBwcm9wZXJ0aWVzIHdpbGwgYmUgbG9zdC5cbiAgICAgIC8vIEhvd2V2ZXIsIHRoZSBcIkNvbnRleHRNZXNzYWdlXCIgZnJhbWVzIHdpbGwgYmUgcGVyc2lzdGVkIGluIHRoZSBjaGF0SGlzdG9yeSBhbmQgdGhlIGFzc2lzdGFudCBtYXkgcmVmZXJlbmNlIHRoZW0gaW4gdGhlIG5leHQgZ2VuZXJhdGlvbi5cbiAgICAgIC8vIFRoaXMgbGVhZHMgdG8gdGhlIHByb2JsZW0gb2YgcmVmZXJlbmNpbmcgdW5kaXNwbGF5ZWQgYXR0YWNobWVudHMgaW4gdGhlIG5leHQgZ2VuZXJhdGlvbi5cbiAgICAgIC8vIFRvIHNvbHZlIHRoaXMgcHJvYmxlbSwgd2UgbmVlZCB0byBwZXJzaXN0ICRwcm9ncmVzcywgJGF0dGFjaG1lbnQgYW5kICRkZWJ1ZyBwcm9wZXJ0aWVzIGJ5IGFkZGluZyBhIG5ldyBhc3Npc3RhbnQgbWVzc2FnZSB3aXRoIGVtcHR5IGNvbnRlbnQgYW5kIHRoZXNlIHByb3BlcnRpZXMuXG4gICAgICAvLyBJbiB0aGUgb3RoZXIgaGFuZCwgdGhpcyBsZWFkcyB0byB0aGUgcHJvYmxlbSBvZiBoYXZpbmcgbWFueSBlbXB0eSBhc3Npc3RhbnQgbWVzc2FnZXMgaW4gdGhlIGNoYXQgaGlzdG9yeSwgaWYgYSBzdG9wIGdlbmVyYXRpb24gaGFwcGVucyBtdWx0aXBsZSB0aW1lcyBpbiBhIHJvdyB3aXRoIG5vIGNvbnRlbnQgZ2VuZXJhdGVkIHlldC5cbiAgICAgIC8vIFRvIHNvbHZlIHRoaXMgcHJvYmxlbSBtZW50aW9uZWQgaW4gdGhlIHRpY2tldCBFUy0yNzAyNCwgd2UgbmVlZCB0byBhbGxvdyBzdWNoIG9wZXJhdGlvbiBPTkxZIGlmIHRoZSBsYXN0IGFzc2lzdGFudCBtZXNzYWdlJ3MgY29udGVudCBpbiB0aGUgY2hhdCBoaXN0b3J5IGlzIG5vdCBlbXB0eS5cbiAgICAgIGNvbnN0IGNoYXRIaXN0b3J5ID0gY29udGV4dC5nZXRDaGF0SGlzdG9yeSgpO1xuICAgICAgY29uc3QgaXNMYXN0Q2hhdEhpc3RvcnlNZXNzYWdlQXNzaXN0YW50Q29udGVudEVtcHR5ID0gY2hhdEhpc3Rvcnk/Lmxlbmd0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICBjaGF0SGlzdG9yeS5hdCgtMSk/LnJvbGUgPT09IFwiYXNzaXN0YW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoY2hhdEhpc3RvcnkuYXQoLTEpPy5jb250ZW50ID09PSBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoY2hhdEhpc3RvcnkuYXQoLTEpPy5jb250ZW50IGFzIE1lc3NhZ2VDb250ZW50W10pPy5maW5kKChtc2cpID0+IG1zZy50eXBlID09PSBcInRleHRcIikgYXMgVGV4dE1lc3NhZ2VDb250ZW50KT8udGV4dCA9PT0gXCJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgIGlmICh0aGlzLl9yZXNwb25zZSAmJiB0aGlzLl9yZXNwb25zZS5sZW5ndGggPT09IDEgJiYgdGhpcy5fcmVzcG9uc2VbMF0uY29udGVudCA9PT0gXCJcIiAmJiAhaXNMYXN0Q2hhdEhpc3RvcnlNZXNzYWdlQXNzaXN0YW50Q29udGVudEVtcHR5KSB7XG4gICAgICAgIGNvbnN0IG5ld0NoYXRIaXN0b3J5ID0gY2hhdEhpc3RvcnkgPyBbLi4uY2hhdEhpc3RvcnldIDogW107XG4gICAgICAgIG5ld0NoYXRIaXN0b3J5LnB1c2goe3JvbGU6IFwiYXNzaXN0YW50XCIsIGNvbnRlbnQ6IFwiXCIsIGFkZGl0aW9uYWxQcm9wZXJ0aWVzOiB7ZGlzcGxheTogdHJ1ZSwgbWVzc2FnZUlkOiBndWlkKCksICRwcm9ncmVzczogdGhpcy5fcHJvZ3Jlc3MsICRhdHRhY2htZW50OiB0aGlzLl9hdHRhY2htZW50cywgJGRlYnVnOiB0aGlzLl9kZWJ1Z01lc3NhZ2VzfX0pO1xuICAgICAgICBjb250ZXh0LnNldENoYXRIaXN0b3J5KG5ld0NoYXRIaXN0b3J5KTtcbiAgICAgIH1cbiAgICAgIC8vIEVtaXQgdGhlIHJlc3VsdCBvZiB0aGUgQ2FuY2VsVGFza3MgbWV0aG9kXG4gICAgICBzdG9wR2VuZXJhdGlvblN1YmplY3QkLm5leHQoISFyZXMpO1xuICAgICAgLy8gQ29tcGxldGUgdGhlIHN1YmplY3RcbiAgICAgIHN0b3BHZW5lcmF0aW9uU3ViamVjdCQuY29tcGxldGUoKTtcbiAgICAgIC8vIENvbXBsZXRlIHN0b3BwaW5nIGdlbmVyYXRpb25cbiAgICAgIGNvbnRleHQuc2V0U3RvcHBpbmdHZW5lcmF0aW9uU3RhdHVzKGZhbHNlKTtcbiAgICB9KTtcblxuICAgIC8vIEludm9rZSB0aGUgQ2FuY2VsVGFza3MgbWV0aG9kIGFuZCBoYW5kbGUgZXJyb3JzXG4gICAgY29ubmVjdGlvbi5pbnZva2UoJ0NhbmNlbFRhc2tzJylcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGludm9raW5nIENhbmNlbFRhc2tzOicsIGVycm9yKTtcbiAgICAgICAgc3RvcEdlbmVyYXRpb25TdWJqZWN0JC5lcnJvcihuZXcgRXJyb3IoZXJyb3IgYXMgc3RyaW5nKSk7XG4gICAgICAgIGNvbnRleHQuc2V0U3RvcHBpbmdHZW5lcmF0aW9uU3RhdHVzKGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSk7XG5cbiAgICByZXR1cm4gc3RvcEdlbmVyYXRpb25TdWJqZWN0JC5hc09ic2VydmFibGUoKTtcbiAgfVxufVxuIl19