@senior-gestao-pessoas/payroll-core 9.5.0 → 9.6.0-feature-hcmgdp-11604-e0af4f68

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 (22) hide show
  1. package/bundles/senior-gestao-pessoas-payroll-core.umd.js +853 -808
  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/employee-summary/employee-summary.service.d.ts +1 -0
  6. package/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.d.ts +4 -2
  7. package/components/historical-pix-account/historical-pix-account.component.d.ts +5 -1
  8. package/components/historical-pix-account-list/historical-pix-account-list.component.d.ts +1 -0
  9. package/esm2015/components/employee-summary/employee-summary.service.js +4 -1
  10. package/esm2015/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +18 -3
  11. package/esm2015/components/historical-pix-account/historical-pix-account.component.js +30 -7
  12. package/esm2015/components/historical-pix-account-list/historical-pix-account-list.component.js +6 -2
  13. package/esm5/components/employee-summary/employee-summary.service.js +4 -1
  14. package/esm5/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +19 -3
  15. package/esm5/components/historical-pix-account/historical-pix-account.component.js +30 -7
  16. package/esm5/components/historical-pix-account-list/historical-pix-account-list.component.js +6 -2
  17. package/fesm2015/senior-gestao-pessoas-payroll-core.js +808 -764
  18. package/fesm2015/senior-gestao-pessoas-payroll-core.js.map +1 -1
  19. package/fesm5/senior-gestao-pessoas-payroll-core.js +853 -808
  20. package/fesm5/senior-gestao-pessoas-payroll-core.js.map +1 -1
  21. package/package.json +1 -1
  22. package/senior-gestao-pessoas-payroll-core.metadata.json +1 -1
@@ -6,6 +6,7 @@ export declare class EmployeeSummaryService {
6
6
  constructor(http: HttpClient);
7
7
  findEmployee(path: string, employeeId: string): Observable<any>;
8
8
  findEmployeeAutoComplete(path: string, terms: string): Observable<any>;
9
+ getEmployeeDocuments(path: string, employeeId: string): Observable<any>;
9
10
  blobServiceRequestAccess(path: string, body: object): Observable<any>;
10
11
  setEmployeeBasicInformations(employeeBasicInformations: any): void;
11
12
  getEmployeeBasicInformations(): Observable<any>;
@@ -1,7 +1,7 @@
1
- import { OnInit, EventEmitter, ChangeDetectorRef, OnDestroy, AfterViewInit } from "@angular/core";
1
+ import { OnInit, EventEmitter, ChangeDetectorRef, OnDestroy, AfterViewInit, DoCheck } from "@angular/core";
2
2
  import { FormGroup, FormBuilder } from "@angular/forms";
3
3
  import { NumberLocaleOptions, CustomFieldsComponent } from "@seniorsistemas/angular-components";
4
- export declare class HistoricalPixAccountFormComponent implements OnInit, OnDestroy, AfterViewInit {
4
+ export declare class HistoricalPixAccountFormComponent implements OnInit, OnDestroy, AfterViewInit, DoCheck {
5
5
  private formBuilder;
6
6
  private cd;
7
7
  customFields: CustomFieldsComponent;
@@ -12,6 +12,7 @@ export declare class HistoricalPixAccountFormComponent implements OnInit, OnDest
12
12
  isEditMode: boolean;
13
13
  paramsForm: FormGroup;
14
14
  defaultCpfNumber: string;
15
+ permitsEditBankAccountForm: boolean;
15
16
  visibleChange: EventEmitter<boolean>;
16
17
  pixAccountItemToList: EventEmitter<any>;
17
18
  private _visible;
@@ -28,6 +29,7 @@ export declare class HistoricalPixAccountFormComponent implements OnInit, OnDest
28
29
  isShowPixKeyFieldValidatorMessage: boolean;
29
30
  constructor(formBuilder: FormBuilder, cd: ChangeDetectorRef);
30
31
  ngOnInit(): void;
32
+ ngDoCheck(): void;
31
33
  ngAfterViewInit(): void;
32
34
  ngOnDestroy(): void;
33
35
  private registerSubjects;
@@ -3,12 +3,14 @@ import { FormGroup, FormBuilder } from "@angular/forms";
3
3
  import { TranslateService } from "@ngx-translate/core";
4
4
  import { CustomFieldsComponent, NumberLocaleOptions } from "@seniorsistemas/angular-components";
5
5
  import { MessageService } from "primeng/api";
6
+ import { HistoricalPixAccountFormComponent } from "./historical-pix-account-form/historical-pix-account-form.component";
6
7
  export declare class HistoricalPixAccountComponent implements OnInit, OnDestroy, AfterViewInit, OnChanges {
7
8
  private translateService;
8
- private cd;
9
+ cd: ChangeDetectorRef;
9
10
  private formBuilder;
10
11
  private messageService;
11
12
  customFields: CustomFieldsComponent;
13
+ formComponent: HistoricalPixAccountFormComponent;
12
14
  formGroup: FormGroup;
13
15
  fieldFormGroup: string;
14
16
  _dateChange: string;
@@ -26,6 +28,7 @@ export declare class HistoricalPixAccountComponent implements OnInit, OnDestroy,
26
28
  defaultCpfNumber: string;
27
29
  permission: object;
28
30
  listDataReciever: any[];
31
+ showButtonEdit: boolean;
29
32
  isViewModeActive: EventEmitter<any>;
30
33
  isEditModeActive: EventEmitter<any>;
31
34
  isDeleteModeActive: EventEmitter<any>;
@@ -43,6 +46,7 @@ export declare class HistoricalPixAccountComponent implements OnInit, OnDestroy,
43
46
  msgTotalLimitByPercentage: string;
44
47
  listData: object[];
45
48
  listDataNoPage: object[];
49
+ permitsEditBankAccount: boolean;
46
50
  cols: {
47
51
  label: any;
48
52
  field: string;
@@ -23,6 +23,7 @@ export declare class HistoricalPixAccountListComponent implements OnInit, OnDest
23
23
  isOnlyView: EventEmitter<any>;
24
24
  isOnlyEdit: EventEmitter<any>;
25
25
  enableView: EventEmitter<any>;
26
+ enableEdit: EventEmitter<any>;
26
27
  private lastRecord;
27
28
  private ngUnsubscribe;
28
29
  initParameters: any;
@@ -13,6 +13,9 @@ let EmployeeSummaryService = class EmployeeSummaryService {
13
13
  findEmployeeAutoComplete(path, terms) {
14
14
  return this.http.post(`hcm/payroll/queries/${path}`, { valueSearch: terms });
15
15
  }
16
+ getEmployeeDocuments(path, employeeId) {
17
+ return this.http.post(`hcm/payroll/queries/${path}`, { employeeId: employeeId });
18
+ }
16
19
  blobServiceRequestAccess(path, body) {
17
20
  return this.http.post(`hcm/payroll/actions/${path}`, body);
18
21
  }
@@ -30,4 +33,4 @@ EmployeeSummaryService = tslib_1.__decorate([
30
33
  Injectable()
31
34
  ], EmployeeSummaryService);
32
35
  export { EmployeeSummaryService };
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wbG95ZWUtc3VtbWFyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvci1nZXN0YW8tcGVzc29hcy9wYXlyb2xsLWNvcmUvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2VtcGxveWVlLXN1bW1hcnkvZW1wbG95ZWUtc3VtbWFyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzNDLElBQWEsc0JBQXNCLEdBQW5DLE1BQWEsc0JBQXNCO0lBR2pDLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFGNUIsOEJBQXlCLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztJQUVoQixDQUFDO0lBRXhDLFlBQVksQ0FBQyxJQUFZLEVBQUUsVUFBa0I7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsSUFBSSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsd0JBQXdCLENBQUMsSUFBWSxFQUFFLEtBQWE7UUFDbEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsSUFBSSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsd0JBQXdCLENBQUMsSUFBWSxFQUFFLElBQVk7UUFDakQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELDRCQUE0QixDQUFDLHlCQUE4QjtRQUN6RCxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELDRCQUE0QjtRQUMxQixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0NBQ0YsQ0FBQTs7WUFyQjJCLFVBQVU7O0FBSHpCLHNCQUFzQjtJQURsQyxVQUFVLEVBQUU7R0FDQSxzQkFBc0IsQ0F3QmxDO1NBeEJZLHNCQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBFbXBsb3llZVN1bW1hcnlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBlbXBsb3llZUJhc2ljSW5mb3JtYXRpb25zID0gbmV3IFN1YmplY3Q8YW55PigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cblxuICBmaW5kRW1wbG95ZWUocGF0aDogc3RyaW5nLCBlbXBsb3llZUlkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgaGNtL3BheXJvbGwvcXVlcmllcy8ke3BhdGh9YCwgeyBlbXBsb3llZUlkOiBlbXBsb3llZUlkIH0pO1xuICB9XG5cbiAgZmluZEVtcGxveWVlQXV0b0NvbXBsZXRlKHBhdGg6IHN0cmluZywgdGVybXM6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGBoY20vcGF5cm9sbC9xdWVyaWVzLyR7cGF0aH1gLCB7IHZhbHVlU2VhcmNoOiB0ZXJtcyB9KTtcbiAgfVxuXG4gIGJsb2JTZXJ2aWNlUmVxdWVzdEFjY2VzcyhwYXRoOiBzdHJpbmcsIGJvZHk6IG9iamVjdCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGBoY20vcGF5cm9sbC9hY3Rpb25zLyR7cGF0aH1gLCBib2R5KTtcbiAgfVxuXG4gIHNldEVtcGxveWVlQmFzaWNJbmZvcm1hdGlvbnMoZW1wbG95ZWVCYXNpY0luZm9ybWF0aW9uczogYW55KSB7XG4gICAgdGhpcy5lbXBsb3llZUJhc2ljSW5mb3JtYXRpb25zLm5leHQoZW1wbG95ZWVCYXNpY0luZm9ybWF0aW9ucyk7XG4gIH1cblxuICBnZXRFbXBsb3llZUJhc2ljSW5mb3JtYXRpb25zKCk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZW1wbG95ZWVCYXNpY0luZm9ybWF0aW9ucy5hc09ic2VydmFibGUoKTtcbiAgfVxufVxuIl19
36
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wbG95ZWUtc3VtbWFyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQHNlbmlvci1nZXN0YW8tcGVzc29hcy9wYXlyb2xsLWNvcmUvIiwic291cmNlcyI6WyJjb21wb25lbnRzL2VtcGxveWVlLXN1bW1hcnkvZW1wbG95ZWUtc3VtbWFyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzNDLElBQWEsc0JBQXNCLEdBQW5DLE1BQWEsc0JBQXNCO0lBR2pDLFlBQW9CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFGNUIsOEJBQXlCLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztJQUVoQixDQUFDO0lBRXhDLFlBQVksQ0FBQyxJQUFZLEVBQUUsVUFBa0I7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsSUFBSSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQsd0JBQXdCLENBQUMsSUFBWSxFQUFFLEtBQWE7UUFDbEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsSUFBSSxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRUQsb0JBQW9CLENBQUMsSUFBWSxFQUFFLFVBQWtCO1FBQ25ELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELHdCQUF3QixDQUFDLElBQVksRUFBRSxJQUFZO1FBQ2pELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCw0QkFBNEIsQ0FBQyx5QkFBOEI7UUFDekQsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCw0QkFBNEI7UUFDMUIsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdkQsQ0FBQztDQUNGLENBQUE7O1lBekIyQixVQUFVOztBQUh6QixzQkFBc0I7SUFEbEMsVUFBVSxFQUFFO0dBQ0Esc0JBQXNCLENBNEJsQztTQTVCWSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRW1wbG95ZWVTdW1tYXJ5U2VydmljZSB7XG4gIHByaXZhdGUgZW1wbG95ZWVCYXNpY0luZm9ybWF0aW9ucyA9IG5ldyBTdWJqZWN0PGFueT4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHt9XG5cbiAgZmluZEVtcGxveWVlKHBhdGg6IHN0cmluZywgZW1wbG95ZWVJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYGhjbS9wYXlyb2xsL3F1ZXJpZXMvJHtwYXRofWAsIHsgZW1wbG95ZWVJZDogZW1wbG95ZWVJZCB9KTtcbiAgfVxuXG4gIGZpbmRFbXBsb3llZUF1dG9Db21wbGV0ZShwYXRoOiBzdHJpbmcsIHRlcm1zOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgaGNtL3BheXJvbGwvcXVlcmllcy8ke3BhdGh9YCwgeyB2YWx1ZVNlYXJjaDogdGVybXMgfSk7XG4gIH1cblxuICBnZXRFbXBsb3llZURvY3VtZW50cyhwYXRoOiBzdHJpbmcsIGVtcGxveWVlSWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGBoY20vcGF5cm9sbC9xdWVyaWVzLyR7cGF0aH1gLCB7IGVtcGxveWVlSWQ6IGVtcGxveWVlSWQgfSk7XG4gIH1cblxuICBibG9iU2VydmljZVJlcXVlc3RBY2Nlc3MocGF0aDogc3RyaW5nLCBib2R5OiBvYmplY3QpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgaGNtL3BheXJvbGwvYWN0aW9ucy8ke3BhdGh9YCwgYm9keSk7XG4gIH1cblxuICBzZXRFbXBsb3llZUJhc2ljSW5mb3JtYXRpb25zKGVtcGxveWVlQmFzaWNJbmZvcm1hdGlvbnM6IGFueSkge1xuICAgIHRoaXMuZW1wbG95ZWVCYXNpY0luZm9ybWF0aW9ucy5uZXh0KGVtcGxveWVlQmFzaWNJbmZvcm1hdGlvbnMpO1xuICB9XG5cbiAgZ2V0RW1wbG95ZWVCYXNpY0luZm9ybWF0aW9ucygpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmVtcGxveWVlQmFzaWNJbmZvcm1hdGlvbnMuYXNPYnNlcnZhYmxlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import * as tslib_1 from "tslib";
2
- import { Component, OnInit, Input, Output, EventEmitter, ChangeDetectorRef, OnDestroy, AfterViewInit, ViewChild, } from "@angular/core";
2
+ import { Component, OnInit, Input, Output, EventEmitter, ChangeDetectorRef, OnDestroy, AfterViewInit, ViewChild, DoCheck, } from "@angular/core";
3
3
  import { FormGroup, FormBuilder, Validators, ValidatorFn, AbstractControl } from "@angular/forms";
4
4
  import { CustomFieldsComponent } from "@seniorsistemas/angular-components";
5
5
  import { Subject } from "rxjs";
@@ -14,6 +14,7 @@ let HistoricalPixAccountFormComponent = class HistoricalPixAccountFormComponent
14
14
  this.isEditMode = false;
15
15
  this.paramsForm = new FormGroup({});
16
16
  this.defaultCpfNumber = null;
17
+ this.permitsEditBankAccountForm = false;
17
18
  this.visibleChange = new EventEmitter();
18
19
  this.pixAccountItemToList = new EventEmitter();
19
20
  this.ngUnsubscribe = new Subject();
@@ -28,6 +29,14 @@ let HistoricalPixAccountFormComponent = class HistoricalPixAccountFormComponent
28
29
  }
29
30
  ngOnInit() {
30
31
  }
32
+ ngDoCheck() {
33
+ if (this.pixAccountFormGroup && this.pixKeyType === "BANK_ACCOUNT") {
34
+ const pixKeyControl = this.pixAccountFormGroup.get("pixKey");
35
+ if (pixKeyControl && !pixKeyControl.disabled) {
36
+ pixKeyControl.disable();
37
+ }
38
+ }
39
+ }
31
40
  ngAfterViewInit() {
32
41
  this.cd.detectChanges();
33
42
  }
@@ -78,6 +87,9 @@ let HistoricalPixAccountFormComponent = class HistoricalPixAccountFormComponent
78
87
  set isEditAndViewValue(value) {
79
88
  this.resetForm();
80
89
  this.visibleBtnSave = true;
90
+ if (value && value.permitsEditBankAccount) {
91
+ this.permitsEditBankAccountForm = true;
92
+ }
81
93
  if (value && value.currentItem && Object.keys(value.currentItem).length) {
82
94
  this.pixAccountFormGroup.patchValue(this.convertDTOToShowWithCustomFields(Object.assign({}, value.currentItem)));
83
95
  this.labelBtnAdd = "hcm.payroll.employees_update";
@@ -295,7 +307,7 @@ let HistoricalPixAccountFormComponent = class HistoricalPixAccountFormComponent
295
307
  }
296
308
  }
297
309
  });
298
- if (condition) {
310
+ if (condition && !this.permitsEditBankAccountForm) {
299
311
  return { pixKeyTypeBankAccountDuplicate: true };
300
312
  }
301
313
  else {
@@ -332,6 +344,9 @@ tslib_1.__decorate([
332
344
  tslib_1.__decorate([
333
345
  Input()
334
346
  ], HistoricalPixAccountFormComponent.prototype, "defaultCpfNumber", void 0);
347
+ tslib_1.__decorate([
348
+ Input()
349
+ ], HistoricalPixAccountFormComponent.prototype, "permitsEditBankAccountForm", void 0);
335
350
  tslib_1.__decorate([
336
351
  Output()
337
352
  ], HistoricalPixAccountFormComponent.prototype, "visibleChange", void 0);
@@ -358,4 +373,4 @@ HistoricalPixAccountFormComponent = tslib_1.__decorate([
358
373
  })
359
374
  ], HistoricalPixAccountFormComponent);
360
375
  export { HistoricalPixAccountFormComponent };
361
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yaWNhbC1waXgtYWNjb3VudC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLXBlc3NvYXMvcGF5cm9sbC1jb3JlLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9oaXN0b3JpY2FsLXBpeC1hY2NvdW50L2hpc3RvcmljYWwtcGl4LWFjY291bnQtZm9ybS9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGFBQWEsRUFDYixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRyxPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDaEcsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQ0gscUJBQXFCLEVBQ3JCLG1CQUFtQixFQUNuQixpQkFBaUIsR0FDcEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQU9uRixJQUFhLGlDQUFpQyxHQUE5QyxNQUFhLGlDQUFpQztJQXVDMUMsWUFDWSxXQUF3QixFQUN4QixFQUFxQjtRQURyQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixPQUFFLEdBQUYsRUFBRSxDQUFtQjtRQTlCMUIsZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFFNUIsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUU1QixlQUFV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QyxNQUFNLEVBQUU7d0VBQ2lFO0FBRTFFO0lBREMsTUFBTSxFQUFFOytFQUNnRTtBQTRFekU7SUFEQyxLQUFLLEVBQUU7Z0VBR1A7QUFRRDtJQURDLEtBQUssRUFBRTsyRUFxQlA7QUFpRkQ7SUFEQyxLQUFLLEVBQUU7MEVBT1A7QUE2RkQ7SUFEQyxLQUFLLEVBQUU7bUVBS1A7QUF4VFEsaUNBQWlDO0lBTDdDLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxhQUFhO1FBQ3ZCLG81TkFBMkQ7O0tBRTlELENBQUM7R0FDVyxpQ0FBaUMsQ0ErVzdDO1NBL1dZLGlDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ29tcG9uZW50LFxuICAgIE9uSW5pdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIE9uRGVzdHJveSxcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMsIFZhbGlkYXRvckZuLCBBYnN0cmFjdENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE51bWJlckxvY2FsZU9wdGlvbnMsIEN1c3RvbUZpZWxkc0NvbXBvbmVudCB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7XG4gICAgdmVyaWZ5VmFsaWRhdGlvbnNGb3JtLFxuICAgIGNvbmZpZ0VuYWJsZWRGaWVsZHMsXG4gICAgbW91bnRDdXN0b21Ub1Nob3csXG59IGZyb20gXCIuLi8uLi91dGlscy9oZWxwZXJzXCI7XG5pbXBvcnQgeyBHZW5lcmljVmFsaWRhdG9yIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2dlbmVyaWMtdmFsaWRhdG9yc1wiO1xuaW1wb3J0IHsgRm9ybWF0VXRpbHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2Zvcm1hdC11dGlscy9mb3JtYXQtdXRpbHMuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJwaXgtYWNjb3VudFwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vaGlzdG9yaWNhbC1waXgtYWNjb3VudC1mb3JtLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuLi9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIEhpc3RvcmljYWxQaXhBY2NvdW50Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKEN1c3RvbUZpZWxkc0NvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBjdXN0b21GaWVsZHM6IEN1c3RvbUZpZWxkc0NvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1cnJlbmN5OiBOdW1iZXJMb2NhbGVPcHRpb25zO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1c3RvbUVudGl0eTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1c3RvbVNlcnZpY2U6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB3aXRoU2lkZUJhcjogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNFZGl0TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBhcmFtc0Zvcm06IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRlZmF1bHRDcGZOdW1iZXI6IHN0cmluZyA9IG51bGw7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBwaXhBY2NvdW50SXRlbVRvTGlzdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIHByaXZhdGUgX3Zpc2libGU6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcml2YXRlIGVtcGxveWVlSWQ6IHN0cmluZztcbiAgICBwcml2YXRlIHBpeEFjY291bnRMaXN0OiBvYmplY3RbXTtcbiAgICBwcml2YXRlIGluaXRpYWxWYWxpZGF0b3JPZlBlcmNlbnRhZ2U6IFZhbGlkYXRvckZuW10gPSBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4oMC4wMSldO1xuXG5cbiAgICBwdWJsaWMgbGFiZWxCdG5BZGQ6IHN0cmluZyA9IFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX2FkZFwiO1xuICAgIHB1YmxpYyBwaXhBY2NvdW50Rm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gICAgcHVibGljIG1heFZhbHVlUGVyY2VudGFnZTogbnVtYmVyID0gMTAwLjAwO1xuICAgIHB1YmxpYyB2aXNpYmxlQnRuU2F2ZTogYm9vbGVhbiA9IHRydWU7XG4gICAgcHVibGljIGlzVmlldzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBwaXhLZXlUeXBlOiBzdHJpbmc7XG4gICAgcHVibGljIGlzU2hvd1BpeEtleUZpZWxkVmFsaWRhdG9yTWVzc2FnZSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICApIHtcbiAgICAgICAgdGhpcy5jcmVhdGVGb3JtR3JvdXAoKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclN1YmplY3RzKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZ2lzdGVyU3ViamVjdHMoKTogdm9pZCB7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVGb3JtR3JvdXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgaWQ6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgIGluZGV4OiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCksXG4gICAgICAgICAgICBlbXBsb3llZTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKHsgdmFsdWU6IHsgdGFibGVJZDogbnVsbCB9LCBkaXNhYmxlZDogdHJ1ZSB9KSxcbiAgICAgICAgICAgIGRhdGVDaGFuZ2U6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgIHBpeEtleVR5cGU6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgICAgIHBpeEtleTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwpLFxuICAgICAgICAgICAgcGVyY2VudGFnZTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgLi4udGhpcy5pbml0aWFsVmFsaWRhdG9yT2ZQZXJjZW50YWdlLFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KHRoaXMubWF4VmFsdWVQZXJjZW50YWdlKSxcbiAgICAgICAgICAgIF0pKSxcbiAgICAgICAgICAgIGV4dGVybmFsSWQ6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgIGN1c3RvbUZpZWxkczogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DaGFuZ2VQaXhLZXlUeXBlKGl0ZW06IGFueSkge1xuICAgICAgICBpZiAoaXRlbS5rZXkpIHtcbiAgICAgICAgICAgIHRoaXMucGl4S2V5VHlwZSA9IGl0ZW0ua2V5O1xuICAgICAgICAgICAgdGhpcy5pc1Nob3dQaXhLZXlGaWVsZFZhbGlkYXRvck1lc3NhZ2UgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVwiKS5yZXNldCgpO1xuICAgICAgICAgICAgdGhpcy5zZXRQaXhLZXlWYWxpZGF0b3JzKHRydWUpO1xuXG4gICAgICAgICAgICBpZihpdGVtLmtleSA9PT0gXCJDUEZcIikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdENwZlBpeEtleSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xlYXJQaXhLZXlUeXBlKCkge1xuICAgICAgICB0aGlzLmlzU2hvd1BpeEtleUZpZWxkVmFsaWRhdG9yTWVzc2FnZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl92aXNpYmxlID0gdmFsdWU7XG4gICAgICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KHRoaXMudmlzaWJsZSk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGlzRWRpdEFuZFZpZXdWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICAgIHRoaXMudmlzaWJsZUJ0blNhdmUgPSB0cnVlO1xuICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuY3VycmVudEl0ZW0gJiYgT2JqZWN0LmtleXModmFsdWUuY3VycmVudEl0ZW0pLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLnBhdGNoVmFsdWUodGhpcy5jb252ZXJ0RFRPVG9TaG93V2l0aEN1c3RvbUZpZWxkcyh7Li4udmFsdWUuY3VycmVudEl0ZW19KSk7XG4gICAgICAgICAgICB0aGlzLmxhYmVsQnRuQWRkID0gXCJoY20ucGF5cm9sbC5lbXBsb3llZXNfdXBkYXRlXCI7XG4gICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnNBY2NvcmRpbmdMaXN0KHZhbHVlLmxpc3REYXRhLCB2YWx1ZS5jdXJyZW50SXRlbVtcImluZGV4XCJdLCB2YWx1ZSAmJiB2YWx1ZVtcImlzRWRpdE1vZGVcIl0pO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmlzVmlldykge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uZmlnRW5hYmxlRmllbGRzKHZhbHVlICYmIHZhbHVlW1wiaXNFZGl0TW9kZVwiXSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmKHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlUeXBlXCIpLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGl4S2V5VHlwZSA9IHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlUeXBlXCIpLnZhbHVlLmtleTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1hdFBpeEtleVRlbGVwaG9uZU51bWJlcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGFiZWxCdG5BZGQgPSBcImhjbS5wYXlyb2xsLmVtcGxveWVlc19hZGRcIjtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JtYXRQaXhLZXlUZWxlcGhvbmVOdW1iZXIoKSB7XG4gICAgICAgIGlmICh0aGlzLnBpeEtleVR5cGUgPT09IFwiVEVMRVBIT05FXCIpIHtcbiAgICAgICAgICAgIHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlcIikuc2V0VmFsdWUoRm9ybWF0VXRpbHNTZXJ2aWNlLmdldEZvcm1hdHRlZFRlbGVwaG9uZU51bWJlcih0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpLnZhbHVlKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY29udmVydERUT1RvU2hvd1dpdGhDdXN0b21GaWVsZHMoZGF0YTogb2JqZWN0KTogb2JqZWN0IHtcbiAgICAgICAgY29uc3Qgb2JqOiBhbnkgPSB7Li4uIGRhdGF9O1xuICAgICAgICBvYmpbXCJjdXN0b21GaWVsZHNcIl0gPSBtb3VudEN1c3RvbVRvU2hvdyhvYmpbXCJjdXN0b21GaWVsZHNcIl0pO1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlnRW5hYmxlRmllbGRzKGlzRWRpdE1vZGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy52aXNpYmxlQnRuU2F2ZSA9IGlzRWRpdE1vZGU7XG5cbiAgICAgICAgaWYodGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVR5cGVcIikudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucGl4S2V5VHlwZSA9IHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlUeXBlXCIpLnZhbHVlLmtleTtcbiAgICAgICAgICAgIHRoaXMuc2V0UGl4S2V5VmFsaWRhdG9ycyhpc0VkaXRNb2RlKTtcblxuICAgICAgICAgICAgdGhpcy5mb3JtYXRQaXhLZXlUZWxlcGhvbmVOdW1iZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbmZpZ0VuYWJsZWRGaWVsZHModGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLCBpc0VkaXRNb2RlLCBbXG4gICAgICAgICAgICBcInBpeEtleVR5cGVcIixcbiAgICAgICAgICAgIFwicGl4S2V5XCIsXG4gICAgICAgICAgICBcInBlcmNlbnRhZ2VcIixcbiAgICAgICAgICAgIFwiY3VzdG9tRmllbGRzXCIsXG4gICAgICAgIF0sIFtdKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICAgIHRoaXMudmlzaWJsZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRJdGVtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB2ZXJpZnlWYWxpZGF0aW9uc0Zvcm0uY2FsbCh0aGlzLnBpeEFjY291bnRGb3JtR3JvdXApO1xuXG4gICAgICAgIGlmICh0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAudmFsaWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmVtcGxveWVlSWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwiZW1wbG95ZWVcIikuc2V0VmFsdWUoe1xuICAgICAgICAgICAgICAgICAgICB0YWJsZUlkOiB0aGlzLmVtcGxveWVlSWQsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiXCIsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBpeEFjY291bnRJdGVtVG9MaXN0LmVtaXQodGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldFJhd1ZhbHVlKCkpO1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0Rm9ybSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLnJlc2V0KCk7XG4gICAgICAgIHRoaXMubGFiZWxCdG5BZGQgPSBcImhjbS5wYXlyb2xsLmVtcGxveWVlc19hZGRcIjtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tRmllbGRzICYmIHRoaXMuY3VzdG9tRmllbGRzLmZvcm1Hcm91cCkgdGhpcy5jdXN0b21GaWVsZHMuZm9ybUdyb3VwLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwZXJjZW50YWdlUGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAwJHsgdGhpcy5jdXJyZW5jeSAmJiB0aGlzLmN1cnJlbmN5LmRlY2ltYWxTZXBhcmF0b3IgfTAwYDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9wdGlvbnNQZXJjZW50YWdlKCk6IG9iamVjdCB7XG4gICAgICAgIHJldHVybiB7IC4uLnRoaXMuZ2V0T3B0aW9ucygpLCBwcmVjaXNpb246IDIgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE9wdGlvbnMoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHByZWZpeDogXCJcIixcbiAgICAgICAgICAgIHRob3VzYW5kczogdGhpcy5jdXJyZW5jeS50aG91c2FuZHNTZXBhcmF0b3IsXG4gICAgICAgICAgICBkZWNpbWFsOiB0aGlzLmN1cnJlbmN5LmRlY2ltYWxTZXBhcmF0b3IsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTyBJbnB1dCBxdWUgcmVjZWJlIGEgbGlzdGEgZG8gY29tcG9uZW50IHBhaSBlIGNoYW1hIG8gbcOpdG9kbyBkZSB2YWxpZGHDp8OjbyBwYXNzYW5kbyBhIGxpc3RhIHJlY2ViaWRhLlxuICAgICAqIEBwYXJhbSBwaXhBY2NvdW50TGlzdFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBnZXRMaXN0UGl4QWNjb3VudChwaXhBY2NvdW50TGlzdDogb2JqZWN0W10pIHtcbiAgICAgICAgaWYgKHBpeEFjY291bnRMaXN0KSB7XG4gICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnNBY2NvcmRpbmdMaXN0KHBpeEFjY291bnRMaXN0LCBudWxsLCBmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjZWJlIGEgbGlzdGEgZGUgcmVnaXN0cm9zIGrDoSBpbnNlcmlkb3MgbmEgdGFiZWxhIGFkaWNpb25hIGVtIHVtYSB2YXJpw6F2ZWwgb3MgdmFsb3JlcyBxdWUgc2Vyw6NvIHVzYWRvcyBwYXJhXG4gICAgICogYSB2YWxpZGHDp8OjbyBkb3MgY2FtcG9zIFwicGVyY2VudGFnZVwiIGUgXCJwaXhBY2NvdW50XCIuXG4gICAgICogUXVhbmRvIHRlbSBpbmRleCBzaWduaWZpY2EgcXVlIGVzdMOhIGVtIHVtYSBlZGnDp8Ojbywgb3MgdmFsb3JlcyBuYSBwb3Npw6fDo28gZG8gcmVnaXN0cm8gZGEgZWRpw6fDo28gKGluZGV4KSBuw6NvIHNlcsOjbyBhZGljaW9uYWRvc1xuICAgICAqIG5vIGFycmF5IGRlIGNvbXBhcmHDp8OjbyBkb3MgdmFsaWRhdG9ycy5cbiAgICAgKiBAcGFyYW0gcGl4QWNjb3VudExpc3RcbiAgICAgKiBAcGFyYW0gaW5kZXhcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldFZhbGlkYXRvcnNBY2NvcmRpbmdMaXN0KHBpeEFjY291bnRMaXN0OiBvYmplY3RbXSwgaW5kZXg6IG51bWJlciA9IG51bGwsIGlzRWRpdE1vZGU6IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgICAgIHRoaXMucGl4QWNjb3VudExpc3QgPSBwaXhBY2NvdW50TGlzdCAmJiBwaXhBY2NvdW50TGlzdC5sZW5ndGggPyBbLi4ucGl4QWNjb3VudExpc3RdIDogW107XG5cbiAgICAgICAgY29uc3QgcGVyY2VudGFnZUluY2x1ZGVkOiBhbnkgPSBbXTtcblxuICAgICAgICBpZiAodGhpcy5waXhBY2NvdW50TGlzdCAmJiB0aGlzLnBpeEFjY291bnRMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50TGlzdC5maWx0ZXIoKGZpZWxkOiBhbnksIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZFtcInBlcmNlbnRhZ2VcIl0gJiYga2V5ICE9IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2VJbmNsdWRlZC5wdXNoKGZpZWxkW1wicGVyY2VudGFnZVwiXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmJlZm9yZVNldFBpeEtleVR5cGVWYWxpZGF0b3IoKTtcbiAgICAgICAgdGhpcy5zZXRQaXhLZXlWYWxpZGF0b3JzKGlzRWRpdE1vZGUpO1xuICAgICAgICB0aGlzLnZhbGlkYXRlUGVyY2VudGFnZVZhbGlkKHBlcmNlbnRhZ2VJbmNsdWRlZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW50ZXMgZGUgc2V0YXIgbyB2YWxpZGF0b3IgcHJlcGFyYSBhcyB2YXJpw6F2ZWlzIG5lY2Vzc8OhcmlhIHBhcmEgcXVlIHNlamEgZmVpdGEgYSB2YWxpZGHDp8OjbyBkbyBjYW1wby5cbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0UGl4S2V5VmFsaWRhdG9ycyhpc0VkaXRNb2RlOiBib29sZWFuKSB7XG4gICAgICAgIGNvbnN0IGdlbmVyaWNQaXhLZXkgPSB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpO1xuICAgICAgICBpZiAodGhpcy5waXhLZXlUeXBlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMucGl4S2V5VHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJURUxFUEhPTkVcIjpcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY1BpeEtleS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLCBHZW5lcmljVmFsaWRhdG9yLmlzVmFsaWRQaG9uZU51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgXSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiRU1BSUxcIjpcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY1BpeEtleS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLCBHZW5lcmljVmFsaWRhdG9yLmlzVmFsaWRFbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgXSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiQ1BGXCI6XG4gICAgICAgICAgICAgICAgICAgIGdlbmVyaWNQaXhLZXkuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCwgR2VuZXJpY1ZhbGlkYXRvci5pc1ZhbGlkQ3BmLFxuICAgICAgICAgICAgICAgICAgICBdKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJDTlBKXCI6XG4gICAgICAgICAgICAgICAgICAgIGdlbmVyaWNQaXhLZXkuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCwgR2VuZXJpY1ZhbGlkYXRvci5pc1ZhbGlkQ25waixcbiAgICAgICAgICAgICAgICAgICAgXSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiUkFORE9NX0tFWVwiOlxuICAgICAgICAgICAgICAgICAgICBnZW5lcmljUGl4S2V5LnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGdlbmVyaWNQaXhLZXkuc2V0VmFsaWRhdG9ycyhudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmKGlzRWRpdE1vZGUpIHtcbiAgICAgICAgICAgICAgICBnZW5lcmljUGl4S2V5LmVuYWJsZSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBnZW5lcmljUGl4S2V5LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXN0ZSBtw6l0b2RvIGNhbGN1bGEgYXMgcGFyY2VudGFnZW5zIHF1ZSBqw6EgZm9yYW0gaW5zZXJpZGFzLCBlIHNldGEgYSBkaWZlcmVuw6dhIHBhcmEgY2hlZ2FyIGVtXG4gICAgICogMTAwJSBuYSB2YWxpZGHDp8OjbyBkbyBjYW1wbyBcInBlcmNlbnRhZ2VcIiBjb21vIHVtIG5vdm8gbWF4VmFsdWU7XG4gICAgICogQHBhcmFtIGxpc3RWYWx1ZVxuICAgICAqL1xuICAgIHByaXZhdGUgdmFsaWRhdGVQZXJjZW50YWdlVmFsaWQobGlzdFZhbHVlOiBudW1iZXJbXSkge1xuICAgICAgICBjb25zdCBwZXJjZW50YWdlID0gdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBlcmNlbnRhZ2VcIik7XG4gICAgICAgIHRoaXMubWF4VmFsdWVQZXJjZW50YWdlID0gbGlzdFZhbHVlXG4gICAgICAgICAgICAucmVkdWNlKChjdXJyZW50VmFsdWUsIHRvdGFsKSA9PiBjdXJyZW50VmFsdWUgLSB0b3RhbCxcbiAgICAgICAgICAgICAgICAxMDAuMDAsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIHBlcmNlbnRhZ2VcbiAgICAgICAgICAgIC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgLi4udGhpcy5pbml0aWFsVmFsaWRhdG9yT2ZQZXJjZW50YWdlLFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KHRoaXMubWF4VmFsdWVQZXJjZW50YWdlKSxcbiAgICAgICAgICAgIF0pKTtcbiAgICAgICAgcGVyY2VudGFnZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGlzVmlld01vZGUoY29uZGl0aW9uOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaXNWaWV3ID0gISEoY29uZGl0aW9uICYmICF0aGlzLndpdGhTaWRlQmFyKTtcbiAgICAgICAgdGhpcy5jb25maWdFbmFibGVGaWVsZHMoIXRoaXMuaXNWaWV3KTtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmlldykgdGhpcy5yZXNldEZvcm0oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGhvbmVNYXNrKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgRm9ybWF0VXRpbHNTZXJ2aWNlLmZvcm1hdFRlbGVwaG9uZUlucHV0RXZlbnQoZXZlbnQpO1xuICAgIH1cblxuICAgIHNldERlZmF1bHRDcGZQaXhLZXkoKSB7XG4gICAgICAgIGlmKHRoaXMuZGVmYXVsdENwZk51bWJlcikge1xuICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVwiKS5zZXRWYWx1ZSh0aGlzLmRlZmF1bHRDcGZOdW1iZXIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc2hlZXREb2N1bWVudCA9IHRoaXMucGFyYW1zRm9ybS5nZXQoXCJzaGVldERvY3VtZW50XCIpO1xuICAgICAgICAgICAgaWYoc2hlZXREb2N1bWVudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNwZiA9IHNoZWV0RG9jdW1lbnQuZ2V0KFwiY3BmTnVtYmVyXCIpLnZhbHVlO1xuICAgICAgICAgICAgICAgIGlmKGNwZikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpLnNldFZhbHVlKGNwZik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGJlZm9yZVNldFBpeEtleVR5cGVWYWxpZGF0b3IoKSB7XG4gICAgICAgIGNvbnN0IHBpeEtleVR5cGUgPSB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5VHlwZVwiKTtcblxuICAgICAgICBpZiAodGhpcy5waXhBY2NvdW50TGlzdCAmJiB0aGlzLnBpeEFjY291bnRMaXN0Lmxlbmd0aCAmJiBwaXhLZXlUeXBlKSB7XG4gICAgICAgICAgICBwaXhLZXlUeXBlXG4gICAgICAgICAgICAgICAgLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWxpZGF0ZUR1cGxpY2F0ZVBpeEtleVR5cGVCYW5rQWNjb3VudCh0aGlzLnBpeEFjY291bnRMaXN0KSxcbiAgICAgICAgICAgICAgICBdKSk7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBpeEtleVR5cGUuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVEdXBsaWNhdGVQaXhLZXlUeXBlQmFua0FjY291bnQobGlzdENvbXBhcmU6IG9iamVjdFtdKSB7XG4gICAgICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdG9ycyA9PiB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNvbnRyb2wgJiYgY29udHJvbC52YWx1ZTtcbiAgICAgICAgICAgIGxldCBjb25kaXRpb24gPSBmYWxzZTtcbiAgICAgICAgICAgIGxpc3RDb21wYXJlLmZpbHRlcigoZmllbGQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaWVsZFtcInBpeEtleVR5cGVcIl0ua2V5ID09PSAnQkFOS19BQ0NPVU5UJyAmJiB2YWx1ZS5rZXkgPT09IGZpZWxkW1wicGl4S2V5VHlwZVwiXS5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb25kaXRpb24gPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChjb25kaXRpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyBwaXhLZXlUeXBlQmFua0FjY291bnREdXBsaWNhdGU6IHRydWUgfTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxufVxuIl19
376
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yaWNhbC1waXgtYWNjb3VudC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLXBlc3NvYXMvcGF5cm9sbC1jb3JlLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9oaXN0b3JpY2FsLXBpeC1hY2NvdW50L2hpc3RvcmljYWwtcGl4LWFjY291bnQtZm9ybS9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGFBQWEsRUFDYixTQUFTLEVBQ1QsT0FBTyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEcsT0FBTyxFQUF1QixxQkFBcUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUNILHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsaUJBQWlCLEdBQ3BCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFPbkYsSUFBYSxpQ0FBaUMsR0FBOUMsTUFBYSxpQ0FBaUM7SUF5QzFDLFlBQ1ksV0FBd0IsRUFDeEIsRUFBcUI7UUFEckIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsT0FBRSxHQUFGLEVBQUUsQ0FBbUI7UUFoQzFCLGdCQUFXLEdBQVksSUFBSSxDQUFDO1FBRTVCLGVBQVUsR0FBWSxLQUFLLENBQUM7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LElBQUksRUFBRSxDQUFDO2FBQ25EO2lCQUFNO2dCQUNILE9BQU8sSUFBSSxDQUFDO2FBQ2Y7UUFDTCxDQUFDLENBQUM7SUFDTixDQUFDO0NBQ0osQ0FBQTs7WUFyVjRCLFdBQVc7WUFDcEIsaUJBQWlCOztBQXpDakM7SUFEQyxTQUFTLENBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUM7dUVBQ2Y7QUFHcEM7SUFEQyxLQUFLLEVBQUU7bUVBQzZCO0FBRXJDO0lBREMsS0FBSyxFQUFFO3VFQUNvQjtBQUU1QjtJQURDLEtBQUssRUFBRTt3RUFDcUI7QUFFN0I7SUFEQyxLQUFLLEVBQUU7c0VBQzJCO0FBRW5DO0lBREMsS0FBSyxFQUFFO3FFQUMyQjtBQUVuQztJQURDLEtBQUssRUFBRTtxRUFDeUM7QUFFakQ7SUFEQyxLQUFLLEVBQUU7MkVBQytCO0FBRXZDO0lBREMsS0FBSyxFQUFFO3FGQUMyQztBQUduRDtJQURDLE1BQU0sRUFBRTt3RUFDaUU7QUFFMUU7SUFEQyxNQUFNLEVBQUU7K0VBQ2dFO0FBcUZ6RTtJQURDLEtBQUssRUFBRTtnRUFHUDtBQVFEO0lBREMsS0FBSyxFQUFFOzJFQTBCUDtBQWlGRDtJQURDLEtBQUssRUFBRTswRUFPUDtBQTZGRDtJQURDLEtBQUssRUFBRTttRUFLUDtBQXhVUSxpQ0FBaUM7SUFMN0MsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLGFBQWE7UUFDdkIsbzVOQUEyRDs7S0FFOUQsQ0FBQztHQUNXLGlDQUFpQyxDQStYN0M7U0EvWFksaUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgT25EZXN0cm95LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgVmlld0NoaWxkLFxuICAgIERvQ2hlY2ssXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzLCBWYWxpZGF0b3JGbiwgQWJzdHJhY3RDb250cm9sIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBOdW1iZXJMb2NhbGVPcHRpb25zLCBDdXN0b21GaWVsZHNDb21wb25lbnQgfSBmcm9tIFwiQHNlbmlvcnNpc3RlbWFzL2FuZ3VsYXItY29tcG9uZW50c1wiO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge1xuICAgIHZlcmlmeVZhbGlkYXRpb25zRm9ybSxcbiAgICBjb25maWdFbmFibGVkRmllbGRzLFxuICAgIG1vdW50Q3VzdG9tVG9TaG93LFxufSBmcm9tIFwiLi4vLi4vdXRpbHMvaGVscGVyc1wiO1xuaW1wb3J0IHsgR2VuZXJpY1ZhbGlkYXRvciB9IGZyb20gXCIuLi8uLi91dGlscy9nZW5lcmljLXZhbGlkYXRvcnNcIjtcbmltcG9ydCB7IEZvcm1hdFV0aWxzU2VydmljZSB9IGZyb20gXCIuLi8uLi91dGlscy9mb3JtYXQtdXRpbHMvZm9ybWF0LXV0aWxzLnNlcnZpY2VcIjtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6IFwicGl4LWFjY291bnRcIixcbiAgICB0ZW1wbGF0ZVVybDogXCIuL2hpc3RvcmljYWwtcGl4LWFjY291bnQtZm9ybS5jb21wb25lbnQuaHRtbFwiLFxuICAgIHN0eWxlVXJsczogW1wiLi4vaGlzdG9yaWNhbC1waXgtYWNjb3VudC5jb21wb25lbnQuc2Nzc1wiXVxufSlcbmV4cG9ydCBjbGFzcyBIaXN0b3JpY2FsUGl4QWNjb3VudEZvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCwgRG9DaGVjayB7XG4gICAgQFZpZXdDaGlsZChDdXN0b21GaWVsZHNDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgY3VzdG9tRmllbGRzOiBDdXN0b21GaWVsZHNDb21wb25lbnQ7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdXJyZW5jeTogTnVtYmVyTG9jYWxlT3B0aW9ucztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdXN0b21FbnRpdHk6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjdXN0b21TZXJ2aWNlOiBzdHJpbmc7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgd2l0aFNpZGVCYXI6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlzRWRpdE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwYXJhbXNGb3JtOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkZWZhdWx0Q3BmTnVtYmVyOiBzdHJpbmcgPSBudWxsO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBlcm1pdHNFZGl0QmFua0FjY291bnRGb3JtOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdmlzaWJsZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBwaXhBY2NvdW50SXRlbVRvTGlzdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICAgIHByaXZhdGUgX3Zpc2libGU6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcbiAgICBwcml2YXRlIGVtcGxveWVlSWQ6IHN0cmluZztcbiAgICBwcml2YXRlIHBpeEFjY291bnRMaXN0OiBvYmplY3RbXTtcbiAgICBwcml2YXRlIGluaXRpYWxWYWxpZGF0b3JPZlBlcmNlbnRhZ2U6IFZhbGlkYXRvckZuW10gPSBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4oMC4wMSldO1xuXG5cbiAgICBwdWJsaWMgbGFiZWxCdG5BZGQ6IHN0cmluZyA9IFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX2FkZFwiO1xuICAgIHB1YmxpYyBwaXhBY2NvdW50Rm9ybUdyb3VwOiBGb3JtR3JvdXA7XG4gICAgcHVibGljIG1heFZhbHVlUGVyY2VudGFnZTogbnVtYmVyID0gMTAwLjAwO1xuICAgIHB1YmxpYyB2aXNpYmxlQnRuU2F2ZTogYm9vbGVhbiA9IHRydWU7XG4gICAgcHVibGljIGlzVmlldzogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBwaXhLZXlUeXBlOiBzdHJpbmc7XG4gICAgcHVibGljIGlzU2hvd1BpeEtleUZpZWxkVmFsaWRhdG9yTWVzc2FnZSA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICApIHtcbiAgICAgICAgdGhpcy5jcmVhdGVGb3JtR3JvdXAoKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclN1YmplY3RzKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwICYmIHRoaXMucGl4S2V5VHlwZSA9PT0gXCJCQU5LX0FDQ09VTlRcIikge1xuICAgICAgICAgICAgY29uc3QgcGl4S2V5Q29udHJvbCA9IHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlcIik7XG4gICAgICAgICAgICBpZiAocGl4S2V5Q29udHJvbCAmJiAhcGl4S2V5Q29udHJvbC5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgIHBpeEtleUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZ2lzdGVyU3ViamVjdHMoKTogdm9pZCB7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjcmVhdGVGb3JtR3JvdXAoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xuICAgICAgICAgICAgaWQ6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgIGluZGV4OiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCksXG4gICAgICAgICAgICBlbXBsb3llZTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKHsgdmFsdWU6IHsgdGFibGVJZDogbnVsbCB9LCBkaXNhYmxlZDogdHJ1ZSB9KSxcbiAgICAgICAgICAgIGRhdGVDaGFuZ2U6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgIHBpeEtleVR5cGU6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgICAgIHBpeEtleTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwpLFxuICAgICAgICAgICAgcGVyY2VudGFnZTogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgLi4udGhpcy5pbml0aWFsVmFsaWRhdG9yT2ZQZXJjZW50YWdlLFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KHRoaXMubWF4VmFsdWVQZXJjZW50YWdlKSxcbiAgICAgICAgICAgIF0pKSxcbiAgICAgICAgICAgIGV4dGVybmFsSWQ6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgIGN1c3RvbUZpZWxkczogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwpLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DaGFuZ2VQaXhLZXlUeXBlKGl0ZW06IGFueSkge1xuICAgICAgICBpZiAoaXRlbS5rZXkpIHtcbiAgICAgICAgICAgIHRoaXMucGl4S2V5VHlwZSA9IGl0ZW0ua2V5O1xuICAgICAgICAgICAgdGhpcy5pc1Nob3dQaXhLZXlGaWVsZFZhbGlkYXRvck1lc3NhZ2UgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVwiKS5yZXNldCgpO1xuICAgICAgICAgICAgdGhpcy5zZXRQaXhLZXlWYWxpZGF0b3JzKHRydWUpO1xuXG4gICAgICAgICAgICBpZihpdGVtLmtleSA9PT0gXCJDUEZcIikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdENwZlBpeEtleSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xlYXJQaXhLZXlUeXBlKCkge1xuICAgICAgICB0aGlzLmlzU2hvd1BpeEtleUZpZWxkVmFsaWRhdG9yTWVzc2FnZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl92aXNpYmxlID0gdmFsdWU7XG4gICAgICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KHRoaXMudmlzaWJsZSk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGlzRWRpdEFuZFZpZXdWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICAgIHRoaXMudmlzaWJsZUJ0blNhdmUgPSB0cnVlO1xuXG4gICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5wZXJtaXRzRWRpdEJhbmtBY2NvdW50KSB7XG4gICAgICAgICAgICB0aGlzLnBlcm1pdHNFZGl0QmFua0FjY291bnRGb3JtID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5jdXJyZW50SXRlbSAmJiBPYmplY3Qua2V5cyh2YWx1ZS5jdXJyZW50SXRlbSkubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aGlzLmNvbnZlcnREVE9Ub1Nob3dXaXRoQ3VzdG9tRmllbGRzKHsuLi52YWx1ZS5jdXJyZW50SXRlbX0pKTtcbiAgICAgICAgICAgIHRoaXMubGFiZWxCdG5BZGQgPSBcImhjbS5wYXlyb2xsLmVtcGxveWVlc191cGRhdGVcIjtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9yc0FjY29yZGluZ0xpc3QodmFsdWUubGlzdERhdGEsIHZhbHVlLmN1cnJlbnRJdGVtW1wiaW5kZXhcIl0sIHZhbHVlICYmIHZhbHVlW1wiaXNFZGl0TW9kZVwiXSk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNWaWV3KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25maWdFbmFibGVGaWVsZHModmFsdWUgJiYgdmFsdWVbXCJpc0VkaXRNb2RlXCJdKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYodGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVR5cGVcIikudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5waXhLZXlUeXBlID0gdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVR5cGVcIikudmFsdWUua2V5O1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybWF0UGl4S2V5VGVsZXBob25lTnVtYmVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sYWJlbEJ0bkFkZCA9IFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX2FkZFwiO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcm1hdFBpeEtleVRlbGVwaG9uZU51bWJlcigpIHtcbiAgICAgICAgaWYgKHRoaXMucGl4S2V5VHlwZSA9PT0gXCJURUxFUEhPTkVcIikge1xuICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVwiKS5zZXRWYWx1ZShGb3JtYXRVdGlsc1NlcnZpY2UuZ2V0Rm9ybWF0dGVkVGVsZXBob25lTnVtYmVyKHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlcIikudmFsdWUpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjb252ZXJ0RFRPVG9TaG93V2l0aEN1c3RvbUZpZWxkcyhkYXRhOiBvYmplY3QpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCBvYmo6IGFueSA9IHsuLi4gZGF0YX07XG4gICAgICAgIG9ialtcImN1c3RvbUZpZWxkc1wiXSA9IG1vdW50Q3VzdG9tVG9TaG93KG9ialtcImN1c3RvbUZpZWxkc1wiXSk7XG4gICAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb25maWdFbmFibGVGaWVsZHMoaXNFZGl0TW9kZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnZpc2libGVCdG5TYXZlID0gaXNFZGl0TW9kZTtcblxuICAgICAgICBpZih0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5VHlwZVwiKS52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5waXhLZXlUeXBlID0gdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVR5cGVcIikudmFsdWUua2V5O1xuICAgICAgICAgICAgdGhpcy5zZXRQaXhLZXlWYWxpZGF0b3JzKGlzRWRpdE1vZGUpO1xuXG4gICAgICAgICAgICB0aGlzLmZvcm1hdFBpeEtleVRlbGVwaG9uZU51bWJlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnRW5hYmxlZEZpZWxkcyh0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAsIGlzRWRpdE1vZGUsIFtcbiAgICAgICAgICAgIFwicGl4S2V5VHlwZVwiLFxuICAgICAgICAgICAgXCJwaXhLZXlcIixcbiAgICAgICAgICAgIFwicGVyY2VudGFnZVwiLFxuICAgICAgICAgICAgXCJjdXN0b21GaWVsZHNcIixcbiAgICAgICAgXSwgW10pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEl0ZW0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIHZlcmlmeVZhbGlkYXRpb25zRm9ybS5jYWxsKHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cCk7XG5cbiAgICAgICAgaWYgKHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC52YWxpZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZW1wbG95ZWVJZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJlbXBsb3llZVwiKS5zZXRWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlSWQ6IHRoaXMuZW1wbG95ZWVJZCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJcIixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucGl4QWNjb3VudEl0ZW1Ub0xpc3QuZW1pdCh0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKSk7XG4gICAgICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAucmVzZXQoKTtcbiAgICAgICAgdGhpcy5sYWJlbEJ0bkFkZCA9IFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX2FkZFwiO1xuICAgICAgICBpZiAodGhpcy5jdXN0b21GaWVsZHMgJiYgdGhpcy5jdXN0b21GaWVsZHMuZm9ybUdyb3VwKSB0aGlzLmN1c3RvbUZpZWxkcy5mb3JtR3JvdXAucmVzZXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBlcmNlbnRhZ2VQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYDAkeyB0aGlzLmN1cnJlbmN5ICYmIHRoaXMuY3VycmVuY3kuZGVjaW1hbFNlcGFyYXRvciB9MDBgO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb3B0aW9uc1BlcmNlbnRhZ2UoKTogb2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIHsgLi4udGhpcy5nZXRPcHRpb25zKCksIHByZWNpc2lvbjogMiB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T3B0aW9ucygpOiBhbnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJlZml4OiBcIlwiLFxuICAgICAgICAgICAgdGhvdXNhbmRzOiB0aGlzLmN1cnJlbmN5LnRob3VzYW5kc1NlcGFyYXRvcixcbiAgICAgICAgICAgIGRlY2ltYWw6IHRoaXMuY3VycmVuY3kuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPIElucHV0IHF1ZSByZWNlYmUgYSBsaXN0YSBkbyBjb21wb25lbnQgcGFpIGUgY2hhbWEgbyBtw6l0b2RvIGRlIHZhbGlkYcOnw6NvIHBhc3NhbmRvIGEgbGlzdGEgcmVjZWJpZGEuXG4gICAgICogQHBhcmFtIHBpeEFjY291bnRMaXN0XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGdldExpc3RQaXhBY2NvdW50KHBpeEFjY291bnRMaXN0OiBvYmplY3RbXSkge1xuICAgICAgICBpZiAocGl4QWNjb3VudExpc3QpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9yc0FjY29yZGluZ0xpc3QocGl4QWNjb3VudExpc3QsIG51bGwsIGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZWNlYmUgYSBsaXN0YSBkZSByZWdpc3Ryb3MgasOhIGluc2VyaWRvcyBuYSB0YWJlbGEgYWRpY2lvbmEgZW0gdW1hIHZhcmnDoXZlbCBvcyB2YWxvcmVzIHF1ZSBzZXLDo28gdXNhZG9zIHBhcmFcbiAgICAgKiBhIHZhbGlkYcOnw6NvIGRvcyBjYW1wb3MgXCJwZXJjZW50YWdlXCIgZSBcInBpeEFjY291bnRcIi5cbiAgICAgKiBRdWFuZG8gdGVtIGluZGV4IHNpZ25pZmljYSBxdWUgZXN0w6EgZW0gdW1hIGVkacOnw6NvLCBvcyB2YWxvcmVzIG5hIHBvc2nDp8OjbyBkbyByZWdpc3RybyBkYSBlZGnDp8OjbyAoaW5kZXgpIG7Do28gc2Vyw6NvIGFkaWNpb25hZG9zXG4gICAgICogbm8gYXJyYXkgZGUgY29tcGFyYcOnw6NvIGRvcyB2YWxpZGF0b3JzLlxuICAgICAqIEBwYXJhbSBwaXhBY2NvdW50TGlzdFxuICAgICAqIEBwYXJhbSBpbmRleFxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0VmFsaWRhdG9yc0FjY29yZGluZ0xpc3QocGl4QWNjb3VudExpc3Q6IG9iamVjdFtdLCBpbmRleDogbnVtYmVyID0gbnVsbCwgaXNFZGl0TW9kZTogYm9vbGVhbiA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5waXhBY2NvdW50TGlzdCA9IHBpeEFjY291bnRMaXN0ICYmIHBpeEFjY291bnRMaXN0Lmxlbmd0aCA/IFsuLi5waXhBY2NvdW50TGlzdF0gOiBbXTtcblxuICAgICAgICBjb25zdCBwZXJjZW50YWdlSW5jbHVkZWQ6IGFueSA9IFtdO1xuXG4gICAgICAgIGlmICh0aGlzLnBpeEFjY291bnRMaXN0ICYmIHRoaXMucGl4QWNjb3VudExpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnBpeEFjY291bnRMaXN0LmZpbHRlcigoZmllbGQ6IGFueSwga2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGZpZWxkW1wicGVyY2VudGFnZVwiXSAmJiBrZXkgIT0gaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVyY2VudGFnZUluY2x1ZGVkLnB1c2goZmllbGRbXCJwZXJjZW50YWdlXCJdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG4gICAgICAgIHRoaXMuYmVmb3JlU2V0UGl4S2V5VHlwZVZhbGlkYXRvcigpO1xuICAgICAgICB0aGlzLnNldFBpeEtleVZhbGlkYXRvcnMoaXNFZGl0TW9kZSk7XG4gICAgICAgIHRoaXMudmFsaWRhdGVQZXJjZW50YWdlVmFsaWQocGVyY2VudGFnZUluY2x1ZGVkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbnRlcyBkZSBzZXRhciBvIHZhbGlkYXRvciBwcmVwYXJhIGFzIHZhcmnDoXZlaXMgbmVjZXNzw6FyaWEgcGFyYSBxdWUgc2VqYSBmZWl0YSBhIHZhbGlkYcOnw6NvIGRvIGNhbXBvLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRQaXhLZXlWYWxpZGF0b3JzKGlzRWRpdE1vZGU6IGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3QgZ2VuZXJpY1BpeEtleSA9IHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlcIik7XG4gICAgICAgIGlmICh0aGlzLnBpeEtleVR5cGUpIHtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5waXhLZXlUeXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcIlRFTEVQSE9ORVwiOlxuICAgICAgICAgICAgICAgICAgICBnZW5lcmljUGl4S2V5LnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsIEdlbmVyaWNWYWxpZGF0b3IuaXNWYWxpZFBob25lTnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICBdKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJFTUFJTFwiOlxuICAgICAgICAgICAgICAgICAgICBnZW5lcmljUGl4S2V5LnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsIEdlbmVyaWNWYWxpZGF0b3IuaXNWYWxpZEVtYWlsLFxuICAgICAgICAgICAgICAgICAgICBdKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJDUEZcIjpcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY1BpeEtleS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLCBHZW5lcmljVmFsaWRhdG9yLmlzVmFsaWRDcGYsXG4gICAgICAgICAgICAgICAgICAgIF0pKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIkNOUEpcIjpcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY1BpeEtleS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLCBHZW5lcmljVmFsaWRhdG9yLmlzVmFsaWRDbnBqLFxuICAgICAgICAgICAgICAgICAgICBdKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJSQU5ET01fS0VZXCI6XG4gICAgICAgICAgICAgICAgICAgIGdlbmVyaWNQaXhLZXkuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY1BpeEtleS5zZXRWYWxpZGF0b3JzKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYoaXNFZGl0TW9kZSkge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNQaXhLZXkuZW5hYmxlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGdlbmVyaWNQaXhLZXkudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFc3RlIG3DqXRvZG8gY2FsY3VsYSBhcyBwYXJjZW50YWdlbnMgcXVlIGrDoSBmb3JhbSBpbnNlcmlkYXMsIGUgc2V0YSBhIGRpZmVyZW7Dp2EgcGFyYSBjaGVnYXIgZW1cbiAgICAgKiAxMDAlIG5hIHZhbGlkYcOnw6NvIGRvIGNhbXBvIFwicGVyY2VudGFnZVwiIGNvbW8gdW0gbm92byBtYXhWYWx1ZTtcbiAgICAgKiBAcGFyYW0gbGlzdFZhbHVlXG4gICAgICovXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZVBlcmNlbnRhZ2VWYWxpZChsaXN0VmFsdWU6IG51bWJlcltdKSB7XG4gICAgICAgIGNvbnN0IHBlcmNlbnRhZ2UgPSB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGVyY2VudGFnZVwiKTtcbiAgICAgICAgdGhpcy5tYXhWYWx1ZVBlcmNlbnRhZ2UgPSBsaXN0VmFsdWVcbiAgICAgICAgICAgIC5yZWR1Y2UoKGN1cnJlbnRWYWx1ZSwgdG90YWwpID0+IGN1cnJlbnRWYWx1ZSAtIHRvdGFsLFxuICAgICAgICAgICAgICAgIDEwMC4wMCxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgcGVyY2VudGFnZVxuICAgICAgICAgICAgLnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5jb21wb3NlKFtcbiAgICAgICAgICAgICAgICAuLi50aGlzLmluaXRpYWxWYWxpZGF0b3JPZlBlcmNlbnRhZ2UsXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXgodGhpcy5tYXhWYWx1ZVBlcmNlbnRhZ2UpLFxuICAgICAgICAgICAgXSkpO1xuICAgICAgICBwZXJjZW50YWdlLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgaXNWaWV3TW9kZShjb25kaXRpb246IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5pc1ZpZXcgPSAhIShjb25kaXRpb24gJiYgIXRoaXMud2l0aFNpZGVCYXIpO1xuICAgICAgICB0aGlzLmNvbmZpZ0VuYWJsZUZpZWxkcyghdGhpcy5pc1ZpZXcpO1xuICAgICAgICBpZiAoIXRoaXMuaXNWaWV3KSB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwaG9uZU1hc2soZXZlbnQ6IGFueSkge1xuICAgICAgICBGb3JtYXRVdGlsc1NlcnZpY2UuZm9ybWF0VGVsZXBob25lSW5wdXRFdmVudChldmVudCk7XG4gICAgfVxuXG4gICAgc2V0RGVmYXVsdENwZlBpeEtleSgpIHtcbiAgICAgICAgaWYodGhpcy5kZWZhdWx0Q3BmTnVtYmVyKSB7XG4gICAgICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpLnNldFZhbHVlKHRoaXMuZGVmYXVsdENwZk51bWJlcik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBzaGVldERvY3VtZW50ID0gdGhpcy5wYXJhbXNGb3JtLmdldChcInNoZWV0RG9jdW1lbnRcIik7XG4gICAgICAgICAgICBpZihzaGVldERvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3BmID0gc2hlZXREb2N1bWVudC5nZXQoXCJjcGZOdW1iZXJcIikudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYoY3BmKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlcIikuc2V0VmFsdWUoY3BmKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYmVmb3JlU2V0UGl4S2V5VHlwZVZhbGlkYXRvcigpIHtcbiAgICAgICAgY29uc3QgcGl4S2V5VHlwZSA9IHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlUeXBlXCIpO1xuXG4gICAgICAgIGlmICh0aGlzLnBpeEFjY291bnRMaXN0ICYmIHRoaXMucGl4QWNjb3VudExpc3QubGVuZ3RoICYmIHBpeEtleVR5cGUpIHtcbiAgICAgICAgICAgIHBpeEtleVR5cGVcbiAgICAgICAgICAgICAgICAuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRlRHVwbGljYXRlUGl4S2V5VHlwZUJhbmtBY2NvdW50KHRoaXMucGl4QWNjb3VudExpc3QpLFxuICAgICAgICAgICAgICAgIF0pKTtcblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcGl4S2V5VHlwZS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUR1cGxpY2F0ZVBpeEtleVR5cGVCYW5rQWNjb3VudChsaXN0Q29tcGFyZTogb2JqZWN0W10pIHtcbiAgICAgICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0b3JzID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY29udHJvbCAmJiBjb250cm9sLnZhbHVlO1xuICAgICAgICAgICAgbGV0IGNvbmRpdGlvbiA9IGZhbHNlO1xuICAgICAgICAgICAgbGlzdENvbXBhcmUuZmlsdGVyKChmaWVsZDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpZWxkW1wicGl4S2V5VHlwZVwiXS5rZXkgPT09ICdCQU5LX0FDQ09VTlQnICYmIHZhbHVlLmtleSA9PT0gZmllbGRbXCJwaXhLZXlUeXBlXCJdLmtleSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbmRpdGlvbiA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGNvbmRpdGlvbiAmJiAhdGhpcy5wZXJtaXRzRWRpdEJhbmtBY2NvdW50Rm9ybSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IHBpeEtleVR5cGVCYW5rQWNjb3VudER1cGxpY2F0ZTogdHJ1ZSB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG59XG4iXX0=