@senior-gestao-pessoas/payroll-core 9.4.0-26524b61-00e1-4b7b-8ccd-373f06bffb80 → 9.4.0-7edf395b-4614-46bb-b8d5-62ac5f1423d5

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 (31) hide show
  1. package/bundles/senior-gestao-pessoas-payroll-core.umd.js +111 -48
  2. package/bundles/senior-gestao-pessoas-payroll-core.umd.js.map +1 -1
  3. package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js +1 -1
  4. package/bundles/senior-gestao-pessoas-payroll-core.umd.min.js.map +1 -1
  5. package/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.d.ts +4 -1
  6. package/components/historical-pix-account/historical-pix-account.component.d.ts +4 -4
  7. package/components/historical-pix-account-list/historical-pix-account-list.component.d.ts +10 -2
  8. package/components/shared/index.d.ts +1 -0
  9. package/components/shared/shared-state.service.d.ts +11 -0
  10. package/esm2015/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +9 -5
  11. package/esm2015/components/historical-pix-account/historical-pix-account.component.js +12 -15
  12. package/esm2015/components/historical-pix-account-list/historical-pix-account-list.component.js +58 -33
  13. package/esm2015/components/shared/index.js +2 -0
  14. package/esm2015/components/shared/shared-state.service.js +31 -0
  15. package/esm2015/public_api.js +2 -1
  16. package/esm5/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +9 -5
  17. package/esm5/components/historical-pix-account/historical-pix-account.component.js +13 -15
  18. package/esm5/components/historical-pix-account-list/historical-pix-account-list.component.js +67 -33
  19. package/esm5/components/shared/index.js +2 -0
  20. package/esm5/components/shared/shared-state.service.js +32 -0
  21. package/esm5/public_api.js +2 -1
  22. package/fesm2015/senior-gestao-pessoas-payroll-core.js +100 -49
  23. package/fesm2015/senior-gestao-pessoas-payroll-core.js.map +1 -1
  24. package/fesm5/senior-gestao-pessoas-payroll-core.js +111 -49
  25. package/fesm5/senior-gestao-pessoas-payroll-core.js.map +1 -1
  26. package/locale/en-US.json +1 -1
  27. package/locale/es-ES.json +1 -1
  28. package/locale/pt-BR.json +1 -1
  29. package/package.json +1 -1
  30. package/public_api.d.ts +1 -0
  31. package/senior-gestao-pessoas-payroll-core.metadata.json +1 -1
@@ -1,9 +1,11 @@
1
1
  import { OnInit, EventEmitter, ChangeDetectorRef, OnDestroy, AfterViewInit } from "@angular/core";
2
2
  import { FormGroup, FormBuilder } from "@angular/forms";
3
3
  import { NumberLocaleOptions, CustomFieldsComponent } from "@seniorsistemas/angular-components";
4
+ import { SharedStateService } from "../../shared/shared-state.service";
4
5
  export declare class HistoricalPixAccountFormComponent implements OnInit, OnDestroy, AfterViewInit {
5
6
  private formBuilder;
6
7
  private cd;
8
+ private sharedStateService;
7
9
  customFields: CustomFieldsComponent;
8
10
  currency: NumberLocaleOptions;
9
11
  customEntity: string;
@@ -26,7 +28,8 @@ export declare class HistoricalPixAccountFormComponent implements OnInit, OnDest
26
28
  isView: boolean;
27
29
  pixKeyType: string;
28
30
  isShowPixKeyFieldValidatorMessage: boolean;
29
- constructor(formBuilder: FormBuilder, cd: ChangeDetectorRef);
31
+ hideFields: import("rxjs").Observable<boolean>;
32
+ constructor(formBuilder: FormBuilder, cd: ChangeDetectorRef, sharedStateService: SharedStateService);
30
33
  ngOnInit(): void;
31
34
  ngAfterViewInit(): void;
32
35
  ngOnDestroy(): void;
@@ -2,12 +2,12 @@ import { OnInit, ChangeDetectorRef, AfterViewInit, OnDestroy, EventEmitter, OnCh
2
2
  import { FormGroup, FormBuilder } from "@angular/forms";
3
3
  import { TranslateService } from "@ngx-translate/core";
4
4
  import { CustomFieldsComponent, NumberLocaleOptions } from "@seniorsistemas/angular-components";
5
- import { MessageService } from "primeng/api";
5
+ import { SharedStateService } from "../shared/shared-state.service";
6
6
  export declare class HistoricalPixAccountComponent implements OnInit, OnDestroy, AfterViewInit, OnChanges {
7
7
  private translateService;
8
8
  private cd;
9
9
  private formBuilder;
10
- private messageService;
10
+ private sharedStateService;
11
11
  customFields: CustomFieldsComponent;
12
12
  formGroup: FormGroup;
13
13
  fieldFormGroup: string;
@@ -43,6 +43,7 @@ export declare class HistoricalPixAccountComponent implements OnInit, OnDestroy,
43
43
  msgTotalLimitByPercentage: string;
44
44
  listData: object[];
45
45
  listDataNoPage: object[];
46
+ showButtonView: boolean;
46
47
  cols: {
47
48
  label: any;
48
49
  field: string;
@@ -52,7 +53,7 @@ export declare class HistoricalPixAccountComponent implements OnInit, OnDestroy,
52
53
  label: any;
53
54
  command: () => void;
54
55
  }[];
55
- constructor(translateService: TranslateService, cd: ChangeDetectorRef, formBuilder: FormBuilder, messageService: MessageService);
56
+ constructor(translateService: TranslateService, cd: ChangeDetectorRef, formBuilder: FormBuilder, sharedStateService: SharedStateService);
56
57
  ngOnInit(): void;
57
58
  ngOnChanges(changes: SimpleChanges): void;
58
59
  private createFormGroup;
@@ -64,7 +65,6 @@ export declare class HistoricalPixAccountComponent implements OnInit, OnDestroy,
64
65
  */
65
66
  private refreshCssInIE11;
66
67
  add(): void;
67
- private isNotAllowMessage;
68
68
  private deleteAnnuityItem;
69
69
  getHistoricalPixAccountList(): object[];
70
70
  addItemInList($event: any): void;
@@ -3,7 +3,9 @@ import { ActivatedRoute, Router } from "@angular/router";
3
3
  import { TranslateService } from "@ngx-translate/core";
4
4
  import { CustomFieldsComponent } from "@seniorsistemas/angular-components";
5
5
  import { ConfirmationService, MessageService } from "primeng/api";
6
+ import { Subject } from "rxjs";
6
7
  import { HistoricalPixAccountListService } from "./historical-pix-account-list.service";
8
+ import { SharedStateService } from "../shared/shared-state.service";
7
9
  export declare class HistoricalPixAccountListComponent implements OnInit, OnDestroy, AfterViewInit {
8
10
  private confirmationService;
9
11
  private translateService;
@@ -12,6 +14,7 @@ export declare class HistoricalPixAccountListComponent implements OnInit, OnDest
12
14
  private router;
13
15
  private messageService;
14
16
  private historicalPixAccountListService;
17
+ private sharedStateService;
15
18
  customFields: CustomFieldsComponent;
16
19
  permission: object;
17
20
  employeeId: string;
@@ -20,10 +23,13 @@ export declare class HistoricalPixAccountListComponent implements OnInit, OnDest
20
23
  endPoint: string;
21
24
  keyPayload: string;
22
25
  withSidebar: boolean;
26
+ hideField: boolean;
23
27
  isOnlyView: EventEmitter<any>;
24
28
  enableView: EventEmitter<any>;
29
+ isEditJudicialDependentPix: EventEmitter<any>;
25
30
  private lastRecord;
26
31
  private ngUnsubscribe;
32
+ private _subscription;
27
33
  initParameters: any;
28
34
  loading: boolean;
29
35
  parameters: any;
@@ -31,12 +37,11 @@ export declare class HistoricalPixAccountListComponent implements OnInit, OnDest
31
37
  label: any;
32
38
  field: string;
33
39
  }[];
34
- constructor(confirmationService: ConfirmationService, translateService: TranslateService, activatedRoute: ActivatedRoute, cd: ChangeDetectorRef, router: Router, messageService: MessageService, historicalPixAccountListService: HistoricalPixAccountListService);
40
+ constructor(confirmationService: ConfirmationService, translateService: TranslateService, activatedRoute: ActivatedRoute, cd: ChangeDetectorRef, router: Router, messageService: MessageService, historicalPixAccountListService: HistoricalPixAccountListService, sharedStateService: SharedStateService);
35
41
  ngOnInit(): void;
36
42
  ngOnDestroy(): void;
37
43
  ngAfterViewInit(): void;
38
44
  onLazyLoad(payload: any): void;
39
- private formatPixKeyByType;
40
45
  getMenuActions(rowData: any): {
41
46
  label: any;
42
47
  command: () => void;
@@ -45,7 +50,10 @@ export declare class HistoricalPixAccountListComponent implements OnInit, OnDest
45
50
  add(): void;
46
51
  private isNotAllowMessage;
47
52
  private onGridLoad;
53
+ private unsubscribe;
54
+ hideFieldsOnAdd$: Subject<boolean>;
48
55
  private readonly isAllowToAddHistorical;
56
+ private readonly isAllowToEditHistorical;
49
57
  private readonly isAllowToDeleteHistorical;
50
58
  private readonly isAllowToViewHistorical;
51
59
  readonly scopedActions: any;
@@ -0,0 +1 @@
1
+ export * from './shared-state.service';
@@ -0,0 +1,11 @@
1
+ export declare class SharedStateService {
2
+ private hideFieldSubject;
3
+ hideField$: import("rxjs").Observable<boolean>;
4
+ private showButtonSubject;
5
+ showButton$: import("rxjs").Observable<boolean>;
6
+ private saveButtonSubject;
7
+ saveButton$: import("rxjs").Observable<boolean>;
8
+ setHideField(value: boolean): void;
9
+ setShowButton(value: boolean): void;
10
+ setSaveButton(value: boolean): void;
11
+ }
@@ -6,10 +6,12 @@ import { Subject } from "rxjs";
6
6
  import { verifyValidationsForm, configEnabledFields, mountCustomToShow, } from "../../utils/helpers";
7
7
  import { GenericValidator } from "../../utils/generic-validators";
8
8
  import { FormatUtilsService } from "../../utils/format-utils/format-utils.service";
9
+ import { SharedStateService } from "../../shared/shared-state.service";
9
10
  let HistoricalPixAccountFormComponent = class HistoricalPixAccountFormComponent {
10
- constructor(formBuilder, cd) {
11
+ constructor(formBuilder, cd, sharedStateService) {
11
12
  this.formBuilder = formBuilder;
12
13
  this.cd = cd;
14
+ this.sharedStateService = sharedStateService;
13
15
  this.withSideBar = true;
14
16
  this.isEditMode = false;
15
17
  this.paramsForm = new FormGroup({});
@@ -23,6 +25,7 @@ let HistoricalPixAccountFormComponent = class HistoricalPixAccountFormComponent
23
25
  this.visibleBtnSave = true;
24
26
  this.isView = false;
25
27
  this.isShowPixKeyFieldValidatorMessage = false;
28
+ this.hideFields = this.sharedStateService.hideField$;
26
29
  this.createFormGroup();
27
30
  this.registerSubjects();
28
31
  }
@@ -306,7 +309,8 @@ let HistoricalPixAccountFormComponent = class HistoricalPixAccountFormComponent
306
309
  };
307
310
  HistoricalPixAccountFormComponent.ctorParameters = () => [
308
311
  { type: FormBuilder },
309
- { type: ChangeDetectorRef }
312
+ { type: ChangeDetectorRef },
313
+ { type: SharedStateService }
310
314
  ];
311
315
  tslib_1.__decorate([
312
316
  ViewChild(CustomFieldsComponent, { static: true })
@@ -353,9 +357,9 @@ tslib_1.__decorate([
353
357
  HistoricalPixAccountFormComponent = tslib_1.__decorate([
354
358
  Component({
355
359
  selector: "pix-account",
356
- template: "<div id=\"main\">\n <form [formGroup]=\"pixAccountFormGroup\" autocomplete=\"off\">\n <div class=\"ui-fluid\">\n <div class=\"ui-g\">\n <!-- Tipo de chave -->\n <div class=\"ui-md-6 ui-sm-12 required\">\n <label>{{'hcm.payroll.employees_addition_pix_key_type'|translate}}</label>\n <input-rest-auto-complete-enum [dropdown]=\"true\" server=\"payroll\"\n enumeration=\"PixKeyType\"\n placeholder=\"{{'hcm.payroll.select' | translate}}\"\n name=\"pixKeyType\" [form]=\"pixAccountFormGroup\"\n (onSelect)=\"onChangePixKeyType($event)\"\n (onClear)=\"onClearPixKeyType()\"\n id=\"ta-pixKeyType\"></input-rest-auto-complete-enum>\n <s-control-errors [control]=\"pixAccountFormGroup.get('pixKeyType')\"\n [errorMessages]=\"{\n required: 'hcm.payroll.required' | translate,\n pixKeyTypeBankAccountDuplicate: 'hcm.payroll.historical_pix_key_type_bank_account_duplicate' | translate\n }\">\n </s-control-errors>\n </div>\n <!--Chave Pix-->\n <div class=\"ui-md-6 ui-sm-12\" [ngClass]=\"{'required': pixKeyType !== 'BANK_ACCOUNT'}\">\n <label>{{'hcm.payroll.employees_addition_pix_key' | translate}}</label>\n <ng-container [ngSwitch]=\"pixKeyType\">\n <input *ngSwitchCase=\"'TELEPHONE'\" only-number\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n (keyup)=\"phoneMask($event)\" maxlength=\"15\"\n placeholder=\"(__) ____-____\">\n <p-inputMask *ngSwitchCase=\"'CPF'\"\n id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n placeholder=\"___.___.___-__\"\n mask=\"999.999.999-99\" [unmask]=\"true\"></p-inputMask>\n <p-inputMask *ngSwitchCase=\"'CNPJ'\"\n id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n placeholder=\"__.___.___/____-__\"\n mask=\"99.999.999/9999-99\" [unmask]=\"true\"></p-inputMask>\n <input *ngSwitchCase=\"'EMAIL'\"\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n placeholder=\"{{'hcm.payroll.employees_addition_email'|translate}}\"/>\n <input *ngSwitchCase=\"'BANK_ACCOUNT'\" disabled\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"/>\n <input *ngSwitchDefault\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\" maxlength=\"100\" />\n </ng-container>\n <s-control-errors *ngIf=\"isShowPixKeyFieldValidatorMessage\" id=\"er-pix-key\"\n [control]=\"pixAccountFormGroup.get('pixKey')\"\n [errorMessages]=\"{\n required: 'hcm.payroll.required' | translate,\n invalidPhoneNumber: 'hcm.payroll.employees_addition_invalid_phone_number' | translate: { value: pixAccountFormGroup.get('pixKey').value },\n invalidEmail: 'hcm.payroll.employees_addition_email_invalid' | translate,\n cpfNotValid: 'hcm.payroll.employees_addition_cpf_error' | translate,\n cnpjNotValid: 'hcm.payroll.employees_addition_cnpj_error' | translate\n }\">\n </s-control-errors>\n </div>\n <!--Percentual-->\n <div class=\"ui-md-6 ui-sm-12 required\">\n <label id=\"lb-percentage\"\n for=\"ff-percentage\">{{ 'hcm.payroll.historical_bank_account_label_percentage' | translate }}</label>\n <div class=\"ui-inputgroup\">\n <span class=\"ui-inputgroup-addon\">%</span>\n <input pInputText id=\"ff-percentage\" name=\"percentage\"\n formControlName=\"percentage\"\n currencyMask\n [options]=\"optionsPercentage\"\n [placeholder]=\"percentagePlaceholder\"/>\n </div>\n <s-control-errors [control]=\"pixAccountFormGroup.get('percentage')\"\n [errorMessages]=\"{\n required: 'hcm.payroll.required' | translate,\n maxlength: 'hcm.payroll.error_max_length' | translate: { value: '6' },\n max: 'hcm.payroll.error_max_value_number' | translate: { value: maxValuePercentage },\n min: 'hcm.payroll.error_min_value_number' | translate: { value: '0,01' }\n }\">\n </s-control-errors>\n </div>\n <div class=\"ui-g-12\">\n <p-fieldset\n legend=\"{{ 'hcm.payroll.custom_fields' | translate }}\"\n [attr.data-hidden]=\"!customFields || !customFields.fields.length\"\n >\n <s-custom-fields\n domain=\"hcm\"\n service=\"{{customService}}\"\n entity=\"{{customEntity}}\"\n formControlName=\"customFields\"\n [invalidErrorLabel]=\"'hcm.payroll.employees_invalid_field' | translate\"\n >\n </s-custom-fields>\n </p-fieldset>\n </div>\n </div>\n </div>\n </form>\n\n <div [ngClass]=\"withSideBar ? 'footer' : 'footer-s-border'\">\n <div class=\"form-group\">\n <s-button id=\"btn-save\" label=\"{{ labelBtnAdd | translate}}\" priority=\"primary\"\n (onClick)=\"addItem()\" *ngIf=\"visibleBtnSave && !this.isView\"></s-button>\n <s-button *ngIf=\"withSideBar\" id=\"btn-close\" label=\"{{'hcm.payroll.cancel'|translate}}\" priority=\"secondary\"\n priority=\"link\" (onClick)=\"close()\"></s-button>\n </div>\n </div>\n</div>\n",
357
- styles: [".refresh{width:100%!important}#table-annuity .col-default-s{width:10%}#table-annuity .col-default-m{width:12%}#table-annuity .col-default-l{width:16%}#table-annuity .col-action{width:10%}#table-annuity .icon-warning{text-align:center!important;color:#ff6d00c7!important}@media screen and (max-width:612px){#table-annuity .col-default-1,#table-annuity .col-default-2{width:16%}#table-annuity .col-default-3{width:26%}#table-annuity .col-icon{width:10%}#table-annuity .col-action{width:27%}}#main{display:-webkit-box;display:flex;height:100%;width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}#main form{height:100%}#main .footer{border-top:1px solid #ccc;padding-top:15px;margin-top:15px;flex-shrink:0;margin-bottom:-18px}#main .footer-s-border{padding-left:7px;flex-shrink:0;margin-bottom:-18px}"]
360
+ template: "<div id=\"main\">\n <form *ngIf=\"!(hideFields | async)\" [formGroup]=\"pixAccountFormGroup\" autocomplete=\"off\">\n <div class=\"ui-fluid\">\n <div class=\"ui-g\">\n <!-- Tipo de chave -->\n <div class=\"ui-md-6 ui-sm-12 required\">\n <label>{{'hcm.payroll.employees_addition_pix_key_type'|translate}}</label>\n <input-rest-auto-complete-enum [dropdown]=\"true\" server=\"payroll\"\n enumeration=\"PixKeyType\"\n placeholder=\"{{'hcm.payroll.select' | translate}}\"\n name=\"pixKeyType\" [form]=\"pixAccountFormGroup\"\n (onSelect)=\"onChangePixKeyType($event)\"\n (onClear)=\"onClearPixKeyType()\"\n id=\"ta-pixKeyType\"></input-rest-auto-complete-enum>\n <s-control-errors [control]=\"pixAccountFormGroup.get('pixKeyType')\"\n [errorMessages]=\"{\n required: 'hcm.payroll.required' | translate,\n pixKeyTypeBankAccountDuplicate: 'hcm.payroll.historical_pix_key_type_bank_account_duplicate' | translate\n }\">\n </s-control-errors>\n </div>\n <!--Chave Pix-->\n <div class=\"ui-md-6 ui-sm-12\" [ngClass]=\"{'required': pixKeyType !== 'BANK_ACCOUNT'}\">\n <label>{{'hcm.payroll.employees_addition_pix_key' | translate}}</label>\n <ng-container [ngSwitch]=\"pixKeyType\">\n <input *ngSwitchCase=\"'TELEPHONE'\" only-number\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n (keyup)=\"phoneMask($event)\" maxlength=\"15\"\n placeholder=\"(__) ____-____\">\n <p-inputMask *ngSwitchCase=\"'CPF'\"\n id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n placeholder=\"___.___.___-__\"\n mask=\"999.999.999-99\" [unmask]=\"true\"></p-inputMask>\n <p-inputMask *ngSwitchCase=\"'CNPJ'\"\n id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n placeholder=\"__.___.___/____-__\"\n mask=\"99.999.999/9999-99\" [unmask]=\"true\"></p-inputMask>\n <input *ngSwitchCase=\"'EMAIL'\"\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"\n placeholder=\"{{'hcm.payroll.employees_addition_email'|translate}}\"/>\n <input *ngSwitchCase=\"'BANK_ACCOUNT'\" disabled\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"/>\n <input *ngSwitchDefault\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\" maxlength=\"100\" />\n </ng-container>\n <s-control-errors *ngIf=\"isShowPixKeyFieldValidatorMessage\" id=\"er-pix-key\"\n [control]=\"pixAccountFormGroup.get('pixKey')\"\n [errorMessages]=\"{\n required: 'hcm.payroll.required' | translate,\n invalidPhoneNumber: 'hcm.payroll.employees_addition_invalid_phone_number' | translate: { value: pixAccountFormGroup.get('pixKey').value },\n invalidEmail: 'hcm.payroll.employees_addition_email_invalid' | translate,\n cpfNotValid: 'hcm.payroll.employees_addition_cpf_error' | translate,\n cnpjNotValid: 'hcm.payroll.employees_addition_cnpj_error' | translate\n }\">\n </s-control-errors>\n </div>\n <!--Percentual-->\n <div class=\"ui-md-6 ui-sm-12 required\">\n <label id=\"lb-percentage\"\n for=\"ff-percentage\">{{ 'hcm.payroll.historical_bank_account_label_percentage' | translate }}</label>\n <div class=\"ui-inputgroup\">\n <span class=\"ui-inputgroup-addon\">%</span>\n <input pInputText id=\"ff-percentage\" name=\"percentage\"\n formControlName=\"percentage\"\n currencyMask\n [options]=\"optionsPercentage\"\n [placeholder]=\"percentagePlaceholder\"/>\n </div>\n <s-control-errors [control]=\"pixAccountFormGroup.get('percentage')\"\n [errorMessages]=\"{\n required: 'hcm.payroll.required' | translate,\n maxlength: 'hcm.payroll.error_max_length' | translate: { value: '6' },\n max: 'hcm.payroll.error_max_value_number' | translate: { value: maxValuePercentage },\n min: 'hcm.payroll.error_min_value_number' | translate: { value: '0,01' }\n }\">\n </s-control-errors>\n </div>\n <div class=\"ui-g-12\">\n <p-fieldset\n legend=\"{{ 'hcm.payroll.custom_fields' | translate }}\"\n [attr.data-hidden]=\"!customFields || !customFields.fields.length\"\n >\n <s-custom-fields\n domain=\"hcm\"\n service=\"{{customService}}\"\n entity=\"{{customEntity}}\"\n formControlName=\"customFields\"\n [invalidErrorLabel]=\"'hcm.payroll.employees_invalid_field' | translate\"\n >\n </s-custom-fields>\n </p-fieldset>\n </div>\n </div>\n </div>\n </form>\n\n <div [ngClass]=\"withSideBar ? 'footer' : 'footer-s-border'\">\n <div class=\"form-group\">\n <s-button id=\"btn-save\" label=\"{{ labelBtnAdd | translate}}\" priority=\"primary\"\n (onClick)=\"addItem()\" *ngIf=\"visibleBtnSave && !this.isView\"></s-button>\n <s-button *ngIf=\"withSideBar\" id=\"btn-close\" label=\"{{'hcm.payroll.cancel'|translate}}\" priority=\"secondary\"\n priority=\"link\" (onClick)=\"close()\"></s-button>\n </div>\n </div>\n</div>\n",
361
+ styles: [".refresh{width:100%!important}#table-annuity .col-default-s{width:10%}#table-annuity .col-default-m{width:12%}#table-annuity .col-default-l{width:16%}#table-annuity .col-action{width:10%}#table-annuity .icon-warning{text-align:center!important;color:#ff6d00c7!important}@media screen and (max-width:612px){#table-annuity .col-default-1,#table-annuity .col-default-2{width:16%}#table-annuity .col-default-3{width:26%}#table-annuity .col-icon{width:10%}#table-annuity .col-action{width:27%}}#main{display:-webkit-box;display:flex;height:100%;width:100%;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column}#main form{height:100%}#main .footer{border-top:1px solid #ccc;padding-top:15px;margin-top:15px;flex-shrink:0;margin-bottom:-18px}#main .footer-s-border{padding-left:7px;flex-shrink:0;margin-bottom:-18px}.editable-input{width:100%;border:1px solid #ccc;padding:8px;border-radius:4px;font-size:14px;box-sizing:border-box;height:36px}"]
358
362
  })
359
363
  ], HistoricalPixAccountFormComponent);
360
364
  export { HistoricalPixAccountFormComponent };
361
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yaWNhbC1waXgtYWNjb3VudC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLXBlc3NvYXMvcGF5cm9sbC1jb3JlLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9oaXN0b3JpY2FsLXBpeC1hY2NvdW50L2hpc3RvcmljYWwtcGl4LWFjY291bnQtZm9ybS9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGFBQWEsRUFDYixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRyxPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUNuQixpQkFBaUIsR0FDcEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQU9uRixJQUFhLGlDQUFpQyxHQUE5QyxNQUFhLGlDQUFpQztJQXVDMUMsWUFDWSxXQUF3QixFQUN4QixFQUFxQjtRQURyQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQTlCMUIsZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFFNUIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUU1QixlQUFV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QyxNQUFNLEVBQUU7d0VBQ2lFO0FBRTFFO0lBREMsTUFBTSxFQUFFOytFQUNnRTtBQTRFekU7SUFEQyxLQUFLLEVBQUU7Z0VBR1A7QUFRRDtJQURDLEtBQUssRUFBRTsyRUFxQlA7QUFpRkQ7SUFEQyxLQUFLLEVBQUU7MEVBT1A7QUE2RkQ7SUFEQyxLQUFLLEVBQUU7bUVBS1A7QUF4VFEsaUNBQWlDO0lBTDdDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxhQUFhO1FBQ3ZCLG81TkFBMkQ7O0tBRTlELENBQUM7R0FDVyxpQ0FBaUMsQ0ErVzdDO1NBL1dZLGlDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIE9uRGVzdHJveSxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMsIFZhbGlkYXRvckZuLCBBYnN0cmFjdENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE51bWJlckxvY2FsZU9wdGlvbnMsIEN1c3RvbUZpZWxkc0NvbXBvbmVudCB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7XG4gICAgdmVyaWZ5VmFsaWRhdGlvbnNGb3JtLFxuICAgIGNvbmZpZ0VuYWJsZWRGaWVsZHMsXG4gICAgbW91bnRDdXN0b21Ub1Nob3csXG59IGZyb20gXCIuLi8uLi91dGlscy9oZWxwZXJzXCI7XG5pbXBvcnQgeyBHZW5lcmljVmFsaWRhdG9yIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2dlbmVyaWMtdmFsaWRhdG9yc1wiO1xuaW1wb3J0IHsgRm9ybWF0VXRpbHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2Zvcm1hdC11dGlscy9mb3JtYXQtdXRpbHMuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJwaXgtYWNjb3VudFwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vaGlzdG9yaWNhbC1waXgtYWNjb3VudC1mb3JtLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuLi9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIEhpc3RvcmljYWxQaXhBY2NvdW50Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKEN1c3RvbUZpZWxkc0NvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBjdXN0b21GaWVsZHM6IEN1c3RvbUZpZWxkc0NvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1cnJlbmN5OiBOdW1iZXJMb2NhbGVPcHRpb25zO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1c3RvbUVudGl0eTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1c3RvbVNlcnZpY2U6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB3aXRoU2lkZUJhcjogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNFZGl0TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBhcmFtc0Zvcm06IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRlZmF1bHRDcGZOdW1iZXI6IHN0cmluZyA9IG51bGw7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBwaXhBY2NvdW50SXRlbVRvTGlzdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIHByaXZhdGUgX3Zpc2libGU6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcml2YXRlIGVtcGxveWVlSWQ6IHN0cmluZztcbiAgICBwcml2YXRlIHBpeEFjY291bnRMaXN0OiBvYmplY3RbXTtcbiAgICBwcml2YXRlIGluaXRpYWxWYWxpZGF0b3JPZlBlcmNlbnRhZ2U6IFZhbGlkYXRvckZuW10gPSBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4oMC4wMSldO1xuXG5cbiAgICBwdWJsaWMgbGFiZWxCdG5BZGQ6IHN0cmluZyA9IFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX2FkZFwiO1xuICAgIHB1YmxpYyBwaXhBY2NvdW50Rm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gICAgcHVibGljIG1heFZhbHVlUGVyY2VudGFnZTogbnVtYmVyID0gMTAwLjAwO1xuICAgIHB1YmxpYyB2aXNpYmxlQnRuU2F2ZTogYm9vbGVhbiA9IHRydWU7XG4gICAgcHVibGljIGlzVmlldzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBwaXhLZXlUeXBlOiBzdHJpbmc7XG4gICAgcHVibGljIGlzU2hvd1BpeEtleUZpZWxkVmFsaWRhdG9yTWVzc2FnZSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICApIHtcbiAgICAgICAgdGhpcy5jcmVhdGVGb3JtR3JvdXAoKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclN1YmplY3RzKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZ2lzdGVyU3ViamVjdHMoKTogdm9pZCB7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVGb3JtR3JvdXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgaWQ6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgIGluZGV4OiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCksXG4gICAgICAgICAgICBlbXBsb3llZTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKHsgdmFsdWU6IHsgdGFibGVJZDogbnVsbCB9LCBkaXNhYmxlZDogdHJ1ZSB9KSxcbiAgICAgICAgICAgIGRhdGVDaGFuZ2U6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgIHBpeEtleVR5cGU6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgICAgIHBpeEtleTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwpLFxuICAgICAgICAgICAgcGVyY2VudGFnZTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgLi4udGhpcy5pbml0aWFsVmFsaWRhdG9yT2ZQZXJjZW50YWdlLFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KHRoaXMubWF4VmFsdWVQZXJjZW50YWdlKSxcbiAgICAgICAgICAgIF0pKSxcbiAgICAgICAgICAgIGV4dGVybmFsSWQ6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgIGN1c3RvbUZpZWxkczogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DaGFuZ2VQaXhLZXlUeXBlKGl0ZW06IGFueSkge1xuICAgICAgICBpZiAoaXRlbS5rZXkpIHtcbiAgICAgICAgICAgIHRoaXMucGl4S2V5VHlwZSA9IGl0ZW0ua2V5O1xuICAgICAgICAgICAgdGhpcy5pc1Nob3dQaXhLZXlGaWVsZFZhbGlkYXRvck1lc3NhZ2UgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVwiKS5yZXNldCgpO1xuICAgICAgICAgICAgdGhpcy5zZXRQaXhLZXlWYWxpZGF0b3JzKHRydWUpO1xuXG4gICAgICAgICAgICBpZihpdGVtLmtleSA9PT0gXCJDUEZcIikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdENwZlBpeEtleSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xlYXJQaXhLZXlUeXBlKCkge1xuICAgICAgICB0aGlzLmlzU2hvd1BpeEtleUZpZWxkVmFsaWRhdG9yTWVzc2FnZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl92aXNpYmxlID0gdmFsdWU7XG4gICAgICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KHRoaXMudmlzaWJsZSk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGlzRWRpdEFuZFZpZXdWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICAgIHRoaXMudmlzaWJsZUJ0blNhdmUgPSB0cnVlO1xuICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuY3VycmVudEl0ZW0gJiYgT2JqZWN0LmtleXModmFsdWUuY3VycmVudEl0ZW0pLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLnBhdGNoVmFsdWUodGhpcy5jb252ZXJ0RFRPVG9TaG93V2l0aEN1c3RvbUZpZWxkcyh7Li4udmFsdWUuY3VycmVudEl0ZW19KSk7XG4gICAgICAgICAgICB0aGlzLmxhYmVsQnRuQWRkID0gXCJoY20ucGF5cm9sbC5lbXBsb3llZXNfdXBkYXRlXCI7XG4gICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnNBY2NvcmRpbmdMaXN0KHZhbHVlLmxpc3REYXRhLCB2YWx1ZS5jdXJyZW50SXRlbVtcImluZGV4XCJdLCB2YWx1ZSAmJiB2YWx1ZVtcImlzRWRpdE1vZGVcIl0pO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzVmlldykge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnRW5hYmxlRmllbGRzKHZhbHVlICYmIHZhbHVlW1wiaXNFZGl0TW9kZVwiXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmKHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlUeXBlXCIpLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGl4S2V5VHlwZSA9IHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlUeXBlXCIpLnZhbHVlLmtleTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdFBpeEtleVRlbGVwaG9uZU51bWJlcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGFiZWxCdG5BZGQgPSBcImhjbS5wYXlyb2xsLmVtcGxveWVlc19hZGRcIjtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXRQaXhLZXlUZWxlcGhvbmVOdW1iZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnBpeEtleVR5cGUgPT09IFwiVEVMRVBIT05FXCIpIHtcbiAgICAgICAgICAgIHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlcIikuc2V0VmFsdWUoRm9ybWF0VXRpbHNTZXJ2aWNlLmdldEZvcm1hdHRlZFRlbGVwaG9uZU51bWJlcih0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpLnZhbHVlKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY29udmVydERUT1RvU2hvd1dpdGhDdXN0b21GaWVsZHMoZGF0YTogb2JqZWN0KTogb2JqZWN0IHtcbiAgICAgICAgY29uc3Qgb2JqOiBhbnkgPSB7Li4uIGRhdGF9O1xuICAgICAgICBvYmpbXCJjdXN0b21GaWVsZHNcIl0gPSBtb3VudEN1c3RvbVRvU2hvdyhvYmpbXCJjdXN0b21GaWVsZHNcIl0pO1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlnRW5hYmxlRmllbGRzKGlzRWRpdE1vZGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy52aXNpYmxlQnRuU2F2ZSA9IGlzRWRpdE1vZGU7XG5cbiAgICAgICAgaWYodGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVR5cGVcIikudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucGl4S2V5VHlwZSA9IHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlUeXBlXCIpLnZhbHVlLmtleTtcbiAgICAgICAgICAgIHRoaXMuc2V0UGl4S2V5VmFsaWRhdG9ycyhpc0VkaXRNb2RlKTtcblxuICAgICAgICAgICAgdGhpcy5mb3JtYXRQaXhLZXlUZWxlcGhvbmVOdW1iZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZ0VuYWJsZWRGaWVsZHModGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLCBpc0VkaXRNb2RlLCBbXG4gICAgICAgICAgICBcInBpeEtleVR5cGVcIixcbiAgICAgICAgICAgIFwicGl4S2V5XCIsXG4gICAgICAgICAgICBcInBlcmNlbnRhZ2VcIixcbiAgICAgICAgICAgIFwiY3VzdG9tRmllbGRzXCIsXG4gICAgICAgIF0sIFtdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRJdGVtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB2ZXJpZnlWYWxpZGF0aW9uc0Zvcm0uY2FsbCh0aGlzLnBpeEFjY291bnRGb3JtR3JvdXApO1xuXG4gICAgICAgIGlmICh0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAudmFsaWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmVtcGxveWVlSWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwiZW1wbG95ZWVcIikuc2V0VmFsdWUoe1xuICAgICAgICAgICAgICAgICAgICB0YWJsZUlkOiB0aGlzLmVtcGxveWVlSWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiXCIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBpeEFjY291bnRJdGVtVG9MaXN0LmVtaXQodGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldFJhd1ZhbHVlKCkpO1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0Rm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLnJlc2V0KCk7XG4gICAgICAgIHRoaXMubGFiZWxCdG5BZGQgPSBcImhjbS5wYXlyb2xsLmVtcGxveWVlc19hZGRcIjtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tRmllbGRzICYmIHRoaXMuY3VzdG9tRmllbGRzLmZvcm1Hcm91cCkgdGhpcy5jdXN0b21GaWVsZHMuZm9ybUdyb3VwLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwZXJjZW50YWdlUGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAwJHsgdGhpcy5jdXJyZW5jeSAmJiB0aGlzLmN1cnJlbmN5LmRlY2ltYWxTZXBhcmF0b3IgfTAwYDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9wdGlvbnNQZXJjZW50YWdlKCk6IG9iamVjdCB7XG4gICAgICAgIHJldHVybiB7IC4uLnRoaXMuZ2V0T3B0aW9ucygpLCBwcmVjaXNpb246IDIgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE9wdGlvbnMoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZWZpeDogXCJcIixcbiAgICAgICAgICAgIHRob3VzYW5kczogdGhpcy5jdXJyZW5jeS50aG91c2FuZHNTZXBhcmF0b3IsXG4gICAgICAgICAgICBkZWNpbWFsOiB0aGlzLmN1cnJlbmN5LmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTyBJbnB1dCBxdWUgcmVjZWJlIGEgbGlzdGEgZG8gY29tcG9uZW50IHBhaSBlIGNoYW1hIG8gbcOpdG9kbyBkZSB2YWxpZGHDp8OjbyBwYXNzYW5kbyBhIGxpc3RhIHJlY2ViaWRhLlxuICAgICAqIEBwYXJhbSBwaXhBY2NvdW50TGlzdFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBnZXRMaXN0UGl4QWNjb3VudChwaXhBY2NvdW50TGlzdDogb2JqZWN0W10pIHtcbiAgICAgICAgaWYgKHBpeEFjY291bnRMaXN0KSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnNBY2NvcmRpbmdMaXN0KHBpeEFjY291bnRMaXN0LCBudWxsLCBmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjZWJlIGEgbGlzdGEgZGUgcmVnaXN0cm9zIGrDoSBpbnNlcmlkb3MgbmEgdGFiZWxhIGFkaWNpb25hIGVtIHVtYSB2YXJpw6F2ZWwgb3MgdmFsb3JlcyBxdWUgc2Vyw6NvIHVzYWRvcyBwYXJhXG4gICAgICogYSB2YWxpZGHDp8OjbyBkb3MgY2FtcG9zIFwicGVyY2VudGFnZVwiIGUgXCJwaXhBY2NvdW50XCIuXG4gICAgICogUXVhbmRvIHRlbSBpbmRleCBzaWduaWZpY2EgcXVlIGVzdMOhIGVtIHVtYSBlZGnDp8Ojbywgb3MgdmFsb3JlcyBuYSBwb3Npw6fDo28gZG8gcmVnaXN0cm8gZGEgZWRpw6fDo28gKGluZGV4KSBuw6NvIHNlcsOjbyBhZGljaW9uYWRvc1xuICAgICAqIG5vIGFycmF5IGRlIGNvbXBhcmHDp8OjbyBkb3MgdmFsaWRhdG9ycy5cbiAgICAgKiBAcGFyYW0gcGl4QWNjb3VudExpc3RcbiAgICAgKiBAcGFyYW0gaW5kZXhcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldFZhbGlkYXRvcnNBY2NvcmRpbmdMaXN0KHBpeEFjY291bnRMaXN0OiBvYmplY3RbXSwgaW5kZXg6IG51bWJlciA9IG51bGwsIGlzRWRpdE1vZGU6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgICAgIHRoaXMucGl4QWNjb3VudExpc3QgPSBwaXhBY2NvdW50TGlzdCAmJiBwaXhBY2NvdW50TGlzdC5sZW5ndGggPyBbLi4ucGl4QWNjb3VudExpc3RdIDogW107XG5cbiAgICAgICAgY29uc3QgcGVyY2VudGFnZUluY2x1ZGVkOiBhbnkgPSBbXTtcblxuICAgICAgICBpZiAodGhpcy5waXhBY2NvdW50TGlzdCAmJiB0aGlzLnBpeEFjY291bnRMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50TGlzdC5maWx0ZXIoKGZpZWxkOiBhbnksIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZFtcInBlcmNlbnRhZ2VcIl0gJiYga2V5ICE9IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2VJbmNsdWRlZC5wdXNoKGZpZWxkW1wicGVyY2VudGFnZVwiXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJlZm9yZVNldFBpeEtleVR5cGVWYWxpZGF0b3IoKTtcbiAgICAgICAgdGhpcy5zZXRQaXhLZXlWYWxpZGF0b3JzKGlzRWRpdE1vZGUpO1xuICAgICAgICB0aGlzLnZhbGlkYXRlUGVyY2VudGFnZVZhbGlkKHBlcmNlbnRhZ2VJbmNsdWRlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW50ZXMgZGUgc2V0YXIgbyB2YWxpZGF0b3IgcHJlcGFyYSBhcyB2YXJpw6F2ZWlzIG5lY2Vzc8OhcmlhIHBhcmEgcXVlIHNlamEgZmVpdGEgYSB2YWxpZGHDp8OjbyBkbyBjYW1wby5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0UGl4S2V5VmFsaWRhdG9ycyhpc0VkaXRNb2RlOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGdlbmVyaWNQaXhLZXkgPSB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpO1xuICAgICAgICBpZiAodGhpcy5waXhLZXlUeXBlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMucGl4S2V5VHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJURUxFUEhPTkVcIjpcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY1BpeEtleS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLCBHZW5lcmljVmFsaWRhdG9yLmlzVmFsaWRQaG9uZU51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgXSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiRU1BSUxcIjpcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY1BpeEtleS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLCBHZW5lcmljVmFsaWRhdG9yLmlzVmFsaWRFbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgXSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiQ1BGXCI6XG4gICAgICAgICAgICAgICAgICAgIGdlbmVyaWNQaXhLZXkuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCwgR2VuZXJpY1ZhbGlkYXRvci5pc1ZhbGlkQ3BmLFxuICAgICAgICAgICAgICAgICAgICBdKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJDTlBKXCI6XG4gICAgICAgICAgICAgICAgICAgIGdlbmVyaWNQaXhLZXkuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCwgR2VuZXJpY1ZhbGlkYXRvci5pc1ZhbGlkQ25waixcbiAgICAgICAgICAgICAgICAgICAgXSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiUkFORE9NX0tFWVwiOlxuICAgICAgICAgICAgICAgICAgICBnZW5lcmljUGl4S2V5LnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGdlbmVyaWNQaXhLZXkuc2V0VmFsaWRhdG9ycyhudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmKGlzRWRpdE1vZGUpIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljUGl4S2V5LmVuYWJsZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBnZW5lcmljUGl4S2V5LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXN0ZSBtw6l0b2RvIGNhbGN1bGEgYXMgcGFyY2VudGFnZW5zIHF1ZSBqw6EgZm9yYW0gaW5zZXJpZGFzLCBlIHNldGEgYSBkaWZlcmVuw6dhIHBhcmEgY2hlZ2FyIGVtXG4gICAgICogMTAwJSBuYSB2YWxpZGHDp8OjbyBkbyBjYW1wbyBcInBlcmNlbnRhZ2VcIiBjb21vIHVtIG5vdm8gbWF4VmFsdWU7XG4gICAgICogQHBhcmFtIGxpc3RWYWx1ZVxuICAgICAqL1xuICAgIHByaXZhdGUgdmFsaWRhdGVQZXJjZW50YWdlVmFsaWQobGlzdFZhbHVlOiBudW1iZXJbXSkge1xuICAgICAgICBjb25zdCBwZXJjZW50YWdlID0gdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBlcmNlbnRhZ2VcIik7XG4gICAgICAgIHRoaXMubWF4VmFsdWVQZXJjZW50YWdlID0gbGlzdFZhbHVlXG4gICAgICAgICAgICAucmVkdWNlKChjdXJyZW50VmFsdWUsIHRvdGFsKSA9PiBjdXJyZW50VmFsdWUgLSB0b3RhbCxcbiAgICAgICAgICAgICAgICAxMDAuMDAsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIHBlcmNlbnRhZ2VcbiAgICAgICAgICAgIC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgLi4udGhpcy5pbml0aWFsVmFsaWRhdG9yT2ZQZXJjZW50YWdlLFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KHRoaXMubWF4VmFsdWVQZXJjZW50YWdlKSxcbiAgICAgICAgICAgIF0pKTtcbiAgICAgICAgcGVyY2VudGFnZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGlzVmlld01vZGUoY29uZGl0aW9uOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaXNWaWV3ID0gISEoY29uZGl0aW9uICYmICF0aGlzLndpdGhTaWRlQmFyKTtcbiAgICAgICAgdGhpcy5jb25maWdFbmFibGVGaWVsZHMoIXRoaXMuaXNWaWV3KTtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmlldykgdGhpcy5yZXNldEZvcm0oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGhvbmVNYXNrKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgRm9ybWF0VXRpbHNTZXJ2aWNlLmZvcm1hdFRlbGVwaG9uZUlucHV0RXZlbnQoZXZlbnQpO1xuICAgIH1cblxuICAgIHNldERlZmF1bHRDcGZQaXhLZXkoKSB7XG4gICAgICAgIGlmKHRoaXMuZGVmYXVsdENwZk51bWJlcikge1xuICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVwiKS5zZXRWYWx1ZSh0aGlzLmRlZmF1bHRDcGZOdW1iZXIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc2hlZXREb2N1bWVudCA9IHRoaXMucGFyYW1zRm9ybS5nZXQoXCJzaGVldERvY3VtZW50XCIpO1xuICAgICAgICAgICAgaWYoc2hlZXREb2N1bWVudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNwZiA9IHNoZWV0RG9jdW1lbnQuZ2V0KFwiY3BmTnVtYmVyXCIpLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmKGNwZikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpLnNldFZhbHVlKGNwZik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGJlZm9yZVNldFBpeEtleVR5cGVWYWxpZGF0b3IoKSB7XG4gICAgICAgIGNvbnN0IHBpeEtleVR5cGUgPSB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5VHlwZVwiKTtcblxuICAgICAgICBpZiAodGhpcy5waXhBY2NvdW50TGlzdCAmJiB0aGlzLnBpeEFjY291bnRMaXN0Lmxlbmd0aCAmJiBwaXhLZXlUeXBlKSB7XG4gICAgICAgICAgICBwaXhLZXlUeXBlXG4gICAgICAgICAgICAgICAgLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUR1cGxpY2F0ZVBpeEtleVR5cGVCYW5rQWNjb3VudCh0aGlzLnBpeEFjY291bnRMaXN0KSxcbiAgICAgICAgICAgICAgICBdKSk7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBpeEtleVR5cGUuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVEdXBsaWNhdGVQaXhLZXlUeXBlQmFua0FjY291bnQobGlzdENvbXBhcmU6IG9iamVjdFtdKSB7XG4gICAgICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdG9ycyA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wgJiYgY29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgIGxldCBjb25kaXRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgIGxpc3RDb21wYXJlLmZpbHRlcigoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZFtcInBpeEtleVR5cGVcIl0ua2V5ID09PSAnQkFOS19BQ0NPVU5UJyAmJiB2YWx1ZS5rZXkgPT09IGZpZWxkW1wicGl4S2V5VHlwZVwiXS5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb25kaXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChjb25kaXRpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBwaXhLZXlUeXBlQmFua0FjY291bnREdXBsaWNhdGU6IHRydWUgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
365
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yaWNhbC1waXgtYWNjb3VudC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLXBlc3NvYXMvcGF5cm9sbC1jb3JlLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9oaXN0b3JpY2FsLXBpeC1hY2NvdW50L2hpc3RvcmljYWwtcGl4LWFjY291bnQtZm9ybS9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGFBQWEsRUFDYixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRyxPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUNuQixpQkFBaUIsR0FDcEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUNuRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQU92RSxJQUFhLGlDQUFpQyxHQUE5QyxNQUFhLGlDQUFpQztJQXdDMUMsWUFDWSxXQUF3QixFQUN4QixFQUFxQixFQUNyQixrQkFBc0M7UUFGdEMsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIs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O0FBRTVCO0lBREMsS0FBSyxFQUFFO3dFQUNxQjtBQUU3QjtJQURDLEtBQUssRUFBRTtzRUFDMkI7QUFFbkM7SUFEQyxLQUFLLEVBQUU7cUVBQzJCO0FBRW5DO0lBREMsS0FBSyxFQUFFO3FFQUN5QztBQUVqRDtJQURDLEtBQUssRUFBRTsyRUFDK0I7QUFHdkM7SUFEQyxNQUFNLEVBQUU7d0VBQ2lFO0FBRTFFO0lBREMsTUFBTSxFQUFFOytFQUNnRTtBQThFekU7SUFEQyxLQUFLLEVBQUU7Z0VBR1A7QUFRRDtJQURDLEtBQUssRUFBRTsyRUFxQlA7QUFpRkQ7SUFEQyxLQUFLLEVBQUU7MEVBT1A7QUE2RkQ7SUFEQyxLQUFLLEVBQUU7bUVBS1A7QUExVFEsaUNBQWlDO0lBTDdDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxhQUFhO1FBQ3ZCLHE3TkFBMkQ7O0tBRTlELENBQUM7R0FDVyxpQ0FBaUMsQ0FpWDdDO1NBalhZLGlDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIE9uRGVzdHJveSxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMsIFZhbGlkYXRvckZuLCBBYnN0cmFjdENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE51bWJlckxvY2FsZU9wdGlvbnMsIEN1c3RvbUZpZWxkc0NvbXBvbmVudCB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7XG4gICAgdmVyaWZ5VmFsaWRhdGlvbnNGb3JtLFxuICAgIGNvbmZpZ0VuYWJsZWRGaWVsZHMsXG4gICAgbW91bnRDdXN0b21Ub1Nob3csXG59IGZyb20gXCIuLi8uLi91dGlscy9oZWxwZXJzXCI7XG5pbXBvcnQgeyBHZW5lcmljVmFsaWRhdG9yIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2dlbmVyaWMtdmFsaWRhdG9yc1wiO1xuaW1wb3J0IHsgRm9ybWF0VXRpbHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2Zvcm1hdC11dGlscy9mb3JtYXQtdXRpbHMuc2VydmljZVwiO1xuaW1wb3J0IHsgU2hhcmVkU3RhdGVTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NoYXJlZC9zaGFyZWQtc3RhdGUuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJwaXgtYWNjb3VudFwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vaGlzdG9yaWNhbC1waXgtYWNjb3VudC1mb3JtLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuLi9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIEhpc3RvcmljYWxQaXhBY2NvdW50Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKEN1c3RvbUZpZWxkc0NvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBjdXN0b21GaWVsZHM6IEN1c3RvbUZpZWxkc0NvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1cnJlbmN5OiBOdW1iZXJMb2NhbGVPcHRpb25zO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1c3RvbUVudGl0eTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1c3RvbVNlcnZpY2U6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB3aXRoU2lkZUJhcjogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNFZGl0TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBhcmFtc0Zvcm06IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRlZmF1bHRDcGZOdW1iZXI6IHN0cmluZyA9IG51bGw7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBwaXhBY2NvdW50SXRlbVRvTGlzdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIHByaXZhdGUgX3Zpc2libGU6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcml2YXRlIGVtcGxveWVlSWQ6IHN0cmluZztcbiAgICBwcml2YXRlIHBpeEFjY291bnRMaXN0OiBvYmplY3RbXTtcbiAgICBwcml2YXRlIGluaXRpYWxWYWxpZGF0b3JPZlBlcmNlbnRhZ2U6IFZhbGlkYXRvckZuW10gPSBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4oMC4wMSldO1xuXG5cbiAgICBwdWJsaWMgbGFiZWxCdG5BZGQ6IHN0cmluZyA9IFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX2FkZFwiO1xuICAgIHB1YmxpYyBwaXhBY2NvdW50Rm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gICAgcHVibGljIG1heFZhbHVlUGVyY2VudGFnZTogbnVtYmVyID0gMTAwLjAwO1xuICAgIHB1YmxpYyB2aXNpYmxlQnRuU2F2ZTogYm9vbGVhbiA9IHRydWU7XG4gICAgcHVibGljIGlzVmlldzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBwaXhLZXlUeXBlOiBzdHJpbmc7XG4gICAgcHVibGljIGlzU2hvd1BpeEtleUZpZWxkVmFsaWRhdG9yTWVzc2FnZSA9IGZhbHNlO1xuICAgIHB1YmxpYyBoaWRlRmllbGRzID0gdGhpcy5zaGFyZWRTdGF0ZVNlcnZpY2UuaGlkZUZpZWxkJDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgc2hhcmVkU3RhdGVTZXJ2aWNlOiBTaGFyZWRTdGF0ZVNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5jcmVhdGVGb3JtR3JvdXAoKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclN1YmplY3RzKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZ2lzdGVyU3ViamVjdHMoKTogdm9pZCB7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVGb3JtR3JvdXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgaWQ6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgIGluZGV4OiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCksXG4gICAgICAgICAgICBlbXBsb3llZTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKHsgdmFsdWU6IHsgdGFibGVJZDogbnVsbCB9LCBkaXNhYmxlZDogdHJ1ZSB9KSxcbiAgICAgICAgICAgIGRhdGVDaGFuZ2U6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgIHBpeEtleVR5cGU6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgICAgIHBpeEtleTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwpLFxuICAgICAgICAgICAgcGVyY2VudGFnZTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgLi4udGhpcy5pbml0aWFsVmFsaWRhdG9yT2ZQZXJjZW50YWdlLFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KHRoaXMubWF4VmFsdWVQZXJjZW50YWdlKSxcbiAgICAgICAgICAgIF0pKSxcbiAgICAgICAgICAgIGV4dGVybmFsSWQ6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgIGN1c3RvbUZpZWxkczogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DaGFuZ2VQaXhLZXlUeXBlKGl0ZW06IGFueSkge1xuICAgICAgICBpZiAoaXRlbS5rZXkpIHtcbiAgICAgICAgICAgIHRoaXMucGl4S2V5VHlwZSA9IGl0ZW0ua2V5O1xuICAgICAgICAgICAgdGhpcy5pc1Nob3dQaXhLZXlGaWVsZFZhbGlkYXRvck1lc3NhZ2UgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVwiKS5yZXNldCgpO1xuICAgICAgICAgICAgdGhpcy5zZXRQaXhLZXlWYWxpZGF0b3JzKHRydWUpO1xuXG4gICAgICAgICAgICBpZihpdGVtLmtleSA9PT0gXCJDUEZcIikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdENwZlBpeEtleSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xlYXJQaXhLZXlUeXBlKCkge1xuICAgICAgICB0aGlzLmlzU2hvd1BpeEtleUZpZWxkVmFsaWRhdG9yTWVzc2FnZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl92aXNpYmxlID0gdmFsdWU7XG4gICAgICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KHRoaXMudmlzaWJsZSk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGlzRWRpdEFuZFZpZXdWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICAgIHRoaXMudmlzaWJsZUJ0blNhdmUgPSB0cnVlO1xuICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuY3VycmVudEl0ZW0gJiYgT2JqZWN0LmtleXModmFsdWUuY3VycmVudEl0ZW0pLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLnBhdGNoVmFsdWUodGhpcy5jb252ZXJ0RFRPVG9TaG93V2l0aEN1c3RvbUZpZWxkcyh7Li4udmFsdWUuY3VycmVudEl0ZW19KSk7XG4gICAgICAgICAgICB0aGlzLmxhYmVsQnRuQWRkID0gXCJoY20ucGF5cm9sbC5lbXBsb3llZXNfdXBkYXRlXCI7XG4gICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnNBY2NvcmRpbmdMaXN0KHZhbHVlLmxpc3REYXRhLCB2YWx1ZS5jdXJyZW50SXRlbVtcImluZGV4XCJdLCB2YWx1ZSAmJiB2YWx1ZVtcImlzRWRpdE1vZGVcIl0pO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzVmlldykge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnRW5hYmxlRmllbGRzKHZhbHVlICYmIHZhbHVlW1wiaXNFZGl0TW9kZVwiXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmKHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlUeXBlXCIpLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGl4S2V5VHlwZSA9IHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlUeXBlXCIpLnZhbHVlLmtleTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdFBpeEtleVRlbGVwaG9uZU51bWJlcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGFiZWxCdG5BZGQgPSBcImhjbS5wYXlyb2xsLmVtcGxveWVlc19hZGRcIjtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXRQaXhLZXlUZWxlcGhvbmVOdW1iZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnBpeEtleVR5cGUgPT09IFwiVEVMRVBIT05FXCIpIHtcbiAgICAgICAgICAgIHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlcIikuc2V0VmFsdWUoRm9ybWF0VXRpbHNTZXJ2aWNlLmdldEZvcm1hdHRlZFRlbGVwaG9uZU51bWJlcih0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpLnZhbHVlKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY29udmVydERUT1RvU2hvd1dpdGhDdXN0b21GaWVsZHMoZGF0YTogb2JqZWN0KTogb2JqZWN0IHtcbiAgICAgICAgY29uc3Qgb2JqOiBhbnkgPSB7Li4uIGRhdGF9O1xuICAgICAgICBvYmpbXCJjdXN0b21GaWVsZHNcIl0gPSBtb3VudEN1c3RvbVRvU2hvdyhvYmpbXCJjdXN0b21GaWVsZHNcIl0pO1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlnRW5hYmxlRmllbGRzKGlzRWRpdE1vZGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy52aXNpYmxlQnRuU2F2ZSA9IGlzRWRpdE1vZGU7XG5cbiAgICAgICAgaWYodGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVR5cGVcIikudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucGl4S2V5VHlwZSA9IHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlUeXBlXCIpLnZhbHVlLmtleTtcbiAgICAgICAgICAgIHRoaXMuc2V0UGl4S2V5VmFsaWRhdG9ycyhpc0VkaXRNb2RlKTtcblxuICAgICAgICAgICAgdGhpcy5mb3JtYXRQaXhLZXlUZWxlcGhvbmVOdW1iZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZ0VuYWJsZWRGaWVsZHModGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLCBpc0VkaXRNb2RlLCBbXG4gICAgICAgICAgICBcInBpeEtleVR5cGVcIixcbiAgICAgICAgICAgIFwicGl4S2V5XCIsXG4gICAgICAgICAgICBcInBlcmNlbnRhZ2VcIixcbiAgICAgICAgICAgIFwiY3VzdG9tRmllbGRzXCIsXG4gICAgICAgIF0sIFtdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRJdGVtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB2ZXJpZnlWYWxpZGF0aW9uc0Zvcm0uY2FsbCh0aGlzLnBpeEFjY291bnRGb3JtR3JvdXApO1xuXG4gICAgICAgIGlmICh0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAudmFsaWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmVtcGxveWVlSWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwiZW1wbG95ZWVcIikuc2V0VmFsdWUoe1xuICAgICAgICAgICAgICAgICAgICB0YWJsZUlkOiB0aGlzLmVtcGxveWVlSWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiXCIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBpeEFjY291bnRJdGVtVG9MaXN0LmVtaXQodGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldFJhd1ZhbHVlKCkpO1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0Rm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLnJlc2V0KCk7XG4gICAgICAgIHRoaXMubGFiZWxCdG5BZGQgPSBcImhjbS5wYXlyb2xsLmVtcGxveWVlc19hZGRcIjtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tRmllbGRzICYmIHRoaXMuY3VzdG9tRmllbGRzLmZvcm1Hcm91cCkgdGhpcy5jdXN0b21GaWVsZHMuZm9ybUdyb3VwLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwZXJjZW50YWdlUGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAwJHsgdGhpcy5jdXJyZW5jeSAmJiB0aGlzLmN1cnJlbmN5LmRlY2ltYWxTZXBhcmF0b3IgfTAwYDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9wdGlvbnNQZXJjZW50YWdlKCk6IG9iamVjdCB7XG4gICAgICAgIHJldHVybiB7IC4uLnRoaXMuZ2V0T3B0aW9ucygpLCBwcmVjaXNpb246IDIgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE9wdGlvbnMoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZWZpeDogXCJcIixcbiAgICAgICAgICAgIHRob3VzYW5kczogdGhpcy5jdXJyZW5jeS50aG91c2FuZHNTZXBhcmF0b3IsXG4gICAgICAgICAgICBkZWNpbWFsOiB0aGlzLmN1cnJlbmN5LmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTyBJbnB1dCBxdWUgcmVjZWJlIGEgbGlzdGEgZG8gY29tcG9uZW50IHBhaSBlIGNoYW1hIG8gbcOpdG9kbyBkZSB2YWxpZGHDp8OjbyBwYXNzYW5kbyBhIGxpc3RhIHJlY2ViaWRhLlxuICAgICAqIEBwYXJhbSBwaXhBY2NvdW50TGlzdFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBnZXRMaXN0UGl4QWNjb3VudChwaXhBY2NvdW50TGlzdDogb2JqZWN0W10pIHtcbiAgICAgICAgaWYgKHBpeEFjY291bnRMaXN0KSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnNBY2NvcmRpbmdMaXN0KHBpeEFjY291bnRMaXN0LCBudWxsLCBmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjZWJlIGEgbGlzdGEgZGUgcmVnaXN0cm9zIGrDoSBpbnNlcmlkb3MgbmEgdGFiZWxhIGFkaWNpb25hIGVtIHVtYSB2YXJpw6F2ZWwgb3MgdmFsb3JlcyBxdWUgc2Vyw6NvIHVzYWRvcyBwYXJhXG4gICAgICogYSB2YWxpZGHDp8OjbyBkb3MgY2FtcG9zIFwicGVyY2VudGFnZVwiIGUgXCJwaXhBY2NvdW50XCIuXG4gICAgICogUXVhbmRvIHRlbSBpbmRleCBzaWduaWZpY2EgcXVlIGVzdMOhIGVtIHVtYSBlZGnDp8Ojbywgb3MgdmFsb3JlcyBuYSBwb3Npw6fDo28gZG8gcmVnaXN0cm8gZGEgZWRpw6fDo28gKGluZGV4KSBuw6NvIHNlcsOjbyBhZGljaW9uYWRvc1xuICAgICAqIG5vIGFycmF5IGRlIGNvbXBhcmHDp8OjbyBkb3MgdmFsaWRhdG9ycy5cbiAgICAgKiBAcGFyYW0gcGl4QWNjb3VudExpc3RcbiAgICAgKiBAcGFyYW0gaW5kZXhcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldFZhbGlkYXRvcnNBY2NvcmRpbmdMaXN0KHBpeEFjY291bnRMaXN0OiBvYmplY3RbXSwgaW5kZXg6IG51bWJlciA9IG51bGwsIGlzRWRpdE1vZGU6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgICAgIHRoaXMucGl4QWNjb3VudExpc3QgPSBwaXhBY2NvdW50TGlzdCAmJiBwaXhBY2NvdW50TGlzdC5sZW5ndGggPyBbLi4ucGl4QWNjb3VudExpc3RdIDogW107XG5cbiAgICAgICAgY29uc3QgcGVyY2VudGFnZUluY2x1ZGVkOiBhbnkgPSBbXTtcblxuICAgICAgICBpZiAodGhpcy5waXhBY2NvdW50TGlzdCAmJiB0aGlzLnBpeEFjY291bnRMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50TGlzdC5maWx0ZXIoKGZpZWxkOiBhbnksIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZFtcInBlcmNlbnRhZ2VcIl0gJiYga2V5ICE9IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2VJbmNsdWRlZC5wdXNoKGZpZWxkW1wicGVyY2VudGFnZVwiXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJlZm9yZVNldFBpeEtleVR5cGVWYWxpZGF0b3IoKTtcbiAgICAgICAgdGhpcy5zZXRQaXhLZXlWYWxpZGF0b3JzKGlzRWRpdE1vZGUpO1xuICAgICAgICB0aGlzLnZhbGlkYXRlUGVyY2VudGFnZVZhbGlkKHBlcmNlbnRhZ2VJbmNsdWRlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW50ZXMgZGUgc2V0YXIgbyB2YWxpZGF0b3IgcHJlcGFyYSBhcyB2YXJpw6F2ZWlzIG5lY2Vzc8OhcmlhIHBhcmEgcXVlIHNlamEgZmVpdGEgYSB2YWxpZGHDp8OjbyBkbyBjYW1wby5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0UGl4S2V5VmFsaWRhdG9ycyhpc0VkaXRNb2RlOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGdlbmVyaWNQaXhLZXkgPSB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpO1xuICAgICAgICBpZiAodGhpcy5waXhLZXlUeXBlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMucGl4S2V5VHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJURUxFUEhPTkVcIjpcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY1BpeEtleS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLCBHZW5lcmljVmFsaWRhdG9yLmlzVmFsaWRQaG9uZU51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgXSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiRU1BSUxcIjpcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY1BpeEtleS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLCBHZW5lcmljVmFsaWRhdG9yLmlzVmFsaWRFbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgXSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiQ1BGXCI6XG4gICAgICAgICAgICAgICAgICAgIGdlbmVyaWNQaXhLZXkuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCwgR2VuZXJpY1ZhbGlkYXRvci5pc1ZhbGlkQ3BmLFxuICAgICAgICAgICAgICAgICAgICBdKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJDTlBKXCI6XG4gICAgICAgICAgICAgICAgICAgIGdlbmVyaWNQaXhLZXkuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCwgR2VuZXJpY1ZhbGlkYXRvci5pc1ZhbGlkQ25waixcbiAgICAgICAgICAgICAgICAgICAgXSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiUkFORE9NX0tFWVwiOlxuICAgICAgICAgICAgICAgICAgICBnZW5lcmljUGl4S2V5LnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGdlbmVyaWNQaXhLZXkuc2V0VmFsaWRhdG9ycyhudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmKGlzRWRpdE1vZGUpIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljUGl4S2V5LmVuYWJsZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBnZW5lcmljUGl4S2V5LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXN0ZSBtw6l0b2RvIGNhbGN1bGEgYXMgcGFyY2VudGFnZW5zIHF1ZSBqw6EgZm9yYW0gaW5zZXJpZGFzLCBlIHNldGEgYSBkaWZlcmVuw6dhIHBhcmEgY2hlZ2FyIGVtXG4gICAgICogMTAwJSBuYSB2YWxpZGHDp8OjbyBkbyBjYW1wbyBcInBlcmNlbnRhZ2VcIiBjb21vIHVtIG5vdm8gbWF4VmFsdWU7XG4gICAgICogQHBhcmFtIGxpc3RWYWx1ZVxuICAgICAqL1xuICAgIHByaXZhdGUgdmFsaWRhdGVQZXJjZW50YWdlVmFsaWQobGlzdFZhbHVlOiBudW1iZXJbXSkge1xuICAgICAgICBjb25zdCBwZXJjZW50YWdlID0gdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBlcmNlbnRhZ2VcIik7XG4gICAgICAgIHRoaXMubWF4VmFsdWVQZXJjZW50YWdlID0gbGlzdFZhbHVlXG4gICAgICAgICAgICAucmVkdWNlKChjdXJyZW50VmFsdWUsIHRvdGFsKSA9PiBjdXJyZW50VmFsdWUgLSB0b3RhbCxcbiAgICAgICAgICAgICAgICAxMDAuMDAsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIHBlcmNlbnRhZ2VcbiAgICAgICAgICAgIC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgLi4udGhpcy5pbml0aWFsVmFsaWRhdG9yT2ZQZXJjZW50YWdlLFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KHRoaXMubWF4VmFsdWVQZXJjZW50YWdlKSxcbiAgICAgICAgICAgIF0pKTtcbiAgICAgICAgcGVyY2VudGFnZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGlzVmlld01vZGUoY29uZGl0aW9uOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaXNWaWV3ID0gISEoY29uZGl0aW9uICYmICF0aGlzLndpdGhTaWRlQmFyKTtcbiAgICAgICAgdGhpcy5jb25maWdFbmFibGVGaWVsZHMoIXRoaXMuaXNWaWV3KTtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmlldykgdGhpcy5yZXNldEZvcm0oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGhvbmVNYXNrKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgRm9ybWF0VXRpbHNTZXJ2aWNlLmZvcm1hdFRlbGVwaG9uZUlucHV0RXZlbnQoZXZlbnQpO1xuICAgIH1cblxuICAgIHNldERlZmF1bHRDcGZQaXhLZXkoKSB7XG4gICAgICAgIGlmKHRoaXMuZGVmYXVsdENwZk51bWJlcikge1xuICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVwiKS5zZXRWYWx1ZSh0aGlzLmRlZmF1bHRDcGZOdW1iZXIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc2hlZXREb2N1bWVudCA9IHRoaXMucGFyYW1zRm9ybS5nZXQoXCJzaGVldERvY3VtZW50XCIpO1xuICAgICAgICAgICAgaWYoc2hlZXREb2N1bWVudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNwZiA9IHNoZWV0RG9jdW1lbnQuZ2V0KFwiY3BmTnVtYmVyXCIpLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmKGNwZikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpLnNldFZhbHVlKGNwZik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGJlZm9yZVNldFBpeEtleVR5cGVWYWxpZGF0b3IoKSB7XG4gICAgICAgIGNvbnN0IHBpeEtleVR5cGUgPSB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5VHlwZVwiKTtcblxuICAgICAgICBpZiAodGhpcy5waXhBY2NvdW50TGlzdCAmJiB0aGlzLnBpeEFjY291bnRMaXN0Lmxlbmd0aCAmJiBwaXhLZXlUeXBlKSB7XG4gICAgICAgICAgICBwaXhLZXlUeXBlXG4gICAgICAgICAgICAgICAgLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUR1cGxpY2F0ZVBpeEtleVR5cGVCYW5rQWNjb3VudCh0aGlzLnBpeEFjY291bnRMaXN0KSxcbiAgICAgICAgICAgICAgICBdKSk7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBpeEtleVR5cGUuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVEdXBsaWNhdGVQaXhLZXlUeXBlQmFua0FjY291bnQobGlzdENvbXBhcmU6IG9iamVjdFtdKSB7XG4gICAgICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdG9ycyA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wgJiYgY29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgIGxldCBjb25kaXRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgIGxpc3RDb21wYXJlLmZpbHRlcigoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZFtcInBpeEtleVR5cGVcIl0ua2V5ID09PSAnQkFOS19BQ0NPVU5UJyAmJiB2YWx1ZS5rZXkgPT09IGZpZWxkW1wicGl4S2V5VHlwZVwiXS5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb25kaXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChjb25kaXRpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBwaXhLZXlUeXBlQmFua0FjY291bnREdXBsaWNhdGU6IHRydWUgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxufVxuIl19