@dsivd/prestations-ng 15.2.1 → 15.2.3-beta10

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 (29) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dsivd-prestations-ng-v15.2.3-beta10.tgz +0 -0
  3. package/esm2020/foehn-checkables/foehn-checkable-group.component.mjs +9 -4
  4. package/esm2020/foehn-checkables/foehn-select.component.mjs +4 -17
  5. package/esm2020/foehn-confirm-modal/foehn-confirm-modal.component.mjs +1 -1
  6. package/esm2020/foehn-help-modal/foehn-help-modal.component.mjs +1 -1
  7. package/esm2020/foehn-menu-prestation/foehn-menu-items/foehn-menu-item-transmit/foehn-menu-item-transmit.component.mjs +1 -1
  8. package/esm2020/foehn-modal/foehn-modal.component.mjs +2 -5
  9. package/esm2020/foehn-page/foehn-page-modal.component.mjs +1 -1
  10. package/esm2020/foehn-table/foehn-table-column-configuration.mjs +1 -1
  11. package/esm2020/foehn-table/foehn-table.component.mjs +9 -8
  12. package/esm2020/gesdem/gesdem-handler.service.mjs +2 -1
  13. package/esm2020/gesdem-action-recovery/gesdem-action-recovery-registration/gesdem-action-recovery-registration.component.mjs +1 -1
  14. package/esm2020/sdk-dictionary/default-dictionary.mjs +2 -1
  15. package/esm2020/sdk-epayment/sdk-epayment.component.mjs +1 -1
  16. package/esm2020/sdk-redirect/iam-expired-interceptor.service.mjs +28 -16
  17. package/esm2020/sdk-redirect/redirect.component.mjs +10 -19
  18. package/fesm2015/dsivd-prestations-ng.mjs +54 -60
  19. package/fesm2015/dsivd-prestations-ng.mjs.map +1 -1
  20. package/fesm2020/dsivd-prestations-ng.mjs +54 -60
  21. package/fesm2020/dsivd-prestations-ng.mjs.map +1 -1
  22. package/foehn-checkables/foehn-checkable-group.component.d.ts +1 -1
  23. package/foehn-checkables/foehn-select.component.d.ts +0 -9
  24. package/foehn-modal/foehn-modal.component.d.ts +1 -2
  25. package/foehn-table/foehn-table-column-configuration.d.ts +11 -1
  26. package/package.json +2 -2
  27. package/sdk-redirect/iam-expired-interceptor.service.d.ts +2 -2
  28. package/sdk-redirect/redirect.component.d.ts +2 -8
  29. package/dsivd-prestations-ng-v15.2.1.tgz +0 -0
@@ -1,25 +1,35 @@
1
1
  /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { throwError as observableThrowError, Subject } from 'rxjs';
2
+ import { Subject, throwError } from 'rxjs';
3
3
  import { Injectable } from '@angular/core';
4
4
  import { HttpErrorResponse, HttpResponse } from '@angular/common/http';
5
5
  import { catchError, map } from 'rxjs/operators';
6
6
  import * as i0 from "@angular/core";
7
7
  const IAM_SESSION_EXPIRED_HEADER = 'iam-session-expired';
8
- const LOGIN_PATH = '/100018/login';
8
+ const CYBER_LOGIN_PATH = '/100018/login';
9
+ const ACV_LOGIN_PATH = '/iamlogin';
10
+ const isIamExpiredHeader = (event) => {
11
+ return !!event.headers.get(IAM_SESSION_EXPIRED_HEADER);
12
+ };
13
+ const isRedirectionToLogin = (event) => {
14
+ const isRedirection = event.status === 302 /* Found */;
15
+ const locationHeader = event.headers.get('Location');
16
+ const isLocationCyberLogin = locationHeader?.includes(CYBER_LOGIN_PATH);
17
+ const isLocationAcvLogin = locationHeader?.includes(ACV_LOGIN_PATH);
18
+ return isRedirection && (isLocationCyberLogin || isLocationAcvLogin);
19
+ };
9
20
  export class IamExpiredInterceptorService {
10
21
  constructor() {
11
- this._iamExpirationHeaderPresence = new Subject();
22
+ this._isIamSessionExpired = new Subject();
12
23
  }
13
- get iamExpirationHeaderPresence() {
14
- return this._iamExpirationHeaderPresence.asObservable();
24
+ get isIamSessionExpired() {
25
+ return this._isIamSessionExpired.asObservable();
15
26
  }
16
27
  intercept(req, next) {
17
28
  return next.handle(req).pipe(map(event => {
18
29
  if (event instanceof HttpResponse) {
19
- // either we have the header 'iam-session-expired'
20
- const iamExpiredHeader = event.headers.get(IAM_SESSION_EXPIRED_HEADER);
21
- if (null !== iamExpiredHeader) {
22
- this._iamExpirationHeaderPresence.next(true);
30
+ if (isIamExpiredHeader(event) ||
31
+ isRedirectionToLogin(event)) {
32
+ this._isIamSessionExpired.next(true);
23
33
  }
24
34
  }
25
35
  return event;
@@ -27,14 +37,16 @@ export class IamExpiredInterceptorService {
27
37
  }
28
38
  handleError(err) {
29
39
  if (err instanceof HttpErrorResponse) {
30
- if (err.status === 200) {
31
- const isLogin = err.url.indexOf(LOGIN_PATH) > 0;
32
- if (isLogin) {
33
- this._iamExpirationHeaderPresence.next(true);
34
- }
40
+ // status is 200, but still an error since
41
+ // login page is returned when xml/json is expected
42
+ const isStatusOk = err.status === 200 /* Ok */;
43
+ const isUrlCyberLogin = err.url.includes(CYBER_LOGIN_PATH);
44
+ const isUrlAcvLogin = err.url.includes(ACV_LOGIN_PATH);
45
+ if (isStatusOk && (isUrlCyberLogin || isUrlAcvLogin)) {
46
+ this._isIamSessionExpired.next(true);
35
47
  }
36
48
  }
37
- return observableThrowError(err);
49
+ return throwError(err);
38
50
  }
39
51
  }
40
52
  IamExpiredInterceptorService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: IamExpiredInterceptorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
@@ -45,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImpor
45
57
  providedIn: 'root'
46
58
  }]
47
59
  }] });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtLWV4cGlyZWQtaW50ZXJjZXB0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9zZGstcmVkaXJlY3QvaWFtLWV4cGlyZWQtaW50ZXJjZXB0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFVBQVUsSUFBSSxvQkFBb0IsRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0UsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQ0gsaUJBQWlCLEVBS2pCLFlBQVksRUFDZixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRWpELE1BQU0sMEJBQTBCLEdBQUcscUJBQXFCLENBQUM7QUFDekQsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDO0FBS25DLE1BQU0sT0FBTyw0QkFBNEI7SUFIekM7UUFJWSxpQ0FBNEIsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztLQTBDbkY7SUF4Q0csSUFBSSwyQkFBMkI7UUFDM0IsT0FBTyxJQUFJLENBQUMsNEJBQTRCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUQsQ0FBQztJQUVELFNBQVMsQ0FDTCxHQUFxQixFQUNyQixJQUFpQjtRQUVqQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUN4QixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDUixJQUFJLEtBQUssWUFBWSxZQUFZLEVBQUU7Z0JBQy9CLGtEQUFrRDtnQkFDbEQsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FDdEMsMEJBQTBCLENBQzdCLENBQUM7Z0JBQ0YsSUFBSSxJQUFJLEtBQUssZ0JBQWdCLEVBQUU7b0JBQzNCLElBQUksQ0FBQyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ2hEO2FBQ0o7WUFFRCxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDMUMsQ0FBQztJQUNOLENBQUM7SUFFTyxXQUFXLENBQ2YsR0FBdUM7UUFFdkMsSUFBSSxHQUFHLFlBQVksaUJBQWlCLEVBQUU7WUFDbEMsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLEdBQUcsRUFBRTtnQkFDcEIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNoRCxJQUFJLE9BQU8sRUFBRTtvQkFDVCxJQUFJLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUNoRDthQUNKO1NBQ0o7UUFFRCxPQUFPLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7O3lIQTFDUSw0QkFBNEI7NkhBQTVCLDRCQUE0QixjQUZ6QixNQUFNOzJGQUVULDRCQUE0QjtrQkFIeEMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB0aHJvd0Vycm9yIGFzIG9ic2VydmFibGVUaHJvd0Vycm9yLCBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEh0dHBFcnJvclJlc3BvbnNlLFxuICAgIEh0dHBFdmVudCxcbiAgICBIdHRwSGFuZGxlcixcbiAgICBIdHRwSW50ZXJjZXB0b3IsXG4gICAgSHR0cFJlcXVlc3QsXG4gICAgSHR0cFJlc3BvbnNlXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuY29uc3QgSUFNX1NFU1NJT05fRVhQSVJFRF9IRUFERVIgPSAnaWFtLXNlc3Npb24tZXhwaXJlZCc7XG5jb25zdCBMT0dJTl9QQVRIID0gJy8xMDAwMTgvbG9naW4nO1xuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIElhbUV4cGlyZWRJbnRlcmNlcHRvclNlcnZpY2UgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICAgIHByaXZhdGUgX2lhbUV4cGlyYXRpb25IZWFkZXJQcmVzZW5jZTogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBnZXQgaWFtRXhwaXJhdGlvbkhlYWRlclByZXNlbmNlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faWFtRXhwaXJhdGlvbkhlYWRlclByZXNlbmNlLmFzT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGludGVyY2VwdChcbiAgICAgICAgcmVxOiBIdHRwUmVxdWVzdDxhbnk+LFxuICAgICAgICBuZXh0OiBIdHRwSGFuZGxlclxuICAgICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4gfCBhbnk+IHtcbiAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSkucGlwZShcbiAgICAgICAgICAgIG1hcChldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGVpdGhlciB3ZSBoYXZlIHRoZSBoZWFkZXIgJ2lhbS1zZXNzaW9uLWV4cGlyZWQnXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlhbUV4cGlyZWRIZWFkZXIgPSBldmVudC5oZWFkZXJzLmdldChcbiAgICAgICAgICAgICAgICAgICAgICAgIElBTV9TRVNTSU9OX0VYUElSRURfSEVBREVSXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBpYW1FeHBpcmVkSGVhZGVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9pYW1FeHBpcmF0aW9uSGVhZGVyUHJlc2VuY2UubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiBldmVudDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yLmJpbmQodGhpcykpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVFcnJvcihcbiAgICAgICAgZXJyOiBIdHRwRXJyb3JSZXNwb25zZSB8IEh0dHBFdmVudDxhbnk+XG4gICAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIGlmIChlcnIuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0xvZ2luID0gZXJyLnVybC5pbmRleE9mKExPR0lOX1BBVEgpID4gMDtcbiAgICAgICAgICAgICAgICBpZiAoaXNMb2dpbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pYW1FeHBpcmF0aW9uSGVhZGVyUHJlc2VuY2UubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb2JzZXJ2YWJsZVRocm93RXJyb3IoZXJyKTtcbiAgICB9XG59XG4iXX0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtLWV4cGlyZWQtaW50ZXJjZXB0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3ByZXN0YXRpb25zLW5nL3NyYy9zZGstcmVkaXJlY3QvaWFtLWV4cGlyZWQtaW50ZXJjZXB0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFjLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQ0gsaUJBQWlCLEVBS2pCLFlBQVksRUFFZixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRWpELE1BQU0sMEJBQTBCLEdBQUcscUJBQXFCLENBQUM7QUFDekQsTUFBTSxnQkFBZ0IsR0FBRyxlQUFlLENBQUM7QUFDekMsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDO0FBRW5DLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxLQUF3QixFQUFXLEVBQUU7SUFDN0QsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsMEJBQTBCLENBQUMsQ0FBQztBQUMzRCxDQUFDLENBQUM7QUFFRixNQUFNLG9CQUFvQixHQUFHLENBQUMsS0FBd0IsRUFBVyxFQUFFO0lBQy9ELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxNQUFNLG9CQUF5QixDQUFDO0lBQzVELE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRXJELE1BQU0sb0JBQW9CLEdBQUcsY0FBYyxFQUFFLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQ3hFLE1BQU0sa0JBQWtCLEdBQUcsY0FBYyxFQUFFLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUVwRSxPQUFPLGFBQWEsSUFBSSxDQUFDLG9CQUFvQixJQUFJLGtCQUFrQixDQUFDLENBQUM7QUFDekUsQ0FBQyxDQUFDO0FBS0YsTUFBTSxPQUFPLDRCQUE0QjtJQUh6QztRQUlZLHlCQUFvQixHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO0tBMkMzRTtJQXpDRyxJQUFJLG1CQUFtQjtRQUNuQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRUQsU0FBUyxDQUNMLEdBQXFCLEVBQ3JCLElBQWlCO1FBRWpCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ3hCLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNSLElBQUksS0FBSyxZQUFZLFlBQVksRUFBRTtnQkFDL0IsSUFDSSxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7b0JBQ3pCLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxFQUM3QjtvQkFDRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN4QzthQUNKO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDakIsQ0FBQyxDQUFDLEVBQ0YsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQzFDLENBQUM7SUFDTixDQUFDO0lBRU8sV0FBVyxDQUNmLEdBQXVDO1FBRXZDLElBQUksR0FBRyxZQUFZLGlCQUFpQixFQUFFO1lBQ2xDLDBDQUEwQztZQUMxQyxtREFBbUQ7WUFDbkQsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLE1BQU0saUJBQXNCLENBQUM7WUFDcEQsTUFBTSxlQUFlLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMzRCxNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUV2RCxJQUFJLFVBQVUsSUFBSSxDQUFDLGVBQWUsSUFBSSxhQUFhLENBQUMsRUFBRTtnQkFDbEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUN4QztTQUNKO1FBRUQsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsQ0FBQzs7eUhBM0NRLDRCQUE0Qjs2SEFBNUIsNEJBQTRCLGNBRnpCLE1BQU07MkZBRVQsNEJBQTRCO2tCQUh4QyxVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgSHR0cEVycm9yUmVzcG9uc2UsXG4gICAgSHR0cEV2ZW50LFxuICAgIEh0dHBIYW5kbGVyLFxuICAgIEh0dHBJbnRlcmNlcHRvcixcbiAgICBIdHRwUmVxdWVzdCxcbiAgICBIdHRwUmVzcG9uc2UsXG4gICAgSHR0cFN0YXR1c0NvZGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5jb25zdCBJQU1fU0VTU0lPTl9FWFBJUkVEX0hFQURFUiA9ICdpYW0tc2Vzc2lvbi1leHBpcmVkJztcbmNvbnN0IENZQkVSX0xPR0lOX1BBVEggPSAnLzEwMDAxOC9sb2dpbic7XG5jb25zdCBBQ1ZfTE9HSU5fUEFUSCA9ICcvaWFtbG9naW4nO1xuXG5jb25zdCBpc0lhbUV4cGlyZWRIZWFkZXIgPSAoZXZlbnQ6IEh0dHBSZXNwb25zZTxhbnk+KTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuICEhZXZlbnQuaGVhZGVycy5nZXQoSUFNX1NFU1NJT05fRVhQSVJFRF9IRUFERVIpO1xufTtcblxuY29uc3QgaXNSZWRpcmVjdGlvblRvTG9naW4gPSAoZXZlbnQ6IEh0dHBSZXNwb25zZTxhbnk+KTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgaXNSZWRpcmVjdGlvbiA9IGV2ZW50LnN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuRm91bmQ7XG4gICAgY29uc3QgbG9jYXRpb25IZWFkZXIgPSBldmVudC5oZWFkZXJzLmdldCgnTG9jYXRpb24nKTtcblxuICAgIGNvbnN0IGlzTG9jYXRpb25DeWJlckxvZ2luID0gbG9jYXRpb25IZWFkZXI/LmluY2x1ZGVzKENZQkVSX0xPR0lOX1BBVEgpO1xuICAgIGNvbnN0IGlzTG9jYXRpb25BY3ZMb2dpbiA9IGxvY2F0aW9uSGVhZGVyPy5pbmNsdWRlcyhBQ1ZfTE9HSU5fUEFUSCk7XG5cbiAgICByZXR1cm4gaXNSZWRpcmVjdGlvbiAmJiAoaXNMb2NhdGlvbkN5YmVyTG9naW4gfHwgaXNMb2NhdGlvbkFjdkxvZ2luKTtcbn07XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSWFtRXhwaXJlZEludGVyY2VwdG9yU2VydmljZSBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gICAgcHJpdmF0ZSBfaXNJYW1TZXNzaW9uRXhwaXJlZDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBnZXQgaXNJYW1TZXNzaW9uRXhwaXJlZCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzSWFtU2Vzc2lvbkV4cGlyZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgaW50ZXJjZXB0KFxuICAgICAgICByZXE6IEh0dHBSZXF1ZXN0PGFueT4sXG4gICAgICAgIG5leHQ6IEh0dHBIYW5kbGVyXG4gICAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55PiB8IGFueT4ge1xuICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxKS5waXBlKFxuICAgICAgICAgICAgbWFwKGV2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNJYW1FeHBpcmVkSGVhZGVyKGV2ZW50KSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgaXNSZWRpcmVjdGlvblRvTG9naW4oZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faXNJYW1TZXNzaW9uRXhwaXJlZC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBldmVudDtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yLmJpbmQodGhpcykpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVFcnJvcihcbiAgICAgICAgZXJyOiBIdHRwRXJyb3JSZXNwb25zZSB8IEh0dHBFdmVudDxhbnk+XG4gICAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIC8vIHN0YXR1cyBpcyAyMDAsIGJ1dCBzdGlsbCBhbiBlcnJvciBzaW5jZVxuICAgICAgICAgICAgLy8gbG9naW4gcGFnZSBpcyByZXR1cm5lZCB3aGVuIHhtbC9qc29uIGlzIGV4cGVjdGVkXG4gICAgICAgICAgICBjb25zdCBpc1N0YXR1c09rID0gZXJyLnN0YXR1cyA9PT0gSHR0cFN0YXR1c0NvZGUuT2s7XG4gICAgICAgICAgICBjb25zdCBpc1VybEN5YmVyTG9naW4gPSBlcnIudXJsLmluY2x1ZGVzKENZQkVSX0xPR0lOX1BBVEgpO1xuICAgICAgICAgICAgY29uc3QgaXNVcmxBY3ZMb2dpbiA9IGVyci51cmwuaW5jbHVkZXMoQUNWX0xPR0lOX1BBVEgpO1xuXG4gICAgICAgICAgICBpZiAoaXNTdGF0dXNPayAmJiAoaXNVcmxDeWJlckxvZ2luIHx8IGlzVXJsQWN2TG9naW4pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5faXNJYW1TZXNzaW9uRXhwaXJlZC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyKTtcbiAgICB9XG59XG4iXX0=
@@ -1,33 +1,24 @@
1
1
  import { Component } from '@angular/core';
2
+ import { first } from 'rxjs/operators';
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "./iam-expired-interceptor.service";
4
5
  import * as i2 from "../foehn-modal/foehn-modal.component";
5
6
  export class RedirectComponent {
6
7
  constructor(iamInterceptor) {
7
8
  this.iamInterceptor = iamInterceptor;
8
- this.subscription = this.iamInterceptor.iamExpirationHeaderPresence.subscribe(() => {
9
- this.showModal();
10
- });
9
+ this.iamInterceptor.isIamSessionExpired
10
+ .pipe(first())
11
+ .subscribe(() => this.showModal());
11
12
  }
12
- ngOnInit() {
13
- this.modalHeaderText = 'Information';
14
- this.modalBodyText = `<p>Votre session a expiré.</p>
15
- <p>Vous pouvez vous connecter à nouveau pour continuer à utiliser nos services.</p>`;
16
- }
17
- ngOnDestroy() {
18
- this.subscription.unsubscribe();
19
- }
20
- redirect() {
21
- // feels dirty...
22
- // @todo replace with router.navigateToUrl
23
- window.location.href = '/iam/accueil';
13
+ reloadPage() {
14
+ window.location.reload();
24
15
  }
25
16
  showModal() {
26
17
  this.counter = 10;
27
18
  this.isModalVisible = true;
28
19
  setInterval(() => {
29
20
  if (0 === this.counter) {
30
- this.redirect();
21
+ this.reloadPage();
31
22
  return;
32
23
  }
33
24
  this.counter--;
@@ -35,9 +26,9 @@ export class RedirectComponent {
35
26
  }
36
27
  }
37
28
  RedirectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: RedirectComponent, deps: [{ token: i1.IamExpiredInterceptorService }], target: i0.ɵɵFactoryTarget.Component });
38
- RedirectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.5", type: RedirectComponent, selector: "redirector", ngImport: i0, template: "<foehn-modal\n [modalBodyText]=\"modalBodyText\"\n [isModalVisible]=\"isModalVisible\"\n [modalHeaderText]=\"modalHeaderText\"\n [modalFooterText]=\"'Vous allez \u00EAtre redirig\u00E9 dans ' + this.counter + ' s.'\"\n></foehn-modal>\n", components: [{ type: i2.FoehnModalComponent, selector: "foehn-modal", inputs: ["id", "name", "modalSize", "modalBodyText", "modalHeaderText", "modalFooterText", "closeable", "modalTriggerHtmlElement", "isModalVisible"], outputs: ["isModalVisibleChange"] }] });
29
+ RedirectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.5", type: RedirectComponent, selector: "redirector", ngImport: i0, template: "<foehn-modal\n [modalHeaderText]=\"'Information'\"\n [isModalVisible]=\"isModalVisible\"\n [closeable]=\"false\"\n>\n <p>Votre session a expir\u00E9.</p>\n <p>\n Vous pouvez\n <a href=\"#\" (click)=\"$event.preventDefault(); reloadPage()\">\n vous connecter\n </a>\n \u00E0 nouveau pour continuer \u00E0 utiliser nos services.\n </p>\n\n <div modal-footer class=\"w-100 text-right font-weight-bold\">\n Vous allez \u00EAtre redirig\u00E9 dans {{ counter }} s.\n </div>\n</foehn-modal>\n", components: [{ type: i2.FoehnModalComponent, selector: "foehn-modal", inputs: ["id", "name", "modalSize", "modalBodyText", "modalHeaderText", "closeable", "modalTriggerHtmlElement", "isModalVisible"], outputs: ["isModalVisibleChange"] }] });
39
30
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.5", ngImport: i0, type: RedirectComponent, decorators: [{
40
31
  type: Component,
41
- args: [{ selector: 'redirector', template: "<foehn-modal\n [modalBodyText]=\"modalBodyText\"\n [isModalVisible]=\"isModalVisible\"\n [modalHeaderText]=\"modalHeaderText\"\n [modalFooterText]=\"'Vous allez \u00EAtre redirig\u00E9 dans ' + this.counter + ' s.'\"\n></foehn-modal>\n" }]
32
+ args: [{ selector: 'redirector', template: "<foehn-modal\n [modalHeaderText]=\"'Information'\"\n [isModalVisible]=\"isModalVisible\"\n [closeable]=\"false\"\n>\n <p>Votre session a expir\u00E9.</p>\n <p>\n Vous pouvez\n <a href=\"#\" (click)=\"$event.preventDefault(); reloadPage()\">\n vous connecter\n </a>\n \u00E0 nouveau pour continuer \u00E0 utiliser nos services.\n </p>\n\n <div modal-footer class=\"w-100 text-right font-weight-bold\">\n Vous allez \u00EAtre redirig\u00E9 dans {{ counter }} s.\n </div>\n</foehn-modal>\n" }]
42
33
  }], ctorParameters: function () { return [{ type: i1.IamExpiredInterceptorService }]; } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXJlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL3Nkay1yZWRpcmVjdC9yZWRpcmVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvc2RrLXJlZGlyZWN0L3JlZGlyZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDOzs7O0FBUzdELE1BQU0sT0FBTyxpQkFBaUI7SUFRMUIsWUFBb0IsY0FBNEM7UUFBNUMsbUJBQWMsR0FBZCxjQUFjLENBQThCO1FBQzVELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQywyQkFBMkIsQ0FBQyxTQUFTLENBQ3pFLEdBQUcsRUFBRTtZQUNELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQ0osQ0FBQztJQUNOLENBQUM7SUFFRCxRQUFRO1FBQ0osSUFBSSxDQUFDLGVBQWUsR0FBRyxhQUFhLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRztnR0FDbUUsQ0FBQztJQUM3RixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVPLFFBQVE7UUFDWixpQkFBaUI7UUFDakIsMENBQTBDO1FBQzFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQztJQUMxQyxDQUFDO0lBRU8sU0FBUztRQUNiLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1FBQzNCLFdBQVcsQ0FBQyxHQUFHLEVBQUU7WUFDYixJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNwQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ2hCLE9BQU87YUFDVjtZQUNELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNuQixDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDYixDQUFDOzs4R0ExQ1EsaUJBQWlCO2tHQUFqQixpQkFBaUIsa0RDVDlCLHlQQU1BOzJGREdhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFFSSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWFtRXhwaXJlZEludGVyY2VwdG9yU2VydmljZSB9IGZyb20gJy4vaWFtLWV4cGlyZWQtaW50ZXJjZXB0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdyZWRpcmVjdG9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vcmVkaXJlY3QuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFJlZGlyZWN0Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQge1xuICAgIGlzTW9kYWxWaXNpYmxlOiBib29sZWFuO1xuICAgIG1vZGFsSGVhZGVyVGV4dDogc3RyaW5nO1xuICAgIG1vZGFsQm9keVRleHQ6IHN0cmluZztcbiAgICBjb3VudGVyOiBudW1iZXI7XG5cbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBpYW1JbnRlcmNlcHRvcjogSWFtRXhwaXJlZEludGVyY2VwdG9yU2VydmljZSkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuaWFtSW50ZXJjZXB0b3IuaWFtRXhwaXJhdGlvbkhlYWRlclByZXNlbmNlLnN1YnNjcmliZShcbiAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dNb2RhbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLm1vZGFsSGVhZGVyVGV4dCA9ICdJbmZvcm1hdGlvbic7XG4gICAgICAgIHRoaXMubW9kYWxCb2R5VGV4dCA9IGA8cD5Wb3RyZSBzZXNzaW9uIGEgZXhwaXLDqS48L3A+XG4gICAgICAgICAgICA8cD5Wb3VzIHBvdXZleiB2b3VzIGNvbm5lY3RlciDDoCBub3V2ZWF1IHBvdXIgY29udGludWVyIMOgIHV0aWxpc2VyIG5vcyBzZXJ2aWNlcy48L3A+YDtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZGlyZWN0KCk6IHZvaWQge1xuICAgICAgICAvLyBmZWVscyBkaXJ0eS4uLlxuICAgICAgICAvLyBAdG9kbyByZXBsYWNlIHdpdGggcm91dGVyLm5hdmlnYXRlVG9VcmxcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnL2lhbS9hY2N1ZWlsJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3dNb2RhbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb3VudGVyID0gMTA7XG4gICAgICAgIHRoaXMuaXNNb2RhbFZpc2libGUgPSB0cnVlO1xuICAgICAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoMCA9PT0gdGhpcy5jb3VudGVyKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWRpcmVjdCgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY291bnRlci0tO1xuICAgICAgICB9LCAxMDAwKTtcbiAgICB9XG59XG4iLCI8Zm9laG4tbW9kYWxcbiAgICBbbW9kYWxCb2R5VGV4dF09XCJtb2RhbEJvZHlUZXh0XCJcbiAgICBbaXNNb2RhbFZpc2libGVdPVwiaXNNb2RhbFZpc2libGVcIlxuICAgIFttb2RhbEhlYWRlclRleHRdPVwibW9kYWxIZWFkZXJUZXh0XCJcbiAgICBbbW9kYWxGb290ZXJUZXh0XT1cIidWb3VzIGFsbGV6IMOqdHJlIHJlZGlyaWfDqSBkYW5zICcgKyB0aGlzLmNvdW50ZXIgKyAnIHMuJ1wiXG4+PC9mb2Vobi1tb2RhbD5cbiJdfQ==
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXJlY3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL3Nkay1yZWRpcmVjdC9yZWRpcmVjdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9wcmVzdGF0aW9ucy1uZy9zcmMvc2RrLXJlZGlyZWN0L3JlZGlyZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBT3ZDLE1BQU0sT0FBTyxpQkFBaUI7SUFJMUIsWUFBb0IsY0FBNEM7UUFBNUMsbUJBQWMsR0FBZCxjQUFjLENBQThCO1FBQzVELElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CO2FBQ2xDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNiLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsVUFBVTtRQUNOLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVPLFNBQVM7UUFDYixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixXQUFXLENBQUMsR0FBRyxFQUFFO1lBQ2IsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDcEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNsQixPQUFPO2FBQ1Y7WUFDRCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDbkIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2IsQ0FBQzs7OEdBeEJRLGlCQUFpQjtrR0FBakIsaUJBQWlCLGtEQ1Q5Qiw4aUJBa0JBOzJGRFRhLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFFSSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJYW1FeHBpcmVkSW50ZXJjZXB0b3JTZXJ2aWNlIH0gZnJvbSAnLi9pYW0tZXhwaXJlZC1pbnRlcmNlcHRvci5zZXJ2aWNlJztcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ3JlZGlyZWN0b3InLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yZWRpcmVjdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgUmVkaXJlY3RDb21wb25lbnQge1xuICAgIGlzTW9kYWxWaXNpYmxlOiBib29sZWFuO1xuICAgIGNvdW50ZXI6IG51bWJlcjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaWFtSW50ZXJjZXB0b3I6IElhbUV4cGlyZWRJbnRlcmNlcHRvclNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5pYW1JbnRlcmNlcHRvci5pc0lhbVNlc3Npb25FeHBpcmVkXG4gICAgICAgICAgICAucGlwZShmaXJzdCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLnNob3dNb2RhbCgpKTtcbiAgICB9XG5cbiAgICByZWxvYWRQYWdlKCk6IHZvaWQge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG93TW9kYWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY291bnRlciA9IDEwO1xuICAgICAgICB0aGlzLmlzTW9kYWxWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKDAgPT09IHRoaXMuY291bnRlcikge1xuICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkUGFnZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY291bnRlci0tO1xuICAgICAgICB9LCAxMDAwKTtcbiAgICB9XG59XG4iLCI8Zm9laG4tbW9kYWxcbiAgICBbbW9kYWxIZWFkZXJUZXh0XT1cIidJbmZvcm1hdGlvbidcIlxuICAgIFtpc01vZGFsVmlzaWJsZV09XCJpc01vZGFsVmlzaWJsZVwiXG4gICAgW2Nsb3NlYWJsZV09XCJmYWxzZVwiXG4+XG4gICAgPHA+Vm90cmUgc2Vzc2lvbiBhIGV4cGlyw6kuPC9wPlxuICAgIDxwPlxuICAgICAgICBWb3VzIHBvdXZlelxuICAgICAgICA8YSBocmVmPVwiI1wiIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgcmVsb2FkUGFnZSgpXCI+XG4gICAgICAgICAgICB2b3VzIGNvbm5lY3RlclxuICAgICAgICA8L2E+XG4gICAgICAgIMOgIG5vdXZlYXUgcG91ciBjb250aW51ZXIgw6AgdXRpbGlzZXIgbm9zIHNlcnZpY2VzLlxuICAgIDwvcD5cblxuICAgIDxkaXYgbW9kYWwtZm9vdGVyIGNsYXNzPVwidy0xMDAgdGV4dC1yaWdodCBmb250LXdlaWdodC1ib2xkXCI+XG4gICAgICAgIFZvdXMgYWxsZXogw6p0cmUgcmVkaXJpZ8OpIGRhbnMge3sgY291bnRlciB9fSBzLlxuICAgIDwvZGl2PlxuPC9mb2Vobi1tb2RhbD5cbiJdfQ==