lib-portal-angular 0.0.67 → 0.0.69

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,62 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../../service/auth-service.service";
4
+ import * as i2 from "@angular/common";
5
+ export class AccordionArgentaComponent {
6
+ constructor(authService) {
7
+ this.authService = authService;
8
+ this.title = 'Accordion Title'; // Título do accordion
9
+ this.isOpen = false; // Estado inicial do accordion
10
+ this.permissions = []; // Permissões necessárias para exibir o accordion
11
+ this.toggleEvent = new EventEmitter(); // Evento emitido ao abrir/fechar o accordion
12
+ }
13
+ ngOnInit() {
14
+ this.validatePermissions();
15
+ }
16
+ ngOnChanges(changes) {
17
+ if (changes['permissions']) {
18
+ this.validatePermissions();
19
+ }
20
+ }
21
+ hasPermission() {
22
+ if (!this.permissions || this.permissions.length === 0) {
23
+ return true; // Se não forem passadas permissões, o accordion será exibido por padrão
24
+ }
25
+ try {
26
+ return this.authService.hasPermission(this.permissions); // Verifica se o usuário tem as permissões
27
+ }
28
+ catch (error) {
29
+ if (error instanceof Error) {
30
+ console.error('Permission error:', error.message);
31
+ }
32
+ else {
33
+ console.error('Unknown error occurred during permission check');
34
+ }
35
+ return false; // Se ocorrer um erro ou as permissões não forem válidas, o accordion não será exibido
36
+ }
37
+ }
38
+ toggle() {
39
+ this.isOpen = !this.isOpen;
40
+ this.toggleEvent.emit(this.isOpen); // Emite o estado atual (aberto ou fechado)
41
+ }
42
+ validatePermissions() {
43
+ if (!Array.isArray(this.permissions)) {
44
+ throw new Error(`Invalid permissions: ${this.permissions}. It should be an array of strings.`);
45
+ }
46
+ }
47
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccordionArgentaComponent, deps: [{ token: i1.AuthService }], target: i0.ɵɵFactoryTarget.Component }); }
48
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AccordionArgentaComponent, selector: "argenta-accordion", inputs: { title: "title", isOpen: "isOpen", permissions: "permissions" }, outputs: { toggleEvent: "toggleEvent" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"hasPermission()\">\n <div class=\"accordion\">\n <div class=\"accordion-header\" (click)=\"toggle()\" [class.open]=\"isOpen\">\n <h3>{{ title }}</h3>\n <!-- \u00CDcone da seta -->\n <span class=\"accordion-icon\">\u25BC</span>\n </div>\n <div class=\"accordion-content\" [class.open]=\"isOpen\">\n <ng-content></ng-content> <!-- Conte\u00FAdo do accordion -->\n </div>\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap\";body{font-family:Inter,sans-serif}.accordion{border:1px solid #ccc;border-radius:8px;margin-bottom:15px;font-family:Inter,Arial,sans-serif;transition:max-height .4s ease;overflow:hidden}.accordion .accordion-header{background-color:#00444c;color:#fff;cursor:pointer;padding:10px;display:flex;justify-content:space-between;align-items:center;font-size:1.2rem}.accordion .accordion-header h3{margin:0;font-size:1rem;font-weight:700}.accordion .accordion-header .accordion-icon{font-size:1.2rem;transition:transform .4s ease;transform:rotate(0)}.accordion .accordion-header.open .accordion-icon{transform:rotate(180deg)}.accordion .accordion-content{max-height:0;overflow:hidden;padding:0 10px;background-color:#fff;font-size:.9rem;transition:max-height .4s ease,padding .4s ease}.accordion .accordion-content.open{max-height:500px;padding:10px;border-bottom-left-radius:8px;border-bottom-right-radius:8px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
49
+ }
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AccordionArgentaComponent, decorators: [{
51
+ type: Component,
52
+ args: [{ selector: 'argenta-accordion', template: "<ng-container *ngIf=\"hasPermission()\">\n <div class=\"accordion\">\n <div class=\"accordion-header\" (click)=\"toggle()\" [class.open]=\"isOpen\">\n <h3>{{ title }}</h3>\n <!-- \u00CDcone da seta -->\n <span class=\"accordion-icon\">\u25BC</span>\n </div>\n <div class=\"accordion-content\" [class.open]=\"isOpen\">\n <ng-content></ng-content> <!-- Conte\u00FAdo do accordion -->\n </div>\n </div>\n</ng-container>\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap\";body{font-family:Inter,sans-serif}.accordion{border:1px solid #ccc;border-radius:8px;margin-bottom:15px;font-family:Inter,Arial,sans-serif;transition:max-height .4s ease;overflow:hidden}.accordion .accordion-header{background-color:#00444c;color:#fff;cursor:pointer;padding:10px;display:flex;justify-content:space-between;align-items:center;font-size:1.2rem}.accordion .accordion-header h3{margin:0;font-size:1rem;font-weight:700}.accordion .accordion-header .accordion-icon{font-size:1.2rem;transition:transform .4s ease;transform:rotate(0)}.accordion .accordion-header.open .accordion-icon{transform:rotate(180deg)}.accordion .accordion-content{max-height:0;overflow:hidden;padding:0 10px;background-color:#fff;font-size:.9rem;transition:max-height .4s ease,padding .4s ease}.accordion .accordion-content.open{max-height:500px;padding:10px;border-bottom-left-radius:8px;border-bottom-right-radius:8px}\n"] }]
53
+ }], ctorParameters: function () { return [{ type: i1.AuthService }]; }, propDecorators: { title: [{
54
+ type: Input
55
+ }], isOpen: [{
56
+ type: Input
57
+ }], permissions: [{
58
+ type: Input
59
+ }], toggleEvent: [{
60
+ type: Output
61
+ }] } });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3JkaW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xpYi1wb3J0YWwtYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvYWNjb3JkaW9uL2FjY29yZGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItcG9ydGFsLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2FjY29yZGlvbi9hY2NvcmRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBNkQsTUFBTSxlQUFlLENBQUM7Ozs7QUFRbEksTUFBTSxPQUFPLHlCQUF5QjtJQU9sQyxZQUFvQixXQUF3QjtRQUF4QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQU5uQyxVQUFLLEdBQVcsaUJBQWlCLENBQUMsQ0FBRSxzQkFBc0I7UUFDMUQsV0FBTSxHQUFZLEtBQUssQ0FBQyxDQUFZLDhCQUE4QjtRQUNsRSxnQkFBVyxHQUFhLEVBQUUsQ0FBQyxDQUFTLGlEQUFpRDtRQUVwRixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUMsQ0FBRSw2Q0FBNkM7SUFFbkQsQ0FBQztJQUVqRCxRQUFRO1FBQ0osSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixJQUFJLE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUN4QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUM5QjtJQUNMLENBQUM7SUFFRCxhQUFhO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3BELE9BQU8sSUFBSSxDQUFDLENBQUMsd0VBQXdFO1NBQ3hGO1FBRUQsSUFBSTtZQUNBLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsMENBQTBDO1NBQ3RHO1FBQUMsT0FBTyxLQUFjLEVBQUU7WUFDckIsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFO2dCQUN4QixPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyRDtpQkFBTTtnQkFDSCxPQUFPLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxDQUFDLENBQUM7YUFDbkU7WUFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDLHNGQUFzRjtTQUN2RztJQUNMLENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUUsMkNBQTJDO0lBQ3BGLENBQUM7SUFFTyxtQkFBbUI7UUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLElBQUksQ0FBQyxXQUFXLHFDQUFxQyxDQUFDLENBQUM7U0FDbEc7SUFDTCxDQUFDOytHQTdDUSx5QkFBeUI7bUdBQXpCLHlCQUF5QixpTUNUdEMsc2NBWUE7OzRGREhhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDSSxtQkFBbUI7a0dBS3BCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvYXV0aC1zZXJ2aWNlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FyZ2VudGEtYWNjb3JkaW9uJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWNjb3JkaW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9hY2NvcmRpb24uY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBY2NvcmRpb25BcmdlbnRhQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJ0FjY29yZGlvbiBUaXRsZSc7ICAvLyBUw610dWxvIGRvIGFjY29yZGlvblxuICAgIEBJbnB1dCgpIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlOyAgICAgICAgICAgIC8vIEVzdGFkbyBpbmljaWFsIGRvIGFjY29yZGlvblxuICAgIEBJbnB1dCgpIHBlcm1pc3Npb25zOiBzdHJpbmdbXSA9IFtdOyAgICAgICAgIC8vIFBlcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIGV4aWJpciBvIGFjY29yZGlvblxuXG4gICAgQE91dHB1dCgpIHRvZ2dsZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpOyAgLy8gRXZlbnRvIGVtaXRpZG8gYW8gYWJyaXIvZmVjaGFyIG8gYWNjb3JkaW9uXG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGF1dGhTZXJ2aWNlOiBBdXRoU2VydmljZSkgeyB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52YWxpZGF0ZVBlcm1pc3Npb25zKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlc1sncGVybWlzc2lvbnMnXSkge1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVBlcm1pc3Npb25zKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYXNQZXJtaXNzaW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMucGVybWlzc2lvbnMgfHwgdGhpcy5wZXJtaXNzaW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlOyAvLyBTZSBuw6NvIGZvcmVtIHBhc3NhZGFzIHBlcm1pc3PDtWVzLCBvIGFjY29yZGlvbiBzZXLDoSBleGliaWRvIHBvciBwYWRyw6NvXG4gICAgICAgIH1cblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuYXV0aFNlcnZpY2UuaGFzUGVybWlzc2lvbih0aGlzLnBlcm1pc3Npb25zKTsgLy8gVmVyaWZpY2Egc2UgbyB1c3XDoXJpbyB0ZW0gYXMgcGVybWlzc8O1ZXNcbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignUGVybWlzc2lvbiBlcnJvcjonLCBlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignVW5rbm93biBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcGVybWlzc2lvbiBjaGVjaycpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBTZSBvY29ycmVyIHVtIGVycm8gb3UgYXMgcGVybWlzc8O1ZXMgbsOjbyBmb3JlbSB2w6FsaWRhcywgbyBhY2NvcmRpb24gbsOjbyBzZXLDoSBleGliaWRvXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB0b2dnbGUoKSB7XG4gICAgICAgIHRoaXMuaXNPcGVuID0gIXRoaXMuaXNPcGVuO1xuICAgICAgICB0aGlzLnRvZ2dsZUV2ZW50LmVtaXQodGhpcy5pc09wZW4pOyAgLy8gRW1pdGUgbyBlc3RhZG8gYXR1YWwgKGFiZXJ0byBvdSBmZWNoYWRvKVxuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVQZXJtaXNzaW9ucygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMucGVybWlzc2lvbnMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgcGVybWlzc2lvbnM6ICR7dGhpcy5wZXJtaXNzaW9uc30uIEl0IHNob3VsZCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzLmApO1xuICAgICAgICB9XG4gICAgfVxufSIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNQZXJtaXNzaW9uKClcIj5cbiAgPGRpdiBjbGFzcz1cImFjY29yZGlvblwiPlxuICAgIDxkaXYgY2xhc3M9XCJhY2NvcmRpb24taGVhZGVyXCIgKGNsaWNrKT1cInRvZ2dsZSgpXCIgW2NsYXNzLm9wZW5dPVwiaXNPcGVuXCI+XG4gICAgICA8aDM+e3sgdGl0bGUgfX08L2gzPlxuICAgICAgPCEtLSDDjWNvbmUgZGEgc2V0YSAtLT5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYWNjb3JkaW9uLWljb25cIj7ilrw8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImFjY29yZGlvbi1jb250ZW50XCIgW2NsYXNzLm9wZW5dPVwiaXNPcGVuXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+IDwhLS0gQ29udGXDumRvIGRvIGFjY29yZGlvbiAtLT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
@@ -0,0 +1,326 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "lucide-angular";
5
+ export class CalendarArgentaComponent {
6
+ constructor() {
7
+ this.id = 'argenta-calendar';
8
+ this.placeholder = 'Select a date';
9
+ this.label = 'Select a date';
10
+ this.minDate = null;
11
+ this.maxDate = null;
12
+ this.locale = 'pt'; // Suporte para diferentes idiomas
13
+ this.useTime = false; // Propriedade para definir se inclui hora
14
+ this.initialDate = null; // Propriedade para receber a data inicial
15
+ this.dateChange = new EventEmitter();
16
+ this.currentYear = new Date().getFullYear();
17
+ this.currentMonth = new Date().getMonth();
18
+ this.selectedDate = null;
19
+ this.isCalendarVisible = false;
20
+ this.inputDate = '';
21
+ this.invalidDate = false;
22
+ this.locales = {
23
+ en: {
24
+ months: [
25
+ 'January', 'February', 'March', 'April', 'May', 'June', 'July',
26
+ 'August', 'September', 'October', 'November', 'December'
27
+ ],
28
+ daysOfWeek: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
29
+ invalidDateMessage: 'Invalid date. Please enter a date in the format dd/MM/yyyy'
30
+ },
31
+ pt: {
32
+ months: [
33
+ 'Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho',
34
+ 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'
35
+ ],
36
+ daysOfWeek: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'],
37
+ invalidDateMessage: 'Data inválida. Por favor, insira uma data no formato dd/MM/yyyy'
38
+ },
39
+ es: {
40
+ months: [
41
+ 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio',
42
+ 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'
43
+ ],
44
+ daysOfWeek: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sá'],
45
+ invalidDateMessage: 'Fecha inválida. Por favor, ingrese una fecha en el formato dd/MM/yyyy'
46
+ }
47
+ };
48
+ }
49
+ ngOnInit() {
50
+ if (this.initialDate) {
51
+ // Se a initialDate for fornecida, usamos ela
52
+ this.updateCalendar(this.initialDate);
53
+ }
54
+ else {
55
+ // Caso contrário, usamos a data atual
56
+ const today = new Date();
57
+ this.selectedDate = today;
58
+ this.inputDate = this.formatDateForDisplay(today);
59
+ this.dateChange.emit(this.inputDate); // Emite a data inicial
60
+ }
61
+ }
62
+ ngOnChanges(changes) {
63
+ if (changes['initialDate'] && changes['initialDate'].currentValue) {
64
+ this.updateCalendar(changes['initialDate'].currentValue);
65
+ }
66
+ }
67
+ // Método para atualizar o calendário com a data passada
68
+ updateCalendar(dateString) {
69
+ const parsedDate = this.parseDate(dateString);
70
+ // Verifica se a data é válida
71
+ if (parsedDate !== null && this.validateDate(dateString)) {
72
+ this.selectedDate = parsedDate;
73
+ this.currentYear = parsedDate.getFullYear();
74
+ this.currentMonth = parsedDate.getMonth();
75
+ this.inputDate = this.formatDateForDisplay(parsedDate);
76
+ this.dateChange.emit(this.inputDate); // Emite a nova data
77
+ this.invalidDate = false; // Remove o status de data inválida
78
+ }
79
+ else {
80
+ this.invalidDate = true; // Marca a data como inválida
81
+ this.dateChange.emit('Data ou hora inválida'); // Emite mensagem de erro
82
+ console.log('Data ou hora inválida passada para o componente');
83
+ }
84
+ }
85
+ onInputChange(event) {
86
+ const inputValue = event.target.value;
87
+ this.inputDate = this.applyDateMask(inputValue);
88
+ // Validação para obrigar a hora quando useTime for verdadeiro
89
+ if (this.useTime) {
90
+ // Se a entrada não tiver o comprimento correto para data + hora
91
+ if (this.inputDate.length < 16) {
92
+ this.invalidDate = true;
93
+ this.dateChange.emit('Data ou hora inválida');
94
+ return;
95
+ }
96
+ }
97
+ // Somente validar a hora se o campo useTime estiver ativo e o formato estiver correto
98
+ if (this.useTime && this.inputDate.length >= 14) {
99
+ const [datePart, timePart] = this.inputDate.split(' ');
100
+ if (timePart) {
101
+ const [hourStr, minuteStr] = timePart.split(':');
102
+ const hour = Number(hourStr);
103
+ const minute = Number(minuteStr);
104
+ // Corrige somente se a hora/minuto forem inválidos
105
+ if (hour < 0 || hour > 23 || isNaN(hour)) {
106
+ this.invalidDate = true;
107
+ this.dateChange.emit('Hora inválida');
108
+ return;
109
+ }
110
+ else if (minute < 0 || minute > 59 || isNaN(minute)) {
111
+ this.invalidDate = true;
112
+ this.dateChange.emit('Hora inválida');
113
+ return;
114
+ }
115
+ else {
116
+ this.invalidDate = false;
117
+ }
118
+ }
119
+ }
120
+ // Emitir a data quando for válida
121
+ if ((this.useTime && this.inputDate.length === 16) || (!this.useTime && this.inputDate.length === 10)) {
122
+ if (this.validateDate(this.inputDate)) {
123
+ this.invalidDate = false;
124
+ const parsedDate = this.parseDate(this.inputDate);
125
+ // Verificar se parsedDate não é nulo antes de acessar suas propriedades
126
+ if (parsedDate !== null) {
127
+ this.currentYear = parsedDate.getFullYear();
128
+ this.currentMonth = parsedDate.getMonth();
129
+ this.selectedDate = parsedDate;
130
+ // Formatar a data para dd/MM/yyyy - HH:mm
131
+ const formattedDate = this.formatDateForEmit(parsedDate);
132
+ this.dateChange.emit(formattedDate); // Emite a data válida com o hífen
133
+ }
134
+ else {
135
+ console.log('Data inválida passada para o componente.');
136
+ this.dateChange.emit('Data inválida');
137
+ }
138
+ }
139
+ else {
140
+ this.invalidDate = true;
141
+ this.dateChange.emit('Data inválida'); // Emite o evento com mensagem de erro
142
+ }
143
+ }
144
+ }
145
+ // Formatar a data e hora com hífen
146
+ formatDateForEmit(date) {
147
+ const day = date.getDate().toString().padStart(2, '0');
148
+ const month = (date.getMonth() + 1).toString().padStart(2, '0');
149
+ const year = date.getFullYear();
150
+ let formattedDate = `${day}/${month}/${year}`;
151
+ if (this.useTime) {
152
+ const hours = date.getHours().toString().padStart(2, '0');
153
+ const minutes = date.getMinutes().toString().padStart(2, '0');
154
+ // Adiciona o hífen entre a data e a hora
155
+ formattedDate += ` - ${hours}:${minutes}`;
156
+ }
157
+ return formattedDate;
158
+ }
159
+ applyDateMask(inputValue) {
160
+ let digitsOnly = inputValue.replace(/\D/g, '');
161
+ // Limita os dígitos com base no uso de hora
162
+ const maxLength = this.useTime ? 12 : 8;
163
+ if (digitsOnly.length > maxLength) {
164
+ digitsOnly = digitsOnly.substring(0, maxLength);
165
+ }
166
+ let day = digitsOnly.substring(0, 2);
167
+ let month = digitsOnly.substring(2, 4);
168
+ let year = digitsOnly.substring(4, 8);
169
+ let hour = digitsOnly.substring(8, 10);
170
+ let minute = digitsOnly.substring(10, 12);
171
+ let maskedDate = `${day}/${month}/${year}`;
172
+ if (this.useTime && hour && minute) {
173
+ maskedDate += ` ${hour}:${minute}`;
174
+ }
175
+ return maskedDate;
176
+ }
177
+ validateDate(inputValue) {
178
+ const [datePart, timePart] = inputValue.split(' ');
179
+ const [dayStr, monthStr, yearStr] = datePart.split('/');
180
+ const day = Number(dayStr);
181
+ const month = Number(monthStr);
182
+ const year = Number(yearStr);
183
+ // Validação de data
184
+ if (month < 1 || month > 12 || yearStr.length !== 4 || isNaN(year)) {
185
+ return false;
186
+ }
187
+ const lastDayOfMonth = new Date(year, month, 0).getDate();
188
+ if (day < 1 || day > lastDayOfMonth) {
189
+ return false;
190
+ }
191
+ // Validação de hora
192
+ if (this.useTime && timePart) {
193
+ const [hourStr, minuteStr] = timePart.split(':');
194
+ const hour = Number(hourStr);
195
+ const minute = Number(minuteStr);
196
+ if (hour < 0 || hour > 23 || minute < 0 || minute > 59 || isNaN(hour) || isNaN(minute)) {
197
+ return false; // Hora ou minuto inválidos
198
+ }
199
+ }
200
+ return true;
201
+ }
202
+ parseDate(dateStr) {
203
+ const [datePart, timePart] = dateStr.split(' ');
204
+ const [day, month, year] = datePart.split('/').map(Number);
205
+ if (!day || !month || !year) {
206
+ return null;
207
+ }
208
+ const date = new Date(year, month - 1, day);
209
+ if (this.useTime && timePart) {
210
+ const [hour, minute] = timePart.split(':').map(Number);
211
+ date.setHours(hour || 0, minute || 0);
212
+ }
213
+ return date;
214
+ }
215
+ formatDateForDisplay(date) {
216
+ const day = date.getDate().toString().padStart(2, '0');
217
+ const month = (date.getMonth() + 1).toString().padStart(2, '0');
218
+ const year = date.getFullYear();
219
+ let formattedDate = `${day}/${month}/${year}`;
220
+ if (this.useTime) {
221
+ const hours = date.getHours().toString().padStart(2, '0');
222
+ const minutes = date.getMinutes().toString().padStart(2, '0');
223
+ formattedDate += ` ${hours}:${minutes}`;
224
+ }
225
+ return formattedDate;
226
+ }
227
+ toggleCalendar() {
228
+ this.isCalendarVisible = !this.isCalendarVisible;
229
+ }
230
+ selectDate(day) {
231
+ const date = new Date(this.currentYear, this.currentMonth, day);
232
+ this.inputDate = this.formatDateForDisplay(date);
233
+ this.selectedDate = date; // Armazena a data selecionada
234
+ this.dateChange.emit(this.inputDate); // Emite a data selecionada ao clicar no calendário
235
+ this.isCalendarVisible = false; // Fecha o calendário após a seleção
236
+ }
237
+ handleKeyPress(event) {
238
+ const charCode = event.key.charCodeAt(0);
239
+ if (charCode < 48 || charCode > 57) {
240
+ event.preventDefault();
241
+ }
242
+ if (this.inputDate.replace(/\D/g, '').length >= (this.useTime ? 12 : 8)) {
243
+ event.preventDefault();
244
+ }
245
+ }
246
+ get daysInMonth() {
247
+ const firstDayOfMonth = new Date(this.currentYear, this.currentMonth, 1).getDay(); // Dia da semana do primeiro dia do mês
248
+ const totalDaysInMonth = new Date(this.currentYear, this.currentMonth + 1, 0).getDate(); // Total de dias no mês
249
+ const daysArray = Array.from({ length: totalDaysInMonth }, (_, i) => i + 1); // Array com todos os dias do mês
250
+ const leadingEmptyDays = Array(firstDayOfMonth).fill(null); // Dias vazios antes do primeiro dia do mês
251
+ return [...leadingEmptyDays, ...daysArray]; // Retorna os dias vazios seguidos pelos dias do mês
252
+ }
253
+ get months() {
254
+ return this.locales[this.locale]?.months || this.locales['en'].months;
255
+ }
256
+ get daysOfWeek() {
257
+ return this.locales[this.locale]?.daysOfWeek || this.locales['en'].daysOfWeek;
258
+ }
259
+ prevMonth() {
260
+ if (this.currentMonth === 0) {
261
+ this.currentMonth = 11;
262
+ this.currentYear--;
263
+ }
264
+ else {
265
+ this.currentMonth--;
266
+ }
267
+ }
268
+ nextMonth() {
269
+ if (this.currentMonth === 11) {
270
+ this.currentMonth = 0;
271
+ this.currentYear++;
272
+ }
273
+ else {
274
+ this.currentMonth++;
275
+ }
276
+ }
277
+ isSelected(day) {
278
+ if (!this.selectedDate)
279
+ return false;
280
+ const selectedDay = this.selectedDate.getDate();
281
+ const selectedMonth = this.selectedDate.getMonth();
282
+ const selectedYear = this.selectedDate.getFullYear();
283
+ return (selectedDay === day &&
284
+ selectedMonth === this.currentMonth &&
285
+ selectedYear === this.currentYear);
286
+ }
287
+ isToday(day) {
288
+ const today = new Date();
289
+ return (today.getFullYear() === this.currentYear &&
290
+ today.getMonth() === this.currentMonth &&
291
+ today.getDate() === day);
292
+ }
293
+ isDateDisabled(day) {
294
+ const date = new Date(this.currentYear, this.currentMonth, day);
295
+ if (this.minDate && date < this.minDate)
296
+ return true;
297
+ if (this.maxDate && date > this.maxDate)
298
+ return true;
299
+ return false;
300
+ }
301
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CalendarArgentaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
302
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CalendarArgentaComponent, selector: "argenta-calendar", inputs: { id: "id", placeholder: "placeholder", label: "label", minDate: "minDate", maxDate: "maxDate", locale: "locale", useTime: "useTime", initialDate: "initialDate" }, outputs: { dateChange: "dateChange" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"form-group\">\n <label [for]=\"id\" [ngClass]=\"'label-styles'\">{{ label }}</label>\n <div class=\"input-wrapper\">\n <input\n id=\"{{ id }}\"\n type=\"text\"\n class=\"custom-input\"\n [attr.placeholder]=\"useTime ? 'dd/MM/yyyy HH:mm' : 'dd/MM/yyyy'\"\n [value]=\"inputDate\"\n (input)=\"onInputChange($event)\"\n (keypress)=\"handleKeyPress($event)\"\n (click)=\"toggleCalendar()\"\n />\n <!-- \u00CDcone de calend\u00E1rio dentro do input -->\n <lucide-icon name=\"calendar\" class=\"calendar-icon\"></lucide-icon>\n </div>\n\n <!-- Mensagem de erro estilo bal\u00E3ozinho -->\n <div *ngIf=\"invalidDate\" class=\"error-message\">\n {{ locales[locale].invalidDateMessage }}\n <!-- Mostra a parte de 'HH:mm' apenas se useTime for verdadeiro -->\n <span *ngIf=\"useTime\"> HH:mm.</span>\n </div>\n\n <div class=\"calendar-wrapper\">\n <div class=\"calendar-container\" [ngClass]=\"{ open: isCalendarVisible }\">\n <div class=\"calendar\">\n <div class=\"calendar-header\">\n <button (click)=\"prevMonth()\">&#8249;</button>\n <span>{{ months[currentMonth] }} {{ currentYear }}</span>\n <button (click)=\"nextMonth()\">&#8250;</button>\n </div>\n\n <div class=\"calendar-body\">\n <div class=\"calendar-day-names\">\n <span *ngFor=\"let day of daysOfWeek\">{{ day }}</span>\n </div>\n\n <div class=\"calendar-days\">\n <span\n *ngFor=\"let day of daysInMonth; let i = index\"\n [class.today]=\"isToday(day)\"\n [class.selected]=\"isSelected(day)\"\n [class.disabled]=\"isDateDisabled(day)\"\n (click)=\"day ? selectDate(day) : null\"\n >\n <!-- Somente permite clique em dias v\u00E1lidos -->\n {{ day ? day : \"\" }}\n <!-- Exibe o dia se for v\u00E1lido, sen\u00E3o exibe vazio -->\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap\";body{font-family:Inter,sans-serif}.calendar-container{overflow:hidden;max-height:0;transition:max-height .4s ease}.calendar-container.open{max-height:500px}.calendar{display:inline-block;border:1px solid #ccc;border-radius:8px;padding:10px;width:450px;font-family:Inter,Arial,sans-serif;transition:max-height .4s ease}.calendar .calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;font-weight:700}.calendar .calendar-header button{background-color:#00444c;color:#fff;border:none;padding:8px 12px;cursor:pointer;border-radius:8px;font-size:1.2rem;transition:background-color .2s}.calendar .calendar-header button:hover{background-color:#2ca58d}.calendar .calendar-header span{font-size:1.4rem;color:#00444c;text-align:center;flex-grow:1}.calendar .calendar-body{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}.calendar .calendar-body .calendar-day-names{display:contents}.calendar .calendar-body .calendar-day-names span{text-align:center;font-weight:700;margin-bottom:5px;font-size:.9rem}.calendar .calendar-body .calendar-day-names span:nth-child(1){color:#ff8080}.calendar .calendar-body .calendar-day-names span:nth-child(7){color:#555}.calendar .calendar-body .calendar-days{display:contents}.calendar .calendar-body .calendar-days span{display:flex;justify-content:center;align-items:center;margin:1px;padding:10px;height:45px;width:45px;cursor:pointer;border-radius:50%;transition:background-color .2s,color .2s ease}.calendar .calendar-body .calendar-days span.today{background-color:#2ca58d;color:#fff}.calendar .calendar-body .calendar-days span.selected{background-color:#00444c;color:#fff}.calendar .calendar-body .calendar-days span.disabled{background-color:#e9ecef;color:#999;cursor:not-allowed}.calendar .calendar-body .calendar-days span:hover:not(.disabled){background-color:#2ca58d;color:#fff}.custom-input{font-family:Inter,Arial,sans-serif;color:#333;font-size:.9rem;height:46px;padding:.5rem .75rem;border:1px solid #ccc;border-radius:4px;width:100%;box-sizing:border-box}.custom-input::placeholder{font-size:14px;color:#d3d3d3}.label-styles{font-weight:400;font-family:Inter,Arial,sans-serif;font-size:16px;line-height:19.36px;text-align:left;margin-top:1rem;margin-bottom:.5rem}.error-message{position:relative;background-color:#ff8080;color:#fff;padding:10px;border-radius:8px;font-size:.9rem;max-width:250px;margin-top:5px}.error-message:after{content:\"\";position:absolute;top:100%;left:20px;border-width:10px;border-style:solid;border-color:#ff8080 transparent transparent transparent}.input-wrapper{position:relative;display:inline-block;width:100%}.input-wrapper .custom-input{width:100%;padding-right:40px;box-sizing:border-box}.input-wrapper .calendar-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);pointer-events:none;color:#b8b8b8}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.LucideAngularComponent, selector: "lucide-angular, lucide-icon, i-lucide, span-lucide", inputs: ["class", "name", "img", "color", "absoluteStrokeWidth", "size", "strokeWidth"] }] }); }
303
+ }
304
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CalendarArgentaComponent, decorators: [{
305
+ type: Component,
306
+ args: [{ selector: 'argenta-calendar', template: "<div class=\"form-group\">\n <label [for]=\"id\" [ngClass]=\"'label-styles'\">{{ label }}</label>\n <div class=\"input-wrapper\">\n <input\n id=\"{{ id }}\"\n type=\"text\"\n class=\"custom-input\"\n [attr.placeholder]=\"useTime ? 'dd/MM/yyyy HH:mm' : 'dd/MM/yyyy'\"\n [value]=\"inputDate\"\n (input)=\"onInputChange($event)\"\n (keypress)=\"handleKeyPress($event)\"\n (click)=\"toggleCalendar()\"\n />\n <!-- \u00CDcone de calend\u00E1rio dentro do input -->\n <lucide-icon name=\"calendar\" class=\"calendar-icon\"></lucide-icon>\n </div>\n\n <!-- Mensagem de erro estilo bal\u00E3ozinho -->\n <div *ngIf=\"invalidDate\" class=\"error-message\">\n {{ locales[locale].invalidDateMessage }}\n <!-- Mostra a parte de 'HH:mm' apenas se useTime for verdadeiro -->\n <span *ngIf=\"useTime\"> HH:mm.</span>\n </div>\n\n <div class=\"calendar-wrapper\">\n <div class=\"calendar-container\" [ngClass]=\"{ open: isCalendarVisible }\">\n <div class=\"calendar\">\n <div class=\"calendar-header\">\n <button (click)=\"prevMonth()\">&#8249;</button>\n <span>{{ months[currentMonth] }} {{ currentYear }}</span>\n <button (click)=\"nextMonth()\">&#8250;</button>\n </div>\n\n <div class=\"calendar-body\">\n <div class=\"calendar-day-names\">\n <span *ngFor=\"let day of daysOfWeek\">{{ day }}</span>\n </div>\n\n <div class=\"calendar-days\">\n <span\n *ngFor=\"let day of daysInMonth; let i = index\"\n [class.today]=\"isToday(day)\"\n [class.selected]=\"isSelected(day)\"\n [class.disabled]=\"isDateDisabled(day)\"\n (click)=\"day ? selectDate(day) : null\"\n >\n <!-- Somente permite clique em dias v\u00E1lidos -->\n {{ day ? day : \"\" }}\n <!-- Exibe o dia se for v\u00E1lido, sen\u00E3o exibe vazio -->\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap\";body{font-family:Inter,sans-serif}.calendar-container{overflow:hidden;max-height:0;transition:max-height .4s ease}.calendar-container.open{max-height:500px}.calendar{display:inline-block;border:1px solid #ccc;border-radius:8px;padding:10px;width:450px;font-family:Inter,Arial,sans-serif;transition:max-height .4s ease}.calendar .calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;font-weight:700}.calendar .calendar-header button{background-color:#00444c;color:#fff;border:none;padding:8px 12px;cursor:pointer;border-radius:8px;font-size:1.2rem;transition:background-color .2s}.calendar .calendar-header button:hover{background-color:#2ca58d}.calendar .calendar-header span{font-size:1.4rem;color:#00444c;text-align:center;flex-grow:1}.calendar .calendar-body{display:grid;grid-template-columns:repeat(7,1fr);gap:7px}.calendar .calendar-body .calendar-day-names{display:contents}.calendar .calendar-body .calendar-day-names span{text-align:center;font-weight:700;margin-bottom:5px;font-size:.9rem}.calendar .calendar-body .calendar-day-names span:nth-child(1){color:#ff8080}.calendar .calendar-body .calendar-day-names span:nth-child(7){color:#555}.calendar .calendar-body .calendar-days{display:contents}.calendar .calendar-body .calendar-days span{display:flex;justify-content:center;align-items:center;margin:1px;padding:10px;height:45px;width:45px;cursor:pointer;border-radius:50%;transition:background-color .2s,color .2s ease}.calendar .calendar-body .calendar-days span.today{background-color:#2ca58d;color:#fff}.calendar .calendar-body .calendar-days span.selected{background-color:#00444c;color:#fff}.calendar .calendar-body .calendar-days span.disabled{background-color:#e9ecef;color:#999;cursor:not-allowed}.calendar .calendar-body .calendar-days span:hover:not(.disabled){background-color:#2ca58d;color:#fff}.custom-input{font-family:Inter,Arial,sans-serif;color:#333;font-size:.9rem;height:46px;padding:.5rem .75rem;border:1px solid #ccc;border-radius:4px;width:100%;box-sizing:border-box}.custom-input::placeholder{font-size:14px;color:#d3d3d3}.label-styles{font-weight:400;font-family:Inter,Arial,sans-serif;font-size:16px;line-height:19.36px;text-align:left;margin-top:1rem;margin-bottom:.5rem}.error-message{position:relative;background-color:#ff8080;color:#fff;padding:10px;border-radius:8px;font-size:.9rem;max-width:250px;margin-top:5px}.error-message:after{content:\"\";position:absolute;top:100%;left:20px;border-width:10px;border-style:solid;border-color:#ff8080 transparent transparent transparent}.input-wrapper{position:relative;display:inline-block;width:100%}.input-wrapper .custom-input{width:100%;padding-right:40px;box-sizing:border-box}.input-wrapper .calendar-icon{position:absolute;top:50%;right:10px;transform:translateY(-50%);pointer-events:none;color:#b8b8b8}\n"] }]
307
+ }], propDecorators: { id: [{
308
+ type: Input
309
+ }], placeholder: [{
310
+ type: Input
311
+ }], label: [{
312
+ type: Input
313
+ }], minDate: [{
314
+ type: Input
315
+ }], maxDate: [{
316
+ type: Input
317
+ }], locale: [{
318
+ type: Input
319
+ }], useTime: [{
320
+ type: Input
321
+ }], initialDate: [{
322
+ type: Input
323
+ }], dateChange: [{
324
+ type: Output
325
+ }] } });
326
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItYXJnZW50YS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItcG9ydGFsLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2NhbGVuZGFyLWFyZ2VudGEvY2FsZW5kYXItYXJnZW50YS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItcG9ydGFsLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2NhbGVuZGFyLWFyZ2VudGEvY2FsZW5kYXItYXJnZW50YS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFvQyxNQUFNLGVBQWUsQ0FBQzs7OztBQU96RyxNQUFNLE9BQU8sd0JBQXdCO0lBTHJDO1FBTWEsT0FBRSxHQUFXLGtCQUFrQixDQUFDO1FBQ2hDLGdCQUFXLEdBQVcsZUFBZSxDQUFDO1FBQ3RDLFVBQUssR0FBVyxlQUFlLENBQUM7UUFDaEMsWUFBTyxHQUFnQixJQUFJLENBQUM7UUFDNUIsWUFBTyxHQUFnQixJQUFJLENBQUM7UUFDNUIsV0FBTSxHQUFXLElBQUksQ0FBQyxDQUFDLGtDQUFrQztRQUN6RCxZQUFPLEdBQVksS0FBSyxDQUFDLENBQUMsMENBQTBDO1FBQ3BFLGdCQUFXLEdBQWtCLElBQUksQ0FBQyxDQUFDLDBDQUEwQztRQUM1RSxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVsRCxnQkFBVyxHQUFXLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDL0MsaUJBQVksR0FBVyxJQUFJLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdDLGlCQUFZLEdBQWdCLElBQUksQ0FBQztRQUNqQyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFDbkMsY0FBUyxHQUFXLEVB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QU8sSUFBSSxDQUFDO1FBQ3JELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7K0dBblZRLHdCQUF3QjttR0FBeEIsd0JBQXdCLGdTQ1ByQyx3aUVBd0RBOzs0RkRqRGEsd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNJLGtCQUFrQjs4QkFLbkIsRUFBRTtzQkFBVixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcmdlbnRhLWNhbGVuZGFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2FsZW5kYXItYXJnZW50YS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2FsZW5kYXItYXJnZW50YS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDYWxlbmRhckFyZ2VudGFDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgaWQ6IHN0cmluZyA9ICdhcmdlbnRhLWNhbGVuZGFyJztcbiAgICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ1NlbGVjdCBhIGRhdGUnO1xuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnU2VsZWN0IGEgZGF0ZSc7XG4gICAgQElucHV0KCkgbWluRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIG1heERhdGU6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBsb2NhbGU6IHN0cmluZyA9ICdwdCc7IC8vIFN1cG9ydGUgcGFyYSBkaWZlcmVudGVzIGlkaW9tYXNcbiAgICBASW5wdXQoKSB1c2VUaW1lOiBib29sZWFuID0gZmFsc2U7IC8vIFByb3ByaWVkYWRlIHBhcmEgZGVmaW5pciBzZSBpbmNsdWkgaG9yYVxuICAgIEBJbnB1dCgpIGluaXRpYWxEYXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDsgLy8gUHJvcHJpZWRhZGUgcGFyYSByZWNlYmVyIGEgZGF0YSBpbmljaWFsXG4gICAgQE91dHB1dCgpIGRhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIGN1cnJlbnRZZWFyOiBudW1iZXIgPSBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCk7XG4gICAgY3VycmVudE1vbnRoOiBudW1iZXIgPSBuZXcgRGF0ZSgpLmdldE1vbnRoKCk7XG4gICAgc2VsZWN0ZWREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XG4gICAgaXNDYWxlbmRhclZpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBpbnB1dERhdGU6IHN0cmluZyA9ICcnO1xuICAgIGludmFsaWREYXRlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBsb2NhbGVzOiBhbnkgPSB7XG4gICAgICAgIGVuOiB7XG4gICAgICAgICAgICBtb250aHM6IFtcbiAgICAgICAgICAgICAgICAnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsICdKdWx5JyxcbiAgICAgICAgICAgICAgICAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGRheXNPZldlZWs6IFsnU3UnLCAnTW8nLCAnVHUnLCAnV2UnLCAnVGgnLCAnRnInLCAnU2EnXSxcbiAgICAgICAgICAgIGludmFsaWREYXRlTWVzc2FnZTogJ0ludmFsaWQgZGF0ZS4gUGxlYXNlIGVudGVyIGEgZGF0ZSBpbiB0aGUgZm9ybWF0IGRkL01NL3l5eXknXG4gICAgICAgIH0sXG4gICAgICAgIHB0OiB7XG4gICAgICAgICAgICBtb250aHM6IFtcbiAgICAgICAgICAgICAgICAnSmFuZWlybycsICdGZXZlcmVpcm8nLCAnTWFyw6dvJywgJ0FicmlsJywgJ01haW8nLCAnSnVuaG8nLCAnSnVsaG8nLFxuICAgICAgICAgICAgICAgICdBZ29zdG8nLCAnU2V0ZW1icm8nLCAnT3V0dWJybycsICdOb3ZlbWJybycsICdEZXplbWJybydcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBkYXlzT2ZXZWVrOiBbJ0RvbScsICdTZWcnLCAnVGVyJywgJ1F1YScsICdRdWknLCAnU2V4JywgJ1PDoWInXSxcbiAgICAgICAgICAgIGludmFsaWREYXRlTWVzc2FnZTogJ0RhdGEgaW52w6FsaWRhLiBQb3IgZmF2b3IsIGluc2lyYSB1bWEgZGF0YSBubyBmb3JtYXRvIGRkL01NL3l5eXknXG4gICAgICAgIH0sXG4gICAgICAgIGVzOiB7XG4gICAgICAgICAgICBtb250aHM6IFtcbiAgICAgICAgICAgICAgICAnRW5lcm8nLCAnRmVicmVybycsICdNYXJ6bycsICdBYnJpbCcsICdNYXlvJywgJ0p1bmlvJywgJ0p1bGlvJyxcbiAgICAgICAgICAgICAgICAnQWdvc3RvJywgJ1NlcHRpZW1icmUnLCAnT2N0dWJyZScsICdOb3ZpZW1icmUnLCAnRGljaWVtYnJlJ1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGRheXNPZldlZWs6IFsnRG8nLCAnTHUnLCAnTWEnLCAnTWknLCAnSnUnLCAnVmknLCAnU8OhJ10sXG4gICAgICAgICAgICBpbnZhbGlkRGF0ZU1lc3NhZ2U6ICdGZWNoYSBpbnbDoWxpZGEuIFBvciBmYXZvciwgaW5ncmVzZSB1bmEgZmVjaGEgZW4gZWwgZm9ybWF0byBkZC9NTS95eXl5J1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsRGF0ZSkge1xuICAgICAgICAgICAgLy8gU2UgYSBpbml0aWFsRGF0ZSBmb3IgZm9ybmVjaWRhLCB1c2Ftb3MgZWxhXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNhbGVuZGFyKHRoaXMuaW5pdGlhbERhdGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQ2FzbyBjb250csOhcmlvLCB1c2Ftb3MgYSBkYXRhIGF0dWFsXG4gICAgICAgICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHRvZGF5O1xuICAgICAgICAgICAgdGhpcy5pbnB1dERhdGUgPSB0aGlzLmZvcm1hdERhdGVGb3JEaXNwbGF5KHRvZGF5KTtcbiAgICAgICAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KHRoaXMuaW5wdXREYXRlKTsgLy8gRW1pdGUgYSBkYXRhIGluaWNpYWxcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ2luaXRpYWxEYXRlJ10gJiYgY2hhbmdlc1snaW5pdGlhbERhdGUnXS5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FsZW5kYXIoY2hhbmdlc1snaW5pdGlhbERhdGUnXS5jdXJyZW50VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTcOpdG9kbyBwYXJhIGF0dWFsaXphciBvIGNhbGVuZMOhcmlvIGNvbSBhIGRhdGEgcGFzc2FkYVxuICAgIHVwZGF0ZUNhbGVuZGFyKGRhdGVTdHJpbmc6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBwYXJzZWREYXRlID0gdGhpcy5wYXJzZURhdGUoZGF0ZVN0cmluZyk7XG5cbiAgICAgICAgLy8gVmVyaWZpY2Egc2UgYSBkYXRhIMOpIHbDoWxpZGFcbiAgICAgICAgaWYgKHBhcnNlZERhdGUgIT09IG51bGwgJiYgdGhpcy52YWxpZGF0ZURhdGUoZGF0ZVN0cmluZykpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gcGFyc2VkRGF0ZTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFllYXIgPSBwYXJzZWREYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRNb250aCA9IHBhcnNlZERhdGUuZ2V0TW9udGgoKTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXREYXRlID0gdGhpcy5mb3JtYXREYXRlRm9yRGlzcGxheShwYXJzZWREYXRlKTtcbiAgICAgICAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KHRoaXMuaW5wdXREYXRlKTsgLy8gRW1pdGUgYSBub3ZhIGRhdGFcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZERhdGUgPSBmYWxzZTsgLy8gUmVtb3ZlIG8gc3RhdHVzIGRlIGRhdGEgaW52w6FsaWRhXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmludmFsaWREYXRlID0gdHJ1ZTsgLy8gTWFyY2EgYSBkYXRhIGNvbW8gaW52w6FsaWRhXG4gICAgICAgICAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdCgnRGF0YSBvdSBob3JhIGludsOhbGlkYScpOyAvLyBFbWl0ZSBtZW5zYWdlbSBkZSBlcnJvXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRGF0YSBvdSBob3JhIGludsOhbGlkYSBwYXNzYWRhIHBhcmEgbyBjb21wb25lbnRlJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbklucHV0Q2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXRWYWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcbiAgICAgICAgdGhpcy5pbnB1dERhdGUgPSB0aGlzLmFwcGx5RGF0ZU1hc2soaW5wdXRWYWx1ZSk7XG5cbiAgICAgICAgLy8gVmFsaWRhw6fDo28gcGFyYSBvYnJpZ2FyIGEgaG9yYSBxdWFuZG8gdXNlVGltZSBmb3IgdmVyZGFkZWlyb1xuICAgICAgICBpZiAodGhpcy51c2VUaW1lKSB7XG4gICAgICAgICAgICAvLyBTZSBhIGVudHJhZGEgbsOjbyB0aXZlciBvIGNvbXByaW1lbnRvIGNvcnJldG8gcGFyYSBkYXRhICsgaG9yYVxuICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXREYXRlLmxlbmd0aCA8IDE2KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkRGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQoJ0RhdGEgb3UgaG9yYSBpbnbDoWxpZGEnKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTb21lbnRlIHZhbGlkYXIgYSBob3JhIHNlIG8gY2FtcG8gdXNlVGltZSBlc3RpdmVyIGF0aXZvIGUgbyBmb3JtYXRvIGVzdGl2ZXIgY29ycmV0b1xuICAgICAgICBpZiAodGhpcy51c2VUaW1lICYmIHRoaXMuaW5wdXREYXRlLmxlbmd0aCA+PSAxNCkge1xuICAgICAgICAgICAgY29uc3QgW2RhdGVQYXJ0LCB0aW1lUGFydF0gPSB0aGlzLmlucHV0RGF0ZS5zcGxpdCgnICcpO1xuICAgICAgICAgICAgaWYgKHRpbWVQYXJ0KSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW2hvdXJTdHIsIG1pbnV0ZVN0cl0gPSB0aW1lUGFydC5zcGxpdCgnOicpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhvdXIgPSBOdW1iZXIoaG91clN0cik7XG4gICAgICAgICAgICAgICAgY29uc3QgbWludXRlID0gTnVtYmVyKG1pbnV0ZVN0cik7XG5cbiAgICAgICAgICAgICAgICAvLyBDb3JyaWdlIHNvbWVudGUgc2UgYSBob3JhL21pbnV0byBmb3JlbSBpbnbDoWxpZG9zXG4gICAgICAgICAgICAgICAgaWYgKGhvdXIgPCAwIHx8IGhvdXIgPiAyMyB8fCBpc05hTihob3VyKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludmFsaWREYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQoJ0hvcmEgaW52w6FsaWRhJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1pbnV0ZSA8IDAgfHwgbWludXRlID4gNTkgfHwgaXNOYU4obWludXRlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludmFsaWREYXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQoJ0hvcmEgaW52w6FsaWRhJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmludmFsaWREYXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gRW1pdGlyIGEgZGF0YSBxdWFuZG8gZm9yIHbDoWxpZGFcbiAgICAgICAgaWYgKCh0aGlzLnVzZVRpbWUgJiYgdGhpcy5pbnB1dERhdGUubGVuZ3RoID09PSAxNikgfHwgKCF0aGlzLnVzZVRpbWUgJiYgdGhpcy5pbnB1dERhdGUubGVuZ3RoID09PSAxMCkpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnZhbGlkYXRlRGF0ZSh0aGlzLmlucHV0RGF0ZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmludmFsaWREYXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkRGF0ZSA9IHRoaXMucGFyc2VEYXRlKHRoaXMuaW5wdXREYXRlKTtcblxuICAgICAgICAgICAgICAgIC8vIFZlcmlmaWNhciBzZSBwYXJzZWREYXRlIG7Do28gw6kgbnVsbyBhbnRlcyBkZSBhY2Vzc2FyIHN1YXMgcHJvcHJpZWRhZGVzXG4gICAgICAgICAgICAgICAgaWYgKHBhcnNlZERhdGUgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50WWVhciA9IHBhcnNlZERhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TW9udGggPSBwYXJzZWREYXRlLmdldE1vbnRoKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gcGFyc2VkRGF0ZTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBGb3JtYXRhciBhIGRhdGEgcGFyYSBkZC9NTS95eXl5IC0gSEg6bW1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IHRoaXMuZm9ybWF0RGF0ZUZvckVtaXQocGFyc2VkRGF0ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQoZm9ybWF0dGVkRGF0ZSk7IC8vIEVtaXRlIGEgZGF0YSB2w6FsaWRhIGNvbSBvIGjDrWZlblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEYXRhIGludsOhbGlkYSBwYXNzYWRhIHBhcmEgbyBjb21wb25lbnRlLicpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdCgnRGF0YSBpbnbDoWxpZGEnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZERhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUNoYW5nZS5lbWl0KCdEYXRhIGludsOhbGlkYScpOyAvLyBFbWl0ZSBvIGV2ZW50byBjb20gbWVuc2FnZW0gZGUgZXJyb1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gRm9ybWF0YXIgYSBkYXRhIGUgaG9yYSBjb20gaMOtZmVuXG4gICAgZm9ybWF0RGF0ZUZvckVtaXQoZGF0ZTogRGF0ZSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IGRheSA9IGRhdGUuZ2V0RGF0ZSgpLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICAgICAgY29uc3QgbW9udGggPSAoZGF0ZS5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgICAgIGxldCBmb3JtYXR0ZWREYXRlID0gYCR7ZGF5fS8ke21vbnRofS8ke3llYXJ9YDtcblxuICAgICAgICBpZiAodGhpcy51c2VUaW1lKSB7XG4gICAgICAgICAgICBjb25zdCBob3VycyA9IGRhdGUuZ2V0SG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgICAgICBjb25zdCBtaW51dGVzID0gZGF0ZS5nZXRNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgICAgICAgLy8gQWRpY2lvbmEgbyBow61mZW4gZW50cmUgYSBkYXRhIGUgYSBob3JhXG4gICAgICAgICAgICBmb3JtYXR0ZWREYXRlICs9IGAgLSAke2hvdXJzfToke21pbnV0ZXN9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWREYXRlO1xuICAgIH1cblxuICAgIGFwcGx5RGF0ZU1hc2soaW5wdXRWYWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGRpZ2l0c09ubHkgPSBpbnB1dFZhbHVlLnJlcGxhY2UoL1xcRC9nLCAnJyk7XG5cbiAgICAgICAgLy8gTGltaXRhIG9zIGTDrWdpdG9zIGNvbSBiYXNlIG5vIHVzbyBkZSBob3JhXG4gICAgICAgIGNvbnN0IG1heExlbmd0aCA9IHRoaXMudXNlVGltZSA/IDEyIDogODtcbiAgICAgICAgaWYgKGRpZ2l0c09ubHkubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgICAgICAgICBkaWdpdHNPbmx5ID0gZGlnaXRzT25seS5zdWJzdHJpbmcoMCwgbWF4TGVuZ3RoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBkYXkgPSBkaWdpdHNPbmx5LnN1YnN0cmluZygwLCAyKTtcbiAgICAgICAgbGV0IG1vbnRoID0gZGlnaXRzT25seS5zdWJzdHJpbmcoMiwgNCk7XG4gICAgICAgIGxldCB5ZWFyID0gZGlnaXRzT25seS5zdWJzdHJpbmcoNCwgOCk7XG4gICAgICAgIGxldCBob3VyID0gZGlnaXRzT25seS5zdWJzdHJpbmcoOCwgMTApO1xuICAgICAgICBsZXQgbWludXRlID0gZGlnaXRzT25seS5zdWJzdHJpbmcoMTAsIDEyKTtcblxuICAgICAgICBsZXQgbWFza2VkRGF0ZSA9IGAke2RheX0vJHttb250aH0vJHt5ZWFyfWA7XG4gICAgICAgIGlmICh0aGlzLnVzZVRpbWUgJiYgaG91ciAmJiBtaW51dGUpIHtcbiAgICAgICAgICAgIG1hc2tlZERhdGUgKz0gYCAke2hvdXJ9OiR7bWludXRlfWA7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbWFza2VkRGF0ZTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZURhdGUoaW5wdXRWYWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IFtkYXRlUGFydCwgdGltZVBhcnRdID0gaW5wdXRWYWx1ZS5zcGxpdCgnICcpO1xuICAgICAgICBjb25zdCBbZGF5U3RyLCBtb250aFN0ciwgeWVhclN0cl0gPSBkYXRlUGFydC5zcGxpdCgnLycpO1xuICAgICAgICBjb25zdCBkYXkgPSBOdW1iZXIoZGF5U3RyKTtcbiAgICAgICAgY29uc3QgbW9udGggPSBOdW1iZXIobW9udGhTdHIpO1xuICAgICAgICBjb25zdCB5ZWFyID0gTnVtYmVyKHllYXJTdHIpO1xuXG4gICAgICAgIC8vIFZhbGlkYcOnw6NvIGRlIGRhdGFcbiAgICAgICAgaWYgKG1vbnRoIDwgMSB8fCBtb250aCA+IDEyIHx8IHllYXJTdHIubGVuZ3RoICE9PSA0IHx8IGlzTmFOKHllYXIpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXN0RGF5T2ZNb250aCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAwKS5nZXREYXRlKCk7XG4gICAgICAgIGlmIChkYXkgPCAxIHx8IGRheSA+IGxhc3REYXlPZk1vbnRoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBWYWxpZGHDp8OjbyBkZSBob3JhXG4gICAgICAgIGlmICh0aGlzLnVzZVRpbWUgJiYgdGltZVBhcnQpIHtcbiAgICAgICAgICAgIGNvbnN0IFtob3VyU3RyLCBtaW51dGVTdHJdID0gdGltZVBhcnQuc3BsaXQoJzonKTtcbiAgICAgICAgICAgIGNvbnN0IGhvdXIgPSBOdW1iZXIoaG91clN0cik7XG4gICAgICAgICAgICBjb25zdCBtaW51dGUgPSBOdW1iZXIobWludXRlU3RyKTtcblxuICAgICAgICAgICAgaWYgKGhvdXIgPCAwIHx8IGhvdXIgPiAyMyB8fCBtaW51dGUgPCAwIHx8IG1pbnV0ZSA+IDU5IHx8IGlzTmFOKGhvdXIpIHx8IGlzTmFOKG1pbnV0ZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEhvcmEgb3UgbWludXRvIGludsOhbGlkb3NcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHBhcnNlRGF0ZShkYXRlU3RyOiBzdHJpbmcpOiBEYXRlIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IFtkYXRlUGFydCwgdGltZVBhcnRdID0gZGF0ZVN0ci5zcGxpdCgnICcpO1xuICAgICAgICBjb25zdCBbZGF5LCBtb250aCwgeWVhcl0gPSBkYXRlUGFydC5zcGxpdCgnLycpLm1hcChOdW1iZXIpO1xuICAgICAgICBpZiAoIWRheSB8fCAhbW9udGggfHwgIXllYXIpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF5KTtcbiAgICAgICAgaWYgKHRoaXMudXNlVGltZSAmJiB0aW1lUGFydCkge1xuICAgICAgICAgICAgY29uc3QgW2hvdXIsIG1pbnV0ZV0gPSB0aW1lUGFydC5zcGxpdCgnOicpLm1hcChOdW1iZXIpO1xuICAgICAgICAgICAgZGF0ZS5zZXRIb3Vycyhob3VyIHx8IDAsIG1pbnV0ZSB8fCAwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0ZTtcbiAgICB9XG5cbiAgICBmb3JtYXREYXRlRm9yRGlzcGxheShkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZGF5ID0gZGF0ZS5nZXREYXRlKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgICBjb25zdCBtb250aCA9IChkYXRlLmdldE1vbnRoKCkgKyAxKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG4gICAgICAgIGxldCBmb3JtYXR0ZWREYXRlID0gYCR7ZGF5fS8ke21vbnRofS8ke3llYXJ9YDtcblxuICAgICAgICBpZiAodGhpcy51c2VUaW1lKSB7XG4gICAgICAgICAgICBjb25zdCBob3VycyA9IGRhdGUuZ2V0SG91cnMoKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgICAgICAgICBjb25zdCBtaW51dGVzID0gZGF0ZS5nZXRNaW51dGVzKCkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpO1xuICAgICAgICAgICAgZm9ybWF0dGVkRGF0ZSArPSBgICR7aG91cnN9OiR7bWludXRlc31gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZvcm1hdHRlZERhdGU7XG4gICAgfVxuXG4gICAgdG9nZ2xlQ2FsZW5kYXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNDYWxlbmRhclZpc2libGUgPSAhdGhpcy5pc0NhbGVuZGFyVmlzaWJsZTtcbiAgICB9XG5cbiAgICBzZWxlY3REYXRlKGRheTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyLCB0aGlzLmN1cnJlbnRNb250aCwgZGF5KTtcbiAgICAgICAgdGhpcy5pbnB1dERhdGUgPSB0aGlzLmZvcm1hdERhdGVGb3JEaXNwbGF5KGRhdGUpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGRhdGU7IC8vIEFybWF6ZW5hIGEgZGF0YSBzZWxlY2lvbmFkYVxuICAgICAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdCh0aGlzLmlucHV0RGF0ZSk7IC8vIEVtaXRlIGEgZGF0YSBzZWxlY2lvbmFkYSBhbyBjbGljYXIgbm8gY2FsZW5kw6FyaW9cbiAgICAgICAgdGhpcy5pc0NhbGVuZGFyVmlzaWJsZSA9IGZhbHNlOyAvLyBGZWNoYSBvIGNhbGVuZMOhcmlvIGFww7NzIGEgc2VsZcOnw6NvXG4gICAgfVxuXG4gICAgaGFuZGxlS2V5UHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2hhckNvZGUgPSBldmVudC5rZXkuY2hhckNvZGVBdCgwKTtcblxuICAgICAgICBpZiAoY2hhckNvZGUgPCA0OCB8fCBjaGFyQ29kZSA+IDU3KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaW5wdXREYXRlLnJlcGxhY2UoL1xcRC9nLCAnJykubGVuZ3RoID49ICh0aGlzLnVzZVRpbWUgPyAxMiA6IDgpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IGRheXNJbk1vbnRoKCk6IGFueVtdIHtcbiAgICAgICAgY29uc3QgZmlyc3REYXlPZk1vbnRoID0gbmV3IERhdGUodGhpcy5jdXJyZW50WWVhciwgdGhpcy5jdXJyZW50TW9udGgsIDEpLmdldERheSgpOyAvLyBEaWEgZGEgc2VtYW5hIGRvIHByaW1laXJvIGRpYSBkbyBtw6pzXG4gICAgICAgIGNvbnN0IHRvdGFsRGF5c0luTW9udGggPSBuZXcgRGF0ZSh0aGlzLmN1cnJlbnRZZWFyLCB0aGlzLmN1cnJlbnRNb250aCArIDEsIDApLmdldERhdGUoKTsgLy8gVG90YWwgZGUgZGlhcyBubyBtw6pzXG5cbiAgICAgICAgY29uc3QgZGF5c0FycmF5ID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogdG90YWxEYXlzSW5Nb250aCB9LCAoXywgaSkgPT4gaSArIDEpOyAvLyBBcnJheSBjb20gdG9kb3Mgb3MgZGlhcyBkbyBtw6pzXG5cbiAgICAgICAgY29uc3QgbGVhZGluZ0VtcHR5RGF5cyA9IEFycmF5KGZpcnN0RGF5T2ZNb250aCkuZmlsbChudWxsKTsgLy8gRGlhcyB2YXppb3MgYW50ZXMgZG8gcHJpbWVpcm8gZGlhIGRvIG3DqnNcblxuICAgICAgICByZXR1cm4gWy4uLmxlYWRpbmdFbXB0eURheXMsIC4uLmRheXNBcnJheV07IC8vIFJldG9ybmEgb3MgZGlhcyB2YXppb3Mgc2VndWlkb3MgcGVsb3MgZGlhcyBkbyBtw6pzXG4gICAgfVxuXG5cblxuICAgIGdldCBtb250aHMoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVzW3RoaXMubG9jYWxlXT8ubW9udGhzIHx8IHRoaXMubG9jYWxlc1snZW4nXS5tb250aHM7XG4gICAgfVxuXG4gICAgZ2V0IGRheXNPZldlZWsoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGVzW3RoaXMubG9jYWxlXT8uZGF5c09mV2VlayB8fCB0aGlzLmxvY2FsZXNbJ2VuJ10uZGF5c09mV2VlaztcbiAgICB9XG5cbiAgICBwcmV2TW9udGgoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRNb250aCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50TW9udGggPSAxMTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFllYXItLTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1vbnRoLS07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZXh0TW9udGgoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRNb250aCA9PT0gMTEpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1vbnRoID0gMDtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFllYXIrKztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudE1vbnRoKys7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc1NlbGVjdGVkKGRheTogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZERhdGUpIHJldHVybiBmYWxzZTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWREYXkgPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXREYXRlKCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkTW9udGggPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRNb250aCgpO1xuICAgICAgICBjb25zdCBzZWxlY3RlZFllYXIgPSB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBzZWxlY3RlZERheSA9PT0gZGF5ICYmXG4gICAgICAgICAgICBzZWxlY3RlZE1vbnRoID09PSB0aGlzLmN1cnJlbnRNb250aCAmJlxuICAgICAgICAgICAgc2VsZWN0ZWRZZWFyID09PSB0aGlzLmN1cnJlbnRZZWFyXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaXNUb2RheShkYXk6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0b2RheS5nZXRGdWxsWWVhcigpID09PSB0aGlzLmN1cnJlbnRZZWFyICYmXG4gICAgICAgICAgICB0b2RheS5nZXRNb250aCgpID09PSB0aGlzLmN1cnJlbnRNb250aCAmJlxuICAgICAgICAgICAgdG9kYXkuZ2V0RGF0ZSgpID09PSBkYXlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpc0RhdGVEaXNhYmxlZChkYXk6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGhpcy5jdXJyZW50WWVhciwgdGhpcy5jdXJyZW50TW9udGgsIGRheSk7XG4gICAgICAgIGlmICh0aGlzLm1pbkRhdGUgJiYgZGF0ZSA8IHRoaXMubWluRGF0ZSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGlmICh0aGlzLm1heERhdGUgJiYgZGF0ZSA+IHRoaXMubWF4RGF0ZSkgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICA8bGFiZWwgW2Zvcl09XCJpZFwiIFtuZ0NsYXNzXT1cIidsYWJlbC1zdHlsZXMnXCI+e3sgbGFiZWwgfX08L2xhYmVsPlxuICA8ZGl2IGNsYXNzPVwiaW5wdXQtd3JhcHBlclwiPlxuICAgIDxpbnB1dFxuICAgICAgaWQ9XCJ7eyBpZCB9fVwiXG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBjbGFzcz1cImN1c3RvbS1pbnB1dFwiXG4gICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCJ1c2VUaW1lID8gJ2RkL01NL3l5eXkgSEg6bW0nIDogJ2RkL01NL3l5eXknXCJcbiAgICAgIFt2YWx1ZV09XCJpbnB1dERhdGVcIlxuICAgICAgKGlucHV0KT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAoa2V5cHJlc3MpPVwiaGFuZGxlS2V5UHJlc3MoJGV2ZW50KVwiXG4gICAgICAoY2xpY2spPVwidG9nZ2xlQ2FsZW5kYXIoKVwiXG4gICAgLz5cbiAgICA8IS0tIMONY29uZSBkZSBjYWxlbmTDoXJpbyBkZW50cm8gZG8gaW5wdXQgLS0+XG4gICAgPGx1Y2lkZS1pY29uIG5hbWU9XCJjYWxlbmRhclwiIGNsYXNzPVwiY2FsZW5kYXItaWNvblwiPjwvbHVjaWRlLWljb24+XG4gIDwvZGl2PlxuXG4gIDwhLS0gTWVuc2FnZW0gZGUgZXJybyBlc3RpbG8gYmFsw6NvemluaG8gLS0+XG4gIDxkaXYgKm5nSWY9XCJpbnZhbGlkRGF0ZVwiIGNsYXNzPVwiZXJyb3ItbWVzc2FnZVwiPlxuICAgIHt7IGxvY2FsZXNbbG9jYWxlXS5pbnZhbGlkRGF0ZU1lc3NhZ2UgfX1cbiAgICA8IS0tIE1vc3RyYSBhIHBhcnRlIGRlICdISDptbScgYXBlbmFzIHNlIHVzZVRpbWUgZm9yIHZlcmRhZGVpcm8gLS0+XG4gICAgPHNwYW4gKm5nSWY9XCJ1c2VUaW1lXCI+IEhIOm1tLjwvc3Bhbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLXdyYXBwZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieyBvcGVuOiBpc0NhbGVuZGFyVmlzaWJsZSB9XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlclwiPlxuICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInByZXZNb250aCgpXCI+JiM4MjQ5OzwvYnV0dG9uPlxuICAgICAgICAgIDxzcGFuPnt7IG1vbnRoc1tjdXJyZW50TW9udGhdIH19IHt7IGN1cnJlbnRZZWFyIH19PC9zcGFuPlxuICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm5leHRNb250aCgpXCI+JiM4MjUwOzwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXItYm9keVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1kYXktbmFtZXNcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5c09mV2Vla1wiPnt7IGRheSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1kYXlzXCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheXNJbk1vbnRoOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgW2NsYXNzLnRvZGF5XT1cImlzVG9kYXkoZGF5KVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJpc1NlbGVjdGVkKGRheSlcIlxuICAgICAgICAgICAgICBbY2xhc3MuZGlzYWJsZWRdPVwiaXNEYXRlRGlzYWJsZWQoZGF5KVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJkYXkgPyBzZWxlY3REYXRlKGRheSkgOiBudWxsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPCEtLSBTb21lbnRlIHBlcm1pdGUgY2xpcXVlIGVtIGRpYXMgdsOhbGlkb3MgLS0+XG4gICAgICAgICAgICAgIHt7IGRheSA/IGRheSA6IFwiXCIgfX1cbiAgICAgICAgICAgICAgPCEtLSBFeGliZSBvIGRpYSBzZSBmb3IgdsOhbGlkbywgc2Vuw6NvIGV4aWJlIHZhemlvIC0tPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -7,11 +7,13 @@ import { CepMaskDirective } from '../directive/cep-mask.directive';
7
7
  import { CnpjMaskDirective } from '../directive/cnpj-mask.directive';
8
8
  import { CpfMaskDirective } from '../directive/cpf-mask.directive';
9
9
  import { LucideIconsModule } from '../icons/lucide-icons.module';
10
+ import { AccordionArgentaComponent } from './accordion/accordion.component';
10
11
  import { AlertComponent } from './alert/alert.component';
11
12
  import { AppBackgroundComponent } from './app-background/app-background.component';
12
13
  import { BadgeComponent } from './badge/badge.component';
13
14
  import { BasicRegistrationComponent } from './basic-registration/basic-registration.component';
14
15
  import { ButtonComponent } from './button/button.component';
16
+ import { CalendarArgentaComponent } from './calendar-argenta/calendar-argenta.component';
15
17
  import { CardComponent } from './card/card.component';
16
18
  import { CheckboxComponent } from './checkbox/checkbox.component';
17
19
  import { CodeHighlightComponent } from './code-highlight/code-highlight.component';
@@ -21,6 +23,7 @@ import { CustomSwitchComponent } from './custom-switch/custom-switch.component';
21
23
  import { FileUploadComponent } from './file-upload/file-upload.component';
22
24
  import { InputComponent } from './imput/input.component';
23
25
  import { JsonViewerComponent } from './json-viewer/json-viewer.component';
26
+ import { ModalComponent } from './modal/modal.component';
24
27
  import { MultiSelectCategoryComponent } from './multi-select-category/multi-select-category.component';
25
28
  import { MultiSelectComponent } from './multi-select/multi-select.component';
26
29
  import { RadioComponent } from './radio/radio.component';
@@ -61,7 +64,10 @@ export class ComponentsModule {
61
64
  TabComponent,
62
65
  FileUploadComponent,
63
66
  MultiSelectCategoryComponent,
64
- JsonViewerComponent], imports: [CommonModule,
67
+ CalendarArgentaComponent,
68
+ AccordionArgentaComponent,
69
+ JsonViewerComponent,
70
+ ModalComponent], imports: [CommonModule,
65
71
  FormsModule,
66
72
  ReactiveFormsModule,
67
73
  NgSelectModule,
@@ -96,7 +102,10 @@ export class ComponentsModule {
96
102
  TabComponent,
97
103
  FileUploadComponent,
98
104
  MultiSelectCategoryComponent,
99
- JsonViewerComponent] }); }
105
+ CalendarArgentaComponent,
106
+ AccordionArgentaComponent,
107
+ JsonViewerComponent,
108
+ ModalComponent] }); }
100
109
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ComponentsModule, imports: [CommonModule,
101
110
  FormsModule,
102
111
  ReactiveFormsModule,
@@ -137,7 +146,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
137
146
  TabComponent,
138
147
  FileUploadComponent,
139
148
  MultiSelectCategoryComponent,
149
+ CalendarArgentaComponent,
150
+ AccordionArgentaComponent,
140
151
  JsonViewerComponent,
152
+ ModalComponent,
141
153
  ],
142
154
  imports: [
143
155
  CommonModule,
@@ -178,8 +190,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
178
190
  TabComponent,
179
191
  FileUploadComponent,
180
192
  MultiSelectCategoryComponent,
193
+ CalendarArgentaComponent,
194
+ AccordionArgentaComponent,
181
195
  JsonViewerComponent,
196
+ ModalComponent,
182
197
  ],
183
198
  }]
184
199
  }] });
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItcG9ydGFsLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2NvbXBvbmVudHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0RBQXNELENBQUE7QUFDekYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3hELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFBO0FBQ2xGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQTtBQUM5RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBQ2pFLE9B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b20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnXG5pbXBvcnQgeyBOZ1NlbGVjdE1vZHVsZSB9IGZyb20gJ0BuZy1zZWxlY3Qvbmctc2VsZWN0J1xuaW1wb3J0IHsgQXV0b2ZvY3VzRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlL2F1dG9mb2N1cy1kaXJlY3RpdmUvYXV0b2ZvY3VzLmRpcmVjdGl2ZSdcbmltcG9ydCB7IENlcE1hc2tEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmUvY2VwLW1hc2suZGlyZWN0aXZlJ1xuaW1wb3J0IHsgQ25wak1hc2tEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmUvY25wai1tYXNrLmRpcmVjdGl2ZSdcbmltcG9ydCB7IENwZk1hc2tEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmUvY3BmLW1hc2suZGlyZWN0aXZlJ1xuaW1wb3J0IHsgTHVjaWRlSWNvbnNNb2R1bGUgfSBmcm9tICcuLi9pY29ucy9sdWNpZGUtaWNvbnMubW9kdWxlJ1xuaW1wb3J0IHsgQWxlcnRDb21wb25lbnQgfSBmcm9tICcuL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudCdcbmltcG9ydCB7IEFwcEJhY2tncm91bmRDb21wb25lbnQgfSBmcm9tICcuL2FwcC1iYWNrZ3JvdW5kL2FwcC1iYWNrZ3JvdW5kLmNvbXBvbmVudCdcbmltcG9ydCB7IEJhZGdlQ29tcG9uZW50IH0gZnJvbSAnLi9iYWRnZS9iYWRnZS5jb21wb25lbnQnXG5pbXBvcnQgeyBCYXNpY1JlZ2lzdHJhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vYmFzaWMtcmVnaXN0cmF0aW9uL2Jhc2ljLXJlZ2lzdHJhdGlvbi5jb21wb25lbnQnXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuL2J1dHRvbi9idXR0b24uY29tcG9uZW50J1xuaW1wb3J0IHsgQ2FyZENvbXBvbmVudCB9IGZyb20gJy4vY2FyZC9jYXJkLmNvbXBvbmVudCdcbmltcG9ydCB7IENoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnLi9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQnXG5pbXBvcnQgeyBDb2RlSGlnaGxpZ2h0Q29tcG9uZW50IH0gZnJvbSAnLi9jb2RlLWhpZ2hsaWdodC9jb2RlLWhpZ2hsaWdodC5jb21wb25lbnQnXG5pbXBvcnQgeyBDb25maXJtYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2NvbmZpcm1hdGlvbi9jb25maXJtYXRpb24uY29tcG9uZW50J1xuaW1wb3J0IHsgQ3VzdG9tUGFnaW5hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vY3VzdG9tLXBhZ2luYXRpb24vY3VzdG9tLXBhZ2luYXRpb24uY29tcG9uZW50J1xuaW1wb3J0IHsgQ3VzdG9tU3dpdGNoQ29tcG9uZW50IH0gZnJvbSAnLi9jdXN0b20tc3dpdGNoL2N1c3RvbS1zd2l0Y2guY29tcG9uZW50J1xuaW1wb3J0IHsgRmlsZVVwbG9hZENvbXBvbmVudCB9IGZyb20gJy4vZmlsZS11cGxvYWQvZmlsZS11cGxvYWQuY29tcG9uZW50J1xuaW1wb3J0IHsgSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL2ltcHV0L2lucHV0LmNvbXBvbmVudCdcbmltcG9ydCB7IEpzb25WaWV3ZXJDb21wb25lbnQgfSBmcm9tICcuL2pzb24tdmlld2VyL2pzb24tdmlld2VyLmNvbXBvbmVudCdcbmltcG9ydCB7IE11bHRpU2VsZWN0Q2F0ZWdvcnlDb21wb25lbnQgfSBmcm9tICcuL211bHRpLXNlbGVjdC1jYXRlZ29yeS9tdWx0aS1zZWxlY3QtY2F0ZWdvcnkuY29tcG9uZW50J1xuaW1wb3J0IHsgTXVsdGlTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuL211bHRpLXNlbGVjdC9tdWx0aS1zZWxlY3QuY29tcG9uZW50J1xuaW1wb3J0IHsgUmFkaW9Db21wb25lbnQgfSBmcm9tICcuL3JhZGlvL3JhZGlvLmNvbXBvbmVudCdcbmltcG9ydCB7IFNlYXJjaEN1c3RvbWVyQ29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2gtY3VzdG9tZXIvc2VhcmNoLWN1c3RvbWVyLmNvbXBvbmVudCdcbmltcG9ydCB7IFNlYXJjaElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9zZWFyY2gtaW5wdXQvc2VhcmNoLWlucHV0LmNvbXBvbmVudCdcbmltcG9ydCB7IFNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vc2VsZWN0L3NlbGVjdC5jb21wb25lbnQnXG5pbXBvcnQgeyBUYWJDb21wb25lbnQgfSBmcm9tICcuL3RhYi90YWIuY29tcG9uZW50J1xuaW1wb3J0IHsgRGF0YVRhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi90YWJsZXMvZGF0YS10YWJsZS5jb21wb25lbnQnXG5pbXBvcnQgeyBUZXh0YXJlYUNvbXBvbmVudCB9IGZyb20gJy4vdGV4dGFyZWEvdGV4dGFyZWEuY29tcG9uZW50J1xuaW1wb3J0IHsgVHJlZU5vZGVDb21wb25lbnQgfSBmcm9tICcuL3RyZWUtbm9kZS90cmVlLW5vZGUuY29tcG9uZW50J1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgQ2FyZENvbXBvbmVudCxcbiAgICBJbnB1dENvbXBvbmVudCxcbiAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICBUZXh0YXJlYUNvbXBvbmVudCxcbiAgICBTZWxlY3RDb21wb25lbnQsXG4gICAgUmFkaW9Db21wb25lbnQsXG4gICAgTXVsdGlTZWxlY3RDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlQ29tcG9uZW50LFxuICAgIENvZGVIaWdobGlnaHRDb21wb25lbnQsXG4gICAgQmFkZ2VDb21wb25lbnQsXG4gICAgQWxlcnRDb21wb25lbnQsXG4gICAgQ29uZmlybWF0aW9uQ29tcG9uZW50LFxuICAgIEF1dG9mb2N1c0RpcmVjdGl2ZSxcbiAgICBDZXBNYXNrRGlyZWN0aXZlLFxuICAgIENucGpNYXNrRGlyZWN0aXZlLFxuICAgIENwZk1hc2tEaXJlY3RpdmUsXG4gICAgQ3VzdG9tUGFnaW5hdGlvbkNvbXBvbmVudCxcbiAgICBUcmVlTm9kZUNvbXBvbmVudCxcbiAgICBTZWFyY2hJbnB1dENvbXBvbmVudCxcbiAgICBBcHBCYWNrZ3JvdW5kQ29tcG9uZW50LFxuICAgIEJhc2ljUmVnaXN0cmF0aW9uQ29tcG9uZW50LFxuICAgIEN1c3RvbVN3aXRjaENvbXBvbmVudCxcbiAgICBTZWFyY2hDdXN0b21lckNvbXBvbmVudCxcbiAgICBUYWJDb21wb25lbnQsXG4gICAgRmlsZVVwbG9hZENvbXBvbmVudCxcbiAgICBNdWx0aVNlbGVjdENhdGVnb3J5Q29tcG9uZW50LFxuICAgIEpzb25WaWV3ZXJDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBOZ1NlbGVjdE1vZHVsZSxcbiAgICBMdWNpZGVJY29uc01vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBDYXJkQ29tcG9uZW50LFxuICAgIElucHV0Q29tcG9uZW50LFxuICAgIENoZWNrYm94Q29tcG9uZW50LFxuICAgIFRleHRhcmVhQ29tcG9uZW50LFxuICAgIFNlbGVjdENvbXBvbmVudCxcbiAgICBSYWRpb0NvbXBvbmVudCxcbiAgICBNdWx0aVNlbGVjdENvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE5nU2VsZWN0TW9kdWxlLFxuICAgIERhdGFUYWJsZUNvbXBvbmVudCxcbiAgICBDb2RlSGlnaGxpZ2h0Q29tcG9uZW50LFxuICAgIEJhZGdlQ29tcG9uZW50LFxuICAgIEFsZXJ0Q29tcG9uZW50LFxuICAgIENvbmZpcm1hdGlvbkNvbXBvbmVudCxcbiAgICBBdXRvZm9jdXNEaXJlY3RpdmUsXG4gICAgQ2VwTWFza0RpcmVjdGl2ZSxcbiAgICBDbnBqTWFza0RpcmVjdGl2ZSxcbiAgICBDcGZNYXNrRGlyZWN0aXZlLFxuICAgIEN1c3RvbVBhZ2luYXRpb25Db21wb25lbnQsXG4gICAgVHJlZU5vZGVDb21wb25lbnQsXG4gICAgU2VhcmNoSW5wdXRDb21wb25lbnQsXG4gICAgTHVjaWRlSWNvbnNNb2R1bGUsXG4gICAgQXBwQmFja2dyb3VuZENvbXBvbmVudCxcbiAgICBCYXNpY1JlZ2lzdHJhdGlvbkNvbXBvbmVudCxcbiAgICBDdXN0b21Td2l0Y2hDb21wb25lbnQsXG4gICAgU2VhcmNoQ3VzdG9tZXJDb21wb25lbnQsXG4gICAgVGFiQ29tcG9uZW50LFxuICAgIEZpbGVVcGxvYWRDb21wb25lbnQsXG4gICAgTXVsdGlTZWxlY3RDYXRlZ29yeUNvbXBvbmVudCxcbiAgICBKc29uVmlld2VyQ29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb21wb25lbnRzTW9kdWxlIHsgfVxuIl19
200
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9saWItcG9ydGFsLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2NvbXBvbmVudHMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3hDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0RBQXNELENBQUE7QUFDekYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDcEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUE7QUFDaEUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3hELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFBO0FBQ2xGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQTtBQUM5RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDM0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0NBQStDLENBQUE7QUFDeEYsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBQ2pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFBO0FBQ2xGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBQzdFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFBO0FBQzNGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlDQUF5QyxDQUFBO0FBQy9FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFBO0FBQ3pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDeEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0seURBQXlELENBQUE7QUFDdEcsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUE7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBQ3hELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFBO0FBQ3JGLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFBO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQTtBQUMzRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDbEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDakUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUE7O0FBZ0ZuRSxNQUFNLE9BQU8sZ0JBQWdCOytHQUFoQixnQkFBZ0I7Z0hBQWhCLGdCQUFnQixpQkE3RXpCLGVBQWU7WUFDZixhQUFhO1lBQ2IsY0FBYztZQUNkLGlCQUFpQjtZQUNqQixpQkFBaUI7WUFDakIsZUFBZTtZQUNmLGNBQWM7WUFDZCxvQkFBb0I7WUFDcEIsa0JBQWtCO1lBQ2xCLHNCQUFzQjtZQUN0QixjQUFjO1lBQ2QsY0FBYztZQUNkLHFCQUFxQjtZQUNyQixrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLGlCQUFpQjtZQUNqQixnQkFBZ0I7WUFDaEIseUJBQXlCO1lBQ3pCLGlCQUFpQjtZQUNqQixvQkFBb0I7WUFDcEIsc0JBQXNCO1lBQ3RCLDBCQUEwQjtZQUMxQixxQkFBcUI7WUFDckIsdUJBQXVCO1lBQ3ZCLFlBQVk7WUFDWixtQkFBbUI7WUFDbkIsNEJBQTRCO1lBQzVCLHdCQUF3QjtZQUN4Qix5QkFBeUI7WUFDekIsbUJBQW1CO1lBQ25CLGNBQWMsYUFHZCxZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixjQUFjO1lBQ2QsaUJBQWlCLGFBR2pCLGVBQWU7WUFDZixhQUFhO1lBQ2IsY0FBYztZQUNkLGlCQUFpQjtZQUNqQixpQkFBaUI7WUFDakIsZUFBZTtZQUNmLGNBQWM7WUFDZCxvQkFBb0I7WUFDcEIsV0FBVztZQUNYLG1CQUFtQjtZQUNuQixjQUFjO1lBQ2Qsa0JBQWtCO1lBQ2xCLHNCQUFzQjtZQUN0QixjQUFjO1lBQ2QsY0FBYztZQUNkLHFCQUFxQjtZQUNyQixrQkFBa0I7WUFDbEIsZ0JBQWdCO1lBQ2hCLGlCQUFpQjtZQUNqQixnQkFBZ0I7WUFDaEIseUJBQXlCO1lBQ3pCLGlCQUFpQjtZQUNqQixvQkFBb0I7WUFDcEIsaUJBQWlCO1lBQ2pCLHNCQUFzQjtZQUN0QiwwQkFBMEI7WUFDMUIscUJBQXFCO1lBQ3JCLHVCQUF1QjtZQUN2QixZQUFZO1lBQ1osbUJBQW1CO1lBQ25CLDRCQUE0QjtZQUM1Qix3QkFBd0I7WUFDeEIseUJBQXlCO1lBQ3pCLG1CQUFtQjtZQUNuQixjQUFjO2dIQUdMLGdCQUFnQixZQTVDekIsWUFBWTtZQUNaLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsY0FBYztZQUNkLGlCQUFpQixFQVdqQixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGNBQWM7WUFhZCxpQkFBaUI7OzRGQWNSLGdCQUFnQjtrQkEvRTVCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsaUJBQWlCO3dCQUNqQixlQUFlO3dCQUNmLGNBQWM7d0JBQ2Qsb0JBQW9CO3dCQUNwQixrQkFBa0I7d0JBQ2xCLHNCQUFzQjt3QkFDdEIsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsZ0JBQWdCO3dCQUNoQix5QkFBeUI7d0JBQ3pCLGlCQUFpQjt3QkFDakIsb0JBQW9CO3dCQUNwQixzQkFBc0I7d0JBQ3RCLDBCQUEwQjt3QkFDMUIscUJBQXFCO3dCQUNyQix1QkFBdUI7d0JBQ3ZCLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQiw0QkFBNEI7d0JBQzVCLHdCQUF3Qjt3QkFDeEIseUJBQXlCO3dCQUN6QixtQkFBbUI7d0JBQ25CLGNBQWM7cUJBQ2Y7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsaUJBQWlCO3FCQUNsQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsaUJBQWlCO3dCQUNqQixpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxvQkFBb0I7d0JBQ3BCLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsc0JBQXNCO3dCQUN0QixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QscUJBQXFCO3dCQUNyQixrQkFBa0I7d0JBQ2xCLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLHlCQUF5Qjt3QkFDekIsaUJBQWlCO3dCQUNqQixvQkFBb0I7d0JBQ3BCLGlCQUFpQjt3QkFDakIsc0JBQXNCO3dCQUN0QiwwQkFBMEI7d0JBQzFCLHFCQUFxQjt3QkFDckIsdUJBQXVCO3dCQUN2QixZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsNEJBQTRCO3dCQUM1Qix3QkFBd0I7d0JBQ3hCLHlCQUF5Qjt3QkFDekIsbUJBQW1CO3dCQUNuQixjQUFjO3FCQUNmO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJ1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IE5nU2VsZWN0TW9kdWxlIH0gZnJvbSAnQG5nLXNlbGVjdC9uZy1zZWxlY3QnXG5pbXBvcnQgeyBBdXRvZm9jdXNEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmUvYXV0b2ZvY3VzLWRpcmVjdGl2ZS9hdXRvZm9jdXMuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgQ2VwTWFza0RpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZS9jZXAtbWFzay5kaXJlY3RpdmUnXG5pbXBvcnQgeyBDbnBqTWFza0RpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZS9jbnBqLW1hc2suZGlyZWN0aXZlJ1xuaW1wb3J0IHsgQ3BmTWFza0RpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZS9jcGYtbWFzay5kaXJlY3RpdmUnXG5pbXBvcnQgeyBMdWNpZGVJY29uc01vZHVsZSB9IGZyb20gJy4uL2ljb25zL2x1Y2lkZS1pY29ucy5tb2R1bGUnXG5pbXBvcnQgeyBBY2NvcmRpb25BcmdlbnRhQ29tcG9uZW50IH0gZnJvbSAnLi9hY2NvcmRpb24vYWNjb3JkaW9uLmNvbXBvbmVudCdcbmltcG9ydCB7IEFsZXJ0Q29tcG9uZW50IH0gZnJvbSAnLi9hbGVydC9hbGVydC5jb21wb25lbnQnXG5pbXBvcnQgeyBBcHBCYWNrZ3JvdW5kQ29tcG9uZW50IH0gZnJvbSAnLi9hcHAtYmFja2dyb3VuZC9hcHAtYmFja2dyb3VuZC5jb21wb25lbnQnXG5pbXBvcnQgeyBCYWRnZUNvbXBvbmVudCB9IGZyb20gJy4vYmFkZ2UvYmFkZ2UuY29tcG9uZW50J1xuaW1wb3J0IHsgQmFzaWNSZWdpc3RyYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2Jhc2ljLXJlZ2lzdHJhdGlvbi9iYXNpYy1yZWdpc3RyYXRpb24uY29tcG9uZW50J1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9idXR0b24vYnV0dG9uLmNvbXBvbmVudCdcbmltcG9ydCB7IENhbGVuZGFyQXJnZW50YUNvbXBvbmVudCB9IGZyb20gJy4vY2FsZW5kYXItYXJnZW50YS9jYWxlbmRhci1hcmdlbnRhLmNvbXBvbmVudCdcbmltcG9ydCB7IENhcmRDb21wb25lbnQgfSBmcm9tICcuL2NhcmQvY2FyZC5jb21wb25lbnQnXG5pbXBvcnQgeyBDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vY2hlY2tib3gvY2hlY2tib3guY29tcG9uZW50J1xuaW1wb3J0IHsgQ29kZUhpZ2hsaWdodENvbXBvbmVudCB9IGZyb20gJy4vY29kZS1oaWdobGlnaHQvY29kZS1oaWdobGlnaHQuY29tcG9uZW50J1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9jb25maXJtYXRpb24vY29uZmlybWF0aW9uLmNvbXBvbmVudCdcbmltcG9ydCB7IEN1c3RvbVBhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICcuL2N1c3RvbS1wYWdpbmF0aW9uL2N1c3RvbS1wYWdpbmF0aW9uLmNvbXBvbmVudCdcbmltcG9ydCB7IEN1c3RvbVN3aXRjaENvbXBvbmVudCB9IGZyb20gJy4vY3VzdG9tLXN3aXRjaC9jdXN0b20tc3dpdGNoLmNvbXBvbmVudCdcbmltcG9ydCB7IEZpbGVVcGxvYWRDb21wb25lbnQgfSBmcm9tICcuL2ZpbGUtdXBsb2FkL2ZpbGUtdXBsb2FkLmNvbXBvbmVudCdcbmltcG9ydCB7IElucHV0Q29tcG9uZW50IH0gZnJvbSAnLi9pbXB1dC9pbnB1dC5jb21wb25lbnQnXG5pbXBvcnQgeyBKc29uVmlld2VyQ29tcG9uZW50IH0gZnJvbSAnLi9qc29uLXZpZXdlci9qc29uLXZpZXdlci5jb21wb25lbnQnXG5pbXBvcnQgeyBNb2RhbENvbXBvbmVudCB9IGZyb20gJy4vbW9kYWwvbW9kYWwuY29tcG9uZW50J1xuaW1wb3J0IHsgTXVsdGlTZWxlY3RDYXRlZ29yeUNvbXBvbmVudCB9IGZyb20gJy4vbXVsdGktc2VsZWN0LWNhdGVnb3J5L211bHRpLXNlbGVjdC1jYXRlZ29yeS5jb21wb25lbnQnXG5pbXBvcnQgeyBNdWx0aVNlbGVjdENvbXBvbmVudCB9IGZyb20gJy4vbXVsdGktc2VsZWN0L211bHRpLXNlbGVjdC5jb21wb25lbnQnXG5pbXBvcnQgeyBSYWRpb0NvbXBvbmVudCB9IGZyb20gJy4vcmFkaW8vcmFkaW8uY29tcG9uZW50J1xuaW1wb3J0IHsgU2VhcmNoQ3VzdG9tZXJDb21wb25lbnQgfSBmcm9tICcuL3NlYXJjaC1jdXN0b21lci9zZWFyY2gtY3VzdG9tZXIuY29tcG9uZW50J1xuaW1wb3J0IHsgU2VhcmNoSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL3NlYXJjaC1pbnB1dC9zZWFyY2gtaW5wdXQuY29tcG9uZW50J1xuaW1wb3J0IHsgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudCdcbmltcG9ydCB7IFRhYkNvbXBvbmVudCB9IGZyb20gJy4vdGFiL3RhYi5jb21wb25lbnQnXG5pbXBvcnQgeyBEYXRhVGFibGVDb21wb25lbnQgfSBmcm9tICcuL3RhYmxlcy9kYXRhLXRhYmxlLmNvbXBvbmVudCdcbmltcG9ydCB7IFRleHRhcmVhQ29tcG9uZW50IH0gZnJvbSAnLi90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQnXG5pbXBvcnQgeyBUcmVlTm9kZUNvbXBvbmVudCB9IGZyb20gJy4vdHJlZS1ub2RlL3RyZWUtbm9kZS5jb21wb25lbnQnXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgQ2FyZENvbXBvbmVudCxcbiAgICBJbnB1dENvbXBvbmVudCxcbiAgICBDaGVja2JveENvbXBvbmVudCxcbiAgICBUZXh0YXJlYUNvbXBvbmVudCxcbiAgICBTZWxlY3RDb21wb25lbnQsXG4gICAgUmFkaW9Db21wb25lbnQsXG4gICAgTXVsdGlTZWxlY3RDb21wb25lbnQsXG4gICAgRGF0YVRhYmxlQ29tcG9uZW50LFxuICAgIENvZGVIaWdobGlnaHRDb21wb25lbnQsXG4gICAgQmFkZ2VDb21wb25lbnQsXG4gICAgQWxlcnRDb21wb25lbnQsXG4gICAgQ29uZmlybWF0aW9uQ29tcG9uZW50LFxuICAgIEF1dG9mb2N1c0RpcmVjdGl2ZSxcbiAgICBDZXBNYXNrRGlyZWN0aXZlLFxuICAgIENucGpNYXNrRGlyZWN0aXZlLFxuICAgIENwZk1hc2tEaXJlY3RpdmUsXG4gICAgQ3VzdG9tUGFnaW5hdGlvbkNvbXBvbmVudCxcbiAgICBUcmVlTm9kZUNvbXBvbmVudCxcbiAgICBTZWFyY2hJbnB1dENvbXBvbmVudCxcbiAgICBBcHBCYWNrZ3JvdW5kQ29tcG9uZW50LFxuICAgIEJhc2ljUmVnaXN0cmF0aW9uQ29tcG9uZW50LFxuICAgIEN1c3RvbVN3aXRjaENvbXBvbmVudCxcbiAgICBTZWFyY2hDdXN0b21lckNvbXBvbmVudCxcbiAgICBUYWJDb21wb25lbnQsXG4gICAgRmlsZVVwbG9hZENvbXBvbmVudCxcbiAgICBNdWx0aVNlbGVjdENhdGVnb3J5Q29tcG9uZW50LFxuICAgIENhbGVuZGFyQXJnZW50YUNvbXBvbmVudCxcbiAgICBBY2NvcmRpb25BcmdlbnRhQ29tcG9uZW50LFxuICAgIEpzb25WaWV3ZXJDb21wb25lbnQsXG4gICAgTW9kYWxDb21wb25lbnQsXG4gIF0sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBOZ1NlbGVjdE1vZHVsZSxcbiAgICBMdWNpZGVJY29uc01vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBDYXJkQ29tcG9uZW50LFxuICAgIElucHV0Q29tcG9uZW50LFxuICAgIENoZWNrYm94Q29tcG9uZW50LFxuICAgIFRleHRhcmVhQ29tcG9uZW50LFxuICAgIFNlbGVjdENvbXBvbmVudCxcbiAgICBSYWRpb0NvbXBvbmVudCxcbiAgICBNdWx0aVNlbGVjdENvbXBvbmVudCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIE5nU2VsZWN0TW9kdWxlLFxuICAgIERhdGFUYWJsZUNvbXBvbmVudCxcbiAgICBDb2RlSGlnaGxpZ2h0Q29tcG9uZW50LFxuICAgIEJhZGdlQ29tcG9uZW50LFxuICAgIEFsZXJ0Q29tcG9uZW50LFxuICAgIENvbmZpcm1hdGlvbkNvbXBvbmVudCxcbiAgICBBdXRvZm9jdXNEaXJlY3RpdmUsXG4gICAgQ2VwTWFza0RpcmVjdGl2ZSxcbiAgICBDbnBqTWFza0RpcmVjdGl2ZSxcbiAgICBDcGZNYXNrRGlyZWN0aXZlLFxuICAgIEN1c3RvbVBhZ2luYXRpb25Db21wb25lbnQsXG4gICAgVHJlZU5vZGVDb21wb25lbnQsXG4gICAgU2VhcmNoSW5wdXRDb21wb25lbnQsXG4gICAgTHVjaWRlSWNvbnNNb2R1bGUsXG4gICAgQXBwQmFja2dyb3VuZENvbXBvbmVudCxcbiAgICBCYXNpY1JlZ2lzdHJhdGlvbkNvbXBvbmVudCxcbiAgICBDdXN0b21Td2l0Y2hDb21wb25lbnQsXG4gICAgU2VhcmNoQ3VzdG9tZXJDb21wb25lbnQsXG4gICAgVGFiQ29tcG9uZW50LFxuICAgIEZpbGVVcGxvYWRDb21wb25lbnQsXG4gICAgTXVsdGlTZWxlY3RDYXRlZ29yeUNvbXBvbmVudCxcbiAgICBDYWxlbmRhckFyZ2VudGFDb21wb25lbnQsXG4gICAgQWNjb3JkaW9uQXJnZW50YUNvbXBvbmVudCxcbiAgICBKc29uVmlld2VyQ29tcG9uZW50LFxuICAgIE1vZGFsQ29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb21wb25lbnRzTW9kdWxlIHsgfVxuIl19