@senior-gestao-pessoas/payroll-core 9.1.0-4c189107-f538-4deb-9b77-aee8dab91b50 → 9.1.0-7f16e3ee-01cd-4128-8f8e-7bee7dee1e66

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 (40) hide show
  1. package/bundles/senior-gestao-pessoas-payroll-core.umd.js +992 -0
  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 +73 -0
  6. package/components/historical-pix-account/historical-pix-account.component.d.ts +74 -0
  7. package/components/historical-pix-account/historical-pix-account.module.d.ts +2 -0
  8. package/components/historical-pix-account/historical-pix-account.service.d.ts +8 -0
  9. package/components/historical-pix-account/index.d.ts +3 -0
  10. package/components/utils/format-utils/format-utils.service.d.ts +33 -0
  11. package/components/utils/generic-validators.d.ts +24 -0
  12. package/esm2015/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +307 -0
  13. package/esm2015/components/historical-pix-account/historical-pix-account.component.js +323 -0
  14. package/esm2015/components/historical-pix-account/historical-pix-account.module.js +58 -0
  15. package/esm2015/components/historical-pix-account/historical-pix-account.service.js +20 -0
  16. package/esm2015/components/historical-pix-account/index.js +4 -0
  17. package/esm2015/components/utils/format-utils/format-utils.service.js +96 -0
  18. package/esm2015/components/utils/generic-validators.js +164 -0
  19. package/esm2015/public_api.js +2 -1
  20. package/esm2015/senior-gestao-pessoas-payroll-core.js +2 -1
  21. package/esm5/components/historical-pix-account/historical-pix-account-form/historical-pix-account-form.component.js +331 -0
  22. package/esm5/components/historical-pix-account/historical-pix-account.component.js +357 -0
  23. package/esm5/components/historical-pix-account/historical-pix-account.module.js +61 -0
  24. package/esm5/components/historical-pix-account/historical-pix-account.service.js +22 -0
  25. package/esm5/components/historical-pix-account/index.js +4 -0
  26. package/esm5/components/utils/format-utils/format-utils.service.js +100 -0
  27. package/esm5/components/utils/generic-validators.js +167 -0
  28. package/esm5/public_api.js +2 -1
  29. package/esm5/senior-gestao-pessoas-payroll-core.js +2 -1
  30. package/fesm2015/senior-gestao-pessoas-payroll-core.js +921 -1
  31. package/fesm2015/senior-gestao-pessoas-payroll-core.js.map +1 -1
  32. package/fesm5/senior-gestao-pessoas-payroll-core.js +989 -1
  33. package/fesm5/senior-gestao-pessoas-payroll-core.js.map +1 -1
  34. package/locale/en-US.json +25 -1
  35. package/locale/es-ES.json +25 -1
  36. package/locale/pt-BR.json +25 -1
  37. package/package.json +1 -1
  38. package/public_api.d.ts +1 -0
  39. package/senior-gestao-pessoas-payroll-core.d.ts +1 -0
  40. package/senior-gestao-pessoas-payroll-core.metadata.json +1 -1
@@ -0,0 +1,331 @@
1
+ import * as tslib_1 from "tslib";
2
+ import { Component, OnInit, Input, Output, EventEmitter, ChangeDetectorRef, OnDestroy, AfterViewInit, ViewChild, } from "@angular/core";
3
+ import { FormGroup, FormBuilder, Validators, ValidatorFn } from "@angular/forms";
4
+ import { CustomFieldsComponent } from "@seniorsistemas/angular-components";
5
+ import { Subject } from "rxjs";
6
+ import { verifyValidationsForm, configEnabledFields, mountCustomToShow, } from "../../utils/helpers";
7
+ import { GenericValidator } from "../../utils/generic-validators";
8
+ import { FormatUtilsService } from "../../utils/format-utils/format-utils.service";
9
+ var HistoricalPixAccountFormComponent = /** @class */ (function () {
10
+ function HistoricalPixAccountFormComponent(formBuilder, cd) {
11
+ this.formBuilder = formBuilder;
12
+ this.cd = cd;
13
+ this.withSideBar = true;
14
+ this.isEditMode = false;
15
+ this.paramsForm = new FormGroup({});
16
+ this.visibleChange = new EventEmitter();
17
+ this.pixAccountItemToList = new EventEmitter();
18
+ this.ngUnsubscribe = new Subject();
19
+ this.initialValidatorOfPercentage = [Validators.required, Validators.min(0.01)];
20
+ this.labelBtnAdd = "hcm.payroll.employees_add";
21
+ this.maxValuePercentage = 100.00;
22
+ this.visibleBtnSave = true;
23
+ this.isView = false;
24
+ this.isShowPixKeyFieldValidatorMessage = false;
25
+ this.createFormGroup();
26
+ this.registerSubjects();
27
+ }
28
+ HistoricalPixAccountFormComponent.prototype.ngOnInit = function () {
29
+ };
30
+ HistoricalPixAccountFormComponent.prototype.ngAfterViewInit = function () {
31
+ this.cd.detectChanges();
32
+ };
33
+ HistoricalPixAccountFormComponent.prototype.ngOnDestroy = function () {
34
+ this.ngUnsubscribe.next(true);
35
+ this.ngUnsubscribe.unsubscribe();
36
+ };
37
+ HistoricalPixAccountFormComponent.prototype.registerSubjects = function () {
38
+ };
39
+ HistoricalPixAccountFormComponent.prototype.createFormGroup = function () {
40
+ this.pixAccountFormGroup = this.formBuilder.group({
41
+ id: this.formBuilder.control(null),
42
+ index: this.formBuilder.control(null),
43
+ employee: this.formBuilder.control({ value: { tableId: null }, disabled: true }),
44
+ dateChange: this.formBuilder.control(null),
45
+ pixKeyType: this.formBuilder.control(null, Validators.required),
46
+ pixKey: this.formBuilder.control(null),
47
+ percentage: this.formBuilder.control(null, Validators.compose(tslib_1.__spread(this.initialValidatorOfPercentage, [
48
+ Validators.max(this.maxValuePercentage),
49
+ ]))),
50
+ customFields: this.formBuilder.control(null),
51
+ });
52
+ };
53
+ HistoricalPixAccountFormComponent.prototype.onChangePixKeyType = function (item) {
54
+ if (item.key) {
55
+ this.pixKeyType = item.key;
56
+ this.isShowPixKeyFieldValidatorMessage = true;
57
+ this.pixAccountFormGroup.get("pixKey").reset();
58
+ this.setPixKeyValidators();
59
+ if (item.key === "CPF") {
60
+ this.setDefaultCpfPixKey();
61
+ }
62
+ }
63
+ };
64
+ HistoricalPixAccountFormComponent.prototype.onClearPixKeyType = function () {
65
+ this.isShowPixKeyFieldValidatorMessage = false;
66
+ this.pixAccountFormGroup.get("pixKey").reset();
67
+ };
68
+ Object.defineProperty(HistoricalPixAccountFormComponent.prototype, "visible", {
69
+ get: function () {
70
+ return this._visible;
71
+ },
72
+ set: function (value) {
73
+ this._visible = value;
74
+ this.visibleChange.emit(this.visible);
75
+ },
76
+ enumerable: true,
77
+ configurable: true
78
+ });
79
+ Object.defineProperty(HistoricalPixAccountFormComponent.prototype, "isEditAndViewValue", {
80
+ set: function (value) {
81
+ this.resetForm();
82
+ this.visibleBtnSave = true;
83
+ if (value && value.currentItem && Object.keys(value.currentItem).length) {
84
+ this.pixAccountFormGroup.patchValue(this.convertDTOToShowWithCustomFields(tslib_1.__assign({}, value.currentItem)));
85
+ this.labelBtnAdd = "hcm.payroll.employees_update";
86
+ this.setValidatorsAccordingList(value.listData, value.currentItem["index"]);
87
+ if (!this.isView) {
88
+ this.configEnableFields(value && value["isEditMode"]);
89
+ }
90
+ }
91
+ else {
92
+ this.labelBtnAdd = "hcm.payroll.employees_add";
93
+ }
94
+ },
95
+ enumerable: true,
96
+ configurable: true
97
+ });
98
+ HistoricalPixAccountFormComponent.prototype.convertDTOToShowWithCustomFields = function (data) {
99
+ var obj = tslib_1.__assign({}, data);
100
+ obj["customFields"] = mountCustomToShow(obj["customFields"]);
101
+ return obj;
102
+ };
103
+ HistoricalPixAccountFormComponent.prototype.configEnableFields = function (isEditMode) {
104
+ this.visibleBtnSave = isEditMode;
105
+ if (this.pixAccountFormGroup.get("pixKeyType").value) {
106
+ this.pixKeyType = this.pixAccountFormGroup.get("pixKeyType").value.key;
107
+ this.setPixKeyValidators();
108
+ if (this.pixKeyType === "TELEPHONE") {
109
+ this.pixAccountFormGroup.get("pixKey").setValue(FormatUtilsService.getFormattedTelephoneNumber(this.pixAccountFormGroup.get("pixKey").value));
110
+ }
111
+ }
112
+ configEnabledFields(this.pixAccountFormGroup, isEditMode, [
113
+ "pixKeyType",
114
+ "pixKey",
115
+ "percentage",
116
+ "customFields",
117
+ ], []);
118
+ };
119
+ HistoricalPixAccountFormComponent.prototype.close = function () {
120
+ this.resetForm();
121
+ this.visible = false;
122
+ };
123
+ HistoricalPixAccountFormComponent.prototype.addItem = function () {
124
+ this.pixAccountFormGroup.updateValueAndValidity();
125
+ verifyValidationsForm.call(this.pixAccountFormGroup);
126
+ if (this.pixAccountFormGroup.valid) {
127
+ if (this.employeeId) {
128
+ this.pixAccountFormGroup.get("employee").setValue({
129
+ tableId: this.employeeId,
130
+ name: "",
131
+ });
132
+ }
133
+ this.pixAccountItemToList.emit(this.pixAccountFormGroup.getRawValue());
134
+ this.visible = false;
135
+ this.resetForm();
136
+ }
137
+ };
138
+ HistoricalPixAccountFormComponent.prototype.resetForm = function () {
139
+ this.pixAccountFormGroup.reset();
140
+ this.labelBtnAdd = "hcm.payroll.employees_add";
141
+ if (this.customFields && this.customFields.formGroup)
142
+ this.customFields.formGroup.reset();
143
+ };
144
+ Object.defineProperty(HistoricalPixAccountFormComponent.prototype, "percentagePlaceholder", {
145
+ get: function () {
146
+ return "0" + (this.currency && this.currency.decimalSeparator) + "00";
147
+ },
148
+ enumerable: true,
149
+ configurable: true
150
+ });
151
+ Object.defineProperty(HistoricalPixAccountFormComponent.prototype, "optionsPercentage", {
152
+ get: function () {
153
+ return tslib_1.__assign({}, this.getOptions(), { precision: 2 });
154
+ },
155
+ enumerable: true,
156
+ configurable: true
157
+ });
158
+ HistoricalPixAccountFormComponent.prototype.getOptions = function () {
159
+ return {
160
+ prefix: "",
161
+ thousands: this.currency.thousandsSeparator,
162
+ decimal: this.currency.decimalSeparator,
163
+ };
164
+ };
165
+ Object.defineProperty(HistoricalPixAccountFormComponent.prototype, "getListPixAccount", {
166
+ /**
167
+ * O Input que recebe a lista do component pai e chama o método de validação passando a lista recebida.
168
+ * @param pixAccountList
169
+ */
170
+ set: function (pixAccountList) {
171
+ if (pixAccountList) {
172
+ this.setValidatorsAccordingList(pixAccountList);
173
+ }
174
+ else {
175
+ this.resetForm();
176
+ }
177
+ },
178
+ enumerable: true,
179
+ configurable: true
180
+ });
181
+ /**
182
+ * Recebe a lista de registros já inseridos na tabela adiciona em uma variável os valores que serão usados para
183
+ * a validação dos campos "percentage" e "pixAccount".
184
+ * Quando tem index significa que está em uma edição, os valores na posição do registro da edição (index) não serão adicionados
185
+ * no array de comparação dos validators.
186
+ * @param pixAccountList
187
+ * @param index
188
+ */
189
+ HistoricalPixAccountFormComponent.prototype.setValidatorsAccordingList = function (pixAccountList, index) {
190
+ if (index === void 0) { index = null; }
191
+ this.pixAccountList = pixAccountList && pixAccountList.length ? tslib_1.__spread(pixAccountList) : [];
192
+ var percentageIncluded = [];
193
+ if (this.pixAccountList && this.pixAccountList.length) {
194
+ this.pixAccountList.filter(function (field, key) {
195
+ if (field["percentage"] && key != index) {
196
+ percentageIncluded.push(field["percentage"]);
197
+ }
198
+ });
199
+ }
200
+ this.setPixKeyValidators();
201
+ this.validatePercentageValid(percentageIncluded);
202
+ };
203
+ /**
204
+ * Antes de setar o validator prepara as variáveis necessária para que seja feita a validação do campo.
205
+ */
206
+ HistoricalPixAccountFormComponent.prototype.setPixKeyValidators = function () {
207
+ var genericPixKey = this.pixAccountFormGroup.get("pixKey");
208
+ if (this.pixKeyType) {
209
+ switch (this.pixKeyType) {
210
+ case "TELEPHONE":
211
+ genericPixKey.setValidators(Validators.compose([
212
+ Validators.required, GenericValidator.isValidPhoneNumber,
213
+ ]));
214
+ break;
215
+ case "EMAIL":
216
+ genericPixKey.setValidators(Validators.compose([
217
+ Validators.required, GenericValidator.isValidEmail,
218
+ ]));
219
+ break;
220
+ case "CPF":
221
+ genericPixKey.setValidators(Validators.compose([
222
+ Validators.required, GenericValidator.isValidCpf,
223
+ ]));
224
+ break;
225
+ case "CNPJ":
226
+ genericPixKey.setValidators(Validators.compose([
227
+ Validators.required, GenericValidator.isValidCnpj,
228
+ ]));
229
+ break;
230
+ case "RANDOM_KEY":
231
+ genericPixKey.setValidators(Validators.required);
232
+ break;
233
+ default:
234
+ genericPixKey.setValidators(null);
235
+ break;
236
+ }
237
+ genericPixKey.enable();
238
+ genericPixKey.updateValueAndValidity();
239
+ }
240
+ };
241
+ /**
242
+ * Este método calcula as parcentagens que já foram inseridas, e seta a diferença para chegar em
243
+ * 100% na validação do campo "percentage" como um novo maxValue;
244
+ * @param listValue
245
+ */
246
+ HistoricalPixAccountFormComponent.prototype.validatePercentageValid = function (listValue) {
247
+ var percentage = this.pixAccountFormGroup.get("percentage");
248
+ this.maxValuePercentage = listValue
249
+ .reduce(function (currentValue, total) { return currentValue - total; }, 100.00);
250
+ percentage
251
+ .setValidators(Validators.compose(tslib_1.__spread(this.initialValidatorOfPercentage, [
252
+ Validators.max(this.maxValuePercentage),
253
+ ])));
254
+ percentage.updateValueAndValidity();
255
+ };
256
+ Object.defineProperty(HistoricalPixAccountFormComponent.prototype, "isViewMode", {
257
+ set: function (condition) {
258
+ this.isView = !!(condition && !this.withSideBar);
259
+ this.configEnableFields(!this.isView);
260
+ if (!this.isView)
261
+ this.resetForm();
262
+ },
263
+ enumerable: true,
264
+ configurable: true
265
+ });
266
+ HistoricalPixAccountFormComponent.prototype.phoneMask = function (event) {
267
+ FormatUtilsService.formatTelephoneInputEvent(event);
268
+ };
269
+ HistoricalPixAccountFormComponent.prototype.setDefaultCpfPixKey = function () {
270
+ var sheetDocument = this.paramsForm.get("sheetDocument");
271
+ if (sheetDocument) {
272
+ var cpf = sheetDocument.get("cpfNumber").value;
273
+ if (cpf) {
274
+ this.pixAccountFormGroup.get("pixKey").setValue(cpf);
275
+ }
276
+ }
277
+ };
278
+ HistoricalPixAccountFormComponent.ctorParameters = function () { return [
279
+ { type: FormBuilder },
280
+ { type: ChangeDetectorRef }
281
+ ]; };
282
+ tslib_1.__decorate([
283
+ ViewChild(CustomFieldsComponent, { static: true })
284
+ ], HistoricalPixAccountFormComponent.prototype, "customFields", void 0);
285
+ tslib_1.__decorate([
286
+ Input()
287
+ ], HistoricalPixAccountFormComponent.prototype, "currency", void 0);
288
+ tslib_1.__decorate([
289
+ Input()
290
+ ], HistoricalPixAccountFormComponent.prototype, "customEntity", void 0);
291
+ tslib_1.__decorate([
292
+ Input()
293
+ ], HistoricalPixAccountFormComponent.prototype, "customService", void 0);
294
+ tslib_1.__decorate([
295
+ Input()
296
+ ], HistoricalPixAccountFormComponent.prototype, "withSideBar", void 0);
297
+ tslib_1.__decorate([
298
+ Input()
299
+ ], HistoricalPixAccountFormComponent.prototype, "isEditMode", void 0);
300
+ tslib_1.__decorate([
301
+ Input()
302
+ ], HistoricalPixAccountFormComponent.prototype, "paramsForm", void 0);
303
+ tslib_1.__decorate([
304
+ Output()
305
+ ], HistoricalPixAccountFormComponent.prototype, "visibleChange", void 0);
306
+ tslib_1.__decorate([
307
+ Output()
308
+ ], HistoricalPixAccountFormComponent.prototype, "pixAccountItemToList", void 0);
309
+ tslib_1.__decorate([
310
+ Input()
311
+ ], HistoricalPixAccountFormComponent.prototype, "visible", null);
312
+ tslib_1.__decorate([
313
+ Input()
314
+ ], HistoricalPixAccountFormComponent.prototype, "isEditAndViewValue", null);
315
+ tslib_1.__decorate([
316
+ Input()
317
+ ], HistoricalPixAccountFormComponent.prototype, "getListPixAccount", null);
318
+ tslib_1.__decorate([
319
+ Input()
320
+ ], HistoricalPixAccountFormComponent.prototype, "isViewMode", null);
321
+ HistoricalPixAccountFormComponent = tslib_1.__decorate([
322
+ Component({
323
+ selector: "pix-account",
324
+ 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]=\"{ required: 'hcm.payroll.required' | translate }\">\n </s-control-errors>\n </div>\n <!--Chave Pix-->\n <div class=\"ui-md-6 ui-sm-12 required\">\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=\"'RANDOM_KEY'\"\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"/>\n <input *ngSwitchDefault disabled\n pInputText id=\"ta-pixKey\" name=\"pixKey\" formControlName=\"pixKey\"/>\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",
325
+ 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}"]
326
+ })
327
+ ], HistoricalPixAccountFormComponent);
328
+ return HistoricalPixAccountFormComponent;
329
+ }());
330
+ export { HistoricalPixAccountFormComponent };
331
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlzdG9yaWNhbC1waXgtYWNjb3VudC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BzZW5pb3ItZ2VzdGFvLXBlc3NvYXMvcGF5cm9sbC1jb3JlLyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9oaXN0b3JpY2FsLXBpeC1hY2NvdW50L2hpc3RvcmljYWwtcGl4LWFjY291bnQtZm9ybS9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGFBQWEsRUFDYixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sRUFBdUIscUJBQXFCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNoRyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFDSCxxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLGlCQUFpQixHQUNwQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBT25GO0lBcUNJLDJDQUNZLFdBQXdCLEVBQ3hCLEVBQXFCO1FBRHJCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLE9BQUUsR0FBRixFQUFFLENBQW1CO1FBNUIxQixnQkFBVyxHQUFZLElBQUksQ0FBQztRQUU1QixlQUFVLEdBQVksS0FBSyxDQUFDO1FBRTVCLGVBQVUsR0FBYyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUcx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QUMsbUJBQW1CLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUN4RDtTQUNKO0lBQ0wsQ0FBQzs7Z0JBL1F3QixXQUFXO2dCQUNwQixpQkFBaUI7O0lBckNqQztRQURDLFNBQVMsQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQzsyRUFDZjtJQUdwQztRQURDLEtBQUssRUFBRTt1RUFDNkI7SUFFckM7UUFEQyxLQUFLLEVBQUU7MkVBQ29CO0lBRTVCO1FBREMsS0FBSyxFQUFFOzRFQUNxQjtJQUU3QjtRQURDLEtBQUssRUFBRTswRUFDMkI7SUFFbkM7UUFEQyxLQUFLLEVBQUU7eUVBQzJCO0lBRW5DO1FBREMsS0FBSyxFQUFFO3lFQUN5QztJQUdqRDtRQURDLE1BQU0sRUFBRTs0RUFDaUU7SUFFMUU7UUFEQyxNQUFNLEVBQUU7bUZBQ2dFO0lBMkV6RTtRQURDLEtBQUssRUFBRTtvRUFHUDtJQVFEO1FBREMsS0FBSyxFQUFFOytFQWVQO0lBNkVEO1FBREMsS0FBSyxFQUFFOzhFQU9QO0lBeUZEO1FBREMsS0FBSyxFQUFFO3VFQUtQO0lBdlNRLGlDQUFpQztRQUw3QyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUsYUFBYTtZQUN2Qiw2bU5BQTJEOztTQUU5RCxDQUFDO09BQ1csaUNBQWlDLENBc1Q3QztJQUFELHdDQUFDO0NBQUEsQUF0VEQsSUFzVEM7U0F0VFksaUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgT25Jbml0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgT25EZXN0cm95LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBGb3JtQnVpbGRlciwgVmFsaWRhdG9ycywgVmFsaWRhdG9yRm4gfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IE51bWJlckxvY2FsZU9wdGlvbnMsIEN1c3RvbUZpZWxkc0NvbXBvbmVudCB9IGZyb20gXCJAc2VuaW9yc2lzdGVtYXMvYW5ndWxhci1jb21wb25lbnRzXCI7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7XG4gICAgdmVyaWZ5VmFsaWRhdGlvbnNGb3JtLFxuICAgIGNvbmZpZ0VuYWJsZWRGaWVsZHMsXG4gICAgbW91bnRDdXN0b21Ub1Nob3csXG59IGZyb20gXCIuLi8uLi91dGlscy9oZWxwZXJzXCI7XG5pbXBvcnQgeyBHZW5lcmljVmFsaWRhdG9yIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2dlbmVyaWMtdmFsaWRhdG9yc1wiO1xuaW1wb3J0IHsgRm9ybWF0VXRpbHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2Zvcm1hdC11dGlscy9mb3JtYXQtdXRpbHMuc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogXCJwaXgtYWNjb3VudFwiLFxuICAgIHRlbXBsYXRlVXJsOiBcIi4vaGlzdG9yaWNhbC1waXgtYWNjb3VudC1mb3JtLmNvbXBvbmVudC5odG1sXCIsXG4gICAgc3R5bGVVcmxzOiBbXCIuLi9oaXN0b3JpY2FsLXBpeC1hY2NvdW50LmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIEhpc3RvcmljYWxQaXhBY2NvdW50Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKEN1c3RvbUZpZWxkc0NvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBjdXN0b21GaWVsZHM6IEN1c3RvbUZpZWxkc0NvbXBvbmVudDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1cnJlbmN5OiBOdW1iZXJMb2NhbGVPcHRpb25zO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1c3RvbUVudGl0eTogc3RyaW5nO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGN1c3RvbVNlcnZpY2U6IHN0cmluZztcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB3aXRoU2lkZUJhcjogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXNFZGl0TW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBhcmFtc0Zvcm06IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZpc2libGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcGl4QWNjb3VudEl0ZW1Ub0xpc3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICBwcml2YXRlIF92aXNpYmxlOiBib29sZWFuO1xuICAgIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG4gICAgcHJpdmF0ZSBlbXBsb3llZUlkOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBwaXhBY2NvdW50TGlzdDogb2JqZWN0W107XG4gICAgcHJpdmF0ZSBpbml0aWFsVmFsaWRhdG9yT2ZQZXJjZW50YWdlOiBWYWxpZGF0b3JGbltdID0gW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKDAuMDEpXTtcblxuXG4gICAgcHVibGljIGxhYmVsQnRuQWRkOiBzdHJpbmcgPSBcImhjbS5wYXlyb2xsLmVtcGxveWVlc19hZGRcIjtcbiAgICBwdWJsaWMgcGl4QWNjb3VudEZvcm1Hcm91cDogRm9ybUdyb3VwO1xuICAgIHB1YmxpYyBtYXhWYWx1ZVBlcmNlbnRhZ2U6IG51bWJlciA9IDEwMC4wMDtcbiAgICBwdWJsaWMgdmlzaWJsZUJ0blNhdmU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHB1YmxpYyBpc1ZpZXc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgcGl4S2V5VHlwZTogc3RyaW5nO1xuICAgIHB1YmxpYyBpc1Nob3dQaXhLZXlGaWVsZFZhbGlkYXRvck1lc3NhZ2UgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcbiAgICAgICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlRm9ybUdyb3VwKCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJTdWJqZWN0cygpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWdpc3RlclN1YmplY3RzKCk6IHZvaWQge1xuICAgIH1cblxuICAgIHByaXZhdGUgY3JlYXRlRm9ybUdyb3VwKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcbiAgICAgICAgICAgIGlkOiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCksXG4gICAgICAgICAgICBpbmRleDogdGhpcy5mb3JtQnVpbGRlci5jb250cm9sKG51bGwpLFxuICAgICAgICAgICAgZW1wbG95ZWU6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbCh7IHZhbHVlOiB7IHRhYmxlSWQ6IG51bGwgfSwgZGlzYWJsZWQ6IHRydWUgfSksXG4gICAgICAgICAgICBkYXRlQ2hhbmdlOiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCksXG4gICAgICAgICAgICBwaXhLZXlUeXBlOiB0aGlzLmZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgICAgICBwaXhLZXk6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgICAgIHBlcmNlbnRhZ2U6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuaW5pdGlhbFZhbGlkYXRvck9mUGVyY2VudGFnZSxcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heCh0aGlzLm1heFZhbHVlUGVyY2VudGFnZSksXG4gICAgICAgICAgICBdKSksXG4gICAgICAgICAgICBjdXN0b21GaWVsZHM6IHRoaXMuZm9ybUJ1aWxkZXIuY29udHJvbChudWxsKSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2hhbmdlUGl4S2V5VHlwZShpdGVtOiBhbnkpIHtcbiAgICAgICAgaWYgKGl0ZW0ua2V5KSB7XG4gICAgICAgICAgICB0aGlzLnBpeEtleVR5cGUgPSBpdGVtLmtleTtcbiAgICAgICAgICAgIHRoaXMuaXNTaG93UGl4S2V5RmllbGRWYWxpZGF0b3JNZXNzYWdlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlcIikucmVzZXQoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0UGl4S2V5VmFsaWRhdG9ycygpO1xuXG4gICAgICAgICAgICBpZihpdGVtLmtleSA9PT0gXCJDUEZcIikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdENwZlBpeEtleSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xlYXJQaXhLZXlUeXBlKCkge1xuICAgICAgICB0aGlzLmlzU2hvd1BpeEtleUZpZWxkVmFsaWRhdG9yTWVzc2FnZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpLnJlc2V0KCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl92aXNpYmxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdmlzaWJsZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl92aXNpYmxlID0gdmFsdWU7XG4gICAgICAgIHRoaXMudmlzaWJsZUNoYW5nZS5lbWl0KHRoaXMudmlzaWJsZSk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGlzRWRpdEFuZFZpZXdWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICAgIHRoaXMudmlzaWJsZUJ0blNhdmUgPSB0cnVlO1xuICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUuY3VycmVudEl0ZW0gJiYgT2JqZWN0LmtleXModmFsdWUuY3VycmVudEl0ZW0pLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLnBhdGNoVmFsdWUodGhpcy5jb252ZXJ0RFRPVG9TaG93V2l0aEN1c3RvbUZpZWxkcyh7Li4udmFsdWUuY3VycmVudEl0ZW19KSk7XG4gICAgICAgICAgICB0aGlzLmxhYmVsQnRuQWRkID0gXCJoY20ucGF5cm9sbC5lbXBsb3llZXNfdXBkYXRlXCI7XG4gICAgICAgICAgICB0aGlzLnNldFZhbGlkYXRvcnNBY2NvcmRpbmdMaXN0KHZhbHVlLmxpc3REYXRhLCB2YWx1ZS5jdXJyZW50SXRlbVtcImluZGV4XCJdKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5pc1ZpZXcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ0VuYWJsZUZpZWxkcyh2YWx1ZSAmJiB2YWx1ZVtcImlzRWRpdE1vZGVcIl0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sYWJlbEJ0bkFkZCA9IFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX2FkZFwiO1xuICAgICAgICB9XG5cbiAgICB9XG5cbiAgICBwdWJsaWMgY29udmVydERUT1RvU2hvd1dpdGhDdXN0b21GaWVsZHMoZGF0YTogb2JqZWN0KTogb2JqZWN0IHtcbiAgICAgICAgY29uc3Qgb2JqOiBhbnkgPSB7Li4uIGRhdGF9O1xuICAgICAgICBvYmpbXCJjdXN0b21GaWVsZHNcIl0gPSBtb3VudEN1c3RvbVRvU2hvdyhvYmpbXCJjdXN0b21GaWVsZHNcIl0pO1xuICAgICAgICByZXR1cm4gb2JqO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29uZmlnRW5hYmxlRmllbGRzKGlzRWRpdE1vZGU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy52aXNpYmxlQnRuU2F2ZSA9IGlzRWRpdE1vZGU7XG5cbiAgICAgICAgaWYodGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVR5cGVcIikudmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMucGl4S2V5VHlwZSA9IHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJwaXhLZXlUeXBlXCIpLnZhbHVlLmtleTtcbiAgICAgICAgICAgIHRoaXMuc2V0UGl4S2V5VmFsaWRhdG9ycygpO1xuXG4gICAgICAgICAgICBpZih0aGlzLnBpeEtleVR5cGUgPT09IFwiVEVMRVBIT05FXCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpLnNldFZhbHVlKEZvcm1hdFV0aWxzU2VydmljZS5nZXRGb3JtYXR0ZWRUZWxlcGhvbmVOdW1iZXIodGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBpeEtleVwiKS52YWx1ZSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uZmlnRW5hYmxlZEZpZWxkcyh0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAsIGlzRWRpdE1vZGUsIFtcbiAgICAgICAgICAgIFwicGl4S2V5VHlwZVwiLFxuICAgICAgICAgICAgXCJwaXhLZXlcIixcbiAgICAgICAgICAgIFwicGVyY2VudGFnZVwiLFxuICAgICAgICAgICAgXCJjdXN0b21GaWVsZHNcIixcbiAgICAgICAgXSwgW10pO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgICAgICAgdGhpcy52aXNpYmxlID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEl0ZW0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgIHZlcmlmeVZhbGlkYXRpb25zRm9ybS5jYWxsKHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cCk7XG5cbiAgICAgICAgaWYgKHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC52YWxpZCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZW1wbG95ZWVJZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucGl4QWNjb3VudEZvcm1Hcm91cC5nZXQoXCJlbXBsb3llZVwiKS5zZXRWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICAgIHRhYmxlSWQ6IHRoaXMuZW1wbG95ZWVJZCxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJcIixcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucGl4QWNjb3VudEl0ZW1Ub0xpc3QuZW1pdCh0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0UmF3VmFsdWUoKSk7XG4gICAgICAgICAgICB0aGlzLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMucmVzZXRGb3JtKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRGb3JtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAucmVzZXQoKTtcbiAgICAgICAgdGhpcy5sYWJlbEJ0bkFkZCA9IFwiaGNtLnBheXJvbGwuZW1wbG95ZWVzX2FkZFwiO1xuICAgICAgICBpZiAodGhpcy5jdXN0b21GaWVsZHMgJiYgdGhpcy5jdXN0b21GaWVsZHMuZm9ybUdyb3VwKSB0aGlzLmN1c3RvbUZpZWxkcy5mb3JtR3JvdXAucmVzZXQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBlcmNlbnRhZ2VQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYDAkeyB0aGlzLmN1cnJlbmN5ICYmIHRoaXMuY3VycmVuY3kuZGVjaW1hbFNlcGFyYXRvciB9MDBgO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb3B0aW9uc1BlcmNlbnRhZ2UoKTogb2JqZWN0IHtcbiAgICAgICAgcmV0dXJuIHsgLi4udGhpcy5nZXRPcHRpb25zKCksIHByZWNpc2lvbjogMiB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T3B0aW9ucygpOiBhbnkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcHJlZml4OiBcIlwiLFxuICAgICAgICAgICAgdGhvdXNhbmRzOiB0aGlzLmN1cnJlbmN5LnRob3VzYW5kc1NlcGFyYXRvcixcbiAgICAgICAgICAgIGRlY2ltYWw6IHRoaXMuY3VycmVuY3kuZGVjaW1hbFNlcGFyYXRvcixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPIElucHV0IHF1ZSByZWNlYmUgYSBsaXN0YSBkbyBjb21wb25lbnQgcGFpIGUgY2hhbWEgbyBtw6l0b2RvIGRlIHZhbGlkYcOnw6NvIHBhc3NhbmRvIGEgbGlzdGEgcmVjZWJpZGEuXG4gICAgICogQHBhcmFtIHBpeEFjY291bnRMaXN0XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGdldExpc3RQaXhBY2NvdW50KHBpeEFjY291bnRMaXN0OiBvYmplY3RbXSkge1xuICAgICAgICBpZiAocGl4QWNjb3VudExpc3QpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsaWRhdG9yc0FjY29yZGluZ0xpc3QocGl4QWNjb3VudExpc3QpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJlY2ViZSBhIGxpc3RhIGRlIHJlZ2lzdHJvcyBqw6EgaW5zZXJpZG9zIG5hIHRhYmVsYSBhZGljaW9uYSBlbSB1bWEgdmFyacOhdmVsIG9zIHZhbG9yZXMgcXVlIHNlcsOjbyB1c2Fkb3MgcGFyYVxuICAgICAqIGEgdmFsaWRhw6fDo28gZG9zIGNhbXBvcyBcInBlcmNlbnRhZ2VcIiBlIFwicGl4QWNjb3VudFwiLlxuICAgICAqIFF1YW5kbyB0ZW0gaW5kZXggc2lnbmlmaWNhIHF1ZSBlc3TDoSBlbSB1bWEgZWRpw6fDo28sIG9zIHZhbG9yZXMgbmEgcG9zacOnw6NvIGRvIHJlZ2lzdHJvIGRhIGVkacOnw6NvIChpbmRleCkgbsOjbyBzZXLDo28gYWRpY2lvbmFkb3NcbiAgICAgKiBubyBhcnJheSBkZSBjb21wYXJhw6fDo28gZG9zIHZhbGlkYXRvcnMuXG4gICAgICogQHBhcmFtIHBpeEFjY291bnRMaXN0XG4gICAgICogQHBhcmFtIGluZGV4XG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXRWYWxpZGF0b3JzQWNjb3JkaW5nTGlzdChwaXhBY2NvdW50TGlzdDogb2JqZWN0W10sIGluZGV4OiBudW1iZXIgPSBudWxsKSB7XG4gICAgICAgIHRoaXMucGl4QWNjb3VudExpc3QgPSBwaXhBY2NvdW50TGlzdCAmJiBwaXhBY2NvdW50TGlzdC5sZW5ndGggPyBbLi4ucGl4QWNjb3VudExpc3RdIDogW107XG5cbiAgICAgICAgY29uc3QgcGVyY2VudGFnZUluY2x1ZGVkOiBhbnkgPSBbXTtcblxuICAgICAgICBpZiAodGhpcy5waXhBY2NvdW50TGlzdCAmJiB0aGlzLnBpeEFjY291bnRMaXN0Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5waXhBY2NvdW50TGlzdC5maWx0ZXIoKGZpZWxkOiBhbnksIGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZFtcInBlcmNlbnRhZ2VcIl0gJiYga2V5ICE9IGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2VJbmNsdWRlZC5wdXNoKGZpZWxkW1wicGVyY2VudGFnZVwiXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldFBpeEtleVZhbGlkYXRvcnMoKTtcbiAgICAgICAgdGhpcy52YWxpZGF0ZVBlcmNlbnRhZ2VWYWxpZChwZXJjZW50YWdlSW5jbHVkZWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFudGVzIGRlIHNldGFyIG8gdmFsaWRhdG9yIHByZXBhcmEgYXMgdmFyacOhdmVpcyBuZWNlc3PDoXJpYSBwYXJhIHF1ZSBzZWphIGZlaXRhIGEgdmFsaWRhw6fDo28gZG8gY2FtcG8uXG4gICAgICovXG4gICAgcHVibGljIHNldFBpeEtleVZhbGlkYXRvcnMoKSB7XG4gICAgICAgIGNvbnN0IGdlbmVyaWNQaXhLZXkgPSB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpO1xuICAgICAgICBpZiAodGhpcy5waXhLZXlUeXBlKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMucGl4S2V5VHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgXCJURUxFUEhPTkVcIjpcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY1BpeEtleS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLCBHZW5lcmljVmFsaWRhdG9yLmlzVmFsaWRQaG9uZU51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgXSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiRU1BSUxcIjpcbiAgICAgICAgICAgICAgICAgICAgZ2VuZXJpY1BpeEtleS5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLCBHZW5lcmljVmFsaWRhdG9yLmlzVmFsaWRFbWFpbCxcbiAgICAgICAgICAgICAgICAgICAgXSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiQ1BGXCI6XG4gICAgICAgICAgICAgICAgICAgIGdlbmVyaWNQaXhLZXkuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCwgR2VuZXJpY1ZhbGlkYXRvci5pc1ZhbGlkQ3BmLFxuICAgICAgICAgICAgICAgICAgICBdKSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJDTlBKXCI6XG4gICAgICAgICAgICAgICAgICAgIGdlbmVyaWNQaXhLZXkuc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLmNvbXBvc2UoW1xuICAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCwgR2VuZXJpY1ZhbGlkYXRvci5pc1ZhbGlkQ25waixcbiAgICAgICAgICAgICAgICAgICAgXSkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwiUkFORE9NX0tFWVwiOlxuICAgICAgICAgICAgICAgICAgICBnZW5lcmljUGl4S2V5LnNldFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICAgIGdlbmVyaWNQaXhLZXkuc2V0VmFsaWRhdG9ycyhudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGdlbmVyaWNQaXhLZXkuZW5hYmxlKCk7XG4gICAgICAgICAgICBnZW5lcmljUGl4S2V5LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXN0ZSBtw6l0b2RvIGNhbGN1bGEgYXMgcGFyY2VudGFnZW5zIHF1ZSBqw6EgZm9yYW0gaW5zZXJpZGFzLCBlIHNldGEgYSBkaWZlcmVuw6dhIHBhcmEgY2hlZ2FyIGVtXG4gICAgICogMTAwJSBuYSB2YWxpZGHDp8OjbyBkbyBjYW1wbyBcInBlcmNlbnRhZ2VcIiBjb21vIHVtIG5vdm8gbWF4VmFsdWU7XG4gICAgICogQHBhcmFtIGxpc3RWYWx1ZVxuICAgICAqL1xuICAgIHByaXZhdGUgdmFsaWRhdGVQZXJjZW50YWdlVmFsaWQobGlzdFZhbHVlOiBudW1iZXJbXSkge1xuICAgICAgICBjb25zdCBwZXJjZW50YWdlID0gdGhpcy5waXhBY2NvdW50Rm9ybUdyb3VwLmdldChcInBlcmNlbnRhZ2VcIik7XG4gICAgICAgIHRoaXMubWF4VmFsdWVQZXJjZW50YWdlID0gbGlzdFZhbHVlXG4gICAgICAgICAgICAucmVkdWNlKChjdXJyZW50VmFsdWUsIHRvdGFsKSA9PiBjdXJyZW50VmFsdWUgLSB0b3RhbCxcbiAgICAgICAgICAgICAgICAxMDAuMDAsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgIHBlcmNlbnRhZ2VcbiAgICAgICAgICAgIC5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMuY29tcG9zZShbXG4gICAgICAgICAgICAgICAgLi4udGhpcy5pbml0aWFsVmFsaWRhdG9yT2ZQZXJjZW50YWdlLFxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4KHRoaXMubWF4VmFsdWVQZXJjZW50YWdlKSxcbiAgICAgICAgICAgIF0pKTtcbiAgICAgICAgcGVyY2VudGFnZS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgfVxuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGlzVmlld01vZGUoY29uZGl0aW9uOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaXNWaWV3ID0gISEoY29uZGl0aW9uICYmICF0aGlzLndpdGhTaWRlQmFyKTtcbiAgICAgICAgdGhpcy5jb25maWdFbmFibGVGaWVsZHMoIXRoaXMuaXNWaWV3KTtcbiAgICAgICAgaWYgKCF0aGlzLmlzVmlldykgdGhpcy5yZXNldEZvcm0oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcGhvbmVNYXNrKGV2ZW50OiBhbnkpIHtcbiAgICAgICAgRm9ybWF0VXRpbHNTZXJ2aWNlLmZvcm1hdFRlbGVwaG9uZUlucHV0RXZlbnQoZXZlbnQpO1xuICAgIH1cblxuICAgIHNldERlZmF1bHRDcGZQaXhLZXkoKSB7XG4gICAgICAgIGNvbnN0IHNoZWV0RG9jdW1lbnQgPSB0aGlzLnBhcmFtc0Zvcm0uZ2V0KFwic2hlZXREb2N1bWVudFwiKTtcbiAgICAgICAgaWYoc2hlZXREb2N1bWVudCkge1xuICAgICAgICAgICAgY29uc3QgY3BmID0gc2hlZXREb2N1bWVudC5nZXQoXCJjcGZOdW1iZXJcIikudmFsdWU7XG4gICAgICAgICAgICBpZihjcGYpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnBpeEFjY291bnRGb3JtR3JvdXAuZ2V0KFwicGl4S2V5XCIpLnNldFZhbHVlKGNwZik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=