@dsivd/prestations-ng 16.4.8 → 16.4.9-beta.1

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 (25) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dsivd-prestations-ng-v16.4.9-beta.1.tgz +0 -0
  3. package/esm2020/foehn-navigation/foehn-navigation.service.mjs +7 -4
  4. package/esm2020/foehn-page/foehn-page-expiration-timer/foehn-page-expiration-timer.component.mjs +3 -3
  5. package/esm2020/foehn-page/foehn-page.component.mjs +5 -4
  6. package/esm2020/foehn-page/foehn-page.module.mjs +19 -7
  7. package/esm2020/foehn-page/foehn-transmit-waiting-modal/demande-transmit-interceptor.mjs +48 -0
  8. package/esm2020/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.component.mjs +23 -0
  9. package/esm2020/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.service.mjs +32 -0
  10. package/esm2020/foehn-upload/foehn-upload-progress-bar/foehn-upload-progress-bar.component.mjs +2 -2
  11. package/esm2020/public_api.mjs +3 -1
  12. package/esm2020/sdk-dictionary/default-dictionary.mjs +5 -1
  13. package/esm2020/sdk-epayment/sdk-epayment.component.mjs +3 -3
  14. package/fesm2015/dsivd-prestations-ng.mjs +125 -20
  15. package/fesm2015/dsivd-prestations-ng.mjs.map +1 -1
  16. package/fesm2020/dsivd-prestations-ng.mjs +125 -20
  17. package/fesm2020/dsivd-prestations-ng.mjs.map +1 -1
  18. package/foehn-navigation/foehn-navigation.service.d.ts +3 -1
  19. package/foehn-page/foehn-page.module.d.ts +15 -14
  20. package/foehn-page/foehn-transmit-waiting-modal/demande-transmit-interceptor.d.ts +16 -0
  21. package/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.component.d.ts +11 -0
  22. package/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.service.d.ts +11 -0
  23. package/package.json +1 -1
  24. package/public_api.d.ts +2 -0
  25. package/dsivd-prestations-ng-v16.4.8.tgz +0 -0
package/CHANGELOG.md CHANGED
@@ -6,6 +6,21 @@
6
6
 
7
7
  ---
8
8
 
9
+ ## [16.4.9]
10
+
11
+ ### Added
12
+
13
+ - [foehn-transmit-waiting-modal.component.ts](projects/prestations-ng/src/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.component.ts)
14
+ - [foehn-transmit-waiting-modal.component.html](projects/prestations-ng/src/foehn-page/foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.component.html)
15
+
16
+ - added a modal to transmit action so users know something is actually being processed
17
+
18
+ - New dictionary keys:
19
+
20
+ - `foehn-transmit-waiting-modal.title` is the modal displayed title
21
+ - `foehn-transmit-waiting-modal.message` is the main modal message
22
+ - `foehn-transmit-waiting-modal.help` is a help message displayed underneath undetermined progressbar
23
+
9
24
  ## [16.4.8]
10
25
 
11
26
  ### Added
@@ -5,18 +5,20 @@ import * as i1 from "@angular/router";
5
5
  import * as i2 from "../gesdem/gesdem-handler.service";
6
6
  import * as i3 from "../gesdem-action-recovery/gesdem-action-recovery.service";
7
7
  import * as i4 from "@angular/common";
8
+ import * as i5 from "../foehn-page/foehn-transmit-waiting-modal/demande-transmit-interceptor";
8
9
  export var NavigationDirection;
9
10
  (function (NavigationDirection) {
10
11
  NavigationDirection[NavigationDirection["FORWARD"] = 1] = "FORWARD";
11
12
  NavigationDirection[NavigationDirection["BACKWARD"] = -1] = "BACKWARD";
12
13
  })(NavigationDirection || (NavigationDirection = {}));
13
14
  export class FoehnNavigationService {
14
- constructor(router, gesdemService, gesdemActionRecoveryService, route, location) {
15
+ constructor(router, gesdemService, gesdemActionRecoveryService, route, location, demandeTransmitInterceptor) {
15
16
  this.router = router;
16
17
  this.gesdemService = gesdemService;
17
18
  this.gesdemActionRecoveryService = gesdemActionRecoveryService;
18
19
  this.route = route;
19
20
  this.location = location;
21
+ this.demandeTransmitInterceptor = demandeTransmitInterceptor;
20
22
  this.isInit = false;
21
23
  this.initializedAndRouteActivated = new BehaviorSubject(false);
22
24
  this.linearRouting = true;
@@ -50,6 +52,7 @@ export class FoehnNavigationService {
50
52
  const prefix = route.data.basePath || route.path;
51
53
  this.gesdemService.prefix = prefix;
52
54
  this.gesdemActionRecoveryService.prefix = prefix;
55
+ this.demandeTransmitInterceptor.prefix = prefix;
53
56
  this.linearRouting = route.data.linearRouting !== false;
54
57
  }
55
58
  this.throwIfNotInit();
@@ -289,12 +292,12 @@ export class FoehnNavigationService {
289
292
  }, 0);
290
293
  }
291
294
  }
292
- FoehnNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FoehnNavigationService, deps: [{ token: i1.Router }, { token: i2.GesdemHandlerService }, { token: i3.GesdemActionRecoveryService }, { token: i1.ActivatedRoute }, { token: i4.Location }], target: i0.ɵɵFactoryTarget.Injectable });
295
+ FoehnNavigationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FoehnNavigationService, deps: [{ token: i1.Router }, { token: i2.GesdemHandlerService }, { token: i3.GesdemActionRecoveryService }, { token: i1.ActivatedRoute }, { token: i4.Location }, { token: i5.DemandeTransmitInterceptor }], target: i0.ɵɵFactoryTarget.Injectable });
293
296
  FoehnNavigationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FoehnNavigationService, providedIn: 'root' });
294
297
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FoehnNavigationService, decorators: [{
295
298
  type: Injectable,
296
299
  args: [{
297
300
  providedIn: 'root'
298
301
  }]
299
- }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.GesdemHandlerService }, { type: i3.GesdemActionRecoveryService }, { type: i1.ActivatedRoute }, { type: i4.Location }]; } });
300
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tbmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLW5hdmlnYXRpb24vZm9laG4tbmF2aWdhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFTM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBS25ELE1BQU0sQ0FBTixJQUFZLG1CQUdYO0FBSEQsV0FBWSxtQkFBbUI7SUFDM0IsbUVBQVksQ0FBQTtJQUNaLHNFQUFhLENBQUE7QUFDakIsQ0FBQyxFQUhXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFHOUI7QUFLRCxNQUFNLE9BQU8sc0JBQXNCO0lBVS9CLFlBQ1ksTUFBYyxFQUNkLGFBQW1DLEVBQ25DLDJCQUF3RCxFQUN4RCxLQUFxQixFQUNyQixRQUFrQjtRQUpsQixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2Qsa0JBQWEsR0FBYixhQUFhLENBQXNCO1FBQ25DLGdDQUEyQixHQUEzQiwyQkFBMkIsQ0FBNkI7UUFDeEQsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFDckIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQVh0QixXQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ2YsaUNBQTRCLEdBQTZCLElBQUksZUFBZSxDQUNoRixLQUFLLENBQ1IsQ0FBQztRQUNNLGtCQUFhLEdBQUcsSUFBSSxDQUFDO0lBUTFCLENBQUM7SUFFSixJQUFJLFdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksY0FBYyxDQUFDLEtBQXFCO1FBQ3BDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsNEJBQTRC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LENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzFCLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtnQkFDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQzlDO1lBRUQsSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ3BDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQzthQUNwQztZQUVELE9BQU8sTUFBTSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVPLG1CQUFtQjtRQUN2QixvRUFBb0U7UUFDcEUsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNaLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDcEQsSUFBSSxLQUFLLEVBQUU7Z0JBQ1AsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ2pCO1FBQ0wsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ1YsQ0FBQzs7b0hBeFhRLHNCQUFzQjt3SEFBdEIsc0JBQXNCLGNBRm5CLE1BQU07NEZBRVQsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWN0aXZhdGVkUm91dGUsXG4gICAgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCxcbiAgICBDYW5BY3RpdmF0ZUZuLFxuICAgIFBhcmFtcyxcbiAgICBSb3V0ZSxcbiAgICBSb3V0ZXJcbn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBHZXNkZW1IYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL2dlc2RlbS9nZXNkZW0taGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEdlc2RlbUFjdGlvblJlY292ZXJ5U2VydmljZSB9IGZyb20gJy4uL2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnkvZ2VzZGVtLWFjdGlvbi1yZWNvdmVyeS5zZXJ2aWNlJztcblxuZXhwb3J0IGVudW0gTmF2aWdhdGlvbkRpcmVjdGlvbiB7XG4gICAgRk9SV0FSRCA9ICsxLFxuICAgIEJBQ0tXQVJEID0gLTFcbn1cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGb2Vobk5hdmlnYXRpb25TZXJ2aWNlIHtcbiAgICBjdXJyZW50Um91dGVPcmRlcjogbnVtYmVyO1xuICAgIG9yZGVyZWRSb3V0ZXM6IFJvdXRlW107XG4gICAgcHJpdmF0ZSBfYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlO1xuICAgIHByaXZhdGUgaXNJbml0ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBpbml0aWFsaXplZEFuZFJvdXRlQWN0aXZhdGVkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KFxuICAgICAgICBmYWxzZVxuICAgICk7XG4gICAgcHJpdmF0ZSBsaW5lYXJSb3V0aW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIGdlc2RlbVNlcnZpY2U6IEdlc2RlbUhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdlc2RlbUFjdGlvblJlY292ZXJ5U2VydmljZTogR2VzZGVtQWN0aW9uUmVjb3ZlcnlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb25cbiAgICApIHt9XG5cbiAgICBnZXQgaW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzSW5pdDtcbiAgICB9XG5cbiAgICBzZXQgYWN0aXZhdGVkUm91dGUodmFsdWU6IEFjdGl2YXRlZFJvdXRlKSB7XG4gICAgICAgIHRoaXMudGhyb3dJZk5vdEluaXQoKTtcbiAgICAgICAgdGhpcy5fYWN0aXZhdGVkUm91dGUgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXplZEFuZFJvdXRlQWN0aXZhdGVkLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGdldFJvb3RSb3V0ZVJlY3Vyc2l2ZShyb3V0ZTogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IFJvdXRlIHtcbiAgICAgICAgaWYgKHJvdXRlKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgcm91dGUucm91dGVDb25maWcgJiZcbiAgICAgICAgICAgICAgICByb3V0ZS5yb3V0ZUNvbmZpZy5kYXRhICYmXG4gICAgICAgICAgICAgICAgcm91dGUucm91dGVDb25maWcuZGF0YS5yb290XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcm91dGUucm91dGVDb25maWc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRSb290Um91dGVSZWN1cnNpdmUocm91dGUucGFyZW50KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpbml0Um91dGUocm91dGU6IFJvdXRlKTogdm9pZCB7XG4gICAgICAgIGlmIChyb3V0ZSkge1xuICAgICAgICAgICAgdGhpcy5vcmRlcmVkUm91dGVzID0gdGhpcy5pbmRleFJvdXRlc0J5T3JkZXIocm91dGUpO1xuXG4gICAgICAgICAgICAvLyBCeSBkZWZhdWx0IHRoZSBwcmVmaXggc2hvdWxkIGJlIHRoZSBwYXRoIG9mIHRoZSByb3V0ZS4gKGUuZy4gaW4gL3ZhbGlkYXRpb24vMTIzMTIzLTEyMzIxL3BhZ2UxLFxuICAgICAgICAgICAgLy8gdGhlIHByZWZpeCBpcyBcInZhbGlkYXRpb25cIikuIEhvd2V2ZXIsIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBjb2RlLXNwbGl0dGVkIHdpdGggdGhlIHJvdXRpbmcgZGVmaW5lZFxuICAgICAgICAgICAgLy8gaW4gYSBtb2R1bGUsIHRoaXMgd29uJ3Qgd29yay4gSW4gdGhpcyBjYXNlLCB5b3UgY2FuIHNwZWNpZnkgdGhlIHBhdGggaW4gJC5kYXRhLmJhc2VQYXRoIHNvIHRoZSBHZXNEZW1cbiAgICAgICAgICAgIC8vIHNlcnZpY2Uga25vd3Mgd2hlcmUgdG8gc2VuZCB0aGUgcmVxdWVzdCB0byB0aGUgYmFja2VuZC5cbiAgICAgICAgICAgIGNvbnN0IHByZWZpeCA9IHJvdXRlLmRhdGEuYmFzZVBhdGggfHwgcm91dGUucGF0aDtcbiAgICAgICAgICAgIHRoaXMuZ2VzZGVtU2VydmljZS5wcmVmaXggPSBwcmVmaXg7XG4gICAgICAgICAgICB0aGlzLmdlc2RlbUFjdGlvblJlY292ZXJ5U2VydmljZS5wcmVmaXggPSBwcmVmaXg7XG4gICAgICAgICAgICB0aGlzLmxpbmVhclJvdXRpbmcgPSByb3V0ZS5kYXRhLmxpbmVhclJvdXRpbmcgIT09IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGhyb3dJZk5vdEluaXQoKTtcbiAgICB9XG5cbiAgICB0aHJvd0lmTm90SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzSW5pdCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICAgICAgICBcIk5vIHJvdXRlIGlzIGlkZW50aWZpZWQgYXMgJ3Jvb3QnLiBIYXZlIHlvdSBjYWxsZWQgaW5pdFJvdXRlKCkgP1wiXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlUm91dGVJbmZvcm1hdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGhyb3dJZk5vdEluaXQoKTtcbiAgICAgICAgY29uc3QgY3VycmVudFJvdXRlID0gdGhpcy5fYWN0aXZhdGVkUm91dGUucm91dGVDb25maWc7XG5cbiAgICAgICAgbGV0IGN1cnJlbnRSb3V0ZU9yZGVyID0gMTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhIWN1cnJlbnRSb3V0ZSAmJlxuICAgICAgICAgICAgISFjdXJyZW50Um91dGUuZGF0YSAmJlxuICAgICAgICAgICAgISFjdXJyZW50Um91dGUuZGF0YS5vcmRlclxuICAgICAgICApIHtcbiAgICAgICAgICAgIGN1cnJlbnRSb3V0ZU9yZGVyID0gY3VycmVudFJvdXRlLmRhdGEub3JkZXI7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50Um91dGVPcmRlciA9IGN1cnJlbnRSb3V0ZU9yZGVyO1xuICAgIH1cblxuICAgIGdldEZpcnN0Um91dGUoKTogUm91dGUge1xuICAgICAgICByZXR1cm4gdGhpcy5vcmRlcmVkUm91dGVzWzFdO1xuICAgIH1cblxuICAgIGN1cnJlbnQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHRoaXMudGhyb3dJZk5vdEluaXQoKTtcbiAgICAgICAgaWYgKCF0aGlzLmdlc2RlbVNlcnZpY2UubGFzdFJlc3BvbnNlKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoJ0VycmV1ciBuYXZpZ2F0aW9uU2VydmljZSNjdXJyZW50Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudFJvdXRlID0gdGhpcy5vcmRlcmVkUm91dGVzW3RoaXMuY3VycmVudFJvdXRlT3JkZXJdO1xuXG4gICAgICAgIGNvbnN0IHByZWZpeCA9IHRoaXMuZ2VzZGVtU2VydmljZS5wcmVmaXg7XG4gICAgICAgIGNvbnN0IGNvbW1hbmRzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBpZiAocHJlZml4KSB7XG4gICAgICAgICAgICBjb21tYW5kcy5wdXNoKHByZWZpeCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5nZXNkZW1TZXJ2aWNlLmxhc3RSZXNwb25zZS5tZXRhLnJlZmVyZW5jZSkge1xuICAgICAgICAgICAgY29tbWFuZHMucHVzaChcbiAgICAgICAgICAgICAgICB0aGlzLmdlc2RlbVNlcnZpY2UubGFzdFJlc3BvbnNlLm1ldGEucmVmZXJlbmNlLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRSb3V0ZS5wYXRoXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCB0cmVlID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShjb21tYW5kcyk7XG4gICAgICAgICAgICBjb25zdCB1cmwgPVxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLnNlcmlhbGl6ZVVybCh0cmVlKSArXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRRdWVyeVBhcmFtc1RvRm9yd2FyZEFzU3RyaW5nKCk7XG4gICAgICAgICAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh1cmwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcbiAgICB9XG5cbiAgICBoYXNCZWVuSW5pdGlhbGl6ZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVkQW5kUm91dGVBY3RpdmF0ZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgZ2V0UXVlcnlQYXJhbXNUb0ZvcndhcmRBc1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmdldFF1ZXJ5UGFyYW1zVG9Gb3J3YXJkKCkgfHwgW107XG4gICAgICAgIGxldCBzdHJpbmdQYXJhbXMgPSAnJztcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocGFyYW1zKSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbXNba2V5XTtcbiAgICAgICAgICAgIHN0cmluZ1BhcmFtcyArPSBzdHJpbmdQYXJhbXMgPyAnJicgOiAnPyc7XG4gICAgICAgICAgICBzdHJpbmdQYXJhbXMgKz0gYCR7a2V5fT0ke3ZhbHVlfWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0cmluZ1BhcmFtcztcbiAgICB9XG5cbiAgICBnZXRRdWVyeVBhcmFtc1RvRm9yd2FyZCgpOiBQYXJhbXMge1xuICAgICAgICBjb25zdCByZUNhcHRjaGFCeVBhc3NVVUlEID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1xuICAgICAgICAgICAgLnJlQ2FwdGNoYUJ5UGFzc1VVSUQ7XG4gICAgICAgIGNvbnN0IHNjcm9sbFRvID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5zY3JvbGxUbztcbiAgICAgICAgaWYgKCEhcmVDYXB0Y2hhQnlQYXNzVVVJRCB8fCAhIXNjcm9sbFRvKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXM6IFBhcmFtcyA9IHt9O1xuICAgICAgICAgICAgaWYgKCEhcmVDYXB0Y2hhQnlQYXNzVVVJRCkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5yZUNhcHRjaGFCeVBhc3NVVUlEID0gcmVDYXB0Y2hhQnlQYXNzVVVJRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghIXNjcm9sbFRvKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLnNjcm9sbFRvID0gc2Nyb2xsVG87XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFyYW1zO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIG5leHQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHRoaXMudGhyb3dJZk5vdEluaXQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVkaXJlY3RUb0F2YWlsYWJsZVJvdXRlKE5hdmlnYXRpb25EaXJlY3Rpb24uRk9SV0FSRCk7XG4gICAgfVxuXG4gICAgcHJldmlvdXMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHRoaXMudGhyb3dJZk5vdEluaXQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVkaXJlY3RUb0F2YWlsYWJsZVJvdXRlKE5hdmlnYXRpb25EaXJlY3Rpb24uQkFDS1dBUkQpO1xuICAgIH1cblxuICAgIGxhc3QoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHRoaXMudGhyb3dJZk5vdEluaXQoKTtcbiAgICAgICAgY29uc3Qgcm91dGUgPSB0aGlzLmdldEF2YWlsYWJsZVJvdXRlcygpO1xuICAgICAgICBjb25zdCBuZXh0Um91dGVQYXRoID0gcm91dGVbcm91dGUubGVuZ3RoIC0gMV0ucGF0aDtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVkaXJlY3QobmV4dFJvdXRlUGF0aCk7XG4gICAgfVxuXG4gICAgcmVkaXJlY3QobmV3UGF0aDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IHJvdXRlcyA9IFtdO1xuICAgICAgICBpZiAodGhpcy5nZXNkZW1TZXJ2aWNlLnByZWZpeCkge1xuICAgICAgICAgICAgcm91dGVzLnB1c2godGhpcy5nZXNkZW1TZXJ2aWNlLnByZWZpeCk7XG4gICAgICAgIH1cbiAgICAgICAgcm91dGVzLnB1c2godGhpcy5nZXNkZW1TZXJ2aWNlLmxhc3RSZXNwb25zZS5tZXRhLnJlZmVyZW5jZSwgbmV3UGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyXG4gICAgICAgICAgICAubmF2aWdhdGUocm91dGVzLCB7XG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHRoaXMuZ2V0UXVlcnlQYXJhbXNUb0ZvcndhcmQoKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKHN1Y2Nlc3MgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9jdXNPblBhZ2VUaXRsZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEF2YWlsYWJsZVJvdXRlcygpOiBSb3V0ZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3JkZXJlZFJvdXRlcy5maWx0ZXIocm91dGUgPT4gdGhpcy5pc1JvdXRlQXZhaWxhYmxlKHJvdXRlKSk7XG4gICAgfVxuXG4gICAgZ2V0Q3VycmVudFJvdXRlSW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgLy8gVGhpcyBldmFsdWF0ZXMgYWxsIHRoZSBndWFyZHNcbiAgICAgICAgY29uc3QgYXZhaWxhYmxlUm91dGVzID0gdGhpcy5nZXRBdmFpbGFibGVSb3V0ZXMoKTtcblxuICAgICAgICBjb25zdCBjdXJyZW50Um91dGUgPSBhdmFpbGFibGVSb3V0ZXMuZmluZChcbiAgICAgICAgICAgIHJvdXRlID0+IHJvdXRlLmRhdGEub3JkZXIgPT09IHRoaXMuY3VycmVudFJvdXRlT3JkZXJcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIWN1cnJlbnRSb3V0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXZhaWxhYmxlUm91dGVzLmluZGV4T2YoY3VycmVudFJvdXRlKTtcbiAgICB9XG5cbiAgICBnZXRUb3RhbFJvdXRlc1NpemUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QXZhaWxhYmxlUm91dGVzKCkubGVuZ3RoO1xuICAgIH1cblxuICAgIGdldExhc3RSb3V0ZU9yZGVyKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHJvdXRlcyA9IHRoaXMuZ2V0QXZhaWxhYmxlUm91dGVzKCk7XG4gICAgICAgIHJldHVybiByb3V0ZXNbcm91dGVzLmxlbmd0aCAtIDFdLmRhdGEub3JkZXI7XG4gICAgfVxuXG4gICAgZ2V0TmV4dEF2YWlsYWJsZVJvdXRlKGRpcmVjdGlvbjogTmF2aWdhdGlvbkRpcmVjdGlvbik6IFJvdXRlIHtcbiAgICAgICAgLy8gVGhpcyBldmFsdWF0ZXMgYWxsIHRoZSBndWFyZHNcbiAgICAgICAgY29uc3QgYXZhaWxhYmxlUm91dGVzID0gdGhpcy5nZXRBdmFpbGFibGVSb3V0ZXMoKTtcblxuICAgICAgICAvLyBBc3N1bWVzIHRoYXQgdGhlIG5leHQgb3IgcHJldmlvdXMgcm91dGUgaXMgdGhlIG5leHQgb3IgcHJldmlvdXMgb24gdGhlIGFycmF5IG9mIGF2YWlsYWJsZSByb3V0ZXMuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRSb3V0ZSA9IHRoaXMuZ2V0Q3VycmVudFJvdXRlKGF2YWlsYWJsZVJvdXRlcyk7XG4gICAgICAgIGlmICghY3VycmVudFJvdXRlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgJ0ludmFsaWQgcm91dGluZywgYXQgbGVhc3Qgb25lIHJvdXRlIG11c3QgYmUgYXZhaWxhYmxlJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRSb3V0ZUluZGV4ID0gYXZhaWxhYmxlUm91dGVzLmluZGV4T2YoY3VycmVudFJvdXRlKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0Um91dGUgPSBhdmFpbGFibGVSb3V0ZXNbY3VycmVudFJvdXRlSW5kZXggKyBkaXJlY3Rpb25dO1xuICAgICAgICBpZiAoIXRhcmdldFJvdXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBkaXNwbGF5IGluZGV4IGlzbid0IGFsd2F5cyB0aGUgcm91dGUgb3JkZXIgYXMgd2Ugc3VwcG9ydCBndWFyZHMgb24gYXZhaWxhYmxlIHJvdXRlcy5cbiAgICAgICAgLy8gVGhlIGRpc3BsYXkgaW5kZXggaXMgMS1iYXNlZC5cbiAgICAgICAgdGFyZ2V0Um91dGUuZGF0YS5kaXNwbGF5SW5kZXggPVxuICAgICAgICAgICAgYXZhaWxhYmxlUm91dGVzLmluZGV4T2YodGFyZ2V0Um91dGUpICsgMTtcbiAgICAgICAgcmV0dXJuIHRhcmdldFJvdXRlO1xuICAgIH1cblxuICAgIGlzRmlyc3RGb3JtUGFnZSgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmdldEN1cnJlbnRSb3V0ZSh0aGlzLmdldEF2YWlsYWJsZVJvdXRlcygpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuZ2V0TmV4dEF2YWlsYWJsZVJvdXRlKE5hdmlnYXRpb25EaXJlY3Rpb24uQkFDS1dBUkQpID09PSBudWxsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaXNMYXN0Rm9ybVBhZ2UoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5vcmRlcmVkUm91dGVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5nZXRDdXJyZW50Um91dGUodGhpcy5nZXRBdmFpbGFibGVSb3V0ZXMoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5leHRSb3V0ZSA9IHRoaXMuZ2V0TmV4dEF2YWlsYWJsZVJvdXRlKFxuICAgICAgICAgICAgTmF2aWdhdGlvbkRpcmVjdGlvbi5GT1JXQVJEXG4gICAgICAgICk7XG4gICAgICAgIGlmICghbmV4dFJvdXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0Um91dGUuZGF0YS5vcmRlciA9PT0gdGhpcy5nZXRMYXN0Um91dGVPcmRlcigpO1xuICAgIH1cblxuICAgIGdldE5leHRSb3V0ZUluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IG5leHRSb3V0ZSA9IHRoaXMuZ2V0TmV4dEF2YWlsYWJsZVJvdXRlKFxuICAgICAgICAgICAgTmF2aWdhdGlvbkRpcmVjdGlvbi5GT1JXQVJEXG4gICAgICAgICk7XG4gICAgICAgIGlmICghbmV4dFJvdXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0Um91dGUuZGF0YS5kaXNwbGF5SW5kZXg7XG4gICAgfVxuXG4gICAgZ2V0UHJldmlvdXNSb3V0ZUluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzUm91dGUgPSB0aGlzLmdldE5leHRBdmFpbGFibGVSb3V0ZShcbiAgICAgICAgICAgIE5hdmlnYXRpb25EaXJlY3Rpb24uQkFDS1dBUkRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFwcmV2aW91c1JvdXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwcmV2aW91c1JvdXRlLmRhdGEuZGlzcGxheUluZGV4O1xuICAgIH1cblxuICAgIGlzTGluZWFyUm91dGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGluZWFyUm91dGluZztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEN1cnJlbnRSb3V0ZShhdmFpbGFibGVSb3V0ZXM6IFJvdXRlW10pOiBSb3V0ZSB7XG4gICAgICAgIHJldHVybiBhdmFpbGFibGVSb3V0ZXMuZmluZChcbiAgICAgICAgICAgIHJvdXRlID0+IHJvdXRlLmRhdGEub3JkZXIgPT09IHRoaXMuY3VycmVudFJvdXRlT3JkZXJcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZGlyZWN0VG9BdmFpbGFibGVSb3V0ZShcbiAgICAgICAgZGlyZWN0aW9uOiBOYXZpZ2F0aW9uRGlyZWN0aW9uXG4gICAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IHJvdXRlID0gdGhpcy5nZXROZXh0QXZhaWxhYmxlUm91dGUoZGlyZWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVkaXJlY3Qocm91dGUucGF0aCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1JvdXRlQXZhaWxhYmxlKHJvdXRlOiBSb3V0ZSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB7IGNhbkFjdGl2YXRlIH0gPSByb3V0ZTtcbiAgICAgICAgaWYgKCFjYW5BY3RpdmF0ZSB8fCAhY2FuQWN0aXZhdGUubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFsbCB0aGUgZ3VhcmRzIG11c3QgYmUgZXZhbHVhdGVkIHRvIHRydWVcbiAgICAgICAgcmV0dXJuICFjYW5BY3RpdmF0ZS5zb21lKFxuICAgICAgICAgICAgKGd1YXJkRm46IENhbkFjdGl2YXRlRm4pID0+ICF0aGlzLmV2YWx1YXRlR3VhcmQoZ3VhcmRGbilcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV2YWx1YXRlR3VhcmQoZ3VhcmRGbjogQ2FuQWN0aXZhdGVGbik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBndWFyZFJlc3VsdCA9IGd1YXJkRm4odGhpcy5yb3V0ZS5zbmFwc2hvdCwgbnVsbCk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBndWFyZFJlc3VsdCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgJ05vdCBpbXBsZW1lbnRlZDogRHluYW1pYyByb3V0aW5nIGd1YXJkcyBvbmx5IHN1cHBvcnQgYm9vbGVhbiByZXN1bHRzJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBndWFyZFJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZWluZGV4ZSBsZXMgcm91dGVzIHBhciBcIm9yZGVyXCJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcHBsaWNhdGlvblJvdXRlIGFzIHJvdXRlXG4gICAgICogQHJldHVybnMgUm91dGVbXVxuICAgICAqL1xuICAgIHByaXZhdGUgaW5kZXhSb3V0ZXNCeU9yZGVyKGFwcGxpY2F0aW9uUm91dGU6IFJvdXRlKTogUm91dGVbXSB7XG4gICAgICAgIHRoaXMuaXNJbml0ID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3Qgcm91dGVzVG9DcmF3bCA9IGFwcGxpY2F0aW9uUm91dGUuY2hpbGRyZW47XG4gICAgICAgIGlmICghcm91dGVzVG9DcmF3bC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmxhdHRlblJvdXRlcyhyb3V0ZXNUb0NyYXdsKTtcblxuICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuaXNJbml0ID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmbGF0dGVuUm91dGVzKFxuICAgICAgICByb3V0ZXNUb0NyYXdsOiBSb3V0ZVtdLFxuICAgICAgICByZXN1bHQ6IFJvdXRlW10gPSBbXVxuICAgICk6IFJvdXRlW10ge1xuICAgICAgICByb3V0ZXNUb0NyYXdsLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlLmNoaWxkcmVuICYmIHZhbHVlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmxhdHRlblJvdXRlcyh2YWx1ZS5jaGlsZHJlbiwgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCEhdmFsdWUuZGF0YSAmJiAhIXZhbHVlLmRhdGEub3JkZXIpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbdmFsdWUuZGF0YS5vcmRlcl0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEZvY3VzT25QYWdlVGl0bGUoKTogdm9pZCB7XG4gICAgICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgZm9jdXMgaXMgcHJvcGVybHkgc2V0IGFmdGVyIHRoZSBwYWdlIGlzIHVwZGF0ZWQuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFnZS10aXRsZScpO1xuICAgICAgICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgdGl0bGUuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMCk7XG4gICAgfVxufVxuIl19
302
+ }], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.GesdemHandlerService }, { type: i3.GesdemActionRecoveryService }, { type: i1.ActivatedRoute }, { type: i4.Location }, { type: i5.DemandeTransmitInterceptor }]; } });
303
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tbmF2aWdhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLW5hdmlnYXRpb24vZm9laG4tbmF2aWdhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFTM0MsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQU1uRCxNQUFNLENBQU4sSUFBWSxtQkFHWDtBQUhELFdBQVksbUJBQW1CO0lBQzNCLG1FQUFZLENBQUE7SUFDWixzRUFBYSxDQUFBO0FBQ2pCLENBQUMsRUFIVyxtQkFBbUIsS0FBbkIsbUJBQW1CLFFBRzlCO0FBS0QsTUFBTSxPQUFPLHNCQUFzQjtJQVUvQixZQUNZLE1BQWMsRUFDZCxhQUFtQyxFQUNuQywyQkFBd0QsRUFDeEQsS0FBcUIsRUFDckIsUUFBa0IsRUFDbEIsMEJBQXNEO1FBTHRELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxrQkFBYSxHQUFiLGFBQWEsQ0FBc0I7UUFDbkMsZ0NBQTJCLEdBQTNCLDJCQUEyQixDQUE2QjtRQUN4RCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNEI7UUFaMUQsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUNmLGlDQUE0QixHQUE2QixJQUFJLGVBQWUsQ0FDaEYsS0FBSyxDQUNSLENBQUM7UUFDTSxrQkFBYSxHQUFHLElBQUksQ0FBQztJQVMxQixDQUFDO0lBRUosSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLGNBQWMsQ0FBQyxLQUFxQjtRQUNwQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxD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QUksQ0FBQztTQUN0QjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxhQUFhLENBQ2pCLGFBQXNCLEVBQ3RCLFNBQWtCLEVBQUU7UUFFcEIsYUFBYSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMxQixJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUU7Z0JBQ3pDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUM5QztZQUVELElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNwQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7YUFDcEM7WUFFRCxPQUFPLE1BQU0sQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsb0VBQW9FO1FBQ3BFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3BELElBQUksS0FBSyxFQUFFO2dCQUNQLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNqQjtRQUNMLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNWLENBQUM7O29IQTFYUSxzQkFBc0I7d0hBQXRCLHNCQUFzQixjQUZuQixNQUFNOzRGQUVULHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEFjdGl2YXRlZFJvdXRlLFxuICAgIEFjdGl2YXRlZFJvdXRlU25hcHNob3QsXG4gICAgQ2FuQWN0aXZhdGVGbixcbiAgICBQYXJhbXMsXG4gICAgUm91dGUsXG4gICAgUm91dGVyXG59IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgRGVtYW5kZVRyYW5zbWl0SW50ZXJjZXB0b3IgfSBmcm9tICcuLi9mb2Vobi1wYWdlL2ZvZWhuLXRyYW5zbWl0LXdhaXRpbmctbW9kYWwvZGVtYW5kZS10cmFuc21pdC1pbnRlcmNlcHRvcic7XG5pbXBvcnQgeyBHZXNkZW1IYW5kbGVyU2VydmljZSB9IGZyb20gJy4uL2dlc2RlbS9nZXNkZW0taGFuZGxlci5zZXJ2aWNlJztcbmltcG9ydCB7IEdlc2RlbUFjdGlvblJlY292ZXJ5U2VydmljZSB9IGZyb20gJy4uL2dlc2RlbS1hY3Rpb24tcmVjb3ZlcnkvZ2VzZGVtLWFjdGlvbi1yZWNvdmVyeS5zZXJ2aWNlJztcblxuZXhwb3J0IGVudW0gTmF2aWdhdGlvbkRpcmVjdGlvbiB7XG4gICAgRk9SV0FSRCA9ICsxLFxuICAgIEJBQ0tXQVJEID0gLTFcbn1cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGb2Vobk5hdmlnYXRpb25TZXJ2aWNlIHtcbiAgICBjdXJyZW50Um91dGVPcmRlcjogbnVtYmVyO1xuICAgIG9yZGVyZWRSb3V0ZXM6IFJvdXRlW107XG4gICAgcHJpdmF0ZSBfYWN0aXZhdGVkUm91dGU6IEFjdGl2YXRlZFJvdXRlO1xuICAgIHByaXZhdGUgaXNJbml0ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBpbml0aWFsaXplZEFuZFJvdXRlQWN0aXZhdGVkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KFxuICAgICAgICBmYWxzZVxuICAgICk7XG4gICAgcHJpdmF0ZSBsaW5lYXJSb3V0aW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBwcml2YXRlIGdlc2RlbVNlcnZpY2U6IEdlc2RlbUhhbmRsZXJTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGdlc2RlbUFjdGlvblJlY292ZXJ5U2VydmljZTogR2VzZGVtQWN0aW9uUmVjb3ZlcnlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICAgICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICAgICAgIHByaXZhdGUgZGVtYW5kZVRyYW5zbWl0SW50ZXJjZXB0b3I6IERlbWFuZGVUcmFuc21pdEludGVyY2VwdG9yXG4gICAgKSB7fVxuXG4gICAgZ2V0IGluaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc0luaXQ7XG4gICAgfVxuXG4gICAgc2V0IGFjdGl2YXRlZFJvdXRlKHZhbHVlOiBBY3RpdmF0ZWRSb3V0ZSkge1xuICAgICAgICB0aGlzLnRocm93SWZOb3RJbml0KCk7XG4gICAgICAgIHRoaXMuX2FjdGl2YXRlZFJvdXRlID0gdmFsdWU7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZWRBbmRSb3V0ZUFjdGl2YXRlZC5uZXh0KHRydWUpO1xuICAgIH1cblxuICAgIHN0YXRpYyBnZXRSb290Um91dGVSZWN1cnNpdmUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBSb3V0ZSB7XG4gICAgICAgIGlmIChyb3V0ZSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHJvdXRlLnJvdXRlQ29uZmlnICYmXG4gICAgICAgICAgICAgICAgcm91dGUucm91dGVDb25maWcuZGF0YSAmJlxuICAgICAgICAgICAgICAgIHJvdXRlLnJvdXRlQ29uZmlnLmRhdGEucm9vdFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvdXRlLnJvdXRlQ29uZmlnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Um9vdFJvdXRlUmVjdXJzaXZlKHJvdXRlLnBhcmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaW5pdFJvdXRlKHJvdXRlOiBSb3V0ZSk6IHZvaWQge1xuICAgICAgICBpZiAocm91dGUpIHtcbiAgICAgICAgICAgIHRoaXMub3JkZXJlZFJvdXRlcyA9IHRoaXMuaW5kZXhSb3V0ZXNCeU9yZGVyKHJvdXRlKTtcblxuICAgICAgICAgICAgLy8gQnkgZGVmYXVsdCB0aGUgcHJlZml4IHNob3VsZCBiZSB0aGUgcGF0aCBvZiB0aGUgcm91dGUuIChlLmcuIGluIC92YWxpZGF0aW9uLzEyMzEyMy0xMjMyMS9wYWdlMSxcbiAgICAgICAgICAgIC8vIHRoZSBwcmVmaXggaXMgXCJ2YWxpZGF0aW9uXCIpLiBIb3dldmVyLCBpZiB0aGUgYXBwbGljYXRpb24gaXMgY29kZS1zcGxpdHRlZCB3aXRoIHRoZSByb3V0aW5nIGRlZmluZWRcbiAgICAgICAgICAgIC8vIGluIGEgbW9kdWxlLCB0aGlzIHdvbid0IHdvcmsuIEluIHRoaXMgY2FzZSwgeW91IGNhbiBzcGVjaWZ5IHRoZSBwYXRoIGluICQuZGF0YS5iYXNlUGF0aCBzbyB0aGUgR2VzRGVtXG4gICAgICAgICAgICAvLyBzZXJ2aWNlIGtub3dzIHdoZXJlIHRvIHNlbmQgdGhlIHJlcXVlc3QgdG8gdGhlIGJhY2tlbmQuXG4gICAgICAgICAgICBjb25zdCBwcmVmaXggPSByb3V0ZS5kYXRhLmJhc2VQYXRoIHx8IHJvdXRlLnBhdGg7XG4gICAgICAgICAgICB0aGlzLmdlc2RlbVNlcnZpY2UucHJlZml4ID0gcHJlZml4O1xuICAgICAgICAgICAgdGhpcy5nZXNkZW1BY3Rpb25SZWNvdmVyeVNlcnZpY2UucHJlZml4ID0gcHJlZml4O1xuICAgICAgICAgICAgdGhpcy5kZW1hbmRlVHJhbnNtaXRJbnRlcmNlcHRvci5wcmVmaXggPSBwcmVmaXg7XG4gICAgICAgICAgICB0aGlzLmxpbmVhclJvdXRpbmcgPSByb3V0ZS5kYXRhLmxpbmVhclJvdXRpbmcgIT09IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudGhyb3dJZk5vdEluaXQoKTtcbiAgICB9XG5cbiAgICB0aHJvd0lmTm90SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzSW5pdCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICAgICAgICBcIk5vIHJvdXRlIGlzIGlkZW50aWZpZWQgYXMgJ3Jvb3QnLiBIYXZlIHlvdSBjYWxsZWQgaW5pdFJvdXRlKCkgP1wiXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlUm91dGVJbmZvcm1hdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudGhyb3dJZk5vdEluaXQoKTtcbiAgICAgICAgY29uc3QgY3VycmVudFJvdXRlID0gdGhpcy5fYWN0aXZhdGVkUm91dGUucm91dGVDb25maWc7XG5cbiAgICAgICAgbGV0IGN1cnJlbnRSb3V0ZU9yZGVyID0gMTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhIWN1cnJlbnRSb3V0ZSAmJlxuICAgICAgICAgICAgISFjdXJyZW50Um91dGUuZGF0YSAmJlxuICAgICAgICAgICAgISFjdXJyZW50Um91dGUuZGF0YS5vcmRlclxuICAgICAgICApIHtcbiAgICAgICAgICAgIGN1cnJlbnRSb3V0ZU9yZGVyID0gY3VycmVudFJvdXRlLmRhdGEub3JkZXI7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jdXJyZW50Um91dGVPcmRlciA9IGN1cnJlbnRSb3V0ZU9yZGVyO1xuICAgIH1cblxuICAgIGdldEZpcnN0Um91dGUoKTogUm91dGUge1xuICAgICAgICByZXR1cm4gdGhpcy5vcmRlcmVkUm91dGVzWzFdO1xuICAgIH1cblxuICAgIGN1cnJlbnQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHRoaXMudGhyb3dJZk5vdEluaXQoKTtcbiAgICAgICAgaWYgKCF0aGlzLmdlc2RlbVNlcnZpY2UubGFzdFJlc3BvbnNlKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoJ0VycmV1ciBuYXZpZ2F0aW9uU2VydmljZSNjdXJyZW50Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudFJvdXRlID0gdGhpcy5vcmRlcmVkUm91dGVzW3RoaXMuY3VycmVudFJvdXRlT3JkZXJdO1xuXG4gICAgICAgIGNvbnN0IHByZWZpeCA9IHRoaXMuZ2VzZGVtU2VydmljZS5wcmVmaXg7XG4gICAgICAgIGNvbnN0IGNvbW1hbmRzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgICBpZiAocHJlZml4KSB7XG4gICAgICAgICAgICBjb21tYW5kcy5wdXNoKHByZWZpeCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5nZXNkZW1TZXJ2aWNlLmxhc3RSZXNwb25zZS5tZXRhLnJlZmVyZW5jZSkge1xuICAgICAgICAgICAgY29tbWFuZHMucHVzaChcbiAgICAgICAgICAgICAgICB0aGlzLmdlc2RlbVNlcnZpY2UubGFzdFJlc3BvbnNlLm1ldGEucmVmZXJlbmNlLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRSb3V0ZS5wYXRoXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCB0cmVlID0gdGhpcy5yb3V0ZXIuY3JlYXRlVXJsVHJlZShjb21tYW5kcyk7XG4gICAgICAgICAgICBjb25zdCB1cmwgPVxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLnNlcmlhbGl6ZVVybCh0cmVlKSArXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRRdWVyeVBhcmFtc1RvRm9yd2FyZEFzU3RyaW5nKCk7XG4gICAgICAgICAgICB0aGlzLmxvY2F0aW9uLnJlcGxhY2VTdGF0ZSh1cmwpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0cnVlKTtcbiAgICB9XG5cbiAgICBoYXNCZWVuSW5pdGlhbGl6ZWQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxpemVkQW5kUm91dGVBY3RpdmF0ZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgZ2V0UXVlcnlQYXJhbXNUb0ZvcndhcmRBc1N0cmluZygpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmdldFF1ZXJ5UGFyYW1zVG9Gb3J3YXJkKCkgfHwgW107XG4gICAgICAgIGxldCBzdHJpbmdQYXJhbXMgPSAnJztcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocGFyYW1zKSkge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJhbXNba2V5XTtcbiAgICAgICAgICAgIHN0cmluZ1BhcmFtcyArPSBzdHJpbmdQYXJhbXMgPyAnJicgOiAnPyc7XG4gICAgICAgICAgICBzdHJpbmdQYXJhbXMgKz0gYCR7a2V5fT0ke3ZhbHVlfWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0cmluZ1BhcmFtcztcbiAgICB9XG5cbiAgICBnZXRRdWVyeVBhcmFtc1RvRm9yd2FyZCgpOiBQYXJhbXMge1xuICAgICAgICBjb25zdCByZUNhcHRjaGFCeVBhc3NVVUlEID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1xuICAgICAgICAgICAgLnJlQ2FwdGNoYUJ5UGFzc1VVSUQ7XG4gICAgICAgIGNvbnN0IHNjcm9sbFRvID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtcy5zY3JvbGxUbztcbiAgICAgICAgaWYgKCEhcmVDYXB0Y2hhQnlQYXNzVVVJRCB8fCAhIXNjcm9sbFRvKSB7XG4gICAgICAgICAgICBjb25zdCBwYXJhbXM6IFBhcmFtcyA9IHt9O1xuICAgICAgICAgICAgaWYgKCEhcmVDYXB0Y2hhQnlQYXNzVVVJRCkge1xuICAgICAgICAgICAgICAgIHBhcmFtcy5yZUNhcHRjaGFCeVBhc3NVVUlEID0gcmVDYXB0Y2hhQnlQYXNzVVVJRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghIXNjcm9sbFRvKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zLnNjcm9sbFRvID0gc2Nyb2xsVG87XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGFyYW1zO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIG5leHQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHRoaXMudGhyb3dJZk5vdEluaXQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVkaXJlY3RUb0F2YWlsYWJsZVJvdXRlKE5hdmlnYXRpb25EaXJlY3Rpb24uRk9SV0FSRCk7XG4gICAgfVxuXG4gICAgcHJldmlvdXMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHRoaXMudGhyb3dJZk5vdEluaXQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVkaXJlY3RUb0F2YWlsYWJsZVJvdXRlKE5hdmlnYXRpb25EaXJlY3Rpb24uQkFDS1dBUkQpO1xuICAgIH1cblxuICAgIGxhc3QoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHRoaXMudGhyb3dJZk5vdEluaXQoKTtcbiAgICAgICAgY29uc3Qgcm91dGUgPSB0aGlzLmdldEF2YWlsYWJsZVJvdXRlcygpO1xuICAgICAgICBjb25zdCBuZXh0Um91dGVQYXRoID0gcm91dGVbcm91dGUubGVuZ3RoIC0gMV0ucGF0aDtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVkaXJlY3QobmV4dFJvdXRlUGF0aCk7XG4gICAgfVxuXG4gICAgcmVkaXJlY3QobmV3UGF0aDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IHJvdXRlcyA9IFtdO1xuICAgICAgICBpZiAodGhpcy5nZXNkZW1TZXJ2aWNlLnByZWZpeCkge1xuICAgICAgICAgICAgcm91dGVzLnB1c2godGhpcy5nZXNkZW1TZXJ2aWNlLnByZWZpeCk7XG4gICAgICAgIH1cbiAgICAgICAgcm91dGVzLnB1c2godGhpcy5nZXNkZW1TZXJ2aWNlLmxhc3RSZXNwb25zZS5tZXRhLnJlZmVyZW5jZSwgbmV3UGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucm91dGVyXG4gICAgICAgICAgICAubmF2aWdhdGUocm91dGVzLCB7XG4gICAgICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHRoaXMuZ2V0UXVlcnlQYXJhbXNUb0ZvcndhcmQoKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC50aGVuKHN1Y2Nlc3MgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0Rm9jdXNPblBhZ2VUaXRsZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gc3VjY2VzcztcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldEF2YWlsYWJsZVJvdXRlcygpOiBSb3V0ZVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3JkZXJlZFJvdXRlcy5maWx0ZXIocm91dGUgPT4gdGhpcy5pc1JvdXRlQXZhaWxhYmxlKHJvdXRlKSk7XG4gICAgfVxuXG4gICAgZ2V0Q3VycmVudFJvdXRlSW5kZXgoKTogbnVtYmVyIHtcbiAgICAgICAgLy8gVGhpcyBldmFsdWF0ZXMgYWxsIHRoZSBndWFyZHNcbiAgICAgICAgY29uc3QgYXZhaWxhYmxlUm91dGVzID0gdGhpcy5nZXRBdmFpbGFibGVSb3V0ZXMoKTtcblxuICAgICAgICBjb25zdCBjdXJyZW50Um91dGUgPSBhdmFpbGFibGVSb3V0ZXMuZmluZChcbiAgICAgICAgICAgIHJvdXRlID0+IHJvdXRlLmRhdGEub3JkZXIgPT09IHRoaXMuY3VycmVudFJvdXRlT3JkZXJcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoIWN1cnJlbnRSb3V0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYXZhaWxhYmxlUm91dGVzLmluZGV4T2YoY3VycmVudFJvdXRlKTtcbiAgICB9XG5cbiAgICBnZXRUb3RhbFJvdXRlc1NpemUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QXZhaWxhYmxlUm91dGVzKCkubGVuZ3RoO1xuICAgIH1cblxuICAgIGdldExhc3RSb3V0ZU9yZGVyKCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHJvdXRlcyA9IHRoaXMuZ2V0QXZhaWxhYmxlUm91dGVzKCk7XG4gICAgICAgIHJldHVybiByb3V0ZXNbcm91dGVzLmxlbmd0aCAtIDFdLmRhdGEub3JkZXI7XG4gICAgfVxuXG4gICAgZ2V0TmV4dEF2YWlsYWJsZVJvdXRlKGRpcmVjdGlvbjogTmF2aWdhdGlvbkRpcmVjdGlvbik6IFJvdXRlIHtcbiAgICAgICAgLy8gVGhpcyBldmFsdWF0ZXMgYWxsIHRoZSBndWFyZHNcbiAgICAgICAgY29uc3QgYXZhaWxhYmxlUm91dGVzID0gdGhpcy5nZXRBdmFpbGFibGVSb3V0ZXMoKTtcblxuICAgICAgICAvLyBBc3N1bWVzIHRoYXQgdGhlIG5leHQgb3IgcHJldmlvdXMgcm91dGUgaXMgdGhlIG5leHQgb3IgcHJldmlvdXMgb24gdGhlIGFycmF5IG9mIGF2YWlsYWJsZSByb3V0ZXMuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRSb3V0ZSA9IHRoaXMuZ2V0Q3VycmVudFJvdXRlKGF2YWlsYWJsZVJvdXRlcyk7XG4gICAgICAgIGlmICghY3VycmVudFJvdXRlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgJ0ludmFsaWQgcm91dGluZywgYXQgbGVhc3Qgb25lIHJvdXRlIG11c3QgYmUgYXZhaWxhYmxlJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRSb3V0ZUluZGV4ID0gYXZhaWxhYmxlUm91dGVzLmluZGV4T2YoY3VycmVudFJvdXRlKTtcbiAgICAgICAgY29uc3QgdGFyZ2V0Um91dGUgPSBhdmFpbGFibGVSb3V0ZXNbY3VycmVudFJvdXRlSW5kZXggKyBkaXJlY3Rpb25dO1xuICAgICAgICBpZiAoIXRhcmdldFJvdXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBkaXNwbGF5IGluZGV4IGlzbid0IGFsd2F5cyB0aGUgcm91dGUgb3JkZXIgYXMgd2Ugc3VwcG9ydCBndWFyZHMgb24gYXZhaWxhYmxlIHJvdXRlcy5cbiAgICAgICAgLy8gVGhlIGRpc3BsYXkgaW5kZXggaXMgMS1iYXNlZC5cbiAgICAgICAgdGFyZ2V0Um91dGUuZGF0YS5kaXNwbGF5SW5kZXggPVxuICAgICAgICAgICAgYXZhaWxhYmxlUm91dGVzLmluZGV4T2YodGFyZ2V0Um91dGUpICsgMTtcbiAgICAgICAgcmV0dXJuIHRhcmdldFJvdXRlO1xuICAgIH1cblxuICAgIGlzRmlyc3RGb3JtUGFnZSgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmdldEN1cnJlbnRSb3V0ZSh0aGlzLmdldEF2YWlsYWJsZVJvdXRlcygpKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIHRoaXMuZ2V0TmV4dEF2YWlsYWJsZVJvdXRlKE5hdmlnYXRpb25EaXJlY3Rpb24uQkFDS1dBUkQpID09PSBudWxsXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaXNMYXN0Rm9ybVBhZ2UoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5vcmRlcmVkUm91dGVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5nZXRDdXJyZW50Um91dGUodGhpcy5nZXRBdmFpbGFibGVSb3V0ZXMoKSkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5leHRSb3V0ZSA9IHRoaXMuZ2V0TmV4dEF2YWlsYWJsZVJvdXRlKFxuICAgICAgICAgICAgTmF2aWdhdGlvbkRpcmVjdGlvbi5GT1JXQVJEXG4gICAgICAgICk7XG4gICAgICAgIGlmICghbmV4dFJvdXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0Um91dGUuZGF0YS5vcmRlciA9PT0gdGhpcy5nZXRMYXN0Um91dGVPcmRlcigpO1xuICAgIH1cblxuICAgIGdldE5leHRSb3V0ZUluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IG5leHRSb3V0ZSA9IHRoaXMuZ2V0TmV4dEF2YWlsYWJsZVJvdXRlKFxuICAgICAgICAgICAgTmF2aWdhdGlvbkRpcmVjdGlvbi5GT1JXQVJEXG4gICAgICAgICk7XG4gICAgICAgIGlmICghbmV4dFJvdXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBuZXh0Um91dGUuZGF0YS5kaXNwbGF5SW5kZXg7XG4gICAgfVxuXG4gICAgZ2V0UHJldmlvdXNSb3V0ZUluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzUm91dGUgPSB0aGlzLmdldE5leHRBdmFpbGFibGVSb3V0ZShcbiAgICAgICAgICAgIE5hdmlnYXRpb25EaXJlY3Rpb24uQkFDS1dBUkRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFwcmV2aW91c1JvdXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwcmV2aW91c1JvdXRlLmRhdGEuZGlzcGxheUluZGV4O1xuICAgIH1cblxuICAgIGlzTGluZWFyUm91dGluZygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubGluZWFyUm91dGluZztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEN1cnJlbnRSb3V0ZShhdmFpbGFibGVSb3V0ZXM6IFJvdXRlW10pOiBSb3V0ZSB7XG4gICAgICAgIHJldHVybiBhdmFpbGFibGVSb3V0ZXMuZmluZChcbiAgICAgICAgICAgIHJvdXRlID0+IHJvdXRlLmRhdGEub3JkZXIgPT09IHRoaXMuY3VycmVudFJvdXRlT3JkZXJcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZGlyZWN0VG9BdmFpbGFibGVSb3V0ZShcbiAgICAgICAgZGlyZWN0aW9uOiBOYXZpZ2F0aW9uRGlyZWN0aW9uXG4gICAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IHJvdXRlID0gdGhpcy5nZXROZXh0QXZhaWxhYmxlUm91dGUoZGlyZWN0aW9uKTtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVkaXJlY3Qocm91dGUucGF0aCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1JvdXRlQXZhaWxhYmxlKHJvdXRlOiBSb3V0ZSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB7IGNhbkFjdGl2YXRlIH0gPSByb3V0ZTtcbiAgICAgICAgaWYgKCFjYW5BY3RpdmF0ZSB8fCAhY2FuQWN0aXZhdGUubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFsbCB0aGUgZ3VhcmRzIG11c3QgYmUgZXZhbHVhdGVkIHRvIHRydWVcbiAgICAgICAgcmV0dXJuICFjYW5BY3RpdmF0ZS5zb21lKFxuICAgICAgICAgICAgKGd1YXJkRm46IENhbkFjdGl2YXRlRm4pID0+ICF0aGlzLmV2YWx1YXRlR3VhcmQoZ3VhcmRGbilcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGV2YWx1YXRlR3VhcmQoZ3VhcmRGbjogQ2FuQWN0aXZhdGVGbik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBndWFyZFJlc3VsdCA9IGd1YXJkRm4odGhpcy5yb3V0ZS5zbmFwc2hvdCwgbnVsbCk7XG5cbiAgICAgICAgaWYgKHR5cGVvZiBndWFyZFJlc3VsdCAhPT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgJ05vdCBpbXBsZW1lbnRlZDogRHluYW1pYyByb3V0aW5nIGd1YXJkcyBvbmx5IHN1cHBvcnQgYm9vbGVhbiByZXN1bHRzJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBndWFyZFJlc3VsdDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZWluZGV4ZSBsZXMgcm91dGVzIHBhciBcIm9yZGVyXCJcbiAgICAgKlxuICAgICAqIEBwYXJhbSBhcHBsaWNhdGlvblJvdXRlIGFzIHJvdXRlXG4gICAgICogQHJldHVybnMgUm91dGVbXVxuICAgICAqL1xuICAgIHByaXZhdGUgaW5kZXhSb3V0ZXNCeU9yZGVyKGFwcGxpY2F0aW9uUm91dGU6IFJvdXRlKTogUm91dGVbXSB7XG4gICAgICAgIHRoaXMuaXNJbml0ID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3Qgcm91dGVzVG9DcmF3bCA9IGFwcGxpY2F0aW9uUm91dGUuY2hpbGRyZW47XG4gICAgICAgIGlmICghcm91dGVzVG9DcmF3bC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmxhdHRlblJvdXRlcyhyb3V0ZXNUb0NyYXdsKTtcblxuICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuaXNJbml0ID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmbGF0dGVuUm91dGVzKFxuICAgICAgICByb3V0ZXNUb0NyYXdsOiBSb3V0ZVtdLFxuICAgICAgICByZXN1bHQ6IFJvdXRlW10gPSBbXVxuICAgICk6IFJvdXRlW10ge1xuICAgICAgICByb3V0ZXNUb0NyYXdsLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlLmNoaWxkcmVuICYmIHZhbHVlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZmxhdHRlblJvdXRlcyh2YWx1ZS5jaGlsZHJlbiwgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCEhdmFsdWUuZGF0YSAmJiAhIXZhbHVlLmRhdGEub3JkZXIpIHtcbiAgICAgICAgICAgICAgICByZXN1bHRbdmFsdWUuZGF0YS5vcmRlcl0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEZvY3VzT25QYWdlVGl0bGUoKTogdm9pZCB7XG4gICAgICAgIC8vIEVuc3VyZXMgdGhhdCB0aGUgZm9jdXMgaXMgcHJvcGVybHkgc2V0IGFmdGVyIHRoZSBwYWdlIGlzIHVwZGF0ZWQuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFnZS10aXRsZScpO1xuICAgICAgICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgdGl0bGUuZm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMCk7XG4gICAgfVxufVxuIl19
@@ -139,9 +139,9 @@ export class FoehnPageExpirationTimerComponent {
139
139
  }
140
140
  }
141
141
  FoehnPageExpirationTimerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FoehnPageExpirationTimerComponent, deps: [{ token: i1.ApplicationInfoService }, { token: i2.SdkDictionaryService }], target: i0.ɵɵFactoryTarget.Component });
142
- FoehnPageExpirationTimerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FoehnPageExpirationTimerComponent, selector: "foehn-page-expiration-timer", ngImport: i0, template: "<div\n *ngIf=\"applicationInfoRetrieved | async\"\n class=\"sticky-top alert text-center my-0\"\n [class.alert-warning]=\"(sessionExpired | async) === false\"\n [class.alert-danger]=\"(sessionExpired | async) === true\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n>\n <div\n *ngIf=\"(sessionExpired | async) === false\"\n [innerHTML]=\"\n 'foehn-page-expiration-timer.count-down-message'\n | fromDictionary\n : { countDownValue: countDownTimeToDisplay | async }\n \"\n ></div>\n <div\n *ngIf=\"(sessionExpired | async) === true\"\n [innerHTML]=\"\n 'foehn-page-expiration-timer.expired-message' | fromDictionary\n \"\n ></div>\n</div>\n\n<p class=\"sr-only\" aria-live=\"assertive\" aria-atomic=\"true\">\n {{ srAnnouncements | async }}\n</p>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.SdkDictionaryPipe, name: "fromDictionary" }] });
142
+ FoehnPageExpirationTimerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FoehnPageExpirationTimerComponent, selector: "foehn-page-expiration-timer", ngImport: i0, template: "<div\n *ngIf=\"applicationInfoRetrieved | async\"\n id=\"foehn-page-expiration-timer\"\n class=\"sticky-top alert text-center my-0\"\n [class.alert-warning]=\"(sessionExpired | async) === false\"\n [class.alert-danger]=\"(sessionExpired | async) === true\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n>\n <div\n *ngIf=\"(sessionExpired | async) === false\"\n [innerHTML]=\"\n 'foehn-page-expiration-timer.count-down-message'\n | fromDictionary\n : { countDownValue: countDownTimeToDisplay | async }\n \"\n ></div>\n <div\n *ngIf=\"(sessionExpired | async) === true\"\n [innerHTML]=\"\n 'foehn-page-expiration-timer.expired-message' | fromDictionary\n \"\n ></div>\n</div>\n\n<p class=\"sr-only\" aria-live=\"assertive\" aria-atomic=\"true\">\n {{ srAnnouncements | async }}\n</p>\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.SdkDictionaryPipe, name: "fromDictionary" }] });
143
143
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FoehnPageExpirationTimerComponent, decorators: [{
144
144
  type: Component,
145
- args: [{ selector: 'foehn-page-expiration-timer', template: "<div\n *ngIf=\"applicationInfoRetrieved | async\"\n class=\"sticky-top alert text-center my-0\"\n [class.alert-warning]=\"(sessionExpired | async) === false\"\n [class.alert-danger]=\"(sessionExpired | async) === true\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n>\n <div\n *ngIf=\"(sessionExpired | async) === false\"\n [innerHTML]=\"\n 'foehn-page-expiration-timer.count-down-message'\n | fromDictionary\n : { countDownValue: countDownTimeToDisplay | async }\n \"\n ></div>\n <div\n *ngIf=\"(sessionExpired | async) === true\"\n [innerHTML]=\"\n 'foehn-page-expiration-timer.expired-message' | fromDictionary\n \"\n ></div>\n</div>\n\n<p class=\"sr-only\" aria-live=\"assertive\" aria-atomic=\"true\">\n {{ srAnnouncements | async }}\n</p>\n" }]
145
+ args: [{ selector: 'foehn-page-expiration-timer', template: "<div\n *ngIf=\"applicationInfoRetrieved | async\"\n id=\"foehn-page-expiration-timer\"\n class=\"sticky-top alert text-center my-0\"\n [class.alert-warning]=\"(sessionExpired | async) === false\"\n [class.alert-danger]=\"(sessionExpired | async) === true\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n>\n <div\n *ngIf=\"(sessionExpired | async) === false\"\n [innerHTML]=\"\n 'foehn-page-expiration-timer.count-down-message'\n | fromDictionary\n : { countDownValue: countDownTimeToDisplay | async }\n \"\n ></div>\n <div\n *ngIf=\"(sessionExpired | async) === true\"\n [innerHTML]=\"\n 'foehn-page-expiration-timer.expired-message' | fromDictionary\n \"\n ></div>\n</div>\n\n<p class=\"sr-only\" aria-live=\"assertive\" aria-atomic=\"true\">\n {{ srAnnouncements | async }}\n</p>\n" }]
146
146
  }], ctorParameters: function () { return [{ type: i1.ApplicationInfoService }, { type: i2.SdkDictionaryService }]; } });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1wYWdlL2ZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lci9mb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLXBhZ2UvZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyL2ZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7QUFNeEQsTUFBTSxPQUFPLGlDQUFpQztJQW9CMUMsWUFDWSxzQkFBOEMsRUFDOUMsaUJBQXVDO1FBRHZDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQWYzQywyQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUMzRCxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN4RCwyQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUl6RCxlQUFVLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUVyQiw0QkFBdUIsR0FBRyxJQUFJ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R0FBRyxJQUFJLENBQUMsK0JBQStCLENBQzVDLEtBQUssRUFDTCxPQUFPLEVBQ1AsT0FBTyxDQUNWLENBQUM7WUFDRixJQUFJLENBQUMsaUJBQWlCLENBQ2xCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQzdCLHdEQUF3RCxFQUN4RCxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FDMUIsQ0FDSixDQUFDO1lBQ0YsT0FBTztTQUNWO1FBQ0Qsb0NBQW9DO1FBQ3BDLElBQ0ksYUFBYSxJQUFJLGdCQUFnQjtZQUNqQyxhQUFhLEdBQUcsZ0JBQWdCLEtBQUssQ0FBQyxFQUN4QztZQUNFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQywrQkFBK0IsQ0FDNUMsS0FBSyxFQUNMLE9BQU8sRUFDUCxPQUFPLENBQ1YsQ0FBQztZQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FDN0Isd0RBQXdELEVBQ3hELEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxDQUMxQixDQUNKLENBQUM7WUFDRixPQUFPO1NBQ1Y7SUFDTCxDQUFDOzsrSEFoUFEsaUNBQWlDO21IQUFqQyxpQ0FBaUMsbUVDYjlDLDIyQkEyQkE7NEZEZGEsaUNBQWlDO2tCQUo3QyxTQUFTOytCQUNJLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHNoYXJlUmVwbGF5LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNka0RpY3Rpb25hcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25JbmZvIH0gZnJvbSAnLi4vLi4vc2RrLWFwcGluZm8vYXBwbGljYXRpb24taW5mbyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2RrLWFwcGluZm8vYXBwbGljYXRpb24taW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVIZWxwZXIgfSBmcm9tICcuLi8uLi9zZGstZGF0ZS9kYXRlLmhlbHBlcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBGb2VoblBhZ2VFeHBpcmF0aW9uVGltZXJDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgYXBwbGljYXRpb25JbmZvUmV0cmlldmVkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGNvdW50RG93blRpbWVUb0Rpc3BsYXk6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICBzZXNzaW9uRXhwaXJlZDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBzckFubm91bmNlbWVudHM6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAgIHByaXZhdGUgY291bnREb3duVGltZUluU2Vjb25kcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPihudWxsKTtcbiAgICBwcml2YXRlIHNlc3Npb25IYXNFeHBpcmVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBzckFubm91bmNlbWVudHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBpbnRlcnZhbDogYW55O1xuICAgIHByaXZhdGUgZGF0ZUhlbHBlciA9IG5ldyBEYXRlSGVscGVyKCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IFBVTExJTkdfSU5fTUlMTElTRUNPTkRTID0gMTAwMDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgc3JBbm5vdW5jZW1lbnRDbGVhclRpbWVyOiBhbnk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBTUl9BTk5PVU5DRU1FTlRfQ0xFQVJfVElNRU9VVF9JTlRFUlZBTF9NUyA9IDIwMDA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhcHBsaWNhdGlvbkluZm9TZXJ2aWNlOiBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRpY3Rpb25hcnlTZXJ2aWNlOiBTZGtEaWN0aW9uYXJ5U2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLnNlc3Npb25FeHBpcmVkID0gdGhpcy5zZXNzaW9uSGFzRXhwaXJlZFxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZShzaGFyZVJlcGxheSgxKSk7XG5cbiAgICAgICAgdGhpcy5zckFubm91bmNlbWVudHMgPSB0aGlzLnNyQW5ub3VuY2VtZW50c1N1YmplY3RcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDApKTsgLy8gZGVib3VuY2VUaW1lIHRvIFwiYXZvaWQgZXhwcmVzc2lvbiBoYXMgY2hhbmdlcyBiZWZvcmUuLi5cIlxuXG4gICAgICAgIHRoaXMuY291bnREb3duVGltZVRvRGlzcGxheSA9IHRoaXMuY291bnREb3duVGltZUluU2Vjb25kc1xuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoY291bnREb3duVGltZUluU2Vjb25kcyA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25IYXNFeHBpcmVkLm5leHQoY291bnREb3duVGltZUluU2Vjb25kcyA9PT0gMClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIG1hcChjb3VudERvd25UaW1lSW5TZWNvbmRzID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0VGltZShjb3VudERvd25UaW1lSW5TZWNvbmRzKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5hcHBsaWNhdGlvbkluZm9SZXRyaWV2ZWQgPSB0aGlzLmFwcGxpY2F0aW9uSW5mb1NlcnZpY2UuZGF0YS5waXBlKFxuICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgIChpbmZvOiBBcHBsaWNhdGlvbkluZm8pID0+XG4gICAgICAgICAgICAgICAgICAgIGluZm8uY29uZmlndXJhdGlvbi5zZXNzaW9uLm1lc3NhZ2VEZWxheUluTWludXRlc1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZpbHRlcihtZXNzYWdlRGVsYXlJbk1pbnV0ZXMgPT4gISFtZXNzYWdlRGVsYXlJbk1pbnV0ZXMpLFxuICAgICAgICAgICAgdGFwKG1lc3NhZ2VEZWxheUluTWludXRlcyA9PlxuICAgICAgICAgICAgICAgIHRoaXMuY291bnREb3duVGltZUluU2Vjb25kcy5uZXh0KG1lc3NhZ2VEZWxheUluTWludXRlcyAqIDYwKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiB0cnVlKSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0YXJ0VGltZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGFydFRpbWVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgbGV0IHRpbWUgPSB0aGlzLmNvdW50RG93blRpbWVJblNlY29uZHMuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgIGlmICh0aW1lID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGltZSAtPSAxO1xuICAgICAgICAgICAgdGhpcy5jb3VudERvd25UaW1lSW5TZWNvbmRzLm5leHQodGltZSk7XG4gICAgICAgIH0sIHRoaXMuUFVMTElOR19JTl9NSUxMSVNFQ09ORFMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJUaW1lcigpOiB2b2lkIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcm1hdFRpbWUodGltZUluU2Vjb25kczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKHRpbWVJblNlY29uZHMgLyAoNjAgKiA2MCkpO1xuXG4gICAgICAgIGNvbnN0IGRpdmlzb3JfZm9yX21pbnV0ZXMgPSB0aW1lSW5TZWNvbmRzICUgKDYwICogNjApO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcihkaXZpc29yX2Zvcl9taW51dGVzIC8gNjApO1xuXG4gICAgICAgIGNvbnN0IGRpdmlzb3JfZm9yX3NlY29uZHMgPSBkaXZpc29yX2Zvcl9taW51dGVzICUgNjA7XG4gICAgICAgIGNvbnN0IHNlY29uZHMgPSBNYXRoLmNlaWwoZGl2aXNvcl9mb3Jfc2Vjb25kcyk7XG5cbiAgICAgICAgdGhpcy5tYW5hZ2VTY3JlZW5SZWFkZXJBbm5vdW5jZW1lbnQoXG4gICAgICAgICAgICB0aW1lSW5TZWNvbmRzLFxuICAgICAgICAgICAgaG91cnMsXG4gICAgICAgICAgICBtaW51dGVzLFxuICAgICAgICAgICAgc2Vjb25kc1xuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGxlZnRQYWRIb3VycyA9IHRoaXMuZGF0ZUhlbHBlci5sZWZ0UGFkKGhvdXJzLnRvU3RyaW5nKCkpO1xuICAgICAgICBjb25zdCBsZWZ0UGFkTWludXRlcyA9IHRoaXMuZGF0ZUhlbHBlci5sZWZ0UGFkKG1pbnV0ZXMudG9TdHJpbmcoKSk7XG5cbiAgICAgICAgY29uc3QgbGVmdFBhZFNlY29uZHMgPSB0aGlzLmRhdGVIZWxwZXIubGVmdFBhZChzZWNvbmRzLnRvU3RyaW5nKCkpO1xuICAgICAgICByZXR1cm4gYCR7bGVmdFBhZEhvdXJzfToke2xlZnRQYWRNaW51dGVzfToke2xlZnRQYWRTZWNvbmRzfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhbm5vdW5jZVNyTWVzc2FnZShtc2c6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zckFubm91bmNlbWVudENsZWFyVGltZXIpO1xuICAgICAgICB0aGlzLnNyQW5ub3VuY2VtZW50c1N1YmplY3QubmV4dChtc2cpO1xuXG4gICAgICAgIHRoaXMuc3JBbm5vdW5jZW1lbnRDbGVhclRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNyQW5ub3VuY2VtZW50c1N1YmplY3QubmV4dCgnJyk7XG4gICAgICAgIH0sIHRoaXMuU1JfQU5OT1VOQ0VNRU5UX0NMRUFSX1RJTUVPVVRfSU5URVJWQUxfTVMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UmVhZGFibGVUaW1lckZvclNjcmVlblJlYWRlcihcbiAgICAgICAgaG91cnM6IG51bWJlcixcbiAgICAgICAgbWludXRlczogbnVtYmVyLFxuICAgICAgICBzZWNvbmRzOiBudW1iZXJcbiAgICApOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWhvdXJzICYmICFtaW51dGVzICYmICFzZWNvbmRzKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEhaG91cnMgJiYgIW1pbnV0ZXMgJiYgIXNlY29uZHMpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtob3Vyc30gaGV1cmVzYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISFtaW51dGVzICYmICFob3VycyAmJiAhc2Vjb25kcykge1xuICAgICAgICAgICAgcmV0dXJuIGAke21pbnV0ZXN9IG1pbnV0ZXNgO1xuICAgICAgICB9XG4gICAgICAgIGlmICghIXNlY29uZHMgJiYgIW1pbnV0ZXMgJiYgIWhvdXJzKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7c2Vjb25kc30gc2Vjb25kZXNgO1xuICAgICAgICB9XG4gICAgICAgIGlmICghIWhvdXJzICYmICEhbWludXRlcyAmJiAhIXNlY29uZHMpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtob3Vyc30gaGV1cmVzICR7bWludXRlc30gbWludXRlcyBldCAke3NlY29uZHN9IHNlY29uZGVzYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISFob3VycyAmJiAhIW1pbnV0ZXMgJiYgIXNlY29uZHMpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtob3Vyc30gaGV1cmVzIGV0ICR7bWludXRlc30gbWludXRlc2A7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEhaG91cnMgJiYgISFzZWNvbmRzICYmICFtaW51dGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7aG91cnN9IGhldXJlcyBldCAke3NlY29uZHN9IHNlY29uZGVzYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISFtaW51dGVzICYmICEhc2Vjb25kcyAmJiAhaG91cnMpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHttaW51dGVzfSBtaW51dGVzIGV0ICR7c2Vjb25kc30gc2Vjb25kZXNgO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYW5hZ2VTY3JlZW5SZWFkZXJBbm5vdW5jZW1lbnQoXG4gICAgICAgIHRpbWVJblNlY29uZHM6IG51bWJlcixcbiAgICAgICAgaG91cnM6IG51bWJlcixcbiAgICAgICAgbWludXRlczogbnVtYmVyLFxuICAgICAgICBzZWNvbmRzOiBudW1iZXJcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgXzFfaG91ckluU2Vjb25kcyA9IDYwICogNjA7XG4gICAgICAgIGNvbnN0IF81X21pbnV0ZXNJblNlY29uZHMgPSA1ICogNjA7XG4gICAgICAgIGNvbnN0IF8xMF9taW51dGVzSW5TZWNvbmRzID0gMTAgKiA2MDtcbiAgICAgICAgY29uc3QgXzFfbWludXRlSW5TZWNvbmRzID0gNjA7XG4gICAgICAgIGNvbnN0IF8yX21pbnV0ZUluU2Vjb25kcyA9IDIgKiA2MDtcblxuICAgICAgICAvLyBXaGVuIGZpbmlzaGVkLCBkaXNwbGF5IGV4cGlyZWQgbWVzc2FnZVxuICAgICAgICBpZiAodGltZUluU2Vjb25kcyA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zckFubm91bmNlbWVudHNTdWJqZWN0Lm5leHQoXG4gICAgICAgICAgICAgICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyLmV4cGlyZWQtbWVzc2FnZS5zci1vbmx5J1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gRXZlcnkgc2Vjb25kIGZvciB0aGUgbGFzdCAxNXNcbiAgICAgICAgaWYgKHRpbWVJblNlY29uZHMgPD0gMTUpIHtcbiAgICAgICAgICAgIHRoaXMuc3JBbm5vdW5jZW1lbnRzU3ViamVjdC5uZXh0KHRpbWVJblNlY29uZHMudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gRXZlcnkgMzBzIHdoZW4gbGVzcyB0aGFuIDIgbWludXRlc1xuICAgICAgICBpZiAodGltZUluU2Vjb25kcyA8PSBfMl9taW51dGVJblNlY29uZHMgJiYgdGltZUluU2Vjb25kcyAlIDMwID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBtc2cgPSB0aGlzLmdldFJlYWRhYmxlVGltZXJGb3JTY3JlZW5SZWFkZXIoXG4gICAgICAgICAgICAgICAgaG91cnMsXG4gICAgICAgICAgICAgICAgbWludXRlcyxcbiAgICAgICAgICAgICAgICBzZWNvbmRzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5hbm5vdW5jZVNyTWVzc2FnZShcbiAgICAgICAgICAgICAgICB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXIuY291bnQtZG93bi1tZXNzYWdlLnNyLW9ubHknLFxuICAgICAgICAgICAgICAgICAgICB7IGNvdW50RG93blZhbHVlOiBtc2cgfVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gRXZlcnkgbWludXRlIGZvciB0aGUgbGFzdCA1IG1pbnV0ZXNcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGltZUluU2Vjb25kcyA8PSBfNV9taW51dGVzSW5TZWNvbmRzICYmXG4gICAgICAgICAgICB0aW1lSW5TZWNvbmRzICUgXzFfbWludXRlSW5TZWNvbmRzID09PSAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gdGhpcy5nZXRSZWFkYWJsZVRpbWVyRm9yU2NyZWVuUmVhZGVyKFxuICAgICAgICAgICAgICAgIGhvdXJzLFxuICAgICAgICAgICAgICAgIG1pbnV0ZXMsXG4gICAgICAgICAgICAgICAgc2Vjb25kc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuYW5ub3VuY2VTck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyLmNvdW50LWRvd24tbWVzc2FnZS5zci1vbmx5JyxcbiAgICAgICAgICAgICAgICAgICAgeyBjb3VudERvd25WYWx1ZTogbXNnIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IDEwIG1pbnV0ZXMgd2hlbiBsZXNzIHRoYW4gYW4gaG91clxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aW1lSW5TZWNvbmRzIDwgXzFfaG91ckluU2Vjb25kcyAmJlxuICAgICAgICAgICAgdGltZUluU2Vjb25kcyAlIF8xMF9taW51dGVzSW5TZWNvbmRzID09PSAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gdGhpcy5nZXRSZWFkYWJsZVRpbWVyRm9yU2NyZWVuUmVhZGVyKFxuICAgICAgICAgICAgICAgIGhvdXJzLFxuICAgICAgICAgICAgICAgIG1pbnV0ZXMsXG4gICAgICAgICAgICAgICAgc2Vjb25kc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuYW5ub3VuY2VTck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyLmNvdW50LWRvd24tbWVzc2FnZS5zci1vbmx5JyxcbiAgICAgICAgICAgICAgICAgICAgeyBjb3VudERvd25WYWx1ZTogbXNnIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IGhvdXIgd2hlbiBtb3JlIHRoYW4gYW4gaG91clxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aW1lSW5TZWNvbmRzID49IF8xX2hvdXJJblNlY29uZHMgJiZcbiAgICAgICAgICAgIHRpbWVJblNlY29uZHMgJSBfMV9ob3VySW5TZWNvbmRzID09PSAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gdGhpcy5nZXRSZWFkYWJsZVRpbWVyRm9yU2NyZWVuUmVhZGVyKFxuICAgICAgICAgICAgICAgIGhvdXJzLFxuICAgICAgICAgICAgICAgIG1pbnV0ZXMsXG4gICAgICAgICAgICAgICAgc2Vjb25kc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuYW5ub3VuY2VTck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyLmNvdW50LWRvd24tbWVzc2FnZS5zci1vbmx5JyxcbiAgICAgICAgICAgICAgICAgICAgeyBjb3VudERvd25WYWx1ZTogbXNnIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdlxuICAgICpuZ0lmPVwiYXBwbGljYXRpb25JbmZvUmV0cmlldmVkIHwgYXN5bmNcIlxuICAgIGNsYXNzPVwic3RpY2t5LXRvcCBhbGVydCB0ZXh0LWNlbnRlciBteS0wXCJcbiAgICBbY2xhc3MuYWxlcnQtd2FybmluZ109XCIoc2Vzc2lvbkV4cGlyZWQgfCBhc3luYykgPT09IGZhbHNlXCJcbiAgICBbY2xhc3MuYWxlcnQtZGFuZ2VyXT1cIihzZXNzaW9uRXhwaXJlZCB8IGFzeW5jKSA9PT0gdHJ1ZVwiXG4gICAgdGFiaW5kZXg9XCItMVwiXG4gICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbj5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiKHNlc3Npb25FeHBpcmVkIHwgYXN5bmMpID09PSBmYWxzZVwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAnZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyLmNvdW50LWRvd24tbWVzc2FnZSdcbiAgICAgICAgICAgICAgICB8IGZyb21EaWN0aW9uYXJ5XG4gICAgICAgICAgICAgICAgICAgIDogeyBjb3VudERvd25WYWx1ZTogY291bnREb3duVGltZVRvRGlzcGxheSB8IGFzeW5jIH1cbiAgICAgICAgXCJcbiAgICA+PC9kaXY+XG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cIihzZXNzaW9uRXhwaXJlZCB8IGFzeW5jKSA9PT0gdHJ1ZVwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAnZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyLmV4cGlyZWQtbWVzc2FnZScgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICBcIlxuICAgID48L2Rpdj5cbjwvZGl2PlxuXG48cCBjbGFzcz1cInNyLW9ubHlcIiBhcmlhLWxpdmU9XCJhc3NlcnRpdmVcIiBhcmlhLWF0b21pYz1cInRydWVcIj5cbiAgICB7eyBzckFubm91bmNlbWVudHMgfCBhc3luYyB9fVxuPC9wPlxuIl19
147
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1wYWdlL2ZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lci9mb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLXBhZ2UvZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyL2ZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFLN0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOzs7Ozs7QUFNeEQsTUFBTSxPQUFPLGlDQUFpQztJQW9CMUMsWUFDWSxzQkFBOEMsRUFDOUMsaUJBQXVDO1FBRHZDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQWYzQywyQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBUyxJQUFJLENBQUMsQ0FBQztRQUMzRCxzQkFBaUIsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN4RCwyQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUl6RCxlQUFVLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUVyQiw0QkFBdUIsR0FBRyxJQUFJ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R0FBRyxJQUFJLENBQUMsK0JBQStCLENBQzVDLEtBQUssRUFDTCxPQUFPLEVBQ1AsT0FBTyxDQUNWLENBQUM7WUFDRixJQUFJLENBQUMsaUJBQWlCLENBQ2xCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQzdCLHdEQUF3RCxFQUN4RCxFQUFFLGNBQWMsRUFBRSxHQUFHLEVBQUUsQ0FDMUIsQ0FDSixDQUFDO1lBQ0YsT0FBTztTQUNWO1FBQ0Qsb0NBQW9DO1FBQ3BDLElBQ0ksYUFBYSxJQUFJLGdCQUFnQjtZQUNqQyxhQUFhLEdBQUcsZ0JBQWdCLEtBQUssQ0FBQyxFQUN4QztZQUNFLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQywrQkFBK0IsQ0FDNUMsS0FBSyxFQUNMLE9BQU8sRUFDUCxPQUFPLENBQ1YsQ0FBQztZQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FDbEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FDN0Isd0RBQXdELEVBQ3hELEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxDQUMxQixDQUNKLENBQUM7WUFDRixPQUFPO1NBQ1Y7SUFDTCxDQUFDOzsrSEFoUFEsaUNBQWlDO21IQUFqQyxpQ0FBaUMsbUVDYjlDLG01QkE0QkE7NEZEZmEsaUNBQWlDO2tCQUo3QyxTQUFTOytCQUNJLDZCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZmlsdGVyLCBtYXAsIHNoYXJlUmVwbGF5LCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFNka0RpY3Rpb25hcnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25JbmZvIH0gZnJvbSAnLi4vLi4vc2RrLWFwcGluZm8vYXBwbGljYXRpb24taW5mbyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2RrLWFwcGluZm8vYXBwbGljYXRpb24taW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IERhdGVIZWxwZXIgfSBmcm9tICcuLi8uLi9zZGstZGF0ZS9kYXRlLmhlbHBlcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBGb2VoblBhZ2VFeHBpcmF0aW9uVGltZXJDb21wb25lbnRcbiAgICBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgYXBwbGljYXRpb25JbmZvUmV0cmlldmVkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICAgIGNvdW50RG93blRpbWVUb0Rpc3BsYXk6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgICBzZXNzaW9uRXhwaXJlZDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBzckFubm91bmNlbWVudHM6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAgIHByaXZhdGUgY291bnREb3duVGltZUluU2Vjb25kcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPihudWxsKTtcbiAgICBwcml2YXRlIHNlc3Npb25IYXNFeHBpcmVkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gICAgcHJpdmF0ZSBzckFubm91bmNlbWVudHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgcHJpdmF0ZSBpbnRlcnZhbDogYW55O1xuICAgIHByaXZhdGUgZGF0ZUhlbHBlciA9IG5ldyBEYXRlSGVscGVyKCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IFBVTExJTkdfSU5fTUlMTElTRUNPTkRTID0gMTAwMDtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByaXZhdGUgc3JBbm5vdW5jZW1lbnRDbGVhclRpbWVyOiBhbnk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBTUl9BTk5PVU5DRU1FTlRfQ0xFQVJfVElNRU9VVF9JTlRFUlZBTF9NUyA9IDIwMDA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBhcHBsaWNhdGlvbkluZm9TZXJ2aWNlOiBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRpY3Rpb25hcnlTZXJ2aWNlOiBTZGtEaWN0aW9uYXJ5U2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLnNlc3Npb25FeHBpcmVkID0gdGhpcy5zZXNzaW9uSGFzRXhwaXJlZFxuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZShzaGFyZVJlcGxheSgxKSk7XG5cbiAgICAgICAgdGhpcy5zckFubm91bmNlbWVudHMgPSB0aGlzLnNyQW5ub3VuY2VtZW50c1N1YmplY3RcbiAgICAgICAgICAgIC5hc09ic2VydmFibGUoKVxuICAgICAgICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDApKTsgLy8gZGVib3VuY2VUaW1lIHRvIFwiYXZvaWQgZXhwcmVzc2lvbiBoYXMgY2hhbmdlcyBiZWZvcmUuLi5cIlxuXG4gICAgICAgIHRoaXMuY291bnREb3duVGltZVRvRGlzcGxheSA9IHRoaXMuY291bnREb3duVGltZUluU2Vjb25kc1xuICAgICAgICAgICAgLmFzT2JzZXJ2YWJsZSgpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoY291bnREb3duVGltZUluU2Vjb25kcyA9PlxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25IYXNFeHBpcmVkLm5leHQoY291bnREb3duVGltZUluU2Vjb25kcyA9PT0gMClcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIG1hcChjb3VudERvd25UaW1lSW5TZWNvbmRzID0+XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0VGltZShjb3VudERvd25UaW1lSW5TZWNvbmRzKVxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5hcHBsaWNhdGlvbkluZm9SZXRyaWV2ZWQgPSB0aGlzLmFwcGxpY2F0aW9uSW5mb1NlcnZpY2UuZGF0YS5waXBlKFxuICAgICAgICAgICAgbWFwKFxuICAgICAgICAgICAgICAgIChpbmZvOiBBcHBsaWNhdGlvbkluZm8pID0+XG4gICAgICAgICAgICAgICAgICAgIGluZm8uY29uZmlndXJhdGlvbi5zZXNzaW9uLm1lc3NhZ2VEZWxheUluTWludXRlc1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGZpbHRlcihtZXNzYWdlRGVsYXlJbk1pbnV0ZXMgPT4gISFtZXNzYWdlRGVsYXlJbk1pbnV0ZXMpLFxuICAgICAgICAgICAgdGFwKG1lc3NhZ2VEZWxheUluTWludXRlcyA9PlxuICAgICAgICAgICAgICAgIHRoaXMuY291bnREb3duVGltZUluU2Vjb25kcy5uZXh0KG1lc3NhZ2VEZWxheUluTWludXRlcyAqIDYwKVxuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIG1hcCgoKSA9PiB0cnVlKSxcbiAgICAgICAgICAgIHNoYXJlUmVwbGF5KDEpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0YXJ0VGltZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGFydFRpbWVyKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgbGV0IHRpbWUgPSB0aGlzLmNvdW50RG93blRpbWVJblNlY29uZHMuZ2V0VmFsdWUoKTtcbiAgICAgICAgICAgIGlmICh0aW1lID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGltZSAtPSAxO1xuICAgICAgICAgICAgdGhpcy5jb3VudERvd25UaW1lSW5TZWNvbmRzLm5leHQodGltZSk7XG4gICAgICAgIH0sIHRoaXMuUFVMTElOR19JTl9NSUxMSVNFQ09ORFMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJUaW1lcigpOiB2b2lkIHtcbiAgICAgICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcm1hdFRpbWUodGltZUluU2Vjb25kczogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgaG91cnMgPSBNYXRoLmZsb29yKHRpbWVJblNlY29uZHMgLyAoNjAgKiA2MCkpO1xuXG4gICAgICAgIGNvbnN0IGRpdmlzb3JfZm9yX21pbnV0ZXMgPSB0aW1lSW5TZWNvbmRzICUgKDYwICogNjApO1xuICAgICAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcihkaXZpc29yX2Zvcl9taW51dGVzIC8gNjApO1xuXG4gICAgICAgIGNvbnN0IGRpdmlzb3JfZm9yX3NlY29uZHMgPSBkaXZpc29yX2Zvcl9taW51dGVzICUgNjA7XG4gICAgICAgIGNvbnN0IHNlY29uZHMgPSBNYXRoLmNlaWwoZGl2aXNvcl9mb3Jfc2Vjb25kcyk7XG5cbiAgICAgICAgdGhpcy5tYW5hZ2VTY3JlZW5SZWFkZXJBbm5vdW5jZW1lbnQoXG4gICAgICAgICAgICB0aW1lSW5TZWNvbmRzLFxuICAgICAgICAgICAgaG91cnMsXG4gICAgICAgICAgICBtaW51dGVzLFxuICAgICAgICAgICAgc2Vjb25kc1xuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGxlZnRQYWRIb3VycyA9IHRoaXMuZGF0ZUhlbHBlci5sZWZ0UGFkKGhvdXJzLnRvU3RyaW5nKCkpO1xuICAgICAgICBjb25zdCBsZWZ0UGFkTWludXRlcyA9IHRoaXMuZGF0ZUhlbHBlci5sZWZ0UGFkKG1pbnV0ZXMudG9TdHJpbmcoKSk7XG5cbiAgICAgICAgY29uc3QgbGVmdFBhZFNlY29uZHMgPSB0aGlzLmRhdGVIZWxwZXIubGVmdFBhZChzZWNvbmRzLnRvU3RyaW5nKCkpO1xuICAgICAgICByZXR1cm4gYCR7bGVmdFBhZEhvdXJzfToke2xlZnRQYWRNaW51dGVzfToke2xlZnRQYWRTZWNvbmRzfWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhbm5vdW5jZVNyTWVzc2FnZShtc2c6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5zckFubm91bmNlbWVudENsZWFyVGltZXIpO1xuICAgICAgICB0aGlzLnNyQW5ub3VuY2VtZW50c1N1YmplY3QubmV4dChtc2cpO1xuXG4gICAgICAgIHRoaXMuc3JBbm5vdW5jZW1lbnRDbGVhclRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNyQW5ub3VuY2VtZW50c1N1YmplY3QubmV4dCgnJyk7XG4gICAgICAgIH0sIHRoaXMuU1JfQU5OT1VOQ0VNRU5UX0NMRUFSX1RJTUVPVVRfSU5URVJWQUxfTVMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UmVhZGFibGVUaW1lckZvclNjcmVlblJlYWRlcihcbiAgICAgICAgaG91cnM6IG51bWJlcixcbiAgICAgICAgbWludXRlczogbnVtYmVyLFxuICAgICAgICBzZWNvbmRzOiBudW1iZXJcbiAgICApOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWhvdXJzICYmICFtaW51dGVzICYmICFzZWNvbmRzKSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEhaG91cnMgJiYgIW1pbnV0ZXMgJiYgIXNlY29uZHMpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtob3Vyc30gaGV1cmVzYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISFtaW51dGVzICYmICFob3VycyAmJiAhc2Vjb25kcykge1xuICAgICAgICAgICAgcmV0dXJuIGAke21pbnV0ZXN9IG1pbnV0ZXNgO1xuICAgICAgICB9XG4gICAgICAgIGlmICghIXNlY29uZHMgJiYgIW1pbnV0ZXMgJiYgIWhvdXJzKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7c2Vjb25kc30gc2Vjb25kZXNgO1xuICAgICAgICB9XG4gICAgICAgIGlmICghIWhvdXJzICYmICEhbWludXRlcyAmJiAhIXNlY29uZHMpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtob3Vyc30gaGV1cmVzICR7bWludXRlc30gbWludXRlcyBldCAke3NlY29uZHN9IHNlY29uZGVzYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISFob3VycyAmJiAhIW1pbnV0ZXMgJiYgIXNlY29uZHMpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHtob3Vyc30gaGV1cmVzIGV0ICR7bWludXRlc30gbWludXRlc2A7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEhaG91cnMgJiYgISFzZWNvbmRzICYmICFtaW51dGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7aG91cnN9IGhldXJlcyBldCAke3NlY29uZHN9IHNlY29uZGVzYDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoISFtaW51dGVzICYmICEhc2Vjb25kcyAmJiAhaG91cnMpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHttaW51dGVzfSBtaW51dGVzIGV0ICR7c2Vjb25kc30gc2Vjb25kZXNgO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYW5hZ2VTY3JlZW5SZWFkZXJBbm5vdW5jZW1lbnQoXG4gICAgICAgIHRpbWVJblNlY29uZHM6IG51bWJlcixcbiAgICAgICAgaG91cnM6IG51bWJlcixcbiAgICAgICAgbWludXRlczogbnVtYmVyLFxuICAgICAgICBzZWNvbmRzOiBudW1iZXJcbiAgICApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgXzFfaG91ckluU2Vjb25kcyA9IDYwICogNjA7XG4gICAgICAgIGNvbnN0IF81X21pbnV0ZXNJblNlY29uZHMgPSA1ICogNjA7XG4gICAgICAgIGNvbnN0IF8xMF9taW51dGVzSW5TZWNvbmRzID0gMTAgKiA2MDtcbiAgICAgICAgY29uc3QgXzFfbWludXRlSW5TZWNvbmRzID0gNjA7XG4gICAgICAgIGNvbnN0IF8yX21pbnV0ZUluU2Vjb25kcyA9IDIgKiA2MDtcblxuICAgICAgICAvLyBXaGVuIGZpbmlzaGVkLCBkaXNwbGF5IGV4cGlyZWQgbWVzc2FnZVxuICAgICAgICBpZiAodGltZUluU2Vjb25kcyA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5zckFubm91bmNlbWVudHNTdWJqZWN0Lm5leHQoXG4gICAgICAgICAgICAgICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyLmV4cGlyZWQtbWVzc2FnZS5zci1vbmx5J1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gRXZlcnkgc2Vjb25kIGZvciB0aGUgbGFzdCAxNXNcbiAgICAgICAgaWYgKHRpbWVJblNlY29uZHMgPD0gMTUpIHtcbiAgICAgICAgICAgIHRoaXMuc3JBbm5vdW5jZW1lbnRzU3ViamVjdC5uZXh0KHRpbWVJblNlY29uZHMudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gRXZlcnkgMzBzIHdoZW4gbGVzcyB0aGFuIDIgbWludXRlc1xuICAgICAgICBpZiAodGltZUluU2Vjb25kcyA8PSBfMl9taW51dGVJblNlY29uZHMgJiYgdGltZUluU2Vjb25kcyAlIDMwID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBtc2cgPSB0aGlzLmdldFJlYWRhYmxlVGltZXJGb3JTY3JlZW5SZWFkZXIoXG4gICAgICAgICAgICAgICAgaG91cnMsXG4gICAgICAgICAgICAgICAgbWludXRlcyxcbiAgICAgICAgICAgICAgICBzZWNvbmRzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5hbm5vdW5jZVNyTWVzc2FnZShcbiAgICAgICAgICAgICAgICB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgICAgICdmb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXIuY291bnQtZG93bi1tZXNzYWdlLnNyLW9ubHknLFxuICAgICAgICAgICAgICAgICAgICB7IGNvdW50RG93blZhbHVlOiBtc2cgfVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gRXZlcnkgbWludXRlIGZvciB0aGUgbGFzdCA1IG1pbnV0ZXNcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGltZUluU2Vjb25kcyA8PSBfNV9taW51dGVzSW5TZWNvbmRzICYmXG4gICAgICAgICAgICB0aW1lSW5TZWNvbmRzICUgXzFfbWludXRlSW5TZWNvbmRzID09PSAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gdGhpcy5nZXRSZWFkYWJsZVRpbWVyRm9yU2NyZWVuUmVhZGVyKFxuICAgICAgICAgICAgICAgIGhvdXJzLFxuICAgICAgICAgICAgICAgIG1pbnV0ZXMsXG4gICAgICAgICAgICAgICAgc2Vjb25kc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuYW5ub3VuY2VTck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyLmNvdW50LWRvd24tbWVzc2FnZS5zci1vbmx5JyxcbiAgICAgICAgICAgICAgICAgICAgeyBjb3VudERvd25WYWx1ZTogbXNnIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IDEwIG1pbnV0ZXMgd2hlbiBsZXNzIHRoYW4gYW4gaG91clxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aW1lSW5TZWNvbmRzIDwgXzFfaG91ckluU2Vjb25kcyAmJlxuICAgICAgICAgICAgdGltZUluU2Vjb25kcyAlIF8xMF9taW51dGVzSW5TZWNvbmRzID09PSAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gdGhpcy5nZXRSZWFkYWJsZVRpbWVyRm9yU2NyZWVuUmVhZGVyKFxuICAgICAgICAgICAgICAgIGhvdXJzLFxuICAgICAgICAgICAgICAgIG1pbnV0ZXMsXG4gICAgICAgICAgICAgICAgc2Vjb25kc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuYW5ub3VuY2VTck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyLmNvdW50LWRvd24tbWVzc2FnZS5zci1vbmx5JyxcbiAgICAgICAgICAgICAgICAgICAgeyBjb3VudERvd25WYWx1ZTogbXNnIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IGhvdXIgd2hlbiBtb3JlIHRoYW4gYW4gaG91clxuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aW1lSW5TZWNvbmRzID49IF8xX2hvdXJJblNlY29uZHMgJiZcbiAgICAgICAgICAgIHRpbWVJblNlY29uZHMgJSBfMV9ob3VySW5TZWNvbmRzID09PSAwXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgbXNnID0gdGhpcy5nZXRSZWFkYWJsZVRpbWVyRm9yU2NyZWVuUmVhZGVyKFxuICAgICAgICAgICAgICAgIGhvdXJzLFxuICAgICAgICAgICAgICAgIG1pbnV0ZXMsXG4gICAgICAgICAgICAgICAgc2Vjb25kc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuYW5ub3VuY2VTck1lc3NhZ2UoXG4gICAgICAgICAgICAgICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICAgICAnZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyLmNvdW50LWRvd24tbWVzc2FnZS5zci1vbmx5JyxcbiAgICAgICAgICAgICAgICAgICAgeyBjb3VudERvd25WYWx1ZTogbXNnIH1cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGRpdlxuICAgICpuZ0lmPVwiYXBwbGljYXRpb25JbmZvUmV0cmlldmVkIHwgYXN5bmNcIlxuICAgIGlkPVwiZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyXCJcbiAgICBjbGFzcz1cInN0aWNreS10b3AgYWxlcnQgdGV4dC1jZW50ZXIgbXktMFwiXG4gICAgW2NsYXNzLmFsZXJ0LXdhcm5pbmddPVwiKHNlc3Npb25FeHBpcmVkIHwgYXN5bmMpID09PSBmYWxzZVwiXG4gICAgW2NsYXNzLmFsZXJ0LWRhbmdlcl09XCIoc2Vzc2lvbkV4cGlyZWQgfCBhc3luYykgPT09IHRydWVcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4+XG4gICAgPGRpdlxuICAgICAgICAqbmdJZj1cIihzZXNzaW9uRXhwaXJlZCB8IGFzeW5jKSA9PT0gZmFsc2VcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cIlxuICAgICAgICAgICAgJ2ZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lci5jb3VudC1kb3duLW1lc3NhZ2UnXG4gICAgICAgICAgICAgICAgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICA6IHsgY291bnREb3duVmFsdWU6IGNvdW50RG93blRpbWVUb0Rpc3BsYXkgfCBhc3luYyB9XG4gICAgICAgIFwiXG4gICAgPjwvZGl2PlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCIoc2Vzc2lvbkV4cGlyZWQgfCBhc3luYykgPT09IHRydWVcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cIlxuICAgICAgICAgICAgJ2ZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lci5leHBpcmVkLW1lc3NhZ2UnIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgXCJcbiAgICA+PC9kaXY+XG48L2Rpdj5cblxuPHAgY2xhc3M9XCJzci1vbmx5XCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCIgYXJpYS1hdG9taWM9XCJ0cnVlXCI+XG4gICAge3sgc3JBbm5vdW5jZW1lbnRzIHwgYXN5bmMgfX1cbjwvcD5cbiJdfQ==
@@ -30,7 +30,8 @@ import * as i23 from "../foehn-icons/foehn-icon-external-link-alt.component";
30
30
  import * as i24 from "../foehn-status-progress-bar/foehn-status-progress-bar.component";
31
31
  import * as i25 from "./foehn-page-modal.component";
32
32
  import * as i26 from "./foehn-page-expiration-timer/foehn-page-expiration-timer.component";
33
- import * as i27 from "../sdk-dictionary/sdk-dictionary.pipe";
33
+ import * as i27 from "./foehn-transmit-waiting-modal/foehn-transmit-waiting-modal.component";
34
+ import * as i28 from "../sdk-dictionary/sdk-dictionary.pipe";
34
35
  const LEAVING_ALERT_CONTENT = 'Ce changement de page entraine une perte des données non sauvegardées.<br/>Souhaitez-vous quand même continuer ?';
35
36
  const LEAVING_ALERT_OK = 'Poursuivre sans sauvegarder';
36
37
  const LEAVING_ALERT_CANCEL = 'Retourner à la prestation';
@@ -182,10 +183,10 @@ export class FoehnPageComponent {
182
183
  }
183
184
  }
184
185
  FoehnPageComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FoehnPageComponent, deps: [{ token: i1.Title }, { token: i2.FoehnPageService }, { token: i3.SupportAlertService }, { token: i4.FoehnNavigationService }, { token: i5.ApplicationInfoService }, { token: i6.GesdemEventService }, { token: i7.BreadcrumbEventService }, { token: i8.Router }, { token: i9.SessionInfo }, { token: i10.FoehnPageModalService }, { token: i11.SdkDictionaryService }, { token: i12.SdkStatisticsService }, { token: i13.DemandeExpirationService }], target: i0.ɵɵFactoryTarget.Component });
185
- FoehnPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FoehnPageComponent, selector: "foehn-page", inputs: { appTitle: "appTitle", footerLinks: "footerLinks", supportAlertEnabled: "supportAlertEnabled", draftsEnabled: "draftsEnabled", supportAlertUrl: "supportAlertUrl", draftsUrl: "draftsUrl", etapeId: "etapeId", userConnectedAsDisplayed: "userConnectedAsDisplayed", statusProgressBarHidden: "statusProgressBarHidden", confirmLeavingAlert: "confirmLeavingAlert", showDefaultContactFooterLink: "showDefaultContactFooterLink", showDefaultGuideFooterLink: "showDefaultGuideFooterLink", showDefaultTermOfUseLink: "showDefaultTermOfUseLink", showDefaultSecurityBestPracticeLink: "showDefaultSecurityBestPracticeLink", routerLinkAppTitle: "routerLinkAppTitle" }, usesOnChanges: true, ngImport: i0, template: "<foehn-page-expiration-timer\n *ngIf=\"(displayDemandeExpirationTimer | async) === true\"\n id=\"foehn-page-expiration-timer\"\n></foehn-page-expiration-timer>\n<foehn-header\n id=\"foehn_header\"\n [title]=\"appTitle\"\n [routerLinkAppTitle]=\"routerLinkAppTitle\"\n [showSecuredAreaLoginButton]=\"showSecuredAreaLoginButton | async\"\n></foehn-header>\n<foehn-growl id=\"foehn_growl\"></foehn-growl>\n<div class=\"vd-bg-pattern-gray\">\n <div class=\"container\">\n <foehn-breadcrumb\n [confirmLeavingAlert]=\"confirmLeavingAlert\"\n ></foehn-breadcrumb>\n </div>\n</div>\n<main id=\"main\">\n <div class=\"vd-bg-pattern-gray\">\n <div class=\"container\">\n <!-- Fix annoying flickering when the page loads -->\n <div class=\"h1 mt-0\" *ngIf=\"!pageTitle\">&nbsp;</div>\n <h1\n [tabIndex]=\"-1\"\n class=\"mt-0\"\n id=\"page-title\"\n *ngIf=\"!!pageTitle\"\n [innerHTML]=\"pageTitle\"\n ></h1>\n </div>\n </div>\n\n <foehn-status-progress-bar\n [hidden]=\"\n statusProgressBarHidden || !!(hasBlockingSupportAlert | async)\n \"\n ></foehn-status-progress-bar>\n\n <section\n *ngIf=\"!isBrowserSupported\"\n class=\"container alert alert-danger\"\n id=\"browser_not_supported_block\"\n role=\"alert\"\n >\n <p class=\"alert-heading\">\n <strong>\n {{ 'foehn-page.browser-not-supported' | fromDictionary }}\n </strong>\n </p>\n <p class=\"mb-0\">\n {{ 'foehn-page.browser-download-invitation' | fromDictionary }}\n <ng-container *ngIf=\"!isApplePlatform\">\n <a\n [title]=\"browserLinkTitlePrefix + ' Edge'\"\n href=\"https://www.microsoft.com/fr-ch/windows/microsoft-edge\"\n target=\"_blank\"\n >\n Edge\n <span class=\"sr-only\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n ,\n </ng-container>\n <ng-container *ngIf=\"isApplePlatform\">\n <a\n [title]=\"browserLinkTitlePrefix + ' Safari'\"\n href=\"https://support.apple.com/downloads/safari\"\n target=\"_blank\"\n >\n Safari\n <span class=\"sr-only\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n ,\n </ng-container>\n <a\n [title]=\"browserLinkTitlePrefix + ' Firefox'\"\n href=\"https://www.mozilla.org/fr/firefox/\"\n target=\"_blank\"\n >\n Firefox\n <span class=\"sr-only\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n {{ 'foehn-page.browser-download-list.ou' | fromDictionary }}\n <a\n [title]=\"browserLinkTitlePrefix + ' Chrome'\"\n href=\"https://www.google.com/intl/fr/chrome/\"\n target=\"_blank\"\n >\n Chrome\n <span class=\"sr-only\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n .\n </p>\n <div class=\"row mt-3\">\n <div class=\"col-md-12\">\n <button\n id=\"browser_not_supported_bypass\"\n class=\"float-right btn btn-danger\"\n *ngIf=\"!browserNotSupportedBypass\"\n (click)=\"browserNotSupportedBypass = true\"\n >\n {{\n 'foehn-page.continue-with-same-browser' | fromDictionary\n }}\n </button>\n </div>\n </div>\n </section>\n\n <sdk-support-alert-container\n *ngIf=\"supportAlertEnabled\"\n [etapeId]=\"etapeId\"\n [supportAlertUrl]=\"supportAlertUrl\"\n ></sdk-support-alert-container>\n <sdk-drafts-container\n *ngIf=\"draftsEnabled\"\n [etapeId]=\"etapeId\"\n [draftsUrl]=\"draftsUrl\"\n ></sdk-drafts-container>\n <ng-container\n *ngIf=\"\n !(hasBlockingSupportAlert | async) &&\n (isBrowserSupported || browserNotSupportedBypass)\n \"\n >\n <div class=\"container mt-5\" id=\"page_content\">\n <foehn-user-connected-as\n *ngIf=\"displayUserCategory | async\"\n ></foehn-user-connected-as>\n </div>\n <ng-content></ng-content>\n </ng-container>\n</main>\n<foehn-footer\n id=\"foehn_footer\"\n [links]=\"footerLinks\"\n [showDefaultContactLink]=\"showDefaultContactFooterLink\"\n [showDefaultGuideLink]=\"showDefaultGuideFooterLink\"\n [showDefaultTermOfUseLink]=\"showDefaultTermOfUseLink\"\n [showDefaultSecurityBestPracticeLink]=\"showDefaultSecurityBestPracticeLink\"\n></foehn-footer>\n<foehn-page-modal></foehn-page-modal>\n<foehn-confirm-modal></foehn-confirm-modal>\n", styles: ["#loginAndContinueButton{text-decoration:underline}\n"], dependencies: [{ kind: "directive", type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i15.DraftsContainerComponent, selector: "sdk-drafts-container", inputs: ["etapeId", "draftsUrl"] }, { kind: "component", type: i16.FoehnBreadcrumbComponent, selector: "foehn-breadcrumb", inputs: ["breadcrumbItems", "currentNav", "confirmLeavingAlert"] }, { kind: "component", type: i17.FoehnGrowlComponent, selector: "foehn-growl" }, { kind: "component", type: i18.FoehnHeaderComponent, selector: "foehn-header", inputs: ["title", "showSecuredAreaLoginButton", "routerLinkAppTitle", "userInfo"] }, { kind: "component", type: i19.FoehnFooterComponent, selector: "foehn-footer", inputs: ["links", "showDefaultContactLink", "showDefaultGuideLink", "showDefaultTermOfUseLink", "showDefaultSecurityBestPracticeLink"] }, { kind: "component", type: i20.FoehnUserConnectedAsComponent, selector: "foehn-user-connected-as" }, { kind: "component", type: i21.SupportAlertContainerComponent, selector: "sdk-support-alert-container", inputs: ["etapeId", "supportAlertUrl"] }, { kind: "component", type: i22.FoehnConfirmModalComponent, selector: "foehn-confirm-modal" }, { kind: "component", type: i23.FoehnIconExternalLinkAltComponent, selector: "foehn-icon-external-link-alt" }, { kind: "component", type: i24.FoehnStatusProgressBarComponent, selector: "foehn-status-progress-bar", inputs: ["hidden"] }, { kind: "component", type: i25.FoehnPageModalComponent, selector: "foehn-page-modal" }, { kind: "component", type: i26.FoehnPageExpirationTimerComponent, selector: "foehn-page-expiration-timer" }, { kind: "pipe", type: i14.AsyncPipe, name: "async" }, { kind: "pipe", type: i27.SdkDictionaryPipe, name: "fromDictionary" }] });
186
+ FoehnPageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FoehnPageComponent, selector: "foehn-page", inputs: { appTitle: "appTitle", footerLinks: "footerLinks", supportAlertEnabled: "supportAlertEnabled", draftsEnabled: "draftsEnabled", supportAlertUrl: "supportAlertUrl", draftsUrl: "draftsUrl", etapeId: "etapeId", userConnectedAsDisplayed: "userConnectedAsDisplayed", statusProgressBarHidden: "statusProgressBarHidden", confirmLeavingAlert: "confirmLeavingAlert", showDefaultContactFooterLink: "showDefaultContactFooterLink", showDefaultGuideFooterLink: "showDefaultGuideFooterLink", showDefaultTermOfUseLink: "showDefaultTermOfUseLink", showDefaultSecurityBestPracticeLink: "showDefaultSecurityBestPracticeLink", routerLinkAppTitle: "routerLinkAppTitle" }, usesOnChanges: true, ngImport: i0, template: "<foehn-page-expiration-timer\n *ngIf=\"(displayDemandeExpirationTimer | async) === true\"\n id=\"foehn-page-expiration-timer\"\n></foehn-page-expiration-timer>\n<foehn-header\n id=\"foehn_header\"\n [title]=\"appTitle\"\n [routerLinkAppTitle]=\"routerLinkAppTitle\"\n [showSecuredAreaLoginButton]=\"showSecuredAreaLoginButton | async\"\n></foehn-header>\n<foehn-growl id=\"foehn_growl\"></foehn-growl>\n<div class=\"vd-bg-pattern-gray\">\n <div class=\"container\">\n <foehn-breadcrumb\n [confirmLeavingAlert]=\"confirmLeavingAlert\"\n ></foehn-breadcrumb>\n </div>\n</div>\n<main id=\"main\">\n <div class=\"vd-bg-pattern-gray\">\n <div class=\"container\">\n <!-- Fix annoying flickering when the page loads -->\n <div class=\"h1 mt-0\" *ngIf=\"!pageTitle\">&nbsp;</div>\n <h1\n [tabIndex]=\"-1\"\n class=\"mt-0\"\n id=\"page-title\"\n *ngIf=\"!!pageTitle\"\n [innerHTML]=\"pageTitle\"\n ></h1>\n </div>\n </div>\n\n <foehn-status-progress-bar\n [hidden]=\"\n statusProgressBarHidden || !!(hasBlockingSupportAlert | async)\n \"\n ></foehn-status-progress-bar>\n\n <section\n *ngIf=\"!isBrowserSupported\"\n class=\"container alert alert-danger\"\n id=\"browser_not_supported_block\"\n role=\"alert\"\n >\n <p class=\"alert-heading\">\n <strong>\n {{ 'foehn-page.browser-not-supported' | fromDictionary }}\n </strong>\n </p>\n <p class=\"mb-0\">\n {{ 'foehn-page.browser-download-invitation' | fromDictionary }}\n <ng-container *ngIf=\"!isApplePlatform\">\n <a\n [title]=\"browserLinkTitlePrefix + ' Edge'\"\n href=\"https://www.microsoft.com/fr-ch/windows/microsoft-edge\"\n target=\"_blank\"\n >\n Edge\n <span class=\"sr-only\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n ,\n </ng-container>\n <ng-container *ngIf=\"isApplePlatform\">\n <a\n [title]=\"browserLinkTitlePrefix + ' Safari'\"\n href=\"https://support.apple.com/downloads/safari\"\n target=\"_blank\"\n >\n Safari\n <span class=\"sr-only\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n ,\n </ng-container>\n <a\n [title]=\"browserLinkTitlePrefix + ' Firefox'\"\n href=\"https://www.mozilla.org/fr/firefox/\"\n target=\"_blank\"\n >\n Firefox\n <span class=\"sr-only\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n {{ 'foehn-page.browser-download-list.ou' | fromDictionary }}\n <a\n [title]=\"browserLinkTitlePrefix + ' Chrome'\"\n href=\"https://www.google.com/intl/fr/chrome/\"\n target=\"_blank\"\n >\n Chrome\n <span class=\"sr-only\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n .\n </p>\n <div class=\"row mt-3\">\n <div class=\"col-md-12\">\n <button\n id=\"browser_not_supported_bypass\"\n class=\"float-right btn btn-danger\"\n *ngIf=\"!browserNotSupportedBypass\"\n (click)=\"browserNotSupportedBypass = true\"\n >\n {{\n 'foehn-page.continue-with-same-browser' | fromDictionary\n }}\n </button>\n </div>\n </div>\n </section>\n\n <sdk-support-alert-container\n *ngIf=\"supportAlertEnabled\"\n [etapeId]=\"etapeId\"\n [supportAlertUrl]=\"supportAlertUrl\"\n ></sdk-support-alert-container>\n <sdk-drafts-container\n *ngIf=\"draftsEnabled\"\n [etapeId]=\"etapeId\"\n [draftsUrl]=\"draftsUrl\"\n ></sdk-drafts-container>\n <ng-container\n *ngIf=\"\n !(hasBlockingSupportAlert | async) &&\n (isBrowserSupported || browserNotSupportedBypass)\n \"\n >\n <div class=\"container mt-5\" id=\"page_content\">\n <foehn-user-connected-as\n *ngIf=\"displayUserCategory | async\"\n ></foehn-user-connected-as>\n </div>\n <ng-content></ng-content>\n </ng-container>\n</main>\n<foehn-footer\n id=\"foehn_footer\"\n [links]=\"footerLinks\"\n [showDefaultContactLink]=\"showDefaultContactFooterLink\"\n [showDefaultGuideLink]=\"showDefaultGuideFooterLink\"\n [showDefaultTermOfUseLink]=\"showDefaultTermOfUseLink\"\n [showDefaultSecurityBestPracticeLink]=\"showDefaultSecurityBestPracticeLink\"\n></foehn-footer>\n<foehn-page-modal></foehn-page-modal>\n<foehn-confirm-modal></foehn-confirm-modal>\n<foehn-transmit-waiting-modal></foehn-transmit-waiting-modal>\n", styles: ["#loginAndContinueButton{text-decoration:underline}\n"], dependencies: [{ kind: "directive", type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i15.DraftsContainerComponent, selector: "sdk-drafts-container", inputs: ["etapeId", "draftsUrl"] }, { kind: "component", type: i16.FoehnBreadcrumbComponent, selector: "foehn-breadcrumb", inputs: ["breadcrumbItems", "currentNav", "confirmLeavingAlert"] }, { kind: "component", type: i17.FoehnGrowlComponent, selector: "foehn-growl" }, { kind: "component", type: i18.FoehnHeaderComponent, selector: "foehn-header", inputs: ["title", "showSecuredAreaLoginButton", "routerLinkAppTitle", "userInfo"] }, { kind: "component", type: i19.FoehnFooterComponent, selector: "foehn-footer", inputs: ["links", "showDefaultContactLink", "showDefaultGuideLink", "showDefaultTermOfUseLink", "showDefaultSecurityBestPracticeLink"] }, { kind: "component", type: i20.FoehnUserConnectedAsComponent, selector: "foehn-user-connected-as" }, { kind: "component", type: i21.SupportAlertContainerComponent, selector: "sdk-support-alert-container", inputs: ["etapeId", "supportAlertUrl"] }, { kind: "component", type: i22.FoehnConfirmModalComponent, selector: "foehn-confirm-modal" }, { kind: "component", type: i23.FoehnIconExternalLinkAltComponent, selector: "foehn-icon-external-link-alt" }, { kind: "component", type: i24.FoehnStatusProgressBarComponent, selector: "foehn-status-progress-bar", inputs: ["hidden"] }, { kind: "component", type: i25.FoehnPageModalComponent, selector: "foehn-page-modal" }, { kind: "component", type: i26.FoehnPageExpirationTimerComponent, selector: "foehn-page-expiration-timer" }, { kind: "component", type: i27.FoehnTransmitWaitingModalComponent, selector: "foehn-transmit-waiting-modal" }, { kind: "pipe", type: i14.AsyncPipe, name: "async" }, { kind: "pipe", type: i28.SdkDictionaryPipe, name: "fromDictionary" }] });
186
187
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FoehnPageComponent, decorators: [{
187
188
  type: Component,
188
- args: [{ selector: 'foehn-page', template: "<foehn-page-expiration-timer\n *ngIf=\"(displayDemandeExpirationTimer | async) === true\"\n id=\"foehn-page-expiration-timer\"\n></foehn-page-expiration-timer>\n<foehn-header\n id=\"foehn_header\"\n [title]=\"appTitle\"\n [routerLinkAppTitle]=\"routerLinkAppTitle\"\n [showSecuredAreaLoginButton]=\"showSecuredAreaLoginButton | async\"\n></foehn-header>\n<foehn-growl id=\"foehn_growl\"></foehn-growl>\n<div class=\"vd-bg-pattern-gray\">\n <div class=\"container\">\n <foehn-breadcrumb\n [confirmLeavingAlert]=\"confirmLeavingAlert\"\n ></foehn-breadcrumb>\n </div>\n</div>\n<main id=\"main\">\n <div class=\"vd-bg-pattern-gray\">\n <div class=\"container\">\n <!-- Fix annoying flickering when the page loads -->\n <div class=\"h1 mt-0\" *ngIf=\"!pageTitle\">&nbsp;</div>\n <h1\n [tabIndex]=\"-1\"\n class=\"mt-0\"\n id=\"page-title\"\n *ngIf=\"!!pageTitle\"\n [innerHTML]=\"pageTitle\"\n ></h1>\n </div>\n </div>\n\n <foehn-status-progress-bar\n [hidden]=\"\n statusProgressBarHidden || !!(hasBlockingSupportAlert | async)\n \"\n ></foehn-status-progress-bar>\n\n <section\n *ngIf=\"!isBrowserSupported\"\n class=\"container alert alert-danger\"\n id=\"browser_not_supported_block\"\n role=\"alert\"\n >\n <p class=\"alert-heading\">\n <strong>\n {{ 'foehn-page.browser-not-supported' | fromDictionary }}\n </strong>\n </p>\n <p class=\"mb-0\">\n {{ 'foehn-page.browser-download-invitation' | fromDictionary }}\n <ng-container *ngIf=\"!isApplePlatform\">\n <a\n [title]=\"browserLinkTitlePrefix + ' Edge'\"\n href=\"https://www.microsoft.com/fr-ch/windows/microsoft-edge\"\n target=\"_blank\"\n >\n Edge\n <span class=\"sr-only\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n ,\n </ng-container>\n <ng-container *ngIf=\"isApplePlatform\">\n <a\n [title]=\"browserLinkTitlePrefix + ' Safari'\"\n href=\"https://support.apple.com/downloads/safari\"\n target=\"_blank\"\n >\n Safari\n <span class=\"sr-only\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n ,\n </ng-container>\n <a\n [title]=\"browserLinkTitlePrefix + ' Firefox'\"\n href=\"https://www.mozilla.org/fr/firefox/\"\n target=\"_blank\"\n >\n Firefox\n <span class=\"sr-only\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n {{ 'foehn-page.browser-download-list.ou' | fromDictionary }}\n <a\n [title]=\"browserLinkTitlePrefix + ' Chrome'\"\n href=\"https://www.google.com/intl/fr/chrome/\"\n target=\"_blank\"\n >\n Chrome\n <span class=\"sr-only\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n .\n </p>\n <div class=\"row mt-3\">\n <div class=\"col-md-12\">\n <button\n id=\"browser_not_supported_bypass\"\n class=\"float-right btn btn-danger\"\n *ngIf=\"!browserNotSupportedBypass\"\n (click)=\"browserNotSupportedBypass = true\"\n >\n {{\n 'foehn-page.continue-with-same-browser' | fromDictionary\n }}\n </button>\n </div>\n </div>\n </section>\n\n <sdk-support-alert-container\n *ngIf=\"supportAlertEnabled\"\n [etapeId]=\"etapeId\"\n [supportAlertUrl]=\"supportAlertUrl\"\n ></sdk-support-alert-container>\n <sdk-drafts-container\n *ngIf=\"draftsEnabled\"\n [etapeId]=\"etapeId\"\n [draftsUrl]=\"draftsUrl\"\n ></sdk-drafts-container>\n <ng-container\n *ngIf=\"\n !(hasBlockingSupportAlert | async) &&\n (isBrowserSupported || browserNotSupportedBypass)\n \"\n >\n <div class=\"container mt-5\" id=\"page_content\">\n <foehn-user-connected-as\n *ngIf=\"displayUserCategory | async\"\n ></foehn-user-connected-as>\n </div>\n <ng-content></ng-content>\n </ng-container>\n</main>\n<foehn-footer\n id=\"foehn_footer\"\n [links]=\"footerLinks\"\n [showDefaultContactLink]=\"showDefaultContactFooterLink\"\n [showDefaultGuideLink]=\"showDefaultGuideFooterLink\"\n [showDefaultTermOfUseLink]=\"showDefaultTermOfUseLink\"\n [showDefaultSecurityBestPracticeLink]=\"showDefaultSecurityBestPracticeLink\"\n></foehn-footer>\n<foehn-page-modal></foehn-page-modal>\n<foehn-confirm-modal></foehn-confirm-modal>\n", styles: ["#loginAndContinueButton{text-decoration:underline}\n"] }]
189
+ args: [{ selector: 'foehn-page', template: "<foehn-page-expiration-timer\n *ngIf=\"(displayDemandeExpirationTimer | async) === true\"\n id=\"foehn-page-expiration-timer\"\n></foehn-page-expiration-timer>\n<foehn-header\n id=\"foehn_header\"\n [title]=\"appTitle\"\n [routerLinkAppTitle]=\"routerLinkAppTitle\"\n [showSecuredAreaLoginButton]=\"showSecuredAreaLoginButton | async\"\n></foehn-header>\n<foehn-growl id=\"foehn_growl\"></foehn-growl>\n<div class=\"vd-bg-pattern-gray\">\n <div class=\"container\">\n <foehn-breadcrumb\n [confirmLeavingAlert]=\"confirmLeavingAlert\"\n ></foehn-breadcrumb>\n </div>\n</div>\n<main id=\"main\">\n <div class=\"vd-bg-pattern-gray\">\n <div class=\"container\">\n <!-- Fix annoying flickering when the page loads -->\n <div class=\"h1 mt-0\" *ngIf=\"!pageTitle\">&nbsp;</div>\n <h1\n [tabIndex]=\"-1\"\n class=\"mt-0\"\n id=\"page-title\"\n *ngIf=\"!!pageTitle\"\n [innerHTML]=\"pageTitle\"\n ></h1>\n </div>\n </div>\n\n <foehn-status-progress-bar\n [hidden]=\"\n statusProgressBarHidden || !!(hasBlockingSupportAlert | async)\n \"\n ></foehn-status-progress-bar>\n\n <section\n *ngIf=\"!isBrowserSupported\"\n class=\"container alert alert-danger\"\n id=\"browser_not_supported_block\"\n role=\"alert\"\n >\n <p class=\"alert-heading\">\n <strong>\n {{ 'foehn-page.browser-not-supported' | fromDictionary }}\n </strong>\n </p>\n <p class=\"mb-0\">\n {{ 'foehn-page.browser-download-invitation' | fromDictionary }}\n <ng-container *ngIf=\"!isApplePlatform\">\n <a\n [title]=\"browserLinkTitlePrefix + ' Edge'\"\n href=\"https://www.microsoft.com/fr-ch/windows/microsoft-edge\"\n target=\"_blank\"\n >\n Edge\n <span class=\"sr-only\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n ,\n </ng-container>\n <ng-container *ngIf=\"isApplePlatform\">\n <a\n [title]=\"browserLinkTitlePrefix + ' Safari'\"\n href=\"https://support.apple.com/downloads/safari\"\n target=\"_blank\"\n >\n Safari\n <span class=\"sr-only\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n ,\n </ng-container>\n <a\n [title]=\"browserLinkTitlePrefix + ' Firefox'\"\n href=\"https://www.mozilla.org/fr/firefox/\"\n target=\"_blank\"\n >\n Firefox\n <span class=\"sr-only\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n {{ 'foehn-page.browser-download-list.ou' | fromDictionary }}\n <a\n [title]=\"browserLinkTitlePrefix + ' Chrome'\"\n href=\"https://www.google.com/intl/fr/chrome/\"\n target=\"_blank\"\n >\n Chrome\n <span class=\"sr-only\">\n {{ 'foehn-page.external-link.srOnly' | fromDictionary }}\n </span>\n <span aria-hidden=\"true\">\n <foehn-icon-external-link-alt></foehn-icon-external-link-alt>\n </span>\n </a>\n .\n </p>\n <div class=\"row mt-3\">\n <div class=\"col-md-12\">\n <button\n id=\"browser_not_supported_bypass\"\n class=\"float-right btn btn-danger\"\n *ngIf=\"!browserNotSupportedBypass\"\n (click)=\"browserNotSupportedBypass = true\"\n >\n {{\n 'foehn-page.continue-with-same-browser' | fromDictionary\n }}\n </button>\n </div>\n </div>\n </section>\n\n <sdk-support-alert-container\n *ngIf=\"supportAlertEnabled\"\n [etapeId]=\"etapeId\"\n [supportAlertUrl]=\"supportAlertUrl\"\n ></sdk-support-alert-container>\n <sdk-drafts-container\n *ngIf=\"draftsEnabled\"\n [etapeId]=\"etapeId\"\n [draftsUrl]=\"draftsUrl\"\n ></sdk-drafts-container>\n <ng-container\n *ngIf=\"\n !(hasBlockingSupportAlert | async) &&\n (isBrowserSupported || browserNotSupportedBypass)\n \"\n >\n <div class=\"container mt-5\" id=\"page_content\">\n <foehn-user-connected-as\n *ngIf=\"displayUserCategory | async\"\n ></foehn-user-connected-as>\n </div>\n <ng-content></ng-content>\n </ng-container>\n</main>\n<foehn-footer\n id=\"foehn_footer\"\n [links]=\"footerLinks\"\n [showDefaultContactLink]=\"showDefaultContactFooterLink\"\n [showDefaultGuideLink]=\"showDefaultGuideFooterLink\"\n [showDefaultTermOfUseLink]=\"showDefaultTermOfUseLink\"\n [showDefaultSecurityBestPracticeLink]=\"showDefaultSecurityBestPracticeLink\"\n></foehn-footer>\n<foehn-page-modal></foehn-page-modal>\n<foehn-confirm-modal></foehn-confirm-modal>\n<foehn-transmit-waiting-modal></foehn-transmit-waiting-modal>\n", styles: ["#loginAndContinueButton{text-decoration:underline}\n"] }]
189
190
  }], ctorParameters: function () { return [{ type: i1.Title }, { type: i2.FoehnPageService }, { type: i3.SupportAlertService }, { type: i4.FoehnNavigationService }, { type: i5.ApplicationInfoService }, { type: i6.GesdemEventService }, { type: i7.BreadcrumbEventService }, { type: i8.Router }, { type: i9.SessionInfo }, { type: i10.FoehnPageModalService }, { type: i11.SdkDictionaryService }, { type: i12.SdkStatisticsService }, { type: i13.DemandeExpirationService }]; }, propDecorators: { appTitle: [{
190
191
  type: Input
191
192
  }], footerLinks: [{
@@ -217,4 +218,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
217
218
  }], routerLinkAppTitle: [{
218
219
  type: Input
219
220
  }] } });
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tcGFnZS9mb2Vobi1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1wYWdlL2ZvZWhuLXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxLQUFLLEVBS1IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFjM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSXpELE1BQU0scUJBQXFCLEdBQ3ZCLGtIQUFrSCxDQUFDO0FBQ3ZILE1BQU0sZ0JBQWdCLEdBQUcsNkJBQTZCLENBQUM7QUFDdkQsTUFBTSxvQkFBb0IsR0FBRywyQkFBMkIsQ0FBQztBQU96RCxNQUFNLE9BQU8sa0JBQWtCO0lBcUYzQixZQUNZLGFBQW9CLEVBQ3BCLGdCQUFrQyxFQUNsQyxtQkFBd0MsRUFDeEMsc0JBQThDLEVBQzlDLHNCQUE4QyxFQUM5QyxrQkFBc0MsRUFDdEMsaUJBQXlDLEVBQ3pDLE1BQWMsRUFDZCxXQUF3QixFQUN4QixxQkFBNEMsRUFDNUMsb0JBQTBDLEVBQzFDLGlCQUF1QyxFQUN2Qyx3QkFBa0Q7UUFabEQsa0JBQWEsR0FBYixhQUFhLENBQU87UUFDcEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFr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SSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDM0IsQ0FBQzs7Z0hBdFFRLGtCQUFrQjtvR0FBbEIsa0JBQWtCLDJ0QkN2Qy9CLGs5TEFtS0E7NEZENUhhLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDSSxZQUFZO2lmQU10QixRQUFRO3NCQURQLEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4sZUFBZTtzQkFEZCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sd0JBQXdCO3NCQUR2QixLQUFLO2dCQUlOLHVCQUF1QjtzQkFEdEIsS0FBSztnQkFJTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBV04sNEJBQTRCO3NCQUQzQixLQUFLO2dCQU9OLDBCQUEwQjtzQkFEekIsS0FBSztnQkFPTix3QkFBd0I7c0JBRHZCLEtBQUs7Z0JBT04sbUNBQW1DO3NCQURsQyxLQUFLO2dCQUlOLGtCQUFrQjtzQkFEakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaXRsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgTmF2aWdhdGlvbkVuZCwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGZpbHRlciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBCcmVhZGNydW1iRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vZm9laG4tYnJlYWRjcnVtYi9icmVhZGNydW1iLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9laG5Db25maXJtTW9kYWxDb250ZW50IH0gZnJvbSAnLi4vZm9laG4tY29uZmlybS1tb2RhbC9mb2Vobi1jb25maXJtLW1vZGFsLWNvbnRlbnQnO1xuaW1wb3J0IHsgRm9vdGVyTGluayB9IGZyb20gJy4uL2ZvZWhuLWZvb3Rlci9mb290ZXItbGluay50eXBlJztcbmltcG9ydCB7IEZvZWhuTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9mb2Vobi1uYXZpZ2F0aW9uL2ZvZWhuLW5hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBGb2VoblBhZ2VNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi9mb2Vobi1wYWdlL2ZvZWhuLXBhZ2UtbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBHZXNkZW1FdmVudFNlcnZpY2UgfSBmcm9tICcuLi9nZXNkZW0vZ2VzZGVtLWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgRXRhcGVJbmZvIH0gZnJvbSAnLi4vc2RrLWFwcGluZm8vYXBwbGljYXRpb24taW5mbyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLWFwcGluZm8vYXBwbGljYXRpb24taW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IFNka0RpY3Rpb25hcnlTZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLWRpY3Rpb25hcnkvc2RrLWRpY3Rpb25hcnkuc2VydmljZSc7XG5pbXBvcnQgeyBTZXNzaW9uSW5mbyB9IGZyb20gJy4uL3Nkay1zZXNzaW9uLWluZm8vc2Vzc2lvbi1pbmZvLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2RrU3RhdGlzdGljc1NlcnZpY2UgfSBmcm9tICcuLi9zZGstc3RhdGlzdGljcy9zZGstc3RhdGlzdGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IFN1cHBvcnRBbGVydFNlcnZpY2UgfSBmcm9tICcuLi9zZGstc3VwcG9ydC1hbGVydC9zdXBwb3J0LWFsZXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgc3VwcG9ydGVkQnJvd3NlcnMgfSBmcm9tICcuLi9zdXBwb3J0ZWQtYnJvd3Nlcic7XG5pbXBvcnQgeyBGb2VoblBhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9mb2Vobi1wYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGVtYW5kZUV4cGlyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9mb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXIvZGVtYW5kZS1leHBpcmF0aW9uLnNlcnZpY2UnO1xuXG5jb25zdCBMRUFWSU5HX0FMRVJUX0NPTlRFTlQgPVxuICAgICdDZSBjaGFuZ2VtZW50IGRlIHBhZ2UgZW50cmFpbmUgdW5lIHBlcnRlIGRlcyBkb25uw6llcyBub24gc2F1dmVnYXJkw6llcy48YnIvPlNvdWhhaXRlei12b3VzIHF1YW5kIG3Dqm1lIGNvbnRpbnVlciA/JztcbmNvbnN0IExFQVZJTkdfQUxFUlRfT0sgPSAnUG91cnN1aXZyZSBzYW5zIHNhdXZlZ2FyZGVyJztcbmNvbnN0IExFQVZJTkdfQUxFUlRfQ0FOQ0VMID0gJ1JldG91cm5lciDDoCBsYSBwcmVzdGF0aW9uJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmb2Vobi1wYWdlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZm9laG4tcGFnZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9laG4tcGFnZS5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRm9laG5QYWdlQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkNoYW5nZXMsIE9uSW5pdCB7XG4gICAgQElucHV0KClcbiAgICBhcHBUaXRsZTogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBmb290ZXJMaW5rczogRm9vdGVyTGlua1tdO1xuXG4gICAgQElucHV0KClcbiAgICBzdXBwb3J0QWxlcnRFbmFibGVkID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgZHJhZnRzRW5hYmxlZCA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBzdXBwb3J0QWxlcnRVcmw6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgZHJhZnRzVXJsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIGV0YXBlSWQ6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgdXNlckNvbm5lY3RlZEFzRGlzcGxheWVkID0gdHJ1ZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc3RhdHVzUHJvZ3Jlc3NCYXJIaWRkZW46IGJvb2xlYW47XG5cbiAgICBASW5wdXQoKVxuICAgIGNvbmZpcm1MZWF2aW5nQWxlcnQ6IEZvZWhuQ29uZmlybU1vZGFsQ29udGVudCA9IHtcbiAgICAgICAgaHRtbENvbnRlbnQ6IExFQVZJTkdfQUxFUlRfQ09OVEVOVCxcbiAgICAgICAgb2tCdXR0b25MYWJlbDogTEVBVklOR19BTEVSVF9PSyxcbiAgICAgICAgY2FuY2VsQnV0dG9uTGFiZWw6IExFQVZJTkdfQUxFUlRfQ0FOQ0VMXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIElmIHNldCB0byAnZmFsc2UnLCBoaWRlIHRoZSBkZWZhdWx0IENvbnRhY3QgbGluayBpbiB0aGUgZm9vdGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0RlZmF1bHRDb250YWN0Rm9vdGVyTGluayA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBJZiBzZXQgdG8gJ2ZhbHNlJywgaGlkZSB0aGUgZGVmYXVsdCBHdWlkZSBsaW5rIGluIHRoZSBmb290ZXIuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzaG93RGVmYXVsdEd1aWRlRm9vdGVyTGluayA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBJZiBzZXQgdG8gJ2ZhbHNlJywgaGlkZSB0aGUgZGVmYXVsdCBUZXJtcyBvZiB1c2UgbGluay5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dEZWZhdWx0VGVybU9mVXNlTGluayA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBJZiBzZXQgdG8gJ2ZhbHNlJywgaGlkZSB0aGUgZGVmYXVsdCBTZWN1cml0eSBCZXN0IFByYWN0aWNlIGxpbmsuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzaG93RGVmYXVsdFNlY3VyaXR5QmVzdFByYWN0aWNlTGluayA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHJvdXRlckxpbmtBcHBUaXRsZTogc3RyaW5nO1xuXG4gICAgcGFnZVRpdGxlOiBzdHJpbmc7XG5cbiAgICBoYXNCbG9ja2luZ1N1cHBvcnRBbGVydDogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAgIGRpc3BsYXlVc2VyQ2F0ZWdvcnk6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBzaG93U2VjdXJlZEFyZWFMb2dpbkJ1dHRvbjogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAgIGxvZ2luTWVzc2FnZXNIaWRkZW4gPSBmYWxzZTtcblxuICAgIGlzQnJvd3NlclN1cHBvcnRlZDogYm9vbGVhbjtcblxuICAgIGlzQXBwbGVQbGF0Zm9ybTogYm9vbGVhbjtcblxuICAgIGJyb3dzZXJMaW5rVGl0bGVQcmVmaXggPVxuICAgICAgICAnTGllbiBwb3VyIGxlIHTDqWzDqWNoYXJnZW1lbnQgZHUgbmF2aWdhdGV1ciBpbnRlcm5ldCc7XG5cbiAgICBicm93c2VyTm90U3VwcG9ydGVkQnlwYXNzID0gZmFsc2U7XG5cbiAgICBkaXNwbGF5RGVtYW5kZUV4cGlyYXRpb25UaW1lcjogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgYmxvY2tlZFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgX3RpdGxlU2VydmljZTogVGl0bGUsXG4gICAgICAgIHByaXZhdGUgZm9laG5QYWdlU2VydmljZTogRm9laG5QYWdlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzdXBwb3J0QWxlcnRTZXJ2aWNlOiBTdXBwb3J0QWxlcnRTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGZvZWhuTmF2aWdhdGlvblNlcnZpY2U6IEZvZWhuTmF2aWdhdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYXBwbGljYXRpb25JbmZvU2VydmljZTogQXBwbGljYXRpb25JbmZvU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBnZXNkZW1FdmVudFNlcnZpY2U6IEdlc2RlbUV2ZW50U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBicmVhZGNydW1iU2VydmljZTogQnJlYWRjcnVtYkV2ZW50U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSBzZXNzaW9uSW5mbzogU2Vzc2lvbkluZm8sXG4gICAgICAgIHByaXZhdGUgZm9laG5QYWdlTW9kYWxTZXJ2aWNlOiBGb2VoblBhZ2VNb2RhbFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgc2RrRGljdGlvbmFyeVNlcnZpY2U6IFNka0RpY3Rpb25hcnlTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHN0YXRpc3RpY3NTZXJ2aWNlOiBTZGtTdGF0aXN0aWNzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBkZW1hbmRlRXhwaXJhdGlvblNlcnZpY2U6IERlbWFuZGVFeHBpcmF0aW9uU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmhhc0Jsb2NraW5nU3VwcG9ydEFsZXJ0ID0gc3VwcG9ydEFsZXJ0U2VydmljZS5nZXRIYXNBdExlYXN0T25lQmxvY2tpbmdBbGVydCgpO1xuXG4gICAgICAgIHRoaXMuYmxvY2tlZFN1YnNjcmlwdGlvbiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgdGhpcy5mb2VoblBhZ2VTZXJ2aWNlLmZvZWhuUGFnZU9ic2VydmFibGUoKSxcbiAgICAgICAgICAgIC8vIEVuc3VyZXMgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHZhbHVlIGluIHRoZSBvYnNlcnZhYmxlLlxuICAgICAgICAgICAgbWVyZ2Uob2YoZmFsc2UpLCB0aGlzLmhhc0Jsb2NraW5nU3VwcG9ydEFsZXJ0KVxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMtYW5ndWxhci9wcmVmZXItYXN5bmMtcGlwZVxuICAgICAgICBdKS5zdWJzY3JpYmUoKFt0aXRsZSwgYmxvY2tlZF0pID0+IHtcbiAgICAgICAgICAgIGlmIChibG9ja2VkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRQYWdlVGl0bGUoJ1ByZXN0YXRpb24gaW5kaXNwb25pYmxlJyk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRpdGxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRQYWdlVGl0bGUodGl0bGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5pc0Jyb3dzZXJTdXBwb3J0ZWQgPSBzdXBwb3J0ZWRCcm93c2Vycy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuICAgICAgICB0aGlzLmlzQXBwbGVQbGF0Zm9ybSA9IC8oTWFjfGlQaG9uZXxpUG9kfGlQYWQpL2kudGVzdChcbiAgICAgICAgICAgIG5hdmlnYXRvci5wbGF0Zm9ybVxuICAgICAgICApO1xuXG4gICAgICAgIHN0YXRpc3RpY3NTZXJ2aWNlLnRyYWNrKCk7XG5cbiAgICAgICAgdGhpcy5kaXNwbGF5RGVtYW5kZUV4cGlyYXRpb25UaW1lciA9IHRoaXMuZGVtYW5kZUV4cGlyYXRpb25TZXJ2aWNlLnNob3VsZERpc3BsYXlFeHBpcmF0aW9uVGltZXJNZXNzYWdlKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0Jyb3dzZXJTdXBwb3J0ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHBhZ2VUaXRsZSA9ICdOYXZpZ2F0ZXVyIG5vbiBzdXBwb3J0w6knO1xuICAgICAgICAgICAgdGhpcy5mb2VoblBhZ2VTZXJ2aWNlLnNldFBhZ2VUaXRsZShwYWdlVGl0bGUpO1xuICAgICAgICAgICAgdGhpcy5icmVhZGNydW1iU2VydmljZS5zZXRDdXJyZW50QnJlYWRjcnVtYih7XG4gICAgICAgICAgICAgICAgdXJsOiBudWxsLFxuICAgICAgICAgICAgICAgIHJvdXRlckxpbms6IG51bGwsXG4gICAgICAgICAgICAgICAgbGFiZWw6IHBhZ2VUaXRsZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBpc0luaXRpYWxTdGVwID0gdGhpcy5hcHBsaWNhdGlvbkluZm9TZXJ2aWNlLmN1cnJlbnRFdGFwZUluZm8ucGlwZShcbiAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAoY3VycmVudEV0YXBlSW5mbzogRXRhcGVJbmZvKSA9PlxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RXRhcGVJbmZvICYmXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFdGFwZUluZm8uaWRNZXRpZXJFdGFwZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFdGFwZUluZm8uaWRNZXRpZXJQcmVzdGF0aW9uXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gY29uc3QgbmF2aWdhdGlvblVwZGF0ZTogT2JzZXJ2YWJsZTxhbnk+ID0gb2YgKHRydWUpXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGNvbnN0IG5hdmlnYXRpb25VcGRhdGU6IE9ic2VydmFibGU8YW55PiA9IHRoaXMucm91dGVyLmV2ZW50cy5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKGV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZClcbiAgICAgICAgKTtcblxuICAgICAgICAvLyBFbnN1cmVzIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSB2YWx1ZSBpbiB0aGUgb2JzZXJ2YWJsZS5cbiAgICAgICAgY29uc3QgbmF2aWdhdGlvbkFuZEluaXQgPSBtZXJnZShvZih0cnVlKSwgbmF2aWdhdGlvblVwZGF0ZSk7XG4gICAgICAgIGNvbnN0IGZvcm1UcmFuc21pdHRlZCA9IG1lcmdlKFxuICAgICAgICAgICAgb2YodW5kZWZpbmVkKSxcbiAgICAgICAgICAgIHRoaXMuZ2VzZGVtRXZlbnRTZXJ2aWNlLmZvcm1UcmFuc21pdHRlZE9ic2VydmFibGUoKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuZGlzcGxheVVzZXJDYXRlZ29yeSA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgaXNJbml0aWFsU3RlcCxcbiAgICAgICAgICAgIHRoaXMuZm9laG5OYXZpZ2F0aW9uU2VydmljZS5oYXNCZWVuSW5pdGlhbGl6ZWQoKSxcbiAgICAgICAgICAgIGZvcm1UcmFuc21pdHRlZCxcbiAgICAgICAgICAgIG5hdmlnYXRpb25BbmRJbml0XG4gICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICBkZWJvdW5jZVRpbWUoMCksIC8vIHdpdGhvdXQgZGVib3VuY2VUaW1lLCB0aGUgb3V0Y29tZSBpcyBsZXNzIGVmZmVjdGl2ZS4uLlxuICAgICAgICAgICAgbWFwKChbaW5pdGlhbFN0ZXAsIG5hdlNlcnZpY2VJbml0aWFsaXplZCwgYmFja2VuZFJlc3BvbnNlXSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChuYXZTZXJ2aWNlSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNGaXJzdFBhZ2UgPSB0aGlzLmZvZWhuTmF2aWdhdGlvblNlcnZpY2UuaXNGaXJzdEZvcm1QYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTGFzdFBhZ2UgPSB0aGlzLmZvZWhuTmF2aWdhdGlvblNlcnZpY2UuaXNMYXN0Rm9ybVBhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNDdXJyZW50Um91dGVEZWZpbmVkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9laG5OYXZpZ2F0aW9uU2VydmljZS5nZXRDdXJyZW50Um91dGVJbmRleCgpICE9PVxuICAgICAgICAgICAgICAgICAgICAgICAgbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZm9laG5QYWdlU2VydmljZS5pc1VzZXJDYXRlZ29yeVZpc2libGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0ZpcnN0UGFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTGFzdFBhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnVzZXJDb25uZWN0ZWRBc0Rpc3BsYXllZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWxTdGVwLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXNzaW9uSW5mby5uZXZlckNvbm5lY3RlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tlbmRSZXNwb25zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzQ3VycmVudFJvdXRlRGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGZvcm1Jbml0aWFsaXphdGlvbk9ic2VydmFibGUgPSBtZXJnZShcbiAgICAgICAgICAgIG9mKHVuZGVmaW5lZCksXG4gICAgICAgICAgICB0aGlzLmdlc2RlbUV2ZW50U2VydmljZS5mb3JtSW5pdGlhbGl6YXRpb25PYnNlcnZhYmxlKClcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAodGhpcy5zZXNzaW9uSW5mby5uZXZlckNvbm5lY3RlZCkge1xuICAgICAgICAgICAgdGhpcy5zaG93U2VjdXJlZEFyZWFMb2dpbkJ1dHRvbiA9IG9mKGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd1NlY3VyZWRBcmVhTG9naW5CdXR0b24gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICBmb3JtSW5pdGlhbGl6YXRpb25PYnNlcnZhYmxlLFxuICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvbkluZm8uZGF0YSxcbiAgICAgICAgICAgICAgICB0aGlzLmFwcGxpY2F0aW9uSW5mb1NlcnZpY2UuY3VycmVudEV0YXBlSW5mb1xuICAgICAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgICAgICBkZWJvdW5jZVRpbWUoMCksIC8vIHdpdGhvdXQgZGVib3VuY2VUaW1lLCB0aGUgb3V0Y29tZSBpcyBsZXNzIGVmZmVjdGl2ZS4uLlxuICAgICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAgICAgKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Jbml0aWFsaXphdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25JbmZvRGF0YSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRFdGFwZUluZm9cbiAgICAgICAgICAgICAgICAgICAgXSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNDb25uZWN0ZWRDeWJlck9ySWFtID0gISFzZXNzaW9uSW5mb0RhdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0xhc3RQYWdlID0gdGhpcy5mb2Vobk5hdmlnYXRpb25TZXJ2aWNlLmlzTGFzdEZvcm1QYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0Nvbm5lY3RlZEN5YmVyT3JJYW0gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhY3VycmVudEV0YXBlSW5mby5kZXBsb3llZUN5YmVyIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgISFmb3JtSW5pdGlhbGl6YXRpb24gfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0xhc3RQYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZXRhcGVJZENoYW5nZSA9IGNoYW5nZXMuZXRhcGVJZDtcbiAgICAgICAgaWYgKGV0YXBlSWRDaGFuZ2UgJiYgZXRhcGVJZENoYW5nZS5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuZm9laG5QYWdlU2VydmljZS5zZXRDdXJyZW50RXRhcGVJZChldGFwZUlkQ2hhbmdlLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhcHBUaXRsZUNoYW5nZSA9IGNoYW5nZXMuYXBwVGl0bGU7XG4gICAgICAgIGlmIChhcHBUaXRsZUNoYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5fdGl0bGVTZXJ2aWNlLnNldFRpdGxlKGFwcFRpdGxlQ2hhbmdlLmN1cnJlbnRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYmxvY2tlZFN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgdGhpcy5ibG9ja2VkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRGdWxsTG9naW5VcmwoKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9laG5QYWdlTW9kYWxTZXJ2aWNlLmJ1aWxkU2VsZlJlZGlyZWN0aW9uVGhyb3VnaEN5YmVyTG9naW4oKTtcbiAgICB9XG5cbiAgICBnZXRGdWxsTG9naW5NZXNzYWdlKFxuICAgICAgICBkZWNpc2lvbkVsZWN0cm9uaXF1ZUF2YWlsYWJsZTogYm9vbGVhblxuICAgICk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIGlmIChkZWNpc2lvbkVsZWN0cm9uaXF1ZUF2YWlsYWJsZSkge1xuICAgICAgICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICAgICAgICAgIHRoaXMuc2RrRGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5KCd1c2UtbG9naW4udGV4dCcpLFxuICAgICAgICAgICAgICAgIHRoaXMuc2RrRGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5KFxuICAgICAgICAgICAgICAgICAgICAndXNlLWxvZ2luLnRleHQuZGVjaXNpb24tZWxlY3Ryb25pcXVlLWF2YWlsYWJsZSdcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICBdKS5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChcbiAgICAgICAgICAgICAgICAgICAgKFtsb2dpbk1zZywgZGVjaXNpb25FbGVjdHJvbmlxdWVBdmFpbGFibGVNc2ddKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgYCR7bG9naW5Nc2d9PGJyLz48YnIvPiR7ZGVjaXNpb25FbGVjdHJvbmlxdWVBdmFpbGFibGVNc2d9YFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuc2RrRGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5KCd1c2UtbG9naW4udGV4dCcpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0UGFnZVRpdGxlKHRpdGxlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYWdlVGl0bGUgPSB0aXRsZTtcbiAgICB9XG59XG4iLCI8Zm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyXG4gICAgKm5nSWY9XCIoZGlzcGxheURlbWFuZGVFeHBpcmF0aW9uVGltZXIgfCBhc3luYykgPT09IHRydWVcIlxuICAgIGlkPVwiZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyXCJcbj48L2ZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lcj5cbjxmb2Vobi1oZWFkZXJcbiAgICBpZD1cImZvZWhuX2hlYWRlclwiXG4gICAgW3RpdGxlXT1cImFwcFRpdGxlXCJcbiAgICBbcm91dGVyTGlua0FwcFRpdGxlXT1cInJvdXRlckxpbmtBcHBUaXRsZVwiXG4gICAgW3Nob3dTZWN1cmVkQXJlYUxvZ2luQnV0dG9uXT1cInNob3dTZWN1cmVkQXJlYUxvZ2luQnV0dG9uIHwgYXN5bmNcIlxuPjwvZm9laG4taGVhZGVyPlxuPGZvZWhuLWdyb3dsIGlkPVwiZm9laG5fZ3Jvd2xcIj48L2ZvZWhuLWdyb3dsPlxuPGRpdiBjbGFzcz1cInZkLWJnLXBhdHRlcm4tZ3JheVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgICAgPGZvZWhuLWJyZWFkY3J1bWJcbiAgICAgICAgICAgIFtjb25maXJtTGVhdmluZ0FsZXJ0XT1cImNvbmZpcm1MZWF2aW5nQWxlcnRcIlxuICAgICAgICA+PC9mb2Vobi1icmVhZGNydW1iPlxuICAgIDwvZGl2PlxuPC9kaXY+XG48bWFpbiBpZD1cIm1haW5cIj5cbiAgICA8ZGl2IGNsYXNzPVwidmQtYmctcGF0dGVybi1ncmF5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgICAgICAgIDwhLS0gRml4IGFubm95aW5nIGZsaWNrZXJpbmcgd2hlbiB0aGUgcGFnZSBsb2FkcyAtLT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoMSBtdC0wXCIgKm5nSWY9XCIhcGFnZVRpdGxlXCI+Jm5ic3A7PC9kaXY+XG4gICAgICAgICAgICA8aDFcbiAgICAgICAgICAgICAgICBbdGFiSW5kZXhdPVwiLTFcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtMFwiXG4gICAgICAgICAgICAgICAgaWQ9XCJwYWdlLXRpdGxlXCJcbiAgICAgICAgICAgICAgICAqbmdJZj1cIiEhcGFnZVRpdGxlXCJcbiAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInBhZ2VUaXRsZVwiXG4gICAgICAgICAgICA+PC9oMT5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8Zm9laG4tc3RhdHVzLXByb2dyZXNzLWJhclxuICAgICAgICBbaGlkZGVuXT1cIlxuICAgICAgICAgICAgc3RhdHVzUHJvZ3Jlc3NCYXJIaWRkZW4gfHwgISEoaGFzQmxvY2tpbmdTdXBwb3J0QWxlcnQgfCBhc3luYylcbiAgICAgICAgXCJcbiAgICA+PC9mb2Vobi1zdGF0dXMtcHJvZ3Jlc3MtYmFyPlxuXG4gICAgPHNlY3Rpb25cbiAgICAgICAgKm5nSWY9XCIhaXNCcm93c2VyU3VwcG9ydGVkXCJcbiAgICAgICAgY2xhc3M9XCJjb250YWluZXIgYWxlcnQgYWxlcnQtZGFuZ2VyXCJcbiAgICAgICAgaWQ9XCJicm93c2VyX25vdF9zdXBwb3J0ZWRfYmxvY2tcIlxuICAgICAgICByb2xlPVwiYWxlcnRcIlxuICAgID5cbiAgICAgICAgPHAgY2xhc3M9XCJhbGVydC1oZWFkaW5nXCI+XG4gICAgICAgICAgICA8c3Ryb25nPlxuICAgICAgICAgICAgICAgIHt7ICdmb2Vobi1wYWdlLmJyb3dzZXItbm90LXN1cHBvcnRlZCcgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgPC9zdHJvbmc+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPHAgY2xhc3M9XCJtYi0wXCI+XG4gICAgICAgICAgICB7eyAnZm9laG4tcGFnZS5icm93c2VyLWRvd25sb2FkLWludml0YXRpb24nIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNBcHBsZVBsYXRmb3JtXCI+XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImJyb3dzZXJMaW5rVGl0bGVQcmVmaXggKyAnIEVkZ2UnXCJcbiAgICAgICAgICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vd3d3Lm1pY3Jvc29mdC5jb20vZnItY2gvd2luZG93cy9taWNyb3NvZnQtZWRnZVwiXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBFZGdlXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2ZvZWhuLXBhZ2UuZXh0ZXJuYWwtbGluay5zck9ubHknIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWV4dGVybmFsLWxpbmstYWx0PjwvZm9laG4taWNvbi1leHRlcm5hbC1saW5rLWFsdD5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAsXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0FwcGxlUGxhdGZvcm1cIj5cbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBbdGl0bGVdPVwiYnJvd3NlckxpbmtUaXRsZVByZWZpeCArICcgU2FmYXJpJ1wiXG4gICAgICAgICAgICAgICAgICAgIGhyZWY9XCJodHRwczovL3N1cHBvcnQuYXBwbGUuY29tL2Rvd25sb2Fkcy9zYWZhcmlcIlxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgU2FmYXJpXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2ZvZWhuLXBhZ2UuZXh0ZXJuYWwtbGluay5zck9ubHknIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWV4dGVybmFsLWxpbmstYWx0PjwvZm9laG4taWNvbi1leHRlcm5hbC1saW5rLWFsdD5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAsXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cImJyb3dzZXJMaW5rVGl0bGVQcmVmaXggKyAnIEZpcmVmb3gnXCJcbiAgICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly93d3cubW96aWxsYS5vcmcvZnIvZmlyZWZveC9cIlxuICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgRmlyZWZveFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnZm9laG4tcGFnZS5leHRlcm5hbC1saW5rLnNyT25seScgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZvZWhuLWljb24tZXh0ZXJuYWwtbGluay1hbHQ+PC9mb2Vobi1pY29uLWV4dGVybmFsLWxpbmstYWx0PlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIHt7ICdmb2Vobi1wYWdlLmJyb3dzZXItZG93bmxvYWQtbGlzdC5vdScgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiYnJvd3NlckxpbmtUaXRsZVByZWZpeCArICcgQ2hyb21lJ1wiXG4gICAgICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vaW50bC9mci9jaHJvbWUvXCJcbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIENocm9tZVxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnZm9laG4tcGFnZS5leHRlcm5hbC1saW5rLnNyT25seScgfCBmcm9tRGljdGlvbmFyeSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGZvZWhuLWljb24tZXh0ZXJuYWwtbGluay1hbHQ+PC9mb2Vobi1pY29uLWV4dGVybmFsLWxpbmstYWx0PlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIC5cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG10LTNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGlkPVwiYnJvd3Nlcl9ub3Rfc3VwcG9ydGVkX2J5cGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxvYXQtcmlnaHQgYnRuIGJ0bi1kYW5nZXJcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFicm93c2VyTm90U3VwcG9ydGVkQnlwYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImJyb3dzZXJOb3RTdXBwb3J0ZWRCeXBhc3MgPSB0cnVlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgICAnZm9laG4tcGFnZS5jb250aW51ZS13aXRoLXNhbWUtYnJvd3NlcicgfCBmcm9tRGljdGlvbmFyeVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvc2VjdGlvbj5cblxuICAgIDxzZGstc3VwcG9ydC1hbGVydC1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJzdXBwb3J0QWxlcnRFbmFibGVkXCJcbiAgICAgICAgW2V0YXBlSWRdPVwiZXRhcGVJZFwiXG4gICAgICAgIFtzdXBwb3J0QWxlcnRVcmxdPVwic3VwcG9ydEFsZXJ0VXJsXCJcbiAgICA+PC9zZGstc3VwcG9ydC1hbGVydC1jb250YWluZXI+XG4gICAgPHNkay1kcmFmdHMtY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiZHJhZnRzRW5hYmxlZFwiXG4gICAgICAgIFtldGFwZUlkXT1cImV0YXBlSWRcIlxuICAgICAgICBbZHJhZnRzVXJsXT1cImRyYWZ0c1VybFwiXG4gICAgPjwvc2RrLWRyYWZ0cy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgIShoYXNCbG9ja2luZ1N1cHBvcnRBbGVydCB8IGFzeW5jKSAmJlxuICAgICAgICAgICAgKGlzQnJvd3NlclN1cHBvcnRlZCB8fCBicm93c2VyTm90U3VwcG9ydGVkQnlwYXNzKVxuICAgICAgICBcIlxuICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRhaW5lciBtdC01XCIgaWQ9XCJwYWdlX2NvbnRlbnRcIj5cbiAgICAgICAgICAgIDxmb2Vobi11c2VyLWNvbm5lY3RlZC1hc1xuICAgICAgICAgICAgICAgICpuZ0lmPVwiZGlzcGxheVVzZXJDYXRlZ29yeSB8IGFzeW5jXCJcbiAgICAgICAgICAgID48L2ZvZWhuLXVzZXItY29ubmVjdGVkLWFzPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9tYWluPlxuPGZvZWhuLWZvb3RlclxuICAgIGlkPVwiZm9laG5fZm9vdGVyXCJcbiAgICBbbGlua3NdPVwiZm9vdGVyTGlua3NcIlxuICAgIFtzaG93RGVmYXVsdENvbnRhY3RMaW5rXT1cInNob3dEZWZhdWx0Q29udGFjdEZvb3RlckxpbmtcIlxuICAgIFtzaG93RGVmYXVsdEd1aWRlTGlua109XCJzaG93RGVmYXVsdEd1aWRlRm9vdGVyTGlua1wiXG4gICAgW3Nob3dEZWZhdWx0VGVybU9mVXNlTGlua109XCJzaG93RGVmYXVsdFRlcm1PZlVzZUxpbmtcIlxuICAgIFtzaG93RGVmYXVsdFNlY3VyaXR5QmVzdFByYWN0aWNlTGlua109XCJzaG93RGVmYXVsdFNlY3VyaXR5QmVzdFByYWN0aWNlTGlua1wiXG4+PC9mb2Vobi1mb290ZXI+XG48Zm9laG4tcGFnZS1tb2RhbD48L2ZvZWhuLXBhZ2UtbW9kYWw+XG48Zm9laG4tY29uZmlybS1tb2RhbD48L2ZvZWhuLWNvbmZpcm0tbW9kYWw+XG4iXX0=
221
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9laG4tcGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvZm9laG4tcGFnZS9mb2Vobi1wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9mb2Vobi1wYWdlL2ZvZWhuLXBhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCxLQUFLLEVBS1IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFjLEVBQUUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFjM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUl6RCxNQUFNLHFCQUFxQixHQUN2QixrSEFBa0gsQ0FBQztBQUN2SCxNQUFNLGdCQUFnQixHQUFHLDZCQUE2QixDQUFDO0FBQ3ZELE1BQU0sb0JBQW9CLEdBQUcsMkJBQTJCLENBQUM7QUFPekQsTUFBTSxPQUFPLGtCQUFrQjtJQXFGM0IsWUFDWSxhQUFvQixFQUNwQixnQkFBa0MsRUFDbEMsbUJBQXdDLEVBQ3hDLHNCQUE4QyxFQUM5QyxzQkFBOEMsRUFDOUMsa0JBQXNDLEVBQ3RDLGlCQUF5QyxFQUN6QyxNQUFjLEVBQ2QsV0FBd0IsRUFDeEIscUJBQTRDLEVBQzVDLG9CQUEwQyxFQUMxQyxpQkFBdUMsRUFDdkMsd0JBQWtEO1FBWmxELGtCQUFhLEdBQWIsYUFBYSxDQUFPO1FBQ3BCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQXdCO1FBQ3pDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QiwwQkFBcUIsR0FBckIscUJBQXFCLENBQXVCO1FBQzVDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQUN2Qyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBMUY5RCx3QkFBbUIsR0FBRyxJQUFJLENBQUM7UUFHM0Isa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFZdEIsNkJBQXdCLEdBQUcsSUFBSSxDQUFDO1FBTWhDLHdCQUFtQixHQUE2QjtZQUM1QyxXQUFXLEVBQUUscUJBQXFCO1lBQ2xDLGFBQWEsRUFBRSxnQkFBZ0I7WUFDL0IsaUJBQWlCLEVBQUUsb0JBQW9CO1NBQzFDLENBQUM7UUFFRjs7V0FFRztRQUVILGlDQUE0QixHQUFHLElBQUksQ0FBQztRQUVwQzs7V0FFRztRQUVILCtCQUEwQixHQUFHLElBQUksQ0FBQztRQUVsQzs7V0FFRztRQUVILDZCQUF3QixHQUFHLElBQUksQ0FBQztRQUVoQzs7V0FFRztRQUVILHdDQUFtQyxHQUFHLElBQUksQ0FBQztRQWEzQyx3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFNNUIsMkJBQXNCLEdBQ2xCLG9EQUFvRCxDQUFDO1FBRXpELDhCQUF5QixHQUFHLEtBQUssQ0FBQztRQXFCOUIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLG1CQUFtQixDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFFbkYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLGFBQWEsQ0FBQztZQUNyQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLEVBQUU7WUFDM0MseURBQXlEO1lBQ3pELEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1lBQzlDLDBEQUEwRDtTQUM3RCxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRTtZQUM5QixJQUFJLE9BQU8sRUFBRTtnQkFDVCxJQUFJLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDLENBQUM7YUFDaEQ7aUJBQU0sSUFBSSxLQUFLLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM1QjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLGVBQWUsR0FBRyx5QkFBeUIsQ0FBQyxJQUFJLENBQ2pELFNBQVMsQ0FBQyxRQUFRLENBQ3JCLENBQUM7UUFFRixpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUxQixJQUFJLENBQUMsNkJBQTZCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLG1DQUFtQyxFQUFFLENBQUM7SUFDN0csQ0FBQztJQUVELFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzFCLE1BQU0sU0FBUyxHQUFHLHlCQUF5QixDQUFDO1lBQzVDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDO2dCQUN4QyxHQUFHLEVBQUUsSUFBSTtnQkFDVCxVQUFVLEVBQUUsSUFBSTtnQkFDaEIsS0FBSyxFQUFFLFNBQVM7YUFDbkIsQ0FBQyxDQUFDO1NBQ047UUFFRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUNuRSxHQUFHLENBQ0MsQ0FBQyxnQkFBMkIsRUFBRSxFQUFFLENBQzVCLGdCQUFnQjtZQUNoQixnQkFBZ0IsQ0FBQyxhQUFhO2dCQUMxQixnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FDOUMsQ0FDSixDQUFDO1FBRUYsc0RBQXNEO1FBQ3RELDhEQUE4RDtRQUM5RCxNQUFNLGdCQUFnQixHQUFvQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQzdELE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssWUFBWSxhQUFhLENBQUMsQ0FDbEQsQ0FBQztRQUVGLHlEQUF5RDtRQUN6RCxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUM1RCxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQ3pCLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFDYixJQUFJLENBQUMsa0JBQWtCLENBQUMseUJBQXlCLEVBQUUsQ0FDdEQsQ0FBQztRQUVGLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxhQUFhLENBQUM7WUFDckMsYUFBYTtZQUNiLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsRUFBRTtZQUNoRCxlQUFlO1lBQ2YsaUJBQWlCO1NBQ3BCLENBQUMsQ0FBQyxJQUFJLENBQ0gsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLHlEQUF5RDtRQUMxRSxHQUFHLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxlQUFlLENBQUMsRUFBRSxFQUFFO1lBQzFELElBQUkscUJBQXFCLEVBQUU7Z0JBQ3ZCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDbEUsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNoRSxNQUFNLHFCQUFxQixHQUN2QixJQUFJLENBQUMsc0JBQXNCLENBQUMsb0JBQW9CLEVBQUU7b0JBQ2xELElBQUksQ0FBQztnQkFDVCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FDOUMsV0FBVyxFQUNYLFVBQVUsRUFDVixJQUFJLENBQUMsd0JBQXdCLEVBQzdCLFdBQVcsRUFDWCxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsRUFDL0IsZUFBZSxFQUNmLHFCQUFxQixDQUN4QixDQUFDO2FBQ0w7WUFDRCxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FDTCxDQUFDO1FBRUYsTUFBTSw0QkFBNEIsR0FBRyxLQUFLLENBQ3RDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFDYixJQUFJLENBQUMsa0JBQWtCLENBQUMsNEJBQTRCLEVBQUUsQ0FDekQsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUU7WUFDakMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUMvQzthQUFNO1lBQ0gsSUFBSSxDQUFDLDBCQUEwQixHQUFHLGFBQWEsQ0FBQztnQkFDNUMsNEJBQTRCO2dCQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUk7Z0JBQ3JCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0I7YUFDL0MsQ0FBQyxDQUFDLElBQUksQ0FDSCxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUseURBQXlEO1lBQzFFLEdBQUcsQ0FDQyxDQUFDLENBQ0csa0JBQWtCLEVBQ2xCLGVBQWUsRUFDZixnQkFBZ0IsQ0FDbkIsRUFBRSxFQUFFO2dCQUNELE1BQU0scUJBQXFCLEdBQUcsQ0FBQyxDQUFDLGVBQWUsQ0FBQztnQkFDaEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNoRSxPQUFPLENBQUMsQ0FDSixxQkFBcUI7b0JBQ3JCLENBQUMsZ0JBQWdCLENBQUMsYUFBYTtvQkFDL0IsQ0FBQyxDQUFDLGtCQUFrQjtvQkFDcEIsVUFBVSxDQUNiLENBQUM7WUFDTixDQUFDLENBQ0osQ0FDSixDQUFDO1NBQ0w7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQzlCLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDdEMsSUFBSSxhQUFhLElBQUksYUFBYSxDQUFDLFlBQVksRUFBRTtZQUM3QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ3ZFO1FBRUQsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQztRQUN4QyxJQUFJLGNBQWMsRUFBRTtZQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDNUQ7SUFDTCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFO1lBQzFCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUMxQztJQUNMLENBQUM7SUFFRCxlQUFlO1FBQ1gsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMscUNBQXFDLEVBQUUsQ0FBQztJQUM5RSxDQUFDO0lBRUQsbUJBQW1CLENBQ2YsNkJBQXNDO1FBRXRDLElBQUksNkJBQTZCLEVBQUU7WUFDL0IsT0FBTyxhQUFhLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQzVCLGdEQUFnRCxDQUNuRDthQUNKLENBQUMsQ0FBQyxJQUFJLENBQ0gsR0FBRyxDQUNDLENBQUMsQ0FBQyxRQUFRLEVBQUUsZ0NBQWdDLENBQUMsRUFBRSxFQUFFLENBQzdDLEdBQUcsUUFBUSxhQUFhLGdDQUFnQyxFQUFFLENBQ2pFLENBQ0osQ0FBQztTQUNMO1FBQ0QsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVPLFlBQVksQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7O2dIQXRRUSxrQkFBa0I7b0dBQWxCLGtCQUFrQiwydEJDdkMvQixpaE1Bb0tBOzRGRDdIYSxrQkFBa0I7a0JBTDlCLFNBQVM7K0JBQ0ksWUFBWTtpZkFNdEIsUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBSU4sYUFBYTtzQkFEWixLQUFLO2dCQUlOLGVBQWU7c0JBRGQsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLHdCQUF3QjtzQkFEdkIsS0FBSztnQkFJTix1QkFBdUI7c0JBRHRCLEtBQUs7Z0JBSU4sbUJBQW1CO3NCQURsQixLQUFLO2dCQVdOLDRCQUE0QjtzQkFEM0IsS0FBSztnQkFPTiwwQkFBMEI7c0JBRHpCLEtBQUs7Z0JBT04sd0JBQXdCO3NCQUR2QixLQUFLO2dCQU9OLG1DQUFtQztzQkFEbEMsS0FBSztnQkFJTixrQkFBa0I7c0JBRGpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcbmltcG9ydCB7IE5hdmlnYXRpb25FbmQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBmaWx0ZXIsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgQnJlYWRjcnVtYkV2ZW50U2VydmljZSB9IGZyb20gJy4uL2ZvZWhuLWJyZWFkY3J1bWIvYnJlYWRjcnVtYi1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEZvZWhuQ29uZmlybU1vZGFsQ29udGVudCB9IGZyb20gJy4uL2ZvZWhuLWNvbmZpcm0tbW9kYWwvZm9laG4tY29uZmlybS1tb2RhbC1jb250ZW50JztcbmltcG9ydCB7IEZvb3RlckxpbmsgfSBmcm9tICcuLi9mb2Vobi1mb290ZXIvZm9vdGVyLWxpbmsudHlwZSc7XG5pbXBvcnQgeyBGb2Vobk5hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vZm9laG4tbmF2aWdhdGlvbi9mb2Vobi1uYXZpZ2F0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9laG5QYWdlTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vZm9laG4tcGFnZS9mb2Vobi1wYWdlLW1vZGFsLnNlcnZpY2UnO1xuaW1wb3J0IHsgR2VzZGVtRXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vZ2VzZGVtL2dlc2RlbS1ldmVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEV0YXBlSW5mbyB9IGZyb20gJy4uL3Nkay1hcHBpbmZvL2FwcGxpY2F0aW9uLWluZm8nO1xuaW1wb3J0IHsgQXBwbGljYXRpb25JbmZvU2VydmljZSB9IGZyb20gJy4uL3Nkay1hcHBpbmZvL2FwcGxpY2F0aW9uLWluZm8uc2VydmljZSc7XG5pbXBvcnQgeyBTZGtEaWN0aW9uYXJ5U2VydmljZSB9IGZyb20gJy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgU2Vzc2lvbkluZm8gfSBmcm9tICcuLi9zZGstc2Vzc2lvbi1pbmZvL3Nlc3Npb24taW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IFNka1N0YXRpc3RpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLXN0YXRpc3RpY3Mvc2RrLXN0YXRpc3RpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBTdXBwb3J0QWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLXN1cHBvcnQtYWxlcnQvc3VwcG9ydC1hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IHN1cHBvcnRlZEJyb3dzZXJzIH0gZnJvbSAnLi4vc3VwcG9ydGVkLWJyb3dzZXInO1xuaW1wb3J0IHsgRm9laG5QYWdlU2VydmljZSB9IGZyb20gJy4vZm9laG4tcGFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IERlbWFuZGVFeHBpcmF0aW9uU2VydmljZSB9IGZyb20gJy4vZm9laG4tcGFnZS1leHBpcmF0aW9uLXRpbWVyL2RlbWFuZGUtZXhwaXJhdGlvbi5zZXJ2aWNlJztcblxuY29uc3QgTEVBVklOR19BTEVSVF9DT05URU5UID1cbiAgICAnQ2UgY2hhbmdlbWVudCBkZSBwYWdlIGVudHJhaW5lIHVuZSBwZXJ0ZSBkZXMgZG9ubsOpZXMgbm9uIHNhdXZlZ2FyZMOpZXMuPGJyLz5Tb3VoYWl0ZXotdm91cyBxdWFuZCBtw6ptZSBjb250aW51ZXIgPyc7XG5jb25zdCBMRUFWSU5HX0FMRVJUX09LID0gJ1BvdXJzdWl2cmUgc2FucyBzYXV2ZWdhcmRlcic7XG5jb25zdCBMRUFWSU5HX0FMRVJUX0NBTkNFTCA9ICdSZXRvdXJuZXIgw6AgbGEgcHJlc3RhdGlvbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnZm9laG4tcGFnZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZvZWhuLXBhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZvZWhuLXBhZ2UuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEZvZWhuUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBPbkluaXQge1xuICAgIEBJbnB1dCgpXG4gICAgYXBwVGl0bGU6IHN0cmluZztcblxuICAgIEBJbnB1dCgpXG4gICAgZm9vdGVyTGlua3M6IEZvb3RlckxpbmtbXTtcblxuICAgIEBJbnB1dCgpXG4gICAgc3VwcG9ydEFsZXJ0RW5hYmxlZCA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIGRyYWZ0c0VuYWJsZWQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgc3VwcG9ydEFsZXJ0VXJsOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIGRyYWZ0c1VybDogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBldGFwZUlkOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIHVzZXJDb25uZWN0ZWRBc0Rpc3BsYXllZCA9IHRydWU7XG5cbiAgICBASW5wdXQoKVxuICAgIHN0YXR1c1Byb2dyZXNzQmFySGlkZGVuOiBib29sZWFuO1xuXG4gICAgQElucHV0KClcbiAgICBjb25maXJtTGVhdmluZ0FsZXJ0OiBGb2VobkNvbmZpcm1Nb2RhbENvbnRlbnQgPSB7XG4gICAgICAgIGh0bWxDb250ZW50OiBMRUFWSU5HX0FMRVJUX0NPTlRFTlQsXG4gICAgICAgIG9rQnV0dG9uTGFiZWw6IExFQVZJTkdfQUxFUlRfT0ssXG4gICAgICAgIGNhbmNlbEJ1dHRvbkxhYmVsOiBMRUFWSU5HX0FMRVJUX0NBTkNFTFxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBJZiBzZXQgdG8gJ2ZhbHNlJywgaGlkZSB0aGUgZGVmYXVsdCBDb250YWN0IGxpbmsgaW4gdGhlIGZvb3Rlci5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dEZWZhdWx0Q29udGFjdEZvb3RlckxpbmsgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogSWYgc2V0IHRvICdmYWxzZScsIGhpZGUgdGhlIGRlZmF1bHQgR3VpZGUgbGluayBpbiB0aGUgZm9vdGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0RlZmF1bHRHdWlkZUZvb3RlckxpbmsgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogSWYgc2V0IHRvICdmYWxzZScsIGhpZGUgdGhlIGRlZmF1bHQgVGVybXMgb2YgdXNlIGxpbmsuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzaG93RGVmYXVsdFRlcm1PZlVzZUxpbmsgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICogSWYgc2V0IHRvICdmYWxzZScsIGhpZGUgdGhlIGRlZmF1bHQgU2VjdXJpdHkgQmVzdCBQcmFjdGljZSBsaW5rLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0RlZmF1bHRTZWN1cml0eUJlc3RQcmFjdGljZUxpbmsgPSB0cnVlO1xuXG4gICAgQElucHV0KClcbiAgICByb3V0ZXJMaW5rQXBwVGl0bGU6IHN0cmluZztcblxuICAgIHBhZ2VUaXRsZTogc3RyaW5nO1xuXG4gICAgaGFzQmxvY2tpbmdTdXBwb3J0QWxlcnQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBkaXNwbGF5VXNlckNhdGVnb3J5OiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gICAgc2hvd1NlY3VyZWRBcmVhTG9naW5CdXR0b246IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBsb2dpbk1lc3NhZ2VzSGlkZGVuID0gZmFsc2U7XG5cbiAgICBpc0Jyb3dzZXJTdXBwb3J0ZWQ6IGJvb2xlYW47XG5cbiAgICBpc0FwcGxlUGxhdGZvcm06IGJvb2xlYW47XG5cbiAgICBicm93c2VyTGlua1RpdGxlUHJlZml4ID1cbiAgICAgICAgJ0xpZW4gcG91ciBsZSB0w6lsw6ljaGFyZ2VtZW50IGR1IG5hdmlnYXRldXIgaW50ZXJuZXQnO1xuXG4gICAgYnJvd3Nlck5vdFN1cHBvcnRlZEJ5cGFzcyA9IGZhbHNlO1xuXG4gICAgZGlzcGxheURlbWFuZGVFeHBpcmF0aW9uVGltZXI6IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGJsb2NrZWRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIF90aXRsZVNlcnZpY2U6IFRpdGxlLFxuICAgICAgICBwcml2YXRlIGZvZWhuUGFnZVNlcnZpY2U6IEZvZWhuUGFnZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgc3VwcG9ydEFsZXJ0U2VydmljZTogU3VwcG9ydEFsZXJ0U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBmb2Vobk5hdmlnYXRpb25TZXJ2aWNlOiBGb2Vobk5hdmlnYXRpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGFwcGxpY2F0aW9uSW5mb1NlcnZpY2U6IEFwcGxpY2F0aW9uSW5mb1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZ2VzZGVtRXZlbnRTZXJ2aWNlOiBHZXNkZW1FdmVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYnJlYWRjcnVtYlNlcnZpY2U6IEJyZWFkY3J1bWJFdmVudFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgc2Vzc2lvbkluZm86IFNlc3Npb25JbmZvLFxuICAgICAgICBwcml2YXRlIGZvZWhuUGFnZU1vZGFsU2VydmljZTogRm9laG5QYWdlTW9kYWxTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHNka0RpY3Rpb25hcnlTZXJ2aWNlOiBTZGtEaWN0aW9uYXJ5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzdGF0aXN0aWNzU2VydmljZTogU2RrU3RhdGlzdGljc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZGVtYW5kZUV4cGlyYXRpb25TZXJ2aWNlOiBEZW1hbmRlRXhwaXJhdGlvblNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5oYXNCbG9ja2luZ1N1cHBvcnRBbGVydCA9IHN1cHBvcnRBbGVydFNlcnZpY2UuZ2V0SGFzQXRMZWFzdE9uZUJsb2NraW5nQWxlcnQoKTtcblxuICAgICAgICB0aGlzLmJsb2NrZWRTdWJzY3JpcHRpb24gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMuZm9laG5QYWdlU2VydmljZS5mb2VoblBhZ2VPYnNlcnZhYmxlKCksXG4gICAgICAgICAgICAvLyBFbnN1cmVzIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSB2YWx1ZSBpbiB0aGUgb2JzZXJ2YWJsZS5cbiAgICAgICAgICAgIG1lcmdlKG9mKGZhbHNlKSwgdGhpcy5oYXNCbG9ja2luZ1N1cHBvcnRBbGVydClcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzLWFuZ3VsYXIvcHJlZmVyLWFzeW5jLXBpcGVcbiAgICAgICAgXSkuc3Vic2NyaWJlKChbdGl0bGUsIGJsb2NrZWRdKSA9PiB7XG4gICAgICAgICAgICBpZiAoYmxvY2tlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0UGFnZVRpdGxlKCdQcmVzdGF0aW9uIGluZGlzcG9uaWJsZScpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aXRsZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0UGFnZVRpdGxlKHRpdGxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuaXNCcm93c2VyU3VwcG9ydGVkID0gc3VwcG9ydGVkQnJvd3NlcnMudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTtcbiAgICAgICAgdGhpcy5pc0FwcGxlUGxhdGZvcm0gPSAvKE1hY3xpUGhvbmV8aVBvZHxpUGFkKS9pLnRlc3QoXG4gICAgICAgICAgICBuYXZpZ2F0b3IucGxhdGZvcm1cbiAgICAgICAgKTtcblxuICAgICAgICBzdGF0aXN0aWNzU2VydmljZS50cmFjaygpO1xuXG4gICAgICAgIHRoaXMuZGlzcGxheURlbWFuZGVFeHBpcmF0aW9uVGltZXIgPSB0aGlzLmRlbWFuZGVFeHBpcmF0aW9uU2VydmljZS5zaG91bGREaXNwbGF5RXhwaXJhdGlvblRpbWVyTWVzc2FnZSgpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNCcm93c2VyU3VwcG9ydGVkKSB7XG4gICAgICAgICAgICBjb25zdCBwYWdlVGl0bGUgPSAnTmF2aWdhdGV1ciBub24gc3VwcG9ydMOpJztcbiAgICAgICAgICAgIHRoaXMuZm9laG5QYWdlU2VydmljZS5zZXRQYWdlVGl0bGUocGFnZVRpdGxlKTtcbiAgICAgICAgICAgIHRoaXMuYnJlYWRjcnVtYlNlcnZpY2Uuc2V0Q3VycmVudEJyZWFkY3J1bWIoe1xuICAgICAgICAgICAgICAgIHVybDogbnVsbCxcbiAgICAgICAgICAgICAgICByb3V0ZXJMaW5rOiBudWxsLFxuICAgICAgICAgICAgICAgIGxhYmVsOiBwYWdlVGl0bGVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaXNJbml0aWFsU3RlcCA9IHRoaXMuYXBwbGljYXRpb25JbmZvU2VydmljZS5jdXJyZW50RXRhcGVJbmZvLnBpcGUoXG4gICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgKGN1cnJlbnRFdGFwZUluZm86IEV0YXBlSW5mbykgPT5cbiAgICAgICAgICAgICAgICAgICAgY3VycmVudEV0YXBlSW5mbyAmJlxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50RXRhcGVJbmZvLmlkTWV0aWVyRXRhcGUgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RXRhcGVJbmZvLmlkTWV0aWVyUHJlc3RhdGlvblxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIC8vIGNvbnN0IG5hdmlnYXRpb25VcGRhdGU6IE9ic2VydmFibGU8YW55PiA9IG9mICh0cnVlKVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgICAgICBjb25zdCBuYXZpZ2F0aW9uVXBkYXRlOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLnJvdXRlci5ldmVudHMucGlwZShcbiAgICAgICAgICAgIGZpbHRlcihldmVudCA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gRW5zdXJlcyB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgdmFsdWUgaW4gdGhlIG9ic2VydmFibGUuXG4gICAgICAgIGNvbnN0IG5hdmlnYXRpb25BbmRJbml0ID0gbWVyZ2Uob2YodHJ1ZSksIG5hdmlnYXRpb25VcGRhdGUpO1xuICAgICAgICBjb25zdCBmb3JtVHJhbnNtaXR0ZWQgPSBtZXJnZShcbiAgICAgICAgICAgIG9mKHVuZGVmaW5lZCksXG4gICAgICAgICAgICB0aGlzLmdlc2RlbUV2ZW50U2VydmljZS5mb3JtVHJhbnNtaXR0ZWRPYnNlcnZhYmxlKClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmRpc3BsYXlVc2VyQ2F0ZWdvcnkgPSBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIGlzSW5pdGlhbFN0ZXAsXG4gICAgICAgICAgICB0aGlzLmZvZWhuTmF2aWdhdGlvblNlcnZpY2UuaGFzQmVlbkluaXRpYWxpemVkKCksXG4gICAgICAgICAgICBmb3JtVHJhbnNtaXR0ZWQsXG4gICAgICAgICAgICBuYXZpZ2F0aW9uQW5kSW5pdFxuICAgICAgICBdKS5waXBlKFxuICAgICAgICAgICAgZGVib3VuY2VUaW1lKDApLCAvLyB3aXRob3V0IGRlYm91bmNlVGltZSwgdGhlIG91dGNvbWUgaXMgbGVzcyBlZmZlY3RpdmUuLi5cbiAgICAgICAgICAgIG1hcCgoW2luaXRpYWxTdGVwLCBuYXZTZXJ2aWNlSW5pdGlhbGl6ZWQsIGJhY2tlbmRSZXNwb25zZV0pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAobmF2U2VydmljZUluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzRmlyc3RQYWdlID0gdGhpcy5mb2Vobk5hdmlnYXRpb25TZXJ2aWNlLmlzRmlyc3RGb3JtUGFnZSgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpc0xhc3RQYWdlID0gdGhpcy5mb2Vobk5hdmlnYXRpb25TZXJ2aWNlLmlzTGFzdEZvcm1QYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzQ3VycmVudFJvdXRlRGVmaW5lZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvZWhuTmF2aWdhdGlvblNlcnZpY2UuZ2V0Q3VycmVudFJvdXRlSW5kZXgoKSAhPT1cbiAgICAgICAgICAgICAgICAgICAgICAgIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZvZWhuUGFnZVNlcnZpY2UuaXNVc2VyQ2F0ZWdvcnlWaXNpYmxlKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNGaXJzdFBhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0xhc3RQYWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51c2VyQ29ubmVjdGVkQXNEaXNwbGF5ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsU3RlcCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Vzc2lvbkluZm8ubmV2ZXJDb25uZWN0ZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZW5kUmVzcG9uc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0N1cnJlbnRSb3V0ZURlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBmb3JtSW5pdGlhbGl6YXRpb25PYnNlcnZhYmxlID0gbWVyZ2UoXG4gICAgICAgICAgICBvZih1bmRlZmluZWQpLFxuICAgICAgICAgICAgdGhpcy5nZXNkZW1FdmVudFNlcnZpY2UuZm9ybUluaXRpYWxpemF0aW9uT2JzZXJ2YWJsZSgpXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKHRoaXMuc2Vzc2lvbkluZm8ubmV2ZXJDb25uZWN0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd1NlY3VyZWRBcmVhTG9naW5CdXR0b24gPSBvZihmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNob3dTZWN1cmVkQXJlYUxvZ2luQnV0dG9uID0gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICAgICAgZm9ybUluaXRpYWxpemF0aW9uT2JzZXJ2YWJsZSxcbiAgICAgICAgICAgICAgICB0aGlzLnNlc3Npb25JbmZvLmRhdGEsXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBsaWNhdGlvbkluZm9TZXJ2aWNlLmN1cnJlbnRFdGFwZUluZm9cbiAgICAgICAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDApLCAvLyB3aXRob3V0IGRlYm91bmNlVGltZSwgdGhlIG91dGNvbWUgaXMgbGVzcyBlZmZlY3RpdmUuLi5cbiAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgIChbXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtSW5pdGlhbGl6YXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uSW5mb0RhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RXRhcGVJbmZvXG4gICAgICAgICAgICAgICAgICAgIF0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzQ29ubmVjdGVkQ3liZXJPcklhbSA9ICEhc2Vzc2lvbkluZm9EYXRhO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaXNMYXN0UGFnZSA9IHRoaXMuZm9laG5OYXZpZ2F0aW9uU2VydmljZS5pc0xhc3RGb3JtUGFnZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICEoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDb25uZWN0ZWRDeWJlck9ySWFtIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIWN1cnJlbnRFdGFwZUluZm8uZGVwbG95ZWVDeWJlciB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhZm9ybUluaXRpYWxpemF0aW9uIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNMYXN0UGFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV0YXBlSWRDaGFuZ2UgPSBjaGFuZ2VzLmV0YXBlSWQ7XG4gICAgICAgIGlmIChldGFwZUlkQ2hhbmdlICYmIGV0YXBlSWRDaGFuZ2UuY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmZvZWhuUGFnZVNlcnZpY2Uuc2V0Q3VycmVudEV0YXBlSWQoZXRhcGVJZENoYW5nZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXBwVGl0bGVDaGFuZ2UgPSBjaGFuZ2VzLmFwcFRpdGxlO1xuICAgICAgICBpZiAoYXBwVGl0bGVDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3RpdGxlU2VydmljZS5zZXRUaXRsZShhcHBUaXRsZUNoYW5nZS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmJsb2NrZWRTdWJzY3JpcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuYmxvY2tlZFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RnVsbExvZ2luVXJsKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvZWhuUGFnZU1vZGFsU2VydmljZS5idWlsZFNlbGZSZWRpcmVjdGlvblRocm91Z2hDeWJlckxvZ2luKCk7XG4gICAgfVxuXG4gICAgZ2V0RnVsbExvZ2luTWVzc2FnZShcbiAgICAgICAgZGVjaXNpb25FbGVjdHJvbmlxdWVBdmFpbGFibGU6IGJvb2xlYW5cbiAgICApOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgICAgICBpZiAoZGVjaXNpb25FbGVjdHJvbmlxdWVBdmFpbGFibGUpIHtcbiAgICAgICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgICAgICB0aGlzLnNka0RpY3Rpb25hcnlTZXJ2aWNlLmdldEtleSgndXNlLWxvZ2luLnRleHQnKSxcbiAgICAgICAgICAgICAgICB0aGlzLnNka0RpY3Rpb25hcnlTZXJ2aWNlLmdldEtleShcbiAgICAgICAgICAgICAgICAgICAgJ3VzZS1sb2dpbi50ZXh0LmRlY2lzaW9uLWVsZWN0cm9uaXF1ZS1hdmFpbGFibGUnXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgXSkucGlwZShcbiAgICAgICAgICAgICAgICBtYXAoXG4gICAgICAgICAgICAgICAgICAgIChbbG9naW5Nc2csIGRlY2lzaW9uRWxlY3Ryb25pcXVlQXZhaWxhYmxlTXNnXSkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGAke2xvZ2luTXNnfTxici8+PGJyLz4ke2RlY2lzaW9uRWxlY3Ryb25pcXVlQXZhaWxhYmxlTXNnfWBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNka0RpY3Rpb25hcnlTZXJ2aWNlLmdldEtleSgndXNlLWxvZ2luLnRleHQnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFBhZ2VUaXRsZSh0aXRsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFnZVRpdGxlID0gdGl0bGU7XG4gICAgfVxufVxuIiwiPGZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lclxuICAgICpuZ0lmPVwiKGRpc3BsYXlEZW1hbmRlRXhwaXJhdGlvblRpbWVyIHwgYXN5bmMpID09PSB0cnVlXCJcbiAgICBpZD1cImZvZWhuLXBhZ2UtZXhwaXJhdGlvbi10aW1lclwiXG4+PC9mb2Vobi1wYWdlLWV4cGlyYXRpb24tdGltZXI+XG48Zm9laG4taGVhZGVyXG4gICAgaWQ9XCJmb2Vobl9oZWFkZXJcIlxuICAgIFt0aXRsZV09XCJhcHBUaXRsZVwiXG4gICAgW3JvdXRlckxpbmtBcHBUaXRsZV09XCJyb3V0ZXJMaW5rQXBwVGl0bGVcIlxuICAgIFtzaG93U2VjdXJlZEFyZWFMb2dpbkJ1dHRvbl09XCJzaG93U2VjdXJlZEFyZWFMb2dpbkJ1dHRvbiB8IGFzeW5jXCJcbj48L2ZvZWhuLWhlYWRlcj5cbjxmb2Vobi1ncm93bCBpZD1cImZvZWhuX2dyb3dsXCI+PC9mb2Vobi1ncm93bD5cbjxkaXYgY2xhc3M9XCJ2ZC1iZy1wYXR0ZXJuLWdyYXlcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgICAgIDxmb2Vobi1icmVhZGNydW1iXG4gICAgICAgICAgICBbY29uZmlybUxlYXZpbmdBbGVydF09XCJjb25maXJtTGVhdmluZ0FsZXJ0XCJcbiAgICAgICAgPjwvZm9laG4tYnJlYWRjcnVtYj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuPG1haW4gaWQ9XCJtYWluXCI+XG4gICAgPGRpdiBjbGFzcz1cInZkLWJnLXBhdHRlcm4tZ3JheVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8IS0tIEZpeCBhbm5veWluZyBmbGlja2VyaW5nIHdoZW4gdGhlIHBhZ2UgbG9hZHMgLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaDEgbXQtMFwiICpuZ0lmPVwiIXBhZ2VUaXRsZVwiPiZuYnNwOzwvZGl2PlxuICAgICAgICAgICAgPGgxXG4gICAgICAgICAgICAgICAgW3RhYkluZGV4XT1cIi0xXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTBcIlxuICAgICAgICAgICAgICAgIGlkPVwicGFnZS10aXRsZVwiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhIXBhZ2VUaXRsZVwiXG4gICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJwYWdlVGl0bGVcIlxuICAgICAgICAgICAgPjwvaDE+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGZvZWhuLXN0YXR1cy1wcm9ncmVzcy1iYXJcbiAgICAgICAgW2hpZGRlbl09XCJcbiAgICAgICAgICAgIHN0YXR1c1Byb2dyZXNzQmFySGlkZGVuIHx8ICEhKGhhc0Jsb2NraW5nU3VwcG9ydEFsZXJ0IHwgYXN5bmMpXG4gICAgICAgIFwiXG4gICAgPjwvZm9laG4tc3RhdHVzLXByb2dyZXNzLWJhcj5cblxuICAgIDxzZWN0aW9uXG4gICAgICAgICpuZ0lmPVwiIWlzQnJvd3NlclN1cHBvcnRlZFwiXG4gICAgICAgIGNsYXNzPVwiY29udGFpbmVyIGFsZXJ0IGFsZXJ0LWRhbmdlclwiXG4gICAgICAgIGlkPVwiYnJvd3Nlcl9ub3Rfc3VwcG9ydGVkX2Jsb2NrXCJcbiAgICAgICAgcm9sZT1cImFsZXJ0XCJcbiAgICA+XG4gICAgICAgIDxwIGNsYXNzPVwiYWxlcnQtaGVhZGluZ1wiPlxuICAgICAgICAgICAgPHN0cm9uZz5cbiAgICAgICAgICAgICAgICB7eyAnZm9laG4tcGFnZS5icm93c2VyLW5vdC1zdXBwb3J0ZWQnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxwIGNsYXNzPVwibWItMFwiPlxuICAgICAgICAgICAge3sgJ2ZvZWhuLXBhZ2UuYnJvd3Nlci1kb3dubG9hZC1pbnZpdGF0aW9uJyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzQXBwbGVQbGF0Zm9ybVwiPlxuICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIFt0aXRsZV09XCJicm93c2VyTGlua1RpdGxlUHJlZml4ICsgJyBFZGdlJ1wiXG4gICAgICAgICAgICAgICAgICAgIGhyZWY9XCJodHRwczovL3d3dy5taWNyb3NvZnQuY29tL2ZyLWNoL3dpbmRvd3MvbWljcm9zb2Z0LWVkZ2VcIlxuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgRWRnZVxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdmb2Vobi1wYWdlLmV4dGVybmFsLWxpbmsuc3JPbmx5JyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Zm9laG4taWNvbi1leHRlcm5hbC1saW5rLWFsdD48L2ZvZWhuLWljb24tZXh0ZXJuYWwtbGluay1hbHQ+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgLFxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNBcHBsZVBsYXRmb3JtXCI+XG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgW3RpdGxlXT1cImJyb3dzZXJMaW5rVGl0bGVQcmVmaXggKyAnIFNhZmFyaSdcIlxuICAgICAgICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9zdXBwb3J0LmFwcGxlLmNvbS9kb3dubG9hZHMvc2FmYXJpXCJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIFNhZmFyaVxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdmb2Vobi1wYWdlLmV4dGVybmFsLWxpbmsuc3JPbmx5JyB8IGZyb21EaWN0aW9uYXJ5IH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Zm9laG4taWNvbi1leHRlcm5hbC1saW5rLWFsdD48L2ZvZWhuLWljb24tZXh0ZXJuYWwtbGluay1hbHQ+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgLFxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCJicm93c2VyTGlua1RpdGxlUHJlZml4ICsgJyBGaXJlZm94J1wiXG4gICAgICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vd3d3Lm1vemlsbGEub3JnL2ZyL2ZpcmVmb3gvXCJcbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCJfYmxhbmtcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEZpcmVmb3hcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ2ZvZWhuLXBhZ2UuZXh0ZXJuYWwtbGluay5zck9ubHknIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWV4dGVybmFsLWxpbmstYWx0PjwvZm9laG4taWNvbi1leHRlcm5hbC1saW5rLWFsdD5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICB7eyAnZm9laG4tcGFnZS5icm93c2VyLWRvd25sb2FkLWxpc3Qub3UnIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cImJyb3dzZXJMaW5rVGl0bGVQcmVmaXggKyAnIENocm9tZSdcIlxuICAgICAgICAgICAgICAgIGhyZWY9XCJodHRwczovL3d3dy5nb29nbGUuY29tL2ludGwvZnIvY2hyb21lL1wiXG4gICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBDaHJvbWVcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ2ZvZWhuLXBhZ2UuZXh0ZXJuYWwtbGluay5zck9ubHknIHwgZnJvbURpY3Rpb25hcnkgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxmb2Vobi1pY29uLWV4dGVybmFsLWxpbmstYWx0PjwvZm9laG4taWNvbi1leHRlcm5hbC1saW5rLWFsdD5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAuXG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtdC0zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBpZD1cImJyb3dzZXJfbm90X3N1cHBvcnRlZF9ieXBhc3NcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZsb2F0LXJpZ2h0IGJ0biBidG4tZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhYnJvd3Nlck5vdFN1cHBvcnRlZEJ5cGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJicm93c2VyTm90U3VwcG9ydGVkQnlwYXNzID0gdHJ1ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvZWhuLXBhZ2UuY29udGludWUtd2l0aC1zYW1lLWJyb3dzZXInIHwgZnJvbURpY3Rpb25hcnlcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG5cbiAgICA8c2RrLXN1cHBvcnQtYWxlcnQtY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwic3VwcG9ydEFsZXJ0RW5hYmxlZFwiXG4gICAgICAgIFtldGFwZUlkXT1cImV0YXBlSWRcIlxuICAgICAgICBbc3VwcG9ydEFsZXJ0VXJsXT1cInN1cHBvcnRBbGVydFVybFwiXG4gICAgPjwvc2RrLXN1cHBvcnQtYWxlcnQtY29udGFpbmVyPlxuICAgIDxzZGstZHJhZnRzLWNvbnRhaW5lclxuICAgICAgICAqbmdJZj1cImRyYWZ0c0VuYWJsZWRcIlxuICAgICAgICBbZXRhcGVJZF09XCJldGFwZUlkXCJcbiAgICAgICAgW2RyYWZ0c1VybF09XCJkcmFmdHNVcmxcIlxuICAgID48L3Nkay1kcmFmdHMtY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICEoaGFzQmxvY2tpbmdTdXBwb3J0QWxlcnQgfCBhc3luYykgJiZcbiAgICAgICAgICAgIChpc0Jyb3dzZXJTdXBwb3J0ZWQgfHwgYnJvd3Nlck5vdFN1cHBvcnRlZEJ5cGFzcylcbiAgICAgICAgXCJcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXIgbXQtNVwiIGlkPVwicGFnZV9jb250ZW50XCI+XG4gICAgICAgICAgICA8Zm9laG4tdXNlci1jb25uZWN0ZWQtYXNcbiAgICAgICAgICAgICAgICAqbmdJZj1cImRpc3BsYXlVc2VyQ2F0ZWdvcnkgfCBhc3luY1wiXG4gICAgICAgICAgICA+PC9mb2Vobi11c2VyLWNvbm5lY3RlZC1hcz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbWFpbj5cbjxmb2Vobi1mb290ZXJcbiAgICBpZD1cImZvZWhuX2Zvb3RlclwiXG4gICAgW2xpbmtzXT1cImZvb3RlckxpbmtzXCJcbiAgICBbc2hvd0RlZmF1bHRDb250YWN0TGlua109XCJzaG93RGVmYXVsdENvbnRhY3RGb290ZXJMaW5rXCJcbiAgICBbc2hvd0RlZmF1bHRHdWlkZUxpbmtdPVwic2hvd0RlZmF1bHRHdWlkZUZvb3RlckxpbmtcIlxuICAgIFtzaG93RGVmYXVsdFRlcm1PZlVzZUxpbmtdPVwic2hvd0RlZmF1bHRUZXJtT2ZVc2VMaW5rXCJcbiAgICBbc2hvd0RlZmF1bHRTZWN1cml0eUJlc3RQcmFjdGljZUxpbmtdPVwic2hvd0RlZmF1bHRTZWN1cml0eUJlc3RQcmFjdGljZUxpbmtcIlxuPjwvZm9laG4tZm9vdGVyPlxuPGZvZWhuLXBhZ2UtbW9kYWw+PC9mb2Vobi1wYWdlLW1vZGFsPlxuPGZvZWhuLWNvbmZpcm0tbW9kYWw+PC9mb2Vobi1jb25maXJtLW1vZGFsPlxuPGZvZWhuLXRyYW5zbWl0LXdhaXRpbmctbW9kYWw+PC9mb2Vobi10cmFuc21pdC13YWl0aW5nLW1vZGFsPlxuIl19