@firestitch/2fa 18.0.27 → 18.0.28

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 (75) hide show
  1. package/app/modules/code-input/components/code-input/code-input.component.d.ts +1 -1
  2. package/app/modules/defaulted/components/defaulted/defaulted.component.d.ts +1 -1
  3. package/app/modules/manage/components/2fa-manage/2fa-manage.component.d.ts +2 -5
  4. package/app/modules/manage/components/app/app.component.d.ts +2 -5
  5. package/app/modules/manage/components/email/email.component.d.ts +2 -5
  6. package/app/modules/manage/components/emails/emails.component.d.ts +2 -4
  7. package/app/modules/manage/components/manage-methods/manage-methods.component.d.ts +2 -5
  8. package/app/modules/manage/components/number/number.component.d.ts +2 -5
  9. package/app/modules/manage/components/numbers/numbers.component.d.ts +2 -4
  10. package/app/modules/manage/services/two-factor-manage.service.d.ts +0 -2
  11. package/app/modules/verification/components/2fa-verification/2fa-verification.component.d.ts +2 -5
  12. package/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.d.ts +1 -3
  13. package/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.d.ts +2 -3
  14. package/app/modules/verification/directives/2fa-verification-resend.directive.d.ts +1 -1
  15. package/app/modules/verification-methods/components/verification-methods/verification-methods.component.d.ts +1 -3
  16. package/app/modules/verification-setup/data/verification-method.data.d.ts +1 -2
  17. package/app/modules/verification-setup/verification-setup.module.d.ts +13 -15
  18. package/app/modules/verification-setup/views/email/email.component.d.ts +1 -1
  19. package/app/modules/verification-setup/views/verify/verify.component.d.ts +1 -1
  20. package/esm2022/app/modules/code-input/components/code-input/code-input.component.mjs +7 -6
  21. package/esm2022/app/modules/defaulted/components/defaulted/defaulted.component.mjs +4 -3
  22. package/esm2022/app/modules/manage/components/2fa-manage/2fa-manage.component.mjs +11 -18
  23. package/esm2022/app/modules/manage/components/app/app.component.mjs +40 -32
  24. package/esm2022/app/modules/manage/components/email/email.component.mjs +41 -31
  25. package/esm2022/app/modules/manage/components/emails/emails.component.mjs +29 -22
  26. package/esm2022/app/modules/manage/components/manage-methods/manage-methods.component.mjs +38 -29
  27. package/esm2022/app/modules/manage/components/number/number.component.mjs +44 -32
  28. package/esm2022/app/modules/manage/components/numbers/numbers.component.mjs +29 -22
  29. package/esm2022/app/modules/manage/services/two-factor-manage.service.mjs +5 -9
  30. package/esm2022/app/modules/verification/components/2fa-verification/2fa-verification.component.mjs +22 -23
  31. package/esm2022/app/modules/verification/components/2fa-verification-code/2fa-verification-code.component.mjs +9 -13
  32. package/esm2022/app/modules/verification/components/2fa-verification-methods/2fa-verification-methods.component.mjs +37 -22
  33. package/esm2022/app/modules/verification/directives/2fa-verification-resend.directive.mjs +3 -2
  34. package/esm2022/app/modules/verification-methods/components/verification-methods/verification-methods.component.mjs +21 -18
  35. package/esm2022/app/modules/verification-setup/data/verification-method.data.mjs +5 -9
  36. package/esm2022/app/modules/verification-setup/verification-setup.module.mjs +8 -15
  37. package/esm2022/app/modules/verification-setup/views/email/email.component.mjs +30 -18
  38. package/esm2022/app/modules/verification-setup/views/verify/verify.component.mjs +24 -10
  39. package/esm2022/public_api.mjs +1 -4
  40. package/fesm2022/firestitch-2fa.mjs +296 -554
  41. package/fesm2022/firestitch-2fa.mjs.map +1 -1
  42. package/package.json +1 -1
  43. package/public_api.d.ts +0 -3
  44. package/app/modules/code-input/code-input.module.d.ts +0 -11
  45. package/app/modules/code-input/index.d.ts +0 -1
  46. package/app/modules/defaulted/components/defaulted/index.d.ts +0 -1
  47. package/app/modules/defaulted/defaulted.module.d.ts +0 -8
  48. package/app/modules/manage/components/2fa-manage/index.d.ts +0 -1
  49. package/app/modules/manage/fs-2f-manage.module.d.ts +0 -34
  50. package/app/modules/resend/components/resend/index.d.ts +0 -1
  51. package/app/modules/resend/components/resend/resend.component.d.ts +0 -14
  52. package/app/modules/resend/resend.module.d.ts +0 -9
  53. package/app/modules/verification/components/2fa-verification-code/index.d.ts +0 -1
  54. package/app/modules/verification/components/2fa-verification-methods/index.d.ts +0 -1
  55. package/app/modules/verification/components/index.d.ts +0 -3
  56. package/app/modules/verification/fs-2fa-verification.module.d.ts +0 -25
  57. package/app/modules/verification/index.d.ts +0 -3
  58. package/app/modules/verification-methods/fs-2f-verification-methods.module.d.ts +0 -14
  59. package/app/modules/verification-methods/index.d.ts +0 -1
  60. package/esm2022/app/modules/code-input/code-input.module.mjs +0 -36
  61. package/esm2022/app/modules/code-input/index.mjs +0 -2
  62. package/esm2022/app/modules/defaulted/components/defaulted/index.mjs +0 -2
  63. package/esm2022/app/modules/defaulted/defaulted.module.mjs +0 -22
  64. package/esm2022/app/modules/manage/components/2fa-manage/index.mjs +0 -2
  65. package/esm2022/app/modules/manage/fs-2f-manage.module.mjs +0 -120
  66. package/esm2022/app/modules/resend/components/resend/index.mjs +0 -2
  67. package/esm2022/app/modules/resend/components/resend/resend.component.mjs +0 -37
  68. package/esm2022/app/modules/resend/resend.module.mjs +0 -28
  69. package/esm2022/app/modules/verification/components/2fa-verification-code/index.mjs +0 -2
  70. package/esm2022/app/modules/verification/components/2fa-verification-methods/index.mjs +0 -2
  71. package/esm2022/app/modules/verification/components/index.mjs +0 -4
  72. package/esm2022/app/modules/verification/fs-2fa-verification.module.mjs +0 -95
  73. package/esm2022/app/modules/verification/index.mjs +0 -4
  74. package/esm2022/app/modules/verification-methods/fs-2f-verification-methods.module.mjs +0 -46
  75. package/esm2022/app/modules/verification-methods/index.mjs +0 -2
@@ -1,27 +1,30 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, ViewChild, } from '@angular/core';
2
- import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
3
- import { FsFormDirective } from '@firestitch/form';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewChild, inject } from '@angular/core';
2
+ import { MAT_DIALOG_DATA, MatDialogRef, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';
3
+ import { FsFormDirective, FsFormModule } from '@firestitch/form';
4
4
  import { FsMessage } from '@firestitch/message';
5
5
  import { of } from 'rxjs';
6
6
  import { switchMap, tap } from 'rxjs/operators';
7
7
  import { VerificationMethodType } from '../../../../enums/verification-method-type.enum';
8
+ import { FormsModule } from '@angular/forms';
9
+ import { FsDialogModule } from '@firestitch/dialog';
10
+ import { CdkScrollable } from '@angular/cdk/scrolling';
11
+ import { FsSkeletonModule } from '@firestitch/skeleton';
12
+ import { FsQrcodeModule } from '@firestitch/qrcode';
13
+ import { CodeInputComponent } from '../../../code-input/components/code-input/code-input.component';
14
+ import { MatCheckbox } from '@angular/material/checkbox';
15
+ import { MatButton } from '@angular/material/button';
8
16
  import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/material/dialog";
10
- import * as i2 from "@firestitch/message";
11
- import * as i3 from "@angular/common";
12
- import * as i4 from "@angular/forms";
13
- import * as i5 from "@angular/material/button";
14
- import * as i6 from "@angular/material/checkbox";
15
- import * as i7 from "@firestitch/dialog";
16
- import * as i8 from "@firestitch/form";
17
- import * as i9 from "@firestitch/skeleton";
18
- import * as i10 from "@firestitch/qrcode";
19
- import * as i11 from "../../../code-input/components/code-input/code-input.component";
17
+ import * as i1 from "@angular/forms";
18
+ import * as i2 from "@firestitch/form";
19
+ import * as i3 from "@angular/material/dialog";
20
+ import * as i4 from "@firestitch/dialog";
21
+ import * as i5 from "@firestitch/skeleton";
22
+ import * as i6 from "@firestitch/qrcode";
20
23
  export class AppComponent {
21
- _data;
22
- _dialogRef;
23
- _cdRef;
24
- _message;
24
+ _data = inject(MAT_DIALOG_DATA);
25
+ _dialogRef = inject(MatDialogRef);
26
+ _cdRef = inject(ChangeDetectorRef);
27
+ _message = inject(FsMessage);
25
28
  form;
26
29
  twoFactorManageService;
27
30
  mode = 'qr-code';
@@ -31,12 +34,6 @@ export class AppComponent {
31
34
  code;
32
35
  default;
33
36
  appType;
34
- constructor(_data, _dialogRef, _cdRef, _message) {
35
- this._data = _data;
36
- this._dialogRef = _dialogRef;
37
- this._cdRef = _cdRef;
38
- this._message = _message;
39
- }
40
37
  ngOnInit() {
41
38
  this.twoFactorManageService = this._data.twoFactorManageService;
42
39
  this.accountId = this._data.accountId;
@@ -80,17 +77,28 @@ export class AppComponent {
80
77
  this._dialogRef.close(true);
81
78
  }));
82
79
  };
83
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AppComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }, { token: i0.ChangeDetectorRef }, { token: i2.FsMessage }], target: i0.ɵɵFactoryTarget.Component });
84
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: AppComponent, selector: "ng-component", viewQueries: [{ propertyName: "form", first: true, predicate: FsFormDirective, descendants: true }], ngImport: i0, template: "<form\n fsForm\n [submit]=\"verify\">\n <fs-dialog>\n <h1 mat-dialog-title>\n Authenticator app setup\n </h1>\n <mat-dialog-content>\n <div\n *ngIf=\"mode === 'qr-code'\"\n class=\"qr-code\">\n <ng-container *ngIf=\"appType\">\n <ol>\n <li>\n <ng-container *ngIf=\"appType === 'authy'\">\n Install the Authy Authenticator App from the\n <a\n href=\"https://apps.apple.com/us/app/authy/id494168017\"\n target=\"_blank\">\n App Store\n </a>\n or\n the\n <a\n href=\"https://play.google.com/store/apps/details?id=com.authy.authy\"\n target=\"_blank\">\n Google Play Store\n </a>\n .\n </ng-container>\n <ng-container *ngIf=\"appType === 'google'\">\n Install the Google Authenticator App from the\n <a\n href=\"https://apps.apple.com/us/app/google-authenticator/id388497605\"\n target=\"_blank\">\n App Store\n </a>\n or\n the\n <a\n href=\"https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en_US&gl=US\"\n target=\"_blank\">\n Google Play Store\n </a>\n .\n </ng-container>\n </li>\n <ng-container *ngIf=\"appType === 'authy'\">\n <li>\n Open the Authy app and select\n <b>\n Add Account\n </b>\n .\n </li>\n <li>\n Select\n <b>\n Scan QR Code\n </b>\n and scan the QR code below.\n </li>\n </ng-container>\n <ng-container *ngIf=\"appType === 'google'\">\n <li>\n Open the Google Authentictor app and click the\n <b>\n Plus icon\n </b>\n in the lower right corner.\n </li>\n <li>\n Select\n <b>\n Scan a QR code\n </b>\n and scan the QR code below.\n </li>\n </ng-container>\n </ol>\n <ng-container *fsSkeleton=\"qrCodeUrl\">\n <fs-qrcode\n [value]=\"qrCodeUrl\"\n [width]=\"300\"\n [height]=\"300\">\n </fs-qrcode>\n </ng-container>\n </ng-container>\n <div\n class=\"app-types\"\n *ngIf=\"!appType\">\n <p>\n Select the Authenticator App you prefer\n </p>\n <div class=\"row\">\n <span>\n <a (click)=\"appTypeAuthy()\">\n <svg\n width=\"50\"\n height=\"50\"\n viewBox=\"0 0 256 256\"\n xmlns=\"http://www.w3.org/2000/svg\"\n preserveAspectRatio=\"xMidYMid\">\n <path\n d=\"M256 127.998C256 198.696 198.694 256 127.997 256 57.304 256 0 198.696 0 127.998 0 57.305 57.304 0 127.997 0 198.694 0 256 57.305 256 127.998z\"\n fill=\"#EC1C24\">\n </path>\n <path\n d=\"M117.024 100.89l30.691 30.68c4.43 4.436 11.623 4.436 16.064 0 4.431-4.435 4.441-11.622 0-16.058L133.086 84.82C111.125 62.854 75.631 62.5 53.204 83.704a9.536 9.536 0 0 0-.605.548c-.098.098-.178.202-.275.29-.1.096-.202.182-.297.278-.194.193-.371.396-.54.597-21.215 22.437-20.85 57.932 1.113 79.897L83.292 196c4.44 4.433 11.623 4.433 16.062 0 4.442-4.437 4.442-11.633.011-16.06l-30.693-30.691c-13.398-13.393-13.488-35.129-.278-48.637 13.506-13.21 35.23-13.114 48.63.279zm39.612-40.873c-4.435 4.437-4.435 11.623.012 16.059l30.681 30.693c13.39 13.392 13.477 35.125.268 48.636-13.51 13.2-35.227 13.112-48.623-.282l-30.692-30.689c-4.438-4.437-11.633-4.437-16.066 0-4.443 4.433-4.443 11.642 0 16.065l30.682 30.694c21.968 21.965 57.458 22.322 79.889 1.116.208-.184.404-.355.61-.549.094-.095.182-.192.273-.29.1-.095.197-.183.29-.289.197-.183.365-.384.54-.594 21.215-22.428 20.86-57.911-1.102-79.889l-30.692-30.682c-4.436-4.443-11.638-4.443-16.07.001z\"\n fill=\"#FFF\">\n </path>\n </svg>\n </a>\n Authy\n </span>\n <span>\n <a (click)=\"appTypeGoogle()\">\n <svg\n width=\"50\"\n height=\"50\"\n viewBox=\"0 0 1024 1024\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"m457.07 45.92c73.67-8.62 149.41.22 218.93 26.24 62.75 23.47 120.59 60.41 167.72 108.09-40.31 39.97-80.25 80.31-120.51 120.33-25.95-25.45-56.19-46.65-89.47-61.37-44.22-19.82-93.39-28.54-141.72-25.2-54.6 3.52-108.11 22.49-152.63 54.3-55.24 38.95-96.61 97.22-114.8 162.35-13.64 47.78-14.77 98.97-3.76 147.4 8.85 39.61 26.09 77.29 50.05 110.03 22.24 30.45 50.3 56.64 82.22 76.71 36.79 23.24 78.76 38.22 121.96 43.48 37.02 4.65 74.9 2.23 111.05-7 3.97-1.91 6.24 2.61 8.73 4.86 40.74 40.95 81.68 81.7 122.43 122.63-73.31 35.6-155.99 51.86-237.3 46.12-68.05-4.51-135.07-24.08-194.71-57.18-24.87-13.6-48.23-29.82-70.33-47.54-17.46-14.81-34.71-30.01-49.72-47.35-25.41-27.39-47.21-58.11-65.17-90.87-4-7.72-8.64-15.12-11.9-23.2-4.47-9.05-8.37-18.36-12.25-27.67-4.96-13.27-10.26-26.44-13.88-40.15-.43-1.81-1.53-3.33-2.52-4.85-8.3-28.66-12.95-58.33-15.44-88.04-2.62-37.36-1.33-75.05 4.78-112.03 12.18-75.48 43.41-147.74 89.86-208.44 30.12-39.5 66.53-74.21 107.46-102.35 62.44-43.11 135.53-70.69 210.92-79.3m49.18 50.48c-5.7.99-10.96 3.76-15.38 7.43-10.4 8.93-14.14 24.81-8.17 37.28 6.33 15.02 25.16 23.1 40.36 17 15.43-5.24 24.78-23.51 19.74-39.06-4.1-15.43-20.92-25.79-36.55-22.65m-267.96 111.99c-5.33.28-10.59 1.92-15.16 4.68-11.47 7.03-17.88 21.74-14.36 34.86 3.09 14.08 16.78 25.06 31.26 24.61 15.03.41 29.08-11.39 31.54-26.17 2.24-10.33-1.61-21.55-9.14-28.85-6.24-6.33-15.3-9.62-24.14-9.13m-115.96 272c-6.62 1.23-12.84 4.58-17.54 9.4-9.45 9.72-11.72 25.57-5.02 37.42 7.16 13.96 25.48 20.86 39.98 14.62 15.02-5.51 23.99-23.42 19.06-38.71-4.04-15.41-20.86-25.96-36.48-22.73m111.98 272.05c-11.49 1.95-21.48 10.72-24.84 21.88-3.87 11.63-.13 25.16 8.9 33.36 6.15 5.48 14.4 8.7 22.67 8.32 11.16-.25 21.98-6.87 27.12-16.8 4.93-8.83 5.15-20.02.71-29.1-5.82-12.78-20.81-20.33-34.56-17.66m272.06 112.03c-11.76 2.02-21.92 11.07-25.09 22.6-3.87 12.57 1.13 27.25 11.91 34.79 7.86 5.79 18.42 7.67 27.77 4.86 9.61-2.77 17.7-10.24 21.07-19.68 4.97-12.74.36-28.32-10.58-36.46-7.02-5.45-16.35-7.67-25.08-6.11z\"\n fill=\"#a0a0a0\">\n </path>\n <g fill=\"#c1c1c1\">\n <path d=\"m506.25 96.4c15.63-3.14 32.45 7.22 36.55 22.65 5.04 15.55-4.31 33.82-19.74 39.06-15.2 6.1-34.03-1.98-40.36-17-5.97-12.47-2.23-28.35 8.17-37.28 4.42-3.67 9.68-6.44 15.38-7.43z\"></path>\n <path d=\"m122.33 480.39c15.62-3.23 32.44 7.32 36.48 22.73 4.93 15.29-4.04 33.2-19.06 38.71-14.5 6.24-32.82-.66-39.98-14.62-6.7-11.85-4.43-27.7 5.02-37.42 4.7-4.82 10.92-8.17 17.54-9.4z\"></path>\n </g>\n <path\n d=\"m843.72 180.25.11-.11c24.64 25.12 46.96 52.6 65.61 82.47 36.01 57.16 59.38 122.22 67.87 189.25 5.67 44.88 5.27 90.6-2.05 135.27-12.7 80.01-46.94 156.41-97.9 219.36-42.3 52.48-95.87 96.04-156.41 125.76l-.63-.26c-1.01-1.1-2.03-2.16-3.05-3.22-40.75-40.93-81.69-81.68-122.43-122.63-2.49-2.25-4.76-6.77-8.73-4.86-36.15 9.23-74.03 11.65-111.05 7-43.2-5.26-85.17-20.24-121.96-43.48-31.92-20.07-59.98-46.26-82.22-76.71-23.96-32.74-41.2-70.42-50.05-110.03-11.01-48.43-9.88-99.62 3.76-147.4 18.19-65.13 59.56-123.4 114.8-162.35 44.52-31.81 98.03-50.78 152.63-54.3 48.33-3.34 97.5 5.38 141.72 25.2 33.28 14.72 63.52 35.92 89.47 61.37 40.26-40.02 80.2-80.36 120.51-120.33m-351.75 183.97c-21.23 2.85-41.89 10.28-59.88 21.94-23.08 14.45-41.76 35.58-53.9 59.91-14.58 29.2-18.64 63.21-12.5 95.17 3.93 19.85 12.03 38.88 23.56 55.51 7.93 11.52 17.65 21.66 27.65 31.38 57.33 57.41 114.61 114.86 171.99 172.21 49.09-13.07 94.67-38.94 131.05-74.4 45.11-43.34 75.66-101.44 86.31-163.06.24-1.04.22-2.91 1.85-2.6 29.63.04 59.26-.01 88.9.05 19.04-.3 36.87-14.77 40.76-33.46.22-1.21 0-2.32-.67-3.35 1.22-5.71 2.08-11.58 1.38-17.43l-.24.4c-2.05-20.34-20.84-37.12-41.25-37.17-80.64-.07-161.28-.01-241.93-.07-6.44-22.08-18.5-42.33-34.03-59.23-25.8-27.5-62.26-45.01-100.02-46.82-9.68.02-19.44-.54-29.03 1.02m286.37 388.31c-12.64 2.06-23.37 12.59-25.7 25.18-1.48 8.14-.14 17.02 4.73 23.85 5.76 9.2 16.8 14.76 27.61 14.25 8.32.03 16.28-3.95 22.16-9.66 4.87-5.6 8.45-12.67 8.67-20.2.86-11.37-5.06-23.1-14.87-28.96-6.52-4.46-14.89-5.75-22.6-4.46z\"\n fill=\"#686868\">\n </path>\n <path\n d=\"m238.29 208.39c8.84-.49 17.9 2.8 24.14 9.13 7.53 7.3 11.38 18.52 9.14 28.85-2.46 14.78-16.51 26.58-31.54 26.17-14.48.45-28.17-10.53-31.26-24.61-3.52-13.12 2.89-27.83 14.36-34.86 4.57-2.76 9.83-4.4 15.16-4.68z\"\n fill=\"#c3c3c3\">\n </path>\n <path\n d=\"m491.97 364.22c9.59-1.56 19.35-1 29.03-1.02 37.76 1.81 74.22 19.32 100.02 46.82 15.53 16.9 27.59 37.15 34.03 59.23-47.67-.01-95.35-.01-143.03-.01-12.19-.11-24.23 5.42-32.21 14.61-6.01 6.85-9.74 15.65-10.44 24.74-1.19 14.17 5.36 28.7 16.69 37.28 7.62 5.91 17.28 9 26.92 8.8 126.69-.04 253.39-.06 380.08.03 4.76.04 9.59-.15 14.2-1.48 14.21-3.82 26.02-15.47 29.83-29.7.67 1.03.89 2.14.67 3.35-3.89 18.69-21.72 33.16-40.76 33.46-29.64-.06-59.27-.01-88.9-.05-1.63-.31-1.61 1.56-1.85 2.6-10.65 61.62-41.2 119.72-86.31 163.06-36.38 35.46-81.96 61.33-131.05 74.4-57.38-57.35-114.66-114.8-171.99-172.21-10-9.72-19.72-19.86-27.65-31.38-11.53-16.63-19.63-35.66-23.56-55.51-6.14-31.96-2.08-65.97 12.5-95.17 12.14-24.33 30.82-45.46 53.9-59.91 17.99-11.66 38.65-19.09 59.88-21.94z\"\n fill=\"#474747\">\n </path>\n <g fill=\"#bfbfbf\">\n <path d=\"m479.81 483.85c7.98-9.19 20.02-14.72 32.21-14.61 47.68 0 95.36 0 143.03.01 80.65.06 161.29 0 241.93.07 20.41.05 39.2 16.83 41.25 37.17-.19.33-.58.97-.78 1.29-3.68-18.51-21.57-33.16-40.47-33.05-124.97.1-249.94.12-374.91.17-7.73.13-15.74-.8-23.15 1.96-9.06 2.84-16.73 9.1-22.27 16.7-3.34 4.55-4.39 10.24-7.28 15.03.7-9.09 4.43-17.89 10.44-24.74z\"></path>\n <path d=\"m234.31 752.44c13.75-2.67 28.74 4.88 34.56 17.66 4.44 9.08 4.22 20.27-.71 29.1-5.14 9.93-15.96 16.55-27.12 16.8-8.27.38-16.52-2.84-22.67-8.32-9.03-8.2-12.77-21.73-8.9-33.36 3.36-11.16 13.35-19.93 24.84-21.88z\"></path>\n </g>\n <path\n d=\"m498.92 476.86c7.41-2.76 15.42-1.83 23.15-1.96 124.97-.05 249.94-.07 374.91-.17 18.9-.11 36.79 14.54 40.47 33.05.2-.32.59-.96.78-1.29l.24-.4c.7 5.85-.16 11.72-1.38 17.43-3.81 14.23-15.62 25.88-29.83 29.7-4.61 1.33-9.44 1.52-14.2 1.48-126.69-.09-253.39-.07-380.08-.03-9.64.2-19.3-2.89-26.92-8.8-11.33-8.58-17.88-23.11-16.69-37.28 2.89-4.79 3.94-10.48 7.28-15.03 5.54-7.6 13.21-13.86 22.27-16.7z\"\n fill=\"#b0b0b0\">\n </path>\n <path\n d=\"m59.49 636.08c.99 1.52 2.09 3.04 2.52 4.85 3.62 13.71 8.92 26.88 13.88 40.15 3.88 9.31 7.78 18.62 12.25 27.67 3.26 8.08 7.9 15.48 11.9 23.2 17.96 32.76 39.76 63.48 65.17 90.87 15.01 17.34 32.26 32.54 49.72 47.35 22.1 17.72 45.46 33.94 70.33 47.54 59.64 33.1 126.66 52.67 194.71 57.18 81.31 5.74 163.99-10.52 237.3-46.12 1.02 1.06 2.04 2.12 3.05 3.22l.03.61c-42.32 21.03-87.88 35.53-134.56 42.91-56.91 8.9-115.46 7.49-171.82-4.5-67.89-14.35-132.42-44.21-187.42-86.51-63.52-48.63-114.32-113.73-145.86-187.27-8.42-19.87-15.93-40.22-21.2-61.15z\"\n fill=\"#939393\">\n </path>\n <path\n d=\"m778.34 752.53c7.71-1.29 16.08 0 22.6 4.46 9.81 5.86 15.73 17.59 14.87 28.96-.22 7.53-3.8 14.6-8.67 20.2-5.88 5.71-13.84 9.69-22.16 9.66-10.81.51-21.85-5.05-27.61-14.25-4.87-6.83-6.21-15.71-4.73-23.85 2.33-12.59 13.06-23.12 25.7-25.18z\"\n fill=\"#767676\">\n </path>\n <path\n d=\"m506.37 864.47c8.73-1.56 18.06.66 25.08 6.11 10.94 8.14 15.55 23.72 10.58 36.46-3.37 9.44-11.46 16.91-21.07 19.68-9.35 2.81-19.91.93-27.77-4.86-10.78-7.54-15.78-22.22-11.91-34.79 3.17-11.53 13.33-20.58 25.09-22.6z\"\n fill=\"#bebebe\">\n </path>\n </svg>\n </a>\n Google Authenticator\n </span>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"mode === 'code-input'\"\n class=\"code-input\">\n <div>\n Enter the 6-digit code you see in the App.\n </div>\n <app-code-input (codeChanged)=\"codeChanged($event)\"></app-code-input>\n <mat-checkbox\n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default verification method\n </mat-checkbox>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <ng-container *ngIf=\"appType\">\n <button\n *ngIf=\"mode === 'qr-code'\"\n type=\"button\"\n mat-button\n color=\"primary\"\n (click)=\"next()\">\n Next\n </button>\n <button\n *ngIf=\"mode === 'code-input'\"\n type=\"submit\"\n mat-button\n color=\"primary\"\n (click)=\"next()\">\n Verify\n </button>\n </ng-container>\n <button\n type=\"button\"\n mat-button\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>", styles: ["ul{margin:0;padding-left:24px}fs-qrcode{display:flex;justify-content:center;margin:30px}app-code-input{margin-top:10px}.code-input{width:400px}mat-checkbox{overflow:hidden}.app-types{text-align:center;padding:0 40px}.app-types .row{display:flex;justify-content:center}.app-types .row span{display:flex;flex-direction:column;text-align:center;max-width:100px}.app-types .row span+span{margin-left:40px}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i6.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i7.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout", "dock", "dockable", "fullscreenPercent"] }, { kind: "directive", type: i8.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup", "deactivationGuard"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"], exportAs: ["fsForm"] }, { kind: "directive", type: i8.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "directive", type: i8.FsButtonDirective, selector: "[mat-raised-button]:not([fsFormButtonStandalone]),[mat-button]:not([fsFormButtonStandalone]),[mat-flat-button]:not([fsFormButtonStandalone]),[mat-stroked-button]:not([fsFormButtonStandalone])", inputs: ["name", "dirtySubmit", "form"] }, { kind: "directive", type: i9.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { kind: "component", type: i10.FsClipboardComponent, selector: "fs-qrcode", inputs: ["value", "width", "height"] }, { kind: "component", type: i11.CodeInputComponent, selector: "app-code-input", inputs: ["codeLength", "code"], outputs: ["codeCompleted", "codeChanged"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
80
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AppComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
81
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: AppComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "form", first: true, predicate: FsFormDirective, descendants: true }], ngImport: i0, template: "<form\n fsForm\n [submit]=\"verify\">\n <fs-dialog>\n <h1 mat-dialog-title>\n Authenticator app setup\n </h1>\n <mat-dialog-content>\n @if (mode === 'qr-code') {\n <div\n class=\"qr-code\">\n @if (appType) {\n <ol>\n <li>\n @if (appType === 'authy') {\n Install the Authy Authenticator App from the\n <a\n href=\"https://apps.apple.com/us/app/authy/id494168017\"\n target=\"_blank\">\n App Store\n </a>\n or\n the\n <a\n href=\"https://play.google.com/store/apps/details?id=com.authy.authy\"\n target=\"_blank\">\n Google Play Store\n </a>\n .\n }\n @if (appType === 'google') {\n Install the Google Authenticator App from the\n <a\n href=\"https://apps.apple.com/us/app/google-authenticator/id388497605\"\n target=\"_blank\">\n App Store\n </a>\n or\n the\n <a\n href=\"https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en_US&gl=US\"\n target=\"_blank\">\n Google Play Store\n </a>\n .\n }\n </li>\n @if (appType === 'authy') {\n <li>\n Open the Authy app and select\n <b>\n Add Account\n </b>\n .\n </li>\n <li>\n Select\n <b>\n Scan QR Code\n </b>\n and scan the QR code below.\n </li>\n }\n @if (appType === 'google') {\n <li>\n Open the Google Authentictor app and click the\n <b>\n Plus icon\n </b>\n in the lower right corner.\n </li>\n <li>\n Select\n <b>\n Scan a QR code\n </b>\n and scan the QR code below.\n </li>\n }\n </ol>\n <ng-container *fsSkeleton=\"qrCodeUrl\">\n <fs-qrcode\n [value]=\"qrCodeUrl\"\n [width]=\"300\"\n [height]=\"300\">\n </fs-qrcode>\n </ng-container>\n }\n @if (!appType) {\n <div\n class=\"app-types\"\n >\n <p>\n Select the Authenticator App you prefer\n </p>\n <div class=\"row\">\n <span>\n <a (click)=\"appTypeAuthy()\">\n <svg\n width=\"50\"\n height=\"50\"\n viewBox=\"0 0 256 256\"\n xmlns=\"http://www.w3.org/2000/svg\"\n preserveAspectRatio=\"xMidYMid\">\n <path\n d=\"M256 127.998C256 198.696 198.694 256 127.997 256 57.304 256 0 198.696 0 127.998 0 57.305 57.304 0 127.997 0 198.694 0 256 57.305 256 127.998z\"\n fill=\"#EC1C24\">\n </path>\n <path\n d=\"M117.024 100.89l30.691 30.68c4.43 4.436 11.623 4.436 16.064 0 4.431-4.435 4.441-11.622 0-16.058L133.086 84.82C111.125 62.854 75.631 62.5 53.204 83.704a9.536 9.536 0 0 0-.605.548c-.098.098-.178.202-.275.29-.1.096-.202.182-.297.278-.194.193-.371.396-.54.597-21.215 22.437-20.85 57.932 1.113 79.897L83.292 196c4.44 4.433 11.623 4.433 16.062 0 4.442-4.437 4.442-11.633.011-16.06l-30.693-30.691c-13.398-13.393-13.488-35.129-.278-48.637 13.506-13.21 35.23-13.114 48.63.279zm39.612-40.873c-4.435 4.437-4.435 11.623.012 16.059l30.681 30.693c13.39 13.392 13.477 35.125.268 48.636-13.51 13.2-35.227 13.112-48.623-.282l-30.692-30.689c-4.438-4.437-11.633-4.437-16.066 0-4.443 4.433-4.443 11.642 0 16.065l30.682 30.694c21.968 21.965 57.458 22.322 79.889 1.116.208-.184.404-.355.61-.549.094-.095.182-.192.273-.29.1-.095.197-.183.29-.289.197-.183.365-.384.54-.594 21.215-22.428 20.86-57.911-1.102-79.889l-30.692-30.682c-4.436-4.443-11.638-4.443-16.07.001z\"\n fill=\"#FFF\">\n </path>\n </svg>\n </a>\n Authy\n </span>\n <span>\n <a (click)=\"appTypeGoogle()\">\n <svg\n width=\"50\"\n height=\"50\"\n viewBox=\"0 0 1024 1024\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"m457.07 45.92c73.67-8.62 149.41.22 218.93 26.24 62.75 23.47 120.59 60.41 167.72 108.09-40.31 39.97-80.25 80.31-120.51 120.33-25.95-25.45-56.19-46.65-89.47-61.37-44.22-19.82-93.39-28.54-141.72-25.2-54.6 3.52-108.11 22.49-152.63 54.3-55.24 38.95-96.61 97.22-114.8 162.35-13.64 47.78-14.77 98.97-3.76 147.4 8.85 39.61 26.09 77.29 50.05 110.03 22.24 30.45 50.3 56.64 82.22 76.71 36.79 23.24 78.76 38.22 121.96 43.48 37.02 4.65 74.9 2.23 111.05-7 3.97-1.91 6.24 2.61 8.73 4.86 40.74 40.95 81.68 81.7 122.43 122.63-73.31 35.6-155.99 51.86-237.3 46.12-68.05-4.51-135.07-24.08-194.71-57.18-24.87-13.6-48.23-29.82-70.33-47.54-17.46-14.81-34.71-30.01-49.72-47.35-25.41-27.39-47.21-58.11-65.17-90.87-4-7.72-8.64-15.12-11.9-23.2-4.47-9.05-8.37-18.36-12.25-27.67-4.96-13.27-10.26-26.44-13.88-40.15-.43-1.81-1.53-3.33-2.52-4.85-8.3-28.66-12.95-58.33-15.44-88.04-2.62-37.36-1.33-75.05 4.78-112.03 12.18-75.48 43.41-147.74 89.86-208.44 30.12-39.5 66.53-74.21 107.46-102.35 62.44-43.11 135.53-70.69 210.92-79.3m49.18 50.48c-5.7.99-10.96 3.76-15.38 7.43-10.4 8.93-14.14 24.81-8.17 37.28 6.33 15.02 25.16 23.1 40.36 17 15.43-5.24 24.78-23.51 19.74-39.06-4.1-15.43-20.92-25.79-36.55-22.65m-267.96 111.99c-5.33.28-10.59 1.92-15.16 4.68-11.47 7.03-17.88 21.74-14.36 34.86 3.09 14.08 16.78 25.06 31.26 24.61 15.03.41 29.08-11.39 31.54-26.17 2.24-10.33-1.61-21.55-9.14-28.85-6.24-6.33-15.3-9.62-24.14-9.13m-115.96 272c-6.62 1.23-12.84 4.58-17.54 9.4-9.45 9.72-11.72 25.57-5.02 37.42 7.16 13.96 25.48 20.86 39.98 14.62 15.02-5.51 23.99-23.42 19.06-38.71-4.04-15.41-20.86-25.96-36.48-22.73m111.98 272.05c-11.49 1.95-21.48 10.72-24.84 21.88-3.87 11.63-.13 25.16 8.9 33.36 6.15 5.48 14.4 8.7 22.67 8.32 11.16-.25 21.98-6.87 27.12-16.8 4.93-8.83 5.15-20.02.71-29.1-5.82-12.78-20.81-20.33-34.56-17.66m272.06 112.03c-11.76 2.02-21.92 11.07-25.09 22.6-3.87 12.57 1.13 27.25 11.91 34.79 7.86 5.79 18.42 7.67 27.77 4.86 9.61-2.77 17.7-10.24 21.07-19.68 4.97-12.74.36-28.32-10.58-36.46-7.02-5.45-16.35-7.67-25.08-6.11z\"\n fill=\"#a0a0a0\">\n </path>\n <g fill=\"#c1c1c1\">\n <path d=\"m506.25 96.4c15.63-3.14 32.45 7.22 36.55 22.65 5.04 15.55-4.31 33.82-19.74 39.06-15.2 6.1-34.03-1.98-40.36-17-5.97-12.47-2.23-28.35 8.17-37.28 4.42-3.67 9.68-6.44 15.38-7.43z\"></path>\n <path d=\"m122.33 480.39c15.62-3.23 32.44 7.32 36.48 22.73 4.93 15.29-4.04 33.2-19.06 38.71-14.5 6.24-32.82-.66-39.98-14.62-6.7-11.85-4.43-27.7 5.02-37.42 4.7-4.82 10.92-8.17 17.54-9.4z\"></path>\n </g>\n <path\n d=\"m843.72 180.25.11-.11c24.64 25.12 46.96 52.6 65.61 82.47 36.01 57.16 59.38 122.22 67.87 189.25 5.67 44.88 5.27 90.6-2.05 135.27-12.7 80.01-46.94 156.41-97.9 219.36-42.3 52.48-95.87 96.04-156.41 125.76l-.63-.26c-1.01-1.1-2.03-2.16-3.05-3.22-40.75-40.93-81.69-81.68-122.43-122.63-2.49-2.25-4.76-6.77-8.73-4.86-36.15 9.23-74.03 11.65-111.05 7-43.2-5.26-85.17-20.24-121.96-43.48-31.92-20.07-59.98-46.26-82.22-76.71-23.96-32.74-41.2-70.42-50.05-110.03-11.01-48.43-9.88-99.62 3.76-147.4 18.19-65.13 59.56-123.4 114.8-162.35 44.52-31.81 98.03-50.78 152.63-54.3 48.33-3.34 97.5 5.38 141.72 25.2 33.28 14.72 63.52 35.92 89.47 61.37 40.26-40.02 80.2-80.36 120.51-120.33m-351.75 183.97c-21.23 2.85-41.89 10.28-59.88 21.94-23.08 14.45-41.76 35.58-53.9 59.91-14.58 29.2-18.64 63.21-12.5 95.17 3.93 19.85 12.03 38.88 23.56 55.51 7.93 11.52 17.65 21.66 27.65 31.38 57.33 57.41 114.61 114.86 171.99 172.21 49.09-13.07 94.67-38.94 131.05-74.4 45.11-43.34 75.66-101.44 86.31-163.06.24-1.04.22-2.91 1.85-2.6 29.63.04 59.26-.01 88.9.05 19.04-.3 36.87-14.77 40.76-33.46.22-1.21 0-2.32-.67-3.35 1.22-5.71 2.08-11.58 1.38-17.43l-.24.4c-2.05-20.34-20.84-37.12-41.25-37.17-80.64-.07-161.28-.01-241.93-.07-6.44-22.08-18.5-42.33-34.03-59.23-25.8-27.5-62.26-45.01-100.02-46.82-9.68.02-19.44-.54-29.03 1.02m286.37 388.31c-12.64 2.06-23.37 12.59-25.7 25.18-1.48 8.14-.14 17.02 4.73 23.85 5.76 9.2 16.8 14.76 27.61 14.25 8.32.03 16.28-3.95 22.16-9.66 4.87-5.6 8.45-12.67 8.67-20.2.86-11.37-5.06-23.1-14.87-28.96-6.52-4.46-14.89-5.75-22.6-4.46z\"\n fill=\"#686868\">\n </path>\n <path\n d=\"m238.29 208.39c8.84-.49 17.9 2.8 24.14 9.13 7.53 7.3 11.38 18.52 9.14 28.85-2.46 14.78-16.51 26.58-31.54 26.17-14.48.45-28.17-10.53-31.26-24.61-3.52-13.12 2.89-27.83 14.36-34.86 4.57-2.76 9.83-4.4 15.16-4.68z\"\n fill=\"#c3c3c3\">\n </path>\n <path\n d=\"m491.97 364.22c9.59-1.56 19.35-1 29.03-1.02 37.76 1.81 74.22 19.32 100.02 46.82 15.53 16.9 27.59 37.15 34.03 59.23-47.67-.01-95.35-.01-143.03-.01-12.19-.11-24.23 5.42-32.21 14.61-6.01 6.85-9.74 15.65-10.44 24.74-1.19 14.17 5.36 28.7 16.69 37.28 7.62 5.91 17.28 9 26.92 8.8 126.69-.04 253.39-.06 380.08.03 4.76.04 9.59-.15 14.2-1.48 14.21-3.82 26.02-15.47 29.83-29.7.67 1.03.89 2.14.67 3.35-3.89 18.69-21.72 33.16-40.76 33.46-29.64-.06-59.27-.01-88.9-.05-1.63-.31-1.61 1.56-1.85 2.6-10.65 61.62-41.2 119.72-86.31 163.06-36.38 35.46-81.96 61.33-131.05 74.4-57.38-57.35-114.66-114.8-171.99-172.21-10-9.72-19.72-19.86-27.65-31.38-11.53-16.63-19.63-35.66-23.56-55.51-6.14-31.96-2.08-65.97 12.5-95.17 12.14-24.33 30.82-45.46 53.9-59.91 17.99-11.66 38.65-19.09 59.88-21.94z\"\n fill=\"#474747\">\n </path>\n <g fill=\"#bfbfbf\">\n <path d=\"m479.81 483.85c7.98-9.19 20.02-14.72 32.21-14.61 47.68 0 95.36 0 143.03.01 80.65.06 161.29 0 241.93.07 20.41.05 39.2 16.83 41.25 37.17-.19.33-.58.97-.78 1.29-3.68-18.51-21.57-33.16-40.47-33.05-124.97.1-249.94.12-374.91.17-7.73.13-15.74-.8-23.15 1.96-9.06 2.84-16.73 9.1-22.27 16.7-3.34 4.55-4.39 10.24-7.28 15.03.7-9.09 4.43-17.89 10.44-24.74z\"></path>\n <path d=\"m234.31 752.44c13.75-2.67 28.74 4.88 34.56 17.66 4.44 9.08 4.22 20.27-.71 29.1-5.14 9.93-15.96 16.55-27.12 16.8-8.27.38-16.52-2.84-22.67-8.32-9.03-8.2-12.77-21.73-8.9-33.36 3.36-11.16 13.35-19.93 24.84-21.88z\"></path>\n </g>\n <path\n d=\"m498.92 476.86c7.41-2.76 15.42-1.83 23.15-1.96 124.97-.05 249.94-.07 374.91-.17 18.9-.11 36.79 14.54 40.47 33.05.2-.32.59-.96.78-1.29l.24-.4c.7 5.85-.16 11.72-1.38 17.43-3.81 14.23-15.62 25.88-29.83 29.7-4.61 1.33-9.44 1.52-14.2 1.48-126.69-.09-253.39-.07-380.08-.03-9.64.2-19.3-2.89-26.92-8.8-11.33-8.58-17.88-23.11-16.69-37.28 2.89-4.79 3.94-10.48 7.28-15.03 5.54-7.6 13.21-13.86 22.27-16.7z\"\n fill=\"#b0b0b0\">\n </path>\n <path\n d=\"m59.49 636.08c.99 1.52 2.09 3.04 2.52 4.85 3.62 13.71 8.92 26.88 13.88 40.15 3.88 9.31 7.78 18.62 12.25 27.67 3.26 8.08 7.9 15.48 11.9 23.2 17.96 32.76 39.76 63.48 65.17 90.87 15.01 17.34 32.26 32.54 49.72 47.35 22.1 17.72 45.46 33.94 70.33 47.54 59.64 33.1 126.66 52.67 194.71 57.18 81.31 5.74 163.99-10.52 237.3-46.12 1.02 1.06 2.04 2.12 3.05 3.22l.03.61c-42.32 21.03-87.88 35.53-134.56 42.91-56.91 8.9-115.46 7.49-171.82-4.5-67.89-14.35-132.42-44.21-187.42-86.51-63.52-48.63-114.32-113.73-145.86-187.27-8.42-19.87-15.93-40.22-21.2-61.15z\"\n fill=\"#939393\">\n </path>\n <path\n d=\"m778.34 752.53c7.71-1.29 16.08 0 22.6 4.46 9.81 5.86 15.73 17.59 14.87 28.96-.22 7.53-3.8 14.6-8.67 20.2-5.88 5.71-13.84 9.69-22.16 9.66-10.81.51-21.85-5.05-27.61-14.25-4.87-6.83-6.21-15.71-4.73-23.85 2.33-12.59 13.06-23.12 25.7-25.18z\"\n fill=\"#767676\">\n </path>\n <path\n d=\"m506.37 864.47c8.73-1.56 18.06.66 25.08 6.11 10.94 8.14 15.55 23.72 10.58 36.46-3.37 9.44-11.46 16.91-21.07 19.68-9.35 2.81-19.91.93-27.77-4.86-10.78-7.54-15.78-22.22-11.91-34.79 3.17-11.53 13.33-20.58 25.09-22.6z\"\n fill=\"#bebebe\">\n </path>\n </svg>\n </a>\n Google Authenticator\n </span>\n </div>\n </div>\n }\n </div>\n }\n @if (mode === 'code-input') {\n <div\n class=\"code-input\">\n <div>\n Enter the 6-digit code you see in the App.\n </div>\n <app-code-input (codeChanged)=\"codeChanged($event)\"></app-code-input>\n <mat-checkbox\n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default verification method\n </mat-checkbox>\n </div>\n }\n </mat-dialog-content>\n <mat-dialog-actions>\n @if (appType) {\n @if (mode === 'qr-code') {\n <button\n type=\"button\"\n mat-button\n color=\"primary\"\n (click)=\"next()\">\n Next\n </button>\n }\n @if (mode === 'code-input') {\n <button\n type=\"submit\"\n mat-button\n color=\"primary\"\n (click)=\"next()\">\n Verify\n </button>\n }\n }\n <button\n type=\"button\"\n mat-button\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>", styles: ["ul{margin:0;padding-left:24px}fs-qrcode{display:flex;justify-content:center;margin:30px}app-code-input{margin-top:10px}.code-input{width:400px}mat-checkbox{overflow:hidden}.app-types{text-align:center;padding:0 40px}.app-types .row{display:flex;justify-content:center}.app-types .row span{display:flex;flex-direction:column;text-align:center;max-width:100px}.app-types .row span+span{margin-left:40px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i2.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup", "deactivationGuard"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"], exportAs: ["fsForm"] }, { kind: "directive", type: i2.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "directive", type: i2.FsButtonDirective, selector: "[mat-raised-button]:not([fsFormButtonStandalone]),[mat-button]:not([fsFormButtonStandalone]),[mat-flat-button]:not([fsFormButtonStandalone]),[mat-stroked-button]:not([fsFormButtonStandalone])", inputs: ["name", "dirtySubmit", "form"] }, { kind: "ngmodule", type: FsDialogModule }, { kind: "directive", type: i3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i4.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout", "dock", "dockable", "fullscreenPercent"] }, { kind: "ngmodule", type: FsSkeletonModule }, { kind: "directive", type: i5.FsSkeletonContentDirective, selector: "[fsSkeleton]", inputs: ["fsSkeleton", "fsSkeletonPattern"] }, { kind: "ngmodule", type: FsQrcodeModule }, { kind: "component", type: i6.FsClipboardComponent, selector: "fs-qrcode", inputs: ["value", "width", "height"] }, { kind: "component", type: CodeInputComponent, selector: "app-code-input", inputs: ["codeLength", "code"], outputs: ["codeCompleted", "codeChanged"] }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
85
82
  }
86
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AppComponent, decorators: [{
87
84
  type: Component,
88
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n fsForm\n [submit]=\"verify\">\n <fs-dialog>\n <h1 mat-dialog-title>\n Authenticator app setup\n </h1>\n <mat-dialog-content>\n <div\n *ngIf=\"mode === 'qr-code'\"\n class=\"qr-code\">\n <ng-container *ngIf=\"appType\">\n <ol>\n <li>\n <ng-container *ngIf=\"appType === 'authy'\">\n Install the Authy Authenticator App from the\n <a\n href=\"https://apps.apple.com/us/app/authy/id494168017\"\n target=\"_blank\">\n App Store\n </a>\n or\n the\n <a\n href=\"https://play.google.com/store/apps/details?id=com.authy.authy\"\n target=\"_blank\">\n Google Play Store\n </a>\n .\n </ng-container>\n <ng-container *ngIf=\"appType === 'google'\">\n Install the Google Authenticator App from the\n <a\n href=\"https://apps.apple.com/us/app/google-authenticator/id388497605\"\n target=\"_blank\">\n App Store\n </a>\n or\n the\n <a\n href=\"https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en_US&gl=US\"\n target=\"_blank\">\n Google Play Store\n </a>\n .\n </ng-container>\n </li>\n <ng-container *ngIf=\"appType === 'authy'\">\n <li>\n Open the Authy app and select\n <b>\n Add Account\n </b>\n .\n </li>\n <li>\n Select\n <b>\n Scan QR Code\n </b>\n and scan the QR code below.\n </li>\n </ng-container>\n <ng-container *ngIf=\"appType === 'google'\">\n <li>\n Open the Google Authentictor app and click the\n <b>\n Plus icon\n </b>\n in the lower right corner.\n </li>\n <li>\n Select\n <b>\n Scan a QR code\n </b>\n and scan the QR code below.\n </li>\n </ng-container>\n </ol>\n <ng-container *fsSkeleton=\"qrCodeUrl\">\n <fs-qrcode\n [value]=\"qrCodeUrl\"\n [width]=\"300\"\n [height]=\"300\">\n </fs-qrcode>\n </ng-container>\n </ng-container>\n <div\n class=\"app-types\"\n *ngIf=\"!appType\">\n <p>\n Select the Authenticator App you prefer\n </p>\n <div class=\"row\">\n <span>\n <a (click)=\"appTypeAuthy()\">\n <svg\n width=\"50\"\n height=\"50\"\n viewBox=\"0 0 256 256\"\n xmlns=\"http://www.w3.org/2000/svg\"\n preserveAspectRatio=\"xMidYMid\">\n <path\n d=\"M256 127.998C256 198.696 198.694 256 127.997 256 57.304 256 0 198.696 0 127.998 0 57.305 57.304 0 127.997 0 198.694 0 256 57.305 256 127.998z\"\n fill=\"#EC1C24\">\n </path>\n <path\n d=\"M117.024 100.89l30.691 30.68c4.43 4.436 11.623 4.436 16.064 0 4.431-4.435 4.441-11.622 0-16.058L133.086 84.82C111.125 62.854 75.631 62.5 53.204 83.704a9.536 9.536 0 0 0-.605.548c-.098.098-.178.202-.275.29-.1.096-.202.182-.297.278-.194.193-.371.396-.54.597-21.215 22.437-20.85 57.932 1.113 79.897L83.292 196c4.44 4.433 11.623 4.433 16.062 0 4.442-4.437 4.442-11.633.011-16.06l-30.693-30.691c-13.398-13.393-13.488-35.129-.278-48.637 13.506-13.21 35.23-13.114 48.63.279zm39.612-40.873c-4.435 4.437-4.435 11.623.012 16.059l30.681 30.693c13.39 13.392 13.477 35.125.268 48.636-13.51 13.2-35.227 13.112-48.623-.282l-30.692-30.689c-4.438-4.437-11.633-4.437-16.066 0-4.443 4.433-4.443 11.642 0 16.065l30.682 30.694c21.968 21.965 57.458 22.322 79.889 1.116.208-.184.404-.355.61-.549.094-.095.182-.192.273-.29.1-.095.197-.183.29-.289.197-.183.365-.384.54-.594 21.215-22.428 20.86-57.911-1.102-79.889l-30.692-30.682c-4.436-4.443-11.638-4.443-16.07.001z\"\n fill=\"#FFF\">\n </path>\n </svg>\n </a>\n Authy\n </span>\n <span>\n <a (click)=\"appTypeGoogle()\">\n <svg\n width=\"50\"\n height=\"50\"\n viewBox=\"0 0 1024 1024\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"m457.07 45.92c73.67-8.62 149.41.22 218.93 26.24 62.75 23.47 120.59 60.41 167.72 108.09-40.31 39.97-80.25 80.31-120.51 120.33-25.95-25.45-56.19-46.65-89.47-61.37-44.22-19.82-93.39-28.54-141.72-25.2-54.6 3.52-108.11 22.49-152.63 54.3-55.24 38.95-96.61 97.22-114.8 162.35-13.64 47.78-14.77 98.97-3.76 147.4 8.85 39.61 26.09 77.29 50.05 110.03 22.24 30.45 50.3 56.64 82.22 76.71 36.79 23.24 78.76 38.22 121.96 43.48 37.02 4.65 74.9 2.23 111.05-7 3.97-1.91 6.24 2.61 8.73 4.86 40.74 40.95 81.68 81.7 122.43 122.63-73.31 35.6-155.99 51.86-237.3 46.12-68.05-4.51-135.07-24.08-194.71-57.18-24.87-13.6-48.23-29.82-70.33-47.54-17.46-14.81-34.71-30.01-49.72-47.35-25.41-27.39-47.21-58.11-65.17-90.87-4-7.72-8.64-15.12-11.9-23.2-4.47-9.05-8.37-18.36-12.25-27.67-4.96-13.27-10.26-26.44-13.88-40.15-.43-1.81-1.53-3.33-2.52-4.85-8.3-28.66-12.95-58.33-15.44-88.04-2.62-37.36-1.33-75.05 4.78-112.03 12.18-75.48 43.41-147.74 89.86-208.44 30.12-39.5 66.53-74.21 107.46-102.35 62.44-43.11 135.53-70.69 210.92-79.3m49.18 50.48c-5.7.99-10.96 3.76-15.38 7.43-10.4 8.93-14.14 24.81-8.17 37.28 6.33 15.02 25.16 23.1 40.36 17 15.43-5.24 24.78-23.51 19.74-39.06-4.1-15.43-20.92-25.79-36.55-22.65m-267.96 111.99c-5.33.28-10.59 1.92-15.16 4.68-11.47 7.03-17.88 21.74-14.36 34.86 3.09 14.08 16.78 25.06 31.26 24.61 15.03.41 29.08-11.39 31.54-26.17 2.24-10.33-1.61-21.55-9.14-28.85-6.24-6.33-15.3-9.62-24.14-9.13m-115.96 272c-6.62 1.23-12.84 4.58-17.54 9.4-9.45 9.72-11.72 25.57-5.02 37.42 7.16 13.96 25.48 20.86 39.98 14.62 15.02-5.51 23.99-23.42 19.06-38.71-4.04-15.41-20.86-25.96-36.48-22.73m111.98 272.05c-11.49 1.95-21.48 10.72-24.84 21.88-3.87 11.63-.13 25.16 8.9 33.36 6.15 5.48 14.4 8.7 22.67 8.32 11.16-.25 21.98-6.87 27.12-16.8 4.93-8.83 5.15-20.02.71-29.1-5.82-12.78-20.81-20.33-34.56-17.66m272.06 112.03c-11.76 2.02-21.92 11.07-25.09 22.6-3.87 12.57 1.13 27.25 11.91 34.79 7.86 5.79 18.42 7.67 27.77 4.86 9.61-2.77 17.7-10.24 21.07-19.68 4.97-12.74.36-28.32-10.58-36.46-7.02-5.45-16.35-7.67-25.08-6.11z\"\n fill=\"#a0a0a0\">\n </path>\n <g fill=\"#c1c1c1\">\n <path d=\"m506.25 96.4c15.63-3.14 32.45 7.22 36.55 22.65 5.04 15.55-4.31 33.82-19.74 39.06-15.2 6.1-34.03-1.98-40.36-17-5.97-12.47-2.23-28.35 8.17-37.28 4.42-3.67 9.68-6.44 15.38-7.43z\"></path>\n <path d=\"m122.33 480.39c15.62-3.23 32.44 7.32 36.48 22.73 4.93 15.29-4.04 33.2-19.06 38.71-14.5 6.24-32.82-.66-39.98-14.62-6.7-11.85-4.43-27.7 5.02-37.42 4.7-4.82 10.92-8.17 17.54-9.4z\"></path>\n </g>\n <path\n d=\"m843.72 180.25.11-.11c24.64 25.12 46.96 52.6 65.61 82.47 36.01 57.16 59.38 122.22 67.87 189.25 5.67 44.88 5.27 90.6-2.05 135.27-12.7 80.01-46.94 156.41-97.9 219.36-42.3 52.48-95.87 96.04-156.41 125.76l-.63-.26c-1.01-1.1-2.03-2.16-3.05-3.22-40.75-40.93-81.69-81.68-122.43-122.63-2.49-2.25-4.76-6.77-8.73-4.86-36.15 9.23-74.03 11.65-111.05 7-43.2-5.26-85.17-20.24-121.96-43.48-31.92-20.07-59.98-46.26-82.22-76.71-23.96-32.74-41.2-70.42-50.05-110.03-11.01-48.43-9.88-99.62 3.76-147.4 18.19-65.13 59.56-123.4 114.8-162.35 44.52-31.81 98.03-50.78 152.63-54.3 48.33-3.34 97.5 5.38 141.72 25.2 33.28 14.72 63.52 35.92 89.47 61.37 40.26-40.02 80.2-80.36 120.51-120.33m-351.75 183.97c-21.23 2.85-41.89 10.28-59.88 21.94-23.08 14.45-41.76 35.58-53.9 59.91-14.58 29.2-18.64 63.21-12.5 95.17 3.93 19.85 12.03 38.88 23.56 55.51 7.93 11.52 17.65 21.66 27.65 31.38 57.33 57.41 114.61 114.86 171.99 172.21 49.09-13.07 94.67-38.94 131.05-74.4 45.11-43.34 75.66-101.44 86.31-163.06.24-1.04.22-2.91 1.85-2.6 29.63.04 59.26-.01 88.9.05 19.04-.3 36.87-14.77 40.76-33.46.22-1.21 0-2.32-.67-3.35 1.22-5.71 2.08-11.58 1.38-17.43l-.24.4c-2.05-20.34-20.84-37.12-41.25-37.17-80.64-.07-161.28-.01-241.93-.07-6.44-22.08-18.5-42.33-34.03-59.23-25.8-27.5-62.26-45.01-100.02-46.82-9.68.02-19.44-.54-29.03 1.02m286.37 388.31c-12.64 2.06-23.37 12.59-25.7 25.18-1.48 8.14-.14 17.02 4.73 23.85 5.76 9.2 16.8 14.76 27.61 14.25 8.32.03 16.28-3.95 22.16-9.66 4.87-5.6 8.45-12.67 8.67-20.2.86-11.37-5.06-23.1-14.87-28.96-6.52-4.46-14.89-5.75-22.6-4.46z\"\n fill=\"#686868\">\n </path>\n <path\n d=\"m238.29 208.39c8.84-.49 17.9 2.8 24.14 9.13 7.53 7.3 11.38 18.52 9.14 28.85-2.46 14.78-16.51 26.58-31.54 26.17-14.48.45-28.17-10.53-31.26-24.61-3.52-13.12 2.89-27.83 14.36-34.86 4.57-2.76 9.83-4.4 15.16-4.68z\"\n fill=\"#c3c3c3\">\n </path>\n <path\n d=\"m491.97 364.22c9.59-1.56 19.35-1 29.03-1.02 37.76 1.81 74.22 19.32 100.02 46.82 15.53 16.9 27.59 37.15 34.03 59.23-47.67-.01-95.35-.01-143.03-.01-12.19-.11-24.23 5.42-32.21 14.61-6.01 6.85-9.74 15.65-10.44 24.74-1.19 14.17 5.36 28.7 16.69 37.28 7.62 5.91 17.28 9 26.92 8.8 126.69-.04 253.39-.06 380.08.03 4.76.04 9.59-.15 14.2-1.48 14.21-3.82 26.02-15.47 29.83-29.7.67 1.03.89 2.14.67 3.35-3.89 18.69-21.72 33.16-40.76 33.46-29.64-.06-59.27-.01-88.9-.05-1.63-.31-1.61 1.56-1.85 2.6-10.65 61.62-41.2 119.72-86.31 163.06-36.38 35.46-81.96 61.33-131.05 74.4-57.38-57.35-114.66-114.8-171.99-172.21-10-9.72-19.72-19.86-27.65-31.38-11.53-16.63-19.63-35.66-23.56-55.51-6.14-31.96-2.08-65.97 12.5-95.17 12.14-24.33 30.82-45.46 53.9-59.91 17.99-11.66 38.65-19.09 59.88-21.94z\"\n fill=\"#474747\">\n </path>\n <g fill=\"#bfbfbf\">\n <path d=\"m479.81 483.85c7.98-9.19 20.02-14.72 32.21-14.61 47.68 0 95.36 0 143.03.01 80.65.06 161.29 0 241.93.07 20.41.05 39.2 16.83 41.25 37.17-.19.33-.58.97-.78 1.29-3.68-18.51-21.57-33.16-40.47-33.05-124.97.1-249.94.12-374.91.17-7.73.13-15.74-.8-23.15 1.96-9.06 2.84-16.73 9.1-22.27 16.7-3.34 4.55-4.39 10.24-7.28 15.03.7-9.09 4.43-17.89 10.44-24.74z\"></path>\n <path d=\"m234.31 752.44c13.75-2.67 28.74 4.88 34.56 17.66 4.44 9.08 4.22 20.27-.71 29.1-5.14 9.93-15.96 16.55-27.12 16.8-8.27.38-16.52-2.84-22.67-8.32-9.03-8.2-12.77-21.73-8.9-33.36 3.36-11.16 13.35-19.93 24.84-21.88z\"></path>\n </g>\n <path\n d=\"m498.92 476.86c7.41-2.76 15.42-1.83 23.15-1.96 124.97-.05 249.94-.07 374.91-.17 18.9-.11 36.79 14.54 40.47 33.05.2-.32.59-.96.78-1.29l.24-.4c.7 5.85-.16 11.72-1.38 17.43-3.81 14.23-15.62 25.88-29.83 29.7-4.61 1.33-9.44 1.52-14.2 1.48-126.69-.09-253.39-.07-380.08-.03-9.64.2-19.3-2.89-26.92-8.8-11.33-8.58-17.88-23.11-16.69-37.28 2.89-4.79 3.94-10.48 7.28-15.03 5.54-7.6 13.21-13.86 22.27-16.7z\"\n fill=\"#b0b0b0\">\n </path>\n <path\n d=\"m59.49 636.08c.99 1.52 2.09 3.04 2.52 4.85 3.62 13.71 8.92 26.88 13.88 40.15 3.88 9.31 7.78 18.62 12.25 27.67 3.26 8.08 7.9 15.48 11.9 23.2 17.96 32.76 39.76 63.48 65.17 90.87 15.01 17.34 32.26 32.54 49.72 47.35 22.1 17.72 45.46 33.94 70.33 47.54 59.64 33.1 126.66 52.67 194.71 57.18 81.31 5.74 163.99-10.52 237.3-46.12 1.02 1.06 2.04 2.12 3.05 3.22l.03.61c-42.32 21.03-87.88 35.53-134.56 42.91-56.91 8.9-115.46 7.49-171.82-4.5-67.89-14.35-132.42-44.21-187.42-86.51-63.52-48.63-114.32-113.73-145.86-187.27-8.42-19.87-15.93-40.22-21.2-61.15z\"\n fill=\"#939393\">\n </path>\n <path\n d=\"m778.34 752.53c7.71-1.29 16.08 0 22.6 4.46 9.81 5.86 15.73 17.59 14.87 28.96-.22 7.53-3.8 14.6-8.67 20.2-5.88 5.71-13.84 9.69-22.16 9.66-10.81.51-21.85-5.05-27.61-14.25-4.87-6.83-6.21-15.71-4.73-23.85 2.33-12.59 13.06-23.12 25.7-25.18z\"\n fill=\"#767676\">\n </path>\n <path\n d=\"m506.37 864.47c8.73-1.56 18.06.66 25.08 6.11 10.94 8.14 15.55 23.72 10.58 36.46-3.37 9.44-11.46 16.91-21.07 19.68-9.35 2.81-19.91.93-27.77-4.86-10.78-7.54-15.78-22.22-11.91-34.79 3.17-11.53 13.33-20.58 25.09-22.6z\"\n fill=\"#bebebe\">\n </path>\n </svg>\n </a>\n Google Authenticator\n </span>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"mode === 'code-input'\"\n class=\"code-input\">\n <div>\n Enter the 6-digit code you see in the App.\n </div>\n <app-code-input (codeChanged)=\"codeChanged($event)\"></app-code-input>\n <mat-checkbox\n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default verification method\n </mat-checkbox>\n </div>\n </mat-dialog-content>\n <mat-dialog-actions>\n <ng-container *ngIf=\"appType\">\n <button\n *ngIf=\"mode === 'qr-code'\"\n type=\"button\"\n mat-button\n color=\"primary\"\n (click)=\"next()\">\n Next\n </button>\n <button\n *ngIf=\"mode === 'code-input'\"\n type=\"submit\"\n mat-button\n color=\"primary\"\n (click)=\"next()\">\n Verify\n </button>\n </ng-container>\n <button\n type=\"button\"\n mat-button\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>", styles: ["ul{margin:0;padding-left:24px}fs-qrcode{display:flex;justify-content:center;margin:30px}app-code-input{margin-top:10px}.code-input{width:400px}mat-checkbox{overflow:hidden}.app-types{text-align:center;padding:0 40px}.app-types .row{display:flex;justify-content:center}.app-types .row span{display:flex;flex-direction:column;text-align:center;max-width:100px}.app-types .row span+span{margin-left:40px}\n"] }]
89
- }], ctorParameters: () => [{ type: undefined, decorators: [{
90
- type: Inject,
91
- args: [MAT_DIALOG_DATA]
92
- }] }, { type: i1.MatDialogRef }, { type: i0.ChangeDetectorRef }, { type: i2.FsMessage }], propDecorators: { form: [{
85
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
86
+ FormsModule,
87
+ FsFormModule,
88
+ FsDialogModule,
89
+ MatDialogTitle,
90
+ CdkScrollable,
91
+ MatDialogContent,
92
+ FsSkeletonModule,
93
+ FsQrcodeModule,
94
+ CodeInputComponent,
95
+ MatCheckbox,
96
+ MatDialogActions,
97
+ MatButton,
98
+ MatDialogClose,
99
+ ], template: "<form\n fsForm\n [submit]=\"verify\">\n <fs-dialog>\n <h1 mat-dialog-title>\n Authenticator app setup\n </h1>\n <mat-dialog-content>\n @if (mode === 'qr-code') {\n <div\n class=\"qr-code\">\n @if (appType) {\n <ol>\n <li>\n @if (appType === 'authy') {\n Install the Authy Authenticator App from the\n <a\n href=\"https://apps.apple.com/us/app/authy/id494168017\"\n target=\"_blank\">\n App Store\n </a>\n or\n the\n <a\n href=\"https://play.google.com/store/apps/details?id=com.authy.authy\"\n target=\"_blank\">\n Google Play Store\n </a>\n .\n }\n @if (appType === 'google') {\n Install the Google Authenticator App from the\n <a\n href=\"https://apps.apple.com/us/app/google-authenticator/id388497605\"\n target=\"_blank\">\n App Store\n </a>\n or\n the\n <a\n href=\"https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&hl=en_US&gl=US\"\n target=\"_blank\">\n Google Play Store\n </a>\n .\n }\n </li>\n @if (appType === 'authy') {\n <li>\n Open the Authy app and select\n <b>\n Add Account\n </b>\n .\n </li>\n <li>\n Select\n <b>\n Scan QR Code\n </b>\n and scan the QR code below.\n </li>\n }\n @if (appType === 'google') {\n <li>\n Open the Google Authentictor app and click the\n <b>\n Plus icon\n </b>\n in the lower right corner.\n </li>\n <li>\n Select\n <b>\n Scan a QR code\n </b>\n and scan the QR code below.\n </li>\n }\n </ol>\n <ng-container *fsSkeleton=\"qrCodeUrl\">\n <fs-qrcode\n [value]=\"qrCodeUrl\"\n [width]=\"300\"\n [height]=\"300\">\n </fs-qrcode>\n </ng-container>\n }\n @if (!appType) {\n <div\n class=\"app-types\"\n >\n <p>\n Select the Authenticator App you prefer\n </p>\n <div class=\"row\">\n <span>\n <a (click)=\"appTypeAuthy()\">\n <svg\n width=\"50\"\n height=\"50\"\n viewBox=\"0 0 256 256\"\n xmlns=\"http://www.w3.org/2000/svg\"\n preserveAspectRatio=\"xMidYMid\">\n <path\n d=\"M256 127.998C256 198.696 198.694 256 127.997 256 57.304 256 0 198.696 0 127.998 0 57.305 57.304 0 127.997 0 198.694 0 256 57.305 256 127.998z\"\n fill=\"#EC1C24\">\n </path>\n <path\n d=\"M117.024 100.89l30.691 30.68c4.43 4.436 11.623 4.436 16.064 0 4.431-4.435 4.441-11.622 0-16.058L133.086 84.82C111.125 62.854 75.631 62.5 53.204 83.704a9.536 9.536 0 0 0-.605.548c-.098.098-.178.202-.275.29-.1.096-.202.182-.297.278-.194.193-.371.396-.54.597-21.215 22.437-20.85 57.932 1.113 79.897L83.292 196c4.44 4.433 11.623 4.433 16.062 0 4.442-4.437 4.442-11.633.011-16.06l-30.693-30.691c-13.398-13.393-13.488-35.129-.278-48.637 13.506-13.21 35.23-13.114 48.63.279zm39.612-40.873c-4.435 4.437-4.435 11.623.012 16.059l30.681 30.693c13.39 13.392 13.477 35.125.268 48.636-13.51 13.2-35.227 13.112-48.623-.282l-30.692-30.689c-4.438-4.437-11.633-4.437-16.066 0-4.443 4.433-4.443 11.642 0 16.065l30.682 30.694c21.968 21.965 57.458 22.322 79.889 1.116.208-.184.404-.355.61-.549.094-.095.182-.192.273-.29.1-.095.197-.183.29-.289.197-.183.365-.384.54-.594 21.215-22.428 20.86-57.911-1.102-79.889l-30.692-30.682c-4.436-4.443-11.638-4.443-16.07.001z\"\n fill=\"#FFF\">\n </path>\n </svg>\n </a>\n Authy\n </span>\n <span>\n <a (click)=\"appTypeGoogle()\">\n <svg\n width=\"50\"\n height=\"50\"\n viewBox=\"0 0 1024 1024\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"m457.07 45.92c73.67-8.62 149.41.22 218.93 26.24 62.75 23.47 120.59 60.41 167.72 108.09-40.31 39.97-80.25 80.31-120.51 120.33-25.95-25.45-56.19-46.65-89.47-61.37-44.22-19.82-93.39-28.54-141.72-25.2-54.6 3.52-108.11 22.49-152.63 54.3-55.24 38.95-96.61 97.22-114.8 162.35-13.64 47.78-14.77 98.97-3.76 147.4 8.85 39.61 26.09 77.29 50.05 110.03 22.24 30.45 50.3 56.64 82.22 76.71 36.79 23.24 78.76 38.22 121.96 43.48 37.02 4.65 74.9 2.23 111.05-7 3.97-1.91 6.24 2.61 8.73 4.86 40.74 40.95 81.68 81.7 122.43 122.63-73.31 35.6-155.99 51.86-237.3 46.12-68.05-4.51-135.07-24.08-194.71-57.18-24.87-13.6-48.23-29.82-70.33-47.54-17.46-14.81-34.71-30.01-49.72-47.35-25.41-27.39-47.21-58.11-65.17-90.87-4-7.72-8.64-15.12-11.9-23.2-4.47-9.05-8.37-18.36-12.25-27.67-4.96-13.27-10.26-26.44-13.88-40.15-.43-1.81-1.53-3.33-2.52-4.85-8.3-28.66-12.95-58.33-15.44-88.04-2.62-37.36-1.33-75.05 4.78-112.03 12.18-75.48 43.41-147.74 89.86-208.44 30.12-39.5 66.53-74.21 107.46-102.35 62.44-43.11 135.53-70.69 210.92-79.3m49.18 50.48c-5.7.99-10.96 3.76-15.38 7.43-10.4 8.93-14.14 24.81-8.17 37.28 6.33 15.02 25.16 23.1 40.36 17 15.43-5.24 24.78-23.51 19.74-39.06-4.1-15.43-20.92-25.79-36.55-22.65m-267.96 111.99c-5.33.28-10.59 1.92-15.16 4.68-11.47 7.03-17.88 21.74-14.36 34.86 3.09 14.08 16.78 25.06 31.26 24.61 15.03.41 29.08-11.39 31.54-26.17 2.24-10.33-1.61-21.55-9.14-28.85-6.24-6.33-15.3-9.62-24.14-9.13m-115.96 272c-6.62 1.23-12.84 4.58-17.54 9.4-9.45 9.72-11.72 25.57-5.02 37.42 7.16 13.96 25.48 20.86 39.98 14.62 15.02-5.51 23.99-23.42 19.06-38.71-4.04-15.41-20.86-25.96-36.48-22.73m111.98 272.05c-11.49 1.95-21.48 10.72-24.84 21.88-3.87 11.63-.13 25.16 8.9 33.36 6.15 5.48 14.4 8.7 22.67 8.32 11.16-.25 21.98-6.87 27.12-16.8 4.93-8.83 5.15-20.02.71-29.1-5.82-12.78-20.81-20.33-34.56-17.66m272.06 112.03c-11.76 2.02-21.92 11.07-25.09 22.6-3.87 12.57 1.13 27.25 11.91 34.79 7.86 5.79 18.42 7.67 27.77 4.86 9.61-2.77 17.7-10.24 21.07-19.68 4.97-12.74.36-28.32-10.58-36.46-7.02-5.45-16.35-7.67-25.08-6.11z\"\n fill=\"#a0a0a0\">\n </path>\n <g fill=\"#c1c1c1\">\n <path d=\"m506.25 96.4c15.63-3.14 32.45 7.22 36.55 22.65 5.04 15.55-4.31 33.82-19.74 39.06-15.2 6.1-34.03-1.98-40.36-17-5.97-12.47-2.23-28.35 8.17-37.28 4.42-3.67 9.68-6.44 15.38-7.43z\"></path>\n <path d=\"m122.33 480.39c15.62-3.23 32.44 7.32 36.48 22.73 4.93 15.29-4.04 33.2-19.06 38.71-14.5 6.24-32.82-.66-39.98-14.62-6.7-11.85-4.43-27.7 5.02-37.42 4.7-4.82 10.92-8.17 17.54-9.4z\"></path>\n </g>\n <path\n d=\"m843.72 180.25.11-.11c24.64 25.12 46.96 52.6 65.61 82.47 36.01 57.16 59.38 122.22 67.87 189.25 5.67 44.88 5.27 90.6-2.05 135.27-12.7 80.01-46.94 156.41-97.9 219.36-42.3 52.48-95.87 96.04-156.41 125.76l-.63-.26c-1.01-1.1-2.03-2.16-3.05-3.22-40.75-40.93-81.69-81.68-122.43-122.63-2.49-2.25-4.76-6.77-8.73-4.86-36.15 9.23-74.03 11.65-111.05 7-43.2-5.26-85.17-20.24-121.96-43.48-31.92-20.07-59.98-46.26-82.22-76.71-23.96-32.74-41.2-70.42-50.05-110.03-11.01-48.43-9.88-99.62 3.76-147.4 18.19-65.13 59.56-123.4 114.8-162.35 44.52-31.81 98.03-50.78 152.63-54.3 48.33-3.34 97.5 5.38 141.72 25.2 33.28 14.72 63.52 35.92 89.47 61.37 40.26-40.02 80.2-80.36 120.51-120.33m-351.75 183.97c-21.23 2.85-41.89 10.28-59.88 21.94-23.08 14.45-41.76 35.58-53.9 59.91-14.58 29.2-18.64 63.21-12.5 95.17 3.93 19.85 12.03 38.88 23.56 55.51 7.93 11.52 17.65 21.66 27.65 31.38 57.33 57.41 114.61 114.86 171.99 172.21 49.09-13.07 94.67-38.94 131.05-74.4 45.11-43.34 75.66-101.44 86.31-163.06.24-1.04.22-2.91 1.85-2.6 29.63.04 59.26-.01 88.9.05 19.04-.3 36.87-14.77 40.76-33.46.22-1.21 0-2.32-.67-3.35 1.22-5.71 2.08-11.58 1.38-17.43l-.24.4c-2.05-20.34-20.84-37.12-41.25-37.17-80.64-.07-161.28-.01-241.93-.07-6.44-22.08-18.5-42.33-34.03-59.23-25.8-27.5-62.26-45.01-100.02-46.82-9.68.02-19.44-.54-29.03 1.02m286.37 388.31c-12.64 2.06-23.37 12.59-25.7 25.18-1.48 8.14-.14 17.02 4.73 23.85 5.76 9.2 16.8 14.76 27.61 14.25 8.32.03 16.28-3.95 22.16-9.66 4.87-5.6 8.45-12.67 8.67-20.2.86-11.37-5.06-23.1-14.87-28.96-6.52-4.46-14.89-5.75-22.6-4.46z\"\n fill=\"#686868\">\n </path>\n <path\n d=\"m238.29 208.39c8.84-.49 17.9 2.8 24.14 9.13 7.53 7.3 11.38 18.52 9.14 28.85-2.46 14.78-16.51 26.58-31.54 26.17-14.48.45-28.17-10.53-31.26-24.61-3.52-13.12 2.89-27.83 14.36-34.86 4.57-2.76 9.83-4.4 15.16-4.68z\"\n fill=\"#c3c3c3\">\n </path>\n <path\n d=\"m491.97 364.22c9.59-1.56 19.35-1 29.03-1.02 37.76 1.81 74.22 19.32 100.02 46.82 15.53 16.9 27.59 37.15 34.03 59.23-47.67-.01-95.35-.01-143.03-.01-12.19-.11-24.23 5.42-32.21 14.61-6.01 6.85-9.74 15.65-10.44 24.74-1.19 14.17 5.36 28.7 16.69 37.28 7.62 5.91 17.28 9 26.92 8.8 126.69-.04 253.39-.06 380.08.03 4.76.04 9.59-.15 14.2-1.48 14.21-3.82 26.02-15.47 29.83-29.7.67 1.03.89 2.14.67 3.35-3.89 18.69-21.72 33.16-40.76 33.46-29.64-.06-59.27-.01-88.9-.05-1.63-.31-1.61 1.56-1.85 2.6-10.65 61.62-41.2 119.72-86.31 163.06-36.38 35.46-81.96 61.33-131.05 74.4-57.38-57.35-114.66-114.8-171.99-172.21-10-9.72-19.72-19.86-27.65-31.38-11.53-16.63-19.63-35.66-23.56-55.51-6.14-31.96-2.08-65.97 12.5-95.17 12.14-24.33 30.82-45.46 53.9-59.91 17.99-11.66 38.65-19.09 59.88-21.94z\"\n fill=\"#474747\">\n </path>\n <g fill=\"#bfbfbf\">\n <path d=\"m479.81 483.85c7.98-9.19 20.02-14.72 32.21-14.61 47.68 0 95.36 0 143.03.01 80.65.06 161.29 0 241.93.07 20.41.05 39.2 16.83 41.25 37.17-.19.33-.58.97-.78 1.29-3.68-18.51-21.57-33.16-40.47-33.05-124.97.1-249.94.12-374.91.17-7.73.13-15.74-.8-23.15 1.96-9.06 2.84-16.73 9.1-22.27 16.7-3.34 4.55-4.39 10.24-7.28 15.03.7-9.09 4.43-17.89 10.44-24.74z\"></path>\n <path d=\"m234.31 752.44c13.75-2.67 28.74 4.88 34.56 17.66 4.44 9.08 4.22 20.27-.71 29.1-5.14 9.93-15.96 16.55-27.12 16.8-8.27.38-16.52-2.84-22.67-8.32-9.03-8.2-12.77-21.73-8.9-33.36 3.36-11.16 13.35-19.93 24.84-21.88z\"></path>\n </g>\n <path\n d=\"m498.92 476.86c7.41-2.76 15.42-1.83 23.15-1.96 124.97-.05 249.94-.07 374.91-.17 18.9-.11 36.79 14.54 40.47 33.05.2-.32.59-.96.78-1.29l.24-.4c.7 5.85-.16 11.72-1.38 17.43-3.81 14.23-15.62 25.88-29.83 29.7-4.61 1.33-9.44 1.52-14.2 1.48-126.69-.09-253.39-.07-380.08-.03-9.64.2-19.3-2.89-26.92-8.8-11.33-8.58-17.88-23.11-16.69-37.28 2.89-4.79 3.94-10.48 7.28-15.03 5.54-7.6 13.21-13.86 22.27-16.7z\"\n fill=\"#b0b0b0\">\n </path>\n <path\n d=\"m59.49 636.08c.99 1.52 2.09 3.04 2.52 4.85 3.62 13.71 8.92 26.88 13.88 40.15 3.88 9.31 7.78 18.62 12.25 27.67 3.26 8.08 7.9 15.48 11.9 23.2 17.96 32.76 39.76 63.48 65.17 90.87 15.01 17.34 32.26 32.54 49.72 47.35 22.1 17.72 45.46 33.94 70.33 47.54 59.64 33.1 126.66 52.67 194.71 57.18 81.31 5.74 163.99-10.52 237.3-46.12 1.02 1.06 2.04 2.12 3.05 3.22l.03.61c-42.32 21.03-87.88 35.53-134.56 42.91-56.91 8.9-115.46 7.49-171.82-4.5-67.89-14.35-132.42-44.21-187.42-86.51-63.52-48.63-114.32-113.73-145.86-187.27-8.42-19.87-15.93-40.22-21.2-61.15z\"\n fill=\"#939393\">\n </path>\n <path\n d=\"m778.34 752.53c7.71-1.29 16.08 0 22.6 4.46 9.81 5.86 15.73 17.59 14.87 28.96-.22 7.53-3.8 14.6-8.67 20.2-5.88 5.71-13.84 9.69-22.16 9.66-10.81.51-21.85-5.05-27.61-14.25-4.87-6.83-6.21-15.71-4.73-23.85 2.33-12.59 13.06-23.12 25.7-25.18z\"\n fill=\"#767676\">\n </path>\n <path\n d=\"m506.37 864.47c8.73-1.56 18.06.66 25.08 6.11 10.94 8.14 15.55 23.72 10.58 36.46-3.37 9.44-11.46 16.91-21.07 19.68-9.35 2.81-19.91.93-27.77-4.86-10.78-7.54-15.78-22.22-11.91-34.79 3.17-11.53 13.33-20.58 25.09-22.6z\"\n fill=\"#bebebe\">\n </path>\n </svg>\n </a>\n Google Authenticator\n </span>\n </div>\n </div>\n }\n </div>\n }\n @if (mode === 'code-input') {\n <div\n class=\"code-input\">\n <div>\n Enter the 6-digit code you see in the App.\n </div>\n <app-code-input (codeChanged)=\"codeChanged($event)\"></app-code-input>\n <mat-checkbox\n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default verification method\n </mat-checkbox>\n </div>\n }\n </mat-dialog-content>\n <mat-dialog-actions>\n @if (appType) {\n @if (mode === 'qr-code') {\n <button\n type=\"button\"\n mat-button\n color=\"primary\"\n (click)=\"next()\">\n Next\n </button>\n }\n @if (mode === 'code-input') {\n <button\n type=\"submit\"\n mat-button\n color=\"primary\"\n (click)=\"next()\">\n Verify\n </button>\n }\n }\n <button\n type=\"button\"\n mat-button\n [mat-dialog-close]=\"null\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>", styles: ["ul{margin:0;padding-left:24px}fs-qrcode{display:flex;justify-content:center;margin:30px}app-code-input{margin-top:10px}.code-input{width:400px}mat-checkbox{overflow:hidden}.app-types{text-align:center;padding:0 40px}.app-types .row{display:flex;justify-content:center}.app-types .row span{display:flex;flex-direction:column;text-align:center;max-width:100px}.app-types .row span+span{margin-left:40px}\n"] }]
100
+ }], propDecorators: { form: [{
93
101
  type: ViewChild,
94
102
  args: [FsFormDirective]
95
103
  }] } });
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tYW5hZ2UvY29tcG9uZW50cy9hcHAvYXBwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tYW5hZ2UvY29tcG9uZW50cy9hcHAvYXBwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFBRSxpQkFBaUIsRUFDMUMsU0FBUyxFQUFFLE1BQU0sRUFDVCxTQUFTLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saURBQWlELENBQUM7Ozs7Ozs7Ozs7Ozs7QUFTekYsTUFBTSxPQUFPLFlBQVk7SUFlWTtJQUN6QjtJQUNBO0lBQ0E7SUFmSCxJQUFJLENBQWtCO0lBRXRCLHNCQUFzQixDQUF5QjtJQUMvQyxJQUFJLEdBQTZCLFNBQVMsQ0FBQztJQUMzQyxTQUFTLENBQUM7SUFDVixrQkFBa0IsQ0FBQztJQUNuQixTQUFTLENBQUM7SUFDVixJQUFJLENBQUM7SUFDTCxPQUFPLENBQUM7SUFDUixPQUFPLENBQXFCO0lBRW5DLFlBQ21DLEtBQVUsRUFDbkMsVUFBc0MsRUFDdEMsTUFBeUIsRUFDekIsUUFBbUI7UUFITSxVQUFLLEdBQUwsS0FBSyxDQUFLO1FBQ25DLGVBQVUsR0FBVixVQUFVLENBQTRCO1FBQ3RDLFdBQU0sR0FBTixNQUFNLENBQW1CO1FBQ3pCLGFBQVEsR0FBUixRQUFRLENBQVc7SUFDMUIsQ0FBQztJQUVHLFFBQVE7UUFDYixJQUFJLENBQUMsc0JBQXNCLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQztRQUNoRSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQUM7SUFDckUsQ0FBQztJQUVNLGFBQWE7UUFDbEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU0sWUFBWTtRQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFTSxhQUFhLENBQUMsT0FBTztRQUMxQixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsc0JBQXNCLENBQUMseUJBQXlCLENBQUM7WUFDcEQsSUFBSSxFQUFFLHNCQUFzQixDQUFDLEdBQUc7U0FDakMsQ0FBQzthQUNDLFNBQVMsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO1lBQzdDLElBQUksQ0FBQyxTQUFTLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDO1lBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU0sYUFBYTtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxXQUFXLENBQUMsSUFBSTtRQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFTSxJQUFJO1FBQ1QsSUFBSSxDQUFDLElBQUksR0FBRyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVNLE1BQU0sR0FBRyxHQUFHLEVBQUU7UUFDbkIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7YUFDMUUsSUFBSSxDQUNILFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLDBCQUEwQixDQUFDLENBQUM7Z0JBQzdFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDO2dCQUNqRixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDYixDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsK0NBQStDLENBQUMsQ0FBQztZQUN2RSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQyxDQUFDO3VHQXpFUyxZQUFZLGtCQWViLGVBQWU7MkZBZmQsWUFBWSwwRkFFWixlQUFlLGdEQ3pCNUIsNGhjQW1OTzs7MkZENUxNLFlBQVk7a0JBTHhCLFNBQVM7c0NBR1MsdUJBQXVCLENBQUMsTUFBTTs7MEJBaUI1QyxNQUFNOzJCQUFDLGVBQWU7NEhBWmxCLElBQUk7c0JBRFYsU0FBUzt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsIEluamVjdCxcbiAgT25Jbml0LCBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IEZzRm9ybURpcmVjdGl2ZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2Zvcm0nO1xuaW1wb3J0IHsgRnNNZXNzYWdlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbWVzc2FnZSc7XG5cbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVmVyaWZpY2F0aW9uTWV0aG9kVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL2VudW1zL3ZlcmlmaWNhdGlvbi1tZXRob2QtdHlwZS5lbnVtJztcbmltcG9ydCB7IFR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5cblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9hcHAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hcHAuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEFwcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQFZpZXdDaGlsZChGc0Zvcm1EaXJlY3RpdmUpXG4gIHB1YmxpYyBmb3JtOiBGc0Zvcm1EaXJlY3RpdmU7XG5cbiAgcHVibGljIHR3b0ZhY3Rvck1hbmFnZVNlcnZpY2U6IFR3b0ZhY3Rvck1hbmFnZVNlcnZpY2U7XG4gIHB1YmxpYyBtb2RlOiAncXItY29kZScgfCAnY29kZS1pbnB1dCcgPSAncXItY29kZSc7XG4gIHB1YmxpYyBhY2NvdW50SWQ7XG4gIHB1YmxpYyB2ZXJpZmljYXRpb25NZXRob2Q7XG4gIHB1YmxpYyBxckNvZGVVcmw7XG4gIHB1YmxpYyBjb2RlO1xuICBwdWJsaWMgZGVmYXVsdDsgIFxuICBwdWJsaWMgYXBwVHlwZTogJ2dvb2dsZScgfCAnYXV0aHknO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcml2YXRlIF9kYXRhOiBhbnksXG4gICAgcHJpdmF0ZSBfZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8QXBwQ29tcG9uZW50PixcbiAgICBwcml2YXRlIF9jZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfbWVzc2FnZTogRnNNZXNzYWdlLFxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZSA9IHRoaXMuX2RhdGEudHdvRmFjdG9yTWFuYWdlU2VydmljZTtcbiAgICB0aGlzLmFjY291bnRJZCA9IHRoaXMuX2RhdGEuYWNjb3VudElkO1xuICAgIHRoaXMuZGVmYXVsdCA9ICF0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UuaGFzVmVyaWZpY2F0aW9uTWV0aG9kcztcbiAgfVxuXG4gIHB1YmxpYyBhcHBUeXBlR29vZ2xlKCk6IHZvaWQge1xuICAgIHRoaXMuYXBwVHlwZVNlbGVjdCgnZ29vZ2xlJyk7XG4gIH1cblxuICBwdWJsaWMgYXBwVHlwZUF1dGh5KCk6IHZvaWQge1xuICAgIHRoaXMuYXBwVHlwZVNlbGVjdCgnYXV0aHknKTtcbiAgfVxuXG4gIHB1YmxpYyBhcHBUeXBlU2VsZWN0KGFwcFR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLmFwcFR5cGUgPSBhcHBUeXBlO1xuICAgIHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZS52ZXJpZmljYXRpb25NZXRob2RDcmVhdGUkKHtcbiAgICAgIHR5cGU6IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGUuQXBwLFxuICAgIH0pXG4gICAgICAuc3Vic2NyaWJlKCh2ZXJpZmljYXRpb25NZXRob2QpID0+IHtcbiAgICAgICAgdGhpcy52ZXJpZmljYXRpb25NZXRob2QgPSB2ZXJpZmljYXRpb25NZXRob2Q7XG4gICAgICAgIHRoaXMucXJDb2RlVXJsID0gdmVyaWZpY2F0aW9uTWV0aG9kLnFyQ29kZVVybDtcbiAgICAgICAgdGhpcy5fY2RSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjb2RlQ29tcGxldGVkKCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybS50cmlnZ2VyU3VibWl0KCk7XG4gIH1cblxuICBwdWJsaWMgY29kZUNoYW5nZWQoY29kZSk6IHZvaWQge1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gICAgdGhpcy5mb3JtLmRpcnR5KCk7XG4gIH1cblxuICBwdWJsaWMgbmV4dCgpOiB2b2lkIHtcbiAgICB0aGlzLm1vZGUgPSAnY29kZS1pbnB1dCc7XG4gIH1cblxuICBwdWJsaWMgdmVyaWZ5ID0gKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UudmVyaWZpY2F0aW9uTWV0aG9kVmVyaWZ5JCh0aGlzLmNvZGUsIHRydWUpXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5kZWZhdWx0ICYmIHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZS52ZXJpZmljYXRpb25NZXRob2REZWZhdWx0JCA/XG4gICAgICAgICAgICB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UudmVyaWZpY2F0aW9uTWV0aG9kRGVmYXVsdCQodGhpcy52ZXJpZmljYXRpb25NZXRob2QpIDpcbiAgICAgICAgICAgIG9mKHRydWUpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ0NyZWF0ZWQgYXBwIGF1dGhlbnRpY2F0b3IgdmVyaWZpY2F0aW9uIG1ldGhvZCcpO1xuICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZSh0cnVlKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9O1xuXG59XG4iLCI8Zm9ybVxuICAgIGZzRm9ybVxuICAgIFtzdWJtaXRdPVwidmVyaWZ5XCI+XG4gIDxmcy1kaWFsb2c+XG4gICAgPGgxIG1hdC1kaWFsb2ctdGl0bGU+XG4gICAgICBBdXRoZW50aWNhdG9yIGFwcCBzZXR1cFxuICAgIDwvaDE+XG4gICAgPG1hdC1kaWFsb2ctY29udGVudD5cbiAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cIm1vZGUgPT09ICdxci1jb2RlJ1wiXG4gICAgICAgICAgY2xhc3M9XCJxci1jb2RlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBUeXBlXCI+XG4gICAgICAgICAgPG9sPlxuICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYXBwVHlwZSA9PT0gJ2F1dGh5J1wiPlxuICAgICAgICAgICAgICAgIEluc3RhbGwgdGhlIEF1dGh5IEF1dGhlbnRpY2F0b3IgQXBwIGZyb20gdGhlXG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vYXBwcy5hcHBsZS5jb20vdXMvYXBwL2F1dGh5L2lkNDk0MTY4MDE3XCJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgICAgICAgICAgICBBcHAgU3RvcmVcbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgb3JcbiAgICAgICAgICAgICAgICB0aGVcbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9wbGF5Lmdvb2dsZS5jb20vc3RvcmUvYXBwcy9kZXRhaWxzP2lkPWNvbS5hdXRoeS5hdXRoeVwiXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICAgICAgICAgICAgR29vZ2xlIFBsYXkgU3RvcmVcbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgLlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFwcFR5cGUgPT09ICdnb29nbGUnXCI+XG4gICAgICAgICAgICAgICAgSW5zdGFsbCB0aGUgR29vZ2xlIEF1dGhlbnRpY2F0b3IgQXBwIGZyb20gdGhlXG4gICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vYXBwcy5hcHBsZS5jb20vdXMvYXBwL2dvb2dsZS1hdXRoZW50aWNhdG9yL2lkMzg4NDk3NjA1XCJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgICAgICAgICAgICBBcHAgU3RvcmVcbiAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgb3JcbiAgICAgICAgICAgICAgICB0aGVcbiAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICBocmVmPVwiaHR0cHM6Ly9wbGF5Lmdvb2dsZS5jb20vc3RvcmUvYXBwcy9kZXRhaWxzP2lkPWNvbS5nb29nbGUuYW5kcm9pZC5hcHBzLmF1dGhlbnRpY2F0b3IyJmhsPWVuX1VTJmdsPVVTXCJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgICAgICAgICAgICBHb29nbGUgUGxheSBTdG9yZVxuICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAuXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBUeXBlID09PSAnYXV0aHknXCI+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICBPcGVuIHRoZSBBdXRoeSBhcHAgYW5kIHNlbGVjdFxuICAgICAgICAgICAgICAgIDxiPlxuICAgICAgICAgICAgICAgICAgQWRkIEFjY291bnRcbiAgICAgICAgICAgICAgICA8L2I+XG4gICAgICAgICAgICAgICAgLlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgU2VsZWN0XG4gICAgICAgICAgICAgICAgPGI+XG4gICAgICAgICAgICAgICAgICBTY2FuIFFSIENvZGVcbiAgICAgICAgICAgICAgICA8L2I+XG4gICAgICAgICAgICAgICAgYW5kIHNjYW4gdGhlIFFSIGNvZGUgYmVsb3cuXG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBUeXBlID09PSAnZ29vZ2xlJ1wiPlxuICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgT3BlbiB0aGUgR29vZ2xlIEF1dGhlbnRpY3RvciBhcHAgYW5kIGNsaWNrIHRoZVxuICAgICAgICAgICAgICAgIDxiPlxuICAgICAgICAgICAgICAgICAgUGx1cyBpY29uXG4gICAgICAgICAgICAgICAgPC9iPlxuICAgICAgICAgICAgICAgIGluIHRoZSBsb3dlciByaWdodCBjb3JuZXIuXG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICBTZWxlY3RcbiAgICAgICAgICAgICAgICA8Yj5cbiAgICAgICAgICAgICAgICAgIFNjYW4gYSBRUiBjb2RlXG4gICAgICAgICAgICAgICAgPC9iPlxuICAgICAgICAgICAgICAgIGFuZCBzY2FuIHRoZSBRUiBjb2RlIGJlbG93LlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9vbD5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpmc1NrZWxldG9uPVwicXJDb2RlVXJsXCI+XG4gICAgICAgICAgICA8ZnMtcXJjb2RlXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJxckNvZGVVcmxcIlxuICAgICAgICAgICAgICBbd2lkdGhdPVwiMzAwXCJcbiAgICAgICAgICAgICAgW2hlaWdodF09XCIzMDBcIj5cbiAgICAgICAgICAgIDwvZnMtcXJjb2RlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJhcHAtdHlwZXNcIlxuICAgICAgICAgICAgKm5nSWY9XCIhYXBwVHlwZVwiPlxuICAgICAgICAgIDxwPlxuICAgICAgICAgICAgU2VsZWN0IHRoZSBBdXRoZW50aWNhdG9yIEFwcCB5b3UgcHJlZmVyXG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICA8YSAoY2xpY2spPVwiYXBwVHlwZUF1dGh5KClcIj5cbiAgICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiNTBcIlxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCI1MFwiXG4gICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjU2IDI1NlwiXG4gICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWRcIj5cbiAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJNMjU2IDEyNy45OThDMjU2IDE5OC42OTYgMTk4LjY5NCAyNTYgMTI3Ljk5NyAyNTYgNTcuMzA0IDI1NiAwIDE5OC42OTYgMCAxMjcuOTk4IDAgNTcuMzA1IDU3LjMwNCAwIDEyNy45OTcgMCAxOTguNjk0IDAgMjU2IDU3LjMwNSAyNTYgMTI3Ljk5OHpcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0VDMUMyNFwiPlxuICAgICAgICAgICAgICAgICAgPC9wYXRoPlxuICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgZD1cIk0xMTcuMDI0IDEwMC44OWwzMC42OTEgMzAuNjhjNC40MyA0LjQzNiAxMS42MjMgNC40MzYgMTYuMDY0IDAgNC40MzEtNC40MzUgNC40NDEtMTEuNjIyIDAtMTYuMDU4TDEzMy4wODYgODQuODJDMTExLjEyNSA2Mi44NTQgNzUuNjMxIDYyLjUgNTMuMjA0IDgzLjcwNGE5LjUzNiA5LjUzNiAwIDAgMC0uNjA1LjU0OGMtLjA5OC4wOTgtLjE3OC4yMDItLjI3NS4yOS0uMS4wOTYtLjIwMi4xODItLjI5Ny4yNzgtLjE5NC4xOTMtLjM3MS4zOTYtLjU0LjU5Ny0yMS4yMTUgMjIuNDM3LTIwLjg1IDU3LjkzMiAxLjExMyA3OS44OTdMODMuMjkyIDE5NmM0LjQ0IDQuNDMzIDExLjYyMyA0LjQzMyAxNi4wNjIgMCA0LjQ0Mi00LjQzNyA0LjQ0Mi0xMS42MzMuMDExLTE2LjA2bC0zMC42OTMtMzAuNjkxYy0xMy4zOTgtMTMuMzkzLTEzLjQ4OC0zNS4xMjktLjI3OC00OC42MzcgMTMuNTA2LTEzLjIxIDM1LjIzLTEzLjExNCA0OC42My4yNzl6bTM5LjYxMi00MC44NzNjLTQuNDM1IDQuNDM3LTQuNDM1IDExLjYyMy4wMTIgMTYuMDU5bDMwLjY4MSAzMC42OTNjMTMuMzkgMTMuMzkyIDEzLjQ3NyAzNS4xMjUuMjY4IDQ4LjYzNi0xMy41MSAxMy4yLTM1LjIyNyAxMy4xMTItNDguNjIzLS4yODJsLTMwLjY5Mi0zMC42ODljLTQuNDM4LTQuNDM3LTExLjYzMy00LjQzNy0xNi4wNjYgMC00LjQ0MyA0LjQzMy00LjQ0MyAxMS42NDIgMCAxNi4wNjVsMzAuNjgyIDMwLjY5NGMyMS45NjggMjEuOTY1IDU3LjQ1OCAyMi4zMjIgNzkuODg5IDEuMTE2LjIwOC0uMTg0LjQwNC0uMzU1LjYxLS41NDkuMDk0LS4wOTUuMTgyLS4xOTIuMjczLS4yOS4xLS4wOTUuMTk3LS4xODMuMjktLjI4OS4xOTctLjE4My4zNjUtLjM4NC41NC0uNTk0IDIxLjIxNS0yMi40MjggMjAuODYtNTcuOTExLTEuMTAyLTc5Ljg4OWwtMzAuNjkyLTMwLjY4MmMtNC40MzYtNC40NDMtMTEuNjM4LTQuNDQzLTE2LjA3LjAwMXpcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0ZGRlwiPlxuICAgICAgICAgICAgICAgICAgPC9wYXRoPlxuICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgIEF1dGh5XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cImFwcFR5cGVHb29nbGUoKVwiPlxuICAgICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI1MFwiXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjUwXCJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMDI0IDEwMjRcIlxuICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICBkPVwibTQ1Ny4wNyA0NS45MmM3My42Ny04LjYyIDE0OS40MS4yMiAyMTguOTMgMjYuMjQgNjIuNzUgMjMuNDcgMTIwLjU5IDYwLjQxIDE2Ny43MiAxMDguMDktNDAuMzEgMzkuOTctODAuMjUgODAuMzEtMTIwLjUxIDEyMC4zMy0yNS45NS0yNS40NS01Ni4xOS00Ni42NS04OS40Ny02MS4zNy00NC4yMi0xOS44Mi05My4zOS0yOC41NC0xNDEuNzItMjUuMi01NC42IDMuNTItMTA4LjExIDIyLjQ5LTE1Mi42MyA1NC4zLTU1LjI0IDM4Ljk1LTk2LjYxIDk3LjIyLTExNC44IDE2Mi4zNS0xMy42NCA0Ny43OC0xNC43NyA5OC45Ny0zLjc2IDE0Ny40IDguODUgMzkuNjEgMjYuMDkgNzcuMjkgNTAuMDUgMTEwLjAzIDIyLjI0IDMwLjQ1IDUwLjMgNTYuNjQgODIuMjIgNzYuNzEgMzYuNzkgMjMuMjQgNzguNzYgMzguMjIgMTIxLjk2IDQzLjQ4IDM3LjAyIDQuNjUgNzQuOSAyLjIzIDExMS4wNS03IDMuOTctMS45MSA2LjI0IDIuNjEgOC43MyA0Ljg2IDQwLjc0IDQwLjk1IDgxLjY4IDgxLjcgMTIyLjQzIDEyMi42My03My4zMSAzNS42LTE1NS45OSA1MS44Ni0yMzcuMyA0Ni4xMi02OC4wNS00LjUxLTEzNS4wNy0yNC4wOC0xOTQuNzEtNTcuMTgtMjQuODctMTMuNi00OC4yMy0yOS44Mi03MC4zMy00Ny41NC0xNy40Ni0xNC44MS0zNC43MS0zMC4wMS00OS43Mi00Ny4zNS0yNS40MS0yNy4zOS00Ny4yMS01OC4xMS02NS4xNy05MC44Ny00LTcuNzItOC42NC0xNS4xMi0xMS45LTIzLjItNC40Ny05LjA1LTguMzctMTguMzYtMTIuMjUtMjcuNjctNC45Ni0xMy4yNy0xMC4yNi0yNi40NC0xMy44OC00MC4xNS0uNDMtMS44MS0xLjUzLTMuMzMtMi41Mi00Ljg1LTguMy0yOC42Ni0xMi45NS01OC4zMy0xNS40NC04OC4wNC0yLjYyLTM3LjM2LTEuMzMtNzUuMDUgNC43OC0xMTIuMDMgMTIuMTgtNzUuNDggNDMuNDEtMTQ3Ljc0IDg5Ljg2LTIwOC40NCAzMC4xMi0zOS41IDY2LjUzLTc0LjIxIDEwNy40Ni0xMDIuMzUgNjIuNDQtNDMuMTEgMTM1LjUzLTcwLjY5IDIxMC45Mi03OS4zbTQ5LjE4IDUwLjQ4Yy01LjcuOTktMTAuOTYgMy43Ni0xNS4zOCA3LjQzLTEwLjQgOC45My0xNC4xNCAyNC44MS04LjE3IDM3LjI4IDYuMzMgMTUuMDIgMjUuMTYgMjMuMSA0MC4zNiAxNyAxNS40My01LjI0IDI0Ljc4LTIzLjUxIDE5Ljc0LTM5LjA2LTQuMS0xNS40My0yMC45Mi0yNS43OS0zNi41NS0yMi42NW0tMjY3Ljk2IDExMS45OWMtNS4zMy4yOC0xMC41OSAxLjkyLTE1LjE2IDQuNjgtMTEuNDcgNy4wMy0xNy44OCAyMS43NC0xNC4zNiAzNC44NiAzLjA5IDE0LjA4IDE2Ljc4IDI1LjA2IDMxLjI2IDI0LjYxIDE1LjAzLjQxIDI5LjA4LTExLjM5IDMxLjU0LTI2LjE3IDIuMjQtMTAuMzMtMS42MS0yMS41NS05LjE0LTI4Ljg1LTYuMjQtNi4zMy0xNS4zLTkuNjItMjQuMTQtOS4xM20tMTE1Ljk2IDI3MmMtNi42MiAxLjIzLTEyLjg0IDQuNTgtMTcuNTQgOS40LTkuNDUgOS43Mi0xMS43MiAyNS41Ny01LjAyIDM3LjQyIDcuMTYgMTMuOTYgMjUuNDggMjAuODYgMzkuOTggMTQuNjIgMTUuMDItNS41MSAyMy45OS0yMy40MiAxOS4wNi0zOC43MS00LjA0LTE1LjQxLTIwLjg2LTI1Ljk2LTM2LjQ4LTIyLjczbTExMS45OCAyNzIuMDVjLTExLjQ5IDEuOTUtMjEuNDggMTAuNzItMjQuODQgMjEuODgtMy44NyAxMS42My0uMTMgMjUuMTYgOC45IDMzLjM2IDYuMTUgNS40OCAxNC40IDguNyAyMi42NyA4LjMyIDExLjE2LS4yNSAyMS45OC02Ljg3IDI3LjEyLTE2LjggNC45My04LjgzIDUuMTUtMjAuMDIuNzEtMjkuMS01LjgyLTEyLjc4LTIwLjgxLTIwLjMzLTM0LjU2LTE3LjY2bTI3Mi4wNiAxMTIuMDNjLTExLjc2IDIuMDItMjEuOTIgMTEuMDctMjUuMDkgMjIuNi0zLjg3IDEyLjU3IDEuMTMgMjcuMjUgMTEuOTEgMzQuNzkgNy44NiA1Ljc5IDE4LjQyIDcuNjcgMjcuNzcgNC44NiA5LjYxLTIuNzcgMTcuNy0xMC4yNCAyMS4wNy0xOS42OCA0Ljk3LTEyLjc0LjM2LTI4LjMyLTEwLjU4LTM2LjQ2LTcuMDItNS40NS0xNi4zNS03LjY3LTI1LjA4LTYuMTF6XCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNhMGEwYTBcIj5cbiAgICAgICAgICAgICAgICAgIDwvcGF0aD5cbiAgICAgICAgICAgICAgICAgIDxnIGZpbGw9XCIjYzFjMWMxXCI+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJtNTA2LjI1IDk2LjRjMTUuNjMtMy4xNCAzMi40NSA3LjIyIDM2LjU1IDIyLjY1IDUuMDQgMTUuNTUtNC4zMSAzMy44Mi0xOS43NCAzOS4wNi0xNS4yIDYuMS0zNC4wMy0xLjk4LTQwLjM2LTE3LTUuOTctMTIuNDctMi4yMy0yOC4zNSA4LjE3LTM3LjI4IDQuNDItMy42NyA5LjY4LTYuNDQgMTUuMzgtNy40M3pcIj48L3BhdGg+XG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJtMTIyLjMzIDQ4MC4zOWMxNS42Mi0zLjIzIDMyLjQ0IDcuMzIgMzYuNDggMjIuNzMgNC45MyAxNS4yOS00LjA0IDMzLjItMTkuMDYgMzguNzEtMTQuNSA2LjI0LTMyLjgyLS42Ni0zOS45OC0xNC42Mi02LjctMTEuODUtNC40My0yNy43IDUuMDItMzcuNDIgNC43LTQuODIgMTAuOTItOC4xNyAxNy41NC05LjR6XCI+PC9wYXRoPlxuICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgZD1cIm04NDMuNzIgMTgwLjI1LjExLS4xMWMyNC42NCAyNS4xMiA0Ni45NiA1Mi42IDY1LjYxIDgyLjQ3IDM2LjAxIDU3LjE2IDU5LjM4IDEyMi4yMiA2Ny44NyAxODkuMjUgNS42NyA0NC44OCA1LjI3IDkwLjYtMi4wNSAxMzUuMjctMTIuNyA4MC4wMS00Ni45NCAxNTYuNDEtOTcuOSAyMTkuMzYtNDIuMyA1Mi40OC05NS44NyA5Ni4wNC0xNTYuNDEgMTI1Ljc2bC0uNjMtLjI2Yy0xLjAxLTEuMS0yLjAzLTIuMTYtMy4wNS0zLjIyLTQwLjc1LTQwLjkzLTgxLjY5LTgxLjY4LTEyMi40My0xMjIuNjMtMi40OS0yLjI1LTQuNzYtNi43Ny04LjczLTQuODYtMzYuMTUgOS4yMy03NC4wMyAxMS42NS0xMTEuMDUgNy00My4yLTUuMjYtODUuMTctMjAuMjQtMTIxLjk2LTQzLjQ4LTMxLjkyLTIwLjA3LTU5Ljk4LTQ2LjI2LTgyLjIyLTc2LjcxLTIzLjk2LTMyLjc0LTQxLjItNzAuNDItNTAuMDUtMTEwLjAzLTExLjAxLTQ4LjQzLTkuODgtOTkuNjIgMy43Ni0xNDcuNCAxOC4xOS02NS4xMyA1OS41Ni0xMjMuNCAxMTQuOC0xNjIuMzUgNDQuNTItMzEuODEgOTguMDMtNTAuNzggMTUyLjYzLTU0LjMgNDguMzMtMy4zNCA5Ny41IDUuMzggMTQxLjcyIDI1LjIgMzMuMjggMTQuNzIgNjMuNTIgMzUuOTIgODkuNDcgNjEuMzcgNDAuMjYtNDAuMDIgODAuMi04MC4zNiAxMjAuNTEtMTIwLjMzbS0zNTEuNzUgMTgzLjk3Yy0yMS4yMyAyLjg1LTQxLjg5IDEwLjI4LTU5Ljg4IDIxLjk0LTIzLjA4IDE0LjQ1LTQxLjc2IDM1LjU4LTUzLjkgNTkuOTEtMTQuNTggMjkuMi0xOC42NCA2My4yMS0xMi41IDk1LjE3IDMuOTMgMTkuODUgMTIuMDMgMzguODggMjMuNTYgNTUuNTEgNy45MyAxMS41MiAxNy42NSAyMS42NiAyNy42NSAzMS4zOCA1Ny4zMyA1Ny40MSAxMTQuNjEgMTE0Ljg2IDE3MS45OSAxNzIuMjEgNDkuMDktMTMuMDcgOTQuNjctMzguOTQgMTMxLjA1LTc0LjQgNDUuMTEtNDMuMzQgNzUuNjYtMTAxLjQ0IDg2LjMxLTE2My4wNi4yNC0xLjA0LjIyLTIuOTEgMS44NS0yLjYgMjkuNjMuMDQgNTkuMjYtLjAxIDg4LjkuMDUgMTkuMDQtLjMgMzYuODctMTQuNzcgNDAuNzYtMzMuNDYuMjItMS4yMSAwLTIuMzItLjY3LTMuMzUgMS4yMi01LjcxIDIuMDgtMTEuNTggMS4zOC0xNy40M2wtLjI0LjRjLTIuMDUtMjAuMzQtMjAuODQtMzcuMTItNDEuMjUtMzcuMTctODAuNjQtLjA3LTE2MS4yOC0uMDEtMjQxLjkzLS4wNy02LjQ0LTIyLjA4LTE4LjUtNDIuMzMtMzQuMDMtNTkuMjMtMjUuOC0yNy41LTYyLjI2LTQ1LjAxLTEwMC4wMi00Ni44Mi05LjY4LjAyLTE5LjQ0LS41NC0yOS4wMyAxLjAybTI4Ni4zNyAzODguMzFjLTEyLjY0IDIuMDYtMjMuMzcgMTIuNTktMjUuNyAyNS4xOC0xLjQ4IDguMTQtLjE0IDE3LjAyIDQuNzMgMjMuODUgNS43NiA5LjIgMTYuOCAxNC43NiAyNy42MSAxNC4yNSA4LjMyLjAzIDE2LjI4LTMuOTUgMjIuMTYtOS42NiA0Ljg3LTUuNiA4LjQ1LTEyLjY3IDguNjctMjAuMi44Ni0xMS4zNy01LjA2LTIzLjEtMTQuODctMjguOTYtNi41Mi00LjQ2LTE0Ljg5LTUuNzUtMjIuNi00LjQ2elwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNjg2ODY4XCI+XG4gICAgICAgICAgICAgICAgICA8L3BhdGg+XG4gICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICBkPVwibTIzOC4yOSAyMDguMzljOC44NC0uNDkgMTcuOSAyLjggMjQuMTQgOS4xMyA3LjUzIDcuMyAxMS4zOCAxOC41MiA5LjE0IDI4Ljg1LTIuNDYgMTQuNzgtMTYuNTEgMjYuNTgtMzEuNTQgMjYuMTctMTQuNDguNDUtMjguMTctMTAuNTMtMzEuMjYtMjQuNjEtMy41Mi0xMy4xMiAyLjg5LTI3LjgzIDE0LjM2LTM0Ljg2IDQuNTctMi43NiA5LjgzLTQuNCAxNS4xNi00LjY4elwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjYzNjM2MzXCI+XG4gICAgICAgICAgICAgICAgICA8L3BhdGg+XG4gICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICBkPVwibTQ5MS45NyAzNjQuMjJjOS41OS0xLjU2IDE5LjM1LTEgMjkuMDMtMS4wMiAzNy43NiAxLjgxIDc0LjIyIDE5LjMyIDEwMC4wMiA0Ni44MiAxNS41MyAxNi45IDI3LjU5IDM3LjE1IDM0LjAzIDU5LjIzLTQ3LjY3LS4wMS05NS4zNS0uMDEtMTQzLjAzLS4wMS0xMi4xOS0uMTEtMjQuMjMgNS40Mi0zMi4yMSAxNC42MS02LjAxIDYuODUtOS43NCAxNS42NS0xMC40NCAyNC43NC0xLjE5IDE0LjE3IDUuMzYgMjguNyAxNi42OSAzNy4yOCA3LjYyIDUuOTEgMTcuMjggOSAyNi45MiA4LjggMTI2LjY5LS4wNCAyNTMuMzktLjA2IDM4MC4wOC4wMyA0Ljc2LjA0IDkuNTktLjE1IDE0LjItMS40OCAxNC4yMS0zLjgyIDI2LjAyLTE1LjQ3IDI5LjgzLTI5LjcuNjcgMS4wMy44OSAyLjE0LjY3IDMuMzUtMy44OSAxOC42OS0yMS43MiAzMy4xNi00MC43NiAzMy40Ni0yOS42NC0uMDYtNTkuMjctLjAxLTg4LjktLjA1LTEuNjMtLjMxLTEuNjEgMS41Ni0xLjg1IDIuNi0xMC42NSA2MS42Mi00MS4yIDExOS43Mi04Ni4zMSAxNjMuMDYtMzYuMzggMzUuNDYtODEuOTYgNjEuMzMtMTMxLjA1IDc0LjQtNTcuMzgtNTcuMzUtMTE0LjY2LTExNC44LTE3MS45OS0xNzIuMjEtMTAtOS43Mi0xOS43Mi0xOS44Ni0yNy42NS0zMS4zOC0xMS41My0xNi42My0xOS42My0zNS42Ni0yMy41Ni01NS41MS02LjE0LTMxLjk2LTIuMDgtNjUuOTcgMTIuNS05NS4xNyAxMi4xNC0yNC4zMyAzMC44Mi00NS40NiA1My45LTU5LjkxIDE3Ljk5LTExLjY2IDM4LjY1LTE5LjA5IDU5Ljg4LTIxLjk0elwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNDc0NzQ3XCI+XG4gICAgICAgICAgICAgICAgICA8L3BhdGg+XG4gICAgICAgICAgICAgICAgICA8ZyBmaWxsPVwiI2JmYmZiZlwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwibTQ3OS44MSA0ODMuODVjNy45OC05LjE5IDIwLjAyLTE0LjcyIDMyLjIxLTE0LjYxIDQ3LjY4IDAgOTUuMzYgMCAxNDMuMDMuMDEgODAuNjUuMDYgMTYxLjI5IDAgMjQxLjkzLjA3IDIwLjQxLjA1IDM5LjIgMTYuODMgNDEuMjUgMzcuMTctLjE5LjMzLS41OC45Ny0uNzggMS4yOS0zLjY4LTE4LjUxLTIxLjU3LTMzLjE2LTQwLjQ3LTMzLjA1LTEyNC45Ny4xLTI0OS45NC4xMi0zNzQuOTEuMTctNy43My4xMy0xNS43NC0uOC0yMy4xNSAxLjk2LTkuMDYgMi44NC0xNi43MyA5LjEtMjIuMjcgMTYuNy0zLjM0IDQuNTUtNC4zOSAxMC4yNC03LjI4IDE1LjAzLjctOS4wOSA0LjQzLTE3Ljg5IDEwLjQ0LTI0Ljc0elwiPjwvcGF0aD5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIm0yMzQuMzEgNzUyLjQ0YzEzLjc1LTIuNjcgMjguNzQgNC44OCAzNC41NiAxNy42NiA0LjQ0IDkuMDggNC4yMiAyMC4yNy0uNzEgMjkuMS01LjE0IDkuOTMtMTUuOTYgMTYuNTUtMjcuMTIgMTYuOC04LjI3LjM4LTE2LjUyLTIuODQtMjIuNjctOC4zMi05LjAzLTguMi0xMi43Ny0yMS43My04LjktMzMuMzYgMy4zNi0xMS4xNiAxMy4zNS0xOS45MyAyNC44NC0yMS44OHpcIj48L3BhdGg+XG4gICAgICAgICAgICAgICAgICA8L2c+XG4gICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICBkPVwibTQ5OC45MiA0NzYuODZjNy40MS0yLjc2IDE1LjQyLTEuODMgMjMuMTUtMS45NiAxMjQuOTctLjA1IDI0OS45NC0uMDcgMzc0LjkxLS4xNyAxOC45LS4xMSAzNi43OSAxNC41NCA0MC40NyAzMy4wNS4yLS4zMi41OS0uOTYuNzgtMS4yOWwuMjQtLjRjLjcgNS44NS0uMTYgMTEuNzItMS4zOCAxNy40My0zLjgxIDE0LjIzLTE1LjYyIDI1Ljg4LTI5LjgzIDI5LjctNC42MSAxLjMzLTkuNDQgMS41Mi0xNC4yIDEuNDgtMTI2LjY5LS4wOS0yNTMuMzktLjA3LTM4MC4wOC0uMDMtOS42NC4yLTE5LjMtMi44OS0yNi45Mi04LjgtMTEuMzMtOC41OC0xNy44OC0yMy4xMS0xNi42OS0zNy4yOCAyLjg5LTQuNzkgMy45NC0xMC40OCA3LjI4LTE1LjAzIDUuNTQtNy42IDEzLjIxLTEzLjg2IDIyLjI3LTE2Ljd6XCJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiNiMGIwYjBcIj5cbiAgICAgICAgICAgICAgICAgIDwvcGF0aD5cbiAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgIGQ9XCJtNTkuNDkgNjM2LjA4Yy45OSAxLjUyIDIuMDkgMy4wNCAyLjUyIDQuODUgMy42MiAxMy43MSA4LjkyIDI2Ljg4IDEzLjg4IDQwLjE1IDMuODggOS4zMSA3Ljc4IDE4LjYyIDEyLjI1IDI3LjY3IDMuMjYgOC4wOCA3LjkgMTUuNDggMTEuOSAyMy4yIDE3Ljk2IDMyLjc2IDM5Ljc2IDYzLjQ4IDY1LjE3IDkwLjg3IDE1LjAxIDE3LjM0IDMyLjI2IDMyLjU0IDQ5LjcyIDQ3LjM1IDIyLjEgMTcuNzIgNDUuNDYgMzMuOTQgNzAuMzMgNDcuNTQgNTkuNjQgMzMuMSAxMjYuNjYgNTIuNjcgMTk0LjcxIDU3LjE4IDgxLjMxIDUuNzQgMTYzLjk5LTEwLjUyIDIzNy4zLTQ2LjEyIDEuMDIgMS4wNiAyLjA0IDIuMTIgMy4wNSAzLjIybC4wMy42MWMtNDIuMzIgMjEuMDMtODcuODggMzUuNTMtMTM0LjU2IDQyLjkxLTU2LjkxIDguOS0xMTUuNDYgNy40OS0xNzEuODItNC41LTY3Ljg5LTE0LjM1LTEzMi40Mi00NC4yMS0xODcuNDItODYuNTEtNjMuNTItNDguNjMtMTE0LjMyLTExMy43My0xNDUuODYtMTg3LjI3LTguNDItMTkuODctMTUuOTMtNDAuMjItMjEuMi02MS4xNXpcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzkzOTM5M1wiPlxuICAgICAgICAgICAgICAgICAgPC9wYXRoPlxuICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgZD1cIm03NzguMzQgNzUyLjUzYzcuNzEtMS4yOSAxNi4wOCAwIDIyLjYgNC40NiA5LjgxIDUuODYgMTUuNzMgMTcuNTkgMTQuODcgMjguOTYtLjIyIDcuNTMtMy44IDE0LjYtOC42NyAyMC4yLTUuODggNS43MS0xMy44NCA5LjY5LTIyLjE2IDkuNjYtMTAuODEuNTEtMjEuODUtNS4wNS0yNy42MS0xNC4yNS00Ljg3LTYuODMtNi4yMS0xNS43MS00LjczLTIzLjg1IDIuMzMtMTIuNTkgMTMuMDYtMjMuMTIgMjUuNy0yNS4xOHpcIlxuICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzc2NzY3NlwiPlxuICAgICAgICAgICAgICAgICAgPC9wYXRoPlxuICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgZD1cIm01MDYuMzcgODY0LjQ3YzguNzMtMS41NiAxOC4wNi42NiAyNS4wOCA2LjExIDEwLjk0IDguMTQgMTUuNTUgMjMuNzIgMTAuNTggMzYuNDYtMy4zNyA5LjQ0LTExLjQ2IDE2LjkxLTIxLjA3IDE5LjY4LTkuMzUgMi44MS0xOS45MS45My0yNy43Ny00Ljg2LTEwLjc4LTcuNTQtMTUuNzgtMjIuMjItMTEuOTEtMzQuNzkgMy4xNy0xMS41MyAxMy4zMy0yMC41OCAyNS4wOS0yMi42elwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjYmViZWJlXCI+XG4gICAgICAgICAgICAgICAgICA8L3BhdGg+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgR29vZ2xlIEF1dGhlbnRpY2F0b3JcbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgICAqbmdJZj1cIm1vZGUgPT09ICdjb2RlLWlucHV0J1wiXG4gICAgICAgICAgY2xhc3M9XCJjb2RlLWlucHV0XCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgRW50ZXIgdGhlIDYtZGlnaXQgY29kZSB5b3Ugc2VlIGluIHRoZSBBcHAuXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YXBwLWNvZGUtaW5wdXQgKGNvZGVDaGFuZ2VkKT1cImNvZGVDaGFuZ2VkKCRldmVudClcIj48L2FwcC1jb2RlLWlucHV0PlxuICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICBuYW1lPVwiZGVmYXVsdFwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRlZmF1bHRcIlxuICAgICAgICAgICAgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiPlxuICAgICAgICAgIE1ha2UgdGhpcyB0aGUgZGVmYXVsdCB2ZXJpZmljYXRpb24gbWV0aG9kXG4gICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICAgPG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhcHBUeXBlXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwibW9kZSA9PT0gJ3FyLWNvZGUnXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIChjbGljayk9XCJuZXh0KClcIj5cbiAgICAgICAgICBOZXh0XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cIm1vZGUgPT09ICdjb2RlLWlucHV0J1wiXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAoY2xpY2spPVwibmV4dCgpXCI+XG4gICAgICAgICAgVmVyaWZ5XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgIFttYXQtZGlhbG9nLWNsb3NlXT1cIm51bGxcIj5cbiAgICAgICAgQ2FuY2VsXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L21hdC1kaWFsb2ctYWN0aW9ucz5cbiAgPC9mcy1kaWFsb2c+XG48L2Zvcm0+Il19
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tYW5hZ2UvY29tcG9uZW50cy9hcHAvYXBwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tYW5hZ2UvY29tcG9uZW50cy9hcHAvYXBwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQVUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqSCxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFN0ksT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFaEQsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQixPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRXpGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnRUFBZ0UsQ0FBQztBQUNwRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7OztBQXdCckQsTUFBTSxPQUFPLFlBQVk7SUFDZixLQUFLLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2hDLFVBQVUsR0FBRyxNQUFNLENBQTZCLFlBQVksQ0FBQyxDQUFDO0lBQzlELE1BQU0sR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUNuQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBSTlCLElBQUksQ0FBa0I7SUFFdEIsc0JBQXNCLENBQXlCO0lBQy9DLElBQUksR0FBNkIsU0FBUyxDQUFDO0lBQzNDLFNBQVMsQ0FBQztJQUNWLGtCQUFrQixDQUFDO0lBQ25CLFNBQVMsQ0FBQztJQUNWLElBQUksQ0FBQztJQUNMLE9BQU8sQ0FBQztJQUNSLE9BQU8sQ0FBcUI7SUFFNUIsUUFBUTtRQUNiLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDO1FBQ2hFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBQztJQUNyRSxDQUFDO0lBRU0sYUFBYTtRQUNsQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVNLGFBQWEsQ0FBQyxPQUFPO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyx5QkFBeUIsQ0FBQztZQUNwRCxJQUFJLEVBQUUsc0JBQXNCLENBQUMsR0FBRztTQUNqQyxDQUFDO2FBQ0MsU0FBUyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtZQUNoQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7WUFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxrQkFBa0IsQ0FBQyxTQUFTLENBQUM7WUFDOUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTSxhQUFhO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVNLFdBQVcsQ0FBQyxJQUFJO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVNLElBQUk7UUFDVCxJQUFJLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRU0sTUFBTSxHQUFHLEdBQUcsRUFBRTtRQUNuQixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQzthQUMxRSxJQUFJLENBQ0gsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsMEJBQTBCLENBQUMsQ0FBQztnQkFDN0UsSUFBSSxDQUFDLHNCQUFzQixDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pGLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNiLENBQUMsQ0FBQyxFQUNGLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1lBQ3ZFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDLENBQUM7dUdBdkVTLFlBQVk7MkZBQVosWUFBWSw4R0FPWixlQUFlLGdEQ2xENUIscTFjQXlOTyw0Y0Q3TEMsV0FBVyx1eEJBQ1gsWUFBWSxxdkNBQ1osY0FBYywwMEJBSWQsZ0JBQWdCLGlLQUNoQixjQUFjLGtKQUNkLGtCQUFrQixzSUFDbEIsV0FBVyx3VkFFWCxTQUFTOzsyRkFJSixZQUFZO2tCQXJCeEIsU0FBUztzQ0FHVyx1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDTCxXQUFXO3dCQUNYLFlBQVk7d0JBQ1osY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2Qsa0JBQWtCO3dCQUNsQixXQUFXO3dCQUNYLGdCQUFnQjt3QkFDaEIsU0FBUzt3QkFDVCxjQUFjO3FCQUNqQjs4QkFVSSxJQUFJO3NCQURWLFNBQVM7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdDaGlsZCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmLCBNYXREaWFsb2dUaXRsZSwgTWF0RGlhbG9nQ29udGVudCwgTWF0RGlhbG9nQWN0aW9ucywgTWF0RGlhbG9nQ2xvc2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5pbXBvcnQgeyBGc0Zvcm1EaXJlY3RpdmUsIEZzRm9ybU1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2Zvcm0nO1xuaW1wb3J0IHsgRnNNZXNzYWdlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbWVzc2FnZSc7XG5cbmltcG9ydCB7IG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVmVyaWZpY2F0aW9uTWV0aG9kVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL2VudW1zL3ZlcmlmaWNhdGlvbi1tZXRob2QtdHlwZS5lbnVtJztcbmltcG9ydCB7IFR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZzRGlhbG9nTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZGlhbG9nJztcbmltcG9ydCB7IENka1Njcm9sbGFibGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IEZzU2tlbGV0b25Nb2R1bGUgfSBmcm9tICdAZmlyZXN0aXRjaC9za2VsZXRvbic7XG5pbXBvcnQgeyBGc1FyY29kZU1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL3FyY29kZSc7XG5pbXBvcnQgeyBDb2RlSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9jb2RlLWlucHV0L2NvbXBvbmVudHMvY29kZS1pbnB1dC9jb2RlLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRDaGVja2JveCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7IE1hdEJ1dHRvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5cblxuQENvbXBvbmVudCh7XG4gICAgdGVtcGxhdGVVcmw6ICcuL2FwcC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYXBwLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBGc0Zvcm1Nb2R1bGUsXG4gICAgICAgIEZzRGlhbG9nTW9kdWxlLFxuICAgICAgICBNYXREaWFsb2dUaXRsZSxcbiAgICAgICAgQ2RrU2Nyb2xsYWJsZSxcbiAgICAgICAgTWF0RGlhbG9nQ29udGVudCxcbiAgICAgICAgRnNTa2VsZXRvbk1vZHVsZSxcbiAgICAgICAgRnNRcmNvZGVNb2R1bGUsXG4gICAgICAgIENvZGVJbnB1dENvbXBvbmVudCxcbiAgICAgICAgTWF0Q2hlY2tib3gsXG4gICAgICAgIE1hdERpYWxvZ0FjdGlvbnMsXG4gICAgICAgIE1hdEJ1dHRvbixcbiAgICAgICAgTWF0RGlhbG9nQ2xvc2UsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQXBwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBfZGF0YSA9IGluamVjdChNQVRfRElBTE9HX0RBVEEpO1xuICBwcml2YXRlIF9kaWFsb2dSZWYgPSBpbmplY3Q8TWF0RGlhbG9nUmVmPEFwcENvbXBvbmVudD4+KE1hdERpYWxvZ1JlZik7XG4gIHByaXZhdGUgX2NkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSBfbWVzc2FnZSA9IGluamVjdChGc01lc3NhZ2UpO1xuXG5cbiAgQFZpZXdDaGlsZChGc0Zvcm1EaXJlY3RpdmUpXG4gIHB1YmxpYyBmb3JtOiBGc0Zvcm1EaXJlY3RpdmU7XG5cbiAgcHVibGljIHR3b0ZhY3Rvck1hbmFnZVNlcnZpY2U6IFR3b0ZhY3Rvck1hbmFnZVNlcnZpY2U7XG4gIHB1YmxpYyBtb2RlOiAncXItY29kZScgfCAnY29kZS1pbnB1dCcgPSAncXItY29kZSc7XG4gIHB1YmxpYyBhY2NvdW50SWQ7XG4gIHB1YmxpYyB2ZXJpZmljYXRpb25NZXRob2Q7XG4gIHB1YmxpYyBxckNvZGVVcmw7XG4gIHB1YmxpYyBjb2RlO1xuICBwdWJsaWMgZGVmYXVsdDsgIFxuICBwdWJsaWMgYXBwVHlwZTogJ2dvb2dsZScgfCAnYXV0aHknO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UgPSB0aGlzLl9kYXRhLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2U7XG4gICAgdGhpcy5hY2NvdW50SWQgPSB0aGlzLl9kYXRhLmFjY291bnRJZDtcbiAgICB0aGlzLmRlZmF1bHQgPSAhdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLmhhc1ZlcmlmaWNhdGlvbk1ldGhvZHM7XG4gIH1cblxuICBwdWJsaWMgYXBwVHlwZUdvb2dsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmFwcFR5cGVTZWxlY3QoJ2dvb2dsZScpO1xuICB9XG5cbiAgcHVibGljIGFwcFR5cGVBdXRoeSgpOiB2b2lkIHtcbiAgICB0aGlzLmFwcFR5cGVTZWxlY3QoJ2F1dGh5Jyk7XG4gIH1cblxuICBwdWJsaWMgYXBwVHlwZVNlbGVjdChhcHBUeXBlKTogdm9pZCB7XG4gICAgdGhpcy5hcHBUeXBlID0gYXBwVHlwZTtcbiAgICB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UudmVyaWZpY2F0aW9uTWV0aG9kQ3JlYXRlJCh7XG4gICAgICB0eXBlOiBWZXJpZmljYXRpb25NZXRob2RUeXBlLkFwcCxcbiAgICB9KVxuICAgICAgLnN1YnNjcmliZSgodmVyaWZpY2F0aW9uTWV0aG9kKSA9PiB7XG4gICAgICAgIHRoaXMudmVyaWZpY2F0aW9uTWV0aG9kID0gdmVyaWZpY2F0aW9uTWV0aG9kO1xuICAgICAgICB0aGlzLnFyQ29kZVVybCA9IHZlcmlmaWNhdGlvbk1ldGhvZC5xckNvZGVVcmw7XG4gICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgY29kZUNvbXBsZXRlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmZvcm0udHJpZ2dlclN1Ym1pdCgpO1xuICB9XG5cbiAgcHVibGljIGNvZGVDaGFuZ2VkKGNvZGUpOiB2b2lkIHtcbiAgICB0aGlzLmNvZGUgPSBjb2RlO1xuICAgIHRoaXMuZm9ybS5kaXJ0eSgpO1xuICB9XG5cbiAgcHVibGljIG5leHQoKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlID0gJ2NvZGUtaW5wdXQnO1xuICB9XG5cbiAgcHVibGljIHZlcmlmeSA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLnZlcmlmaWNhdGlvbk1ldGhvZFZlcmlmeSQodGhpcy5jb2RlLCB0cnVlKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdCAmJiB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UudmVyaWZpY2F0aW9uTWV0aG9kRGVmYXVsdCQgP1xuICAgICAgICAgICAgdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLnZlcmlmaWNhdGlvbk1ldGhvZERlZmF1bHQkKHRoaXMudmVyaWZpY2F0aW9uTWV0aG9kKSA6XG4gICAgICAgICAgICBvZih0cnVlKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fbWVzc2FnZS5zdWNjZXNzKCdDcmVhdGVkIGFwcCBhdXRoZW50aWNhdG9yIHZlcmlmaWNhdGlvbiBtZXRob2QnKTtcbiAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYuY2xvc2UodHJ1ZSk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfTtcblxufVxuIiwiPGZvcm1cbiAgZnNGb3JtXG4gIFtzdWJtaXRdPVwidmVyaWZ5XCI+XG4gIDxmcy1kaWFsb2c+XG4gICAgPGgxIG1hdC1kaWFsb2ctdGl0bGU+XG4gICAgICBBdXRoZW50aWNhdG9yIGFwcCBzZXR1cFxuICAgIDwvaDE+XG4gICAgPG1hdC1kaWFsb2ctY29udGVudD5cbiAgICAgIEBpZiAobW9kZSA9PT0gJ3FyLWNvZGUnKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInFyLWNvZGVcIj5cbiAgICAgICAgICBAaWYgKGFwcFR5cGUpIHtcbiAgICAgICAgICAgIDxvbD5cbiAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgIEBpZiAoYXBwVHlwZSA9PT0gJ2F1dGh5Jykge1xuICAgICAgICAgICAgICAgICAgSW5zdGFsbCB0aGUgQXV0aHkgQXV0aGVudGljYXRvciBBcHAgZnJvbSB0aGVcbiAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIGhyZWY9XCJodHRwczovL2FwcHMuYXBwbGUuY29tL3VzL2FwcC9hdXRoeS9pZDQ5NDE2ODAxN1wiXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICAgICAgICAgICAgICBBcHAgU3RvcmVcbiAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgIG9yXG4gICAgICAgICAgICAgICAgICB0aGVcbiAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgIGhyZWY9XCJodHRwczovL3BsYXkuZ29vZ2xlLmNvbS9zdG9yZS9hcHBzL2RldGFpbHM/aWQ9Y29tLmF1dGh5LmF1dGh5XCJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgICAgICAgICAgICAgIEdvb2dsZSBQbGF5IFN0b3JlXG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoYXBwVHlwZSA9PT0gJ2dvb2dsZScpIHtcbiAgICAgICAgICAgICAgICAgIEluc3RhbGwgdGhlIEdvb2dsZSBBdXRoZW50aWNhdG9yIEFwcCBmcm9tIHRoZVxuICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vYXBwcy5hcHBsZS5jb20vdXMvYXBwL2dvb2dsZS1hdXRoZW50aWNhdG9yL2lkMzg4NDk3NjA1XCJcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgICAgICAgICAgICAgIEFwcCBTdG9yZVxuICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgb3JcbiAgICAgICAgICAgICAgICAgIHRoZVxuICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgaHJlZj1cImh0dHBzOi8vcGxheS5nb29nbGUuY29tL3N0b3JlL2FwcHMvZGV0YWlscz9pZD1jb20uZ29vZ2xlLmFuZHJvaWQuYXBwcy5hdXRoZW50aWNhdG9yMiZobD1lbl9VUyZnbD1VU1wiXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICAgICAgICAgICAgICBHb29nbGUgUGxheSBTdG9yZVxuICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgLlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgQGlmIChhcHBUeXBlID09PSAnYXV0aHknKSB7XG4gICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgT3BlbiB0aGUgQXV0aHkgYXBwIGFuZCBzZWxlY3RcbiAgICAgICAgICAgICAgICAgIDxiPlxuICAgICAgICAgICAgICAgICAgICBBZGQgQWNjb3VudFxuICAgICAgICAgICAgICAgICAgPC9iPlxuICAgICAgICAgICAgICAgICAgLlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgU2VsZWN0XG4gICAgICAgICAgICAgICAgICA8Yj5cbiAgICAgICAgICAgICAgICAgICAgU2NhbiBRUiBDb2RlXG4gICAgICAgICAgICAgICAgICA8L2I+XG4gICAgICAgICAgICAgICAgICBhbmQgc2NhbiB0aGUgUVIgY29kZSBiZWxvdy5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoYXBwVHlwZSA9PT0gJ2dvb2dsZScpIHtcbiAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICBPcGVuIHRoZSBHb29nbGUgQXV0aGVudGljdG9yIGFwcCBhbmQgY2xpY2sgdGhlXG4gICAgICAgICAgICAgICAgICA8Yj5cbiAgICAgICAgICAgICAgICAgICAgUGx1cyBpY29uXG4gICAgICAgICAgICAgICAgICA8L2I+XG4gICAgICAgICAgICAgICAgICBpbiB0aGUgbG93ZXIgcmlnaHQgY29ybmVyLlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgU2VsZWN0XG4gICAgICAgICAgICAgICAgICA8Yj5cbiAgICAgICAgICAgICAgICAgICAgU2NhbiBhIFFSIGNvZGVcbiAgICAgICAgICAgICAgICAgIDwvYj5cbiAgICAgICAgICAgICAgICAgIGFuZCBzY2FuIHRoZSBRUiBjb2RlIGJlbG93LlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvb2w+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpmc1NrZWxldG9uPVwicXJDb2RlVXJsXCI+XG4gICAgICAgICAgICAgIDxmcy1xcmNvZGVcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwicXJDb2RlVXJsXCJcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiMzAwXCJcbiAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIjMwMFwiPlxuICAgICAgICAgICAgICA8L2ZzLXFyY29kZT5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKCFhcHBUeXBlKSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwiYXBwLXR5cGVzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICBTZWxlY3QgdGhlIEF1dGhlbnRpY2F0b3IgQXBwIHlvdSBwcmVmZXJcbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwiYXBwVHlwZUF1dGh5KClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiNTBcIlxuICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjUwXCJcbiAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI1NiAyNTZcIlxuICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89XCJ4TWlkWU1pZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTI1NiAxMjcuOTk4QzI1NiAxOTguNjk2IDE5OC42OTQgMjU2IDEyNy45OTcgMjU2IDU3LjMwNCAyNTYgMCAxOTguNjk2IDAgMTI3Ljk5OCAwIDU3LjMwNSA1Ny4zMDQgMCAxMjcuOTk3IDAgMTk4LjY5NCAwIDI1NiA1Ny4zMDUgMjU2IDEyNy45OTh6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRUMxQzI0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExNy4wMjQgMTAwLjg5bDMwLjY5MSAzMC42OGM0LjQzIDQuNDM2IDExLjYyMyA0LjQzNiAxNi4wNjQgMCA0LjQzMS00LjQzNSA0LjQ0MS0xMS42MjIgMC0xNi4wNThMMTMzLjA4NiA4NC44MkMxMTEuMTI1IDYyLjg1NCA3NS42MzEgNjIuNSA1My4yMDQgODMuNzA0YTkuNTM2IDkuNTM2IDAgMCAwLS42MDUuNTQ4Yy0uMDk4LjA5OC0uMTc4LjIwMi0uMjc1LjI5LS4xLjA5Ni0uMjAyLjE4Mi0uMjk3LjI3OC0uMTk0LjE5My0uMzcxLjM5Ni0uNTQuNTk3LTIxLjIxNSAyMi40MzctMjAuODUgNTcuOTMyIDEuMTEzIDc5Ljg5N0w4My4yOTIgMTk2YzQuNDQgNC40MzMgMTEuNjIzIDQuNDMzIDE2LjA2MiAwIDQuNDQyLTQuNDM3IDQuNDQyLTExLjYzMy4wMTEtMTYuMDZsLTMwLjY5My0zMC42OTFjLTEzLjM5OC0xMy4zOTMtMTMuNDg4LTM1LjEyOS0uMjc4LTQ4LjYzNyAxMy41MDYtMTMuMjEgMzUuMjMtMTMuMTE0IDQ4LjYzLjI3OXptMzkuNjEyLTQwLjg3M2MtNC40MzUgNC40MzctNC40MzUgMTEuNjIzLjAxMiAxNi4wNTlsMzAuNjgxIDMwLjY5M2MxMy4zOSAxMy4zOTIgMTMuNDc3IDM1LjEyNS4yNjggNDguNjM2LTEzLjUxIDEzLjItMzUuMjI3IDEzLjExMi00OC42MjMtLjI4MmwtMzAuNjkyLTMwLjY4OWMtNC40MzgtNC40MzctMTEuNjMzLTQuNDM3LTE2LjA2NiAwLTQuNDQzIDQuNDMzLTQuNDQzIDExLjY0MiAwIDE2LjA2NWwzMC42ODIgMzAuNjk0YzIxLjk2OCAyMS45NjUgNTcuNDU4IDIyLjMyMiA3OS44ODkgMS4xMTYuMjA4LS4xODQuNDA0LS4zNTUuNjEtLjU0OS4wOTQtLjA5NS4xODItLjE5Mi4yNzMtLjI5LjEtLjA5NS4xOTctLjE4My4yOS0uMjg5LjE5Ny0uMTgzLjM2NS0uMzg0LjU0LS41OTQgMjEuMjE1LTIyLjQyOCAyMC44Ni01Ny45MTEtMS4xMDItNzkuODg5bC0zMC42OTItMzAuNjgyYy00LjQzNi00LjQ0My0xMS42MzgtNC40NDMtMTYuMDcuMDAxelwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI0ZGRlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICBBdXRoeVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxhIChjbGljayk9XCJhcHBUeXBlR29vZ2xlKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiNTBcIlxuICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjUwXCJcbiAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEwMjQgMTAyNFwiXG4gICAgICAgICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwibTQ1Ny4wNyA0NS45MmM3My42Ny04LjYyIDE0OS40MS4yMiAyMTguOTMgMjYuMjQgNjIuNzUgMjMuNDcgMTIwLjU5IDYwLjQxIDE2Ny43MiAxMDguMDktNDAuMzEgMzkuOTctODAuMjUgODAuMzEtMTIwLjUxIDEyMC4zMy0yNS45NS0yNS40NS01Ni4xOS00Ni42NS04OS40Ny02MS4zNy00NC4yMi0xOS44Mi05My4zOS0yOC41NC0xNDEuNzItMjUuMi01NC42IDMuNTItMTA4LjExIDIyLjQ5LTE1Mi42MyA1NC4zLTU1LjI0IDM4Ljk1LTk2LjYxIDk3LjIyLTExNC44IDE2Mi4zNS0xMy42NCA0Ny43OC0xNC43NyA5OC45Ny0zLjc2IDE0Ny40IDguODUgMzkuNjEgMjYuMDkgNzcuMjkgNTAuMDUgMTEwLjAzIDIyLjI0IDMwLjQ1IDUwLjMgNTYuNjQgODIuMjIgNzYuNzEgMzYuNzkgMjMuMjQgNzguNzYgMzguMjIgMTIxLjk2IDQzLjQ4IDM3LjAyIDQuNjUgNzQuOSAyLjIzIDExMS4wNS03IDMuOTctMS45MSA2LjI0IDIuNjEgOC43MyA0Ljg2IDQwLjc0IDQwLjk1IDgxLjY4IDgxLjcgMTIyLjQzIDEyMi42My03My4zMSAzNS42LTE1NS45OSA1MS44Ni0yMzcuMyA0Ni4xMi02OC4wNS00LjUxLTEzNS4wNy0yNC4wOC0xOTQuNzEtNTcuMTgtMjQuODctMTMuNi00OC4yMy0yOS44Mi03MC4zMy00Ny41NC0xNy40Ni0xNC44MS0zNC43MS0zMC4wMS00OS43Mi00Ny4zNS0yNS40MS0yNy4zOS00Ny4yMS01OC4xMS02NS4xNy05MC44Ny00LTcuNzItOC42NC0xNS4xMi0xMS45LTIzLjItNC40Ny05LjA1LTguMzctMTguMzYtMTIuMjUtMjcuNjctNC45Ni0xMy4yNy0xMC4yNi0yNi40NC0xMy44OC00MC4xNS0uNDMtMS44MS0xLjUzLTMuMzMtMi41Mi00Ljg1LTguMy0yOC42Ni0xMi45NS01OC4zMy0xNS40NC04OC4wNC0yLjYyLTM3LjM2LTEuMzMtNzUuMDUgNC43OC0xMTIuMDMgMTIuMTgtNzUuNDggNDMuNDEtMTQ3Ljc0IDg5Ljg2LTIwOC40NCAzMC4xMi0zOS41IDY2LjUzLTc0LjIxIDEwNy40Ni0xMDIuMzUgNjIuNDQtNDMuMTEgMTM1LjUzLTcwLjY5IDIxMC45Mi03OS4zbTQ5LjE4IDUwLjQ4Yy01LjcuOTktMTAuOTYgMy43Ni0xNS4zOCA3LjQzLTEwLjQgOC45My0xNC4xNCAyNC44MS04LjE3IDM3LjI4IDYuMzMgMTUuMDIgMjUuMTYgMjMuMSA0MC4zNiAxNyAxNS40My01LjI0IDI0Ljc4LTIzLjUxIDE5Ljc0LTM5LjA2LTQuMS0xNS40My0yMC45Mi0yNS43OS0zNi41NS0yMi42NW0tMjY3Ljk2IDExMS45OWMtNS4zMy4yOC0xMC41OSAxLjkyLTE1LjE2IDQuNjgtMTEuNDcgNy4wMy0xNy44OCAyMS43NC0xNC4zNiAzNC44NiAzLjA5IDE0LjA4IDE2Ljc4IDI1LjA2IDMxLjI2IDI0LjYxIDE1LjAzLjQxIDI5LjA4LTExLjM5IDMxLjU0LTI2LjE3IDIuMjQtMTAuMzMtMS42MS0yMS41NS05LjE0LTI4Ljg1LTYuMjQtNi4zMy0xNS4zLTkuNjItMjQuMTQtOS4xM20tMTE1Ljk2IDI3MmMtNi42MiAxLjIzLTEyLjg0IDQuNTgtMTcuNTQgOS40LTkuNDUgOS43Mi0xMS43MiAyNS41Ny01LjAyIDM3LjQyIDcuMTYgMTMuOTYgMjUuNDggMjAuODYgMzkuOTggMTQuNjIgMTUuMDItNS41MSAyMy45OS0yMy40MiAxOS4wNi0zOC43MS00LjA0LTE1LjQxLTIwLjg2LTI1Ljk2LTM2LjQ4LTIyLjczbTExMS45OCAyNzIuMDVjLTExLjQ5IDEuOTUtMjEuNDggMTAuNzItMjQuODQgMjEuODgtMy44NyAxMS42My0uMTMgMjUuMTYgOC45IDMzLjM2IDYuMTUgNS40OCAxNC40IDguNyAyMi42NyA4LjMyIDExLjE2LS4yNSAyMS45OC02Ljg3IDI3LjEyLTE2LjggNC45My04LjgzIDUuMTUtMjAuMDIuNzEtMjkuMS01LjgyLTEyLjc4LTIwLjgxLTIwLjMzLTM0LjU2LTE3LjY2bTI3Mi4wNiAxMTIuMDNjLTExLjc2IDIuMDItMjEuOTIgMTEuMDctMjUuMDkgMjIuNi0zLjg3IDEyLjU3IDEuMTMgMjcuMjUgMTEuOTEgMzQuNzkgNy44NiA1Ljc5IDE4LjQyIDcuNjcgMjcuNzcgNC44NiA5LjYxLTIuNzcgMTcuNy0xMC4yNCAyMS4wNy0xOS42OCA0Ljk3LTEyLjc0LjM2LTI4LjMyLTEwLjU4LTM2LjQ2LTcuMDItNS40NS0xNi4zNS03LjY3LTI1LjA4LTYuMTF6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjYTBhMGEwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICAgIDxnIGZpbGw9XCIjYzFjMWMxXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwibTUwNi4yNSA5Ni40YzE1LjYzLTMuMTQgMzIuNDUgNy4yMiAzNi41NSAyMi42NSA1LjA0IDE1LjU1LTQuMzEgMzMuODItMTkuNzQgMzkuMDYtMTUuMiA2LjEtMzQuMDMtMS45OC00MC4zNi0xNy01Ljk3LTEyLjQ3LTIuMjMtMjguMzUgOC4xNy0zNy4yOCA0LjQyLTMuNjcgOS42OC02LjQ0IDE1LjM4LTcuNDN6XCI+PC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIm0xMjIuMzMgNDgwLjM5YzE1LjYyLTMuMjMgMzIuNDQgNy4zMiAzNi40OCAyMi43MyA0LjkzIDE1LjI5LTQuMDQgMzMuMi0xOS4wNiAzOC43MS0xNC41IDYuMjQtMzIuODItLjY2LTM5Ljk4LTE0LjYyLTYuNy0xMS44NS00LjQzLTI3LjcgNS4wMi0zNy40MiA0LjctNC44MiAxMC45Mi04LjE3IDE3LjU0LTkuNHpcIj48L3BhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwibTg0My43MiAxODAuMjUuMTEtLjExYzI0LjY0IDI1LjEyIDQ2Ljk2IDUyLjYgNjUuNjEgODIuNDcgMzYuMDEgNTcuMTYgNTkuMzggMTIyLjIyIDY3Ljg3IDE4OS4yNSA1LjY3IDQ0Ljg4IDUuMjcgOTAuNi0yLjA1IDEzNS4yNy0xMi43IDgwLjAxLTQ2Ljk0IDE1Ni40MS05Ny45IDIxOS4zNi00Mi4zIDUyLjQ4LTk1Ljg3IDk2LjA0LTE1Ni40MSAxMjUuNzZsLS42My0uMjZjLTEuMDEtMS4xLTIuMDMtMi4xNi0zLjA1LTMuMjItNDAuNzUtNDAuOTMtODEuNjktODEuNjgtMTIyLjQzLTEyMi42My0yLjQ5LTIuMjUtNC43Ni02Ljc3LTguNzMtNC44Ni0zNi4xNSA5LjIzLTc0LjAzIDExLjY1LTExMS4wNSA3LTQzLjItNS4yNi04NS4xNy0yMC4yNC0xMjEuOTYtNDMuNDgtMzEuOTItMjAuMDctNTkuOTgtNDYuMjYtODIuMjItNzYuNzEtMjMuOTYtMzIuNzQtNDEuMi03MC40Mi01MC4wNS0xMTAuMDMtMTEuMDEtNDguNDMtOS44OC05OS42MiAzLjc2LTE0Ny40IDE4LjE5LTY1LjEzIDU5LjU2LTEyMy40IDExNC44LTE2Mi4zNSA0NC41Mi0zMS44MSA5OC4wMy01MC43OCAxNTIuNjMtNTQuMyA0OC4zMy0zLjM0IDk3LjUgNS4zOCAxNDEuNzIgMjUuMiAzMy4yOCAxNC43MiA2My41MiAzNS45MiA4OS40NyA2MS4zNyA0MC4yNi00MC4wMiA4MC4yLTgwLjM2IDEyMC41MS0xMjAuMzNtLTM1MS43NSAxODMuOTdjLTIxLjIzIDIuODUtNDEuODkgMTAuMjgtNTkuODggMjEuOTQtMjMuMDggMTQuNDUtNDEuNzYgMzUuNTgtNTMuOSA1OS45MS0xNC41OCAyOS4yLTE4LjY0IDYzLjIxLTEyLjUgOTUuMTcgMy45MyAxOS44NSAxMi4wMyAzOC44OCAyMy41NiA1NS41MSA3LjkzIDExLjUyIDE3LjY1IDIxLjY2IDI3LjY1IDMxLjM4IDU3LjMzIDU3LjQxIDExNC42MSAxMTQuODYgMTcxLjk5IDE3Mi4yMSA0OS4wOS0xMy4wNyA5NC42Ny0zOC45NCAxMzEuMDUtNzQuNCA0NS4xMS00My4zNCA3NS42Ni0xMDEuNDQgODYuMzEtMTYzLjA2LjI0LTEuMDQuMjItMi45MSAxLjg1LTIuNiAyOS42My4wNCA1OS4yNi0uMDEgODguOS4wNSAxOS4wNC0uMyAzNi44Ny0xNC43NyA0MC43Ni0zMy40Ni4yMi0xLjIxIDAtMi4zMi0uNjctMy4zNSAxLjIyLTUuNzEgMi4wOC0xMS41OCAxLjM4LTE3LjQzbC0uMjQuNGMtMi4wNS0yMC4zNC0yMC44NC0zNy4xMi00MS4yNS0zNy4xNy04MC42NC0uMDctMTYxLjI4LS4wMS0yNDEuOTMtLjA3LTYuNDQtMjIuMDgtMTguNS00Mi4zMy0zNC4wMy01OS4yMy0yNS44LTI3LjUtNjIuMjYtNDUuMDEtMTAwLjAyLTQ2LjgyLTkuNjguMDItMTkuNDQtLjU0LTI5LjAzIDEuMDJtMjg2LjM3IDM4OC4zMWMtMTIuNjQgMi4wNi0yMy4zNyAxMi41OS0yNS43IDI1LjE4LTEuNDggOC4xNC0uMTQgMTcuMDIgNC43MyAyMy44NSA1Ljc2IDkuMiAxNi44IDE0Ljc2IDI3LjYxIDE0LjI1IDguMzIuMDMgMTYuMjgtMy45NSAyMi4xNi05LjY2IDQuODctNS42IDguNDUtMTIuNjcgOC42Ny0yMC4yLjg2LTExLjM3LTUuMDYtMjMuMS0xNC44Ny0yOC45Ni02LjUyLTQuNDYtMTQuODktNS43NS0yMi42LTQuNDZ6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNjg2ODY4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwibTIzOC4yOSAyMDguMzljOC44NC0uNDkgMTcuOSAyLjggMjQuMTQgOS4xMyA3LjUzIDcuMyAxMS4zOCAxOC41MiA5LjE0IDI4Ljg1LTIuNDYgMTQuNzgtMTYuNTEgMjYuNTgtMzEuNTQgMjYuMTctMTQuNDguNDUtMjguMTctMTAuNTMtMzEuMjYtMjQuNjEtMy41Mi0xMy4xMiAyLjg5LTI3LjgzIDE0LjM2LTM0Ljg2IDQuNTctMi43NiA5LjgzLTQuNCAxNS4xNi00LjY4elwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI2MzYzNjM1wiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIm00OTEuOTcgMzY0LjIyYzkuNTktMS41NiAxOS4zNS0xIDI5LjAzLTEuMDIgMzcuNzYgMS44MSA3NC4yMiAxOS4zMiAxMDAuMDIgNDYuODIgMTUuNTMgMTYuOSAyNy41OSAzNy4xNSAzNC4wMyA1OS4yMy00Ny42Ny0uMDEtOTUuMzUtLjAxLTE0My4wMy0uMDEtMTIuMTktLjExLTI0LjIzIDUuNDItMzIuMjEgMTQuNjEtNi4wMSA2Ljg1LTkuNzQgMTUuNjUtMTAuNDQgMjQuNzQtMS4xOSAxNC4xNyA1LjM2IDI4LjcgMTYuNjkgMzcuMjggNy42MiA1LjkxIDE3LjI4IDkgMjYuOTIgOC44IDEyNi42OS0uMDQgMjUzLjM5LS4wNiAzODAuMDguMDMgNC43Ni4wNCA5LjU5LS4xNSAxNC4yLTEuNDggMTQuMjEtMy44MiAyNi4wMi0xNS40NyAyOS44My0yOS43LjY3IDEuMDMuODkgMi4xNC42NyAzLjM1LTMuODkgMTguNjktMjEuNzIgMzMuMTYtNDAuNzYgMzMuNDYtMjkuNjQtLjA2LTU5LjI3LS4wMS04OC45LS4wNS0xLjYzLS4zMS0xLjYxIDEuNTYtMS44NSAyLjYtMTAuNjUgNjEuNjItNDEuMiAxMTkuNzItODYuMzEgMTYzLjA2LTM2LjM4IDM1LjQ2LTgxLjk2IDYxLjMzLTEzMS4wNSA3NC40LTU3LjM4LTU3LjM1LTExNC42Ni0xMTQuOC0xNzEuOTktMTcyLjIxLTEwLTkuNzItMTkuNzItMTkuODYtMjcuNjUtMzEuMzgtMTEuNTMtMTYuNjMtMTkuNjMtMzUuNjYtMjMuNTYtNTUuNTEtNi4xNC0zMS45Ni0yLjA4LTY1Ljk3IDEyLjUtOTUuMTcgMTIuMTQtMjQuMzMgMzAuODItNDUuNDYgNTMuOS01OS45MSAxNy45OS0xMS42NiAzOC42NS0xOS4wOSA1OS44OC0yMS45NHpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM0NzQ3NDdcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8L3BhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPGcgZmlsbD1cIiNiZmJmYmZcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJtNDc5LjgxIDQ4My44NWM3Ljk4LTkuMTkgMjAuMDItMTQuNzIgMzIuMjEtMTQuNjEgNDcuNjggMCA5NS4zNiAwIDE0My4wMy4wMSA4MC42NS4wNiAxNjEuMjkgMCAyNDEuOTMuMDcgMjAuNDEuMDUgMzkuMiAxNi44MyA0MS4yNSAzNy4xNy0uMTkuMzMtLjU4Ljk3LS43OCAxLjI5LTMuNjgtMTguNTEtMjEuNTctMzMuMTYtNDAuNDctMzMuMDUtMTI0Ljk3LjEtMjQ5Ljk0LjEyLTM3NC45MS4xNy03LjczLjEzLTE1Ljc0LS44LTIzLjE1IDEuOTYtOS4wNiAyLjg0LTE2LjczIDkuMS0yMi4yNyAxNi43LTMuMzQgNC41NS00LjM5IDEwLjI0LTcuMjggMTUuMDMuNy05LjA5IDQuNDMtMTcuODkgMTAuNDQtMjQuNzR6XCI+PC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIm0yMzQuMzEgNzUyLjQ0YzEzLjc1LTIuNjcgMjguNzQgNC44OCAzNC41NiAxNy42NiA0LjQ0IDkuMDggNC4yMiAyMC4yNy0uNzEgMjkuMS01LjE0IDkuOTMtMTUuOTYgMTYuNTUtMjcuMTIgMTYuOC04LjI3LjM4LTE2LjUyLTIuODQtMjIuNjctOC4zMi05LjAzLTguMi0xMi43Ny0yMS43My04LjktMzMuMzYgMy4zNi0xMS4xNiAxMy4zNS0xOS45MyAyNC44NC0yMS44OHpcIj48L3BhdGg+XG4gICAgICAgICAgICAgICAgICAgICAgPC9nPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwibTQ5OC45MiA0NzYuODZjNy40MS0yLjc2IDE1LjQyLTEuODMgMjMuMTUtMS45NiAxMjQuOTctLjA1IDI0OS45NC0uMDcgMzc0LjkxLS4xNyAxOC45LS4xMSAzNi43OSAxNC41NCA0MC40NyAzMy4wNS4yLS4zMi41OS0uOTYuNzgtMS4yOWwuMjQtLjRjLjcgNS44NS0uMTYgMTEuNzItMS4zOCAxNy40My0zLjgxIDE0LjIzLTE1LjYyIDI1Ljg4LTI5LjgzIDI5LjctNC42MSAxLjMzLTkuNDQgMS41Mi0xNC4yIDEuNDgtMTI2LjY5LS4wOS0yNTMuMzktLjA3LTM4MC4wOC0uMDMtOS42NC4yLTE5LjMtMi44OS0yNi45Mi04LjgtMTEuMzMtOC41OC0xNy44OC0yMy4xMS0xNi42OS0zNy4yOCAyLjg5LTQuNzkgMy45NC0xMC40OCA3LjI4LTE1LjAzIDUuNTQtNy42IDEzLjIxLTEzLjg2IDIyLjI3LTE2Ljd6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjYjBiMGIwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwibTU5LjQ5IDYzNi4wOGMuOTkgMS41MiAyLjA5IDMuMDQgMi41MiA0Ljg1IDMuNjIgMTMuNzEgOC45MiAyNi44OCAxMy44OCA0MC4xNSAzLjg4IDkuMzEgNy43OCAxOC42MiAxMi4yNSAyNy42NyAzLjI2IDguMDggNy45IDE1LjQ4IDExLjkgMjMuMiAxNy45NiAzMi43NiAzOS43NiA2My40OCA2NS4xNyA5MC44NyAxNS4wMSAxNy4zNCAzMi4yNiAzMi41NCA0OS43MiA0Ny4zNSAyMi4xIDE3LjcyIDQ1LjQ2IDMzLjk0IDcwLjMzIDQ3LjU0IDU5LjY0IDMzLjEgMTI2LjY2IDUyLjY3IDE5NC43MSA1Ny4xOCA4MS4zMSA1Ljc0IDE2My45OS0xMC41MiAyMzcuMy00Ni4xMiAxLjAyIDEuMDYgMi4wNCAyLjEyIDMuMDUgMy4yMmwuMDMuNjFjLTQyLjMyIDIxLjAzLTg3Ljg4IDM1LjUzLTEzNC41NiA0Mi45MS01Ni45MSA4LjktMTE1LjQ2IDcuNDktMTcxLjgyLTQuNS02Ny44OS0xNC4zNS0xMzIuNDItNDQuMjEtMTg3LjQyLTg2LjUxLTYzLjUyLTQ4LjYzLTExNC4zMi0xMTMuNzMtMTQ1Ljg2LTE4Ny4yNy04LjQyLTE5Ljg3LTE1LjkzLTQwLjIyLTIxLjItNjEuMTV6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjOTM5MzkzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9wYXRoPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwibTc3OC4zNCA3NTIuNTNjNy43MS0xLjI5IDE2LjA4IDAgMjIuNiA0LjQ2IDkuODEgNS44NiAxNS43MyAxNy41OSAxNC44NyAyOC45Ni0uMjIgNy41My0zLjggMTQuNi04LjY3IDIwLjItNS44OCA1LjcxLTEzLjg0IDkuNjktMjIuMTYgOS42Ni0xMC44MS41MS0yMS44NS01LjA1LTI3LjYxLTE0LjI1LTQuODctNi44My02LjIxLTE1LjcxLTQuNzMtMjMuODUgMi4zMy0xMi41OSAxMy4wNi0yMy4xMiAyNS43LTI1LjE4elwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiIzc2NzY3NlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIm01MDYuMzcgODY0LjQ3YzguNzMtMS41NiAxOC4wNi42NiAyNS4wOCA2LjExIDEwLjk0IDguMTQgMTUuNTUgMjMuNzIgMTAuNTggMzYuNDYtMy4zNyA5LjQ0LTExLjQ2IDE2LjkxLTIxLjA3IDE5LjY4LTkuMzUgMi44MS0xOS45MS45My0yNy43Ny00Ljg2LTEwLjc4LTcuNTQtMTUuNzgtMjIuMjItMTEuOTEtMzQuNzkgMy4xNy0xMS41MyAxMy4zMy0yMC41OCAyNS4wOS0yMi42elwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiI2JlYmViZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDwvcGF0aD5cbiAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICBHb29nbGUgQXV0aGVudGljYXRvclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgICAgQGlmIChtb2RlID09PSAnY29kZS1pbnB1dCcpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY29kZS1pbnB1dFwiPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICBFbnRlciB0aGUgNi1kaWdpdCBjb2RlIHlvdSBzZWUgaW4gdGhlIEFwcC5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8YXBwLWNvZGUtaW5wdXQgKGNvZGVDaGFuZ2VkKT1cImNvZGVDaGFuZ2VkKCRldmVudClcIj48L2FwcC1jb2RlLWlucHV0PlxuICAgICAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgICAgIG5hbWU9XCJkZWZhdWx0XCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGVmYXVsdFwiXG4gICAgICAgICAgICBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICBNYWtlIHRoaXMgdGhlIGRlZmF1bHQgdmVyaWZpY2F0aW9uIG1ldGhvZFxuICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cbiAgICA8L21hdC1kaWFsb2ctY29udGVudD5cbiAgICA8bWF0LWRpYWxvZy1hY3Rpb25zPlxuICAgICAgQGlmIChhcHBUeXBlKSB7XG4gICAgICAgIEBpZiAobW9kZSA9PT0gJ3FyLWNvZGUnKSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm5leHQoKVwiPlxuICAgICAgICAgICAgTmV4dFxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICAgIEBpZiAobW9kZSA9PT0gJ2NvZGUtaW5wdXQnKSB7XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm5leHQoKVwiPlxuICAgICAgICAgICAgVmVyaWZ5XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIDxidXR0b25cbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwibnVsbFwiPlxuICAgICAgICBDYW5jZWxcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuICA8L2ZzLWRpYWxvZz5cbjwvZm9ybT4iXX0=
@@ -1,27 +1,28 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Inject, ViewChild, } from '@angular/core';
2
- import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
3
- import { FsFormDirective } from '@firestitch/form';
1
+ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ViewChild, inject } from '@angular/core';
2
+ import { MAT_DIALOG_DATA, MatDialogRef, MatDialogTitle, MatDialogContent, MatDialogActions, MatDialogClose } from '@angular/material/dialog';
3
+ import { FsFormDirective, FsFormModule } from '@firestitch/form';
4
4
  import { FsMessage } from '@firestitch/message';
5
5
  import { of } from 'rxjs';
6
6
  import { switchMap, tap } from 'rxjs/operators';
7
7
  import { VerificationMethodType } from '../../../../enums/verification-method-type.enum';
8
+ import { FormsModule } from '@angular/forms';
9
+ import { FsDialogModule } from '@firestitch/dialog';
10
+ import { CdkScrollable } from '@angular/cdk/scrolling';
11
+ import { Fs2faVerificationComponent } from '../../../verification/components/2fa-verification/2fa-verification.component';
12
+ import { MatFormField, MatLabel } from '@angular/material/form-field';
13
+ import { MatInput } from '@angular/material/input';
14
+ import { MatCheckbox } from '@angular/material/checkbox';
15
+ import { MatButton } from '@angular/material/button';
8
16
  import * as i0 from "@angular/core";
9
- import * as i1 from "@angular/material/dialog";
10
- import * as i2 from "@firestitch/message";
11
- import * as i3 from "@angular/common";
12
- import * as i4 from "@angular/forms";
13
- import * as i5 from "@angular/material/button";
14
- import * as i6 from "@angular/material/input";
15
- import * as i7 from "@angular/material/form-field";
16
- import * as i8 from "@angular/material/checkbox";
17
- import * as i9 from "@firestitch/dialog";
18
- import * as i10 from "@firestitch/form";
19
- import * as i11 from "../../../verification/components/2fa-verification/2fa-verification.component";
17
+ import * as i1 from "@angular/forms";
18
+ import * as i2 from "@firestitch/form";
19
+ import * as i3 from "@angular/material/dialog";
20
+ import * as i4 from "@firestitch/dialog";
20
21
  export class EmailComponent {
21
- _data;
22
- _dialogRef;
23
- _cdRef;
24
- _message;
22
+ _data = inject(MAT_DIALOG_DATA);
23
+ _dialogRef = inject(MatDialogRef);
24
+ _cdRef = inject(ChangeDetectorRef);
25
+ _message = inject(FsMessage);
25
26
  form;
26
27
  email;
27
28
  code;
@@ -29,11 +30,8 @@ export class EmailComponent {
29
30
  verificationMethod = null;
30
31
  trustDevice = true;
31
32
  twoFactorManageService;
32
- constructor(_data, _dialogRef, _cdRef, _message) {
33
- this._data = _data;
34
- this._dialogRef = _dialogRef;
35
- this._cdRef = _cdRef;
36
- this._message = _message;
33
+ constructor() {
34
+ const _data = this._data;
37
35
  this.twoFactorManageService = _data.twoFactorManageService;
38
36
  this.default = !this.twoFactorManageService.hasVerificationMethods;
39
37
  }
@@ -73,17 +71,29 @@ export class EmailComponent {
73
71
  }
74
72
  });
75
73
  }
76
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: EmailComponent, deps: [{ token: MAT_DIALOG_DATA }, { token: i1.MatDialogRef }, { token: i0.ChangeDetectorRef }, { token: i2.FsMessage }], target: i0.ɵɵFactoryTarget.Component });
77
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.7", type: EmailComponent, selector: "ng-component", viewQueries: [{ propertyName: "form", first: true, predicate: FsFormDirective, descendants: true }], ngImport: i0, template: "<form\n fsForm\n [submit]=\"submit\">\n <fs-dialog>\n <h1 mat-dialog-title>\n Email setup\n </h1>\n <mat-dialog-content>\n <ng-container *ngIf=\"verificationMethod; else notVerificationMethod\">\n <fs-2fa-verification\n [verificationMethod]=\"verificationMethod\"\n [(code)]=\"code\"\n (codeCompleted)=\"codeCompleted($event)\"\n [resend]=\"resend\"\n [(trustDevice)]=\"trustDevice\">\n </fs-2fa-verification>\n </ng-container>\n <ng-template #notVerificationMethod>\n <p>\n The app will only use this email for verifying your account security.\n </p>\n <mat-form-field>\n <mat-label>\n Email\n </mat-label>\n <input\n matInput\n [required]=\"true\"\n [(ngModel)]=\"email\"\n [fsFormEmail]=\"true\"\n name=\"email\">\n </mat-form-field>\n <mat-checkbox\n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default verification method\n </mat-checkbox>\n </ng-template>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"submit\">\n Next\n </button>\n <button\n mat-button\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>", styles: [":host ::ng-deep mat-checkbox .mat-ripple{display:none}:host ::ng-deep mat-checkbox .mat-checkbox-layout{white-space:wrap}mat-form-field{width:100%}mat-dialog-content{width:400px;max-width:100%}p{margin-top:0}app-code-input{margin-bottom:5px;display:block}mat-checkbox{overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i6.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "component", type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i9.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout", "dock", "dockable", "fullscreenPercent"] }, { kind: "directive", type: i10.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup", "deactivationGuard"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"], exportAs: ["fsForm"] }, { kind: "directive", type: i10.FsFormRequiredDirective, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }, { kind: "directive", type: i10.FsFormEmailDirective, selector: "[fsFormEmail]", inputs: ["fsFormEmail", "fsFormEmailMessage"] }, { kind: "directive", type: i10.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "directive", type: i10.FsButtonDirective, selector: "[mat-raised-button]:not([fsFormButtonStandalone]),[mat-button]:not([fsFormButtonStandalone]),[mat-flat-button]:not([fsFormButtonStandalone]),[mat-stroked-button]:not([fsFormButtonStandalone])", inputs: ["name", "dirtySubmit", "form"] }, { kind: "component", type: i11.Fs2faVerificationComponent, selector: "fs-2fa-verification", inputs: ["verificationMethod", "resend", "showTrustedDevice", "trustDevice", "codeLength", "trustDays", "code", "formatRecipient", "getVerificationMethods", "selectVerificationMethod"], outputs: ["verified", "codeChange", "codeCompleted", "trustDeviceChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
74
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: EmailComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
75
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: EmailComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "form", first: true, predicate: FsFormDirective, descendants: true }], ngImport: i0, template: "<form\n fsForm\n [submit]=\"submit\">\n <fs-dialog>\n <h1 mat-dialog-title>\n Email setup\n </h1>\n <mat-dialog-content>\n @if (verificationMethod) {\n <fs-2fa-verification\n [verificationMethod]=\"verificationMethod\"\n [(code)]=\"code\"\n (codeCompleted)=\"codeCompleted($event)\"\n [resend]=\"resend\"\n [(trustDevice)]=\"trustDevice\">\n </fs-2fa-verification>\n } @else {\n <p>\n The app will only use this email for verifying your account security.\n </p>\n <mat-form-field>\n <mat-label>\n Email\n </mat-label>\n <input\n matInput\n [required]=\"true\"\n [(ngModel)]=\"email\"\n [fsFormEmail]=\"true\"\n name=\"email\">\n </mat-form-field>\n <mat-checkbox\n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default verification method\n </mat-checkbox>\n }\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"submit\">\n Next\n </button>\n <button\n mat-button\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>", styles: [":host ::ng-deep mat-checkbox .mat-ripple{display:none}:host ::ng-deep mat-checkbox .mat-checkbox-layout{white-space:wrap}mat-form-field{width:100%}mat-dialog-content{width:400px;max-width:100%}p{margin-top:0}app-code-input{margin-bottom:5px;display:block}mat-checkbox{overflow:hidden}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FsFormModule }, { kind: "directive", type: i2.FsFormDirective, selector: "[fsForm]", inputs: ["wrapperSelector", "messageSelector", "hintSelector", "labelSelector", "autocomplete", "shortcuts", "confirm", "confirmDialog", "confirmDrawer", "confirmBrowser", "confirmTabs", "dirtySubmitButton", "submit", "successDelay", "errorDelay", "tabGroup", "deactivationGuard"], outputs: ["fsForm", "invalid", "valid", "submitted", "reseted", "cleared"], exportAs: ["fsForm"] }, { kind: "directive", type: i2.FsFormRequiredDirective, selector: "[fsFormRequired],[ngModel][required]", inputs: ["fsFormRequired", "required", "fsFormRequiredMessage"] }, { kind: "directive", type: i2.FsFormEmailDirective, selector: "[fsFormEmail]", inputs: ["fsFormEmail", "fsFormEmailMessage"] }, { kind: "directive", type: i2.FsFormNoFsValidatorsDirective, selector: "[ngModel]:not([required]):not([fsFormRequired]):not([fsFormCompare]):not([fsFormDateRange]):not([fsFormEmail]):not([fsFormEmails]):not([fsFormFunction]):not([fsFormGreater]):not([fsFormGreaterEqual]):not([fsFormInteger]):not([fsFormLesser]):not([fsFormMax]):not([fsFormMaxLength]):not([fsFormMin]):not([fsFormMinLength]):not([fsFormNumeric]):not([fsFormPattern]):not([fsFormPhone]):not([fsFormUrl]):not([validate])" }, { kind: "directive", type: i2.FsButtonDirective, selector: "[mat-raised-button]:not([fsFormButtonStandalone]),[mat-button]:not([fsFormButtonStandalone]),[mat-flat-button]:not([fsFormButtonStandalone]),[mat-stroked-button]:not([fsFormButtonStandalone])", inputs: ["name", "dirtySubmit", "form"] }, { kind: "ngmodule", type: FsDialogModule }, { kind: "directive", type: i3.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i3.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i3.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i3.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i4.FsDialogComponent, selector: "fs-dialog", inputs: ["mobileMode", "mobileButtonPlacement", "mobileWidth", "mode", "buttonLayout", "dock", "dockable", "fullscreenPercent"] }, { kind: "component", type: Fs2faVerificationComponent, selector: "fs-2fa-verification", inputs: ["verificationMethod", "resend", "showTrustedDevice", "trustDevice", "codeLength", "trustDays", "code", "formatRecipient", "getVerificationMethods", "selectVerificationMethod"], outputs: ["verified", "codeChange", "codeCompleted", "trustDeviceChange"] }, { kind: "component", type: MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: MatLabel, selector: "mat-label" }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
78
76
  }
79
77
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: EmailComponent, decorators: [{
80
78
  type: Component,
81
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n fsForm\n [submit]=\"submit\">\n <fs-dialog>\n <h1 mat-dialog-title>\n Email setup\n </h1>\n <mat-dialog-content>\n <ng-container *ngIf=\"verificationMethod; else notVerificationMethod\">\n <fs-2fa-verification\n [verificationMethod]=\"verificationMethod\"\n [(code)]=\"code\"\n (codeCompleted)=\"codeCompleted($event)\"\n [resend]=\"resend\"\n [(trustDevice)]=\"trustDevice\">\n </fs-2fa-verification>\n </ng-container>\n <ng-template #notVerificationMethod>\n <p>\n The app will only use this email for verifying your account security.\n </p>\n <mat-form-field>\n <mat-label>\n Email\n </mat-label>\n <input\n matInput\n [required]=\"true\"\n [(ngModel)]=\"email\"\n [fsFormEmail]=\"true\"\n name=\"email\">\n </mat-form-field>\n <mat-checkbox\n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default verification method\n </mat-checkbox>\n </ng-template>\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"submit\">\n Next\n </button>\n <button\n mat-button\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>", styles: [":host ::ng-deep mat-checkbox .mat-ripple{display:none}:host ::ng-deep mat-checkbox .mat-checkbox-layout{white-space:wrap}mat-form-field{width:100%}mat-dialog-content{width:400px;max-width:100%}p{margin-top:0}app-code-input{margin-bottom:5px;display:block}mat-checkbox{overflow:hidden}\n"] }]
82
- }], ctorParameters: () => [{ type: undefined, decorators: [{
83
- type: Inject,
84
- args: [MAT_DIALOG_DATA]
85
- }] }, { type: i1.MatDialogRef }, { type: i0.ChangeDetectorRef }, { type: i2.FsMessage }], propDecorators: { form: [{
79
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
80
+ FormsModule,
81
+ FsFormModule,
82
+ FsDialogModule,
83
+ MatDialogTitle,
84
+ CdkScrollable,
85
+ MatDialogContent,
86
+ Fs2faVerificationComponent,
87
+ MatFormField,
88
+ MatLabel,
89
+ MatInput,
90
+ MatCheckbox,
91
+ MatDialogActions,
92
+ MatButton,
93
+ MatDialogClose,
94
+ ], template: "<form\n fsForm\n [submit]=\"submit\">\n <fs-dialog>\n <h1 mat-dialog-title>\n Email setup\n </h1>\n <mat-dialog-content>\n @if (verificationMethod) {\n <fs-2fa-verification\n [verificationMethod]=\"verificationMethod\"\n [(code)]=\"code\"\n (codeCompleted)=\"codeCompleted($event)\"\n [resend]=\"resend\"\n [(trustDevice)]=\"trustDevice\">\n </fs-2fa-verification>\n } @else {\n <p>\n The app will only use this email for verifying your account security.\n </p>\n <mat-form-field>\n <mat-label>\n Email\n </mat-label>\n <input\n matInput\n [required]=\"true\"\n [(ngModel)]=\"email\"\n [fsFormEmail]=\"true\"\n name=\"email\">\n </mat-form-field>\n <mat-checkbox\n name=\"default\"\n [(ngModel)]=\"default\"\n [disableRipple]=\"true\">\n Make this the default verification method\n </mat-checkbox>\n }\n </mat-dialog-content>\n <mat-dialog-actions>\n <button\n mat-button\n color=\"primary\"\n type=\"submit\">\n Next\n </button>\n <button\n mat-button\n type=\"button\"\n [mat-dialog-close]=\"undefined\">\n Cancel\n </button>\n </mat-dialog-actions>\n </fs-dialog>\n</form>", styles: [":host ::ng-deep mat-checkbox .mat-ripple{display:none}:host ::ng-deep mat-checkbox .mat-checkbox-layout{white-space:wrap}mat-form-field{width:100%}mat-dialog-content{width:400px;max-width:100%}p{margin-top:0}app-code-input{margin-bottom:5px;display:block}mat-checkbox{overflow:hidden}\n"] }]
95
+ }], ctorParameters: () => [], propDecorators: { form: [{
86
96
  type: ViewChild,
87
97
  args: [FsFormDirective, { static: false }]
88
98
  }] } });
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL21hbmFnZS9jb21wb25lbnRzL2VtYWlsL2VtYWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tYW5hZ2UvY29tcG9uZW50cy9lbWFpbC9lbWFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQzFDLFNBQVMsRUFBRSxNQUFNLEVBQ2pCLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFaEQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDOzs7Ozs7Ozs7Ozs7O0FBU3pGLE1BQU0sT0FBTyxjQUFjO0lBYVU7SUFDekI7SUFDQTtJQUNBO0lBYkgsSUFBSSxDQUFrQjtJQUV0QixLQUFLLENBQUM7SUFDTixJQUFJLENBQUM7SUFDTCxPQUFPLENBQUM7SUFDUixrQkFBa0IsR0FBRyxJQUFJLENBQUM7SUFDMUIsV0FBVyxHQUFHLElBQUksQ0FBQztJQUNuQixzQkFBc0IsQ0FBeUI7SUFFdEQsWUFDbUMsS0FBVSxFQUNuQyxVQUF3QyxFQUN4QyxNQUF5QixFQUN6QixRQUFtQjtRQUhNLFVBQUssR0FBTCxLQUFLLENBQUs7UUFDbkMsZUFBVSxHQUFWLFVBQVUsQ0FBOEI7UUFDeEMsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUUzQixJQUFJLENBQUMsc0JBQXNCLEdBQUcsS0FBSyxDQUFDLHNCQUFzQixDQUFDO1FBQzNELElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsc0JBQXNCLENBQUM7SUFDckUsQ0FBQztJQUVNLE1BQU0sR0FBRyxHQUFxQixFQUFFO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLHdCQUF3QixFQUFFO2FBQzFELElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUNwRCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ04sQ0FBQyxDQUFDO0lBRUssTUFBTSxHQUFHLEdBQUcsRUFBRTtRQUNuQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUM7YUFDWixJQUFJLENBQ0gsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUM7cUJBQy9FLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFO29CQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO29CQUMzRCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUM1QyxDQUFDLENBQUMsQ0FDSCxDQUFDLENBQUM7Z0JBQ0wsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHlCQUF5QixDQUFDO29CQUNwRCxJQUFJLEVBQUUsc0JBQXNCLENBQUMsS0FBSztvQkFDbEMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO29CQUNqQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87aUJBQ3RCLENBQUM7cUJBQ0MsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztvQkFDN0MsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDN0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNSLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDLENBQUM7SUFFSyxhQUFhLENBQUMsSUFBSTtRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixnQkFBZ0I7UUFDaEIsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzVCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7dUdBbkVVLGNBQWMsa0JBYWYsZUFBZTsyRkFiZCxjQUFjLDBGQUVkLGVBQWUsZ0RDMUI1Qiw0aERBdURPOzsyRkQvQk0sY0FBYztrQkFMMUIsU0FBUztzQ0FHUyx1QkFBdUIsQ0FBQyxNQUFNOzswQkFlNUMsTUFBTTsyQkFBQyxlQUFlOzRIQVZsQixJQUFJO3NCQURWLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LCBJbmplY3QsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuXG5pbXBvcnQgeyBGc0Zvcm1EaXJlY3RpdmUgfSBmcm9tICdAZmlyZXN0aXRjaC9mb3JtJztcbmltcG9ydCB7IEZzTWVzc2FnZSB9IGZyb20gJ0BmaXJlc3RpdGNoL21lc3NhZ2UnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi9lbnVtcy92ZXJpZmljYXRpb24tbWV0aG9kLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBUd29GYWN0b3JNYW5hZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuXG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vZW1haWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbWFpbC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRW1haWxDb21wb25lbnQge1xuXG4gIEBWaWV3Q2hpbGQoRnNGb3JtRGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgcHVibGljIGZvcm06IEZzRm9ybURpcmVjdGl2ZTtcblxuICBwdWJsaWMgZW1haWw7XG4gIHB1YmxpYyBjb2RlO1xuICBwdWJsaWMgZGVmYXVsdDtcbiAgcHVibGljIHZlcmlmaWNhdGlvbk1ldGhvZCA9IG51bGw7XG4gIHB1YmxpYyB0cnVzdERldmljZSA9IHRydWU7XG4gIHB1YmxpYyB0d29GYWN0b3JNYW5hZ2VTZXJ2aWNlOiBUd29GYWN0b3JNYW5hZ2VTZXJ2aWNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcml2YXRlIF9kYXRhOiBhbnksXG4gICAgcHJpdmF0ZSBfZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RW1haWxDb21wb25lbnQ+LFxuICAgIHByaXZhdGUgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIF9tZXNzYWdlOiBGc01lc3NhZ2UsXG4gICkge1xuICAgIHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZSA9IF9kYXRhLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2U7XG4gICAgdGhpcy5kZWZhdWx0ID0gIXRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZS5oYXNWZXJpZmljYXRpb25NZXRob2RzO1xuICB9XG5cbiAgcHVibGljIHJlc2VuZCA9ICgpOiBPYnNlcnZhYmxlPHZvaWQ+ID0+IHtcbiAgICByZXR1cm4gdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLnZlcmlmaWNhdGlvbk1ldGhvZFJlc2VuZCgpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ1Jlc2VudCB2ZXJpZmljYXRpb24gY29kZScpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH07XG5cbiAgcHVibGljIHN1Ym1pdCA9ICgpID0+IHtcbiAgICByZXR1cm4gb2YodHJ1ZSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiB0aGlzLnZlcmlmaWNhdGlvbk1ldGhvZCA/XG4gICAgICAgICAgICB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UudmVyaWZpY2F0aW9uTWV0aG9kVmVyaWZ5JCh0aGlzLmNvZGUsIHRoaXMudHJ1c3REZXZpY2UpXG4gICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgodmVyaWZpY2F0aW9uTWV0aG9kKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9tZXNzYWdlLnN1Y2Nlc3MoJ0NyZWF0ZWQgZW1haWwgdmVyaWZpY2F0aW9uIG1ldGhvZCcpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKHZlcmlmaWNhdGlvbk1ldGhvZCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICkgOlxuICAgICAgICAgICAgdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLnZlcmlmaWNhdGlvbk1ldGhvZENyZWF0ZSQoe1xuICAgICAgICAgICAgICB0eXBlOiBWZXJpZmljYXRpb25NZXRob2RUeXBlLkVtYWlsLFxuICAgICAgICAgICAgICBlbWFpbDogdGhpcy5lbWFpbCxcbiAgICAgICAgICAgICAgZGVmYXVsdDogdGhpcy5kZWZhdWx0LFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCh2ZXJpZmljYXRpb25NZXRob2QpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMudmVyaWZpY2F0aW9uTWV0aG9kID0gdmVyaWZpY2F0aW9uTWV0aG9kO1xuICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9jZFJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgfSksXG4gICAgICApO1xuICB9O1xuXG4gIHB1YmxpYyBjb2RlQ29tcGxldGVkKGNvZGUpOiB2b2lkIHtcbiAgICB0aGlzLmNvZGUgPSBjb2RlO1xuICAgIC8vTGVnYWN5IHN1cHBvcnRcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmKCF0aGlzLmZvcm0uc3VibWl0dGluZykge1xuICAgICAgICB0aGlzLmZvcm0udHJpZ2dlclN1Ym1pdCgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbn1cbiIsIjxmb3JtXG4gICAgZnNGb3JtXG4gICAgW3N1Ym1pdF09XCJzdWJtaXRcIj5cbiAgPGZzLWRpYWxvZz5cbiAgICA8aDEgbWF0LWRpYWxvZy10aXRsZT5cbiAgICAgIEVtYWlsIHNldHVwXG4gICAgPC9oMT5cbiAgICA8bWF0LWRpYWxvZy1jb250ZW50PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZlcmlmaWNhdGlvbk1ldGhvZDsgZWxzZSBub3RWZXJpZmljYXRpb25NZXRob2RcIj5cbiAgICAgICAgPGZzLTJmYS12ZXJpZmljYXRpb25cbiAgICAgICAgICBbdmVyaWZpY2F0aW9uTWV0aG9kXT1cInZlcmlmaWNhdGlvbk1ldGhvZFwiXG4gICAgICAgICAgWyhjb2RlKV09XCJjb2RlXCJcbiAgICAgICAgICAoY29kZUNvbXBsZXRlZCk9XCJjb2RlQ29tcGxldGVkKCRldmVudClcIlxuICAgICAgICAgIFtyZXNlbmRdPVwicmVzZW5kXCJcbiAgICAgICAgICBbKHRydXN0RGV2aWNlKV09XCJ0cnVzdERldmljZVwiPlxuICAgICAgICA8L2ZzLTJmYS12ZXJpZmljYXRpb24+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm90VmVyaWZpY2F0aW9uTWV0aG9kPlxuICAgICAgICA8cD5cbiAgICAgICAgICBUaGUgYXBwIHdpbGwgb25seSB1c2UgdGhpcyBlbWFpbCBmb3IgdmVyaWZ5aW5nIHlvdXIgYWNjb3VudCBzZWN1cml0eS5cbiAgICAgICAgPC9wPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1sYWJlbD5cbiAgICAgICAgICAgIEVtYWlsXG4gICAgICAgICAgPC9tYXQtbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cInRydWVcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbWFpbFwiXG4gICAgICAgICAgICBbZnNGb3JtRW1haWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICBuYW1lPVwiZW1haWxcIj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgbmFtZT1cImRlZmF1bHRcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkZWZhdWx0XCJcbiAgICAgICAgICAgIFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIj5cbiAgICAgICAgICBNYWtlIHRoaXMgdGhlIGRlZmF1bHQgdmVyaWZpY2F0aW9uIG1ldGhvZFxuICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICAgPG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICAgIDxidXR0b25cbiAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICB0eXBlPVwic3VibWl0XCI+XG4gICAgICAgIE5leHRcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBbbWF0LWRpYWxvZy1jbG9zZV09XCJ1bmRlZmluZWRcIj5cbiAgICAgICAgQ2FuY2VsXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L21hdC1kaWFsb2ctYWN0aW9ucz5cbiAgPC9mcy1kaWFsb2c+XG48L2Zvcm0+Il19
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2R1bGVzL21hbmFnZS9jb21wb25lbnRzL2VtYWlsL2VtYWlsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kdWxlcy9tYW5hZ2UvY29tcG9uZW50cy9lbWFpbC9lbWFpbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekcsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRzdJLE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWhELE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVoRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUV6RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4RUFBOEUsQ0FBQztBQUMxSCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDekQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7QUF5QnJELE1BQU0sT0FBTyxjQUFjO0lBQ2pCLEtBQUssR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDaEMsVUFBVSxHQUFHLE1BQU0sQ0FBK0IsWUFBWSxDQUFDLENBQUM7SUFDaEUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ25DLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7SUFJOUIsSUFBSSxDQUFrQjtJQUV0QixLQUFLLENBQUM7SUFDTixJQUFJLENBQUM7SUFDTCxPQUFPLENBQUM7SUFDUixrQkFBa0IsR0FBRyxJQUFJLENBQUM7SUFDMUIsV0FBVyxHQUFHLElBQUksQ0FBQztJQUNuQixzQkFBc0IsQ0FBeUI7SUFFdEQ7UUFDRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRXpCLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxLQUFLLENBQUMsc0JBQXNCLENBQUM7UUFDM0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxzQkFBc0IsQ0FBQztJQUNyRSxDQUFDO0lBRU0sTUFBTSxHQUFHLEdBQXFCLEVBQUU7UUFDckMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsd0JBQXdCLEVBQUU7YUFDMUQsSUFBSSxDQUNILEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ3BELENBQUMsQ0FBQyxDQUNILENBQUM7SUFDTixDQUFDLENBQUM7SUFFSyxNQUFNLEdBQUcsR0FBRyxFQUFFO1FBQ25CLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQzthQUNaLElBQUksQ0FDSCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQztxQkFDL0UsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLEVBQUU7b0JBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7b0JBQzNELElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7Z0JBQzVDLENBQUMsQ0FBQyxDQUNILENBQUMsQ0FBQztnQkFDTCxJQUFJLENBQUMsc0JBQXNCLENBQUMseUJBQXlCLENBQUM7b0JBQ3BELElBQUksRUFBRSxzQkFBc0IsQ0FBQyxLQUFLO29CQUNsQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7b0JBQ2pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztpQkFDdEIsQ0FBQztxQkFDQyxJQUFJLENBQ0gsR0FBRyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsRUFBRTtvQkFDekIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGtCQUFrQixDQUFDO29CQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUM3QixDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ1IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUMsQ0FBQztJQUVLLGFBQWEsQ0FBQyxJQUFJO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLGdCQUFnQjtRQUNoQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0FyRVUsY0FBYzsyRkFBZCxjQUFjLDhHQU9kLGVBQWUsZ0RDcEQ1QiwwNUNBc0RPLHVWRHpCQyxXQUFXLG93Q0FDWCxZQUFZLGlpREFDWixjQUFjLDIwQkFJZCwwQkFBMEIscVVBQzFCLFlBQVksNExBQ1osUUFBUSxzREFDUixRQUFRLGlVQUNSLFdBQVcsd1ZBRVgsU0FBUzs7MkZBSUosY0FBYztrQkF0QjFCLFNBQVM7c0NBR1csdUJBQXVCLENBQUMsTUFBTSxjQUNuQyxJQUFJLFdBQ1A7d0JBQ0wsV0FBVzt3QkFDWCxZQUFZO3dCQUNaLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxhQUFhO3dCQUNiLGdCQUFnQjt3QkFDaEIsMEJBQTBCO3dCQUMxQixZQUFZO3dCQUNaLFFBQVE7d0JBQ1IsUUFBUTt3QkFDUixXQUFXO3dCQUNYLGdCQUFnQjt3QkFDaEIsU0FBUzt3QkFDVCxjQUFjO3FCQUNqQjt3REFVSSxJQUFJO3NCQURWLFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiwgTWF0RGlhbG9nVGl0bGUsIE1hdERpYWxvZ0NvbnRlbnQsIE1hdERpYWxvZ0FjdGlvbnMsIE1hdERpYWxvZ0Nsb3NlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcblxuXG5pbXBvcnQgeyBGc0Zvcm1EaXJlY3RpdmUsIEZzRm9ybU1vZHVsZSB9IGZyb20gJ0BmaXJlc3RpdGNoL2Zvcm0nO1xuaW1wb3J0IHsgRnNNZXNzYWdlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvbWVzc2FnZSc7XG5cbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVmVyaWZpY2F0aW9uTWV0aG9kVHlwZSB9IGZyb20gJy4uLy4uLy4uLy4uL2VudW1zL3ZlcmlmaWNhdGlvbi1tZXRob2QtdHlwZS5lbnVtJztcbmltcG9ydCB7IFR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZzRGlhbG9nTW9kdWxlIH0gZnJvbSAnQGZpcmVzdGl0Y2gvZGlhbG9nJztcbmltcG9ydCB7IENka1Njcm9sbGFibGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcbmltcG9ydCB7IEZzMmZhVmVyaWZpY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vdmVyaWZpY2F0aW9uL2NvbXBvbmVudHMvMmZhLXZlcmlmaWNhdGlvbi8yZmEtdmVyaWZpY2F0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGQsIE1hdExhYmVsIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQgeyBNYXRJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2lucHV0JztcbmltcG9ydCB7IE1hdENoZWNrYm94IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgTWF0QnV0dG9uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcblxuXG5AQ29tcG9uZW50KHtcbiAgICB0ZW1wbGF0ZVVybDogJy4vZW1haWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2VtYWlsLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBGc0Zvcm1Nb2R1bGUsXG4gICAgICAgIEZzRGlhbG9nTW9kdWxlLFxuICAgICAgICBNYXREaWFsb2dUaXRsZSxcbiAgICAgICAgQ2RrU2Nyb2xsYWJsZSxcbiAgICAgICAgTWF0RGlhbG9nQ29udGVudCxcbiAgICAgICAgRnMyZmFWZXJpZmljYXRpb25Db21wb25lbnQsXG4gICAgICAgIE1hdEZvcm1GaWVsZCxcbiAgICAgICAgTWF0TGFiZWwsXG4gICAgICAgIE1hdElucHV0LFxuICAgICAgICBNYXRDaGVja2JveCxcbiAgICAgICAgTWF0RGlhbG9nQWN0aW9ucyxcbiAgICAgICAgTWF0QnV0dG9uLFxuICAgICAgICBNYXREaWFsb2dDbG9zZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFbWFpbENvbXBvbmVudCB7XG4gIHByaXZhdGUgX2RhdGEgPSBpbmplY3QoTUFUX0RJQUxPR19EQVRBKTtcbiAgcHJpdmF0ZSBfZGlhbG9nUmVmID0gaW5qZWN0PE1hdERpYWxvZ1JlZjxFbWFpbENvbXBvbmVudD4+KE1hdERpYWxvZ1JlZik7XG4gIHByaXZhdGUgX2NkUmVmID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcHJpdmF0ZSBfbWVzc2FnZSA9IGluamVjdChGc01lc3NhZ2UpO1xuXG5cbiAgQFZpZXdDaGlsZChGc0Zvcm1EaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBwdWJsaWMgZm9ybTogRnNGb3JtRGlyZWN0aXZlO1xuXG4gIHB1YmxpYyBlbWFpbDtcbiAgcHVibGljIGNvZGU7XG4gIHB1YmxpYyBkZWZhdWx0O1xuICBwdWJsaWMgdmVyaWZpY2F0aW9uTWV0aG9kID0gbnVsbDtcbiAgcHVibGljIHRydXN0RGV2aWNlID0gdHJ1ZTtcbiAgcHVibGljIHR3b0ZhY3Rvck1hbmFnZVNlcnZpY2U6IFR3b0ZhY3Rvck1hbmFnZVNlcnZpY2U7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgY29uc3QgX2RhdGEgPSB0aGlzLl9kYXRhO1xuXG4gICAgdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlID0gX2RhdGEudHdvRmFjdG9yTWFuYWdlU2VydmljZTtcbiAgICB0aGlzLmRlZmF1bHQgPSAhdGhpcy50d29GYWN0b3JNYW5hZ2VTZXJ2aWNlLmhhc1ZlcmlmaWNhdGlvbk1ldGhvZHM7XG4gIH1cblxuICBwdWJsaWMgcmVzZW5kID0gKCk6IE9ic2VydmFibGU8dm9pZD4gPT4ge1xuICAgIHJldHVybiB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UudmVyaWZpY2F0aW9uTWV0aG9kUmVzZW5kKClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnUmVzZW50IHZlcmlmaWNhdGlvbiBjb2RlJyk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfTtcblxuICBwdWJsaWMgc3VibWl0ID0gKCkgPT4ge1xuICAgIHJldHVybiBvZih0cnVlKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMudmVyaWZpY2F0aW9uTWV0aG9kID9cbiAgICAgICAgICAgIHRoaXMudHdvRmFjdG9yTWFuYWdlU2VydmljZS52ZXJpZmljYXRpb25NZXRob2RWZXJpZnkkKHRoaXMuY29kZSwgdGhpcy50cnVzdERldmljZSlcbiAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCh2ZXJpZmljYXRpb25NZXRob2QpID0+IHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX21lc3NhZ2Uuc3VjY2VzcygnQ3JlYXRlZCBlbWFpbCB2ZXJpZmljYXRpb24gbWV0aG9kJyk7XG4gICAgICAgICAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYuY2xvc2UodmVyaWZpY2F0aW9uTWV0aG9kKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgKSA6XG4gICAgICAgICAgICB0aGlzLnR3b0ZhY3Rvck1hbmFnZVNlcnZpY2UudmVyaWZpY2F0aW9uTWV0aG9kQ3JlYXRlJCh7XG4gICAgICAgICAgICAgIHR5cGU6IFZlcmlmaWNhdGlvbk1ldGhvZFR5cGUuRW1haWwsXG4gICAgICAgICAgICAgIGVtYWlsOiB0aGlzLmVtYWlsLFxuICAgICAgICAgICAgICBkZWZhdWx0OiB0aGlzLmRlZmF1bHQsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKHZlcmlmaWNhdGlvbk1ldGhvZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy52ZXJpZmljYXRpb25NZXRob2QgPSB2ZXJpZmljYXRpb25NZXRob2Q7XG4gICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uY2xlYXIoKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuX2NkUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gIH07XG5cbiAgcHVibGljIGNvZGVDb21wbGV0ZWQoY29kZSk6IHZvaWQge1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gICAgLy9MZWdhY3kgc3VwcG9ydFxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYoIXRoaXMuZm9ybS5zdWJtaXR0aW5nKSB7XG4gICAgICAgIHRoaXMuZm9ybS50cmlnZ2VyU3VibWl0KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxufVxuIiwiPGZvcm1cbiAgZnNGb3JtXG4gIFtzdWJtaXRdPVwic3VibWl0XCI+XG4gIDxmcy1kaWFsb2c+XG4gICAgPGgxIG1hdC1kaWFsb2ctdGl0bGU+XG4gICAgICBFbWFpbCBzZXR1cFxuICAgIDwvaDE+XG4gICAgPG1hdC1kaWFsb2ctY29udGVudD5cbiAgICAgIEBpZiAodmVyaWZpY2F0aW9uTWV0aG9kKSB7XG4gICAgICAgIDxmcy0yZmEtdmVyaWZpY2F0aW9uXG4gICAgICAgICAgW3ZlcmlmaWNhdGlvbk1ldGhvZF09XCJ2ZXJpZmljYXRpb25NZXRob2RcIlxuICAgICAgICAgIFsoY29kZSldPVwiY29kZVwiXG4gICAgICAgICAgKGNvZGVDb21wbGV0ZWQpPVwiY29kZUNvbXBsZXRlZCgkZXZlbnQpXCJcbiAgICAgICAgICBbcmVzZW5kXT1cInJlc2VuZFwiXG4gICAgICAgICAgWyh0cnVzdERldmljZSldPVwidHJ1c3REZXZpY2VcIj5cbiAgICAgICAgPC9mcy0yZmEtdmVyaWZpY2F0aW9uPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxwPlxuICAgICAgICAgIFRoZSBhcHAgd2lsbCBvbmx5IHVzZSB0aGlzIGVtYWlsIGZvciB2ZXJpZnlpbmcgeW91ciBhY2NvdW50IHNlY3VyaXR5LlxuICAgICAgICA8L3A+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8bWF0LWxhYmVsPlxuICAgICAgICAgICAgRW1haWxcbiAgICAgICAgICA8L21hdC1sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImVtYWlsXCJcbiAgICAgICAgICAgIFtmc0Zvcm1FbWFpbF09XCJ0cnVlXCJcbiAgICAgICAgICAgIG5hbWU9XCJlbWFpbFwiPlxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgbmFtZT1cImRlZmF1bHRcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZGVmYXVsdFwiXG4gICAgICAgICAgW2Rpc2FibGVSaXBwbGVdPVwidHJ1ZVwiPlxuICAgICAgICAgIE1ha2UgdGhpcyB0aGUgZGVmYXVsdCB2ZXJpZmljYXRpb24gbWV0aG9kXG4gICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgfVxuICAgIDwvbWF0LWRpYWxvZy1jb250ZW50PlxuICAgIDxtYXQtZGlhbG9nLWFjdGlvbnM+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiPlxuICAgICAgICBOZXh0XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIDxidXR0b25cbiAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwidW5kZWZpbmVkXCI+XG4gICAgICAgIENhbmNlbFxuICAgICAgPC9idXR0b24+XG4gICAgPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4gIDwvZnMtZGlhbG9nPlxuPC9mb3JtPiJdfQ==