keevo-components 1.8.436 → 1.8.439

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.
@@ -8,15 +8,24 @@ export class KvFileUploadComponent {
8
8
  this.widthComponent = '400px';
9
9
  this.heightComponent = 'auto';
10
10
  this.validFileTypes = ['image/', 'application/pdf', 'text/html'];
11
+ this.includeOfficeTypes = false; // Propriedade para controlar os tipos de Office
11
12
  this.fileEmit = new EventEmitter();
12
13
  this.removeFileEmit = new EventEmitter();
13
14
  }
14
15
  onFileSelected(event) {
16
+ let validTypes = [...this.validFileTypes];
17
+ if (this.includeOfficeTypes) {
18
+ validTypes.push('application/msword', // .doc
19
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', // .docx
20
+ 'application/vnd.ms-powerpoint', // .ppt
21
+ 'application/vnd.openxmlformats-officedocument.presentationml.presentation' // .pptx
22
+ );
23
+ }
15
24
  if (event.target.files.length == 0)
16
25
  return;
17
- const isValidFileType = this.validFileTypes.some(type => event.target.files[0].type.startsWith(type));
26
+ const isValidFileType = validTypes.some(type => event.target.files[0].type.startsWith(type));
18
27
  if (!isValidFileType) {
19
- this.notificationService.toastError("Tipo de arquivo inválido");
28
+ this.notificationService.toastError('Tipo de arquivo inválido');
20
29
  this.formGroup.controls[this.formControlName].setValue(null);
21
30
  return;
22
31
  }
@@ -46,6 +55,14 @@ export class KvFileUploadComponent {
46
55
  container.classList.remove('dragover');
47
56
  }
48
57
  handleFile(file) {
58
+ if (this.includeOfficeTypes) {
59
+ let validTypes = [...this.validFileTypes];
60
+ validTypes.push('application/msword', // .doc
61
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', // .docx
62
+ 'application/vnd.ms-powerpoint', // .ppt
63
+ 'application/vnd.openxmlformats-officedocument.presentationml.presentation' // .pptx
64
+ );
65
+ }
49
66
  const isValidFileType = this.validFileTypes.some(type => file.type.startsWith(type));
50
67
  if (!isValidFileType) {
51
68
  this.notificationService.toastError('Tipo de arquivo inválido');
@@ -57,7 +74,7 @@ export class KvFileUploadComponent {
57
74
  if (file.type.startsWith('image/'))
58
75
  reader.readAsDataURL(file);
59
76
  else
60
- reader.readAsArrayBuffer(file); // Para outros tipos de arquivo, use readAsArrayBuffer ou outro método apropriado
77
+ reader.readAsArrayBuffer(file); // Para outros tipos de arquivo
61
78
  this.fileEmit.emit(file);
62
79
  }
63
80
  onDragOver(event) {
@@ -82,16 +99,20 @@ export class KvFileUploadComponent {
82
99
  let types = '';
83
100
  this.validFileTypes.forEach(type => {
84
101
  if (type.includes('image'))
85
- types += '.jpg, .png, .bmp';
102
+ types += '.jpg, .png, .bmp, ';
86
103
  if (type.includes('html'))
87
- types += '.html';
104
+ types += '.html, ';
88
105
  if (type.includes('pdf'))
89
- types += '.pdf';
106
+ types += '.pdf, ';
90
107
  });
91
- return types;
108
+ // Adiciona tipos de arquivos do Office se includeOfficeTypes for true
109
+ if (this.includeOfficeTypes) {
110
+ types += '.doc, .docx, .ppt, .pptx, ';
111
+ }
112
+ return types.slice(0, -2); // Remove a última vírgula e espaço
92
113
  }
93
114
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvFileUploadComponent, deps: [{ token: i1.NotificationService }], target: i0.ɵɵFactoryTarget.Component }); }
94
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvFileUploadComponent, selector: "kv-file-upload", inputs: { formGroup: "formGroup", formControlName: "formControlName", widthComponent: "widthComponent", heightComponent: "heightComponent", description: "description", validFileTypes: "validFileTypes" }, outputs: { fileEmit: "fileEmit", removeFileEmit: "removeFileEmit" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "inputUpload", first: true, predicate: ["inputUpload"], descendants: true }], ngImport: i0, template: "<div\r\n *ngIf=\"formGroup\"\r\n [ngClass]=\"{'invalid-border': formGroup && formControlName && formGroup.controls[formControlName].invalid && formGroup.controls[formControlName].touched}\"\r\n class=\"border-dashed border-2 border-round-lg border-gray-400 flex justify-content-end\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n [style.width]=\"widthComponent\"\r\n [style.height]=\"heightComponent\">\r\n\r\n <div class=\"field col-12 flex justify-content-center align-items-center flex-column\">\r\n <div\r\n class=\"w-full flex align-items-center justify-content-center\"\r\n style=\"cursor: pointer;\"\r\n (click)=\"fileInput.click()\">\r\n\r\n <input type=\"file\" (change)=\"onFileSelected($event)\" #fileInput [accept]=\"setAccept()\" hidden/>\r\n\r\n @if(formGroup && formControlName && !formGroup.controls[formControlName].value) {\r\n <div class=\"flex flex-column align-items-center justify-content-center\">\r\n <span class=\"material-symbols-outlined mt-2\" style=\"font-size: 3rem;\">\r\n cloud_upload\r\n </span>\r\n\r\n @if(description) {\r\n <p class=\"font-semibold text-center\">{{description}}</p>\r\n } @else {\r\n <p class=\"font-semibold text-center\">Arraste e solte o arquivo aqui, ou<br>clique para selecion\u00E1-lo</p>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n @if(formGroup && formControlName && formGroup.controls[formControlName].value) {\r\n <div class=\"flex flex-column\">\r\n <span class=\"font-semibold\" style=\"padding: 10px;\">Arquivo Selecionado:</span>\r\n <div class=\"flex flex-row\">\r\n <span style=\"padding: 10px;\">{{ formGroup.controls[formControlName].value?.name }}</span>\r\n <span style=\"padding: 10px;\">({{ formatBytes(formGroup.controls[formControlName].value?.size) }})</span>\r\n <i style=\"padding: 10px; margin-left: 10px;\"\r\n pTooltip=\"Excluir arquivo\"\r\n class=\"border-solid border-1 border-round-sm border-gray-400 pi pi-trash delete cursor-pointer\"\r\n (click)=\"deleteFile()\"\r\n ></i>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n@if (formGroup && formControlName && formGroup.controls[formControlName].invalid && formGroup.controls[formControlName].touched) {\r\n <p class=\"error-message\">Campo obrigat\u00F3rio</p>\r\n}\r\n", styles: [".invalid-border{border:2px dashed red!important}.error-message{color:#ff0e0e;font-size:12px!important;margin-top:.1rem}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
115
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.8", type: KvFileUploadComponent, selector: "kv-file-upload", inputs: { formGroup: "formGroup", formControlName: "formControlName", widthComponent: "widthComponent", heightComponent: "heightComponent", description: "description", validFileTypes: "validFileTypes", includeOfficeTypes: "includeOfficeTypes" }, outputs: { fileEmit: "fileEmit", removeFileEmit: "removeFileEmit" }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "inputUpload", first: true, predicate: ["inputUpload"], descendants: true }], ngImport: i0, template: "<div\r\n *ngIf=\"formGroup\"\r\n [ngClass]=\"{'invalid-border': formGroup && formControlName && formGroup.controls[formControlName].invalid && formGroup.controls[formControlName].touched}\"\r\n class=\"border-dashed border-2 border-round-lg border-gray-400 flex justify-content-end\"\r\n (dragover)=\"onDragOver($event)\"\r\n (dragleave)=\"onDragLeave($event)\"\r\n (drop)=\"onDrop($event)\"\r\n [style.width]=\"widthComponent\"\r\n [style.height]=\"heightComponent\">\r\n\r\n <div class=\"field col-12 flex justify-content-center align-items-center flex-column\">\r\n <div\r\n class=\"w-full flex align-items-center justify-content-center\"\r\n style=\"cursor: pointer;\"\r\n (click)=\"fileInput.click()\">\r\n\r\n <input type=\"file\" (change)=\"onFileSelected($event)\" #fileInput [accept]=\"setAccept()\" hidden/>\r\n\r\n @if(formGroup && formControlName && !formGroup.controls[formControlName].value) {\r\n <div class=\"flex flex-column align-items-center justify-content-center\">\r\n <span class=\"material-symbols-outlined mt-2\" style=\"font-size: 3rem;\">\r\n cloud_upload\r\n </span>\r\n\r\n @if(description) {\r\n <p class=\"font-semibold text-center\">{{description}}</p>\r\n } @else {\r\n <p class=\"font-semibold text-center\">Arraste e solte o arquivo aqui, ou<br>clique para selecion\u00E1-lo</p>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n @if(formGroup && formControlName && formGroup.controls[formControlName].value) {\r\n <div class=\"flex flex-column\">\r\n <span class=\"font-semibold\" style=\"padding: 10px;\">Arquivo Selecionado:</span>\r\n <div class=\"flex flex-row\">\r\n <span style=\"padding: 10px;\">{{ formGroup.controls[formControlName].value?.name }}</span>\r\n <span style=\"padding: 10px;\">({{ formatBytes(formGroup.controls[formControlName].value?.size) }})</span>\r\n <i style=\"padding: 10px; margin-left: 10px;\"\r\n pTooltip=\"Excluir arquivo\"\r\n class=\"border-solid border-1 border-round-sm border-gray-400 pi pi-trash delete cursor-pointer\"\r\n (click)=\"deleteFile()\"\r\n ></i>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n</div>\r\n\r\n@if (formGroup && formControlName && formGroup.controls[formControlName].invalid && formGroup.controls[formControlName].touched) {\r\n <p class=\"error-message\">Campo obrigat\u00F3rio</p>\r\n}\r\n", styles: [".invalid-border{border:2px dashed red!important}.error-message{color:#ff0e0e;font-size:12px!important;margin-top:.1rem}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
95
116
  }
96
117
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvFileUploadComponent, decorators: [{
97
118
  type: Component,
@@ -108,6 +129,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
108
129
  type: Input
109
130
  }], validFileTypes: [{
110
131
  type: Input
132
+ }], includeOfficeTypes: [{
133
+ type: Input
111
134
  }], fileEmit: [{
112
135
  type: Output
113
136
  }], removeFileEmit: [{
@@ -119,4 +142,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
119
142
  type: ViewChild,
120
143
  args: ['inputUpload']
121
144
  }] } });
122
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtZmlsZS11cGxvYWQva3YtZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtZmlsZS11cGxvYWQva3YtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWUsTUFBTSxlQUFlLENBQUM7Ozs7QUFVL0YsTUFBTSxPQUFPLHFCQUFxQjtJQWNoQyxZQUNVLG1CQUF3QztRQUF4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBWnpDLG1CQUFjLEdBQVcsT0FBTyxDQUFDO1FBQ2pDLG9CQUFlLEdBQVcsTUFBTSxDQUFDO1FBRWpDLG1CQUFjLEdBQWEsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFckUsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pELG1CQUFjLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFPN0QsQ0FBQztJQUVMLGNBQWMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUM7WUFDaEMsT0FBTTtRQUVSLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJ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O1FBRWQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDakMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDeEIsS0FBSyxJQUFJLGtCQUFrQixDQUFDO1lBRTlCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ3ZCLEtBQUssSUFBSSxPQUFPLENBQUM7WUFFbkIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztnQkFDdEIsS0FBSyxJQUFJLE1BQU0sQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQzs4R0F0SFUscUJBQXFCO2tHQUFyQixxQkFBcUIsNGdCQ1ZsQywraUZBcURBOzsyRkQzQ2EscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNFLGdCQUFnQjt3RkFLakIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUVpQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBQ0ksV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiAgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBpL3NlcnZpY2VzL25vdGlmaWNhdGlvbi5zZXJ2aWNlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2t2LWZpbGUtdXBsb2FkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4va3YtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9rdi1maWxlLXVwbG9hZC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEt2RmlsZVVwbG9hZENvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgZm9ybUdyb3VwITogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSB3aWR0aENvbXBvbmVudDogc3RyaW5nID0gJzQwMHB4JztcclxuICBASW5wdXQoKSBoZWlnaHRDb21wb25lbnQ6IHN0cmluZyA9ICdhdXRvJztcclxuICBASW5wdXQoKSBkZXNjcmlwdGlvbiE6IHN0cmluZztcclxuICBASW5wdXQoKSB2YWxpZEZpbGVUeXBlczogc3RyaW5nW10gPSBbJ2ltYWdlLycsICdhcHBsaWNhdGlvbi9wZGYnLCAndGV4dC9odG1sJ107XHJcblxyXG4gIEBPdXRwdXQoKSBmaWxlRW1pdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHJlbW92ZUZpbGVFbWl0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgQFZpZXdDaGlsZCgnZmlsZUlucHV0JykgZmlsZUlucHV0ITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdpbnB1dFVwbG9hZCcpIGlucHV0VXBsb2FkITogRWxlbWVudFJlZjtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBvbkZpbGVTZWxlY3RlZChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmZpbGVzLmxlbmd0aCA9PSAwKVxyXG4gICAgICByZXR1cm5cclxuXHJcbiAgICBjb25zdCBpc1ZhbGlkRmlsZVR5cGUgPSB0aGlzLnZhbGlkRmlsZVR5cGVzLnNvbWUodHlwZSA9PiBldmVudC50YXJnZXQuZmlsZXNbMF0udHlwZS5zdGFydHNXaXRoKHR5cGUpKTtcclxuXHJcbiAgICBpZiAoIWlzVmFsaWRGaWxlVHlwZSkge1xyXG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RFcnJvcihcIlRpcG8gZGUgYXJxdWl2byBpbnbDoWxpZG9cIilcclxuICAgICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbdGhpcy5mb3JtQ29udHJvbE5hbWVdLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1t0aGlzLmZvcm1Db250cm9sTmFtZV0uc2V0VmFsdWUoZXZlbnQudGFyZ2V0LmZpbGVzWzBdKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUZpbGUoKSB7XHJcbiAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1t0aGlzLmZvcm1Db250cm9sTmFtZV0uc2V0VmFsdWUobnVsbCk7XHJcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLnJlbW92ZUZpbGVFbWl0LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIGZvcm1hdEJ5dGVzKGJ5dGVzOiBhbnksIGRlY2ltYWxzID0gMikge1xyXG4gICAgaWYgKCFieXRlcykge1xyXG4gICAgICByZXR1cm4gXCIwIEJ5dGVzXCI7XHJcbiAgICB9XHJcbiAgICBjb25zdCBrID0gMTAyNDtcclxuICAgIGNvbnN0IGRtID0gZGVjaW1hbHMgPD0gMCA/IDAgOiBkZWNpbWFscztcclxuICAgIGNvbnN0IHNpemVzID0gW1wiQnl0ZXNcIiwgXCJLQlwiLCBcIk1CXCIsIFwiR0JcIiwgXCJUQlwiLCBcIlBCXCIsIFwiRUJcIiwgXCJaQlwiLCBcIllCXCJdO1xyXG4gICAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xyXG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoZG0pKSArIFwiIFwiICsgc2l6ZXNbaV07XHJcbiAgfVxyXG5cclxuICBhZGREcmFnT3ZlckNsYXNzKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdkcmFnb3ZlcicpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRHJhZ092ZXJDbGFzcyhldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBjb25zdCBjb250YWluZXIgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgnZHJhZ292ZXInKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUZpbGUoZmlsZTogRmlsZSkge1xyXG4gICAgY29uc3QgaXNWYWxpZEZpbGVUeXBlID0gdGhpcy52YWxpZEZpbGVUeXBlcy5zb21lKHR5cGUgPT4gZmlsZS50eXBlLnN0YXJ0c1dpdGgodHlwZSkpO1xyXG5cclxuICAgIGlmICghaXNWYWxpZEZpbGVUeXBlKSB7XHJcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS50b2FzdEVycm9yKCdUaXBvIGRlIGFycXVpdm8gaW52w6FsaWRvJyk7XHJcbiAgICAgIHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzW3RoaXMuZm9ybUNvbnRyb2xOYW1lXS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbdGhpcy5mb3JtQ29udHJvbE5hbWVdLnNldFZhbHVlKGZpbGUpO1xyXG5cclxuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcblxyXG4gICAgaWYgKGZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSlcclxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTsgLy8gUGFyYSBvdXRyb3MgdGlwb3MgZGUgYXJxdWl2bywgdXNlIHJlYWRBc0FycmF5QnVmZmVyIG91IG91dHJvIG3DqXRvZG8gYXByb3ByaWFkb1xyXG5cclxuICAgIHRoaXMuZmlsZUVtaXQuZW1pdChmaWxlKTtcclxuICB9XHJcblxyXG4gIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5hZGREcmFnT3ZlckNsYXNzKGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMucmVtb3ZlRHJhZ092ZXJDbGFzcyhldmVudCk7XHJcbiAgfVxyXG5cclxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5yZW1vdmVEcmFnT3ZlckNsYXNzKGV2ZW50KTtcclxuXHJcbiAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyICYmIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRmlsZShldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0QWNjZXB0KCk6IHN0cmluZyB7XHJcbiAgICBsZXQgdHlwZXMgPSAnJ1xyXG5cclxuICAgIHRoaXMudmFsaWRGaWxlVHlwZXMuZm9yRWFjaCh0eXBlID0+IHtcclxuICAgICAgaWYgKHR5cGUuaW5jbHVkZXMoJ2ltYWdlJykpXHJcbiAgICAgICAgdHlwZXMgKz0gJy5qcGcsIC5wbmcsIC5ibXAnO1xyXG5cclxuICAgICAgaWYgKHR5cGUuaW5jbHVkZXMoJ2h0bWwnKSlcclxuICAgICAgICB0eXBlcyArPSAnLmh0bWwnO1xyXG5cclxuICAgICAgaWYgKHR5cGUuaW5jbHVkZXMoJ3BkZicpKVxyXG4gICAgICAgIHR5cGVzICs9ICcucGRmJztcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0eXBlcztcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gICAgKm5nSWY9XCJmb3JtR3JvdXBcIlxyXG4gICAgW25nQ2xhc3NdPVwieydpbnZhbGlkLWJvcmRlcic6IGZvcm1Hcm91cCAmJiBmb3JtQ29udHJvbE5hbWUgJiYgZm9ybUdyb3VwLmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0uaW52YWxpZCAmJiBmb3JtR3JvdXAuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXS50b3VjaGVkfVwiXHJcbiAgICBjbGFzcz1cImJvcmRlci1kYXNoZWQgYm9yZGVyLTIgYm9yZGVyLXJvdW5kLWxnIGJvcmRlci1ncmF5LTQwMCBmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIlxyXG4gICAgKGRyYWdvdmVyKT1cIm9uRHJhZ092ZXIoJGV2ZW50KVwiXHJcbiAgICAoZHJhZ2xlYXZlKT1cIm9uRHJhZ0xlYXZlKCRldmVudClcIlxyXG4gICAgKGRyb3ApPVwib25Ecm9wKCRldmVudClcIlxyXG4gICAgW3N0eWxlLndpZHRoXT1cIndpZHRoQ29tcG9uZW50XCJcclxuICAgIFtzdHlsZS5oZWlnaHRdPVwiaGVpZ2h0Q29tcG9uZW50XCI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJmaWVsZCBjb2wtMTIgZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cInctZnVsbCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICAgICAgc3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCJcclxuICAgICAgKGNsaWNrKT1cImZpbGVJbnB1dC5jbGljaygpXCI+XHJcblxyXG4gICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIiAjZmlsZUlucHV0IFthY2NlcHRdPVwic2V0QWNjZXB0KClcIiBoaWRkZW4vPlxyXG5cclxuICAgICAgQGlmKGZvcm1Hcm91cCAmJiBmb3JtQ29udHJvbE5hbWUgJiYgIWZvcm1Hcm91cC5jb250cm9sc1tmb3JtQ29udHJvbE5hbWVdLnZhbHVlKSB7XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIG10LTJcIiBzdHlsZT1cImZvbnQtc2l6ZTogM3JlbTtcIj5cclxuICAgICAgICAgICAgICAgIGNsb3VkX3VwbG9hZFxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICBAaWYoZGVzY3JpcHRpb24pIHtcclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LWNlbnRlclwiPnt7ZGVzY3JpcHRpb259fTwvcD5cclxuICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImZvbnQtc2VtaWJvbGQgdGV4dC1jZW50ZXJcIj5BcnJhc3RlIGUgc29sdGUgbyBhcnF1aXZvIGFxdWksIG91PGJyPmNsaXF1ZSBwYXJhIHNlbGVjaW9uw6EtbG88L3A+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgQGlmKGZvcm1Hcm91cCAmJiBmb3JtQ29udHJvbE5hbWUgJiYgZm9ybUdyb3VwLmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0udmFsdWUpIHtcclxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW5cIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zZW1pYm9sZFwiIHN0eWxlPVwicGFkZGluZzogMTBweDtcIj5BcnF1aXZvIFNlbGVjaW9uYWRvOjwvc3Bhbj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJwYWRkaW5nOiAxMHB4O1wiPnt7IGZvcm1Hcm91cC5jb250cm9sc1tmb3JtQ29udHJvbE5hbWVdLnZhbHVlPy5uYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIHN0eWxlPVwicGFkZGluZzogMTBweDtcIj4oe3sgZm9ybWF0Qnl0ZXMoZm9ybUdyb3VwLmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0udmFsdWU/LnNpemUpIH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8aSAgc3R5bGU9XCJwYWRkaW5nOiAxMHB4OyBtYXJnaW4tbGVmdDogMTBweDtcIlxyXG4gICAgICAgICAgICAgICAgICBwVG9vbHRpcD1cIkV4Y2x1aXIgYXJxdWl2b1wiXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9yZGVyLXNvbGlkIGJvcmRlci0xIGJvcmRlci1yb3VuZC1zbSBib3JkZXItZ3JheS00MDAgcGkgcGktdHJhc2ggZGVsZXRlIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUZpbGUoKVwiXHJcbiAgICAgICAgICAgICAgPjwvaT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcblxyXG5AaWYgKGZvcm1Hcm91cCAmJiBmb3JtQ29udHJvbE5hbWUgJiYgZm9ybUdyb3VwLmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0uaW52YWxpZCAmJiBmb3JtR3JvdXAuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXS50b3VjaGVkKSAge1xyXG4gIDxwIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPkNhbXBvIG9icmlnYXTDs3JpbzwvcD5cclxufVxyXG4iXX0=
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtZmlsZS11cGxvYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtZmlsZS11cGxvYWQva3YtZmlsZS11cGxvYWQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtZmlsZS11cGxvYWQva3YtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQWMsTUFBTSxlQUFlLENBQUM7Ozs7QUFTOUYsTUFBTSxPQUFPLHFCQUFxQjtJQWVoQyxZQUFvQixtQkFBd0M7UUFBeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQVpuRCxtQkFBYyxHQUFXLE9BQU8sQ0FBQztRQUNqQyxvQkFBZSxHQUFXLE1BQU0sQ0FBQztRQUVqQyxtQkFBYyxHQUFhLENBQUMsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3RFLHVCQUFrQixHQUFZLEtBQUssQ0FBQyxDQUFDLGdEQUFnRDtRQUVwRixhQUFRLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakQsbUJBQWMsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUtELENBQUM7SUFFakUsY0FBYyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxVQUFVLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUUxQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBRTVCLFVBQVUsQ0FBQyxJQUFJLENBQ2Isb0JBQW9CLEVBQUUsT0FBTztZQUM3Qix5RUFBeUUsRUFBRSxRQUFRO1lBQ25G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QyxDQUFDLENBQUMsbUNBQW1DO0lBQ2hFLENBQUM7OEdBNUlVLHFCQUFxQjtrR0FBckIscUJBQXFCLHNqQkNUbEMsK2lGQXFEQTs7MkZENUNhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxnQkFBZ0I7d0ZBS2pCLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBRWlCLFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFDSSxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2FwaS9zZXJ2aWNlcy9ub3RpZmljYXRpb24uc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2t2LWZpbGUtdXBsb2FkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4va3YtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9rdi1maWxlLXVwbG9hZC5jb21wb25lbnQuc2NzcydcclxufSlcclxuZXhwb3J0IGNsYXNzIEt2RmlsZVVwbG9hZENvbXBvbmVudCB7XHJcbiAgQElucHV0KCkgZm9ybUdyb3VwITogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZSE6IHN0cmluZztcclxuICBASW5wdXQoKSB3aWR0aENvbXBvbmVudDogc3RyaW5nID0gJzQwMHB4JztcclxuICBASW5wdXQoKSBoZWlnaHRDb21wb25lbnQ6IHN0cmluZyA9ICdhdXRvJztcclxuICBASW5wdXQoKSBkZXNjcmlwdGlvbiE6IHN0cmluZztcclxuICBASW5wdXQoKSB2YWxpZEZpbGVUeXBlczogc3RyaW5nW10gPSBbJ2ltYWdlLycsICdhcHBsaWNhdGlvbi9wZGYnLCAndGV4dC9odG1sJ107XHJcbiAgQElucHV0KCkgaW5jbHVkZU9mZmljZVR5cGVzOiBib29sZWFuID0gZmFsc2U7IC8vIFByb3ByaWVkYWRlIHBhcmEgY29udHJvbGFyIG9zIHRpcG9zIGRlIE9mZmljZVxyXG5cclxuICBAT3V0cHV0KCkgZmlsZUVtaXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSByZW1vdmVGaWxlRW1pdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVJbnB1dCcpIGZpbGVJbnB1dCE6IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZCgnaW5wdXRVcGxvYWQnKSBpbnB1dFVwbG9hZCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSkgeyB9XHJcblxyXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGxldCB2YWxpZFR5cGVzID0gWy4uLnRoaXMudmFsaWRGaWxlVHlwZXNdO1xyXG5cclxuICAgIGlmICh0aGlzLmluY2x1ZGVPZmZpY2VUeXBlcykge1xyXG4gIFxyXG4gICAgICB2YWxpZFR5cGVzLnB1c2goXHJcbiAgICAgICAgJ2FwcGxpY2F0aW9uL21zd29yZCcsIC8vIC5kb2NcclxuICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnQnLCAvLyAuZG9jeFxyXG4gICAgICAgICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCcsIC8vIC5wcHRcclxuICAgICAgICAnYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnByZXNlbnRhdGlvbm1sLnByZXNlbnRhdGlvbicgLy8gLnBwdHhcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmZpbGVzLmxlbmd0aCA9PSAwKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgaXNWYWxpZEZpbGVUeXBlID0gdmFsaWRUeXBlcy5zb21lKHR5cGUgPT4gZXZlbnQudGFyZ2V0LmZpbGVzWzBdLnR5cGUuc3RhcnRzV2l0aCh0eXBlKSk7XHJcbiAgICBpZiAoIWlzVmFsaWRGaWxlVHlwZSkge1xyXG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RFcnJvcignVGlwbyBkZSBhcnF1aXZvIGludsOhbGlkbycpO1xyXG4gICAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1t0aGlzLmZvcm1Db250cm9sTmFtZV0uc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1t0aGlzLmZvcm1Db250cm9sTmFtZV0uc2V0VmFsdWUoZXZlbnQudGFyZ2V0LmZpbGVzWzBdKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUZpbGUoKSB7XHJcbiAgICB0aGlzLmZvcm1Hcm91cC5jb250cm9sc1t0aGlzLmZvcm1Db250cm9sTmFtZV0uc2V0VmFsdWUobnVsbCk7XHJcbiAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgICB0aGlzLnJlbW92ZUZpbGVFbWl0LmVtaXQoKTtcclxuICB9XHJcblxyXG4gIGZvcm1hdEJ5dGVzKGJ5dGVzOiBhbnksIGRlY2ltYWxzID0gMikge1xyXG4gICAgaWYgKCFieXRlcykge1xyXG4gICAgICByZXR1cm4gXCIwIEJ5dGVzXCI7XHJcbiAgICB9XHJcbiAgICBjb25zdCBrID0gMTAyNDtcclxuICAgIGNvbnN0IGRtID0gZGVjaW1hbHMgPD0gMCA/IDAgOiBkZWNpbWFscztcclxuICAgIGNvbnN0IHNpemVzID0gW1wiQnl0ZXNcIiwgXCJLQlwiLCBcIk1CXCIsIFwiR0JcIiwgXCJUQlwiLCBcIlBCXCIsIFwiRUJcIiwgXCJaQlwiLCBcIllCXCJdO1xyXG4gICAgY29uc3QgaSA9IE1hdGguZmxvb3IoTWF0aC5sb2coYnl0ZXMpIC8gTWF0aC5sb2coaykpO1xyXG4gICAgcmV0dXJuIHBhcnNlRmxvYXQoKGJ5dGVzIC8gTWF0aC5wb3coaywgaSkpLnRvRml4ZWQoZG0pKSArIFwiIFwiICsgc2l6ZXNbaV07XHJcbiAgfVxyXG5cclxuICBhZGREcmFnT3ZlckNsYXNzKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdkcmFnb3ZlcicpO1xyXG4gIH1cclxuXHJcbiAgcmVtb3ZlRHJhZ092ZXJDbGFzcyhldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBjb25zdCBjb250YWluZXIgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb250YWluZXIuY2xhc3NMaXN0LnJlbW92ZSgnZHJhZ292ZXInKTtcclxuICB9XHJcblxyXG4gIGhhbmRsZUZpbGUoZmlsZTogRmlsZSkge1xyXG5cclxuXHJcbiAgaWYgKHRoaXMuaW5jbHVkZU9mZmljZVR5cGVzKSB7XHJcbiAgICBsZXQgdmFsaWRUeXBlcyA9IFsuLi50aGlzLnZhbGlkRmlsZVR5cGVzXTtcclxuXHJcbiAgICB2YWxpZFR5cGVzLnB1c2goXHJcbiAgICAgICdhcHBsaWNhdGlvbi9tc3dvcmQnLCAvLyAuZG9jXHJcbiAgICAgICdhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCcsIC8vIC5kb2N4XHJcbiAgICAgICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCcsIC8vIC5wcHRcclxuICAgICAgJ2FwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5wcmVzZW50YXRpb25tbC5wcmVzZW50YXRpb24nIC8vIC5wcHR4XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgICBjb25zdCBpc1ZhbGlkRmlsZVR5cGUgPSB0aGlzLnZhbGlkRmlsZVR5cGVzLnNvbWUodHlwZSA9PiBmaWxlLnR5cGUuc3RhcnRzV2l0aCh0eXBlKSk7XHJcblxyXG4gICAgaWYgKCFpc1ZhbGlkRmlsZVR5cGUpIHtcclxuICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnRvYXN0RXJyb3IoJ1RpcG8gZGUgYXJxdWl2byBpbnbDoWxpZG8nKTtcclxuICAgICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbdGhpcy5mb3JtQ29udHJvbE5hbWVdLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5mb3JtR3JvdXAuY29udHJvbHNbdGhpcy5mb3JtQ29udHJvbE5hbWVdLnNldFZhbHVlKGZpbGUpO1xyXG5cclxuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcblxyXG4gICAgaWYgKGZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSlcclxuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTsgLy8gUGFyYSBvdXRyb3MgdGlwb3MgZGUgYXJxdWl2b1xyXG5cclxuICAgIHRoaXMuZmlsZUVtaXQuZW1pdChmaWxlKTtcclxuICB9XHJcblxyXG4gIG9uRHJhZ092ZXIoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5hZGREcmFnT3ZlckNsYXNzKGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uRHJhZ0xlYXZlKGV2ZW50OiBEcmFnRXZlbnQpIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIHRoaXMucmVtb3ZlRHJhZ092ZXJDbGFzcyhldmVudCk7XHJcbiAgfVxyXG5cclxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgdGhpcy5yZW1vdmVEcmFnT3ZlckNsYXNzKGV2ZW50KTtcclxuXHJcbiAgICBpZiAoZXZlbnQuZGF0YVRyYW5zZmVyICYmIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuaGFuZGxlRmlsZShldmVudC5kYXRhVHJhbnNmZXIuZmlsZXNbMF0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0QWNjZXB0KCk6IHN0cmluZyB7XHJcbiAgICBsZXQgdHlwZXMgPSAnJ1xyXG5cclxuICAgIHRoaXMudmFsaWRGaWxlVHlwZXMuZm9yRWFjaCh0eXBlID0+IHtcclxuICAgICAgaWYgKHR5cGUuaW5jbHVkZXMoJ2ltYWdlJykpIHR5cGVzICs9ICcuanBnLCAucG5nLCAuYm1wLCAnO1xyXG4gICAgICBpZiAodHlwZS5pbmNsdWRlcygnaHRtbCcpKSB0eXBlcyArPSAnLmh0bWwsICc7XHJcbiAgICAgIGlmICh0eXBlLmluY2x1ZGVzKCdwZGYnKSkgdHlwZXMgKz0gJy5wZGYsICc7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBBZGljaW9uYSB0aXBvcyBkZSBhcnF1aXZvcyBkbyBPZmZpY2Ugc2UgaW5jbHVkZU9mZmljZVR5cGVzIGZvciB0cnVlXHJcbiAgICBpZiAodGhpcy5pbmNsdWRlT2ZmaWNlVHlwZXMpIHtcclxuICAgICAgdHlwZXMgKz0gJy5kb2MsIC5kb2N4LCAucHB0LCAucHB0eCwgJztcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdHlwZXMuc2xpY2UoMCwgLTIpOyAvLyBSZW1vdmUgYSDDumx0aW1hIHbDrXJndWxhIGUgZXNwYcOnb1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgICAqbmdJZj1cImZvcm1Hcm91cFwiXHJcbiAgICBbbmdDbGFzc109XCJ7J2ludmFsaWQtYm9yZGVyJzogZm9ybUdyb3VwICYmIGZvcm1Db250cm9sTmFtZSAmJiBmb3JtR3JvdXAuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXS5pbnZhbGlkICYmIGZvcm1Hcm91cC5jb250cm9sc1tmb3JtQ29udHJvbE5hbWVdLnRvdWNoZWR9XCJcclxuICAgIGNsYXNzPVwiYm9yZGVyLWRhc2hlZCBib3JkZXItMiBib3JkZXItcm91bmQtbGcgYm9yZGVyLWdyYXktNDAwIGZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiXHJcbiAgICAoZHJhZ292ZXIpPVwib25EcmFnT3ZlcigkZXZlbnQpXCJcclxuICAgIChkcmFnbGVhdmUpPVwib25EcmFnTGVhdmUoJGV2ZW50KVwiXHJcbiAgICAoZHJvcCk9XCJvbkRyb3AoJGV2ZW50KVwiXHJcbiAgICBbc3R5bGUud2lkdGhdPVwid2lkdGhDb21wb25lbnRcIlxyXG4gICAgW3N0eWxlLmhlaWdodF09XCJoZWlnaHRDb21wb25lbnRcIj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImZpZWxkIGNvbC0xMiBmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtY29sdW1uXCI+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwidy1mdWxsIGZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gICAgICBzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIlxyXG4gICAgICAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5cclxuXHJcbiAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiICNmaWxlSW5wdXQgW2FjY2VwdF09XCJzZXRBY2NlcHQoKVwiIGhpZGRlbi8+XHJcblxyXG4gICAgICBAaWYoZm9ybUdyb3VwICYmIGZvcm1Db250cm9sTmFtZSAmJiAhZm9ybUdyb3VwLmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0udmFsdWUpIHtcclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgbXQtMlwiIHN0eWxlPVwiZm9udC1zaXplOiAzcmVtO1wiPlxyXG4gICAgICAgICAgICAgICAgY2xvdWRfdXBsb2FkXHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIEBpZihkZXNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJmb250LXNlbWlib2xkIHRleHQtY2VudGVyXCI+e3tkZXNjcmlwdGlvbn19PC9wPlxyXG4gICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiZm9udC1zZW1pYm9sZCB0ZXh0LWNlbnRlclwiPkFycmFzdGUgZSBzb2x0ZSBvIGFycXVpdm8gYXF1aSwgb3U8YnI+Y2xpcXVlIHBhcmEgc2VsZWNpb27DoS1sbzwvcD5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICBAaWYoZm9ybUdyb3VwICYmIGZvcm1Db250cm9sTmFtZSAmJiBmb3JtR3JvdXAuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXS52YWx1ZSkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkXCIgc3R5bGU9XCJwYWRkaW5nOiAxMHB4O1wiPkFycXVpdm8gU2VsZWNpb25hZG86PC9zcGFuPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3dcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBzdHlsZT1cInBhZGRpbmc6IDEwcHg7XCI+e3sgZm9ybUdyb3VwLmNvbnRyb2xzW2Zvcm1Db250cm9sTmFtZV0udmFsdWU/Lm5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9XCJwYWRkaW5nOiAxMHB4O1wiPih7eyBmb3JtYXRCeXRlcyhmb3JtR3JvdXAuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXS52YWx1ZT8uc2l6ZSkgfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxpICBzdHlsZT1cInBhZGRpbmc6IDEwcHg7IG1hcmdpbi1sZWZ0OiAxMHB4O1wiXHJcbiAgICAgICAgICAgICAgICAgIHBUb29sdGlwPVwiRXhjbHVpciBhcnF1aXZvXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3JkZXItc29saWQgYm9yZGVyLTEgYm9yZGVyLXJvdW5kLXNtIGJvcmRlci1ncmF5LTQwMCBwaSBwaS10cmFzaCBkZWxldGUgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlRmlsZSgpXCJcclxuICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbkBpZiAoZm9ybUdyb3VwICYmIGZvcm1Db250cm9sTmFtZSAmJiBmb3JtR3JvdXAuY29udHJvbHNbZm9ybUNvbnRyb2xOYW1lXS5pbnZhbGlkICYmIGZvcm1Hcm91cC5jb250cm9sc1tmb3JtQ29udHJvbE5hbWVdLnRvdWNoZWQpICB7XHJcbiAgPHAgY2xhc3M9XCJlcnJvci1tZXNzYWdlXCI+Q2FtcG8gb2JyaWdhdMOzcmlvPC9wPlxyXG59XHJcbiJdfQ==
@@ -131,11 +131,11 @@ export class KvInputCalendarComponent extends BaseComponentInput {
131
131
  return dateMasked;
132
132
  }
133
133
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvInputCalendarComponent, deps: [{ token: i1.ComponentService }], target: i0.ɵɵFactoryTarget.Component }); }
134
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvInputCalendarComponent, selector: "kv-input-calendar", inputs: { isYear: "isYear", isMonthYear: "isMonthYear", minDate: "minDate", maxDate: "maxDate", showButtonBar: "showButtonBar", showIcon: "showIcon", showTime: "showTime", selectionMode: "selectionMode" }, outputs: { onSelectionChange: "onSelectionChange", onSelectionValue: "onSelectionValue" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, providers: ComponentProviders(KvInputCalendarComponent), viewQueries: [{ propertyName: "dateFilter", first: true, predicate: ["dateFilter"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<span>\r\n <kv-label\r\n [componentId]=\"componentId\"\r\n [label]=\"label && label + (showAsterisk ? '*' : '')\"\r\n />\r\n <p-calendar\r\n\r\n dateMask\r\n (onInput)=\"onKeyDate($event)\"\r\n\r\n #dateFilter\r\n appendTo=\"body\"\r\n [class]=\"baseInputClass\"\r\n [id]=\"componentId\"\r\n [(ngModel)]=\"value\"\r\n [disabled]=\"disabled\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n [selectionMode]=\"selectionMode\"\r\n [showButtonBar]=\"showButtonBar\"\r\n [showIcon]=\"showIcon\"\r\n [showTime]=\"showTime\"\r\n [showOnFocus]=\"showTime || screenWidth > 1366 || selectionMode == 'range'\"\r\n [view]=\"typeView\"\r\n [dateFormat]=\"dateFormat\"\r\n (onBlur)=\"onInputBlur($event)\"\r\n (onClose)=\"onInputClose($event)\"\r\n (onSelect)=\"onInputChange($event)\"\r\n styleClass=\"inputs\"\r\n [placeholder]=\"placeholder\"\r\n >\r\n </p-calendar>\r\n\r\n <kv-error [hasError]=\"hasControlError()\">{{ erroMessage() }}</kv-error>\r\n</span>\r\n<ng-content></ng-content>\r\n", styles: ["::ng-deep .p-calendar-w-btn .p-datepicker-trigger{background-color:#f2f3f5;border:none;color:#000;border:solid 1px #d1d5db;width:1.875rem}::ng-deep .p-calendar-w-btn .p-datepicker-trigger:hover{background-color:#d9dadb}::ng-deep .p-calendar-w-btn .p-datepicker-trigger:disabled{background-color:#f2f3f5}::ng-deep .p-calendar-w-btn .p-datepicker-trigger:active{background-color:#c0c1c2}::ng-deep input{font-size:.875rem}\n", "@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\";::ng-deep :root{--kv-primary-color: 41, 185, 45;--kv-secondary-color: 0, 37, 66;--kv-tertiary-color: 165, 165, 165}.material-symbols-outlined{font-family:Material Symbols Outlined!important}*{font-family:Inter var,Inter,sans-serif!important}::ng-deep .p-accordion,::ng-deep .p-accordion-header,::ng-deep .p-accordion-content,::ng-deep .p-badge,::ng-deep .p-overlay-badge,::ng-deep .p-breadcrumb,::ng-deep .p-breadcrumb-item,::ng-deep .p-breadcrumb-link,::ng-deep .p-button,::ng-deep .p-calendar,::ng-deep .p-card,::ng-deep .p-card-title,::ng-deep .p-card-subtitle,::ng-deep .p-card-content,::ng-deep .p-checkbox,::ng-deep .p-chip,::ng-deep .p-confirm-dialog,::ng-deep .p-confirm-dialog-message,::ng-deep .p-contextmenu,::ng-deep .p-contextmenu-item,::ng-deep .p-dataview,::ng-deep .p-dataview-content,::ng-deep .p-dialog,::ng-deep .p-dialog-title,::ng-deep .p-dialog-content,::ng-deep .p-dropdown,::ng-deep .p-dropdown-label,::ng-deep .p-dropdown-item,::ng-deep .p-dynamic-dialog,::ng-deep .p-dynamic-dialog-title,::ng-deep .p-dynamic-dialog-content,::ng-deep .p-editor,::ng-deep .p-fieldset,::ng-deep .p-fieldset-legend,::ng-deep .p-fieldset-content,::ng-deep .p-fileupload,::ng-deep .p-inputmask,::ng-deep .p-inputnumber,::ng-deep .p-inputtextarea,::ng-deep .p-inputtext,::ng-deep .p-menu,::ng-deep .p-menuitem,::ng-deep .p-menuitem-text,::ng-deep .p-message,::ng-deep .p-messages,::ng-deep .p-multiselect,::ng-deep .p-multiselect-label,::ng-deep .p-multiselect-item,::ng-deep .p-panelmenu,::ng-deep .p-panelmenu-header,::ng-deep .p-panelmenu-content,::ng-deep .p-panel,::ng-deep .p-panel-header,::ng-deep .p-panel-content,::ng-deep .p-password,::ng-deep .p-picklist,::ng-deep .p-progressbar,::ng-deep .p-radiobutton,::ng-deep .p-rating,::ng-deep .p-sidebar,::ng-deep .p-splitbutton,::ng-deep .p-steps,::ng-deep .p-step,::ng-deep .p-table,::ng-deep .p-datatable,::ng-deep .p-tabview,::ng-deep .p-tabpanel,::ng-deep .p-tag,::ng-deep .p-toast,::ng-deep .p-toolbar,::ng-deep .p-tooltip,::ng-deep .p-tree,::ng-deep .p-treetable,::ng-deep .p-selectbutton,::ng-deep .p-stepper,::ng-deep .p-inputgroup,::ng-deep .p-inputgroup-addon,::ng-deep .p-text{font-family:Inter var,Inter,sans-serif!important}:host ::ng-deep .inputs{height:1.875rem}:host ::ng-deep .inputs,.p-inputtext,.p-inputtextarea{font-size:.875rem}::ng-deep .p-dialog .p-dialog-header{color:#fff!important;background:#002542!important;display:flex!important;flex-wrap:wrap;word-wrap:break-word}::ng-deep .p-dialog .p-dialog-content{padding-top:1rem}::ng-deep .p-dialog{min-width:320px}::ng-deep .p-dialog-content{overflow-x:hidden}::ng-deep .p-dialog-content::-webkit-scrollbar{width:8px}::ng-deep .p-dialog-content::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-dialog-content::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-dialog-content:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-dialog-content::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}::ng-deep .p-dialog-footer{display:flex;justify-content:flex-end;padding:10px;gap:10px}::ng-deep .p-dialog .p-dialog-header .p-dialog-header-icon{display:none}::ng-deep .p-tooltip{font-size:.825rem!important}\n"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.KvErrorComponent, selector: "kv-error", inputs: ["formControl", "hasError"] }, { kind: "component", type: i4.KvLabelComponent, selector: "kv-label", inputs: ["componentId", "label"] }, { kind: "component", type: i5.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }] }); }
134
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvInputCalendarComponent, selector: "kv-input-calendar", inputs: { isYear: "isYear", isMonthYear: "isMonthYear", minDate: "minDate", maxDate: "maxDate", defaultDate: "defaultDate", showButtonBar: "showButtonBar", showIcon: "showIcon", showTime: "showTime", selectionMode: "selectionMode" }, outputs: { onSelectionChange: "onSelectionChange", onSelectionValue: "onSelectionValue" }, host: { listeners: { "window:resize": "onWindowResize($event)" } }, providers: ComponentProviders(KvInputCalendarComponent), viewQueries: [{ propertyName: "dateFilter", first: true, predicate: ["dateFilter"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<span>\r\n <kv-label\r\n [componentId]=\"componentId\"\r\n [label]=\"label && label + (showAsterisk ? '*' : '')\"\r\n />\r\n <p-calendar\r\n\r\n dateMask\r\n (onInput)=\"onKeyDate($event)\"\r\n\r\n #dateFilter\r\n appendTo=\"body\"\r\n [class]=\"baseInputClass\"\r\n [id]=\"componentId\"\r\n [(ngModel)]=\"value\"\r\n [disabled]=\"disabled\"\r\n [defaultDate]=\"defaultDate\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n [selectionMode]=\"selectionMode\"\r\n [showButtonBar]=\"showButtonBar\"\r\n [showIcon]=\"showIcon\"\r\n [showTime]=\"showTime\"\r\n [showOnFocus]=\"showTime || screenWidth > 1366 || selectionMode == 'range'\"\r\n [view]=\"typeView\"\r\n [dateFormat]=\"dateFormat\"\r\n (onBlur)=\"onInputBlur($event)\"\r\n (onClose)=\"onInputClose($event)\"\r\n (onSelect)=\"onInputChange($event)\"\r\n styleClass=\"inputs\"\r\n [placeholder]=\"placeholder\"\r\n >\r\n </p-calendar>\r\n\r\n <kv-error [hasError]=\"hasControlError()\">{{ erroMessage() }}</kv-error>\r\n</span>\r\n<ng-content></ng-content>\r\n", styles: ["::ng-deep .p-calendar-w-btn .p-datepicker-trigger{background-color:#f2f3f5;border:none;color:#000;border:solid 1px #d1d5db;width:1.875rem}::ng-deep .p-calendar-w-btn .p-datepicker-trigger:hover{background-color:#d9dadb}::ng-deep .p-calendar-w-btn .p-datepicker-trigger:disabled{background-color:#f2f3f5}::ng-deep .p-calendar-w-btn .p-datepicker-trigger:active{background-color:#c0c1c2}::ng-deep input{font-size:.875rem}\n", "@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\";::ng-deep :root{--kv-primary-color: 41, 185, 45;--kv-secondary-color: 0, 37, 66;--kv-tertiary-color: 165, 165, 165}.material-symbols-outlined{font-family:Material Symbols Outlined!important}*{font-family:Inter var,Inter,sans-serif!important}::ng-deep .p-accordion,::ng-deep .p-accordion-header,::ng-deep .p-accordion-content,::ng-deep .p-badge,::ng-deep .p-overlay-badge,::ng-deep .p-breadcrumb,::ng-deep .p-breadcrumb-item,::ng-deep .p-breadcrumb-link,::ng-deep .p-button,::ng-deep .p-calendar,::ng-deep .p-card,::ng-deep .p-card-title,::ng-deep .p-card-subtitle,::ng-deep .p-card-content,::ng-deep .p-checkbox,::ng-deep .p-chip,::ng-deep .p-confirm-dialog,::ng-deep .p-confirm-dialog-message,::ng-deep .p-contextmenu,::ng-deep .p-contextmenu-item,::ng-deep .p-dataview,::ng-deep .p-dataview-content,::ng-deep .p-dialog,::ng-deep .p-dialog-title,::ng-deep .p-dialog-content,::ng-deep .p-dropdown,::ng-deep .p-dropdown-label,::ng-deep .p-dropdown-item,::ng-deep .p-dynamic-dialog,::ng-deep .p-dynamic-dialog-title,::ng-deep .p-dynamic-dialog-content,::ng-deep .p-editor,::ng-deep .p-fieldset,::ng-deep .p-fieldset-legend,::ng-deep .p-fieldset-content,::ng-deep .p-fileupload,::ng-deep .p-inputmask,::ng-deep .p-inputnumber,::ng-deep .p-inputtextarea,::ng-deep .p-inputtext,::ng-deep .p-menu,::ng-deep .p-menuitem,::ng-deep .p-menuitem-text,::ng-deep .p-message,::ng-deep .p-messages,::ng-deep .p-multiselect,::ng-deep .p-multiselect-label,::ng-deep .p-multiselect-item,::ng-deep .p-panelmenu,::ng-deep .p-panelmenu-header,::ng-deep .p-panelmenu-content,::ng-deep .p-panel,::ng-deep .p-panel-header,::ng-deep .p-panel-content,::ng-deep .p-password,::ng-deep .p-picklist,::ng-deep .p-progressbar,::ng-deep .p-radiobutton,::ng-deep .p-rating,::ng-deep .p-sidebar,::ng-deep .p-splitbutton,::ng-deep .p-steps,::ng-deep .p-step,::ng-deep .p-table,::ng-deep .p-datatable,::ng-deep .p-tabview,::ng-deep .p-tabpanel,::ng-deep .p-tag,::ng-deep .p-toast,::ng-deep .p-toolbar,::ng-deep .p-tooltip,::ng-deep .p-tree,::ng-deep .p-treetable,::ng-deep .p-selectbutton,::ng-deep .p-stepper,::ng-deep .p-inputgroup,::ng-deep .p-inputgroup-addon,::ng-deep .p-text{font-family:Inter var,Inter,sans-serif!important}:host ::ng-deep .inputs{height:1.875rem}:host ::ng-deep .inputs,.p-inputtext,.p-inputtextarea{font-size:.875rem}::ng-deep .p-dialog .p-dialog-header{color:#fff!important;background:#002542!important;display:flex!important;flex-wrap:wrap;word-wrap:break-word}::ng-deep .p-dialog .p-dialog-content{padding-top:1rem}::ng-deep .p-dialog{min-width:320px}::ng-deep .p-dialog-content{overflow-x:hidden}::ng-deep .p-dialog-content::-webkit-scrollbar{width:8px}::ng-deep .p-dialog-content::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-dialog-content::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-dialog-content:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-dialog-content::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}::ng-deep .p-dialog-footer{display:flex;justify-content:flex-end;padding:10px;gap:10px}::ng-deep .p-dialog .p-dialog-header .p-dialog-header-icon{display:none}::ng-deep .p-tooltip{font-size:.825rem!important}\n"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.KvErrorComponent, selector: "kv-error", inputs: ["formControl", "hasError"] }, { kind: "component", type: i4.KvLabelComponent, selector: "kv-label", inputs: ["componentId", "label"] }, { kind: "component", type: i5.Calendar, selector: "p-calendar", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }] }); }
135
135
  }
136
136
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvInputCalendarComponent, decorators: [{
137
137
  type: Component,
138
- args: [{ selector: 'kv-input-calendar', providers: ComponentProviders(KvInputCalendarComponent), template: "<span>\r\n <kv-label\r\n [componentId]=\"componentId\"\r\n [label]=\"label && label + (showAsterisk ? '*' : '')\"\r\n />\r\n <p-calendar\r\n\r\n dateMask\r\n (onInput)=\"onKeyDate($event)\"\r\n\r\n #dateFilter\r\n appendTo=\"body\"\r\n [class]=\"baseInputClass\"\r\n [id]=\"componentId\"\r\n [(ngModel)]=\"value\"\r\n [disabled]=\"disabled\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n [selectionMode]=\"selectionMode\"\r\n [showButtonBar]=\"showButtonBar\"\r\n [showIcon]=\"showIcon\"\r\n [showTime]=\"showTime\"\r\n [showOnFocus]=\"showTime || screenWidth > 1366 || selectionMode == 'range'\"\r\n [view]=\"typeView\"\r\n [dateFormat]=\"dateFormat\"\r\n (onBlur)=\"onInputBlur($event)\"\r\n (onClose)=\"onInputClose($event)\"\r\n (onSelect)=\"onInputChange($event)\"\r\n styleClass=\"inputs\"\r\n [placeholder]=\"placeholder\"\r\n >\r\n </p-calendar>\r\n\r\n <kv-error [hasError]=\"hasControlError()\">{{ erroMessage() }}</kv-error>\r\n</span>\r\n<ng-content></ng-content>\r\n", styles: ["::ng-deep .p-calendar-w-btn .p-datepicker-trigger{background-color:#f2f3f5;border:none;color:#000;border:solid 1px #d1d5db;width:1.875rem}::ng-deep .p-calendar-w-btn .p-datepicker-trigger:hover{background-color:#d9dadb}::ng-deep .p-calendar-w-btn .p-datepicker-trigger:disabled{background-color:#f2f3f5}::ng-deep .p-calendar-w-btn .p-datepicker-trigger:active{background-color:#c0c1c2}::ng-deep input{font-size:.875rem}\n", "@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\";::ng-deep :root{--kv-primary-color: 41, 185, 45;--kv-secondary-color: 0, 37, 66;--kv-tertiary-color: 165, 165, 165}.material-symbols-outlined{font-family:Material Symbols Outlined!important}*{font-family:Inter var,Inter,sans-serif!important}::ng-deep .p-accordion,::ng-deep .p-accordion-header,::ng-deep .p-accordion-content,::ng-deep .p-badge,::ng-deep .p-overlay-badge,::ng-deep .p-breadcrumb,::ng-deep .p-breadcrumb-item,::ng-deep .p-breadcrumb-link,::ng-deep .p-button,::ng-deep .p-calendar,::ng-deep .p-card,::ng-deep .p-card-title,::ng-deep .p-card-subtitle,::ng-deep .p-card-content,::ng-deep .p-checkbox,::ng-deep .p-chip,::ng-deep .p-confirm-dialog,::ng-deep .p-confirm-dialog-message,::ng-deep .p-contextmenu,::ng-deep .p-contextmenu-item,::ng-deep .p-dataview,::ng-deep .p-dataview-content,::ng-deep .p-dialog,::ng-deep .p-dialog-title,::ng-deep .p-dialog-content,::ng-deep .p-dropdown,::ng-deep .p-dropdown-label,::ng-deep .p-dropdown-item,::ng-deep .p-dynamic-dialog,::ng-deep .p-dynamic-dialog-title,::ng-deep .p-dynamic-dialog-content,::ng-deep .p-editor,::ng-deep .p-fieldset,::ng-deep .p-fieldset-legend,::ng-deep .p-fieldset-content,::ng-deep .p-fileupload,::ng-deep .p-inputmask,::ng-deep .p-inputnumber,::ng-deep .p-inputtextarea,::ng-deep .p-inputtext,::ng-deep .p-menu,::ng-deep .p-menuitem,::ng-deep .p-menuitem-text,::ng-deep .p-message,::ng-deep .p-messages,::ng-deep .p-multiselect,::ng-deep .p-multiselect-label,::ng-deep .p-multiselect-item,::ng-deep .p-panelmenu,::ng-deep .p-panelmenu-header,::ng-deep .p-panelmenu-content,::ng-deep .p-panel,::ng-deep .p-panel-header,::ng-deep .p-panel-content,::ng-deep .p-password,::ng-deep .p-picklist,::ng-deep .p-progressbar,::ng-deep .p-radiobutton,::ng-deep .p-rating,::ng-deep .p-sidebar,::ng-deep .p-splitbutton,::ng-deep .p-steps,::ng-deep .p-step,::ng-deep .p-table,::ng-deep .p-datatable,::ng-deep .p-tabview,::ng-deep .p-tabpanel,::ng-deep .p-tag,::ng-deep .p-toast,::ng-deep .p-toolbar,::ng-deep .p-tooltip,::ng-deep .p-tree,::ng-deep .p-treetable,::ng-deep .p-selectbutton,::ng-deep .p-stepper,::ng-deep .p-inputgroup,::ng-deep .p-inputgroup-addon,::ng-deep .p-text{font-family:Inter var,Inter,sans-serif!important}:host ::ng-deep .inputs{height:1.875rem}:host ::ng-deep .inputs,.p-inputtext,.p-inputtextarea{font-size:.875rem}::ng-deep .p-dialog .p-dialog-header{color:#fff!important;background:#002542!important;display:flex!important;flex-wrap:wrap;word-wrap:break-word}::ng-deep .p-dialog .p-dialog-content{padding-top:1rem}::ng-deep .p-dialog{min-width:320px}::ng-deep .p-dialog-content{overflow-x:hidden}::ng-deep .p-dialog-content::-webkit-scrollbar{width:8px}::ng-deep .p-dialog-content::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-dialog-content::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-dialog-content:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-dialog-content::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}::ng-deep .p-dialog-footer{display:flex;justify-content:flex-end;padding:10px;gap:10px}::ng-deep .p-dialog .p-dialog-header .p-dialog-header-icon{display:none}::ng-deep .p-tooltip{font-size:.825rem!important}\n"] }]
138
+ args: [{ selector: 'kv-input-calendar', providers: ComponentProviders(KvInputCalendarComponent), template: "<span>\r\n <kv-label\r\n [componentId]=\"componentId\"\r\n [label]=\"label && label + (showAsterisk ? '*' : '')\"\r\n />\r\n <p-calendar\r\n\r\n dateMask\r\n (onInput)=\"onKeyDate($event)\"\r\n\r\n #dateFilter\r\n appendTo=\"body\"\r\n [class]=\"baseInputClass\"\r\n [id]=\"componentId\"\r\n [(ngModel)]=\"value\"\r\n [disabled]=\"disabled\"\r\n [defaultDate]=\"defaultDate\"\r\n [minDate]=\"minDate\"\r\n [maxDate]=\"maxDate\"\r\n [selectionMode]=\"selectionMode\"\r\n [showButtonBar]=\"showButtonBar\"\r\n [showIcon]=\"showIcon\"\r\n [showTime]=\"showTime\"\r\n [showOnFocus]=\"showTime || screenWidth > 1366 || selectionMode == 'range'\"\r\n [view]=\"typeView\"\r\n [dateFormat]=\"dateFormat\"\r\n (onBlur)=\"onInputBlur($event)\"\r\n (onClose)=\"onInputClose($event)\"\r\n (onSelect)=\"onInputChange($event)\"\r\n styleClass=\"inputs\"\r\n [placeholder]=\"placeholder\"\r\n >\r\n </p-calendar>\r\n\r\n <kv-error [hasError]=\"hasControlError()\">{{ erroMessage() }}</kv-error>\r\n</span>\r\n<ng-content></ng-content>\r\n", styles: ["::ng-deep .p-calendar-w-btn .p-datepicker-trigger{background-color:#f2f3f5;border:none;color:#000;border:solid 1px #d1d5db;width:1.875rem}::ng-deep .p-calendar-w-btn .p-datepicker-trigger:hover{background-color:#d9dadb}::ng-deep .p-calendar-w-btn .p-datepicker-trigger:disabled{background-color:#f2f3f5}::ng-deep .p-calendar-w-btn .p-datepicker-trigger:active{background-color:#c0c1c2}::ng-deep input{font-size:.875rem}\n", "@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&display=swap\";@import\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\";::ng-deep :root{--kv-primary-color: 41, 185, 45;--kv-secondary-color: 0, 37, 66;--kv-tertiary-color: 165, 165, 165}.material-symbols-outlined{font-family:Material Symbols Outlined!important}*{font-family:Inter var,Inter,sans-serif!important}::ng-deep .p-accordion,::ng-deep .p-accordion-header,::ng-deep .p-accordion-content,::ng-deep .p-badge,::ng-deep .p-overlay-badge,::ng-deep .p-breadcrumb,::ng-deep .p-breadcrumb-item,::ng-deep .p-breadcrumb-link,::ng-deep .p-button,::ng-deep .p-calendar,::ng-deep .p-card,::ng-deep .p-card-title,::ng-deep .p-card-subtitle,::ng-deep .p-card-content,::ng-deep .p-checkbox,::ng-deep .p-chip,::ng-deep .p-confirm-dialog,::ng-deep .p-confirm-dialog-message,::ng-deep .p-contextmenu,::ng-deep .p-contextmenu-item,::ng-deep .p-dataview,::ng-deep .p-dataview-content,::ng-deep .p-dialog,::ng-deep .p-dialog-title,::ng-deep .p-dialog-content,::ng-deep .p-dropdown,::ng-deep .p-dropdown-label,::ng-deep .p-dropdown-item,::ng-deep .p-dynamic-dialog,::ng-deep .p-dynamic-dialog-title,::ng-deep .p-dynamic-dialog-content,::ng-deep .p-editor,::ng-deep .p-fieldset,::ng-deep .p-fieldset-legend,::ng-deep .p-fieldset-content,::ng-deep .p-fileupload,::ng-deep .p-inputmask,::ng-deep .p-inputnumber,::ng-deep .p-inputtextarea,::ng-deep .p-inputtext,::ng-deep .p-menu,::ng-deep .p-menuitem,::ng-deep .p-menuitem-text,::ng-deep .p-message,::ng-deep .p-messages,::ng-deep .p-multiselect,::ng-deep .p-multiselect-label,::ng-deep .p-multiselect-item,::ng-deep .p-panelmenu,::ng-deep .p-panelmenu-header,::ng-deep .p-panelmenu-content,::ng-deep .p-panel,::ng-deep .p-panel-header,::ng-deep .p-panel-content,::ng-deep .p-password,::ng-deep .p-picklist,::ng-deep .p-progressbar,::ng-deep .p-radiobutton,::ng-deep .p-rating,::ng-deep .p-sidebar,::ng-deep .p-splitbutton,::ng-deep .p-steps,::ng-deep .p-step,::ng-deep .p-table,::ng-deep .p-datatable,::ng-deep .p-tabview,::ng-deep .p-tabpanel,::ng-deep .p-tag,::ng-deep .p-toast,::ng-deep .p-toolbar,::ng-deep .p-tooltip,::ng-deep .p-tree,::ng-deep .p-treetable,::ng-deep .p-selectbutton,::ng-deep .p-stepper,::ng-deep .p-inputgroup,::ng-deep .p-inputgroup-addon,::ng-deep .p-text{font-family:Inter var,Inter,sans-serif!important}:host ::ng-deep .inputs{height:1.875rem}:host ::ng-deep .inputs,.p-inputtext,.p-inputtextarea{font-size:.875rem}::ng-deep .p-dialog .p-dialog-header{color:#fff!important;background:#002542!important;display:flex!important;flex-wrap:wrap;word-wrap:break-word}::ng-deep .p-dialog .p-dialog-content{padding-top:1rem}::ng-deep .p-dialog{min-width:320px}::ng-deep .p-dialog-content{overflow-x:hidden}::ng-deep .p-dialog-content::-webkit-scrollbar{width:8px}::ng-deep .p-dialog-content::-webkit-scrollbar:hover{background-color:#dededebf}::ng-deep .p-dialog-content::-webkit-scrollbar-thumb{border-radius:4px;background-color:transparent}::ng-deep .p-dialog-content:hover::-webkit-scrollbar-thumb{border-left:2px solid white;background-color:#00000080}::ng-deep .p-dialog-content::-webkit-scrollbar-track{border-left:2px solid white;background-color:#dededebf}::ng-deep .p-dialog-footer{display:flex;justify-content:flex-end;padding:10px;gap:10px}::ng-deep .p-dialog .p-dialog-header .p-dialog-header-icon{display:none}::ng-deep .p-tooltip{font-size:.825rem!important}\n"] }]
139
139
  }], ctorParameters: () => [{ type: i1.ComponentService }], propDecorators: { isYear: [{
140
140
  type: Input
141
141
  }], isMonthYear: [{
@@ -144,6 +144,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
144
144
  type: Input
145
145
  }], maxDate: [{
146
146
  type: Input
147
+ }], defaultDate: [{
148
+ type: Input
147
149
  }], showButtonBar: [{
148
150
  type: Input
149
151
  }], showIcon: [{
@@ -163,4 +165,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
163
165
  type: HostListener,
164
166
  args: ['window:resize', ['$event']]
165
167
  }] } });
166
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtaW5wdXQtY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtaW5wdXRzL2t2LWlucHV0LWNhbGVuZGFyL2t2LWlucHV0LWNhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWlucHV0cy9rdi1pbnB1dC1jYWxlbmRhci9rdi1pbnB1dC1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDdkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7QUFZOUUsTUFBTSxPQUFPLHdCQUNYLFNBQVEsa0JBQXdCO0lBd0JoQyxZQUFZLGdCQUFrQztRQUM1QyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQXRCakIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUN4QixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUs3QixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ3pCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsa0JBQWEsR0FBb0MsUUFBUSxDQUFDO1FBRXpELHNCQUFpQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzFELHFCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBSW5FLGFBQVEsR0FBcUIsTUFBTSxDQUFDO1FB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QyxxQkFBcUI7UUFDaEYsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7OEdBMUtVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLHlaQUZ4QixrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQywySkN2QnpELDZpQ0FvQ0E7OzJGRFhhLHdCQUF3QjtrQkFUcEMsU0FBUzsrQkFDRSxtQkFBbUIsYUFNbEIsa0JBQWtCLDBCQUEwQjtxRkFNOUMsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVJLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBRTBCLFVBQVU7c0JBQTFDLFNBQVM7dUJBQUMsWUFBWTtnQkFZdkIsY0FBYztzQkFEYixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBDYWxlbmRhclR5cGVWaWV3IH0gZnJvbSAncHJpbWVuZy9jYWxlbmRhcic7XHJcblxyXG5pbXBvcnQgeyBCYXNlQ29tcG9uZW50SW5wdXQgfSBmcm9tICcuLi8uLi8uLi9hcGkvYmFzZS1jb21wb25lbnRzL2Jhc2UtY29tcG9uZW50LWlucHV0JztcclxuaW1wb3J0IHsgQ29tcG9uZW50UHJvdmlkZXJzIH0gZnJvbSAnLi4vLi4vLi4vYXBpL2hlbHBlcnMvY29tcG9uZW50LXByb3ZpZGVycyc7XHJcbmltcG9ydCB7IENvbXBvbmVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcGkvc2VydmljZXMvY29tcG9uZW50LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrdi1pbnB1dC1jYWxlbmRhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LWlucHV0LWNhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFtcclxuICAgICcuL2t2LWlucHV0LWNhbGVuZGFyLmNvbXBvbmVudC5zY3NzJyxcclxuICAgICcuLi8uLi9rZWV2by1jb21wb25lbnRzLXN0eWxlcy5zY3NzJyxcclxuICBdLFxyXG4gIHByb3ZpZGVyczogQ29tcG9uZW50UHJvdmlkZXJzKEt2SW5wdXRDYWxlbmRhckNvbXBvbmVudCksXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBLdklucHV0Q2FsZW5kYXJDb21wb25lbnRcclxuICBleHRlbmRzIEJhc2VDb21wb25lbnRJbnB1dDxEYXRlPlxyXG4gIGltcGxlbWVudHMgT25Jbml0XHJcbntcclxuICBASW5wdXQoKSBpc1llYXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBpc01vbnRoWWVhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBtaW5EYXRlITogRGF0ZTtcclxuICBASW5wdXQoKSBtYXhEYXRlITogRGF0ZTtcclxuXHJcbiAgQElucHV0KCkgc2hvd0J1dHRvbkJhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dJY29uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93VGltZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGlvbk1vZGU6ICdzaW5nbGUnIHwgJ211bHRpcGxlJyB8ICdyYW5nZScgPSAnc2luZ2xlJztcclxuICBcclxuICBAT3V0cHV0KCkgb25TZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblNlbGVjdGlvblZhbHVlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBcclxuICBAVmlld0NoaWxkKCdkYXRlRmlsdGVyJykgcHJpdmF0ZSBkYXRlRmlsdGVyOiBhbnk7XHJcblxyXG4gIHR5cGVWaWV3OiBDYWxlbmRhclR5cGVWaWV3ID0gJ2RhdGUnO1xyXG4gIGRhdGVGb3JtYXQ6IHN0cmluZyA9ICdkZC9tbS95eSc7XHJcblxyXG4gIHNjcmVlbldpZHRoITogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb21wb25lbnRTZXJ2aWNlOiBDb21wb25lbnRTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihjb21wb25lbnRTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIG9uV2luZG93UmVzaXplKCkge1xyXG4gICAgdGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogRGF0ZSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG5cclxuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNZZWFyKSB7XHJcbiAgICAgIHRoaXMudHlwZVZpZXcgPSAneWVhcic7XHJcbiAgICAgIHRoaXMuZGF0ZUZvcm1hdCA9ICd5eSc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNNb250aFllYXIpIHtcclxuICAgICAgdGhpcy50eXBlVmlldyA9ICdtb250aCc7XHJcbiAgICAgIHRoaXMuZGF0ZUZvcm1hdCA9ICdtbS95eSc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnR5cGVWaWV3ID0gJ2RhdGUnO1xyXG4gICAgICB0aGlzLmRhdGVGb3JtYXQgPSAnZGQvbW0veXknO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc2NyZWVuV2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBvbklucHV0Q2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMuaGlkZU9uUmFuZ2VNb2RlKCk7XHJcbiAgICB0aGlzLm9uU2VsZWN0aW9uVmFsdWUuZW1pdChldmVudCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybUNvbnRyb2wpIHtcclxuICAgICAgdGhpcy5vblNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGlkZU9uUmFuZ2VNb2RlKCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uTW9kZSA9PSAncmFuZ2UnKSB7XHJcbiAgICAgIGlmICh0aGlzLmRhdGVGaWx0ZXIudmFsdWVbMV0pIHtcclxuICAgICAgICB0aGlzLmRhdGVGaWx0ZXIuaGlkZU92ZXJsYXkoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbGFzdElucHV0VmFsdWU6IHN0cmluZyA9ICcnO1xyXG4gIG9uS2V5RGF0ZShldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy50eXBlVmlldyA9PT0gJ2RhdGUnKSB7XHJcblxyXG4gICAgICBjb25zdCBpbnB1dEVsZW1lbnQgPSBldmVudC50YXJnZXQ7XHJcblxyXG4gICAgICBsZXQgaW5wdXRWYWx1ZSA9IGlucHV0RWxlbWVudC52YWx1ZS5yZXBsYWNlKC9cXEQvZywgJycpOyAvLyBSZW1vdmUgdHVkbyBxdWUgbsOjbyBzZWphIGTDrWdpdG9cclxuXHJcbiAgICAgIGNvbnN0IGN1cnNvclBvc2l0aW9uID0gaW5wdXRFbGVtZW50LnNlbGVjdGlvblN0YXJ0OyAvLyBQZWdhIGEgcG9zacOnw6NvIGF0dWFsIGRvIGN1cnNvclxyXG5cclxuICAgICAgLy8gTGltaXRhIGEgZW50cmFkYSBhIDggY2FyYWN0ZXJlcyAoZGRtbXl5eXkpXHJcbiAgICAgIGlmIChpbnB1dFZhbHVlLmxlbmd0aCA+IDgpIHtcclxuICAgICAgICBpbnB1dFZhbHVlID0gaW5wdXRWYWx1ZS5zdWJzdHJpbmcoMCwgOCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlucHV0VmFsdWUgPSB0aGlzLm1hc2tEYXRlKGlucHV0VmFsdWUpO1xyXG4gICAgICBsZXQgaW5kQWRpY2FvID1cclxuICAgICAgICBpbnB1dFZhbHVlLmxlbmd0aCA+IHRoaXMubGFzdElucHV0VmFsdWUubGVuZ3RoID8gdHJ1ZSA6IGZhbHNlO1xyXG5cclxuICAgICAgdGhpcy5sYXN0SW5wdXRWYWx1ZSA9IGlucHV0VmFsdWU7XHJcblxyXG4gICAgICAvLyBDYWxjdWxhIGEgZGlmZXJlbsOnYSBkZSB0YW1hbmhvIGFww7NzIGFwbGljYXIgYSBtw6FzY2FyYVxyXG4gICAgICBjb25zdCBtYXNrZWRMZW5ndGggPSBpbnB1dFZhbHVlLmxlbmd0aDtcclxuICAgICAgY29uc3QgbGVuZ3RoRGlmZiA9IG1hc2tlZExlbmd0aCAtIHRoaXMubGFzdElucHV0VmFsdWUubGVuZ3RoO1xyXG5cclxuICAgICAgLy8gQXR1YWxpemEgbyB2YWxvciBkbyBpbnB1dCBzZW0gcGVyZGVyIGEgcG9zacOnw6NvIGRvIGN1cnNvclxyXG4gICAgICBpbnB1dEVsZW1lbnQudmFsdWUgPSBpbnB1dFZhbHVlO1xyXG5cclxuICAgICAgLy8gQWp1c3RhIGEgcG9zacOnw6NvIGRvIGN1cnNvciBkZSBhY29yZG8gY29tIGEgbXVkYW7Dp2EgY2F1c2FkYSBwZWxhIG3DoXNjYXJhXHJcbiAgICAgIGxldCBuZXdDdXJzb3JQb3NpdGlvbiA9IGN1cnNvclBvc2l0aW9uICsgbGVuZ3RoRGlmZjtcclxuXHJcbiAgICAgIC8vIFNlIG8gY3Vyc29yIGVzdGF2YSBleGF0YW1lbnRlIGVtIHVtYSBwb3Npw6fDo28gZGUgYmFycmEgZSBmb2kgdW1hIGFkacOnw6NvLCBhanVzdGEgcGFyYSBwdWxhciBhIGJhcnJhICggc29tZW50ZSBuYSBhZGnDp8OjbyBkZSBjYXJhY3RlcmVzIClcclxuICAgICAgaWYgKGluZEFkaWNhbykge1xyXG4gICAgICAgIGlmIChjdXJzb3JQb3NpdGlvbiA9PT0gMyB8fCBjdXJzb3JQb3NpdGlvbiA9PT0gNikge1xyXG4gICAgICAgICAgbmV3Q3Vyc29yUG9zaXRpb24gKz0gMTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8gRXZpdGEgcXVlIG8gY3Vyc29yIHbDoSBhbMOpbSBkbyBmaW5hbCBkbyB2YWxvciBkaWdpdGFkb1xyXG4gICAgICBpZiAobmV3Q3Vyc29yUG9zaXRpb24gPiBpbnB1dEVsZW1lbnQudmFsdWUubGVuZ3RoKSB7XHJcbiAgICAgICAgbmV3Q3Vyc29yUG9zaXRpb24gPSBpbnB1dEVsZW1lbnQudmFsdWUubGVuZ3RoO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBEZWZpbmUgYSBub3ZhIHBvc2nDp8OjbyBkbyBjdXJzb3JcclxuICAgICAgaW5wdXRFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKG5ld0N1cnNvclBvc2l0aW9uLCBuZXdDdXJzb3JQb3NpdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBvbklucHV0Qmx1cihldmVudDogRXZlbnQpOiB2b2lkIHtcclxuICAgIHN1cGVyLm9uSW5wdXRCbHVyKGV2ZW50KTtcclxuICAgIFxyXG4gICAgaWYgKHRoaXMudHlwZVZpZXcgPT09ICdkYXRlJykge1xyXG4gICAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50OyAvLyBDYXN0IHBhcmEgSFRNTElucHV0RWxlbWVudFxyXG4gICAgICBpZiAoaW5wdXQgJiYgaW5wdXQudmFsdWUpIHtcclxuICAgICAgICBjb25zdCBkYXRlU3RyaW5nID0gaW5wdXQudmFsdWU7IC8vIFBlZ2EgbyB2YWxvciBkbyBpbnB1dFxyXG4gICAgICAgIGNvbnN0IFtkYXksIG1vbnRoLCB5ZWFyXSA9IGRhdGVTdHJpbmcuc3BsaXQoJy8nKTtcclxuXHJcblxyXG4gICAgICAgIC8vIFZlcmlmaWNhIHNlIMOpIHVtYSBkYXRhIHbDoWxpZGFcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBkYXkgJiZcclxuICAgICAgICAgIG1vbnRoICYmXHJcbiAgICAgICAgICB5ZWFyICYmXHJcbiAgICAgICAgICBkYXkubGVuZ3RoID09PSAyICYmXHJcbiAgICAgICAgICBtb250aC5sZW5ndGggPT09IDIgJiZcclxuICAgICAgICAgIHllYXIubGVuZ3RoID09PSA0XHJcbiAgICAgICAgKSB7XHJcblxyXG4gICAgICAgICAgY29uc3Qgb2JqRGF0ZSA9IG5ldyBEYXRlKCt5ZWFyLCArbW9udGggLSAxLCArZGF5KTtcclxuXHJcbiAgICAgICAgICBpZiAoKCFpc05hTihvYmpEYXRlLmdldFRpbWUoKSkpICYmICEoK21vbnRoID4gMTIgfHwgK2RheSA+IDMxKSkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVGaWx0ZXIudmFsdWUgPSBvYmpEYXRlOyAvLyBBdHJpYnVpIGEgZGF0YSBzZW0gYmFycmFzIGFvIGRhdGVGaWx0ZXJcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Db250cm9sPy5zZXRFcnJvcnMoeyBpbnZhbGlkRGF0ZTogdHJ1ZSwgZXJyb01lc3NhZ2U6ICdEYXRhIEludmFsaWRhIScgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgXHJcblxyXG5cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIG1hc2tEYXRlKGRhdGU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAvLyBBcGxpY2EgYSBtw6FzY2FyYSAoZGQvbW0veXl5eSlcclxuICAgIGxldCBkYXRlTWFza2VkID0gZGF0ZTtcclxuICAgIGlmIChkYXRlLmxlbmd0aCA+PSA1KSB7XHJcbiAgICAgIGRhdGVNYXNrZWQgPSBkYXRlLnJlcGxhY2UoL14oXFxkezJ9KShcXGR7Mn0pKFxcZHswLDR9KS8sICckMS8kMi8kMycpOyAvLyBGb3JtYXRhIGNvbW8gZGQvbW0veXl5eVxyXG4gICAgfSBlbHNlIGlmIChkYXRlLmxlbmd0aCA+PSAzKSB7XHJcbiAgICAgIGRhdGVNYXNrZWQgPSBkYXRlLnJlcGxhY2UoL14oXFxkezJ9KShcXGR7MCwyfSkvLCAnJDEvJDInKTsgLy8gRm9ybWF0YSBjb21vIGRkL21tXHJcbiAgICB9XHJcbiAgICByZXR1cm4gZGF0ZU1hc2tlZDtcclxuICB9XHJcbn1cclxuIiwiPHNwYW4+XHJcbiAgPGt2LWxhYmVsXHJcbiAgICBbY29tcG9uZW50SWRdPVwiY29tcG9uZW50SWRcIlxyXG4gICAgW2xhYmVsXT1cImxhYmVsICYmIGxhYmVsICsgKHNob3dBc3RlcmlzayA/ICcqJyA6ICcnKVwiXHJcbiAgLz5cclxuICA8cC1jYWxlbmRhclxyXG5cclxuICAgIGRhdGVNYXNrXHJcbiAgICAob25JbnB1dCk9XCJvbktleURhdGUoJGV2ZW50KVwiXHJcblxyXG4gICAgI2RhdGVGaWx0ZXJcclxuICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICBbY2xhc3NdPVwiYmFzZUlucHV0Q2xhc3NcIlxyXG4gICAgW2lkXT1cImNvbXBvbmVudElkXCJcclxuICAgIFsobmdNb2RlbCldPVwidmFsdWVcIlxyXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxyXG4gICAgW21heERhdGVdPVwibWF4RGF0ZVwiXHJcbiAgICBbc2VsZWN0aW9uTW9kZV09XCJzZWxlY3Rpb25Nb2RlXCJcclxuICAgIFtzaG93QnV0dG9uQmFyXT1cInNob3dCdXR0b25CYXJcIlxyXG4gICAgW3Nob3dJY29uXT1cInNob3dJY29uXCJcclxuICAgIFtzaG93VGltZV09XCJzaG93VGltZVwiXHJcbiAgICBbc2hvd09uRm9jdXNdPVwic2hvd1RpbWUgfHwgc2NyZWVuV2lkdGggPiAxMzY2IHx8IHNlbGVjdGlvbk1vZGUgPT0gJ3JhbmdlJ1wiXHJcbiAgICBbdmlld109XCJ0eXBlVmlld1wiXHJcbiAgICBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCJcclxuICAgIChvbkJsdXIpPVwib25JbnB1dEJsdXIoJGV2ZW50KVwiXHJcbiAgICAob25DbG9zZSk9XCJvbklucHV0Q2xvc2UoJGV2ZW50KVwiXHJcbiAgICAob25TZWxlY3QpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcclxuICAgIHN0eWxlQ2xhc3M9XCJpbnB1dHNcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICA+XHJcbiAgPC9wLWNhbGVuZGFyPlxyXG5cclxuICA8a3YtZXJyb3IgW2hhc0Vycm9yXT1cImhhc0NvbnRyb2xFcnJvcigpXCI+e3sgZXJyb01lc3NhZ2UoKSB9fTwva3YtZXJyb3I+XHJcbjwvc3Bhbj5cclxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4iXX0=
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtaW5wdXQtY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtaW5wdXRzL2t2LWlucHV0LWNhbGVuZGFyL2t2LWlucHV0LWNhbGVuZGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2tlZXZvLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2t2LWlucHV0cy9rdi1pbnB1dC1jYWxlbmRhci9rdi1pbnB1dC1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDdkYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7Ozs7QUFZOUUsTUFBTSxPQUFPLHdCQUNYLFNBQVEsa0JBQXdCO0lBeUJoQyxZQUFZLGdCQUFrQztRQUM1QyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQXZCakIsV0FBTSxHQUFZLEtBQUssQ0FBQztRQUN4QixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQU03QixrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ3pCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsa0JBQWEsR0FBb0MsUUFBUSxDQUFDO1FBRXpELHNCQUFpQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzFELHFCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBSW5FLGFBQVEsR0FBcUIsTUFBTSxDQUFDO1FB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QyxxQkFBcUI7UUFDaEYsQ0FBQztRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7OEdBMUtVLHdCQUF3QjtrR0FBeEIsd0JBQXdCLHFiQUZ4QixrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQywySkN2QnpELGtsQ0FxQ0E7OzJGRFphLHdCQUF3QjtrQkFUcEMsU0FBUzsrQkFDRSxtQkFBbUIsYUFNbEIsa0JBQWtCLDBCQUEwQjtxRkFNOUMsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFMEIsVUFBVTtzQkFBMUMsU0FBUzt1QkFBQyxZQUFZO2dCQVl2QixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IENhbGVuZGFyVHlwZVZpZXcgfSBmcm9tICdwcmltZW5nL2NhbGVuZGFyJztcclxuXHJcbmltcG9ydCB7IEJhc2VDb21wb25lbnRJbnB1dCB9IGZyb20gJy4uLy4uLy4uL2FwaS9iYXNlLWNvbXBvbmVudHMvYmFzZS1jb21wb25lbnQtaW5wdXQnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRQcm92aWRlcnMgfSBmcm9tICcuLi8uLi8uLi9hcGkvaGVscGVycy9jb21wb25lbnQtcHJvdmlkZXJzJztcclxuaW1wb3J0IHsgQ29tcG9uZW50U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FwaS9zZXJ2aWNlcy9jb21wb25lbnQuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2t2LWlucHV0LWNhbGVuZGFyJyxcclxuICB0ZW1wbGF0ZVVybDogJy4va3YtaW5wdXQtY2FsZW5kYXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogW1xyXG4gICAgJy4va3YtaW5wdXQtY2FsZW5kYXIuY29tcG9uZW50LnNjc3MnLFxyXG4gICAgJy4uLy4uL2tlZXZvLWNvbXBvbmVudHMtc3R5bGVzLnNjc3MnLFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBDb21wb25lbnRQcm92aWRlcnMoS3ZJbnB1dENhbGVuZGFyQ29tcG9uZW50KSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEt2SW5wdXRDYWxlbmRhckNvbXBvbmVudFxyXG4gIGV4dGVuZHMgQmFzZUNvbXBvbmVudElucHV0PERhdGU+XHJcbiAgaW1wbGVtZW50cyBPbkluaXRcclxue1xyXG4gIEBJbnB1dCgpIGlzWWVhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzTW9udGhZZWFyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIG1pbkRhdGUhOiBEYXRlO1xyXG4gIEBJbnB1dCgpIG1heERhdGUhOiBEYXRlO1xyXG4gIEBJbnB1dCgpIGRlZmF1bHREYXRlITogRGF0ZTtcclxuXHJcbiAgQElucHV0KCkgc2hvd0J1dHRvbkJhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNob3dJY29uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93VGltZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGlvbk1vZGU6ICdzaW5nbGUnIHwgJ211bHRpcGxlJyB8ICdyYW5nZScgPSAnc2luZ2xlJztcclxuICBcclxuICBAT3V0cHV0KCkgb25TZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblNlbGVjdGlvblZhbHVlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBcclxuICBAVmlld0NoaWxkKCdkYXRlRmlsdGVyJykgcHJpdmF0ZSBkYXRlRmlsdGVyOiBhbnk7XHJcblxyXG4gIHR5cGVWaWV3OiBDYWxlbmRhclR5cGVWaWV3ID0gJ2RhdGUnO1xyXG4gIGRhdGVGb3JtYXQ6IHN0cmluZyA9ICdkZC9tbS95eSc7XHJcblxyXG4gIHNjcmVlbldpZHRoITogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihjb21wb25lbnRTZXJ2aWNlOiBDb21wb25lbnRTZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihjb21wb25lbnRTZXJ2aWNlKTtcclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIG9uV2luZG93UmVzaXplKCkge1xyXG4gICAgdGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gIH1cclxuXHJcbiAgb3ZlcnJpZGUgd3JpdGVWYWx1ZSh2YWx1ZTogRGF0ZSk6IHZvaWQge1xyXG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG5cclxuICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvdmVycmlkZSBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNZZWFyKSB7XHJcbiAgICAgIHRoaXMudHlwZVZpZXcgPSAneWVhcic7XHJcbiAgICAgIHRoaXMuZGF0ZUZvcm1hdCA9ICd5eSc7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaXNNb250aFllYXIpIHtcclxuICAgICAgdGhpcy50eXBlVmlldyA9ICdtb250aCc7XHJcbiAgICAgIHRoaXMuZGF0ZUZvcm1hdCA9ICdtbS95eSc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnR5cGVWaWV3ID0gJ2RhdGUnO1xyXG4gICAgICB0aGlzLmRhdGVGb3JtYXQgPSAnZGQvbW0veXknO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zY3JlZW5XaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uSW5wdXRDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5oaWRlT25SYW5nZU1vZGUoKTtcclxuICAgIHRoaXMub25TZWxlY3Rpb25WYWx1ZS5lbWl0KGV2ZW50KTtcclxuXHJcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbCkge1xyXG4gICAgICB0aGlzLm9uU2VsZWN0aW9uQ2hhbmdlLmVtaXQodGhpcy5mb3JtQ29udHJvbC52YWx1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoaWRlT25SYW5nZU1vZGUoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09ICdyYW5nZScpIHtcclxuICAgICAgaWYgKHRoaXMuZGF0ZUZpbHRlci52YWx1ZVsxXSkge1xyXG4gICAgICAgIHRoaXMuZGF0ZUZpbHRlci5oaWRlT3ZlcmxheSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsYXN0SW5wdXRWYWx1ZTogc3RyaW5nID0gJyc7XHJcbiAgb25LZXlEYXRlKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnR5cGVWaWV3ID09PSAnZGF0ZScpIHtcclxuXHJcbiAgICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IGV2ZW50LnRhcmdldDtcclxuXHJcbiAgICAgIGxldCBpbnB1dFZhbHVlID0gaW5wdXRFbGVtZW50LnZhbHVlLnJlcGxhY2UoL1xcRC9nLCAnJyk7IC8vIFJlbW92ZSB0dWRvIHF1ZSBuw6NvIHNlamEgZMOtZ2l0b1xyXG5cclxuICAgICAgY29uc3QgY3Vyc29yUG9zaXRpb24gPSBpbnB1dEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7IC8vIFBlZ2EgYSBwb3Npw6fDo28gYXR1YWwgZG8gY3Vyc29yXHJcblxyXG4gICAgICAvLyBMaW1pdGEgYSBlbnRyYWRhIGEgOCBjYXJhY3RlcmVzIChkZG1teXl5eSlcclxuICAgICAgaWYgKGlucHV0VmFsdWUubGVuZ3RoID4gOCkge1xyXG4gICAgICAgIGlucHV0VmFsdWUgPSBpbnB1dFZhbHVlLnN1YnN0cmluZygwLCA4KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaW5wdXRWYWx1ZSA9IHRoaXMubWFza0RhdGUoaW5wdXRWYWx1ZSk7XHJcbiAgICAgIGxldCBpbmRBZGljYW8gPVxyXG4gICAgICAgIGlucHV0VmFsdWUubGVuZ3RoID4gdGhpcy5sYXN0SW5wdXRWYWx1ZS5sZW5ndGggPyB0cnVlIDogZmFsc2U7XHJcblxyXG4gICAgICB0aGlzLmxhc3RJbnB1dFZhbHVlID0gaW5wdXRWYWx1ZTtcclxuXHJcbiAgICAgIC8vIENhbGN1bGEgYSBkaWZlcmVuw6dhIGRlIHRhbWFuaG8gYXDDs3MgYXBsaWNhciBhIG3DoXNjYXJhXHJcbiAgICAgIGNvbnN0IG1hc2tlZExlbmd0aCA9IGlucHV0VmFsdWUubGVuZ3RoO1xyXG4gICAgICBjb25zdCBsZW5ndGhEaWZmID0gbWFza2VkTGVuZ3RoIC0gdGhpcy5sYXN0SW5wdXRWYWx1ZS5sZW5ndGg7XHJcblxyXG4gICAgICAvLyBBdHVhbGl6YSBvIHZhbG9yIGRvIGlucHV0IHNlbSBwZXJkZXIgYSBwb3Npw6fDo28gZG8gY3Vyc29yXHJcbiAgICAgIGlucHV0RWxlbWVudC52YWx1ZSA9IGlucHV0VmFsdWU7XHJcblxyXG4gICAgICAvLyBBanVzdGEgYSBwb3Npw6fDo28gZG8gY3Vyc29yIGRlIGFjb3JkbyBjb20gYSBtdWRhbsOnYSBjYXVzYWRhIHBlbGEgbcOhc2NhcmFcclxuICAgICAgbGV0IG5ld0N1cnNvclBvc2l0aW9uID0gY3Vyc29yUG9zaXRpb24gKyBsZW5ndGhEaWZmO1xyXG5cclxuICAgICAgLy8gU2UgbyBjdXJzb3IgZXN0YXZhIGV4YXRhbWVudGUgZW0gdW1hIHBvc2nDp8OjbyBkZSBiYXJyYSBlIGZvaSB1bWEgYWRpw6fDo28sIGFqdXN0YSBwYXJhIHB1bGFyIGEgYmFycmEgKCBzb21lbnRlIG5hIGFkacOnw6NvIGRlIGNhcmFjdGVyZXMgKVxyXG4gICAgICBpZiAoaW5kQWRpY2FvKSB7XHJcbiAgICAgICAgaWYgKGN1cnNvclBvc2l0aW9uID09PSAzIHx8IGN1cnNvclBvc2l0aW9uID09PSA2KSB7XHJcbiAgICAgICAgICBuZXdDdXJzb3JQb3NpdGlvbiArPSAxO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyBFdml0YSBxdWUgbyBjdXJzb3IgdsOhIGFsw6ltIGRvIGZpbmFsIGRvIHZhbG9yIGRpZ2l0YWRvXHJcbiAgICAgIGlmIChuZXdDdXJzb3JQb3NpdGlvbiA+IGlucHV0RWxlbWVudC52YWx1ZS5sZW5ndGgpIHtcclxuICAgICAgICBuZXdDdXJzb3JQb3NpdGlvbiA9IGlucHV0RWxlbWVudC52YWx1ZS5sZW5ndGg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIERlZmluZSBhIG5vdmEgcG9zacOnw6NvIGRvIGN1cnNvclxyXG4gICAgICBpbnB1dEVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2UobmV3Q3Vyc29yUG9zaXRpb24sIG5ld0N1cnNvclBvc2l0aW9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG92ZXJyaWRlIG9uSW5wdXRCbHVyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgc3VwZXIub25JbnB1dEJsdXIoZXZlbnQpO1xyXG4gICAgXHJcbiAgICBpZiAodGhpcy50eXBlVmlldyA9PT0gJ2RhdGUnKSB7XHJcbiAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7IC8vIENhc3QgcGFyYSBIVE1MSW5wdXRFbGVtZW50XHJcbiAgICAgIGlmIChpbnB1dCAmJiBpbnB1dC52YWx1ZSkge1xyXG4gICAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPSBpbnB1dC52YWx1ZTsgLy8gUGVnYSBvIHZhbG9yIGRvIGlucHV0XHJcbiAgICAgICAgY29uc3QgW2RheSwgbW9udGgsIHllYXJdID0gZGF0ZVN0cmluZy5zcGxpdCgnLycpO1xyXG5cclxuXHJcbiAgICAgICAgLy8gVmVyaWZpY2Egc2Ugw6kgdW1hIGRhdGEgdsOhbGlkYVxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIGRheSAmJlxyXG4gICAgICAgICAgbW9udGggJiZcclxuICAgICAgICAgIHllYXIgJiZcclxuICAgICAgICAgIGRheS5sZW5ndGggPT09IDIgJiZcclxuICAgICAgICAgIG1vbnRoLmxlbmd0aCA9PT0gMiAmJlxyXG4gICAgICAgICAgeWVhci5sZW5ndGggPT09IDRcclxuICAgICAgICApIHtcclxuXHJcbiAgICAgICAgICBjb25zdCBvYmpEYXRlID0gbmV3IERhdGUoK3llYXIsICttb250aCAtIDEsICtkYXkpO1xyXG5cclxuICAgICAgICAgIGlmICgoIWlzTmFOKG9iakRhdGUuZ2V0VGltZSgpKSkgJiYgISgrbW9udGggPiAxMiB8fCArZGF5ID4gMzEpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUZpbHRlci52YWx1ZSA9IG9iakRhdGU7IC8vIEF0cmlidWkgYSBkYXRhIHNlbSBiYXJyYXMgYW8gZGF0ZUZpbHRlclxyXG4gICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRyb2w/LnNldEVycm9ycyh7IGludmFsaWREYXRlOiB0cnVlLCBlcnJvTWVzc2FnZTogJ0RhdGEgSW52YWxpZGEhJyB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG5cclxuICAgICAgICBcclxuXHJcblxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbWFza0RhdGUoZGF0ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIC8vIEFwbGljYSBhIG3DoXNjYXJhIChkZC9tbS95eXl5KVxyXG4gICAgbGV0IGRhdGVNYXNrZWQgPSBkYXRlO1xyXG4gICAgaWYgKGRhdGUubGVuZ3RoID49IDUpIHtcclxuICAgICAgZGF0ZU1hc2tlZCA9IGRhdGUucmVwbGFjZSgvXihcXGR7Mn0pKFxcZHsyfSkoXFxkezAsNH0pLywgJyQxLyQyLyQzJyk7IC8vIEZvcm1hdGEgY29tbyBkZC9tbS95eXl5XHJcbiAgICB9IGVsc2UgaWYgKGRhdGUubGVuZ3RoID49IDMpIHtcclxuICAgICAgZGF0ZU1hc2tlZCA9IGRhdGUucmVwbGFjZSgvXihcXGR7Mn0pKFxcZHswLDJ9KS8sICckMS8kMicpOyAvLyBGb3JtYXRhIGNvbW8gZGQvbW1cclxuICAgIH1cclxuICAgIHJldHVybiBkYXRlTWFza2VkO1xyXG4gIH1cclxufVxyXG4iLCI8c3Bhbj5cclxuICA8a3YtbGFiZWxcclxuICAgIFtjb21wb25lbnRJZF09XCJjb21wb25lbnRJZFwiXHJcbiAgICBbbGFiZWxdPVwibGFiZWwgJiYgbGFiZWwgKyAoc2hvd0FzdGVyaXNrID8gJyonIDogJycpXCJcclxuICAvPlxyXG4gIDxwLWNhbGVuZGFyXHJcblxyXG4gICAgZGF0ZU1hc2tcclxuICAgIChvbklucHV0KT1cIm9uS2V5RGF0ZSgkZXZlbnQpXCJcclxuXHJcbiAgICAjZGF0ZUZpbHRlclxyXG4gICAgYXBwZW5kVG89XCJib2R5XCJcclxuICAgIFtjbGFzc109XCJiYXNlSW5wdXRDbGFzc1wiXHJcbiAgICBbaWRdPVwiY29tcG9uZW50SWRcIlxyXG4gICAgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiXHJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgW2RlZmF1bHREYXRlXT1cImRlZmF1bHREYXRlXCJcclxuICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxyXG4gICAgW21heERhdGVdPVwibWF4RGF0ZVwiXHJcbiAgICBbc2VsZWN0aW9uTW9kZV09XCJzZWxlY3Rpb25Nb2RlXCJcclxuICAgIFtzaG93QnV0dG9uQmFyXT1cInNob3dCdXR0b25CYXJcIlxyXG4gICAgW3Nob3dJY29uXT1cInNob3dJY29uXCJcclxuICAgIFtzaG93VGltZV09XCJzaG93VGltZVwiXHJcbiAgICBbc2hvd09uRm9jdXNdPVwic2hvd1RpbWUgfHwgc2NyZWVuV2lkdGggPiAxMzY2IHx8IHNlbGVjdGlvbk1vZGUgPT0gJ3JhbmdlJ1wiXHJcbiAgICBbdmlld109XCJ0eXBlVmlld1wiXHJcbiAgICBbZGF0ZUZvcm1hdF09XCJkYXRlRm9ybWF0XCJcclxuICAgIChvbkJsdXIpPVwib25JbnB1dEJsdXIoJGV2ZW50KVwiXHJcbiAgICAob25DbG9zZSk9XCJvbklucHV0Q2xvc2UoJGV2ZW50KVwiXHJcbiAgICAob25TZWxlY3QpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcclxuICAgIHN0eWxlQ2xhc3M9XCJpbnB1dHNcIlxyXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcclxuICA+XHJcbiAgPC9wLWNhbGVuZGFyPlxyXG5cclxuICA8a3YtZXJyb3IgW2hhc0Vycm9yXT1cImhhc0NvbnRyb2xFcnJvcigpXCI+e3sgZXJyb01lc3NhZ2UoKSB9fTwva3YtZXJyb3I+XHJcbjwvc3Bhbj5cclxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4iXX0=