@hmcts/ccd-case-ui-toolkit 7.1.67-document-help-text → 7.1.68-exui-2835-rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/esm2022/lib/shared/components/case-editor/services/work-allocation.service.mjs +6 -22
  2. package/esm2022/lib/shared/components/case-viewer/services/case.resolver.mjs +4 -3
  3. package/esm2022/lib/shared/components/create-case-filters/create-case-filters.component.mjs +3 -2
  4. package/esm2022/lib/shared/components/palette/collection/write-collection-field.component.mjs +9 -9
  5. package/esm2022/lib/shared/components/palette/document/write-document-field.component.mjs +3 -1
  6. package/esm2022/lib/shared/components/palette/markdown/markdown.component.mjs +7 -2
  7. package/esm2022/lib/shared/components/palette/palette.module.mjs +3 -3
  8. package/esm2022/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.mjs +4 -3
  9. package/esm2022/lib/shared/components/palette/query-management/components/query-details/query-details.component.mjs +10 -12
  10. package/esm2022/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.mjs +73 -59
  11. package/esm2022/lib/shared/components/palette/query-management/read-query-management-field.component.mjs +8 -10
  12. package/esm2022/lib/shared/services/activity/activity.service.mjs +4 -3
  13. package/esm2022/lib/shared/utils.mjs +10 -0
  14. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs +122 -114
  15. package/fesm2022/hmcts-ccd-case-ui-toolkit.mjs.map +1 -1
  16. package/lib/shared/components/case-editor/services/work-allocation.service.d.ts +1 -6
  17. package/lib/shared/components/case-editor/services/work-allocation.service.d.ts.map +1 -1
  18. package/lib/shared/components/case-viewer/services/case.resolver.d.ts.map +1 -1
  19. package/lib/shared/components/create-case-filters/create-case-filters.component.d.ts.map +1 -1
  20. package/lib/shared/components/palette/document/write-document-field.component.d.ts.map +1 -1
  21. package/lib/shared/components/palette/markdown/markdown.component.d.ts.map +1 -1
  22. package/lib/shared/components/palette/query-management/components/query-check-your-answers/query-check-your-answers.component.d.ts.map +1 -1
  23. package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts +1 -1
  24. package/lib/shared/components/palette/query-management/components/query-details/query-details.component.d.ts.map +1 -1
  25. package/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.d.ts +2 -1
  26. package/lib/shared/components/palette/query-management/components/query-write/query-write-raise-query/query-write-raise-query.component.d.ts.map +1 -1
  27. package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts +2 -2
  28. package/lib/shared/components/palette/query-management/read-query-management-field.component.d.ts.map +1 -1
  29. package/lib/shared/services/activity/activity.service.d.ts.map +1 -1
  30. package/lib/shared/utils.d.ts +6 -0
  31. package/lib/shared/utils.d.ts.map +1 -0
  32. package/package.json +1 -1
@@ -3,6 +3,7 @@ import { of, throwError } from 'rxjs';
3
3
  import { catchError, map } from 'rxjs/operators';
4
4
  import { AbstractAppConfig } from '../../../../app.config';
5
5
  import { AlertService, HttpErrorService, HttpService, SessionStorageService } from '../../../services';
6
+ import { isInternalUser } from '../../../utils';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "../../../services";
8
9
  import * as i2 from "../../../../app.config";
@@ -106,10 +107,7 @@ export class WorkAllocationService {
106
107
  .post(url, { actionByEvent: true, eventName: eventName })
107
108
  .pipe(catchError(error => {
108
109
  this.errorService.setError(error);
109
- // this will subscribe to get the user details and decide whether to display an error message
110
- this.http.get(this.appConfig.getUserInfoApiUrl()).pipe(map(response => response)).subscribe((response) => {
111
- this.handleTaskCompletionError(response);
112
- });
110
+ this.handleTaskCompletionError();
113
111
  return throwError(error);
114
112
  }));
115
113
  }
@@ -135,10 +133,7 @@ export class WorkAllocationService {
135
133
  })
136
134
  .pipe(catchError(error => {
137
135
  this.errorService.setError(error);
138
- // this will subscribe to get the user details and decide whether to display an error message
139
- this.http.get(this.appConfig.getUserInfoApiUrl()).pipe(map(response => response)).subscribe((response) => {
140
- this.handleTaskCompletionError(response);
141
- });
136
+ this.handleTaskCompletionError();
142
137
  return throwError(error);
143
138
  }));
144
139
  }
@@ -146,24 +141,13 @@ export class WorkAllocationService {
146
141
  * Handles the response from the observable to get the user details when task is completed.
147
142
  * @param response is the response given from the observable which contains the user detaild.
148
143
  */
149
- handleTaskCompletionError(response) {
150
- const userDetails = response;
151
- if (this.userIsCaseworker(userDetails.userInfo.roles)) {
144
+ handleTaskCompletionError() {
145
+ if (isInternalUser(this.sessionStorageService)) {
152
146
  // when submitting the completion of task if not yet rendered cases/case confirm then preserve the alert for re-rendering
153
147
  this.alertService.setPreserveAlerts(true, ['cases/case', 'submit']);
154
148
  this.alertService.warning({ phrase: 'A task could not be completed successfully. Please complete the task associated with the case manually.' });
155
149
  }
156
150
  }
157
- /**
158
- * Returns true if the user's role is equivalent to a caseworker.
159
- * @param roles is the list of roles found from the current user.
160
- */
161
- userIsCaseworker(roles) {
162
- const lowerCaseRoles = roles.map(role => role.toLowerCase());
163
- // When/if lib & target permanently change to es2016, replace indexOf with includes
164
- return (lowerCaseRoles.indexOf(WorkAllocationService.iACCaseOfficer) !== -1)
165
- || (lowerCaseRoles.indexOf(WorkAllocationService.iACAdmOfficer) !== -1);
166
- }
167
151
  /**
168
152
  * Look for open tasks for a case and event combination. There are 5 possible scenarios:
169
153
  * 1. No tasks found => Success.
@@ -232,4 +216,4 @@ export class WorkAllocationService {
232
216
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WorkAllocationService, [{
233
217
  type: Injectable
234
218
  }], () => [{ type: i1.HttpService }, { type: i2.AbstractAppConfig }, { type: i1.HttpErrorService }, { type: i1.AlertService }, { type: i1.SessionStorageService }], null); })();
235
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29yay1hbGxvY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3Ivc2VydmljZXMvd29yay1hbGxvY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFFdkcsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsMkJBQTJCLENBQUM7QUFHaEUsTUFBTSxPQUFPLHFCQUFxQjtJQU9iO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFWWixNQUFNLENBQUMsY0FBYyxHQUFHLDJCQUEyQixDQUFDO0lBQ3BELE1BQU0sQ0FBQyxhQUFhLEdBQUcsMEJBQTBCLENBQUM7SUFFakQsUUFBUSxDQUFrQjtJQUVsQyxZQUNtQixJQUFpQixFQUNqQixTQUE0QixFQUM1QixZQUE4QixFQUM5QixZQUEwQixFQUMxQixxQkFBNEM7UUFKNUMsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQUM1QixpQkFBWSxHQUFaLFlBQVksQ0FBa0I7UUFDOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUU3RCw2Q0FB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Q0FBQyx1QkFBdUIsRUFBRSxTQUFTLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDcEYsQ0FBQzsrRUEzT1cscUJBQXFCO2dFQUFyQixxQkFBcUIsV0FBckIscUJBQXFCOztpRkFBckIscUJBQXFCO2NBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQWJzdHJhY3RBcHBDb25maWcgfSBmcm9tICcuLi8uLi8uLi8uLi9hcHAuY29uZmlnJztcbmltcG9ydCB7IFRhc2tTZWFyY2hQYXJhbWV0ZXIsIFdBRmVhdHVyZUNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBVc2VyRGV0YWlscyB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi91c2VyL3VzZXItZGV0YWlscy5tb2RlbCc7XG5pbXBvcnQgeyBUYXNrUmVzcG9uc2UgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vd29yay1hbGxvY2F0aW9uL3Rhc2stcmVzcG9uc2UubW9kZWwnO1xuaW1wb3J0IHsgVGFza1BheWxvYWQgfSBmcm9tICcuLi8uLi8uLi9kb21haW4vd29yay1hbGxvY2F0aW9uL1Rhc2tQYXlsb2FkJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSwgSHR0cEVycm9yU2VydmljZSwgSHR0cFNlcnZpY2UsIFNlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcblxuZXhwb3J0IGNvbnN0IE1VTFRJUExFX1RBU0tTX0ZPVU5EID0gJ01vcmUgdGhhbiBvbmUgdGFzayBmb3VuZCEnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgV29ya0FsbG9jYXRpb25TZXJ2aWNlIHtcbiAgcHVibGljIHN0YXRpYyBpQUNDYXNlT2ZmaWNlciA9ICdjYXNld29ya2VyLWlhLWNhc2VvZmZpY2VyJztcbiAgcHVibGljIHN0YXRpYyBpQUNBZG1PZmZpY2VyID0gJ2Nhc2V3b3JrZXItaWEtYWRtb2ZmaWNlcic7XG5cbiAgcHJpdmF0ZSBmZWF0dXJlczogV0FGZWF0dXJlQ29uZmlnO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhcHBDb25maWc6IEFic3RyYWN0QXBwQ29uZmlnLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JTZXJ2aWNlOiBIdHRwRXJyb3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZVxuICApIHtcbiAgICAvLyBDaGVjayB0byBzZWUgaWYgd29yayBhbGxvY2F0aW9uIGlzIGVuYWJsZWRcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsIHRoZSBBUEkgdG8gZ2V0IHRhc2tzIG1hdGNoaW5nIHRoZSBzZWFyY2ggY3JpdGVyaWEuXG4gICAqIEBwYXJhbSBzZWFyY2hSZXF1ZXN0IFRoZSBzZWFyY2ggcGFyYW1ldGVycyB0aGF0IHNwZWNpZnkgd2hpY2ggdGFza3MgdG8gbWF0Y2guXG4gICAqL1xuICBwdWJsaWMgc2VhcmNoVGFza3Moc2VhcmNoUmVxdWVzdDogVGFza1NlYXJjaFBhcmFtZXRlcik6IE9ic2VydmFibGU8b2JqZWN0PiB7XG4gICAgLy8gRG8gbm90IG5lZWQgdG8gY2hlY2sgaWYgV0EgZW5hYmxlZCBhcyBwYXJlbnQgbWV0aG9kIHdpbGwgZG8gdGhhdFxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYXBwQ29uZmlnLmdldFdvcmtBbGxvY2F0aW9uQXBpVXJsKCl9L3NlYXJjaEZvckNvbXBsZXRhYmxlYDtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdCh1cmwsIHtzZWFyY2hSZXF1ZXN0fSwgbnVsbCwgZmFsc2UpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKHJlc3BvbnNlID0+IHJlc3BvbnNlKSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvclNlcnZpY2Uuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIC8vIGV4cGxpY2l0bHkgZWF0IGF3YXkgNDAxIGVycm9yIGFuZCA0MDAgZXJyb3JcbiAgICAgICAgICBpZiAoZXJyb3IgJiYgZXJyb3Iuc3RhdHVzICYmIChlcnJvci5zdGF0dXMgPT09IDQwMSB8fCBlcnJvci5zdGF0dXMgPT09IDQwMCkpIHtcbiAgICAgICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJvciBzdGF0dXMgNDAxIG9yIDQwMCcsIGVycm9yKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzV0FFbmFibGVkKGp1cmlzZGljdGlvbj86IHN0cmluZywgY2FzZVR5cGU/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0aGlzLmZlYXR1cmVzID0gdGhpcy5hcHBDb25maWcuZ2V0V0FTZXJ2aWNlQ29uZmlnKCk7XG4gICAgaWYgKHRoaXMuZmVhdHVyZXMpIHtcbiAgICAgIGNvbnN0IGZ0c3RyID0gSlNPTi5zdHJpbmdpZnkodGhpcy5mZWF0dXJlcyk7XG4gICAgICB0aGlzLmFwcENvbmZpZz8ubG9nTWVzc2FnZShgaXNXQUVuYWJsZWQ6IHdhLXNlcnZpY2UtY29uZmlnIHJldHVybmluZyAke2Z0c3RyPy5sZW5ndGggPiAwfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFwcENvbmZpZz8ubG9nTWVzc2FnZShgaXNXQUVuYWJsZWQ6IHdhLXNlcnZpY2UtY29uZmlnIHJldHVybmluZyBubyBmZWF0dXJlc2ApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBsZXQgZW5hYmxlZCA9IGZhbHNlO1xuICAgIGlmICghanVyaXNkaWN0aW9uIHx8ICFjYXNlVHlwZSkge1xuICAgICAgY29uc3QgY2FzZUluZm8gPSBKU09OLnBhcnNlKHRoaXMuc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ2Nhc2VJbmZvJykpO1xuICAgICAganVyaXNkaWN0aW9uID0gY2FzZUluZm8uanVyaXNkaWN0aW9uO1xuICAgICAgY2FzZVR5cGUgPSBjYXNlSW5mby5jYXNlVHlwZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmZlYXR1cmVzIHx8ICF0aGlzLmZlYXR1cmVzLmNvbmZpZ3VyYXRpb25zKSB7XG4gICAgICB0aGlzLmFwcENvbmZpZy5sb2dNZXNzYWdlKCdpc1dBRW5hYmxlZDogbm8gZmVhdHVyZXMnKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5mZWF0dXJlcy5jb25maWd1cmF0aW9ucy5mb3JFYWNoKHNlcnZpY2VDb25maWcgPT4ge1xuICAgICAgaWYgKHNlcnZpY2VDb25maWcuc2VydmljZU5hbWUgPT09IGp1cmlzZGljdGlvbiAmJiAoc2VydmljZUNvbmZpZy5jYXNlVHlwZXMuaW5kZXhPZihjYXNlVHlwZSkgIT09IC0xKSkge1xuICAgICAgICAgIGVuYWJsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuYXBwQ29uZmlnLmxvZ01lc3NhZ2UoYGlzV0FFbmFibGVkOiByZXR1cm5pbmcgJHtlbmFibGVkfWApO1xuICAgIHJldHVybiBlbmFibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGwgdGhlIEFQSSB0byBhc3NpZ24gYSB0YXNrLlxuICAgKiBAcGFyYW0gdGFza0lkIHNwZWNpZmllcyB3aGljaCB0YXNrIHNob3VsZCBiZSBhc3NpZ25lZC5cbiAgICogQHBhcmFtIHVzZXJJZCBzcGVjaWZpZXMgdGhlIHVzZXIgdGhlIHRhc2sgc2hvdWxkIGJlIGFzc2lnbmVkIHRvLlxuICAgKi9cbiAgcHVibGljIGFzc2lnblRhc2sodGFza0lkOiBzdHJpbmcsIHVzZXJJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMuaXNXQUVuYWJsZWQoKSkge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwcENvbmZpZy5nZXRXb3JrQWxsb2NhdGlvbkFwaVVybCgpfS90YXNrLyR7dGFza0lkfS9hc3NpZ25gO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KHVybCwge3VzZXJJZH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvclNlcnZpY2Uuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbCB0aGUgQVBJIHRvIGNvbXBsZXRlIGEgdGFzay5cbiAgICogQHBhcmFtIHRhc2tJZCBzcGVjaWZpZXMgd2hpY2ggdGFzayBzaG91bGQgYmUgY29tcGxldGVkLlxuICAgKi9cbiAgcHVibGljIGNvbXBsZXRlVGFzayh0YXNrSWQ6IHN0cmluZywgZXZlbnROYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMuaXNXQUVuYWJsZWQoKSkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2V0UHJlc2VydmVBbGVydHModHJ1ZSk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS53YXJuaW5nKHsgcGhyYXNlOidjb21wbGV0ZVRhc2s6IFdvcmsgQWxsb2NhdGlvbiBpcyBub3QgZW5hYmxlZCwgc28gdGhlIHRhc2sgY291bGQgbm90IGJlIGNvbXBsZXRlZC4gUGxlYXNlIGNvbXBsZXRlIHRoZSB0YXNrIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2FzZSBtYW51YWxseS4nfSk7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuICAgIHRoaXMuYXBwQ29uZmlnLmxvZ01lc3NhZ2UoYGNvbXBsZXRlVGFzazogY29tcGxldGluZyAke3Rhc2tJZH1gKTtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwcENvbmZpZy5nZXRXb3JrQWxsb2NhdGlvbkFwaVVybCgpfS90YXNrLyR7dGFza0lkfS9jb21wbGV0ZWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QodXJsLCB7IGFjdGlvbkJ5RXZlbnQ6IHRydWUsIGV2ZW50TmFtZTogZXZlbnROYW1lIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvclNlcnZpY2Uuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIC8vIHRoaXMgd2lsbCBzdWJzY3JpYmUgdG8gZ2V0IHRoZSB1c2VyIGRldGFpbHMgYW5kIGRlY2lkZSB3aGV0aGVyIHRvIGRpc3BsYXkgYW4gZXJyb3IgbWVzc2FnZVxuICAgICAgICAgIHRoaXMuaHR0cC5nZXQodGhpcy5hcHBDb25maWcuZ2V0VXNlckluZm9BcGlVcmwoKSkucGlwZShtYXAocmVzcG9uc2UgPT4gcmVzcG9uc2UpKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZVRhc2tDb21wbGV0aW9uRXJyb3IocmVzcG9uc2UpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbCB0aGUgQVBJIHRvIGFzc2lnbiBhbmQgY29tcGxldGUgYSB0YXNrLlxuICAgKiBAcGFyYW0gdGFza0lkIHNwZWNpZmllcyB3aGljaCB0YXNrIHNob3VsZCBiZSBjb21wbGV0ZWQuXG4gICAqL1xuICBwdWJsaWMgYXNzaWduQW5kQ29tcGxldGVUYXNrKHRhc2tJZDogc3RyaW5nLCBldmVudE5hbWU/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICghdGhpcy5pc1dBRW5hYmxlZCgpKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zZXRQcmVzZXJ2ZUFsZXJ0cyh0cnVlKTtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLndhcm5pbmcoeyBwaHJhc2U6J2Fzc2lnbkFuZENvbXBsZXRlVGFzazogV29yayBBbGxvY2F0aW9uIGlzIG5vdCBlbmFibGVkLCBzbyB0aGUgdGFzayBjb3VsZCBub3QgYmUgY29tcGxldGVkLiBQbGVhc2UgY29tcGxldGUgdGhlIHRhc2sgYXNzb2NpYXRlZCB3aXRoIHRoZSBjYXNlIG1hbnVhbGx5Lid9KTtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG4gICAgdGhpcy5hcHBDb25maWcubG9nTWVzc2FnZShgYXNzaWduQW5kQ29tcGxldGVUYXNrOiBjb21wbGV0aW5nICR7dGFza0lkfWApO1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuYXBwQ29uZmlnLmdldFdvcmtBbGxvY2F0aW9uQXBpVXJsKCl9L3Rhc2svJHt0YXNrSWR9L2NvbXBsZXRlYDtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdCh1cmwsIHtcbiAgICAgICAgY29tcGxldGlvbl9vcHRpb25zOiB7XG4gICAgICAgICAgYXNzaWduX2FuZF9jb21wbGV0ZTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBhY3Rpb25CeUV2ZW50OiB0cnVlLFxuICAgICAgICBldmVudE5hbWU6IGV2ZW50TmFtZVxuICAgICAgfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICB0aGlzLmVycm9yU2VydmljZS5zZXRFcnJvcihlcnJvcik7XG4gICAgICAgICAgLy8gdGhpcyB3aWxsIHN1YnNjcmliZSB0byBnZXQgdGhlIHVzZXIgZGV0YWlscyBhbmQgZGVjaWRlIHdoZXRoZXIgdG8gZGlzcGxheSBhbiBlcnJvciBtZXNzYWdlXG4gICAgICAgICAgdGhpcy5odHRwLmdldCh0aGlzLmFwcENvbmZpZy5nZXRVc2VySW5mb0FwaVVybCgpKS5waXBlKG1hcChyZXNwb25zZSA9PiByZXNwb25zZSkpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlVGFza0NvbXBsZXRpb25FcnJvcihyZXNwb25zZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGVzIHRoZSByZXNwb25zZSBmcm9tIHRoZSBvYnNlcnZhYmxlIHRvIGdldCB0aGUgdXNlciBkZXRhaWxzIHdoZW4gdGFzayBpcyBjb21wbGV0ZWQuXG4gICAqIEBwYXJhbSByZXNwb25zZSBpcyB0aGUgcmVzcG9uc2UgZ2l2ZW4gZnJvbSB0aGUgb2JzZXJ2YWJsZSB3aGljaCBjb250YWlucyB0aGUgdXNlciBkZXRhaWxkLlxuICAgKi9cbiAgcHVibGljIGhhbmRsZVRhc2tDb21wbGV0aW9uRXJyb3IocmVzcG9uc2U6IGFueSk6IHZvaWQge1xuICAgIGNvbnN0IHVzZXJEZXRhaWxzID0gcmVzcG9uc2UgYXMgVXNlckRldGFpbHM7XG4gICAgaWYgKHRoaXMudXNlcklzQ2FzZXdvcmtlcih1c2VyRGV0YWlscy51c2VySW5mby5yb2xlcykpIHtcbiAgICAgIC8vIHdoZW4gc3VibWl0dGluZyB0aGUgY29tcGxldGlvbiBvZiB0YXNrIGlmIG5vdCB5ZXQgcmVuZGVyZWQgY2FzZXMvY2FzZSBjb25maXJtIHRoZW4gcHJlc2VydmUgdGhlIGFsZXJ0IGZvciByZS1yZW5kZXJpbmdcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNldFByZXNlcnZlQWxlcnRzKHRydWUsIFsnY2FzZXMvY2FzZScsICdzdWJtaXQnXSk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS53YXJuaW5nKHsgcGhyYXNlOidBIHRhc2sgY291bGQgbm90IGJlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIFBsZWFzZSBjb21wbGV0ZSB0aGUgdGFzayBhc3NvY2lhdGVkIHdpdGggdGhlIGNhc2UgbWFudWFsbHkuJ30pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHVzZXIncyByb2xlIGlzIGVxdWl2YWxlbnQgdG8gYSBjYXNld29ya2VyLlxuICAgKiBAcGFyYW0gcm9sZXMgaXMgdGhlIGxpc3Qgb2Ygcm9sZXMgZm91bmQgZnJvbSB0aGUgY3VycmVudCB1c2VyLlxuICAgKi9cbiAgcHVibGljIHVzZXJJc0Nhc2V3b3JrZXIocm9sZXM6IHN0cmluZ1tdKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbG93ZXJDYXNlUm9sZXMgPSByb2xlcy5tYXAocm9sZSA9PiByb2xlLnRvTG93ZXJDYXNlKCkpO1xuICAgIC8vIFdoZW4vaWYgbGliICYgdGFyZ2V0IHBlcm1hbmVudGx5IGNoYW5nZSB0byBlczIwMTYsIHJlcGxhY2UgaW5kZXhPZiB3aXRoIGluY2x1ZGVzXG4gICAgcmV0dXJuIChsb3dlckNhc2VSb2xlcy5pbmRleE9mKFdvcmtBbGxvY2F0aW9uU2VydmljZS5pQUNDYXNlT2ZmaWNlcikgIT09IC0xKVxuICAgICAgfHwgKGxvd2VyQ2FzZVJvbGVzLmluZGV4T2YoV29ya0FsbG9jYXRpb25TZXJ2aWNlLmlBQ0FkbU9mZmljZXIpICE9PSAtMSk7XG4gIH1cblxuICAvKipcbiAgICogTG9vayBmb3Igb3BlbiB0YXNrcyBmb3IgYSBjYXNlIGFuZCBldmVudCBjb21iaW5hdGlvbi4gVGhlcmUgYXJlIDUgcG9zc2libGUgc2NlbmFyaW9zOlxuICAgKiAgIDEuIE5vIHRhc2tzIGZvdW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gU3VjY2Vzcy5cbiAgICogICAyLiBPbmUgdGFzayBmb3VuZCA9PiBNYXJrIGFzIGRvbmUgICAgICAgICAgICAgID0+IFN1Y2Nlc3MuXG4gICAqICAgMy4gT25lIHRhc2sgZm91bmQgPT4gTWFyayBhcyBkb25lIHRocm93cyBlcnJvciA9PiBGYWlsdXJlLlxuICAgKiAgIDQuIE1vcmUgdGhhbiBvbmUgdGFzayBmb3VuZCAgICAgICAgICAgICAgICAgICAgPT4gRmFpbHVyZS5cbiAgICogICA1LiBTZWFyY2ggY2FsbCB0aHJvd3MgYW4gZXJyb3IgICAgICAgICAgICAgICAgID0+IEZhaWx1cmUuXG4gICAqIEBwYXJhbSBjY2RJZCBUaGUgSUQgb2YgdGhlIGNhc2UgdG8gZmluZCB0YXNrcyBmb3IuXG4gICAqIEBwYXJhbSBldmVudElkIFRoZSBJRCBvZiB0aGUgZXZlbnQgdG8gZmluZCB0YXNrcyBmb3IuXG4gICAqL1xuICBwdWJsaWMgY29tcGxldGVBcHByb3ByaWF0ZVRhc2soY2NkSWQ6IHN0cmluZywgZXZlbnRJZDogc3RyaW5nLCBqdXJpc2RpY3Rpb246IHN0cmluZywgY2FzZVR5cGVJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMuaXNXQUVuYWJsZWQoanVyaXNkaWN0aW9uLCBjYXNlVHlwZUlkKSkge1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cbiAgICBjb25zdCB0YXNrU2VhcmNoUGFyYW1ldGVyOiBUYXNrU2VhcmNoUGFyYW1ldGVyID0ge1xuICAgICAgY2NkSWQsXG4gICAgICBldmVudElkLFxuICAgICAganVyaXNkaWN0aW9uLFxuICAgICAgY2FzZVR5cGVJZFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXMuc2VhcmNoVGFza3ModGFza1NlYXJjaFBhcmFtZXRlcilcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCB0YXNrczogYW55W10gPSByZXNwb25zZS50YXNrcztcbiAgICAgICAgICBpZiAodGFza3MgJiYgdGFza3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgaWYgKHRhc2tzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlVGFzayh0YXNrc1swXS5pZCwgZXZlbnRJZCkuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgcHJvYmxlbS4gVGhyb3cgYW4gYXBwcm9wcmlhdGUgZXJyb3IuXG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihNVUxUSVBMRV9UQVNLU19GT1VORCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBBbGwgZ29vZC4gTm90aGluZyB0byBzZWUgaGVyZS5cbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIC8vIFNpbXBseSByZXRocm93IGl0LlxuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRhc2tzIGZvciBjYXNlIGFuZCBldmVudC5cbiAgICovXG4gIHB1YmxpYyBnZXRUYXNrc0J5Q2FzZUlkQW5kRXZlbnRJZChldmVudElkOiBzdHJpbmcsIGNhc2VJZDogc3RyaW5nLCBjYXNlVHlwZTogc3RyaW5nLCBqdXJpc2RpY3Rpb246IHN0cmluZyk6IE9ic2VydmFibGU8VGFza1BheWxvYWQ+IHtcbiAgICBjb25zdCBkZWZhdWx0UGF5bG9hZDogVGFza1BheWxvYWQgPSB7XG4gICAgICB0YXNrX3JlcXVpcmVkX2Zvcl9ldmVudDogZmFsc2UsXG4gICAgICB0YXNrczogW11cbiAgICB9O1xuICAgIGlmICghdGhpcy5pc1dBRW5hYmxlZCgpKSB7XG4gICAgICB0aGlzLmFwcENvbmZpZy5sb2dNZXNzYWdlKGBpc1dBRW5hYmxlZCBmYWxzZSBmb3IgJHtjYXNlSWR9IGluIGV2ZW50ICR7ZXZlbnRJZH1gKTtcbiAgICAgIHJldHVybiBvZihkZWZhdWx0UGF5bG9hZCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuYXBwQ29uZmlnLmdldFdvcmtBbGxvY2F0aW9uQXBpVXJsKCl9L2Nhc2UvdGFza3MvJHtjYXNlSWR9L2V2ZW50LyR7ZXZlbnRJZH0vY2FzZVR5cGUvJHtjYXNlVHlwZX0vanVyaXNkaWN0aW9uLyR7anVyaXNkaWN0aW9ufWApO1xuICB9XG5cbiAvKipcbiAgKiBDYWxsIHRoZSBBUEkgdG8gZ2V0IGEgdGFza1xuICAqL1xuIHB1YmxpYyBnZXRUYXNrKHRhc2tJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUYXNrUmVzcG9uc2U+IHtcbiAgaWYgKCF0aGlzLmlzV0FFbmFibGVkKCkpIHtcbiAgICByZXR1cm4gb2Yoe3Rhc2s6IG51bGx9KTtcbiAgfVxuICB0aGlzLmFwcENvbmZpZy5sb2dNZXNzYWdlKGBnZXRUYXNrOiAke3Rhc2tJZH1gKTtcbiAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5hcHBDb25maWcuZ2V0V29ya0FsbG9jYXRpb25BcGlVcmwoKX0vdGFzay8ke3Rhc2tJZH1gKTtcbiB9XG59XG4iXX0=
219
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29yay1hbGxvY2F0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY2FzZS1lZGl0b3Ivc2VydmljZXMvd29yay1hbGxvY2F0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBSzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRWhELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLDJCQUEyQixDQUFDO0FBR2hFLE1BQU0sT0FBTyxxQkFBcUI7SUFPYjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBVlosTUFBTSxDQUFDLGNBQWMsR0FBRywyQkFBMkIsQ0FBQztJQUNwRCxNQUFNLENBQUMsYUFBYSxHQUFHLDBCQUEwQixDQUFDO0lBRWpELFFBQVEsQ0FBa0I7SUFFbEMsWUFDbUIsSUFBaUIsRUFDakIsU0FBNEIsRUFDNUIsWUFBOEIsRUFDOUIsWUFBMEIsRUFDMUIscUJBQTRDO1FBSjVDLFNBQUksR0FBSixJQUFJLENBQWE7UUFDakIsY0FBUyxHQUFULFNBQVMsQ0FBbUI7UUFDNUIsaUJBQVksR0FBWixZQUFZLENBQWtCO1FBQzlCLGlCQUFZLEdBQVosWUFBWSxDQUFj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SUFBSSxFQUFDLENBQUMsQ0FBQztRQUMxQixDQUFDO1FBQ0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsWUFBWSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixFQUFFLFNBQVMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNwRixDQUFDOytFQXpOVyxxQkFBcUI7Z0VBQXJCLHFCQUFxQixXQUFyQixxQkFBcUI7O2lGQUFyQixxQkFBcUI7Y0FEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBYnN0cmFjdEFwcENvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uL2FwcC5jb25maWcnO1xuaW1wb3J0IHsgVGFza1NlYXJjaFBhcmFtZXRlciwgV0FGZWF0dXJlQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IFVzZXJEZXRhaWxzIH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluL3VzZXIvdXNlci1kZXRhaWxzLm1vZGVsJztcbmltcG9ydCB7IFRhc2tSZXNwb25zZSB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi93b3JrLWFsbG9jYXRpb24vdGFzay1yZXNwb25zZS5tb2RlbCc7XG5pbXBvcnQgeyBUYXNrUGF5bG9hZCB9IGZyb20gJy4uLy4uLy4uL2RvbWFpbi93b3JrLWFsbG9jYXRpb24vVGFza1BheWxvYWQnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlLCBIdHRwRXJyb3JTZXJ2aWNlLCBIdHRwU2VydmljZSwgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgaXNJbnRlcm5hbFVzZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBNVUxUSVBMRV9UQVNLU19GT1VORCA9ICdNb3JlIHRoYW4gb25lIHRhc2sgZm91bmQhJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFdvcmtBbGxvY2F0aW9uU2VydmljZSB7XG4gIHB1YmxpYyBzdGF0aWMgaUFDQ2FzZU9mZmljZXIgPSAnY2FzZXdvcmtlci1pYS1jYXNlb2ZmaWNlcic7XG4gIHB1YmxpYyBzdGF0aWMgaUFDQWRtT2ZmaWNlciA9ICdjYXNld29ya2VyLWlhLWFkbW9mZmljZXInO1xuXG4gIHByaXZhdGUgZmVhdHVyZXM6IFdBRmVhdHVyZUNvbmZpZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYXBwQ29uZmlnOiBBYnN0cmFjdEFwcENvbmZpZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVycm9yU2VydmljZTogSHR0cEVycm9yU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2Vzc2lvblN0b3JhZ2VTZXJ2aWNlOiBTZXNzaW9uU3RvcmFnZVNlcnZpY2VcbiAgKSB7XG4gICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHdvcmsgYWxsb2NhdGlvbiBpcyBlbmFibGVkXG4gIH1cblxuICAvKipcbiAgICogQ2FsbCB0aGUgQVBJIHRvIGdldCB0YXNrcyBtYXRjaGluZyB0aGUgc2VhcmNoIGNyaXRlcmlhLlxuICAgKiBAcGFyYW0gc2VhcmNoUmVxdWVzdCBUaGUgc2VhcmNoIHBhcmFtZXRlcnMgdGhhdCBzcGVjaWZ5IHdoaWNoIHRhc2tzIHRvIG1hdGNoLlxuICAgKi9cbiAgcHVibGljIHNlYXJjaFRhc2tzKHNlYXJjaFJlcXVlc3Q6IFRhc2tTZWFyY2hQYXJhbWV0ZXIpOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xuICAgIC8vIERvIG5vdCBuZWVkIHRvIGNoZWNrIGlmIFdBIGVuYWJsZWQgYXMgcGFyZW50IG1ldGhvZCB3aWxsIGRvIHRoYXRcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwcENvbmZpZy5nZXRXb3JrQWxsb2NhdGlvbkFwaVVybCgpfS9zZWFyY2hGb3JDb21wbGV0YWJsZWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QodXJsLCB7c2VhcmNoUmVxdWVzdH0sIG51bGwsIGZhbHNlKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXNwb25zZSA9PiByZXNwb25zZSksXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JTZXJ2aWNlLnNldEVycm9yKGVycm9yKTtcbiAgICAgICAgICAvLyBleHBsaWNpdGx5IGVhdCBhd2F5IDQwMSBlcnJvciBhbmQgNDAwIGVycm9yXG4gICAgICAgICAgaWYgKGVycm9yICYmIGVycm9yLnN0YXR1cyAmJiAoZXJyb3Iuc3RhdHVzID09PSA0MDEgfHwgZXJyb3Iuc3RhdHVzID09PSA0MDApKSB7XG4gICAgICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnZXJyb3Igc3RhdHVzIDQwMSBvciA0MDAnLCBlcnJvcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1dBRW5hYmxlZChqdXJpc2RpY3Rpb24/OiBzdHJpbmcsIGNhc2VUeXBlPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdGhpcy5mZWF0dXJlcyA9IHRoaXMuYXBwQ29uZmlnLmdldFdBU2VydmljZUNvbmZpZygpO1xuICAgIGlmICh0aGlzLmZlYXR1cmVzKSB7XG4gICAgICBjb25zdCBmdHN0ciA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZmVhdHVyZXMpO1xuICAgICAgdGhpcy5hcHBDb25maWc/LmxvZ01lc3NhZ2UoYGlzV0FFbmFibGVkOiB3YS1zZXJ2aWNlLWNvbmZpZyByZXR1cm5pbmcgJHtmdHN0cj8ubGVuZ3RoID4gMH1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hcHBDb25maWc/LmxvZ01lc3NhZ2UoYGlzV0FFbmFibGVkOiB3YS1zZXJ2aWNlLWNvbmZpZyByZXR1cm5pbmcgbm8gZmVhdHVyZXNgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbGV0IGVuYWJsZWQgPSBmYWxzZTtcbiAgICBpZiAoIWp1cmlzZGljdGlvbiB8fCAhY2FzZVR5cGUpIHtcbiAgICAgIGNvbnN0IGNhc2VJbmZvID0gSlNPTi5wYXJzZSh0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZS5nZXRJdGVtKCdjYXNlSW5mbycpKTtcbiAgICAgIGp1cmlzZGljdGlvbiA9IGNhc2VJbmZvLmp1cmlzZGljdGlvbjtcbiAgICAgIGNhc2VUeXBlID0gY2FzZUluZm8uY2FzZVR5cGU7XG4gICAgfVxuICAgIGlmICghdGhpcy5mZWF0dXJlcyB8fCAhdGhpcy5mZWF0dXJlcy5jb25maWd1cmF0aW9ucykge1xuICAgICAgdGhpcy5hcHBDb25maWcubG9nTWVzc2FnZSgnaXNXQUVuYWJsZWQ6IG5vIGZlYXR1cmVzJyk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuZmVhdHVyZXMuY29uZmlndXJhdGlvbnMuZm9yRWFjaChzZXJ2aWNlQ29uZmlnID0+IHtcbiAgICAgIGlmIChzZXJ2aWNlQ29uZmlnLnNlcnZpY2VOYW1lID09PSBqdXJpc2RpY3Rpb24gJiYgKHNlcnZpY2VDb25maWcuY2FzZVR5cGVzLmluZGV4T2YoY2FzZVR5cGUpICE9PSAtMSkpIHtcbiAgICAgICAgICBlbmFibGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmFwcENvbmZpZy5sb2dNZXNzYWdlKGBpc1dBRW5hYmxlZDogcmV0dXJuaW5nICR7ZW5hYmxlZH1gKTtcbiAgICByZXR1cm4gZW5hYmxlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsIHRoZSBBUEkgdG8gYXNzaWduIGEgdGFzay5cbiAgICogQHBhcmFtIHRhc2tJZCBzcGVjaWZpZXMgd2hpY2ggdGFzayBzaG91bGQgYmUgYXNzaWduZWQuXG4gICAqIEBwYXJhbSB1c2VySWQgc3BlY2lmaWVzIHRoZSB1c2VyIHRoZSB0YXNrIHNob3VsZCBiZSBhc3NpZ25lZCB0by5cbiAgICovXG4gIHB1YmxpYyBhc3NpZ25UYXNrKHRhc2tJZDogc3RyaW5nLCB1c2VySWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKCF0aGlzLmlzV0FFbmFibGVkKCkpIHtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcHBDb25maWcuZ2V0V29ya0FsbG9jYXRpb25BcGlVcmwoKX0vdGFzay8ke3Rhc2tJZH0vYXNzaWduYDtcbiAgICByZXR1cm4gdGhpcy5odHRwXG4gICAgICAucG9zdCh1cmwsIHt1c2VySWR9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JTZXJ2aWNlLnNldEVycm9yKGVycm9yKTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGwgdGhlIEFQSSB0byBjb21wbGV0ZSBhIHRhc2suXG4gICAqIEBwYXJhbSB0YXNrSWQgc3BlY2lmaWVzIHdoaWNoIHRhc2sgc2hvdWxkIGJlIGNvbXBsZXRlZC5cbiAgICovXG4gIHB1YmxpYyBjb21wbGV0ZVRhc2sodGFza0lkOiBzdHJpbmcsIGV2ZW50TmFtZT86IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgaWYgKCF0aGlzLmlzV0FFbmFibGVkKCkpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNldFByZXNlcnZlQWxlcnRzKHRydWUpO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uud2FybmluZyh7IHBocmFzZTonY29tcGxldGVUYXNrOiBXb3JrIEFsbG9jYXRpb24gaXMgbm90IGVuYWJsZWQsIHNvIHRoZSB0YXNrIGNvdWxkIG5vdCBiZSBjb21wbGV0ZWQuIFBsZWFzZSBjb21wbGV0ZSB0aGUgdGFzayBhc3NvY2lhdGVkIHdpdGggdGhlIGNhc2UgbWFudWFsbHkuJ30pO1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cbiAgICB0aGlzLmFwcENvbmZpZy5sb2dNZXNzYWdlKGBjb21wbGV0ZVRhc2s6IGNvbXBsZXRpbmcgJHt0YXNrSWR9YCk7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5hcHBDb25maWcuZ2V0V29ya0FsbG9jYXRpb25BcGlVcmwoKX0vdGFzay8ke3Rhc2tJZH0vY29tcGxldGVgO1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wb3N0KHVybCwgeyBhY3Rpb25CeUV2ZW50OiB0cnVlLCBldmVudE5hbWU6IGV2ZW50TmFtZSB9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgIHRoaXMuZXJyb3JTZXJ2aWNlLnNldEVycm9yKGVycm9yKTtcbiAgICAgICAgICB0aGlzLmhhbmRsZVRhc2tDb21wbGV0aW9uRXJyb3IoKTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvcik7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGwgdGhlIEFQSSB0byBhc3NpZ24gYW5kIGNvbXBsZXRlIGEgdGFzay5cbiAgICogQHBhcmFtIHRhc2tJZCBzcGVjaWZpZXMgd2hpY2ggdGFzayBzaG91bGQgYmUgY29tcGxldGVkLlxuICAgKi9cbiAgcHVibGljIGFzc2lnbkFuZENvbXBsZXRlVGFzayh0YXNrSWQ6IHN0cmluZywgZXZlbnROYW1lPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAoIXRoaXMuaXNXQUVuYWJsZWQoKSkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2V0UHJlc2VydmVBbGVydHModHJ1ZSk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS53YXJuaW5nKHsgcGhyYXNlOidhc3NpZ25BbmRDb21wbGV0ZVRhc2s6IFdvcmsgQWxsb2NhdGlvbiBpcyBub3QgZW5hYmxlZCwgc28gdGhlIHRhc2sgY291bGQgbm90IGJlIGNvbXBsZXRlZC4gUGxlYXNlIGNvbXBsZXRlIHRoZSB0YXNrIGFzc29jaWF0ZWQgd2l0aCB0aGUgY2FzZSBtYW51YWxseS4nfSk7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuICAgIHRoaXMuYXBwQ29uZmlnLmxvZ01lc3NhZ2UoYGFzc2lnbkFuZENvbXBsZXRlVGFzazogY29tcGxldGluZyAke3Rhc2tJZH1gKTtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmFwcENvbmZpZy5nZXRXb3JrQWxsb2NhdGlvbkFwaVVybCgpfS90YXNrLyR7dGFza0lkfS9jb21wbGV0ZWA7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3QodXJsLCB7XG4gICAgICAgIGNvbXBsZXRpb25fb3B0aW9uczoge1xuICAgICAgICAgIGFzc2lnbl9hbmRfY29tcGxldGU6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgYWN0aW9uQnlFdmVudDogdHJ1ZSxcbiAgICAgICAgZXZlbnROYW1lOiBldmVudE5hbWVcbiAgICAgIH0pXG4gICAgICAucGlwZShcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgdGhpcy5lcnJvclNlcnZpY2Uuc2V0RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIHRoaXMuaGFuZGxlVGFza0NvbXBsZXRpb25FcnJvcigpO1xuICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgb2JzZXJ2YWJsZSB0byBnZXQgdGhlIHVzZXIgZGV0YWlscyB3aGVuIHRhc2sgaXMgY29tcGxldGVkLlxuICAgKiBAcGFyYW0gcmVzcG9uc2UgaXMgdGhlIHJlc3BvbnNlIGdpdmVuIGZyb20gdGhlIG9ic2VydmFibGUgd2hpY2ggY29udGFpbnMgdGhlIHVzZXIgZGV0YWlsZC5cbiAgICovXG4gIHB1YmxpYyBoYW5kbGVUYXNrQ29tcGxldGlvbkVycm9yKCk6IHZvaWQge1xuICAgIGlmIChpc0ludGVybmFsVXNlcih0aGlzLnNlc3Npb25TdG9yYWdlU2VydmljZSkpIHtcbiAgICAgIC8vIHdoZW4gc3VibWl0dGluZyB0aGUgY29tcGxldGlvbiBvZiB0YXNrIGlmIG5vdCB5ZXQgcmVuZGVyZWQgY2FzZXMvY2FzZSBjb25maXJtIHRoZW4gcHJlc2VydmUgdGhlIGFsZXJ0IGZvciByZS1yZW5kZXJpbmdcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLnNldFByZXNlcnZlQWxlcnRzKHRydWUsIFsnY2FzZXMvY2FzZScsICdzdWJtaXQnXSk7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS53YXJuaW5nKHsgcGhyYXNlOidBIHRhc2sgY291bGQgbm90IGJlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuIFBsZWFzZSBjb21wbGV0ZSB0aGUgdGFzayBhc3NvY2lhdGVkIHdpdGggdGhlIGNhc2UgbWFudWFsbHkuJ30pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb29rIGZvciBvcGVuIHRhc2tzIGZvciBhIGNhc2UgYW5kIGV2ZW50IGNvbWJpbmF0aW9uLiBUaGVyZSBhcmUgNSBwb3NzaWJsZSBzY2VuYXJpb3M6XG4gICAqICAgMS4gTm8gdGFza3MgZm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiBTdWNjZXNzLlxuICAgKiAgIDIuIE9uZSB0YXNrIGZvdW5kID0+IE1hcmsgYXMgZG9uZSAgICAgICAgICAgICAgPT4gU3VjY2Vzcy5cbiAgICogICAzLiBPbmUgdGFzayBmb3VuZCA9PiBNYXJrIGFzIGRvbmUgdGhyb3dzIGVycm9yID0+IEZhaWx1cmUuXG4gICAqICAgNC4gTW9yZSB0aGFuIG9uZSB0YXNrIGZvdW5kICAgICAgICAgICAgICAgICAgICA9PiBGYWlsdXJlLlxuICAgKiAgIDUuIFNlYXJjaCBjYWxsIHRocm93cyBhbiBlcnJvciAgICAgICAgICAgICAgICAgPT4gRmFpbHVyZS5cbiAgICogQHBhcmFtIGNjZElkIFRoZSBJRCBvZiB0aGUgY2FzZSB0byBmaW5kIHRhc2tzIGZvci5cbiAgICogQHBhcmFtIGV2ZW50SWQgVGhlIElEIG9mIHRoZSBldmVudCB0byBmaW5kIHRhc2tzIGZvci5cbiAgICovXG4gIHB1YmxpYyBjb21wbGV0ZUFwcHJvcHJpYXRlVGFzayhjY2RJZDogc3RyaW5nLCBldmVudElkOiBzdHJpbmcsIGp1cmlzZGljdGlvbjogc3RyaW5nLCBjYXNlVHlwZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGlmICghdGhpcy5pc1dBRW5hYmxlZChqdXJpc2RpY3Rpb24sIGNhc2VUeXBlSWQpKSB7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuICAgIGNvbnN0IHRhc2tTZWFyY2hQYXJhbWV0ZXI6IFRhc2tTZWFyY2hQYXJhbWV0ZXIgPSB7XG4gICAgICBjY2RJZCxcbiAgICAgIGV2ZW50SWQsXG4gICAgICBqdXJpc2RpY3Rpb24sXG4gICAgICBjYXNlVHlwZUlkXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hUYXNrcyh0YXNrU2VhcmNoUGFyYW1ldGVyKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhc2tzOiBhbnlbXSA9IHJlc3BvbnNlLnRhc2tzO1xuICAgICAgICAgIGlmICh0YXNrcyAmJiB0YXNrcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBpZiAodGFza3MubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgIHRoaXMuY29tcGxldGVUYXNrKHRhc2tzWzBdLmlkLCBldmVudElkKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBwcm9ibGVtLiBUaHJvdyBhbiBhcHByb3ByaWF0ZSBlcnJvci5cbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKE1VTFRJUExFX1RBU0tTX0ZPVU5EKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRydWU7IC8vIEFsbCBnb29kLiBOb3RoaW5nIHRvIHNlZSBoZXJlLlxuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgLy8gU2ltcGx5IHJldGhyb3cgaXQuXG4gICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGFza3MgZm9yIGNhc2UgYW5kIGV2ZW50LlxuICAgKi9cbiAgcHVibGljIGdldFRhc2tzQnlDYXNlSWRBbmRFdmVudElkKGV2ZW50SWQ6IHN0cmluZywgY2FzZUlkOiBzdHJpbmcsIGNhc2VUeXBlOiBzdHJpbmcsIGp1cmlzZGljdGlvbjogc3RyaW5nKTogT2JzZXJ2YWJsZTxUYXNrUGF5bG9hZD4ge1xuICAgIGNvbnN0IGRlZmF1bHRQYXlsb2FkOiBUYXNrUGF5bG9hZCA9IHtcbiAgICAgIHRhc2tfcmVxdWlyZWRfZm9yX2V2ZW50OiBmYWxzZSxcbiAgICAgIHRhc2tzOiBbXVxuICAgIH07XG4gICAgaWYgKCF0aGlzLmlzV0FFbmFibGVkKCkpIHtcbiAgICAgIHRoaXMuYXBwQ29uZmlnLmxvZ01lc3NhZ2UoYGlzV0FFbmFibGVkIGZhbHNlIGZvciAke2Nhc2VJZH0gaW4gZXZlbnQgJHtldmVudElkfWApO1xuICAgICAgcmV0dXJuIG9mKGRlZmF1bHRQYXlsb2FkKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5hcHBDb25maWcuZ2V0V29ya0FsbG9jYXRpb25BcGlVcmwoKX0vY2FzZS90YXNrcy8ke2Nhc2VJZH0vZXZlbnQvJHtldmVudElkfS9jYXNlVHlwZS8ke2Nhc2VUeXBlfS9qdXJpc2RpY3Rpb24vJHtqdXJpc2RpY3Rpb259YCk7XG4gIH1cblxuIC8qKlxuICAqIENhbGwgdGhlIEFQSSB0byBnZXQgYSB0YXNrXG4gICovXG4gcHVibGljIGdldFRhc2sodGFza0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRhc2tSZXNwb25zZT4ge1xuICBpZiAoIXRoaXMuaXNXQUVuYWJsZWQoKSkge1xuICAgIHJldHVybiBvZih7dGFzazogbnVsbH0pO1xuICB9XG4gIHRoaXMuYXBwQ29uZmlnLmxvZ01lc3NhZ2UoYGdldFRhc2s6ICR7dGFza0lkfWApO1xuICByZXR1cm4gdGhpcy5odHRwLmdldChgJHt0aGlzLmFwcENvbmZpZy5nZXRXb3JrQWxsb2NhdGlvbkFwaVVybCgpfS90YXNrLyR7dGFza0lkfWApO1xuIH1cbn1cbiJdfQ==
@@ -7,6 +7,7 @@ import { AbstractAppConfig } from '../../../../app.config';
7
7
  import { CaseView, Draft } from '../../../domain';
8
8
  import { DraftService, NavigationOrigin, SessionStorageService } from '../../../services';
9
9
  import { NavigationNotifierService } from '../../../services/navigation/navigation-notifier.service';
10
+ import { PUI_CASE_MANAGER, USER_DETAILS } from '../../../utils';
10
11
  import { CaseNotifier } from '../../case-editor';
11
12
  import * as i0 from "@angular/core";
12
13
  import * as i1 from "../../case-editor";
@@ -125,9 +126,9 @@ export class CaseResolver {
125
126
  // as discussed for EUI-5456, need functionality to go to default page
126
127
  goToDefaultPage() {
127
128
  console.info('Going to default page!');
128
- const userDetails = JSON.parse(this.sessionStorage.getItem('userDetails'));
129
+ const userDetails = JSON.parse(this.sessionStorage.getItem(USER_DETAILS));
129
130
  userDetails && userDetails.roles
130
- && !userDetails.roles.includes('pui-case-manager')
131
+ && !userDetails.roles.includes(PUI_CASE_MANAGER)
131
132
  &&
132
133
  (userDetails.roles.includes('caseworker-ia-iacjudge')
133
134
  || userDetails.roles.includes('caseworker-ia-caseofficer')
@@ -142,4 +143,4 @@ export class CaseResolver {
142
143
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CaseResolver, [{
143
144
  type: Injectable
144
145
  }], () => [{ type: i1.CaseNotifier }, { type: i2.DraftService }, { type: i3.NavigationNotifierService }, { type: i4.Router }, { type: i2.SessionStorageService }, { type: i5.AbstractAppConfig }], null); })();
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS5yZXNvbHZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9zZXJ2aWNlcy9jYXNlLnJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUEwQixhQUFhLEVBQVcsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDckcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7Ozs7O0FBR2pELE1BQU0sT0FBTyxZQUFZO0lBYUg7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNTO0lBakJ0QixNQUFNLENBQVUsV0FBVyxHQUFHLElBQUksTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDcEUsTUFBTSxDQUFVLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDdEMsTUFBTSxDQUFVLGdCQUFnQixHQUFHLHdDQUF3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OlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgTmF2aWdhdGlvbkVuZCwgUmVzb2x2ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHBsYWluVG9DbGFzc0Zyb21FeGlzdCB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFic3RyYWN0QXBwQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vYXBwLmNvbmZpZyc7XG5pbXBvcnQgeyBDYXNlVmlldywgRHJhZnQgfSBmcm9tICcuLi8uLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgRHJhZnRTZXJ2aWNlLCBOYXZpZ2F0aW9uT3JpZ2luLCBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLW5vdGlmaWVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FzZU5vdGlmaWVyIH0gZnJvbSAnLi4vLi4vY2FzZS1lZGl0b3InO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2FzZVJlc29sdmVyIGltcGxlbWVudHMgUmVzb2x2ZTxDYXNlVmlldz4ge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEVWRU5UX1JFR0VYID0gbmV3IFJlZ0V4cCgnXFwvdHJpZ2dlclxcLy4qP1xcL3N1Ym1pdCQnKTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQQVJBTV9DQVNFX0lEID0gJ2NpZCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0FTRV9DUkVBVEVEX01TRyA9ICdUaGUgY2FzZSBoYXMgYmVlbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseSc7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFVkVOVF9JRF9RTV9SRVNQT05EX1RPX1FVRVJZID0gJ2V2ZW50SWQ9cXVlcnlNYW5hZ2VtZW50UmVzcG9uZFF1ZXJ5JztcblxuICBwdWJsaWMgc3RhdGljIGRlZmF1bHRXQVBhZ2UgPSAnL3dvcmsvbXktd29yay9saXN0JztcbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0UGFnZSA9ICcvY2FzZXMnO1xuICAvLyB3ZSBuZWVkIHRvIHJ1biB0aGUgQ2FzZVJlc29sdmVyIG9uIGV2ZXJ5IGNoaWxkIHJvdXRlIG9mICdjYXNlLzpqaWQvOmN0aWQvOmNpZCdcbiAgLy8gdGhpcyBpcyBhY2hpZXZlZCB3aXRoIHJ1bkd1YXJkc0FuZFJlc29sdmVyczogJ2Fsd2F5cycgY29uZmlndXJhdGlvblxuICAvLyB3ZSBjYWNoZSB0aGUgY2FzZSB2aWV3IHRvIGF2b2lkIHJldHJpZXZpbmcgaXQgZm9yIGVhY2ggY2hpbGQgcm91dGVcbiAgcHVibGljIHByZXZpb3VzVXJsOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2FzZU5vdGlmaWVyOiBDYXNlTm90aWZpZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgZHJhZnRTZXJ2aWNlOiBEcmFmdFNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgbmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZTogTmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBzZXNzaW9uU3RvcmFnZTogU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGFwcENvbmZpZzogQWJzdHJhY3RBcHBDb25maWcpIHtcbiAgICByb3V0ZXIuZXZlbnRzLnBpcGUoZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogTmF2aWdhdGlvbkVuZCkgPT4ge1xuICAgICAgICB0aGlzLnByZXZpb3VzVXJsID0gZXZlbnQudXJsO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVzb2x2ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IFByb21pc2U8Q2FzZVZpZXc+IHtcbiAgICBjb25zdCBjaWQgPSByb3V0ZS5wYXJhbU1hcC5nZXQoQ2FzZVJlc29sdmVyLlBBUkFNX0NBU0VfSUQpO1xuICAgIGNvbnN0IGN1cnJlbnRVcmwgPSB0aGlzLnJvdXRlci51cmwgPz8gJyc7XG5cbiAgICAvLyBQcmV2ZW50IHJlc29sdmluZyBpZiBldmVudElkPXF1ZXJ5TWFuYWdlbWVudFJlc3BvbmRRdWVyeSBpcyBpbiB0aGUgVVJMXG4gICAgaWYgKGN1cnJlbnRVcmwuaW5jbHVkZXMoQ2FzZVJlc29sdmVyLkVWRU5UX0lEX1FNX1JFU1BPTkRfVE9fUVVFUlkpKSB7XG4gICAgICBjb25zb2xlLmluZm8oJ1NraXBwaW5nIHJlc29sdmUgZm9yIGV2ZW50IHF1ZXJ5TWFuYWdlbWVudFJlc3BvbmRRdWVyeS4nKTtcbiAgICAgIHRoaXMuZ29Ub0RlZmF1bHRQYWdlKCk7XG4gICAgfVxuXG4gICAgaWYgKCFjaWQpIHtcbiAgICAgIGNvbnNvbGUuaW5mbygnTm8gY2FzZSBJRCBhdmFpbGFibGUgaW4gdGhlIHJvdXRlLiBXaWxsIG5hdmlnYXRlIHRvIGNhc2UgbGlzdC4nKTtcbiAgICAgIC8vIHdoZW4gcmVkaXJlY3RlZCB0byBjYXNlIHZpZXcgYWZ0ZXIgYSBjYXNlIGNyZWF0ZWQsIGFuZCB0aGUgdXNlciBoYXMgbm8gUkVBRCBhY2Nlc3MsXG4gICAgICAvLyB0aGUgcG9zdCByZXR1cm5zIG5vIGlkXG4gICAgICB0aGlzLm5hdmlnYXRlVG9DYXNlTGlzdCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5pc1Jvb3RDYXNlVmlld1JvdXRlKHJvdXRlKSA/IHRoaXMuZ2V0QW5kQ2FjaGVDYXNlVmlldyhjaWQpXG4gICAgICAgIDogdGhpcy5jYXNlTm90aWZpZXIuY2FjaGVkQ2FzZVZpZXcgPyBQcm9taXNlLnJlc29sdmUodGhpcy5jYXNlTm90aWZpZXIuY2FjaGVkQ2FzZVZpZXcpXG4gICAgICAgIDogdGhpcy5nZXRBbmRDYWNoZUNhc2VWaWV3KGNpZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBuYXZpZ2F0ZVRvQ2FzZUxpc3QoKSB7XG4gICAgdGhpcy5uYXZpZ2F0aW9uTm90aWZpZXJTZXJ2aWNlLmFubm91bmNlTmF2aWdhdGlvbih7YWN0aW9uOiBOYXZpZ2F0aW9uT3JpZ2luLk5PX1JFQURfQUNDRVNTX1JFRElSRUNUSU9OfSk7XG4gIH1cblxuICBwcml2YXRlIGlzUm9vdENhc2VWaWV3Um91dGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpIHtcbiAgICAvLyBpcyByb3V0ZSBjYXNlLzpqaWQvOmN0aWQvOmNpZFxuICAgIHJldHVybiAoKCFyb3V0ZS5maXJzdENoaWxkIHx8ICFyb3V0ZS5maXJzdENoaWxkLnVybC5sZW5ndGgpICYmICF0aGlzLmlzVGFiVmlld1JvdXRlKHJvdXRlKSk7XG4gIH1cblxuICBwcml2YXRlIGlzVGFiVmlld1JvdXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XG4gICAgLy8gaXMgcm91dGUgY2FzZS86amlkLzpjdGlkLzpjaWQjZnJhZ21lbnRcbiAgICByZXR1cm4gcm91dGUuZmlyc3RDaGlsZCAmJiByb3V0ZS5maXJzdENoaWxkLmZyYWdtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBbmRDYWNoZUNhc2VWaWV3KGNpZCk6IFByb21pc2U8Q2FzZVZpZXc+IHtcbiAgICBpZiAodGhpcy5jYXNlTm90aWZpZXIuY2FjaGVkQ2FzZVZpZXcgJiYgdGhpcy5jYXNlTm90aWZpZXIuY2FjaGVkQ2FzZVZpZXcuY2FzZV9pZCAmJiB0aGlzLmNhc2VOb3RpZmllci5jYWNoZWRDYXNlVmlldy5jYXNlX2lkID09PSBjaWQpIHtcbiAgICAgIHRoaXMuY2FzZU5vdGlmaWVyLmFubm91bmNlQ2FzZSh0aGlzLmNhc2VOb3RpZmllci5jYWNoZWRDYXNlVmlldyk7XG4gICAgICByZXR1cm4gb2YodGhpcy5jYXNlTm90aWZpZXIuY2FjaGVkQ2FzZVZpZXcpLnRvUHJvbWlzZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoRHJhZnQuaXNEcmFmdChjaWQpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFuZENhY2hlRHJhZnQoY2lkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNhc2VOb3RpZmllci5mZXRjaEFuZFJlZnJlc2goY2lkKVxuICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoZXJyb3IgPT4gdGhpcy5wcm9jZXNzRXJyb3JJbkNhc2VGZXRjaChlcnJvciwgY2lkKSkpXG4gICAgICAgICAgLnRvUHJvbWlzZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0QW5kQ2FjaGVEcmFmdChjaWQpOiBQcm9taXNlPENhc2VWaWV3PiB7XG4gICAgICByZXR1cm4gdGhpcy5kcmFmdFNlcnZpY2VcbiAgICAgIC5nZXREcmFmdChjaWQpXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKGNhc2VWaWV3ID0+IHtcbiAgICAgICAgICB0aGlzLmNhc2VOb3RpZmllci5jYWNoZWRDYXNlVmlldyA9IHBsYWluVG9DbGFzc0Zyb21FeGlzdChuZXcgQ2FzZVZpZXcoKSwgY2FzZVZpZXcpO1xuICAgICAgICAgIHRoaXMuY2FzZU5vdGlmaWVyLmFubm91bmNlQ2FzZSh0aGlzLmNhc2VOb3RpZmllci5jYWNoZWRDYXNlVmlldyk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY2FzZU5vdGlmaWVyLmNhY2hlZENhc2VWaWV3O1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB0aGlzLnByb2Nlc3NFcnJvckluQ2FzZUZldGNoKGVycm9yLCBjaWQpKVxuICAgICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0Vycm9ySW5DYXNlRmV0Y2goZXJyb3I6IGFueSwgY2FzZVJlZmVyZW5jZTogc3RyaW5nKSB7XG4gICAgY29uc29sZS5lcnJvcignISEhIHByb2Nlc3NFcnJvckluQ2FzZUZldGNoICEhIScpO1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIC8vIFRPRE8gU2hvdWxkIGJlIGxvZ2dlZCB0byByZW1vdGUgbG9nZ2luZyBpbmZyYXN0cnVjdHVyZVxuICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMCkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvc2VhcmNoL25vcmVzdWx0cyddKTtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG4gICAgaWYgKENhc2VSZXNvbHZlci5FVkVOVF9SRUdFWC50ZXN0KHRoaXMucHJldmlvdXNVcmwpICYmIGVycm9yLnN0YXR1cyA9PT0gNDA0KSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9saXN0L2Nhc2UnXSk7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuICAgIC8vIEVycm9yIDQwMyBhbmQgZW5hYmxlLXJlc3RyaWN0ZWQtY2FzZS1hY2Nlc3MgTGF1bmNoIERhcmtseSBmbGFnIGlzIGVuYWJsZWQsIG5hdmlnYXRlIHRvIHJlc3RyaWN0ZWQgY2FzZSBhY2Nlc3MgcGFnZVxuICAgIGlmIChlcnJvci5zdGF0dXMgPT09IDQwMyAmJiB0aGlzLmFwcENvbmZpZy5nZXRFbmFibGVSZXN0cmljdGVkQ2FzZUFjY2Vzc0NvbmZpZygpKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9jYXNlcy9yZXN0cmljdGVkLWNhc2UtYWNjZXNzLyR7Y2FzZVJlZmVyZW5jZX1gXSk7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuICAgIGlmIChlcnJvci5zdGF0dXMgIT09IDQwMSkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvZXJyb3InXSk7XG4gICAgfVxuICAgIHRoaXMuZ29Ub0RlZmF1bHRQYWdlKCk7XG4gICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICB9XG5cbiAgLy8gYXMgZGlzY3Vzc2VkIGZvciBFVUktNTQ1NiwgbmVlZCBmdW5jdGlvbmFsaXR5IHRvIGdvIHRvIGRlZmF1bHQgcGFnZVxuICBwcml2YXRlIGdvVG9EZWZhdWx0UGFnZSgpOiB2b2lkIHtcbiAgICBjb25zb2xlLmluZm8oJ0dvaW5nIHRvIGRlZmF1bHQgcGFnZSEnKTtcbiAgICBjb25zdCB1c2VyRGV0YWlscyA9IEpTT04ucGFyc2UodGhpcy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCd1c2VyRGV0YWlscycpKTtcbiAgICB1c2VyRGV0YWlscyAmJiB1c2VyRGV0YWlscy5yb2xlc1xuICAgICAgICAmJiAhdXNlckRldGFpbHMucm9sZXMuaW5jbHVkZXMoJ3B1aS1jYXNlLW1hbmFnZXInKVxuICAgICAgICAmJlxuICAgICAgICAodXNlckRldGFpbHMucm9sZXMuaW5jbHVkZXMoJ2Nhc2V3b3JrZXItaWEtaWFjanVkZ2UnKVxuICAgICAgICAgIHx8IHVzZXJEZXRhaWxzLnJvbGVzLmluY2x1ZGVzKCdjYXNld29ya2VyLWlhLWNhc2VvZmZpY2VyJylcbiAgICAgICAgICB8fCB1c2VyRGV0YWlscy5yb2xlcy5pbmNsdWRlcygnY2FzZXdvcmtlci1pYS1hZG1vZmZpY2VyJylcbiAgICAgICAgICB8fCB1c2VyRGV0YWlscy5yb2xlcy5pbmNsdWRlcygnY2FzZXdvcmtlci1jaXZpbCcpXG4gICAgICAgICAgfHwgdXNlckRldGFpbHMucm9sZXMuaW5jbHVkZXMoJ2Nhc2V3b3JrZXItcHJpdmF0ZWxhdycpKVxuICAgICAgICA/IHRoaXMucm91dGVyLm5hdmlnYXRlKFtDYXNlUmVzb2x2ZXIuZGVmYXVsdFdBUGFnZV0pIDogdGhpcy5yb3V0ZXIubmF2aWdhdGUoW0Nhc2VSZXNvbHZlci5kZWZhdWx0UGFnZV0pO1xuICB9XG59XG4iXX0=
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzZS5yZXNvbHZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jYXNlLXZpZXdlci9zZXJ2aWNlcy9jYXNlLnJlc29sdmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUEwQixhQUFhLEVBQVcsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDckcsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7OztBQUdqRCxNQUFNLE9BQU8sWUFBWTtJQWFIO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDUztJQWpCdEIsTUFBTSxDQUFVLFdBQVcsR0FBRyxJQUFJLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sQ0FB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WUFBWSxXQUFaLFlBQVk7O2lGQUFaLFlBQVk7Y0FEeEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIE5hdmlnYXRpb25FbmQsIFJlc29sdmUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3NGcm9tRXhpc3QgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBvZiwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBYnN0cmFjdEFwcENvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uL2FwcC5jb25maWcnO1xuaW1wb3J0IHsgQ2FzZVZpZXcsIERyYWZ0IH0gZnJvbSAnLi4vLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IERyYWZ0U2VydmljZSwgTmF2aWdhdGlvbk9yaWdpbiwgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgTmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24vbmF2aWdhdGlvbi1ub3RpZmllci5zZXJ2aWNlJztcbmltcG9ydCB7IFBVSV9DQVNFX01BTkFHRVIsIFVTRVJfREVUQUlMUyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IENhc2VOb3RpZmllciB9IGZyb20gJy4uLy4uL2Nhc2UtZWRpdG9yJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENhc2VSZXNvbHZlciBpbXBsZW1lbnRzIFJlc29sdmU8Q2FzZVZpZXc+IHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFVkVOVF9SRUdFWCA9IG5ldyBSZWdFeHAoJ1xcL3RyaWdnZXJcXC8uKj9cXC9zdWJtaXQkJyk7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUEFSQU1fQ0FTRV9JRCA9ICdjaWQnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENBU0VfQ1JFQVRFRF9NU0cgPSAnVGhlIGNhc2UgaGFzIGJlZW4gY3JlYXRlZCBzdWNjZXNzZnVsbHknO1xuXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRVZFTlRfSURfUU1fUkVTUE9ORF9UT19RVUVSWSA9ICdldmVudElkPXF1ZXJ5TWFuYWdlbWVudFJlc3BvbmRRdWVyeSc7XG5cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0V0FQYWdlID0gJy93b3JrL215LXdvcmsvbGlzdCc7XG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdFBhZ2UgPSAnL2Nhc2VzJztcbiAgLy8gd2UgbmVlZCB0byBydW4gdGhlIENhc2VSZXNvbHZlciBvbiBldmVyeSBjaGlsZCByb3V0ZSBvZiAnY2FzZS86amlkLzpjdGlkLzpjaWQnXG4gIC8vIHRoaXMgaXMgYWNoaWV2ZWQgd2l0aCBydW5HdWFyZHNBbmRSZXNvbHZlcnM6ICdhbHdheXMnIGNvbmZpZ3VyYXRpb25cbiAgLy8gd2UgY2FjaGUgdGhlIGNhc2UgdmlldyB0byBhdm9pZCByZXRyaWV2aW5nIGl0IGZvciBlYWNoIGNoaWxkIHJvdXRlXG4gIHB1YmxpYyBwcmV2aW91c1VybDogc3RyaW5nO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNhc2VOb3RpZmllcjogQ2FzZU5vdGlmaWVyLFxuICAgICAgICAgICAgICBwcml2YXRlIGRyYWZ0U2VydmljZTogRHJhZnRTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIG5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2U6IE5hdmlnYXRpb25Ob3RpZmllclNlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgc2Vzc2lvblN0b3JhZ2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZWFkb25seSBhcHBDb25maWc6IEFic3RyYWN0QXBwQ29uZmlnKSB7XG4gICAgcm91dGVyLmV2ZW50cy5waXBlKGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IE5hdmlnYXRpb25FbmQpID0+IHtcbiAgICAgICAgdGhpcy5wcmV2aW91c1VybCA9IGV2ZW50LnVybDtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBQcm9taXNlPENhc2VWaWV3PiB7XG4gICAgY29uc3QgY2lkID0gcm91dGUucGFyYW1NYXAuZ2V0KENhc2VSZXNvbHZlci5QQVJBTV9DQVNFX0lEKTtcbiAgICBjb25zdCBjdXJyZW50VXJsID0gdGhpcy5yb3V0ZXIudXJsID8/ICcnO1xuXG4gICAgLy8gUHJldmVudCByZXNvbHZpbmcgaWYgZXZlbnRJZD1xdWVyeU1hbmFnZW1lbnRSZXNwb25kUXVlcnkgaXMgaW4gdGhlIFVSTFxuICAgIGlmIChjdXJyZW50VXJsLmluY2x1ZGVzKENhc2VSZXNvbHZlci5FVkVOVF9JRF9RTV9SRVNQT05EX1RPX1FVRVJZKSkge1xuICAgICAgY29uc29sZS5pbmZvKCdTa2lwcGluZyByZXNvbHZlIGZvciBldmVudCBxdWVyeU1hbmFnZW1lbnRSZXNwb25kUXVlcnkuJyk7XG4gICAgICB0aGlzLmdvVG9EZWZhdWx0UGFnZSgpO1xuICAgIH1cblxuICAgIGlmICghY2lkKSB7XG4gICAgICBjb25zb2xlLmluZm8oJ05vIGNhc2UgSUQgYXZhaWxhYmxlIGluIHRoZSByb3V0ZS4gV2lsbCBuYXZpZ2F0ZSB0byBjYXNlIGxpc3QuJyk7XG4gICAgICAvLyB3aGVuIHJlZGlyZWN0ZWQgdG8gY2FzZSB2aWV3IGFmdGVyIGEgY2FzZSBjcmVhdGVkLCBhbmQgdGhlIHVzZXIgaGFzIG5vIFJFQUQgYWNjZXNzLFxuICAgICAgLy8gdGhlIHBvc3QgcmV0dXJucyBubyBpZFxuICAgICAgdGhpcy5uYXZpZ2F0ZVRvQ2FzZUxpc3QoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaXNSb290Q2FzZVZpZXdSb3V0ZShyb3V0ZSkgPyB0aGlzLmdldEFuZENhY2hlQ2FzZVZpZXcoY2lkKVxuICAgICAgICA6IHRoaXMuY2FzZU5vdGlmaWVyLmNhY2hlZENhc2VWaWV3ID8gUHJvbWlzZS5yZXNvbHZlKHRoaXMuY2FzZU5vdGlmaWVyLmNhY2hlZENhc2VWaWV3KVxuICAgICAgICA6IHRoaXMuZ2V0QW5kQ2FjaGVDYXNlVmlldyhjaWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbmF2aWdhdGVUb0Nhc2VMaXN0KCkge1xuICAgIHRoaXMubmF2aWdhdGlvbk5vdGlmaWVyU2VydmljZS5hbm5vdW5jZU5hdmlnYXRpb24oe2FjdGlvbjogTmF2aWdhdGlvbk9yaWdpbi5OT19SRUFEX0FDQ0VTU19SRURJUkVDVElPTn0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Jvb3RDYXNlVmlld1JvdXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KSB7XG4gICAgLy8gaXMgcm91dGUgY2FzZS86amlkLzpjdGlkLzpjaWRcbiAgICByZXR1cm4gKCghcm91dGUuZmlyc3RDaGlsZCB8fCAhcm91dGUuZmlyc3RDaGlsZC51cmwubGVuZ3RoKSAmJiAhdGhpcy5pc1RhYlZpZXdSb3V0ZShyb3V0ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1RhYlZpZXdSb3V0ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCkge1xuICAgIC8vIGlzIHJvdXRlIGNhc2UvOmppZC86Y3RpZC86Y2lkI2ZyYWdtZW50XG4gICAgcmV0dXJuIHJvdXRlLmZpcnN0Q2hpbGQgJiYgcm91dGUuZmlyc3RDaGlsZC5mcmFnbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QW5kQ2FjaGVDYXNlVmlldyhjaWQpOiBQcm9taXNlPENhc2VWaWV3PiB7XG4gICAgaWYgKHRoaXMuY2FzZU5vdGlmaWVyLmNhY2hlZENhc2VWaWV3ICYmIHRoaXMuY2FzZU5vdGlmaWVyLmNhY2hlZENhc2VWaWV3LmNhc2VfaWQgJiYgdGhpcy5jYXNlTm90aWZpZXIuY2FjaGVkQ2FzZVZpZXcuY2FzZV9pZCA9PT0gY2lkKSB7XG4gICAgICB0aGlzLmNhc2VOb3RpZmllci5hbm5vdW5jZUNhc2UodGhpcy5jYXNlTm90aWZpZXIuY2FjaGVkQ2FzZVZpZXcpO1xuICAgICAgcmV0dXJuIG9mKHRoaXMuY2FzZU5vdGlmaWVyLmNhY2hlZENhc2VWaWV3KS50b1Byb21pc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKERyYWZ0LmlzRHJhZnQoY2lkKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRBbmRDYWNoZURyYWZ0KGNpZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5jYXNlTm90aWZpZXIuZmV0Y2hBbmRSZWZyZXNoKGNpZClcbiAgICAgICAgICAucGlwZShjYXRjaEVycm9yKGVycm9yID0+IHRoaXMucHJvY2Vzc0Vycm9ySW5DYXNlRmV0Y2goZXJyb3IsIGNpZCkpKVxuICAgICAgICAgIC50b1Byb21pc2UoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEFuZENhY2hlRHJhZnQoY2lkKTogUHJvbWlzZTxDYXNlVmlldz4ge1xuICAgICAgcmV0dXJuIHRoaXMuZHJhZnRTZXJ2aWNlXG4gICAgICAuZ2V0RHJhZnQoY2lkKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChjYXNlVmlldyA9PiB7XG4gICAgICAgICAgdGhpcy5jYXNlTm90aWZpZXIuY2FjaGVkQ2FzZVZpZXcgPSBwbGFpblRvQ2xhc3NGcm9tRXhpc3QobmV3IENhc2VWaWV3KCksIGNhc2VWaWV3KTtcbiAgICAgICAgICB0aGlzLmNhc2VOb3RpZmllci5hbm5vdW5jZUNhc2UodGhpcy5jYXNlTm90aWZpZXIuY2FjaGVkQ2FzZVZpZXcpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmNhc2VOb3RpZmllci5jYWNoZWRDYXNlVmlldztcbiAgICAgICAgfSksXG4gICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gdGhpcy5wcm9jZXNzRXJyb3JJbkNhc2VGZXRjaChlcnJvciwgY2lkKSlcbiAgICAgICkudG9Qcm9taXNlKCk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NFcnJvckluQ2FzZUZldGNoKGVycm9yOiBhbnksIGNhc2VSZWZlcmVuY2U6IHN0cmluZykge1xuICAgIGNvbnNvbGUuZXJyb3IoJyEhISBwcm9jZXNzRXJyb3JJbkNhc2VGZXRjaCAhISEnKTtcbiAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAvLyBUT0RPIFNob3VsZCBiZSBsb2dnZWQgdG8gcmVtb3RlIGxvZ2dpbmcgaW5mcmFzdHJ1Y3R1cmVcbiAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDApIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL3NlYXJjaC9ub3Jlc3VsdHMnXSk7XG4gICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgfVxuICAgIGlmIChDYXNlUmVzb2x2ZXIuRVZFTlRfUkVHRVgudGVzdCh0aGlzLnByZXZpb3VzVXJsKSAmJiBlcnJvci5zdGF0dXMgPT09IDQwNCkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvbGlzdC9jYXNlJ10pO1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cbiAgICAvLyBFcnJvciA0MDMgYW5kIGVuYWJsZS1yZXN0cmljdGVkLWNhc2UtYWNjZXNzIExhdW5jaCBEYXJrbHkgZmxhZyBpcyBlbmFibGVkLCBuYXZpZ2F0ZSB0byByZXN0cmljdGVkIGNhc2UgYWNjZXNzIHBhZ2VcbiAgICBpZiAoZXJyb3Iuc3RhdHVzID09PSA0MDMgJiYgdGhpcy5hcHBDb25maWcuZ2V0RW5hYmxlUmVzdHJpY3RlZENhc2VBY2Nlc3NDb25maWcoKSkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW2AvY2FzZXMvcmVzdHJpY3RlZC1jYXNlLWFjY2Vzcy8ke2Nhc2VSZWZlcmVuY2V9YF0pO1xuICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgIH1cbiAgICBpZiAoZXJyb3Iuc3RhdHVzICE9PSA0MDEpIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL2Vycm9yJ10pO1xuICAgIH1cbiAgICB0aGlzLmdvVG9EZWZhdWx0UGFnZSgpO1xuICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgfVxuXG4gIC8vIGFzIGRpc2N1c3NlZCBmb3IgRVVJLTU0NTYsIG5lZWQgZnVuY3Rpb25hbGl0eSB0byBnbyB0byBkZWZhdWx0IHBhZ2VcbiAgcHJpdmF0ZSBnb1RvRGVmYXVsdFBhZ2UoKTogdm9pZCB7XG4gICAgY29uc29sZS5pbmZvKCdHb2luZyB0byBkZWZhdWx0IHBhZ2UhJyk7XG4gICAgY29uc3QgdXNlckRldGFpbHMgPSBKU09OLnBhcnNlKHRoaXMuc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShVU0VSX0RFVEFJTFMpKTtcbiAgICB1c2VyRGV0YWlscyAmJiB1c2VyRGV0YWlscy5yb2xlc1xuICAgICAgICAmJiAhdXNlckRldGFpbHMucm9sZXMuaW5jbHVkZXMoUFVJX0NBU0VfTUFOQUdFUilcbiAgICAgICAgJiZcbiAgICAgICAgKHVzZXJEZXRhaWxzLnJvbGVzLmluY2x1ZGVzKCdjYXNld29ya2VyLWlhLWlhY2p1ZGdlJylcbiAgICAgICAgICB8fCB1c2VyRGV0YWlscy5yb2xlcy5pbmNsdWRlcygnY2FzZXdvcmtlci1pYS1jYXNlb2ZmaWNlcicpXG4gICAgICAgICAgfHwgdXNlckRldGFpbHMucm9sZXMuaW5jbHVkZXMoJ2Nhc2V3b3JrZXItaWEtYWRtb2ZmaWNlcicpXG4gICAgICAgICAgfHwgdXNlckRldGFpbHMucm9sZXMuaW5jbHVkZXMoJ2Nhc2V3b3JrZXItY2l2aWwnKVxuICAgICAgICAgIHx8IHVzZXJEZXRhaWxzLnJvbGVzLmluY2x1ZGVzKCdjYXNld29ya2VyLXByaXZhdGVsYXcnKSlcbiAgICAgICAgPyB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbQ2FzZVJlc29sdmVyLmRlZmF1bHRXQVBhZ2VdKSA6IHRoaXMucm91dGVyLm5hdmlnYXRlKFtDYXNlUmVzb2x2ZXIuZGVmYXVsdFBhZ2VdKTtcbiAgfVxufVxuIl19
@@ -5,6 +5,7 @@ import { DefinitionsService } from '../../services/definitions/definitions.servi
5
5
  import { JurisdictionService } from '../../services/jurisdiction/jurisdiction.service';
6
6
  import { OrderService } from '../../services/order/order.service';
7
7
  import { SessionStorageService } from '../../services/session/session-storage.service';
8
+ import { USER_DETAILS } from '../../utils';
8
9
  import * as i0 from "@angular/core";
9
10
  import * as i1 from "../../services/order/order.service";
10
11
  import * as i2 from "../../services/definitions/definitions.service";
@@ -147,7 +148,7 @@ export class CreateCaseFiltersComponent {
147
148
  return events.filter(event => event.pre_states.length === 0);
148
149
  }
149
150
  retainEventsWithCreateRights(events) {
150
- const userProfile = JSON.parse(this.sessionStorageService.getItem('userDetails'));
151
+ const userProfile = JSON.parse(this.sessionStorageService.getItem(USER_DETAILS));
151
152
  return events.filter(event => userProfile && userProfile.roles &&
152
153
  !!userProfile.roles.find(role => this.hasCreateAccess(event, role)));
153
154
  }
@@ -286,4 +287,4 @@ export class CreateCaseFiltersComponent {
286
287
  type: Output
287
288
  }] }); })();
288
289
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CreateCaseFiltersComponent, { className: "CreateCaseFiltersComponent", filePath: "lib/shared/components/create-case-filters/create-case-filters.component.ts", lineNumber: 18 }); })();
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWNhc2UtZmlsdGVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY3JlYXRlLWNhc2UtZmlsdGVycy9jcmVhdGUtY2FzZS1maWx0ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jcmVhdGUtY2FzZS1maWx0ZXJzL2NyZWF0ZS1jYXNlLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUkxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNwRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN2RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7Ozs7Ozs7Ozs7SUNKakYsa0NBQXVEO0lBQUEsWUFBeUI7O0lBQUEsaUJBQVM7OztJQUFqRCwrQkFBYztJQUFDLGNBQXlCO0lBQXpCLHFEQUF5Qjs7O0lBUWhGLGtDQUF5RTtJQUFBLFlBQTBCOztJQUFBLGlCQUFTOzs7SUFBbkQsZ0NBQWU7SUFBQyxjQUEwQjtJQUExQixzREFBMEI7OztJQVFuRyxrQ0FBZ0U7SUFBQSxZQUF5Qjs7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RiwrQkFBd0IsZ0JBQ21CO1lBQUEsYUFBMEI7O1lBQUEsaUJBQVE7WUFDM0Usa0NBQXFJO1lBQTdCLDBHQUFVLHFCQUFpQixJQUFDO1lBQ2xJLGtDQUFpQjtZQUFBLGFBQXVDOztZQUFBLGlCQUFTO1lBQ2pFLG1GQUFnRTtZQUVwRSxBQURFLGlCQUFTLEVBQ0w7WUFFTixtQ0FBaUU7WUFBQSxhQUFrQzs7WUFDckcsQUFEcUcsaUJBQVMsRUFDdkc7O1lBeEI2QyxlQUFpQztZQUFqQywyREFBaUM7WUFDRSxlQUF5QztZQUF6QywyREFBeUM7WUFDekcsZUFBdUM7WUFBdkMsMEVBQXVDO1lBQ2xDLGVBQWdCO1lBQWhCLDJDQUFnQjtZQUtLLGVBQThCO1lBQTlCLHlEQUE4QjtZQUNFLGVBQXFDO1lBQXJDLHVEQUFxQztZQUMvRixlQUF1QztZQUF2QywyRUFBdUM7WUFDakMsZUFBZ0M7WUFBaEMsMkRBQWdDO1lBS2hCLGVBQTBCO1lBQTFCLHFEQUEwQjtZQUNFLGVBQWtDO1lBQWxDLG9EQUFrQztZQUNwRixlQUF1QztZQUF2QywyRUFBdUM7WUFDbEMsZUFBeUI7WUFBekIsb0RBQXlCO1lBSWQsY0FBMkI7WUFBM0IsNkNBQTJCO1lBQUMsY0FBa0M7WUFBbEMsaUVBQWtDOzs7aUZEUnhGLDBCQUEwQjtjQUp0QyxTQUFTOzJCQUNFLHlCQUF5QjtvSkFNNUIsVUFBVTtrQkFEaEIsS0FBSztZQUdDLGVBQWU7a0JBRHJCLEtBQUs7WUFHQyxrQkFBa0I7a0JBRHhCLE1BQU07WUFHQSxnQkFBZ0I7a0JBRHRCLE1BQU07O2tGQVJJLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDUkVBVEVfQUNDRVNTIH0gZnJvbSAnLi4vLi4vZG9tYWluL2Nhc2Utdmlldy9hY2Nlc3MtdHlwZXMubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZUV2ZW50IH0gZnJvbSAnLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1ldmVudC5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlVHlwZUxpdGUgfSBmcm9tICcuLi8uLi9kb21haW4vZGVmaW5pdGlvbi9jYXNlLXR5cGUtbGl0ZS5tb2RlbCc7XG5pbXBvcnQgeyBKdXJpc2RpY3Rpb24gfSBmcm9tICcuLi8uLi9kb21haW4vZGVmaW5pdGlvbi9qdXJpc2RpY3Rpb24ubW9kZWwnO1xuaW1wb3J0IHsgRGVmaW5pdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGVmaW5pdGlvbnMvZGVmaW5pdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBKdXJpc2RpY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvanVyaXNkaWN0aW9uL2p1cmlzZGljdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL29yZGVyL29yZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2Vzc2lvblN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc2Vzc2lvbi9zZXNzaW9uLXN0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBDcmVhdGVDYXNlRmlsdGVyc1NlbGVjdGlvbiB9IGZyb20gJy4vY3JlYXRlLWNhc2UtZmlsdGVycy1zZWxlY3Rpb24ubW9kZWwnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jcmVhdGUtY2FzZS1maWx0ZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS1jYXNlLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIENyZWF0ZUNhc2VGaWx0ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgcHVibGljIHN0YXJ0QnV0dG9uVGV4dDogc3RyaW5nO1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGlvblN1Ym1pdHRlZDogRXZlbnRFbWl0dGVyPENyZWF0ZUNhc2VGaWx0ZXJzU2VsZWN0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3Rpb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcblxuICBwdWJsaWMgc2VsZWN0ZWQ6IHtcbiAgICBqdXJpc2RpY3Rpb24/OiBKdXJpc2RpY3Rpb24sXG4gICAgY2FzZVR5cGU/OiBDYXNlVHlwZUxpdGUsXG4gICAgZXZlbnQ/OiBDYXNlRXZlbnQsXG4gICAgZm9ybUdyb3VwPzogRm9ybUdyb3VwXG4gIH07XG5cbiAgcHVibGljIGp1cmlzZGljdGlvbnM6IEp1cmlzZGljdGlvbltdO1xuICBwdWJsaWMgc2VsZWN0ZWRKdXJpc2RpY3Rpb25DYXNlVHlwZXM/OiBDYXNlVHlwZUxpdGVbXTtcbiAgcHVibGljIHNlbGVjdGVkQ2FzZVR5cGVFdmVudHM/OiBDYXNlRXZlbnRbXTtcblxuICBwdWJsaWMgZmlsdGVySnVyaXNkaWN0aW9uQ29udHJvbDogRm9ybUNvbnRyb2w7XG4gIHB1YmxpYyBmaWx0ZXJDYXNlVHlwZUNvbnRyb2w6IEZvcm1Db250cm9sO1xuICBwdWJsaWMgZmlsdGVyRXZlbnRDb250cm9sOiBGb3JtQ29udHJvbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9yZGVyU2VydmljZTogT3JkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmaW5pdGlvbnNTZXJ2aWNlOiBEZWZpbml0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGp1cmlzZGljdGlvblNlcnZpY2U6IEp1cmlzZGljdGlvblNlcnZpY2VcbiAgKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHt9O1xuICAgIHRoaXMuaW5pdENvbnRyb2xzKCk7XG4gICAgdGhpcy5kZWZpbml0aW9uc1NlcnZpY2UuZ2V0SnVyaXNkaWN0aW9ucyhDUkVBVEVfQUNDRVNTKVxuICAgICAgLnN1YnNjcmliZShqdXJpc2RpY3Rpb25zID0+IHtcbiAgICAgICAgdGhpcy5qdXJpc2RpY3Rpb25zID0ganVyaXNkaWN0aW9ucztcbiAgICAgICAgdGhpcy5zZWxlY3RKdXJpc2RpY3Rpb24odGhpcy5qdXJpc2RpY3Rpb25zLCB0aGlzLmZpbHRlckp1cmlzZGljdGlvbkNvbnRyb2wpO1xuICAgICAgfSk7XG4gICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYy1qdXJpc2RpY3Rpb24nKSkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NjLWp1cmlzZGljdGlvbicpLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uSnVyaXNkaWN0aW9uSWRDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldENhc2VUeXBlKCk7XG4gICAgdGhpcy5yZXNldEV2ZW50KCk7XG4gICAgaWYgKHRoaXMuZmlsdGVySnVyaXNkaWN0aW9uQ29udHJvbC52YWx1ZSAhPT0gJycpIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWydjYXNlVHlwZSddLmVuYWJsZSgpO1xuICAgICAgdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24gPSB0aGlzLmZpbmRKdXJpc2RpY3Rpb24odGhpcy5qdXJpc2RpY3Rpb25zLCB0aGlzLmZpbHRlckp1cmlzZGljdGlvbkNvbnRyb2wudmFsdWUpO1xuICAgICAgdGhpcy5zZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlcyA9IHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uLmNhc2VUeXBlcztcbiAgICAgIHRoaXMuc2VsZWN0Q2FzZVR5cGUodGhpcy5zZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlcywgdGhpcy5maWx0ZXJDYXNlVHlwZUNvbnRyb2wpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkNhc2VUeXBlSWRDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldEV2ZW50KCk7XG4gICAgaWYgKHRoaXMuZmlsdGVyQ2FzZVR5cGVDb250cm9sLnZhbHVlICE9PSAnJykge1xuICAgICAgdGhpcy5zZWxlY3RlZC5jYXNlVHlwZSA9IHRoaXMuZmluZENhc2VUeXBlKHRoaXMuc2VsZWN0ZWRKdXJpc2RpY3Rpb25DYXNlVHlwZXMsIHRoaXMuZmlsdGVyQ2FzZVR5cGVDb250cm9sLnZhbHVlKTtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWydldmVudCddLmVuYWJsZSgpO1xuICAgICAgdGhpcy5zZWxlY3RlZENhc2VUeXBlRXZlbnRzID0gdGhpcy5zb3J0RXZlbnRzKHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUuZXZlbnRzKTtcbiAgICAgIHRoaXMuc2VsZWN0RXZlbnQodGhpcy5zZWxlY3RlZENhc2VUeXBlRXZlbnRzLCB0aGlzLmZpbHRlckV2ZW50Q29udHJvbCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uRXZlbnRJZENoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgICBpZiAodGhpcy5maWx0ZXJFdmVudENvbnRyb2wudmFsdWUgIT09ICcnKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkLmV2ZW50ID0gdGhpcy5maW5kRXZlbnQodGhpcy5zZWxlY3RlZENhc2VUeXBlRXZlbnRzLCB0aGlzLmZpbHRlckV2ZW50Q29udHJvbC52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQuZXZlbnQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0NyZWF0YWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNFbXB0eSh0aGlzLnNlbGVjdGVkKSAmJlxuICAgICAgIXRoaXMuaXNFbXB0eSh0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbikgJiZcbiAgICAgICF0aGlzLmlzRW1wdHkodGhpcy5zZWxlY3RlZC5jYXNlVHlwZSkgJiZcbiAgICAgICF0aGlzLmlzRW1wdHkodGhpcy5zZWxlY3RlZC5ldmVudCkgJiZcbiAgICAgICF0aGlzLmlzRGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgYXBwbHkoKSB7XG4gICAgdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24uY3VycmVudENhc2VUeXBlID0gdGhpcy5zZWxlY3RlZC5jYXNlVHlwZTtcbiAgICB0aGlzLmp1cmlzZGljdGlvblNlcnZpY2UuYW5ub3VuY2VTZWxlY3RlZEp1cmlzZGljdGlvbih0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbik7XG4gICAgdGhpcy5zZWxlY3Rpb25TdWJtaXR0ZWQuZW1pdCh7XG4gICAgICBqdXJpc2RpY3Rpb25JZDogdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24uaWQsXG4gICAgICBjYXNlVHlwZUlkOiB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlLmlkLFxuICAgICAgZXZlbnRJZDogdGhpcy5zZWxlY3RlZC5ldmVudC5pZFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGluaXRDb250cm9scygpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlckp1cmlzZGljdGlvbkNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woJ2p1cmlzZGljdGlvbicsIHRoaXMuZmlsdGVySnVyaXNkaWN0aW9uQ29udHJvbCk7XG4gICAgdGhpcy5maWx0ZXJDYXNlVHlwZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogJycsIGRpc2FibGVkOiB0cnVlIH0pO1xuICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woJ2Nhc2VUeXBlJywgdGhpcy5maWx0ZXJDYXNlVHlwZUNvbnRyb2wpO1xuICAgIHRoaXMuZmlsdGVyRXZlbnRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6ICcnLCBkaXNhYmxlZDogdHJ1ZSB9KTtcbiAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKCdldmVudCcsIHRoaXMuZmlsdGVyRXZlbnRDb250cm9sKTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0Q2hhbmdlKCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4geyAvLyB3b3JrYXJvdW5kIHRvIHByZXZlbnQgJ0V4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3InXG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25DaGFuZ2VkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5lbWl0KCk7XG4gICAgICB9XG4gICAgfSwgMCk7XG4gIH1cblxuICBwcml2YXRlIHNvcnRFdmVudHMoZXZlbnRzOiBDYXNlRXZlbnRbXSk6IENhc2VFdmVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5vcmRlclNlcnZpY2Uuc29ydCh0aGlzLnJldGFpbkV2ZW50c1dpdGhDcmVhdGVSaWdodHModGhpcy5yZXRhaW5FdmVudHNXaXRoTm9QcmVTdGF0ZXMoZXZlbnRzKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXRhaW5FdmVudHNXaXRoTm9QcmVTdGF0ZXMoZXZlbnRzOiBDYXNlRXZlbnRbXSk6IENhc2VFdmVudFtdIHtcbiAgICByZXR1cm4gZXZlbnRzLmZpbHRlcihldmVudCA9PiBldmVudC5wcmVfc3RhdGVzLmxlbmd0aCA9PT0gMCk7XG4gIH1cblxuICBwcml2YXRlIHJldGFpbkV2ZW50c1dpdGhDcmVhdGVSaWdodHMoZXZlbnRzOiBDYXNlRXZlbnRbXSk6IENhc2VFdmVudFtdIHtcbiAgICBjb25zdCB1c2VyUHJvZmlsZSA9IEpTT04ucGFyc2UodGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgndXNlckRldGFpbHMnKSk7XG4gICAgcmV0dXJuIGV2ZW50cy5maWx0ZXIoZXZlbnQgPT4gdXNlclByb2ZpbGUgJiYgdXNlclByb2ZpbGUucm9sZXMgJiZcbiAgICAgICEhdXNlclByb2ZpbGUucm9sZXMuZmluZChyb2xlID0+IHRoaXMuaGFzQ3JlYXRlQWNjZXNzKGV2ZW50LCByb2xlKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNDcmVhdGVBY2Nlc3MoY2FzZUV2ZW50OiBDYXNlRXZlbnQsIHJvbGU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIWNhc2VFdmVudC5hY2xzLmZpbmQoYWNsID0+IGFjbC5yb2xlID09PSByb2xlICYmIGFjbC5jcmVhdGUgPT09IHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RKdXJpc2RpY3Rpb24oanVyaXNkaWN0aW9uczogSnVyaXNkaWN0aW9uW10sIGZpbHRlckp1cmlzZGljdGlvbkNvbnRyb2w6IEZvcm1Db250cm9sKSB7XG4gICAgaWYgKGp1cmlzZGljdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICBmaWx0ZXJKdXJpc2RpY3Rpb25Db250cm9sLnNldFZhbHVlKGp1cmlzZGljdGlvbnNbMF0uaWQpO1xuICAgICAgdGhpcy5vbkp1cmlzZGljdGlvbklkQ2hhbmdlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RDYXNlVHlwZShjYXNlVHlwZXM6IENhc2VUeXBlTGl0ZVtdLCBmaWx0ZXJDYXNlVHlwZUNvbnRyb2w6IEZvcm1Db250cm9sKSB7XG4gICAgaWYgKGNhc2VUeXBlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGZpbHRlckNhc2VUeXBlQ29udHJvbC5zZXRWYWx1ZShjYXNlVHlwZXNbMF0uaWQpO1xuICAgICAgdGhpcy5vbkNhc2VUeXBlSWRDaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEV2ZW50KGV2ZW50czogQ2FzZUV2ZW50W10sIGZpbHRlckV2ZW50Q29udHJvbDogRm9ybUNvbnRyb2wpIHtcbiAgICBpZiAoZXZlbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgZmlsdGVyRXZlbnRDb250cm9sLnNldFZhbHVlKGV2ZW50c1swXS5pZCk7XG4gICAgICB0aGlzLm9uRXZlbnRJZENoYW5nZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmluZEp1cmlzZGljdGlvbihqdXJpc2RpY3Rpb25zOiBKdXJpc2RpY3Rpb25bXSwgaWQ6IHN0cmluZyk6IEp1cmlzZGljdGlvbiB7XG4gICAgcmV0dXJuIGp1cmlzZGljdGlvbnMuZmluZChqID0+IGouaWQgPT09IGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgZmluZENhc2VUeXBlKGNhc2VUeXBlczogQ2FzZVR5cGVMaXRlW10sIGlkOiBzdHJpbmcpOiBDYXNlVHlwZUxpdGUge1xuICAgIHJldHVybiBjYXNlVHlwZXMuZmluZChjYXNlVHlwZSA9PiBjYXNlVHlwZS5pZCA9PT0gaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kRXZlbnQoZXZlbnRzOiBDYXNlRXZlbnRbXSwgaWQ6IHN0cmluZyk6IENhc2VFdmVudCB7XG4gICAgcmV0dXJuIGV2ZW50cy5maW5kKGV2ZW50ID0+IGV2ZW50LmlkID09PSBpZCk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0Q2FzZVR5cGUoKTogdm9pZCB7XG4gICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gICAgdGhpcy5maWx0ZXJDYXNlVHlwZUNvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRKdXJpc2RpY3Rpb25DYXNlVHlwZXMgPSBbXTtcbiAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1snY2FzZVR5cGUnXS5kaXNhYmxlKCk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0RXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5lbWl0Q2hhbmdlKCk7XG4gICAgdGhpcy5maWx0ZXJFdmVudENvbnRyb2wuc2V0VmFsdWUoJycpO1xuICAgIHRoaXMuc2VsZWN0ZWQuZXZlbnQgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRDYXNlVHlwZUV2ZW50cyA9IFtdO1xuICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWydldmVudCddLmRpc2FibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNFbXB0eSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB1bmRlZmluZWQ7XG4gIH1cbn1cbiIsIjxmb3JtICAobmdTdWJtaXQpPVwiYXBwbHkoKVwiPlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJjYy1qdXJpc2RpY3Rpb25cIj57eydKdXJpc2RpY3Rpb24nIHwgcnB4VHJhbnNsYXRlfX08L2xhYmVsPlxuICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY2NkLWRyb3Bkb3duXCIgaWQ9XCJjYy1qdXJpc2RpY3Rpb25cIiBuYW1lPVwianVyaXNkaWN0aW9uXCIgW2Zvcm1Db250cm9sXT1cImZpbHRlckp1cmlzZGljdGlvbkNvbnRyb2xcIiAoY2hhbmdlKT1cIm9uSnVyaXNkaWN0aW9uSWRDaGFuZ2UoKVwiPlxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPi0te3snU2VsZWN0IGEgdmFsdWUnIHwgcnB4VHJhbnNsYXRlfX0tLTwvb3B0aW9uPlxuICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgaiBvZiBqdXJpc2RpY3Rpb25zXCIgW3ZhbHVlXT1cImouaWRcIj57e2oubmFtZSB8IHJweFRyYW5zbGF0ZX19PC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNjLWNhc2UtdHlwZVwiPnt7J0Nhc2UgdHlwZScgfCBycHhUcmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBjY2QtZHJvcGRvd25cIiBpZD1cImNjLWNhc2UtdHlwZVwiIG5hbWU9XCJjYXNlLXR5cGVcIiBbZm9ybUNvbnRyb2xdPVwiZmlsdGVyQ2FzZVR5cGVDb250cm9sXCIgKGNoYW5nZSk9XCJvbkNhc2VUeXBlSWRDaGFuZ2UoKVwiPlxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPi0te3snU2VsZWN0IGEgdmFsdWUnIHwgcnB4VHJhbnNsYXRlfX0tLTwvb3B0aW9uPlxuICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgY3Qgb2Ygc2VsZWN0ZWRKdXJpc2RpY3Rpb25DYXNlVHlwZXNcIiBbdmFsdWVdPVwiY3QuaWRcIj57e2N0Lm5hbWUgfCBycHhUcmFuc2xhdGV9fTwvb3B0aW9uPlxuICAgIDwvc2VsZWN0PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJjYy1ldmVudFwiPnt7J0V2ZW50JyB8IHJweFRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIGNjZC1kcm9wZG93blwiIGlkPVwiY2MtZXZlbnRcIiBuYW1lPVwiZXZlbnRcIiBbZm9ybUNvbnRyb2xdPVwiZmlsdGVyRXZlbnRDb250cm9sXCIgKGNoYW5nZSk9XCJvbkV2ZW50SWRDaGFuZ2UoKVwiPlxuICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPi0te3snU2VsZWN0IGEgdmFsdWUnIHwgcnB4VHJhbnNsYXRlfX0tLTwvb3B0aW9uPlxuICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZSBvZiBzZWxlY3RlZENhc2VUeXBlRXZlbnRzXCIgW3ZhbHVlXT1cImUuaWRcIj57e2UubmFtZSB8IHJweFRyYW5zbGF0ZX19PC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gIDwvZGl2PlxuXG4gIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cIiFpc0NyZWF0YWJsZSgpXCI+e3tzdGFydEJ1dHRvblRleHQgfCBycHhUcmFuc2xhdGV9fTwvYnV0dG9uPlxuPC9mb3JtPlxuIl19
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLWNhc2UtZmlsdGVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL2NvbXBvbmVudHMvY3JlYXRlLWNhc2UtZmlsdGVycy9jcmVhdGUtY2FzZS1maWx0ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy9jcmVhdGUtY2FzZS1maWx0ZXJzL2NyZWF0ZS1jYXNlLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUkxRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUNwRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUN2RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQzs7Ozs7Ozs7OztJQ0xyQyxrQ0FBdUQ7SUFBQSxZQUF5Qjs7SUFBQSxpQkFBUzs7O0lBQWpELCtCQUFjO0lBQUMsY0FBeUI7SUFBekIscURBQXlCOzs7SUFRaEYsa0NBQXlFO0lBQUEsWUFBMEI7O0lBQUEsaUJBQVM7OztJQUFuRCxnQ0FBZTtJQUFDLGNBQTBC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Q2pFLG1GQUF5RTtZQUU3RSxBQURFLGlCQUFTLEVBQ0w7WUFHSixBQURGLCtCQUF3QixnQkFDbUI7WUFBQSxhQUEwQjs7WUFBQSxpQkFBUTtZQUMzRSxrQ0FBcUk7WUFBN0IsMEdBQVUscUJBQWlCLElBQUM7WUFDbEksa0NBQWlCO1lBQUEsYUFBdUM7O1lBQUEsaUJBQVM7WUFDakUsbUZBQWdFO1lBRXBFLEFBREUsaUJBQVMsRUFDTDtZQUVOLG1DQUFpRTtZQUFBLGFBQWtDOztZQUNyRyxBQURxRyxpQkFBUyxFQUN2Rzs7WUF4QjZDLGVBQWlDO1lBQWpDLDJEQUFpQztZQUNFLGVBQXlDO1lBQXpDLDJEQUF5QztZQUN6RyxlQUF1QztZQUF2QywwRUFBdUM7WUFDbEMsZUFBZ0I7WUFBaEIsMkNBQWdCO1lBS0ssZUFBOEI7WUFBOUIseURBQThCO1lBQ0UsZUFBcUM7WUFBckMsdURBQXFDO1lBQy9GLGVBQXVDO1lBQXZDLDJFQUF1QztZQUNqQyxlQUFnQztZQUFoQywyREFBZ0M7WUFLaEIsZUFBMEI7WUFBMUIscURBQTBCO1lBQ0UsZUFBa0M7WUFBbEMsb0RBQWtDO1lBQ3BGLGVBQXVDO1lBQXZDLDJFQUF1QztZQUNsQyxlQUF5QjtZQUF6QixvREFBeUI7WUFJZCxjQUEyQjtZQUEzQiw2Q0FBMkI7WUFBQyxjQUFrQztZQUFsQyxpRUFBa0M7OztpRkRSeEYsMEJBQTBCO2NBSnRDLFNBQVM7MkJBQ0UseUJBQXlCO29KQU01QixVQUFVO2tCQURoQixLQUFLO1lBR0MsZUFBZTtrQkFEckIsS0FBSztZQUdDLGtCQUFrQjtrQkFEeEIsTUFBTTtZQUdBLGdCQUFnQjtrQkFEdEIsTUFBTTs7a0ZBUkksMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENSRUFURV9BQ0NFU1MgfSBmcm9tICcuLi8uLi9kb21haW4vY2FzZS12aWV3L2FjY2Vzcy10eXBlcy5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlRXZlbnQgfSBmcm9tICcuLi8uLi9kb21haW4vZGVmaW5pdGlvbi9jYXNlLWV2ZW50Lm1vZGVsJztcbmltcG9ydCB7IENhc2VUeXBlTGl0ZSB9IGZyb20gJy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2Nhc2UtdHlwZS1saXRlLm1vZGVsJztcbmltcG9ydCB7IEp1cmlzZGljdGlvbiB9IGZyb20gJy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2p1cmlzZGljdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBEZWZpbml0aW9uc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kZWZpbml0aW9ucy9kZWZpbml0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IEp1cmlzZGljdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9qdXJpc2RpY3Rpb24vanVyaXNkaWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JkZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3JkZXIvb3JkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zZXNzaW9uL3Nlc3Npb24tc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IFVTRVJfREVUQUlMUyB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IENyZWF0ZUNhc2VGaWx0ZXJzU2VsZWN0aW9uIH0gZnJvbSAnLi9jcmVhdGUtY2FzZS1maWx0ZXJzLXNlbGVjdGlvbi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NjZC1jcmVhdGUtY2FzZS1maWx0ZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS1jYXNlLWZpbHRlcnMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIENyZWF0ZUNhc2VGaWx0ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgaXNEaXNhYmxlZDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgcHVibGljIHN0YXJ0QnV0dG9uVGV4dDogc3RyaW5nO1xuICBAT3V0cHV0KClcbiAgcHVibGljIHNlbGVjdGlvblN1Ym1pdHRlZDogRXZlbnRFbWl0dGVyPENyZWF0ZUNhc2VGaWx0ZXJzU2VsZWN0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3Rpb25DaGFuZ2VkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcblxuICBwdWJsaWMgc2VsZWN0ZWQ6IHtcbiAgICBqdXJpc2RpY3Rpb24/OiBKdXJpc2RpY3Rpb24sXG4gICAgY2FzZVR5cGU/OiBDYXNlVHlwZUxpdGUsXG4gICAgZXZlbnQ/OiBDYXNlRXZlbnQsXG4gICAgZm9ybUdyb3VwPzogRm9ybUdyb3VwXG4gIH07XG5cbiAgcHVibGljIGp1cmlzZGljdGlvbnM6IEp1cmlzZGljdGlvbltdO1xuICBwdWJsaWMgc2VsZWN0ZWRKdXJpc2RpY3Rpb25DYXNlVHlwZXM/OiBDYXNlVHlwZUxpdGVbXTtcbiAgcHVibGljIHNlbGVjdGVkQ2FzZVR5cGVFdmVudHM/OiBDYXNlRXZlbnRbXTtcblxuICBwdWJsaWMgZmlsdGVySnVyaXNkaWN0aW9uQ29udHJvbDogRm9ybUNvbnRyb2w7XG4gIHB1YmxpYyBmaWx0ZXJDYXNlVHlwZUNvbnRyb2w6IEZvcm1Db250cm9sO1xuICBwdWJsaWMgZmlsdGVyRXZlbnRDb250cm9sOiBGb3JtQ29udHJvbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9yZGVyU2VydmljZTogT3JkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmaW5pdGlvbnNTZXJ2aWNlOiBEZWZpbml0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXNzaW9uU3RvcmFnZVNlcnZpY2U6IFNlc3Npb25TdG9yYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGp1cmlzZGljdGlvblNlcnZpY2U6IEp1cmlzZGljdGlvblNlcnZpY2VcbiAgKSB7IH1cblxuICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZWxlY3RlZCA9IHt9O1xuICAgIHRoaXMuaW5pdENvbnRyb2xzKCk7XG4gICAgdGhpcy5kZWZpbml0aW9uc1NlcnZpY2UuZ2V0SnVyaXNkaWN0aW9ucyhDUkVBVEVfQUNDRVNTKVxuICAgICAgLnN1YnNjcmliZShqdXJpc2RpY3Rpb25zID0+IHtcbiAgICAgICAgdGhpcy5qdXJpc2RpY3Rpb25zID0ganVyaXNkaWN0aW9ucztcbiAgICAgICAgdGhpcy5zZWxlY3RKdXJpc2RpY3Rpb24odGhpcy5qdXJpc2RpY3Rpb25zLCB0aGlzLmZpbHRlckp1cmlzZGljdGlvbkNvbnRyb2wpO1xuICAgICAgfSk7XG4gICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYy1qdXJpc2RpY3Rpb24nKSkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NjLWp1cmlzZGljdGlvbicpLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uSnVyaXNkaWN0aW9uSWRDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldENhc2VUeXBlKCk7XG4gICAgdGhpcy5yZXNldEV2ZW50KCk7XG4gICAgaWYgKHRoaXMuZmlsdGVySnVyaXNkaWN0aW9uQ29udHJvbC52YWx1ZSAhPT0gJycpIHtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWydjYXNlVHlwZSddLmVuYWJsZSgpO1xuICAgICAgdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24gPSB0aGlzLmZpbmRKdXJpc2RpY3Rpb24odGhpcy5qdXJpc2RpY3Rpb25zLCB0aGlzLmZpbHRlckp1cmlzZGljdGlvbkNvbnRyb2wudmFsdWUpO1xuICAgICAgdGhpcy5zZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlcyA9IHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uLmNhc2VUeXBlcztcbiAgICAgIHRoaXMuc2VsZWN0Q2FzZVR5cGUodGhpcy5zZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlcywgdGhpcy5maWx0ZXJDYXNlVHlwZUNvbnRyb2wpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkNhc2VUeXBlSWRDaGFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldEV2ZW50KCk7XG4gICAgaWYgKHRoaXMuZmlsdGVyQ2FzZVR5cGVDb250cm9sLnZhbHVlICE9PSAnJykge1xuICAgICAgdGhpcy5zZWxlY3RlZC5jYXNlVHlwZSA9IHRoaXMuZmluZENhc2VUeXBlKHRoaXMuc2VsZWN0ZWRKdXJpc2RpY3Rpb25DYXNlVHlwZXMsIHRoaXMuZmlsdGVyQ2FzZVR5cGVDb250cm9sLnZhbHVlKTtcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWydldmVudCddLmVuYWJsZSgpO1xuICAgICAgdGhpcy5zZWxlY3RlZENhc2VUeXBlRXZlbnRzID0gdGhpcy5zb3J0RXZlbnRzKHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUuZXZlbnRzKTtcbiAgICAgIHRoaXMuc2VsZWN0RXZlbnQodGhpcy5zZWxlY3RlZENhc2VUeXBlRXZlbnRzLCB0aGlzLmZpbHRlckV2ZW50Q29udHJvbCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uRXZlbnRJZENoYW5nZSgpOiB2b2lkIHtcbiAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgICBpZiAodGhpcy5maWx0ZXJFdmVudENvbnRyb2wudmFsdWUgIT09ICcnKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkLmV2ZW50ID0gdGhpcy5maW5kRXZlbnQodGhpcy5zZWxlY3RlZENhc2VUeXBlRXZlbnRzLCB0aGlzLmZpbHRlckV2ZW50Q29udHJvbC52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQuZXZlbnQgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0NyZWF0YWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNFbXB0eSh0aGlzLnNlbGVjdGVkKSAmJlxuICAgICAgIXRoaXMuaXNFbXB0eSh0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbikgJiZcbiAgICAgICF0aGlzLmlzRW1wdHkodGhpcy5zZWxlY3RlZC5jYXNlVHlwZSkgJiZcbiAgICAgICF0aGlzLmlzRW1wdHkodGhpcy5zZWxlY3RlZC5ldmVudCkgJiZcbiAgICAgICF0aGlzLmlzRGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgYXBwbHkoKSB7XG4gICAgdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24uY3VycmVudENhc2VUeXBlID0gdGhpcy5zZWxlY3RlZC5jYXNlVHlwZTtcbiAgICB0aGlzLmp1cmlzZGljdGlvblNlcnZpY2UuYW5ub3VuY2VTZWxlY3RlZEp1cmlzZGljdGlvbih0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbik7XG4gICAgdGhpcy5zZWxlY3Rpb25TdWJtaXR0ZWQuZW1pdCh7XG4gICAgICBqdXJpc2RpY3Rpb25JZDogdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24uaWQsXG4gICAgICBjYXNlVHlwZUlkOiB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlLmlkLFxuICAgICAgZXZlbnRJZDogdGhpcy5zZWxlY3RlZC5ldmVudC5pZFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGluaXRDb250cm9scygpOiB2b2lkIHtcbiAgICB0aGlzLmZpbHRlckp1cmlzZGljdGlvbkNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woJ2p1cmlzZGljdGlvbicsIHRoaXMuZmlsdGVySnVyaXNkaWN0aW9uQ29udHJvbCk7XG4gICAgdGhpcy5maWx0ZXJDYXNlVHlwZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogJycsIGRpc2FibGVkOiB0cnVlIH0pO1xuICAgIHRoaXMuZm9ybUdyb3VwLmFkZENvbnRyb2woJ2Nhc2VUeXBlJywgdGhpcy5maWx0ZXJDYXNlVHlwZUNvbnRyb2wpO1xuICAgIHRoaXMuZmlsdGVyRXZlbnRDb250cm9sID0gbmV3IEZvcm1Db250cm9sKHsgdmFsdWU6ICcnLCBkaXNhYmxlZDogdHJ1ZSB9KTtcbiAgICB0aGlzLmZvcm1Hcm91cC5hZGRDb250cm9sKCdldmVudCcsIHRoaXMuZmlsdGVyRXZlbnRDb250cm9sKTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0Q2hhbmdlKCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoKCkgPT4geyAvLyB3b3JrYXJvdW5kIHRvIHByZXZlbnQgJ0V4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3InXG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25DaGFuZ2VkKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlZC5lbWl0KCk7XG4gICAgICB9XG4gICAgfSwgMCk7XG4gIH1cblxuICBwcml2YXRlIHNvcnRFdmVudHMoZXZlbnRzOiBDYXNlRXZlbnRbXSk6IENhc2VFdmVudFtdIHtcbiAgICByZXR1cm4gdGhpcy5vcmRlclNlcnZpY2Uuc29ydCh0aGlzLnJldGFpbkV2ZW50c1dpdGhDcmVhdGVSaWdodHModGhpcy5yZXRhaW5FdmVudHNXaXRoTm9QcmVTdGF0ZXMoZXZlbnRzKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXRhaW5FdmVudHNXaXRoTm9QcmVTdGF0ZXMoZXZlbnRzOiBDYXNlRXZlbnRbXSk6IENhc2VFdmVudFtdIHtcbiAgICByZXR1cm4gZXZlbnRzLmZpbHRlcihldmVudCA9PiBldmVudC5wcmVfc3RhdGVzLmxlbmd0aCA9PT0gMCk7XG4gIH1cblxuICBwcml2YXRlIHJldGFpbkV2ZW50c1dpdGhDcmVhdGVSaWdodHMoZXZlbnRzOiBDYXNlRXZlbnRbXSk6IENhc2VFdmVudFtdIHtcbiAgICBjb25zdCB1c2VyUHJvZmlsZSA9IEpTT04ucGFyc2UodGhpcy5zZXNzaW9uU3RvcmFnZVNlcnZpY2UuZ2V0SXRlbShVU0VSX0RFVEFJTFMpKTtcbiAgICByZXR1cm4gZXZlbnRzLmZpbHRlcihldmVudCA9PiB1c2VyUHJvZmlsZSAmJiB1c2VyUHJvZmlsZS5yb2xlcyAmJlxuICAgICAgISF1c2VyUHJvZmlsZS5yb2xlcy5maW5kKHJvbGUgPT4gdGhpcy5oYXNDcmVhdGVBY2Nlc3MoZXZlbnQsIHJvbGUpKSk7XG4gIH1cblxuICBwcml2YXRlIGhhc0NyZWF0ZUFjY2VzcyhjYXNlRXZlbnQ6IENhc2VFdmVudCwgcm9sZTogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhY2FzZUV2ZW50LmFjbHMuZmluZChhY2wgPT4gYWNsLnJvbGUgPT09IHJvbGUgJiYgYWNsLmNyZWF0ZSA9PT0gdHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdEp1cmlzZGljdGlvbihqdXJpc2RpY3Rpb25zOiBKdXJpc2RpY3Rpb25bXSwgZmlsdGVySnVyaXNkaWN0aW9uQ29udHJvbDogRm9ybUNvbnRyb2wpIHtcbiAgICBpZiAoanVyaXNkaWN0aW9ucy5sZW5ndGggPT09IDEpIHtcbiAgICAgIGZpbHRlckp1cmlzZGljdGlvbkNvbnRyb2wuc2V0VmFsdWUoanVyaXNkaWN0aW9uc1swXS5pZCk7XG4gICAgICB0aGlzLm9uSnVyaXNkaWN0aW9uSWRDaGFuZ2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdENhc2VUeXBlKGNhc2VUeXBlczogQ2FzZVR5cGVMaXRlW10sIGZpbHRlckNhc2VUeXBlQ29udHJvbDogRm9ybUNvbnRyb2wpIHtcbiAgICBpZiAoY2FzZVR5cGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgZmlsdGVyQ2FzZVR5cGVDb250cm9sLnNldFZhbHVlKGNhc2VUeXBlc1swXS5pZCk7XG4gICAgICB0aGlzLm9uQ2FzZVR5cGVJZENoYW5nZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0RXZlbnQoZXZlbnRzOiBDYXNlRXZlbnRbXSwgZmlsdGVyRXZlbnRDb250cm9sOiBGb3JtQ29udHJvbCkge1xuICAgIGlmIChldmVudHMubGVuZ3RoID09PSAxKSB7XG4gICAgICBmaWx0ZXJFdmVudENvbnRyb2wuc2V0VmFsdWUoZXZlbnRzWzBdLmlkKTtcbiAgICAgIHRoaXMub25FdmVudElkQ2hhbmdlKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaW5kSnVyaXNkaWN0aW9uKGp1cmlzZGljdGlvbnM6IEp1cmlzZGljdGlvbltdLCBpZDogc3RyaW5nKTogSnVyaXNkaWN0aW9uIHtcbiAgICByZXR1cm4ganVyaXNkaWN0aW9ucy5maW5kKGogPT4gai5pZCA9PT0gaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kQ2FzZVR5cGUoY2FzZVR5cGVzOiBDYXNlVHlwZUxpdGVbXSwgaWQ6IHN0cmluZyk6IENhc2VUeXBlTGl0ZSB7XG4gICAgcmV0dXJuIGNhc2VUeXBlcy5maW5kKGNhc2VUeXBlID0+IGNhc2VUeXBlLmlkID09PSBpZCk7XG4gIH1cblxuICBwcml2YXRlIGZpbmRFdmVudChldmVudHM6IENhc2VFdmVudFtdLCBpZDogc3RyaW5nKTogQ2FzZUV2ZW50IHtcbiAgICByZXR1cm4gZXZlbnRzLmZpbmQoZXZlbnQgPT4gZXZlbnQuaWQgPT09IGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRDYXNlVHlwZSgpOiB2b2lkIHtcbiAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgICB0aGlzLmZpbHRlckNhc2VUeXBlQ29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy5zZWxlY3RlZC5jYXNlVHlwZSA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlcyA9IFtdO1xuICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzWydjYXNlVHlwZSddLmRpc2FibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRFdmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmVtaXRDaGFuZ2UoKTtcbiAgICB0aGlzLmZpbHRlckV2ZW50Q29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy5zZWxlY3RlZC5ldmVudCA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3RlZENhc2VUeXBlRXZlbnRzID0gW107XG4gICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbJ2V2ZW50J10uZGlzYWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0VtcHR5KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZDtcbiAgfVxufVxuIiwiPGZvcm0gIChuZ1N1Ym1pdCk9XCJhcHBseSgpXCI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNjLWp1cmlzZGljdGlvblwiPnt7J0p1cmlzZGljdGlvbicgfCBycHhUcmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBjY2QtZHJvcGRvd25cIiBpZD1cImNjLWp1cmlzZGljdGlvblwiIG5hbWU9XCJqdXJpc2RpY3Rpb25cIiBbZm9ybUNvbnRyb2xdPVwiZmlsdGVySnVyaXNkaWN0aW9uQ29udHJvbFwiIChjaGFuZ2UpPVwib25KdXJpc2RpY3Rpb25JZENoYW5nZSgpXCI+XG4gICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+LS17eydTZWxlY3QgYSB2YWx1ZScgfCBycHhUcmFuc2xhdGV9fS0tPC9vcHRpb24+XG4gICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBqIG9mIGp1cmlzZGljdGlvbnNcIiBbdmFsdWVdPVwiai5pZFwiPnt7ai5uYW1lIHwgcnB4VHJhbnNsYXRlfX08L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwiY2MtY2FzZS10eXBlXCI+e3snQ2FzZSB0eXBlJyB8IHJweFRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIGNjZC1kcm9wZG93blwiIGlkPVwiY2MtY2FzZS10eXBlXCIgbmFtZT1cImNhc2UtdHlwZVwiIFtmb3JtQ29udHJvbF09XCJmaWx0ZXJDYXNlVHlwZUNvbnRyb2xcIiAoY2hhbmdlKT1cIm9uQ2FzZVR5cGVJZENoYW5nZSgpXCI+XG4gICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+LS17eydTZWxlY3QgYSB2YWx1ZScgfCBycHhUcmFuc2xhdGV9fS0tPC9vcHRpb24+XG4gICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjdCBvZiBzZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlc1wiIFt2YWx1ZV09XCJjdC5pZFwiPnt7Y3QubmFtZSB8IHJweFRyYW5zbGF0ZX19PC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cImNjLWV2ZW50XCI+e3snRXZlbnQnIHwgcnB4VHJhbnNsYXRlfX08L2xhYmVsPlxuICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgY2NkLWRyb3Bkb3duXCIgaWQ9XCJjYy1ldmVudFwiIG5hbWU9XCJldmVudFwiIFtmb3JtQ29udHJvbF09XCJmaWx0ZXJFdmVudENvbnRyb2xcIiAoY2hhbmdlKT1cIm9uRXZlbnRJZENoYW5nZSgpXCI+XG4gICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+LS17eydTZWxlY3QgYSB2YWx1ZScgfCBycHhUcmFuc2xhdGV9fS0tPC9vcHRpb24+XG4gICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBlIG9mIHNlbGVjdGVkQ2FzZVR5cGVFdmVudHNcIiBbdmFsdWVdPVwiZS5pZFwiPnt7ZS5uYW1lIHwgcnB4VHJhbnNsYXRlfX08L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbiAgPC9kaXY+XG5cbiAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidXR0b25cIiBbZGlzYWJsZWRdPVwiIWlzQ3JlYXRhYmxlKClcIj57e3N0YXJ0QnV0dG9uVGV4dCB8IHJweFRyYW5zbGF0ZX19PC9idXR0b24+XG48L2Zvcm0+XG4iXX0=