@yoozsoft/yoozsoft-ng 1.3.2-alpha.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/README.md +16 -9
  2. package/datepicker/public-api.d.ts +2 -0
  3. package/datepicker/src/ys-datepicker/ys-datepicker.component.d.ts +32 -0
  4. package/datepicker/src/ys-datepicker-persian/ys-datepicker-persian.component.d.ts +38 -0
  5. package/datepicker/src/ys-datepicker-popup/ys-datepicker-popup.component.d.ts +3 -2
  6. package/datepicker/src/ys-datepicker-popup-persian/ys-datepicker-popup-persian.component.d.ts +3 -2
  7. package/datepicker/src/ys-datepicker-range-popup/ys-datepicker-range-popup.component.d.ts +3 -2
  8. package/datepicker/src/ys-datepicker-range-popup-persian/ys-datepicker-range-popup-persian.component.d.ts +3 -2
  9. package/directives/src/password-mismatch/password-mismatch.directive.d.ts +1 -1
  10. package/esm2022/datepicker/public-api.mjs +3 -1
  11. package/esm2022/datepicker/src/models/jalali-date.mjs +2 -3
  12. package/esm2022/datepicker/src/services/ys-date-parser-formatter.service.mjs +5 -6
  13. package/esm2022/datepicker/src/services/ys-datepicker-i18n.service.mjs +10 -12
  14. package/esm2022/datepicker/src/ys-datepicker/ys-datepicker.component.mjs +108 -0
  15. package/esm2022/datepicker/src/ys-datepicker-persian/ys-datepicker-persian.component.mjs +127 -0
  16. package/esm2022/datepicker/src/ys-datepicker-popup/ys-datepicker-popup.component.mjs +12 -10
  17. package/esm2022/datepicker/src/ys-datepicker-popup-persian/ys-datepicker-popup-persian.component.mjs +12 -10
  18. package/esm2022/datepicker/src/ys-datepicker-range-popup/ys-datepicker-range-popup.component.mjs +12 -10
  19. package/esm2022/datepicker/src/ys-datepicker-range-popup-persian/ys-datepicker-range-popup-persian.component.mjs +12 -10
  20. package/esm2022/directives/src/password-mismatch/password-mismatch.directive.mjs +5 -6
  21. package/esm2022/footer/src/ys-footer/ys-footer.component.mjs +5 -6
  22. package/esm2022/layout/src/ys-layout/ys-layout.component.mjs +6 -7
  23. package/esm2022/loading/src/ys-loading-mask/ys-loading-mask.component.mjs +5 -6
  24. package/esm2022/navbar/src/ys-navbar/ys-navbar.component.mjs +7 -8
  25. package/esm2022/overlay/src/ys-overlay/ys-overlay.component.mjs +6 -7
  26. package/esm2022/progress/src/services/progress.service.mjs +5 -6
  27. package/esm2022/progress/src/ys-progress/ys-progress.component.mjs +6 -7
  28. package/esm2022/select/src/ys-select/ys-select.component.mjs +5 -6
  29. package/esm2022/sidebar/src/services/sidebar.service.mjs +5 -6
  30. package/esm2022/sidebar/src/ys-sidebar/ys-sidebar.component.mjs +7 -8
  31. package/esm2022/toasts/src/services/toast.service.mjs +5 -6
  32. package/esm2022/toasts/src/ys-toasts/ys-toasts.component.mjs +8 -9
  33. package/fesm2022/yoozsoft-yoozsoft-ng-datepicker.mjs +269 -40
  34. package/fesm2022/yoozsoft-yoozsoft-ng-datepicker.mjs.map +1 -1
  35. package/fesm2022/yoozsoft-yoozsoft-ng-directives.mjs +3 -3
  36. package/fesm2022/yoozsoft-yoozsoft-ng-directives.mjs.map +1 -1
  37. package/fesm2022/yoozsoft-yoozsoft-ng-footer.mjs +3 -3
  38. package/fesm2022/yoozsoft-yoozsoft-ng-footer.mjs.map +1 -1
  39. package/fesm2022/yoozsoft-yoozsoft-ng-layout.mjs +4 -4
  40. package/fesm2022/yoozsoft-yoozsoft-ng-layout.mjs.map +1 -1
  41. package/fesm2022/yoozsoft-yoozsoft-ng-loading.mjs +3 -3
  42. package/fesm2022/yoozsoft-yoozsoft-ng-loading.mjs.map +1 -1
  43. package/fesm2022/yoozsoft-yoozsoft-ng-navbar.mjs +5 -5
  44. package/fesm2022/yoozsoft-yoozsoft-ng-navbar.mjs.map +1 -1
  45. package/fesm2022/yoozsoft-yoozsoft-ng-overlay.mjs +4 -4
  46. package/fesm2022/yoozsoft-yoozsoft-ng-overlay.mjs.map +1 -1
  47. package/fesm2022/yoozsoft-yoozsoft-ng-progress.mjs +7 -7
  48. package/fesm2022/yoozsoft-yoozsoft-ng-progress.mjs.map +1 -1
  49. package/fesm2022/yoozsoft-yoozsoft-ng-select.mjs +3 -3
  50. package/fesm2022/yoozsoft-yoozsoft-ng-select.mjs.map +1 -1
  51. package/fesm2022/yoozsoft-yoozsoft-ng-sidebar.mjs +8 -8
  52. package/fesm2022/yoozsoft-yoozsoft-ng-sidebar.mjs.map +1 -1
  53. package/fesm2022/yoozsoft-yoozsoft-ng-toasts.mjs +9 -9
  54. package/fesm2022/yoozsoft-yoozsoft-ng-toasts.mjs.map +1 -1
  55. package/footer/src/ys-footer/ys-footer.component.d.ts +1 -1
  56. package/layout/src/ys-layout/ys-layout.component.d.ts +1 -1
  57. package/loading/src/ys-loading-mask/ys-loading-mask.component.d.ts +1 -1
  58. package/navbar/src/ys-navbar/ys-navbar.component.d.ts +1 -1
  59. package/overlay/src/ys-overlay/ys-overlay.component.d.ts +1 -1
  60. package/package.json +15 -15
  61. package/progress/src/ys-progress/ys-progress.component.d.ts +1 -1
  62. package/select/src/ys-select/ys-select.component.d.ts +1 -1
  63. package/sidebar/src/ys-sidebar/ys-sidebar.component.d.ts +1 -1
  64. package/toasts/src/ys-toasts/ys-toasts.component.d.ts +1 -1
@@ -7,7 +7,7 @@ import * as i0 from "@angular/core";
7
7
  import * as i1 from "../services";
8
8
  import * as i2 from "@ng-bootstrap/ng-bootstrap";
9
9
  import * as i3 from "@angular/forms";
10
- class YsDatepickerRangePopupComponent {
10
+ export class YsDatepickerRangePopupComponent {
11
11
  get fromDate() { return this._fromDate; }
12
12
  set fromDate(value) {
13
13
  this._fromDate = value;
@@ -31,7 +31,7 @@ class YsDatepickerRangePopupComponent {
31
31
  this.hoveredDate = null;
32
32
  this._fromDate = null;
33
33
  this._toDate = null;
34
- this.container = '';
34
+ this.container = null;
35
35
  this.firstDayOfWeek = 1;
36
36
  this.weekend = [6, 7];
37
37
  this._language = LanguageType[LanguageType.en];
@@ -39,6 +39,7 @@ class YsDatepickerRangePopupComponent {
39
39
  this.closeLabel = "Close";
40
40
  this.todayLabel = "Today";
41
41
  this.footer = null;
42
+ this.calendarIconClass = "fa-solid fa-calendar-days";
42
43
  this.disabled = false;
43
44
  this.onChange = () => { };
44
45
  this.onTouched = () => { };
@@ -108,8 +109,8 @@ class YsDatepickerRangePopupComponent {
108
109
  this.toDate = this.today;
109
110
  this.valueChanged();
110
111
  }
111
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: YsDatepickerRangePopupComponent, deps: [{ token: i1.I18n }], target: i0.ɵɵFactoryTarget.Component }); }
112
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: YsDatepickerRangePopupComponent, isStandalone: true, selector: "ys-datepicker-range-popup", inputs: { container: "container", firstDayOfWeek: "firstDayOfWeek", weekend: "weekend", language: "language", isFooter: "isFooter", closeLabel: "closeLabel", todayLabel: "todayLabel", footer: "footer", disabled: "disabled" }, providers: [
112
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: YsDatepickerRangePopupComponent, deps: [{ token: i1.I18n }], target: i0.ɵɵFactoryTarget.Component }); }
113
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: YsDatepickerRangePopupComponent, isStandalone: true, selector: "ys-datepicker-range-popup", inputs: { container: "container", firstDayOfWeek: "firstDayOfWeek", weekend: "weekend", language: "language", isFooter: "isFooter", closeLabel: "closeLabel", todayLabel: "todayLabel", footer: "footer", calendarIconClass: "calendarIconClass", disabled: "disabled" }, providers: [
113
114
  {
114
115
  provide: NG_VALUE_ACCESSOR,
115
116
  useExisting: forwardRef(() => YsDatepickerRangePopupComponent),
@@ -118,10 +119,9 @@ class YsDatepickerRangePopupComponent {
118
119
  I18n,
119
120
  { provide: NgbDatepickerI18n, useClass: YsDatepickerI18nService },
120
121
  { provide: NgbDateParserFormatter, useClass: YsDateParserFormatterService }
121
- ], ngImport: i0, template: "<form class=\"row row-cols-sm-auto\">\r\n <div class=\"col-12\">\r\n <div class=\"dp-hidden position-absolute\">\r\n <div class=\"input-group\">\r\n <input name=\"datepicker\" class=\"form-control\" ngbDatepicker #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"'outside'\" (dateSelect)=\"onDateSelection($event)\" [displayMonths]=\"2\"\r\n [dayTemplate]=\"customDay\" outsideDays=\"hidden\" [startDate]=\"fromDate!\" tabindex=\"-1\"\r\n [container]=\"container\" [markDisabled]=\"markDisabled\" [disabled]=\"disabled\"\r\n [footerTemplate]=\"footerTemplate\" [firstDayOfWeek]=\"firstDayOfWeek\" />\r\n </div>\r\n </div>\r\n <div class=\"input-group\">\r\n <input #dpFromDate class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dpFromDate\"\r\n [value]=\"formatter.format(fromDate)\" (input)=\"fromDate = validateInput(fromDate, dpFromDate.value)\"\r\n [disabled]=\"disabled\" readonly />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"fa-solid fa-calendar-days\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"col-12\">\r\n <div class=\"input-group\">\r\n <input #dpToDate class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dpToDate\"\r\n [value]=\"formatter.format(toDate)\" (input)=\"toDate = validateInput(toDate, dpToDate.value)\"\r\n [disabled]=\"disabled\" readonly />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"fa-solid fa-calendar-days\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ng-template #customDay let-date let-currentMonth=\"currentMonth\" let-selected=\"selected\" let-disabled=\"disabled\"\r\n let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.weekend]=\"isWeekend(date)\" [class.focused]=\"focused\"\r\n [class.hidden]=\"date.month !== currentMonth\" [class.text-muted]=\"disabled\" [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\" (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\">\r\n {{ date.day }}\r\n </span>\r\n <!-- [class.bg-primary]=\"selected\" -->\r\n</ng-template>\r\n\r\n<ng-template #footerTemplate>\r\n <span *ngIf=\"isFooter\">\r\n <hr class=\"my-0\" />\r\n <span *ngIf=\"footer\">\r\n {{footer}}\r\n </span>\r\n <span *ngIf=\"!footer\">\r\n <button class=\"btn btn-primary btn-sm m-2 float-start\" (click)=\"setToday(); datepicker.close()\"\r\n [disabled]=\"disabled\">{{todayLabel}}</button>\r\n <button class=\"btn btn-secondary btn-sm m-2 float-end\" (click)=\"datepicker.close()\">{{closeLabel}}</button>\r\n </span>\r\n </span>\r\n</ng-template>", styles: ["::ng-deep html[dir=rtl] .ngb-dp-arrow-prev .ngb-dp-navigation-chevron{transform:rotate(45deg)}::ng-deep html[dir=rtl] .ngb-dp-arrow-next .ngb-dp-navigation-chevron{transform:rotate(-135deg)}::ng-deep html[dir=rtl] .form-select{background-position:left .75rem center}::ng-deep html[dir=rtl] .ngb-dp-month:first-child .ngb-dp-week{padding-right:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month:last-child .ngb-dp-week{padding-left:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-right:1rem}::ng-deep html[dir=rtl] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}::ng-deep html[dir=rtl] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-right:calc(var(--bs-border-width) * -1);border-top-left-radius:.375rem;border-bottom-left-radius:.375rem;border-top-right-radius:0;border-bottom-right-radius:0}::ng-deep .ngb-dp-day{display:flex;align-items:center}.custom-day{text-align:center;padding:.185rem .25rem;border-radius:.25rem;display:inline-block;width:2rem;height:2rem;line-height:1.7}.weekend{color:var(--bs-danger)}.dp-hidden{width:0;margin:0;border:none;padding:0}.custom-day.focused{background-color:var(--bs-gray-300)}.custom-day.range,.custom-day:hover{background-color:var(--bs-info);color:var(--bs-white)}.custom-day.faded{background-color:var(--bs-info);opacity:.5}\n"], dependencies: [{ kind: "ngmodule", type: NgbDatepickerModule }, { kind: "directive", type: i2.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
122
+ ], ngImport: i0, template: "<form class=\"row row-cols-sm-auto\">\r\n <div class=\"col-12\">\r\n <div class=\"dp-hidden position-absolute\">\r\n <div class=\"input-group\">\r\n <input name=\"datepicker\" class=\"form-control\" ngbDatepicker #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"'outside'\" (dateSelect)=\"onDateSelection($event)\" [displayMonths]=\"2\"\r\n [dayTemplate]=\"customDay\" outsideDays=\"hidden\" [startDate]=\"fromDate!\" tabindex=\"-1\"\r\n [container]=\"container\" [markDisabled]=\"markDisabled\" [disabled]=\"disabled\"\r\n [footerTemplate]=\"footerTemplate\" [firstDayOfWeek]=\"firstDayOfWeek\" />\r\n </div>\r\n </div>\r\n <div class=\"input-group\">\r\n <input #dpFromDate class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dpFromDate\"\r\n [value]=\"formatter.format(fromDate)\" (input)=\"fromDate = validateInput(fromDate, dpFromDate.value)\"\r\n [disabled]=\"disabled\" readonly />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"{{calendarIconClass}}\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"col-12\">\r\n <div class=\"input-group\">\r\n <input #dpToDate class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dpToDate\"\r\n [value]=\"formatter.format(toDate)\" (input)=\"toDate = validateInput(toDate, dpToDate.value)\"\r\n [disabled]=\"disabled\" readonly />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"{{calendarIconClass}}\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ng-template #customDay let-date let-currentMonth=\"currentMonth\" let-selected=\"selected\" let-disabled=\"disabled\"\r\n let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.weekend]=\"isWeekend(date)\" [class.focused]=\"focused\"\r\n [class.hidden]=\"date.month !== currentMonth\" [class.text-muted]=\"disabled\" [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\" (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\">\r\n {{ date.day }}\r\n </span>\r\n <!-- [class.bg-primary]=\"selected\" -->\r\n</ng-template>\r\n\r\n<ng-template #footerTemplate>\r\n <span *ngIf=\"isFooter\">\r\n <hr class=\"my-0\" />\r\n <span *ngIf=\"footer\">\r\n {{footer}}\r\n </span>\r\n <span *ngIf=\"!footer\">\r\n <button class=\"btn btn-primary btn-sm m-2 float-start\" (click)=\"setToday(); datepicker.close()\"\r\n [disabled]=\"disabled\">{{todayLabel}}</button>\r\n <button class=\"btn btn-secondary btn-sm m-2 float-end\" (click)=\"datepicker.close()\">{{closeLabel}}</button>\r\n </span>\r\n </span>\r\n</ng-template>", styles: ["::ng-deep html[dir=rtl] .ngb-dp-arrow-prev .ngb-dp-navigation-chevron{transform:rotate(45deg)}::ng-deep html[dir=rtl] .ngb-dp-arrow-next .ngb-dp-navigation-chevron{transform:rotate(-135deg)}::ng-deep html[dir=rtl] .form-select{background-position:left .75rem center}::ng-deep html[dir=rtl] .ngb-dp-month:first-child .ngb-dp-week{padding-right:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month:last-child .ngb-dp-week{padding-left:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-right:1rem}::ng-deep html[dir=rtl] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}::ng-deep html[dir=rtl] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-right:calc(var(--bs-border-width) * -1);border-top-left-radius:.375rem;border-bottom-left-radius:.375rem;border-top-right-radius:0;border-bottom-right-radius:0}::ng-deep .ngb-dp-day{display:flex;align-items:center}.custom-day{text-align:center;padding:.185rem .25rem;border-radius:.25rem;display:inline-block;width:2rem;height:2rem;line-height:1.7}.weekend{color:var(--bs-danger)}.dp-hidden{width:0;margin:0;border:none;padding:0}.custom-day.focused{background-color:var(--bs-gray-300)}.custom-day.range,.custom-day:hover{background-color:var(--bs-info);color:var(--bs-white)}.custom-day.faded{background-color:var(--bs-info);opacity:.5}\n"], dependencies: [{ kind: "ngmodule", type: NgbDatepickerModule }, { kind: "directive", type: i2.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
122
123
  }
123
- export { YsDatepickerRangePopupComponent };
124
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: YsDatepickerRangePopupComponent, decorators: [{
124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: YsDatepickerRangePopupComponent, decorators: [{
125
125
  type: Component,
126
126
  args: [{ selector: 'ys-datepicker-range-popup', standalone: true, imports: [NgbDatepickerModule, FormsModule, JsonPipe, NgIf], providers: [
127
127
  {
@@ -132,8 +132,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
132
132
  I18n,
133
133
  { provide: NgbDatepickerI18n, useClass: YsDatepickerI18nService },
134
134
  { provide: NgbDateParserFormatter, useClass: YsDateParserFormatterService }
135
- ], template: "<form class=\"row row-cols-sm-auto\">\r\n <div class=\"col-12\">\r\n <div class=\"dp-hidden position-absolute\">\r\n <div class=\"input-group\">\r\n <input name=\"datepicker\" class=\"form-control\" ngbDatepicker #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"'outside'\" (dateSelect)=\"onDateSelection($event)\" [displayMonths]=\"2\"\r\n [dayTemplate]=\"customDay\" outsideDays=\"hidden\" [startDate]=\"fromDate!\" tabindex=\"-1\"\r\n [container]=\"container\" [markDisabled]=\"markDisabled\" [disabled]=\"disabled\"\r\n [footerTemplate]=\"footerTemplate\" [firstDayOfWeek]=\"firstDayOfWeek\" />\r\n </div>\r\n </div>\r\n <div class=\"input-group\">\r\n <input #dpFromDate class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dpFromDate\"\r\n [value]=\"formatter.format(fromDate)\" (input)=\"fromDate = validateInput(fromDate, dpFromDate.value)\"\r\n [disabled]=\"disabled\" readonly />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"fa-solid fa-calendar-days\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"col-12\">\r\n <div class=\"input-group\">\r\n <input #dpToDate class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dpToDate\"\r\n [value]=\"formatter.format(toDate)\" (input)=\"toDate = validateInput(toDate, dpToDate.value)\"\r\n [disabled]=\"disabled\" readonly />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"fa-solid fa-calendar-days\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ng-template #customDay let-date let-currentMonth=\"currentMonth\" let-selected=\"selected\" let-disabled=\"disabled\"\r\n let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.weekend]=\"isWeekend(date)\" [class.focused]=\"focused\"\r\n [class.hidden]=\"date.month !== currentMonth\" [class.text-muted]=\"disabled\" [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\" (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\">\r\n {{ date.day }}\r\n </span>\r\n <!-- [class.bg-primary]=\"selected\" -->\r\n</ng-template>\r\n\r\n<ng-template #footerTemplate>\r\n <span *ngIf=\"isFooter\">\r\n <hr class=\"my-0\" />\r\n <span *ngIf=\"footer\">\r\n {{footer}}\r\n </span>\r\n <span *ngIf=\"!footer\">\r\n <button class=\"btn btn-primary btn-sm m-2 float-start\" (click)=\"setToday(); datepicker.close()\"\r\n [disabled]=\"disabled\">{{todayLabel}}</button>\r\n <button class=\"btn btn-secondary btn-sm m-2 float-end\" (click)=\"datepicker.close()\">{{closeLabel}}</button>\r\n </span>\r\n </span>\r\n</ng-template>", styles: ["::ng-deep html[dir=rtl] .ngb-dp-arrow-prev .ngb-dp-navigation-chevron{transform:rotate(45deg)}::ng-deep html[dir=rtl] .ngb-dp-arrow-next .ngb-dp-navigation-chevron{transform:rotate(-135deg)}::ng-deep html[dir=rtl] .form-select{background-position:left .75rem center}::ng-deep html[dir=rtl] .ngb-dp-month:first-child .ngb-dp-week{padding-right:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month:last-child .ngb-dp-week{padding-left:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-right:1rem}::ng-deep html[dir=rtl] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}::ng-deep html[dir=rtl] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-right:calc(var(--bs-border-width) * -1);border-top-left-radius:.375rem;border-bottom-left-radius:.375rem;border-top-right-radius:0;border-bottom-right-radius:0}::ng-deep .ngb-dp-day{display:flex;align-items:center}.custom-day{text-align:center;padding:.185rem .25rem;border-radius:.25rem;display:inline-block;width:2rem;height:2rem;line-height:1.7}.weekend{color:var(--bs-danger)}.dp-hidden{width:0;margin:0;border:none;padding:0}.custom-day.focused{background-color:var(--bs-gray-300)}.custom-day.range,.custom-day:hover{background-color:var(--bs-info);color:var(--bs-white)}.custom-day.faded{background-color:var(--bs-info);opacity:.5}\n"] }]
136
- }], ctorParameters: function () { return [{ type: i1.I18n }]; }, propDecorators: { container: [{
135
+ ], template: "<form class=\"row row-cols-sm-auto\">\r\n <div class=\"col-12\">\r\n <div class=\"dp-hidden position-absolute\">\r\n <div class=\"input-group\">\r\n <input name=\"datepicker\" class=\"form-control\" ngbDatepicker #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"'outside'\" (dateSelect)=\"onDateSelection($event)\" [displayMonths]=\"2\"\r\n [dayTemplate]=\"customDay\" outsideDays=\"hidden\" [startDate]=\"fromDate!\" tabindex=\"-1\"\r\n [container]=\"container\" [markDisabled]=\"markDisabled\" [disabled]=\"disabled\"\r\n [footerTemplate]=\"footerTemplate\" [firstDayOfWeek]=\"firstDayOfWeek\" />\r\n </div>\r\n </div>\r\n <div class=\"input-group\">\r\n <input #dpFromDate class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dpFromDate\"\r\n [value]=\"formatter.format(fromDate)\" (input)=\"fromDate = validateInput(fromDate, dpFromDate.value)\"\r\n [disabled]=\"disabled\" readonly />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"{{calendarIconClass}}\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"col-12\">\r\n <div class=\"input-group\">\r\n <input #dpToDate class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dpToDate\"\r\n [value]=\"formatter.format(toDate)\" (input)=\"toDate = validateInput(toDate, dpToDate.value)\"\r\n [disabled]=\"disabled\" readonly />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"{{calendarIconClass}}\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ng-template #customDay let-date let-currentMonth=\"currentMonth\" let-selected=\"selected\" let-disabled=\"disabled\"\r\n let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.weekend]=\"isWeekend(date)\" [class.focused]=\"focused\"\r\n [class.hidden]=\"date.month !== currentMonth\" [class.text-muted]=\"disabled\" [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\" (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\">\r\n {{ date.day }}\r\n </span>\r\n <!-- [class.bg-primary]=\"selected\" -->\r\n</ng-template>\r\n\r\n<ng-template #footerTemplate>\r\n <span *ngIf=\"isFooter\">\r\n <hr class=\"my-0\" />\r\n <span *ngIf=\"footer\">\r\n {{footer}}\r\n </span>\r\n <span *ngIf=\"!footer\">\r\n <button class=\"btn btn-primary btn-sm m-2 float-start\" (click)=\"setToday(); datepicker.close()\"\r\n [disabled]=\"disabled\">{{todayLabel}}</button>\r\n <button class=\"btn btn-secondary btn-sm m-2 float-end\" (click)=\"datepicker.close()\">{{closeLabel}}</button>\r\n </span>\r\n </span>\r\n</ng-template>", styles: ["::ng-deep html[dir=rtl] .ngb-dp-arrow-prev .ngb-dp-navigation-chevron{transform:rotate(45deg)}::ng-deep html[dir=rtl] .ngb-dp-arrow-next .ngb-dp-navigation-chevron{transform:rotate(-135deg)}::ng-deep html[dir=rtl] .form-select{background-position:left .75rem center}::ng-deep html[dir=rtl] .ngb-dp-month:first-child .ngb-dp-week{padding-right:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month:last-child .ngb-dp-week{padding-left:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-right:1rem}::ng-deep html[dir=rtl] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}::ng-deep html[dir=rtl] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-right:calc(var(--bs-border-width) * -1);border-top-left-radius:.375rem;border-bottom-left-radius:.375rem;border-top-right-radius:0;border-bottom-right-radius:0}::ng-deep .ngb-dp-day{display:flex;align-items:center}.custom-day{text-align:center;padding:.185rem .25rem;border-radius:.25rem;display:inline-block;width:2rem;height:2rem;line-height:1.7}.weekend{color:var(--bs-danger)}.dp-hidden{width:0;margin:0;border:none;padding:0}.custom-day.focused{background-color:var(--bs-gray-300)}.custom-day.range,.custom-day:hover{background-color:var(--bs-info);color:var(--bs-white)}.custom-day.faded{background-color:var(--bs-info);opacity:.5}\n"] }]
136
+ }], ctorParameters: () => [{ type: i1.I18n }], propDecorators: { container: [{
137
137
  type: Input
138
138
  }], firstDayOfWeek: [{
139
139
  type: Input
@@ -149,7 +149,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
149
149
  type: Input
150
150
  }], footer: [{
151
151
  type: Input
152
+ }], calendarIconClass: [{
153
+ type: Input
152
154
  }], disabled: [{
153
155
  type: Input
154
156
  }] } });
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXMtZGF0ZXBpY2tlci1yYW5nZS1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy95b296c29mdC95b296c29mdC1uZy9kYXRlcGlja2VyL3NyYy95cy1kYXRlcGlja2VyLXJhbmdlLXBvcHVwL3lzLWRhdGVwaWNrZXItcmFuZ2UtcG9wdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveW9venNvZnQveW9venNvZnQtbmcvZGF0ZXBpY2tlci9zcmMveXMtZGF0ZXBpY2tlci1yYW5nZS1wb3B1cC95cy1kYXRlcGlja2VyLXJhbmdlLXBvcHVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbEksT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsNEJBQTRCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7O0FBRXhHLE1BaUJhLCtCQUErQjtJQVMxQyxJQUFJLFFBQVEsS0FBcUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN6RCxJQUFJLFFBQVEsQ0FBQyxLQUFxQjtRQUNoQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBR0QsSUFBSSxNQUFNLEtBQXFCLE9B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QUk7eUJBQ1o7d0JBQ0QsSUFBSTt3QkFDSixFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUU7d0JBQ2pFLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSw0QkFBNEIsRUFBRTtxQkFDNUU7MkZBc0JRLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0YsUUFBUTtzQkFEWCxLQUFLO2dCQVNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSnNvblBpcGUsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBUZW1wbGF0ZVJlZiwgZm9yd2FyZFJlZiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3Jtc01vZHVsZSwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE5nYkNhbGVuZGFyLCBOZ2JEYXRlLCBOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyLCBOZ2JEYXRlcGlja2VySTE4biwgTmdiRGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgRGF0ZVJhbmdlIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgSTE4biwgTGFuZ3VhZ2VUeXBlLCBZc0RhdGVQYXJzZXJGb3JtYXR0ZXJTZXJ2aWNlLCBZc0RhdGVwaWNrZXJJMThuU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAneXMtZGF0ZXBpY2tlci1yYW5nZS1wb3B1cCcsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbTmdiRGF0ZXBpY2tlck1vZHVsZSwgRm9ybXNNb2R1bGUsIEpzb25QaXBlLCBOZ0lmXSxcclxuICB0ZW1wbGF0ZVVybDogJy4veXMtZGF0ZXBpY2tlci1yYW5nZS1wb3B1cC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4veXMtZGF0ZXBpY2tlci1yYW5nZS1wb3B1cC5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gWXNEYXRlcGlja2VyUmFuZ2VQb3B1cENvbXBvbmVudCksXHJcbiAgICAgIG11bHRpOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgSTE4bixcclxuICAgIHsgcHJvdmlkZTogTmdiRGF0ZXBpY2tlckkxOG4sIHVzZUNsYXNzOiBZc0RhdGVwaWNrZXJJMThuU2VydmljZSB9LFxyXG4gICAgeyBwcm92aWRlOiBOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyLCB1c2VDbGFzczogWXNEYXRlUGFyc2VyRm9ybWF0dGVyU2VydmljZSB9XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWXNEYXRlcGlja2VyUmFuZ2VQb3B1cENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgY2FsZW5kYXIgPSBpbmplY3QoTmdiQ2FsZW5kYXIpO1xyXG4gIGZvcm1hdHRlciA9IGluamVjdChOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyKTtcclxuICB0b2RheSA9IGluamVjdChOZ2JDYWxlbmRhcikuZ2V0VG9kYXkoKTtcclxuXHJcbiAgaG92ZXJlZERhdGU6IE5nYkRhdGUgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgX2Zyb21EYXRlOiBOZ2JEYXRlIHwgbnVsbCA9IG51bGw7XHJcbiAgZ2V0IGZyb21EYXRlKCk6IE5nYkRhdGUgfCBudWxsIHsgcmV0dXJuIHRoaXMuX2Zyb21EYXRlOyB9XHJcbiAgc2V0IGZyb21EYXRlKHZhbHVlOiBOZ2JEYXRlIHwgbnVsbCkge1xyXG4gICAgdGhpcy5fZnJvbURhdGUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIF90b0RhdGU6IE5nYkRhdGUgfCBudWxsID0gbnVsbDtcclxuICBnZXQgdG9EYXRlKCk6IE5nYkRhdGUgfCBudWxsIHsgcmV0dXJuIHRoaXMuX3RvRGF0ZTsgfVxyXG4gIHNldCB0b0RhdGUodmFsdWU6IE5nYkRhdGUgfCBudWxsKSB7XHJcbiAgICB0aGlzLl90b0RhdGUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGNvbnRhaW5lcjogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgZmlyc3REYXlPZldlZWs6IG51bWJlciA9IDE7XHJcbiAgQElucHV0KCkgd2Vla2VuZDogbnVtYmVyW10gPSBbNiwgN107XHJcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2U6IHN0cmluZyA9IExhbmd1YWdlVHlwZVtMYW5ndWFnZVR5cGUuZW5dO1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGxhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGFuZ3VhZ2U7XHJcbiAgfVxyXG4gIHNldCBsYW5ndWFnZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9sYW5ndWFnZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5pMThOLmxhbmd1YWdlID0gdGhpcy5fbGFuZ3VhZ2U7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBpc0Zvb3RlcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgY2xvc2VMYWJlbDogc3RyaW5nID0gXCJDbG9zZVwiO1xyXG4gIEBJbnB1dCgpIHRvZGF5TGFiZWw6IHN0cmluZyA9IFwiVG9kYXlcIjtcclxuICBASW5wdXQoKSBmb290ZXI6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBvbkNoYW5nZTogYW55ID0gKCkgPT4geyB9XHJcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7IH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpMThOOiBJMThuKSB7XHJcbiAgICB0aGlzLmxhbmd1YWdlID0gTGFuZ3VhZ2VUeXBlW0xhbmd1YWdlVHlwZS5lbl07XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoIW9iaikge1xyXG4gICAgICB0aGlzLmZyb21EYXRlID0gbnVsbDtcclxuICAgICAgdGhpcy50b0RhdGUgPSBudWxsO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGQ6IERhdGVSYW5nZSA9IG9iajtcclxuXHJcbiAgICB2YXIgZkRhdGU6IERhdGUgPSBkLmZyb21EYXRlITtcclxuICAgIHRoaXMuZnJvbURhdGUgPSA8TmdiRGF0ZT57IHllYXI6IGZEYXRlLmdldEZ1bGxZZWFyKCksIG1vbnRoOiAoZkRhdGUuZ2V0TW9udGgoKSArIDEpLCBkYXk6IGZEYXRlLmdldERhdGUoKSB9O1xyXG5cclxuICAgIHZhciB0RGF0ZTogRGF0ZSA9IGQudG9EYXRlITtcclxuICAgIHRoaXMudG9EYXRlID0gPE5nYkRhdGU+eyB5ZWFyOiB0RGF0ZS5nZXRGdWxsWWVhcigpLCBtb250aDogKHREYXRlLmdldE1vbnRoKCkgKyAxKSwgZGF5OiB0RGF0ZS5nZXREYXRlKCkgfTtcclxuICB9XHJcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgb25EYXRlU2VsZWN0aW9uKGRhdGU6IE5nYkRhdGUpIHtcclxuICAgIGlmICghdGhpcy5mcm9tRGF0ZSAmJiAhdGhpcy50b0RhdGUpIHtcclxuICAgICAgdGhpcy5mcm9tRGF0ZSA9IGRhdGU7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZnJvbURhdGUgJiYgIXRoaXMudG9EYXRlICYmIGRhdGUgJiYgZGF0ZS5hZnRlcih0aGlzLmZyb21EYXRlKSkge1xyXG4gICAgICB0aGlzLnRvRGF0ZSA9IGRhdGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRvRGF0ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuZnJvbURhdGUgPSBkYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudmFsdWVDaGFuZ2VkKCk7XHJcbiAgfVxyXG5cclxuICBpc0hvdmVyZWQoZGF0ZTogTmdiRGF0ZSkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5mcm9tRGF0ZSAmJiAhdGhpcy50b0RhdGUgJiYgdGhpcy5ob3ZlcmVkRGF0ZSAmJiBkYXRlLmFmdGVyKHRoaXMuZnJvbURhdGUpICYmIGRhdGUuYmVmb3JlKHRoaXMuaG92ZXJlZERhdGUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgaXNJbnNpZGUoZGF0ZTogTmdiRGF0ZSkge1xyXG4gICAgcmV0dXJuIHRoaXMudG9EYXRlICYmIGRhdGUuYWZ0ZXIodGhpcy5mcm9tRGF0ZSkgJiYgZGF0ZS5iZWZvcmUodGhpcy50b0RhdGUpO1xyXG4gIH1cclxuXHJcbiAgaXNSYW5nZShkYXRlOiBOZ2JEYXRlKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBkYXRlLmVxdWFscyh0aGlzLmZyb21EYXRlKSB8fFxyXG4gICAgICAodGhpcy50b0RhdGUgJiYgZGF0ZS5lcXVhbHModGhpcy50b0RhdGUpKSB8fFxyXG4gICAgICB0aGlzLmlzSW5zaWRlKGRhdGUpIHx8XHJcbiAgICAgIHRoaXMuaXNIb3ZlcmVkKGRhdGUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgbWFya0Rpc2FibGVkID0gKGRhdGU6IE5nYkRhdGUsIGN1cnJlbnQ/OiB7IG1vbnRoOiBudW1iZXI7IHllYXI6IG51bWJlciB9KSA9PiBkYXRlLm1vbnRoICE9PSBjdXJyZW50Py5tb250aDtcclxuICBpc1dlZWtlbmQgPSAoZGF0ZTogTmdiRGF0ZSkgPT4gdGhpcy53ZWVrZW5kLmluY2x1ZGVzKHRoaXMuY2FsZW5kYXIuZ2V0V2Vla2RheShkYXRlKSk7XHJcblxyXG4gIHZhbGlkYXRlSW5wdXQoY3VycmVudFZhbHVlOiBOZ2JEYXRlIHwgbnVsbCwgaW5wdXQ6IHN0cmluZyk6IE5nYkRhdGUgfCBudWxsIHtcclxuICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMuZm9ybWF0dGVyLnBhcnNlKGlucHV0KTtcclxuICAgIHJldHVybiBwYXJzZWQgJiYgdGhpcy5jYWxlbmRhci5pc1ZhbGlkKE5nYkRhdGUuZnJvbShwYXJzZWQpKSA/IE5nYkRhdGUuZnJvbShwYXJzZWQpIDogY3VycmVudFZhbHVlO1xyXG4gIH1cclxuXHJcbiAgdmFsdWVDaGFuZ2VkKCkge1xyXG4gICAgY29uc3QgZnJvbURhdGVUZW1wOiBEYXRlIHwgbnVsbCA9IHRoaXMuZnJvbURhdGUgPyBuZXcgRGF0ZSh0aGlzLmZyb21EYXRlLnllYXIsIHRoaXMuZnJvbURhdGUubW9udGggLSAxLCB0aGlzLmZyb21EYXRlLmRheSkgOiBudWxsO1xyXG4gICAgY29uc3QgdG9EYXRlVGVtcDogRGF0ZSB8IG51bGwgPSB0aGlzLnRvRGF0ZSA/IG5ldyBEYXRlKHRoaXMudG9EYXRlLnllYXIsIHRoaXMudG9EYXRlLm1vbnRoIC0gMSwgdGhpcy50b0RhdGUuZGF5KSA6IG51bGw7XHJcbiAgICBjb25zdCByZXMgPSA8RGF0ZVJhbmdlPnsgZnJvbURhdGU6IGZyb21EYXRlVGVtcCwgdG9EYXRlOiB0b0RhdGVUZW1wIH07XHJcbiAgICB0aGlzLm9uQ2hhbmdlKHJlcyk7XHJcbiAgICB0aGlzLm9uVG91Y2hlZChyZXMpO1xyXG4gIH1cclxuXHJcbiAgc2V0VG9kYXkoKSB7XHJcbiAgICB0aGlzLmZyb21EYXRlID0gdGhpcy50b2RheTtcclxuICAgIHRoaXMudG9EYXRlID0gdGhpcy50b2RheTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2VkKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8Zm9ybSBjbGFzcz1cInJvdyByb3ctY29scy1zbS1hdXRvXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRwLWhpZGRlbiBwb3NpdGlvbi1hYnNvbHV0ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiZGF0ZXBpY2tlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmdiRGF0ZXBpY2tlciAjZGF0ZXBpY2tlcj1cIm5nYkRhdGVwaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCIgKGRhdGVTZWxlY3QpPVwib25EYXRlU2VsZWN0aW9uKCRldmVudClcIiBbZGlzcGxheU1vbnRoc109XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGF5VGVtcGxhdGVdPVwiY3VzdG9tRGF5XCIgb3V0c2lkZURheXM9XCJoaWRkZW5cIiBbc3RhcnREYXRlXT1cImZyb21EYXRlIVwiIHRhYmluZGV4PVwiLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250YWluZXJdPVwiY29udGFpbmVyXCIgW21hcmtEaXNhYmxlZF09XCJtYXJrRGlzYWJsZWRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb290ZXJUZW1wbGF0ZV09XCJmb290ZXJUZW1wbGF0ZVwiIFtmaXJzdERheU9mV2Vla109XCJmaXJzdERheU9mV2Vla1wiIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgI2RwRnJvbURhdGUgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBwbGFjZWhvbGRlcj1cInl5eXkvbW0vZGRcIiBuYW1lPVwiZHBGcm9tRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZm9ybWF0dGVyLmZvcm1hdChmcm9tRGF0ZSlcIiAoaW5wdXQpPVwiZnJvbURhdGUgPSB2YWxpZGF0ZUlucHV0KGZyb21EYXRlLCBkcEZyb21EYXRlLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiByZWFkb25seSAvPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiIChjbGljayk9XCJkYXRlcGlja2VyLnRvZ2dsZSgpXCIgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1jYWxlbmRhci1kYXlzXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgI2RwVG9EYXRlIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJ5eXl5L21tL2RkXCIgbmFtZT1cImRwVG9EYXRlXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtYXR0ZXIuZm9ybWF0KHRvRGF0ZSlcIiAoaW5wdXQpPVwidG9EYXRlID0gdmFsaWRhdGVJbnB1dCh0b0RhdGUsIGRwVG9EYXRlLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiByZWFkb25seSAvPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiIChjbGljayk9XCJkYXRlcGlja2VyLnRvZ2dsZSgpXCIgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1jYWxlbmRhci1kYXlzXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Zvcm0+XHJcblxyXG48bmctdGVtcGxhdGUgI2N1c3RvbURheSBsZXQtZGF0ZSBsZXQtY3VycmVudE1vbnRoPVwiY3VycmVudE1vbnRoXCIgbGV0LXNlbGVjdGVkPVwic2VsZWN0ZWRcIiBsZXQtZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXHJcbiAgICBsZXQtZm9jdXNlZD1cImZvY3VzZWRcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRheVwiIFtjbGFzcy53ZWVrZW5kXT1cImlzV2Vla2VuZChkYXRlKVwiIFtjbGFzcy5mb2N1c2VkXT1cImZvY3VzZWRcIlxyXG4gICAgICAgIFtjbGFzcy5oaWRkZW5dPVwiZGF0ZS5tb250aCAhPT0gY3VycmVudE1vbnRoXCIgW2NsYXNzLnRleHQtbXV0ZWRdPVwiZGlzYWJsZWRcIiBbY2xhc3MucmFuZ2VdPVwiaXNSYW5nZShkYXRlKVwiXHJcbiAgICAgICAgW2NsYXNzLmZhZGVkXT1cImlzSG92ZXJlZChkYXRlKSB8fCBpc0luc2lkZShkYXRlKVwiIChtb3VzZWVudGVyKT1cImhvdmVyZWREYXRlID0gZGF0ZVwiXHJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwiaG92ZXJlZERhdGUgPSBudWxsXCI+XHJcbiAgICAgICAge3sgZGF0ZS5kYXkgfX1cclxuICAgIDwvc3Bhbj5cclxuICAgIDwhLS0gW2NsYXNzLmJnLXByaW1hcnldPVwic2VsZWN0ZWRcIiAtLT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XHJcbiAgICA8c3BhbiAqbmdJZj1cImlzRm9vdGVyXCI+XHJcbiAgICAgICAgPGhyIGNsYXNzPVwibXktMFwiIC8+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJmb290ZXJcIj5cclxuICAgICAgICAgICAge3tmb290ZXJ9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFmb290ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gbS0yIGZsb2F0LXN0YXJ0XCIgKGNsaWNrKT1cInNldFRvZGF5KCk7IGRhdGVwaWNrZXIuY2xvc2UoKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj57e3RvZGF5TGFiZWx9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgYnRuLXNtIG0tMiBmbG9hdC1lbmRcIiAoY2xpY2spPVwiZGF0ZXBpY2tlci5jbG9zZSgpXCI+e3tjbG9zZUxhYmVsfX08L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+Il19
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXMtZGF0ZXBpY2tlci1yYW5nZS1wb3B1cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy95b296c29mdC95b296c29mdC1uZy9kYXRlcGlja2VyL3NyYy95cy1kYXRlcGlja2VyLXJhbmdlLXBvcHVwL3lzLWRhdGVwaWNrZXItcmFuZ2UtcG9wdXAuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveW9venNvZnQveW9venNvZnQtbmcvZGF0ZXBpY2tlci9zcmMveXMtZGF0ZXBpY2tlci1yYW5nZS1wb3B1cC95cy1kYXRlcGlja2VyLXJhbmdlLXBvcHVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQXdCLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFFbEksT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsNEJBQTRCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7O0FBbUJ4RyxNQUFNLE9BQU8sK0JBQStCO0lBUzFDLElBQUksUUFBUSxLQUFxQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ3pELElBQUksUUFBUSxDQUFDLEtBQXFCO1FBQ2hDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLENBQUM7SUFHRCxJQUFJLE1BQU0sS0FB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QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxnQ0FBZ0MsQ0FBQzs0QkFDOUQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7d0JBQ0QsSUFBSTt3QkFDSixFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsdUJBQXVCLEVBQUU7d0JBQ2pFLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSw0QkFBNEIsRUFBRTtxQkFDNUU7eUVBc0JRLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBR0YsUUFBUTtzQkFEWCxLQUFLO2dCQVNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEpzb25QaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVGVtcGxhdGVSZWYsIGZvcndhcmRSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOZ2JDYWxlbmRhciwgTmdiRGF0ZSwgTmdiRGF0ZVBhcnNlckZvcm1hdHRlciwgTmdiRGF0ZXBpY2tlckkxOG4sIE5nYkRhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IERhdGVSYW5nZSB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEkxOG4sIExhbmd1YWdlVHlwZSwgWXNEYXRlUGFyc2VyRm9ybWF0dGVyU2VydmljZSwgWXNEYXRlcGlja2VySTE4blNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3lzLWRhdGVwaWNrZXItcmFuZ2UtcG9wdXAnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW05nYkRhdGVwaWNrZXJNb2R1bGUsIEZvcm1zTW9kdWxlLCBKc29uUGlwZSwgTmdJZl0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3lzLWRhdGVwaWNrZXItcmFuZ2UtcG9wdXAuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3lzLWRhdGVwaWNrZXItcmFuZ2UtcG9wdXAuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFlzRGF0ZXBpY2tlclJhbmdlUG9wdXBDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIEkxOG4sXHJcbiAgICB7IHByb3ZpZGU6IE5nYkRhdGVwaWNrZXJJMThuLCB1c2VDbGFzczogWXNEYXRlcGlja2VySTE4blNlcnZpY2UgfSxcclxuICAgIHsgcHJvdmlkZTogTmdiRGF0ZVBhcnNlckZvcm1hdHRlciwgdXNlQ2xhc3M6IFlzRGF0ZVBhcnNlckZvcm1hdHRlclNlcnZpY2UgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFlzRGF0ZXBpY2tlclJhbmdlUG9wdXBDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gIGNhbGVuZGFyID0gaW5qZWN0KE5nYkNhbGVuZGFyKTtcclxuICBmb3JtYXR0ZXIgPSBpbmplY3QoTmdiRGF0ZVBhcnNlckZvcm1hdHRlcik7XHJcbiAgdG9kYXkgPSBpbmplY3QoTmdiQ2FsZW5kYXIpLmdldFRvZGF5KCk7XHJcblxyXG4gIGhvdmVyZWREYXRlOiBOZ2JEYXRlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIF9mcm9tRGF0ZTogTmdiRGF0ZSB8IG51bGwgPSBudWxsO1xyXG4gIGdldCBmcm9tRGF0ZSgpOiBOZ2JEYXRlIHwgbnVsbCB7IHJldHVybiB0aGlzLl9mcm9tRGF0ZTsgfVxyXG4gIHNldCBmcm9tRGF0ZSh2YWx1ZTogTmdiRGF0ZSB8IG51bGwpIHtcclxuICAgIHRoaXMuX2Zyb21EYXRlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBfdG9EYXRlOiBOZ2JEYXRlIHwgbnVsbCA9IG51bGw7XHJcbiAgZ2V0IHRvRGF0ZSgpOiBOZ2JEYXRlIHwgbnVsbCB7IHJldHVybiB0aGlzLl90b0RhdGU7IH1cclxuICBzZXQgdG9EYXRlKHZhbHVlOiBOZ2JEYXRlIHwgbnVsbCkge1xyXG4gICAgdGhpcy5fdG9EYXRlID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBjb250YWluZXI6IFwiYm9keVwiIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgZmlyc3REYXlPZldlZWs6IG51bWJlciA9IDE7XHJcbiAgQElucHV0KCkgd2Vla2VuZDogbnVtYmVyW10gPSBbNiwgN107XHJcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2U6IHN0cmluZyA9IExhbmd1YWdlVHlwZVtMYW5ndWFnZVR5cGUuZW5dO1xyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGxhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fbGFuZ3VhZ2U7XHJcbiAgfVxyXG4gIHNldCBsYW5ndWFnZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9sYW5ndWFnZSA9IHZhbHVlO1xyXG4gICAgdGhpcy5pMThOLmxhbmd1YWdlID0gdGhpcy5fbGFuZ3VhZ2U7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSBpc0Zvb3RlcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgY2xvc2VMYWJlbDogc3RyaW5nID0gXCJDbG9zZVwiO1xyXG4gIEBJbnB1dCgpIHRvZGF5TGFiZWw6IHN0cmluZyA9IFwiVG9kYXlcIjtcclxuICBASW5wdXQoKSBmb290ZXI6IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBjYWxlbmRhckljb25DbGFzczogc3RyaW5nID0gXCJmYS1zb2xpZCBmYS1jYWxlbmRhci1kYXlzXCI7XHJcblxyXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHsgfVxyXG4gIG9uVG91Y2hlZDogYW55ID0gKCkgPT4geyB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaTE4TjogSTE4bikge1xyXG4gICAgdGhpcy5sYW5ndWFnZSA9IExhbmd1YWdlVHlwZVtMYW5ndWFnZVR5cGUuZW5dO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCFvYmopIHtcclxuICAgICAgdGhpcy5mcm9tRGF0ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMudG9EYXRlID0gbnVsbDtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBkOiBEYXRlUmFuZ2UgPSBvYmo7XHJcblxyXG4gICAgdmFyIGZEYXRlOiBEYXRlID0gZC5mcm9tRGF0ZSE7XHJcbiAgICB0aGlzLmZyb21EYXRlID0gPE5nYkRhdGU+eyB5ZWFyOiBmRGF0ZS5nZXRGdWxsWWVhcigpLCBtb250aDogKGZEYXRlLmdldE1vbnRoKCkgKyAxKSwgZGF5OiBmRGF0ZS5nZXREYXRlKCkgfTtcclxuXHJcbiAgICB2YXIgdERhdGU6IERhdGUgPSBkLnRvRGF0ZSE7XHJcbiAgICB0aGlzLnRvRGF0ZSA9IDxOZ2JEYXRlPnsgeWVhcjogdERhdGUuZ2V0RnVsbFllYXIoKSwgbW9udGg6ICh0RGF0ZS5nZXRNb250aCgpICsgMSksIGRheTogdERhdGUuZ2V0RGF0ZSgpIH07XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIG9uRGF0ZVNlbGVjdGlvbihkYXRlOiBOZ2JEYXRlKSB7XHJcbiAgICBpZiAoIXRoaXMuZnJvbURhdGUgJiYgIXRoaXMudG9EYXRlKSB7XHJcbiAgICAgIHRoaXMuZnJvbURhdGUgPSBkYXRlO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmZyb21EYXRlICYmICF0aGlzLnRvRGF0ZSAmJiBkYXRlICYmIGRhdGUuYWZ0ZXIodGhpcy5mcm9tRGF0ZSkpIHtcclxuICAgICAgdGhpcy50b0RhdGUgPSBkYXRlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50b0RhdGUgPSBudWxsO1xyXG4gICAgICB0aGlzLmZyb21EYXRlID0gZGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlZCgpO1xyXG4gIH1cclxuXHJcbiAgaXNIb3ZlcmVkKGRhdGU6IE5nYkRhdGUpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZnJvbURhdGUgJiYgIXRoaXMudG9EYXRlICYmIHRoaXMuaG92ZXJlZERhdGUgJiYgZGF0ZS5hZnRlcih0aGlzLmZyb21EYXRlKSAmJiBkYXRlLmJlZm9yZSh0aGlzLmhvdmVyZWREYXRlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlzSW5zaWRlKGRhdGU6IE5nYkRhdGUpIHtcclxuICAgIHJldHVybiB0aGlzLnRvRGF0ZSAmJiBkYXRlLmFmdGVyKHRoaXMuZnJvbURhdGUpICYmIGRhdGUuYmVmb3JlKHRoaXMudG9EYXRlKTtcclxuICB9XHJcblxyXG4gIGlzUmFuZ2UoZGF0ZTogTmdiRGF0ZSkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgZGF0ZS5lcXVhbHModGhpcy5mcm9tRGF0ZSkgfHxcclxuICAgICAgKHRoaXMudG9EYXRlICYmIGRhdGUuZXF1YWxzKHRoaXMudG9EYXRlKSkgfHxcclxuICAgICAgdGhpcy5pc0luc2lkZShkYXRlKSB8fFxyXG4gICAgICB0aGlzLmlzSG92ZXJlZChkYXRlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG1hcmtEaXNhYmxlZCA9IChkYXRlOiBOZ2JEYXRlLCBjdXJyZW50PzogeyBtb250aDogbnVtYmVyOyB5ZWFyOiBudW1iZXIgfSkgPT4gZGF0ZS5tb250aCAhPT0gY3VycmVudD8ubW9udGg7XHJcbiAgaXNXZWVrZW5kID0gKGRhdGU6IE5nYkRhdGUpID0+IHRoaXMud2Vla2VuZC5pbmNsdWRlcyh0aGlzLmNhbGVuZGFyLmdldFdlZWtkYXkoZGF0ZSkpO1xyXG5cclxuICB2YWxpZGF0ZUlucHV0KGN1cnJlbnRWYWx1ZTogTmdiRGF0ZSB8IG51bGwsIGlucHV0OiBzdHJpbmcpOiBOZ2JEYXRlIHwgbnVsbCB7XHJcbiAgICBjb25zdCBwYXJzZWQgPSB0aGlzLmZvcm1hdHRlci5wYXJzZShpbnB1dCk7XHJcbiAgICByZXR1cm4gcGFyc2VkICYmIHRoaXMuY2FsZW5kYXIuaXNWYWxpZChOZ2JEYXRlLmZyb20ocGFyc2VkKSkgPyBOZ2JEYXRlLmZyb20ocGFyc2VkKSA6IGN1cnJlbnRWYWx1ZTtcclxuICB9XHJcblxyXG4gIHZhbHVlQ2hhbmdlZCgpIHtcclxuICAgIGNvbnN0IGZyb21EYXRlVGVtcDogRGF0ZSB8IG51bGwgPSB0aGlzLmZyb21EYXRlID8gbmV3IERhdGUodGhpcy5mcm9tRGF0ZS55ZWFyLCB0aGlzLmZyb21EYXRlLm1vbnRoIC0gMSwgdGhpcy5mcm9tRGF0ZS5kYXkpIDogbnVsbDtcclxuICAgIGNvbnN0IHRvRGF0ZVRlbXA6IERhdGUgfCBudWxsID0gdGhpcy50b0RhdGUgPyBuZXcgRGF0ZSh0aGlzLnRvRGF0ZS55ZWFyLCB0aGlzLnRvRGF0ZS5tb250aCAtIDEsIHRoaXMudG9EYXRlLmRheSkgOiBudWxsO1xyXG4gICAgY29uc3QgcmVzID0gPERhdGVSYW5nZT57IGZyb21EYXRlOiBmcm9tRGF0ZVRlbXAsIHRvRGF0ZTogdG9EYXRlVGVtcCB9O1xyXG4gICAgdGhpcy5vbkNoYW5nZShyZXMpO1xyXG4gICAgdGhpcy5vblRvdWNoZWQocmVzKTtcclxuICB9XHJcblxyXG4gIHNldFRvZGF5KCkge1xyXG4gICAgdGhpcy5mcm9tRGF0ZSA9IHRoaXMudG9kYXk7XHJcbiAgICB0aGlzLnRvRGF0ZSA9IHRoaXMudG9kYXk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlZCgpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGZvcm0gY2xhc3M9XCJyb3cgcm93LWNvbHMtc20tYXV0b1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcC1oaWRkZW4gcG9zaXRpb24tYWJzb2x1dGVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cImRhdGVwaWNrZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5nYkRhdGVwaWNrZXIgI2RhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiIChkYXRlU2VsZWN0KT1cIm9uRGF0ZVNlbGVjdGlvbigkZXZlbnQpXCIgW2Rpc3BsYXlNb250aHNdPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2RheVRlbXBsYXRlXT1cImN1c3RvbURheVwiIG91dHNpZGVEYXlzPVwiaGlkZGVuXCIgW3N0YXJ0RGF0ZV09XCJmcm9tRGF0ZSFcIiB0YWJpbmRleD1cIi0xXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udGFpbmVyXT1cImNvbnRhaW5lclwiIFttYXJrRGlzYWJsZWRdPVwibWFya0Rpc2FibGVkXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9vdGVyVGVtcGxhdGVdPVwiZm9vdGVyVGVtcGxhdGVcIiBbZmlyc3REYXlPZldlZWtdPVwiZmlyc3REYXlPZldlZWtcIiAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgPGlucHV0ICNkcEZyb21EYXRlIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJ5eXl5L21tL2RkXCIgbmFtZT1cImRwRnJvbURhdGVcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImZvcm1hdHRlci5mb3JtYXQoZnJvbURhdGUpXCIgKGlucHV0KT1cImZyb21EYXRlID0gdmFsaWRhdGVJbnB1dChmcm9tRGF0ZSwgZHBGcm9tRGF0ZS52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgcmVhZG9ubHkgLz5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIiAoY2xpY2spPVwiZGF0ZXBpY2tlci50b2dnbGUoKVwiIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwie3tjYWxlbmRhckljb25DbGFzc319XCI+PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgI2RwVG9EYXRlIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJ5eXl5L21tL2RkXCIgbmFtZT1cImRwVG9EYXRlXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtYXR0ZXIuZm9ybWF0KHRvRGF0ZSlcIiAoaW5wdXQpPVwidG9EYXRlID0gdmFsaWRhdGVJbnB1dCh0b0RhdGUsIGRwVG9EYXRlLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiByZWFkb25seSAvPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiIChjbGljayk9XCJkYXRlcGlja2VyLnRvZ2dsZSgpXCIgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ7e2NhbGVuZGFySWNvbkNsYXNzfX1cIj48L2k+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZm9ybT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY3VzdG9tRGF5IGxldC1kYXRlIGxldC1jdXJyZW50TW9udGg9XCJjdXJyZW50TW9udGhcIiBsZXQtc2VsZWN0ZWQ9XCJzZWxlY3RlZFwiIGxldC1kaXNhYmxlZD1cImRpc2FibGVkXCJcclxuICAgIGxldC1mb2N1c2VkPVwiZm9jdXNlZFwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGF5XCIgW2NsYXNzLndlZWtlbmRdPVwiaXNXZWVrZW5kKGRhdGUpXCIgW2NsYXNzLmZvY3VzZWRdPVwiZm9jdXNlZFwiXHJcbiAgICAgICAgW2NsYXNzLmhpZGRlbl09XCJkYXRlLm1vbnRoICE9PSBjdXJyZW50TW9udGhcIiBbY2xhc3MudGV4dC1tdXRlZF09XCJkaXNhYmxlZFwiIFtjbGFzcy5yYW5nZV09XCJpc1JhbmdlKGRhdGUpXCJcclxuICAgICAgICBbY2xhc3MuZmFkZWRdPVwiaXNIb3ZlcmVkKGRhdGUpIHx8IGlzSW5zaWRlKGRhdGUpXCIgKG1vdXNlZW50ZXIpPVwiaG92ZXJlZERhdGUgPSBkYXRlXCJcclxuICAgICAgICAobW91c2VsZWF2ZSk9XCJob3ZlcmVkRGF0ZSA9IG51bGxcIj5cclxuICAgICAgICB7eyBkYXRlLmRheSB9fVxyXG4gICAgPC9zcGFuPlxyXG4gICAgPCEtLSBbY2xhc3MuYmctcHJpbWFyeV09XCJzZWxlY3RlZFwiIC0tPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNmb290ZXJUZW1wbGF0ZT5cclxuICAgIDxzcGFuICpuZ0lmPVwiaXNGb290ZXJcIj5cclxuICAgICAgICA8aHIgY2xhc3M9XCJteS0wXCIgLz5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImZvb3RlclwiPlxyXG4gICAgICAgICAgICB7e2Zvb3Rlcn19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWZvb3RlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBtLTIgZmxvYXQtc3RhcnRcIiAoY2xpY2spPVwic2V0VG9kYXkoKTsgZGF0ZXBpY2tlci5jbG9zZSgpXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPnt7dG9kYXlMYWJlbH19PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBidG4tc20gbS0yIGZsb2F0LWVuZFwiIChjbGljayk9XCJkYXRlcGlja2VyLmNsb3NlKClcIj57e2Nsb3NlTGFiZWx9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -8,7 +8,7 @@ import * as i0 from "@angular/core";
8
8
  import * as i1 from "../services";
9
9
  import * as i2 from "@ng-bootstrap/ng-bootstrap";
10
10
  import * as i3 from "@angular/forms";
11
- class YsDatepickerRangePopupPersianComponent {
11
+ export class YsDatepickerRangePopupPersianComponent {
12
12
  get fromDate() { return this._fromDate; }
13
13
  set fromDate(value) {
14
14
  this._fromDate = value;
@@ -32,7 +32,7 @@ class YsDatepickerRangePopupPersianComponent {
32
32
  this.hoveredDate = null;
33
33
  this._fromDate = null;
34
34
  this._toDate = null;
35
- this.container = '';
35
+ this.container = null;
36
36
  this.firstDayOfWeek = 6;
37
37
  this.weekend = [5];
38
38
  this._language = LanguageType[LanguageType.fa];
@@ -40,6 +40,7 @@ class YsDatepickerRangePopupPersianComponent {
40
40
  this.closeLabel = "بستن";
41
41
  this.todayLabel = "امروز";
42
42
  this.footer = null;
43
+ this.calendarIconClass = "fa-solid fa-calendar-days";
43
44
  this.disabled = false;
44
45
  this.onChange = () => { };
45
46
  this.onTouched = () => { };
@@ -116,8 +117,8 @@ class YsDatepickerRangePopupPersianComponent {
116
117
  this.toDate = this.today;
117
118
  this.valueChanged();
118
119
  }
119
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: YsDatepickerRangePopupPersianComponent, deps: [{ token: i1.I18n }], target: i0.ɵɵFactoryTarget.Component }); }
120
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: YsDatepickerRangePopupPersianComponent, isStandalone: true, selector: "ys-datepicker-range-popup-persian", inputs: { container: "container", firstDayOfWeek: "firstDayOfWeek", weekend: "weekend", language: "language", isFooter: "isFooter", closeLabel: "closeLabel", todayLabel: "todayLabel", footer: "footer", disabled: "disabled" }, providers: [
120
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: YsDatepickerRangePopupPersianComponent, deps: [{ token: i1.I18n }], target: i0.ɵɵFactoryTarget.Component }); }
121
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: YsDatepickerRangePopupPersianComponent, isStandalone: true, selector: "ys-datepicker-range-popup-persian", inputs: { container: "container", firstDayOfWeek: "firstDayOfWeek", weekend: "weekend", language: "language", isFooter: "isFooter", closeLabel: "closeLabel", todayLabel: "todayLabel", footer: "footer", calendarIconClass: "calendarIconClass", disabled: "disabled" }, providers: [
121
122
  {
122
123
  provide: NG_VALUE_ACCESSOR,
123
124
  useExisting: forwardRef(() => YsDatepickerRangePopupPersianComponent),
@@ -127,10 +128,9 @@ class YsDatepickerRangePopupPersianComponent {
127
128
  { provide: NgbCalendar, useClass: NgbCalendarPersian },
128
129
  { provide: NgbDatepickerI18n, useClass: YsDatepickerI18nService },
129
130
  { provide: NgbDateParserFormatter, useClass: YsDateParserFormatterService }
130
- ], ngImport: i0, template: "<form class=\"row row-cols-sm-auto\">\r\n <div class=\"col-12\">\r\n <div class=\"dp-hidden position-absolute\">\r\n <div class=\"input-group\">\r\n <input name=\"datepicker\" class=\"form-control\" ngbDatepicker #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"'outside'\" (dateSelect)=\"onDateSelection($event)\" [displayMonths]=\"2\"\r\n [dayTemplate]=\"customDay\" outsideDays=\"hidden\" [startDate]=\"fromDate!\" tabindex=\"-1\"\r\n [container]=\"container\" [markDisabled]=\"markDisabled\" [disabled]=\"disabled\"\r\n [footerTemplate]=\"footerTemplate\" [firstDayOfWeek]=\"firstDayOfWeek\" />\r\n </div>\r\n </div>\r\n <div class=\"input-group\">\r\n <input #dpFromDate class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dpFromDate\"\r\n [value]=\"formatter.format(fromDate)\" (input)=\"fromDate = validateInput(fromDate, dpFromDate.value)\"\r\n [disabled]=\"disabled\" readonly />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"fa-solid fa-calendar-days\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"col-12\">\r\n <div class=\"input-group\">\r\n <input #dpToDate class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dpToDate\"\r\n [value]=\"formatter.format(toDate)\" (input)=\"toDate = validateInput(toDate, dpToDate.value)\"\r\n [disabled]=\"disabled\" readonly />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"fa-solid fa-calendar-days\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ng-template #customDay let-date let-currentMonth=\"currentMonth\" let-selected=\"selected\" let-disabled=\"disabled\"\r\n let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.weekend]=\"isWeekend(date)\" [class.focused]=\"focused\"\r\n [class.hidden]=\"date.month !== currentMonth\" [class.text-muted]=\"disabled\" [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\" (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\">\r\n {{ date.day }}\r\n </span>\r\n <!-- [class.bg-primary]=\"selected\" -->\r\n</ng-template>\r\n\r\n<ng-template #footerTemplate>\r\n <span *ngIf=\"isFooter\">\r\n <hr class=\"my-0\" />\r\n <span *ngIf=\"footer\">\r\n {{footer}}\r\n </span>\r\n <span *ngIf=\"!footer\">\r\n <button class=\"btn btn-primary btn-sm m-2 float-start\" (click)=\"setToday(); datepicker.close()\"\r\n [disabled]=\"disabled\">{{todayLabel}}</button>\r\n <button class=\"btn btn-secondary btn-sm m-2 float-end\" (click)=\"datepicker.close()\">{{closeLabel}}</button>\r\n </span>\r\n </span>\r\n</ng-template>", styles: ["::ng-deep html[dir=rtl] .ngb-dp-arrow-prev .ngb-dp-navigation-chevron{transform:rotate(45deg)}::ng-deep html[dir=rtl] .ngb-dp-arrow-next .ngb-dp-navigation-chevron{transform:rotate(-135deg)}::ng-deep html[dir=rtl] .form-select{background-position:left .75rem center}::ng-deep html[dir=rtl] .ngb-dp-month:first-child .ngb-dp-week{padding-right:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month:last-child .ngb-dp-week{padding-left:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-right:1rem}::ng-deep html[dir=rtl] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}::ng-deep html[dir=rtl] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-right:calc(var(--bs-border-width) * -1);border-top-left-radius:.375rem;border-bottom-left-radius:.375rem;border-top-right-radius:0;border-bottom-right-radius:0}::ng-deep .ngb-dp-day{display:flex;align-items:center}.custom-day{text-align:center;padding:.185rem .25rem;border-radius:.25rem;display:inline-block;width:2rem;height:2rem;line-height:1.7}.weekend{color:var(--bs-danger)}.dp-hidden{width:0;margin:0;border:none;padding:0}.custom-day.focused{background-color:var(--bs-gray-300)}.custom-day.range,.custom-day:hover{background-color:var(--bs-info);color:var(--bs-white)}.custom-day.faded{background-color:var(--bs-info);opacity:.5}\n"], dependencies: [{ kind: "ngmodule", type: NgbDatepickerModule }, { kind: "directive", type: i2.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
131
+ ], ngImport: i0, template: "<form class=\"row row-cols-sm-auto\">\r\n <div class=\"col-12\">\r\n <div class=\"dp-hidden position-absolute\">\r\n <div class=\"input-group\">\r\n <input name=\"datepicker\" class=\"form-control\" ngbDatepicker #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"'outside'\" (dateSelect)=\"onDateSelection($event)\" [displayMonths]=\"2\"\r\n [dayTemplate]=\"customDay\" outsideDays=\"hidden\" [startDate]=\"fromDate!\" tabindex=\"-1\"\r\n [container]=\"container\" [markDisabled]=\"markDisabled\" [disabled]=\"disabled\"\r\n [footerTemplate]=\"footerTemplate\" [firstDayOfWeek]=\"firstDayOfWeek\" />\r\n </div>\r\n </div>\r\n <div class=\"input-group\">\r\n <input #dpFromDate class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dpFromDate\"\r\n [value]=\"formatter.format(fromDate)\" (input)=\"fromDate = validateInput(fromDate, dpFromDate.value)\"\r\n [disabled]=\"disabled\" readonly />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"{{calendarIconClass}}\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"col-12\">\r\n <div class=\"input-group\">\r\n <input #dpToDate class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dpToDate\"\r\n [value]=\"formatter.format(toDate)\" (input)=\"toDate = validateInput(toDate, dpToDate.value)\"\r\n [disabled]=\"disabled\" readonly />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"{{calendarIconClass}}\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ng-template #customDay let-date let-currentMonth=\"currentMonth\" let-selected=\"selected\" let-disabled=\"disabled\"\r\n let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.weekend]=\"isWeekend(date)\" [class.focused]=\"focused\"\r\n [class.hidden]=\"date.month !== currentMonth\" [class.text-muted]=\"disabled\" [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\" (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\">\r\n {{ date.day }}\r\n </span>\r\n <!-- [class.bg-primary]=\"selected\" -->\r\n</ng-template>\r\n\r\n<ng-template #footerTemplate>\r\n <span *ngIf=\"isFooter\">\r\n <hr class=\"my-0\" />\r\n <span *ngIf=\"footer\">\r\n {{footer}}\r\n </span>\r\n <span *ngIf=\"!footer\">\r\n <button class=\"btn btn-primary btn-sm m-2 float-start\" (click)=\"setToday(); datepicker.close()\"\r\n [disabled]=\"disabled\">{{todayLabel}}</button>\r\n <button class=\"btn btn-secondary btn-sm m-2 float-end\" (click)=\"datepicker.close()\">{{closeLabel}}</button>\r\n </span>\r\n </span>\r\n</ng-template>", styles: ["::ng-deep html[dir=rtl] .ngb-dp-arrow-prev .ngb-dp-navigation-chevron{transform:rotate(45deg)}::ng-deep html[dir=rtl] .ngb-dp-arrow-next .ngb-dp-navigation-chevron{transform:rotate(-135deg)}::ng-deep html[dir=rtl] .form-select{background-position:left .75rem center}::ng-deep html[dir=rtl] .ngb-dp-month:first-child .ngb-dp-week{padding-right:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month:last-child .ngb-dp-week{padding-left:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-right:1rem}::ng-deep html[dir=rtl] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}::ng-deep html[dir=rtl] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-right:calc(var(--bs-border-width) * -1);border-top-left-radius:.375rem;border-bottom-left-radius:.375rem;border-top-right-radius:0;border-bottom-right-radius:0}::ng-deep .ngb-dp-day{display:flex;align-items:center}.custom-day{text-align:center;padding:.185rem .25rem;border-radius:.25rem;display:inline-block;width:2rem;height:2rem;line-height:1.7}.weekend{color:var(--bs-danger)}.dp-hidden{width:0;margin:0;border:none;padding:0}.custom-day.focused{background-color:var(--bs-gray-300)}.custom-day.range,.custom-day:hover{background-color:var(--bs-info);color:var(--bs-white)}.custom-day.faded{background-color:var(--bs-info);opacity:.5}\n"], dependencies: [{ kind: "ngmodule", type: NgbDatepickerModule }, { kind: "directive", type: i2.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
131
132
  }
132
- export { YsDatepickerRangePopupPersianComponent };
133
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: YsDatepickerRangePopupPersianComponent, decorators: [{
133
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: YsDatepickerRangePopupPersianComponent, decorators: [{
134
134
  type: Component,
135
135
  args: [{ selector: 'ys-datepicker-range-popup-persian', standalone: true, imports: [NgbDatepickerModule, FormsModule, JsonPipe, NgIf], providers: [
136
136
  {
@@ -142,8 +142,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
142
142
  { provide: NgbCalendar, useClass: NgbCalendarPersian },
143
143
  { provide: NgbDatepickerI18n, useClass: YsDatepickerI18nService },
144
144
  { provide: NgbDateParserFormatter, useClass: YsDateParserFormatterService }
145
- ], template: "<form class=\"row row-cols-sm-auto\">\r\n <div class=\"col-12\">\r\n <div class=\"dp-hidden position-absolute\">\r\n <div class=\"input-group\">\r\n <input name=\"datepicker\" class=\"form-control\" ngbDatepicker #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"'outside'\" (dateSelect)=\"onDateSelection($event)\" [displayMonths]=\"2\"\r\n [dayTemplate]=\"customDay\" outsideDays=\"hidden\" [startDate]=\"fromDate!\" tabindex=\"-1\"\r\n [container]=\"container\" [markDisabled]=\"markDisabled\" [disabled]=\"disabled\"\r\n [footerTemplate]=\"footerTemplate\" [firstDayOfWeek]=\"firstDayOfWeek\" />\r\n </div>\r\n </div>\r\n <div class=\"input-group\">\r\n <input #dpFromDate class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dpFromDate\"\r\n [value]=\"formatter.format(fromDate)\" (input)=\"fromDate = validateInput(fromDate, dpFromDate.value)\"\r\n [disabled]=\"disabled\" readonly />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"fa-solid fa-calendar-days\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"col-12\">\r\n <div class=\"input-group\">\r\n <input #dpToDate class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dpToDate\"\r\n [value]=\"formatter.format(toDate)\" (input)=\"toDate = validateInput(toDate, dpToDate.value)\"\r\n [disabled]=\"disabled\" readonly />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"fa-solid fa-calendar-days\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ng-template #customDay let-date let-currentMonth=\"currentMonth\" let-selected=\"selected\" let-disabled=\"disabled\"\r\n let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.weekend]=\"isWeekend(date)\" [class.focused]=\"focused\"\r\n [class.hidden]=\"date.month !== currentMonth\" [class.text-muted]=\"disabled\" [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\" (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\">\r\n {{ date.day }}\r\n </span>\r\n <!-- [class.bg-primary]=\"selected\" -->\r\n</ng-template>\r\n\r\n<ng-template #footerTemplate>\r\n <span *ngIf=\"isFooter\">\r\n <hr class=\"my-0\" />\r\n <span *ngIf=\"footer\">\r\n {{footer}}\r\n </span>\r\n <span *ngIf=\"!footer\">\r\n <button class=\"btn btn-primary btn-sm m-2 float-start\" (click)=\"setToday(); datepicker.close()\"\r\n [disabled]=\"disabled\">{{todayLabel}}</button>\r\n <button class=\"btn btn-secondary btn-sm m-2 float-end\" (click)=\"datepicker.close()\">{{closeLabel}}</button>\r\n </span>\r\n </span>\r\n</ng-template>", styles: ["::ng-deep html[dir=rtl] .ngb-dp-arrow-prev .ngb-dp-navigation-chevron{transform:rotate(45deg)}::ng-deep html[dir=rtl] .ngb-dp-arrow-next .ngb-dp-navigation-chevron{transform:rotate(-135deg)}::ng-deep html[dir=rtl] .form-select{background-position:left .75rem center}::ng-deep html[dir=rtl] .ngb-dp-month:first-child .ngb-dp-week{padding-right:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month:last-child .ngb-dp-week{padding-left:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-right:1rem}::ng-deep html[dir=rtl] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}::ng-deep html[dir=rtl] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-right:calc(var(--bs-border-width) * -1);border-top-left-radius:.375rem;border-bottom-left-radius:.375rem;border-top-right-radius:0;border-bottom-right-radius:0}::ng-deep .ngb-dp-day{display:flex;align-items:center}.custom-day{text-align:center;padding:.185rem .25rem;border-radius:.25rem;display:inline-block;width:2rem;height:2rem;line-height:1.7}.weekend{color:var(--bs-danger)}.dp-hidden{width:0;margin:0;border:none;padding:0}.custom-day.focused{background-color:var(--bs-gray-300)}.custom-day.range,.custom-day:hover{background-color:var(--bs-info);color:var(--bs-white)}.custom-day.faded{background-color:var(--bs-info);opacity:.5}\n"] }]
146
- }], ctorParameters: function () { return [{ type: i1.I18n }]; }, propDecorators: { container: [{
145
+ ], template: "<form class=\"row row-cols-sm-auto\">\r\n <div class=\"col-12\">\r\n <div class=\"dp-hidden position-absolute\">\r\n <div class=\"input-group\">\r\n <input name=\"datepicker\" class=\"form-control\" ngbDatepicker #datepicker=\"ngbDatepicker\"\r\n [autoClose]=\"'outside'\" (dateSelect)=\"onDateSelection($event)\" [displayMonths]=\"2\"\r\n [dayTemplate]=\"customDay\" outsideDays=\"hidden\" [startDate]=\"fromDate!\" tabindex=\"-1\"\r\n [container]=\"container\" [markDisabled]=\"markDisabled\" [disabled]=\"disabled\"\r\n [footerTemplate]=\"footerTemplate\" [firstDayOfWeek]=\"firstDayOfWeek\" />\r\n </div>\r\n </div>\r\n <div class=\"input-group\">\r\n <input #dpFromDate class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dpFromDate\"\r\n [value]=\"formatter.format(fromDate)\" (input)=\"fromDate = validateInput(fromDate, dpFromDate.value)\"\r\n [disabled]=\"disabled\" readonly />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"{{calendarIconClass}}\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"col-12\">\r\n <div class=\"input-group\">\r\n <input #dpToDate class=\"form-control\" placeholder=\"yyyy/mm/dd\" name=\"dpToDate\"\r\n [value]=\"formatter.format(toDate)\" (input)=\"toDate = validateInput(toDate, dpToDate.value)\"\r\n [disabled]=\"disabled\" readonly />\r\n <button class=\"btn btn-outline-secondary\" (click)=\"datepicker.toggle()\" type=\"button\">\r\n <i class=\"{{calendarIconClass}}\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n</form>\r\n\r\n<ng-template #customDay let-date let-currentMonth=\"currentMonth\" let-selected=\"selected\" let-disabled=\"disabled\"\r\n let-focused=\"focused\">\r\n <span class=\"custom-day\" [class.weekend]=\"isWeekend(date)\" [class.focused]=\"focused\"\r\n [class.hidden]=\"date.month !== currentMonth\" [class.text-muted]=\"disabled\" [class.range]=\"isRange(date)\"\r\n [class.faded]=\"isHovered(date) || isInside(date)\" (mouseenter)=\"hoveredDate = date\"\r\n (mouseleave)=\"hoveredDate = null\">\r\n {{ date.day }}\r\n </span>\r\n <!-- [class.bg-primary]=\"selected\" -->\r\n</ng-template>\r\n\r\n<ng-template #footerTemplate>\r\n <span *ngIf=\"isFooter\">\r\n <hr class=\"my-0\" />\r\n <span *ngIf=\"footer\">\r\n {{footer}}\r\n </span>\r\n <span *ngIf=\"!footer\">\r\n <button class=\"btn btn-primary btn-sm m-2 float-start\" (click)=\"setToday(); datepicker.close()\"\r\n [disabled]=\"disabled\">{{todayLabel}}</button>\r\n <button class=\"btn btn-secondary btn-sm m-2 float-end\" (click)=\"datepicker.close()\">{{closeLabel}}</button>\r\n </span>\r\n </span>\r\n</ng-template>", styles: ["::ng-deep html[dir=rtl] .ngb-dp-arrow-prev .ngb-dp-navigation-chevron{transform:rotate(45deg)}::ng-deep html[dir=rtl] .ngb-dp-arrow-next .ngb-dp-navigation-chevron{transform:rotate(-135deg)}::ng-deep html[dir=rtl] .form-select{background-position:left .75rem center}::ng-deep html[dir=rtl] .ngb-dp-month:first-child .ngb-dp-week{padding-right:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month:last-child .ngb-dp-week{padding-left:.25rem}::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,::ng-deep html[dir=rtl] .ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-right:1rem}::ng-deep html[dir=rtl] .input-group:not(.has-validation)>:not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.dropdown-toggle:nth-last-child(n+3),::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-control,::ng-deep html[dir=rtl] .input-group:not(.has-validation)>.form-floating:not(:last-child)>.form-select{border-top-left-radius:0;border-bottom-left-radius:0;border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}::ng-deep html[dir=rtl] .input-group>:not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback){margin-right:calc(var(--bs-border-width) * -1);border-top-left-radius:.375rem;border-bottom-left-radius:.375rem;border-top-right-radius:0;border-bottom-right-radius:0}::ng-deep .ngb-dp-day{display:flex;align-items:center}.custom-day{text-align:center;padding:.185rem .25rem;border-radius:.25rem;display:inline-block;width:2rem;height:2rem;line-height:1.7}.weekend{color:var(--bs-danger)}.dp-hidden{width:0;margin:0;border:none;padding:0}.custom-day.focused{background-color:var(--bs-gray-300)}.custom-day.range,.custom-day:hover{background-color:var(--bs-info);color:var(--bs-white)}.custom-day.faded{background-color:var(--bs-info);opacity:.5}\n"] }]
146
+ }], ctorParameters: () => [{ type: i1.I18n }], propDecorators: { container: [{
147
147
  type: Input
148
148
  }], firstDayOfWeek: [{
149
149
  type: Input
@@ -159,7 +159,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
159
159
  type: Input
160
160
  }], footer: [{
161
161
  type: Input
162
+ }], calendarIconClass: [{
163
+ type: Input
162
164
  }], disabled: [{
163
165
  type: Input
164
166
  }] } });
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXMtZGF0ZXBpY2tlci1yYW5nZS1wb3B1cC1wZXJzaWFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3lvb3pzb2Z0L3lvb3pzb2Z0LW5nL2RhdGVwaWNrZXIvc3JjL3lzLWRhdGVwaWNrZXItcmFuZ2UtcG9wdXAtcGVyc2lhbi95cy1kYXRlcGlja2VyLXJhbmdlLXBvcHVwLXBlcnNpYW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveW9venNvZnQveW9venNvZnQtbmcvZGF0ZXBpY2tlci9zcmMveXMtZGF0ZXBpY2tlci1yYW5nZS1wb3B1cC1wZXJzaWFuL3lzLWRhdGVwaWNrZXItcmFuZ2UtcG9wdXAtcGVyc2lhbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFlLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RKLE9BQU8sRUFBYSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEQsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsNEJBQTRCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7O0FBRXhHLE1Ba0JhLHNDQUFzQztJQVVqRCxJQUFJLFFBQVEsS0FBcUIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUN6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QkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEpzb25QaXBlLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVGVtcGxhdGVSZWYsIGZvcndhcmRSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybXNNb2R1bGUsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBOZ2JDYWxlbmRhciwgTmdiQ2FsZW5kYXJQZXJzaWFuLCBOZ2JEYXRlLCBOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyLCBOZ2JEYXRlcGlja2VySTE4biwgTmdiRGF0ZXBpY2tlck1vZHVsZSB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgRGF0ZVJhbmdlLCBKYWxhbGlEYXRlIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgSTE4biwgTGFuZ3VhZ2VUeXBlLCBZc0RhdGVQYXJzZXJGb3JtYXR0ZXJTZXJ2aWNlLCBZc0RhdGVwaWNrZXJJMThuU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAneXMtZGF0ZXBpY2tlci1yYW5nZS1wb3B1cC1wZXJzaWFuJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtOZ2JEYXRlcGlja2VyTW9kdWxlLCBGb3Jtc01vZHVsZSwgSnNvblBpcGUsIE5nSWZdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi95cy1kYXRlcGlja2VyLXJhbmdlLXBvcHVwLXBlcnNpYW4uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3lzLWRhdGVwaWNrZXItcmFuZ2UtcG9wdXAtcGVyc2lhbi5jb21wb25lbnQuc2NzcyddLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gWXNEYXRlcGlja2VyUmFuZ2VQb3B1cFBlcnNpYW5Db21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZVxyXG4gICAgfSxcclxuICAgIEkxOG4sXHJcbiAgICB7IHByb3ZpZGU6IE5nYkNhbGVuZGFyLCB1c2VDbGFzczogTmdiQ2FsZW5kYXJQZXJzaWFuIH0sXHJcbiAgICB7IHByb3ZpZGU6IE5nYkRhdGVwaWNrZXJJMThuLCB1c2VDbGFzczogWXNEYXRlcGlja2VySTE4blNlcnZpY2UgfSxcclxuICAgIHsgcHJvdmlkZTogTmdiRGF0ZVBhcnNlckZvcm1hdHRlciwgdXNlQ2xhc3M6IFlzRGF0ZVBhcnNlckZvcm1hdHRlclNlcnZpY2UgfVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIFlzRGF0ZXBpY2tlclJhbmdlUG9wdXBQZXJzaWFuQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuICBjYWxlbmRhciA9IGluamVjdChOZ2JDYWxlbmRhcik7XHJcbiAgZm9ybWF0dGVyID0gaW5qZWN0KE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIpO1xyXG4gIHRvZGF5ID0gaW5qZWN0KE5nYkNhbGVuZGFyKS5nZXRUb2RheSgpO1xyXG5cclxuICBkYXRlPzogeyB5ZWFyOiBudW1iZXI7IG1vbnRoOiBudW1iZXIgfTtcclxuXHJcbiAgaG92ZXJlZERhdGU6IE5nYkRhdGUgfCBudWxsID0gbnVsbDtcclxuICBfZnJvbURhdGU6IE5nYkRhdGUgfCBudWxsID0gbnVsbDtcclxuICBnZXQgZnJvbURhdGUoKTogTmdiRGF0ZSB8IG51bGwgeyByZXR1cm4gdGhpcy5fZnJvbURhdGU7IH1cclxuICBzZXQgZnJvbURhdGUodmFsdWU6IE5nYkRhdGUgfCBudWxsKSB7XHJcbiAgICB0aGlzLl9mcm9tRGF0ZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgX3RvRGF0ZTogTmdiRGF0ZSB8IG51bGwgPSBudWxsO1xyXG4gIGdldCB0b0RhdGUoKTogTmdiRGF0ZSB8IG51bGwgeyByZXR1cm4gdGhpcy5fdG9EYXRlOyB9XHJcbiAgc2V0IHRvRGF0ZSh2YWx1ZTogTmdiRGF0ZSB8IG51bGwpIHtcclxuICAgIHRoaXMuX3RvRGF0ZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgY29udGFpbmVyOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBmaXJzdERheU9mV2VlazogbnVtYmVyID0gNjtcclxuICBASW5wdXQoKSB3ZWVrZW5kOiBudW1iZXJbXSA9IFs1XTtcclxuICBwcml2YXRlIF9sYW5ndWFnZTogc3RyaW5nID0gTGFuZ3VhZ2VUeXBlW0xhbmd1YWdlVHlwZS5mYV07XHJcbiAgQElucHV0KClcclxuICBnZXQgbGFuZ3VhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9sYW5ndWFnZTtcclxuICB9XHJcbiAgc2V0IGxhbmd1YWdlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2xhbmd1YWdlID0gdmFsdWU7XHJcbiAgICB0aGlzLmkxOE4ubGFuZ3VhZ2UgPSB0aGlzLl9sYW5ndWFnZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGlzRm9vdGVyOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjbG9zZUxhYmVsOiBzdHJpbmcgPSBcItio2LPYqtmGXCI7XHJcbiAgQElucHV0KCkgdG9kYXlMYWJlbDogc3RyaW5nID0gXCLYp9mF2LHZiNiyXCI7XHJcbiAgQElucHV0KCkgZm9vdGVyOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHsgfTtcclxuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHsgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpMThOOiBJMThuKSB7XHJcbiAgICB0aGlzLmxhbmd1YWdlID0gTGFuZ3VhZ2VUeXBlW0xhbmd1YWdlVHlwZS5mYV07XHJcbiAgfVxyXG5cclxuICB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoIW9iaikge1xyXG4gICAgICB0aGlzLmZyb21EYXRlID0gbnVsbDtcclxuICAgICAgdGhpcy50b0RhdGUgPSBudWxsO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdmFyIGZEYXRlOiBEYXRlID0gb2JqLmZyb21EYXRlO1xyXG4gICAgbGV0IHBlcnNpYW5EYXRlOiBudW1iZXJbXSA9IEphbGFsaURhdGUuZ3JlZ29yaWFuVG9KYWxhbGkoZkRhdGUuZ2V0RnVsbFllYXIoKSwgZkRhdGUuZ2V0TW9udGgoKSArIDEsIGZEYXRlLmdldERhdGUoKSk7XHJcbiAgICB0aGlzLmZyb21EYXRlID0gPE5nYkRhdGU+eyB5ZWFyOiBwZXJzaWFuRGF0ZVswXSwgbW9udGg6IHBlcnNpYW5EYXRlWzFdLCBkYXk6IHBlcnNpYW5EYXRlWzJdIH07XHJcblxyXG4gICAgdmFyIHREYXRlOiBEYXRlID0gb2JqLnRvRGF0ZTtcclxuICAgIHBlcnNpYW5EYXRlID0gSmFsYWxpRGF0ZS5ncmVnb3JpYW5Ub0phbGFsaSh0RGF0ZS5nZXRGdWxsWWVhcigpLCB0RGF0ZS5nZXRNb250aCgpICsgMSwgdERhdGUuZ2V0RGF0ZSgpKTtcclxuICAgIHRoaXMudG9EYXRlID0gPE5nYkRhdGU+eyB5ZWFyOiBwZXJzaWFuRGF0ZVswXSwgbW9udGg6IHBlcnNpYW5EYXRlWzFdLCBkYXk6IHBlcnNpYW5EYXRlWzJdIH07XHJcbiAgfVxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIG9uRGF0ZVNlbGVjdGlvbihkYXRlOiBOZ2JEYXRlKSB7XHJcbiAgICBpZiAoIXRoaXMuZnJvbURhdGUgJiYgIXRoaXMudG9EYXRlKSB7XHJcbiAgICAgIHRoaXMuZnJvbURhdGUgPSBkYXRlO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLmZyb21EYXRlICYmICF0aGlzLnRvRGF0ZSAmJiBkYXRlICYmIGRhdGUuYWZ0ZXIodGhpcy5mcm9tRGF0ZSkpIHtcclxuICAgICAgdGhpcy50b0RhdGUgPSBkYXRlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50b0RhdGUgPSBudWxsO1xyXG4gICAgICB0aGlzLmZyb21EYXRlID0gZGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlZCgpO1xyXG4gIH1cclxuXHJcbiAgaXNIb3ZlcmVkKGRhdGU6IE5nYkRhdGUpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZnJvbURhdGUgJiYgIXRoaXMudG9EYXRlICYmIHRoaXMuaG92ZXJlZERhdGUgJiYgZGF0ZS5hZnRlcih0aGlzLmZyb21EYXRlKSAmJiBkYXRlLmJlZm9yZSh0aGlzLmhvdmVyZWREYXRlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGlzSW5zaWRlKGRhdGU6IE5nYkRhdGUpIHtcclxuICAgIHJldHVybiB0aGlzLnRvRGF0ZSAmJiBkYXRlLmFmdGVyKHRoaXMuZnJvbURhdGUpICYmIGRhdGUuYmVmb3JlKHRoaXMudG9EYXRlKTtcclxuICB9XHJcblxyXG4gIGlzUmFuZ2UoZGF0ZTogTmdiRGF0ZSkge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgZGF0ZS5lcXVhbHModGhpcy5mcm9tRGF0ZSkgfHxcclxuICAgICAgKHRoaXMudG9EYXRlICYmIGRhdGUuZXF1YWxzKHRoaXMudG9EYXRlKSkgfHxcclxuICAgICAgdGhpcy5pc0luc2lkZShkYXRlKSB8fFxyXG4gICAgICB0aGlzLmlzSG92ZXJlZChkYXRlKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG1hcmtEaXNhYmxlZCA9IChkYXRlOiBOZ2JEYXRlLCBjdXJyZW50PzogeyBtb250aDogbnVtYmVyOyB5ZWFyOiBudW1iZXIgfSkgPT4gZGF0ZS5tb250aCAhPT0gY3VycmVudD8ubW9udGg7XHJcbiAgaXNXZWVrZW5kID0gKGRhdGU6IE5nYkRhdGUpID0+IHRoaXMud2Vla2VuZC5pbmNsdWRlcyh0aGlzLmNhbGVuZGFyLmdldFdlZWtkYXkoZGF0ZSkpO1xyXG5cclxuICB2YWxpZGF0ZUlucHV0KGN1cnJlbnRWYWx1ZTogTmdiRGF0ZSB8IG51bGwsIGlucHV0OiBzdHJpbmcpOiBOZ2JEYXRlIHwgbnVsbCB7XHJcbiAgICBjb25zdCBwYXJzZWQgPSB0aGlzLmZvcm1hdHRlci5wYXJzZShpbnB1dCk7XHJcbiAgICByZXR1cm4gcGFyc2VkICYmIHRoaXMuY2FsZW5kYXIuaXNWYWxpZChOZ2JEYXRlLmZyb20ocGFyc2VkKSkgPyBOZ2JEYXRlLmZyb20ocGFyc2VkKSA6IGN1cnJlbnRWYWx1ZTtcclxuICB9XHJcblxyXG4gIHZhbHVlQ2hhbmdlZCgpIHtcclxuICAgIGxldCByYW5nZSA9IDxEYXRlUmFuZ2U+eyBmcm9tRGF0ZTogbnVsbCwgdG9EYXRlOiBudWxsIH07XHJcblxyXG4gICAgaWYgKHRoaXMuZnJvbURhdGUpIHtcclxuICAgICAgbGV0IGZyb21EYXRlQ29udmVydGVkOiBudW1iZXJbXSA9IEphbGFsaURhdGUuamFsYWxpVG9HcmVnb3JpYW4odGhpcy5mcm9tRGF0ZS55ZWFyLCB0aGlzLmZyb21EYXRlLm1vbnRoLCB0aGlzLmZyb21EYXRlLmRheSk7XHJcbiAgICAgIHJhbmdlLmZyb21EYXRlID0gbmV3IERhdGUoZnJvbURhdGVDb252ZXJ0ZWRbMF0sIGZyb21EYXRlQ29udmVydGVkWzFdIC0gMSwgZnJvbURhdGVDb252ZXJ0ZWRbMl0pO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnRvRGF0ZSkge1xyXG4gICAgICBsZXQgdG9EYXRlQ29udmVydGVkOiBudW1iZXJbXSA9IEphbGFsaURhdGUuamFsYWxpVG9HcmVnb3JpYW4odGhpcy50b0RhdGUueWVhciwgdGhpcy50b0RhdGUubW9udGgsIHRoaXMudG9EYXRlLmRheSk7XHJcbiAgICAgIHJhbmdlLnRvRGF0ZSA9IG5ldyBEYXRlKHRvRGF0ZUNvbnZlcnRlZFswXSwgdG9EYXRlQ29udmVydGVkWzFdIC0gMSwgdG9EYXRlQ29udmVydGVkWzJdKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9uQ2hhbmdlKHJhbmdlKTtcclxuICAgIHRoaXMub25Ub3VjaGVkKHJhbmdlKVxyXG4gIH1cclxuXHJcbiAgc2V0VG9kYXkoKSB7XHJcbiAgICB0aGlzLmZyb21EYXRlID0gdGhpcy50b2RheTtcclxuICAgIHRoaXMudG9EYXRlID0gdGhpcy50b2RheTtcclxuICAgIHRoaXMudmFsdWVDaGFuZ2VkKCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8Zm9ybSBjbGFzcz1cInJvdyByb3ctY29scy1zbS1hdXRvXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRwLWhpZGRlbiBwb3NpdGlvbi1hYnNvbHV0ZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiZGF0ZXBpY2tlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmdiRGF0ZXBpY2tlciAjZGF0ZXBpY2tlcj1cIm5nYkRhdGVwaWNrZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCIgKGRhdGVTZWxlY3QpPVwib25EYXRlU2VsZWN0aW9uKCRldmVudClcIiBbZGlzcGxheU1vbnRoc109XCIyXCJcclxuICAgICAgICAgICAgICAgICAgICBbZGF5VGVtcGxhdGVdPVwiY3VzdG9tRGF5XCIgb3V0c2lkZURheXM9XCJoaWRkZW5cIiBbc3RhcnREYXRlXT1cImZyb21EYXRlIVwiIHRhYmluZGV4PVwiLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjb250YWluZXJdPVwiY29udGFpbmVyXCIgW21hcmtEaXNhYmxlZF09XCJtYXJrRGlzYWJsZWRcIiBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb290ZXJUZW1wbGF0ZV09XCJmb290ZXJUZW1wbGF0ZVwiIFtmaXJzdERheU9mV2Vla109XCJmaXJzdERheU9mV2Vla1wiIC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgI2RwRnJvbURhdGUgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBwbGFjZWhvbGRlcj1cInl5eXkvbW0vZGRcIiBuYW1lPVwiZHBGcm9tRGF0ZVwiXHJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZm9ybWF0dGVyLmZvcm1hdChmcm9tRGF0ZSlcIiAoaW5wdXQpPVwiZnJvbURhdGUgPSB2YWxpZGF0ZUlucHV0KGZyb21EYXRlLCBkcEZyb21EYXRlLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiByZWFkb25seSAvPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiIChjbGljayk9XCJkYXRlcGlja2VyLnRvZ2dsZSgpXCIgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1jYWxlbmRhci1kYXlzXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgI2RwVG9EYXRlIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJ5eXl5L21tL2RkXCIgbmFtZT1cImRwVG9EYXRlXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtYXR0ZXIuZm9ybWF0KHRvRGF0ZSlcIiAoaW5wdXQpPVwidG9EYXRlID0gdmFsaWRhdGVJbnB1dCh0b0RhdGUsIGRwVG9EYXRlLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiByZWFkb25seSAvPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiIChjbGljayk9XCJkYXRlcGlja2VyLnRvZ2dsZSgpXCIgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYS1zb2xpZCBmYS1jYWxlbmRhci1kYXlzXCI+PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Zvcm0+XHJcblxyXG48bmctdGVtcGxhdGUgI2N1c3RvbURheSBsZXQtZGF0ZSBsZXQtY3VycmVudE1vbnRoPVwiY3VycmVudE1vbnRoXCIgbGV0LXNlbGVjdGVkPVwic2VsZWN0ZWRcIiBsZXQtZGlzYWJsZWQ9XCJkaXNhYmxlZFwiXHJcbiAgICBsZXQtZm9jdXNlZD1cImZvY3VzZWRcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3VzdG9tLWRheVwiIFtjbGFzcy53ZWVrZW5kXT1cImlzV2Vla2VuZChkYXRlKVwiIFtjbGFzcy5mb2N1c2VkXT1cImZvY3VzZWRcIlxyXG4gICAgICAgIFtjbGFzcy5oaWRkZW5dPVwiZGF0ZS5tb250aCAhPT0gY3VycmVudE1vbnRoXCIgW2NsYXNzLnRleHQtbXV0ZWRdPVwiZGlzYWJsZWRcIiBbY2xhc3MucmFuZ2VdPVwiaXNSYW5nZShkYXRlKVwiXHJcbiAgICAgICAgW2NsYXNzLmZhZGVkXT1cImlzSG92ZXJlZChkYXRlKSB8fCBpc0luc2lkZShkYXRlKVwiIChtb3VzZWVudGVyKT1cImhvdmVyZWREYXRlID0gZGF0ZVwiXHJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwiaG92ZXJlZERhdGUgPSBudWxsXCI+XHJcbiAgICAgICAge3sgZGF0ZS5kYXkgfX1cclxuICAgIDwvc3Bhbj5cclxuICAgIDwhLS0gW2NsYXNzLmJnLXByaW1hcnldPVwic2VsZWN0ZWRcIiAtLT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjZm9vdGVyVGVtcGxhdGU+XHJcbiAgICA8c3BhbiAqbmdJZj1cImlzRm9vdGVyXCI+XHJcbiAgICAgICAgPGhyIGNsYXNzPVwibXktMFwiIC8+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJmb290ZXJcIj5cclxuICAgICAgICAgICAge3tmb290ZXJ9fVxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFmb290ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gbS0yIGZsb2F0LXN0YXJ0XCIgKGNsaWNrKT1cInNldFRvZGF5KCk7IGRhdGVwaWNrZXIuY2xvc2UoKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj57e3RvZGF5TGFiZWx9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnkgYnRuLXNtIG0tMiBmbG9hdC1lbmRcIiAoY2xpY2spPVwiZGF0ZXBpY2tlci5jbG9zZSgpXCI+e3tjbG9zZUxhYmVsfX08L2J1dHRvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L3NwYW4+XHJcbjwvbmctdGVtcGxhdGU+Il19
167
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXMtZGF0ZXBpY2tlci1yYW5nZS1wb3B1cC1wZXJzaWFuLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3lvb3pzb2Z0L3lvb3pzb2Z0LW5nL2RhdGVwaWNrZXIvc3JjL3lzLWRhdGVwaWNrZXItcmFuZ2UtcG9wdXAtcGVyc2lhbi95cy1kYXRlcGlja2VyLXJhbmdlLXBvcHVwLXBlcnNpYW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveW9venNvZnQveW9venNvZnQtbmcvZGF0ZXBpY2tlci9zcmMveXMtZGF0ZXBpY2tlci1yYW5nZS1wb3B1cC1wZXJzaWFuL3lzLWRhdGVwaWNrZXItcmFuZ2UtcG9wdXAtcGVyc2lhbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFlLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RixPQUFPLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RKLE9BQU8sRUFBYSxVQUFVLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEQsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsNEJBQTRCLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxhQUFhLENBQUM7Ozs7O0FBb0J4RyxNQUFNLE9BQU8sc0NBQXNDO0lBVWpELElBQUksUUFBUSxLQUFxQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFD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QUFLO2dCQUdGLFFBQVE7c0JBRFgsS0FBSztnQkFTRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKc29uUGlwZSwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBmb3J3YXJkUmVmLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmdiQ2FsZW5kYXIsIE5nYkNhbGVuZGFyUGVyc2lhbiwgTmdiRGF0ZSwgTmdiRGF0ZVBhcnNlckZvcm1hdHRlciwgTmdiRGF0ZXBpY2tlckkxOG4sIE5nYkRhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IERhdGVSYW5nZSwgSmFsYWxpRGF0ZSB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IEkxOG4sIExhbmd1YWdlVHlwZSwgWXNEYXRlUGFyc2VyRm9ybWF0dGVyU2VydmljZSwgWXNEYXRlcGlja2VySTE4blNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3lzLWRhdGVwaWNrZXItcmFuZ2UtcG9wdXAtcGVyc2lhbicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbTmdiRGF0ZXBpY2tlck1vZHVsZSwgRm9ybXNNb2R1bGUsIEpzb25QaXBlLCBOZ0lmXSxcclxuICB0ZW1wbGF0ZVVybDogJy4veXMtZGF0ZXBpY2tlci1yYW5nZS1wb3B1cC1wZXJzaWFuLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi95cy1kYXRlcGlja2VyLXJhbmdlLXBvcHVwLXBlcnNpYW4uY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFlzRGF0ZXBpY2tlclJhbmdlUG9wdXBQZXJzaWFuQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWVcclxuICAgIH0sXHJcbiAgICBJMThuLFxyXG4gICAgeyBwcm92aWRlOiBOZ2JDYWxlbmRhciwgdXNlQ2xhc3M6IE5nYkNhbGVuZGFyUGVyc2lhbiB9LFxyXG4gICAgeyBwcm92aWRlOiBOZ2JEYXRlcGlja2VySTE4biwgdXNlQ2xhc3M6IFlzRGF0ZXBpY2tlckkxOG5TZXJ2aWNlIH0sXHJcbiAgICB7IHByb3ZpZGU6IE5nYkRhdGVQYXJzZXJGb3JtYXR0ZXIsIHVzZUNsYXNzOiBZc0RhdGVQYXJzZXJGb3JtYXR0ZXJTZXJ2aWNlIH1cclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBZc0RhdGVwaWNrZXJSYW5nZVBvcHVwUGVyc2lhbkNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcbiAgY2FsZW5kYXIgPSBpbmplY3QoTmdiQ2FsZW5kYXIpO1xyXG4gIGZvcm1hdHRlciA9IGluamVjdChOZ2JEYXRlUGFyc2VyRm9ybWF0dGVyKTtcclxuICB0b2RheSA9IGluamVjdChOZ2JDYWxlbmRhcikuZ2V0VG9kYXkoKTtcclxuXHJcbiAgZGF0ZT86IHsgeWVhcjogbnVtYmVyOyBtb250aDogbnVtYmVyIH07XHJcblxyXG4gIGhvdmVyZWREYXRlOiBOZ2JEYXRlIHwgbnVsbCA9IG51bGw7XHJcbiAgX2Zyb21EYXRlOiBOZ2JEYXRlIHwgbnVsbCA9IG51bGw7XHJcbiAgZ2V0IGZyb21EYXRlKCk6IE5nYkRhdGUgfCBudWxsIHsgcmV0dXJuIHRoaXMuX2Zyb21EYXRlOyB9XHJcbiAgc2V0IGZyb21EYXRlKHZhbHVlOiBOZ2JEYXRlIHwgbnVsbCkge1xyXG4gICAgdGhpcy5fZnJvbURhdGUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIF90b0RhdGU6IE5nYkRhdGUgfCBudWxsID0gbnVsbDtcclxuICBnZXQgdG9EYXRlKCk6IE5nYkRhdGUgfCBudWxsIHsgcmV0dXJuIHRoaXMuX3RvRGF0ZTsgfVxyXG4gIHNldCB0b0RhdGUodmFsdWU6IE5nYkRhdGUgfCBudWxsKSB7XHJcbiAgICB0aGlzLl90b0RhdGUgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGNvbnRhaW5lcjogXCJib2R5XCIgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBmaXJzdERheU9mV2VlazogbnVtYmVyID0gNjtcclxuICBASW5wdXQoKSB3ZWVrZW5kOiBudW1iZXJbXSA9IFs1XTtcclxuICBwcml2YXRlIF9sYW5ndWFnZTogc3RyaW5nID0gTGFuZ3VhZ2VUeXBlW0xhbmd1YWdlVHlwZS5mYV07XHJcbiAgQElucHV0KClcclxuICBnZXQgbGFuZ3VhZ2UoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9sYW5ndWFnZTtcclxuICB9XHJcbiAgc2V0IGxhbmd1YWdlKHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuX2xhbmd1YWdlID0gdmFsdWU7XHJcbiAgICB0aGlzLmkxOE4ubGFuZ3VhZ2UgPSB0aGlzLl9sYW5ndWFnZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGlzRm9vdGVyOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBjbG9zZUxhYmVsOiBzdHJpbmcgPSBcItio2LPYqtmGXCI7XHJcbiAgQElucHV0KCkgdG9kYXlMYWJlbDogc3RyaW5nID0gXCLYp9mF2LHZiNiyXCI7XHJcbiAgQElucHV0KCkgZm9vdGVyOiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgY2FsZW5kYXJJY29uQ2xhc3M6IHN0cmluZyA9IFwiZmEtc29saWQgZmEtY2FsZW5kYXItZGF5c1wiO1xyXG5cclxuICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7IH07XHJcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7IH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaTE4TjogSTE4bikge1xyXG4gICAgdGhpcy5sYW5ndWFnZSA9IExhbmd1YWdlVHlwZVtMYW5ndWFnZVR5cGUuZmFdO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKCFvYmopIHtcclxuICAgICAgdGhpcy5mcm9tRGF0ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMudG9EYXRlID0gbnVsbDtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBmRGF0ZTogRGF0ZSA9IG9iai5mcm9tRGF0ZTtcclxuICAgIGxldCBwZXJzaWFuRGF0ZTogbnVtYmVyW10gPSBKYWxhbGlEYXRlLmdyZWdvcmlhblRvSmFsYWxpKGZEYXRlLmdldEZ1bGxZZWFyKCksIGZEYXRlLmdldE1vbnRoKCkgKyAxLCBmRGF0ZS5nZXREYXRlKCkpO1xyXG4gICAgdGhpcy5mcm9tRGF0ZSA9IDxOZ2JEYXRlPnsgeWVhcjogcGVyc2lhbkRhdGVbMF0sIG1vbnRoOiBwZXJzaWFuRGF0ZVsxXSwgZGF5OiBwZXJzaWFuRGF0ZVsyXSB9O1xyXG5cclxuICAgIHZhciB0RGF0ZTogRGF0ZSA9IG9iai50b0RhdGU7XHJcbiAgICBwZXJzaWFuRGF0ZSA9IEphbGFsaURhdGUuZ3JlZ29yaWFuVG9KYWxhbGkodERhdGUuZ2V0RnVsbFllYXIoKSwgdERhdGUuZ2V0TW9udGgoKSArIDEsIHREYXRlLmdldERhdGUoKSk7XHJcbiAgICB0aGlzLnRvRGF0ZSA9IDxOZ2JEYXRlPnsgeWVhcjogcGVyc2lhbkRhdGVbMF0sIG1vbnRoOiBwZXJzaWFuRGF0ZVsxXSwgZGF5OiBwZXJzaWFuRGF0ZVsyXSB9O1xyXG4gIH1cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcbiAgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBvbkRhdGVTZWxlY3Rpb24oZGF0ZTogTmdiRGF0ZSkge1xyXG4gICAgaWYgKCF0aGlzLmZyb21EYXRlICYmICF0aGlzLnRvRGF0ZSkge1xyXG4gICAgICB0aGlzLmZyb21EYXRlID0gZGF0ZTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5mcm9tRGF0ZSAmJiAhdGhpcy50b0RhdGUgJiYgZGF0ZSAmJiBkYXRlLmFmdGVyKHRoaXMuZnJvbURhdGUpKSB7XHJcbiAgICAgIHRoaXMudG9EYXRlID0gZGF0ZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudG9EYXRlID0gbnVsbDtcclxuICAgICAgdGhpcy5mcm9tRGF0ZSA9IGRhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy52YWx1ZUNoYW5nZWQoKTtcclxuICB9XHJcblxyXG4gIGlzSG92ZXJlZChkYXRlOiBOZ2JEYXRlKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLmZyb21EYXRlICYmICF0aGlzLnRvRGF0ZSAmJiB0aGlzLmhvdmVyZWREYXRlICYmIGRhdGUuYWZ0ZXIodGhpcy5mcm9tRGF0ZSkgJiYgZGF0ZS5iZWZvcmUodGhpcy5ob3ZlcmVkRGF0ZSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBpc0luc2lkZShkYXRlOiBOZ2JEYXRlKSB7XHJcbiAgICByZXR1cm4gdGhpcy50b0RhdGUgJiYgZGF0ZS5hZnRlcih0aGlzLmZyb21EYXRlKSAmJiBkYXRlLmJlZm9yZSh0aGlzLnRvRGF0ZSk7XHJcbiAgfVxyXG5cclxuICBpc1JhbmdlKGRhdGU6IE5nYkRhdGUpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIGRhdGUuZXF1YWxzKHRoaXMuZnJvbURhdGUpIHx8XHJcbiAgICAgICh0aGlzLnRvRGF0ZSAmJiBkYXRlLmVxdWFscyh0aGlzLnRvRGF0ZSkpIHx8XHJcbiAgICAgIHRoaXMuaXNJbnNpZGUoZGF0ZSkgfHxcclxuICAgICAgdGhpcy5pc0hvdmVyZWQoZGF0ZSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBtYXJrRGlzYWJsZWQgPSAoZGF0ZTogTmdiRGF0ZSwgY3VycmVudD86IHsgbW9udGg6IG51bWJlcjsgeWVhcjogbnVtYmVyIH0pID0+IGRhdGUubW9udGggIT09IGN1cnJlbnQ/Lm1vbnRoO1xyXG4gIGlzV2Vla2VuZCA9IChkYXRlOiBOZ2JEYXRlKSA9PiB0aGlzLndlZWtlbmQuaW5jbHVkZXModGhpcy5jYWxlbmRhci5nZXRXZWVrZGF5KGRhdGUpKTtcclxuXHJcbiAgdmFsaWRhdGVJbnB1dChjdXJyZW50VmFsdWU6IE5nYkRhdGUgfCBudWxsLCBpbnB1dDogc3RyaW5nKTogTmdiRGF0ZSB8IG51bGwge1xyXG4gICAgY29uc3QgcGFyc2VkID0gdGhpcy5mb3JtYXR0ZXIucGFyc2UoaW5wdXQpO1xyXG4gICAgcmV0dXJuIHBhcnNlZCAmJiB0aGlzLmNhbGVuZGFyLmlzVmFsaWQoTmdiRGF0ZS5mcm9tKHBhcnNlZCkpID8gTmdiRGF0ZS5mcm9tKHBhcnNlZCkgOiBjdXJyZW50VmFsdWU7XHJcbiAgfVxyXG5cclxuICB2YWx1ZUNoYW5nZWQoKSB7XHJcbiAgICBsZXQgcmFuZ2UgPSA8RGF0ZVJhbmdlPnsgZnJvbURhdGU6IG51bGwsIHRvRGF0ZTogbnVsbCB9O1xyXG5cclxuICAgIGlmICh0aGlzLmZyb21EYXRlKSB7XHJcbiAgICAgIGxldCBmcm9tRGF0ZUNvbnZlcnRlZDogbnVtYmVyW10gPSBKYWxhbGlEYXRlLmphbGFsaVRvR3JlZ29yaWFuKHRoaXMuZnJvbURhdGUueWVhciwgdGhpcy5mcm9tRGF0ZS5tb250aCwgdGhpcy5mcm9tRGF0ZS5kYXkpO1xyXG4gICAgICByYW5nZS5mcm9tRGF0ZSA9IG5ldyBEYXRlKGZyb21EYXRlQ29udmVydGVkWzBdLCBmcm9tRGF0ZUNvbnZlcnRlZFsxXSAtIDEsIGZyb21EYXRlQ29udmVydGVkWzJdKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy50b0RhdGUpIHtcclxuICAgICAgbGV0IHRvRGF0ZUNvbnZlcnRlZDogbnVtYmVyW10gPSBKYWxhbGlEYXRlLmphbGFsaVRvR3JlZ29yaWFuKHRoaXMudG9EYXRlLnllYXIsIHRoaXMudG9EYXRlLm1vbnRoLCB0aGlzLnRvRGF0ZS5kYXkpO1xyXG4gICAgICByYW5nZS50b0RhdGUgPSBuZXcgRGF0ZSh0b0RhdGVDb252ZXJ0ZWRbMF0sIHRvRGF0ZUNvbnZlcnRlZFsxXSAtIDEsIHRvRGF0ZUNvbnZlcnRlZFsyXSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vbkNoYW5nZShyYW5nZSk7XHJcbiAgICB0aGlzLm9uVG91Y2hlZChyYW5nZSlcclxuICB9XHJcblxyXG4gIHNldFRvZGF5KCkge1xyXG4gICAgdGhpcy5mcm9tRGF0ZSA9IHRoaXMudG9kYXk7XHJcbiAgICB0aGlzLnRvRGF0ZSA9IHRoaXMudG9kYXk7XHJcbiAgICB0aGlzLnZhbHVlQ2hhbmdlZCgpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPGZvcm0gY2xhc3M9XCJyb3cgcm93LWNvbHMtc20tYXV0b1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkcC1oaWRkZW4gcG9zaXRpb24tYWJzb2x1dGVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cImRhdGVwaWNrZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5nYkRhdGVwaWNrZXIgI2RhdGVwaWNrZXI9XCJuZ2JEYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiIChkYXRlU2VsZWN0KT1cIm9uRGF0ZVNlbGVjdGlvbigkZXZlbnQpXCIgW2Rpc3BsYXlNb250aHNdPVwiMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2RheVRlbXBsYXRlXT1cImN1c3RvbURheVwiIG91dHNpZGVEYXlzPVwiaGlkZGVuXCIgW3N0YXJ0RGF0ZV09XCJmcm9tRGF0ZSFcIiB0YWJpbmRleD1cIi0xXCJcclxuICAgICAgICAgICAgICAgICAgICBbY29udGFpbmVyXT1cImNvbnRhaW5lclwiIFttYXJrRGlzYWJsZWRdPVwibWFya0Rpc2FibGVkXCIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9vdGVyVGVtcGxhdGVdPVwiZm9vdGVyVGVtcGxhdGVcIiBbZmlyc3REYXlPZldlZWtdPVwiZmlyc3REYXlPZldlZWtcIiAvPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cclxuICAgICAgICAgICAgPGlucHV0ICNkcEZyb21EYXRlIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJ5eXl5L21tL2RkXCIgbmFtZT1cImRwRnJvbURhdGVcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cImZvcm1hdHRlci5mb3JtYXQoZnJvbURhdGUpXCIgKGlucHV0KT1cImZyb21EYXRlID0gdmFsaWRhdGVJbnB1dChmcm9tRGF0ZSwgZHBGcm9tRGF0ZS52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgcmVhZG9ubHkgLz5cclxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIiAoY2xpY2spPVwiZGF0ZXBpY2tlci50b2dnbGUoKVwiIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwie3tjYWxlbmRhckljb25DbGFzc319XCI+PC9pPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgI2RwVG9EYXRlIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcGxhY2Vob2xkZXI9XCJ5eXl5L21tL2RkXCIgbmFtZT1cImRwVG9EYXRlXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmb3JtYXR0ZXIuZm9ybWF0KHRvRGF0ZSlcIiAoaW5wdXQpPVwidG9EYXRlID0gdmFsaWRhdGVJbnB1dCh0b0RhdGUsIGRwVG9EYXRlLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiByZWFkb25seSAvPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXNlY29uZGFyeVwiIChjbGljayk9XCJkYXRlcGlja2VyLnRvZ2dsZSgpXCIgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJ7e2NhbGVuZGFySWNvbkNsYXNzfX1cIj48L2k+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZm9ybT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjY3VzdG9tRGF5IGxldC1kYXRlIGxldC1jdXJyZW50TW9udGg9XCJjdXJyZW50TW9udGhcIiBsZXQtc2VsZWN0ZWQ9XCJzZWxlY3RlZFwiIGxldC1kaXNhYmxlZD1cImRpc2FibGVkXCJcclxuICAgIGxldC1mb2N1c2VkPVwiZm9jdXNlZFwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJjdXN0b20tZGF5XCIgW2NsYXNzLndlZWtlbmRdPVwiaXNXZWVrZW5kKGRhdGUpXCIgW2NsYXNzLmZvY3VzZWRdPVwiZm9jdXNlZFwiXHJcbiAgICAgICAgW2NsYXNzLmhpZGRlbl09XCJkYXRlLm1vbnRoICE9PSBjdXJyZW50TW9udGhcIiBbY2xhc3MudGV4dC1tdXRlZF09XCJkaXNhYmxlZFwiIFtjbGFzcy5yYW5nZV09XCJpc1JhbmdlKGRhdGUpXCJcclxuICAgICAgICBbY2xhc3MuZmFkZWRdPVwiaXNIb3ZlcmVkKGRhdGUpIHx8IGlzSW5zaWRlKGRhdGUpXCIgKG1vdXNlZW50ZXIpPVwiaG92ZXJlZERhdGUgPSBkYXRlXCJcclxuICAgICAgICAobW91c2VsZWF2ZSk9XCJob3ZlcmVkRGF0ZSA9IG51bGxcIj5cclxuICAgICAgICB7eyBkYXRlLmRheSB9fVxyXG4gICAgPC9zcGFuPlxyXG4gICAgPCEtLSBbY2xhc3MuYmctcHJpbWFyeV09XCJzZWxlY3RlZFwiIC0tPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNmb290ZXJUZW1wbGF0ZT5cclxuICAgIDxzcGFuICpuZ0lmPVwiaXNGb290ZXJcIj5cclxuICAgICAgICA8aHIgY2xhc3M9XCJteS0wXCIgLz5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImZvb3RlclwiPlxyXG4gICAgICAgICAgICB7e2Zvb3Rlcn19XHJcbiAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWZvb3RlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBtLTIgZmxvYXQtc3RhcnRcIiAoY2xpY2spPVwic2V0VG9kYXkoKTsgZGF0ZXBpY2tlci5jbG9zZSgpXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiPnt7dG9kYXlMYWJlbH19PC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeSBidG4tc20gbS0yIGZsb2F0LWVuZFwiIChjbGljayk9XCJkYXRlcGlja2VyLmNsb3NlKClcIj57e2Nsb3NlTGFiZWx9fTwvYnV0dG9uPlxyXG4gICAgICAgIDwvc3Bhbj5cclxuICAgIDwvc3Bhbj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
@@ -1,17 +1,16 @@
1
1
  import { Directive, Input } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
- class PasswordMismatchDirective {
3
+ export class PasswordMismatchDirective {
4
4
  constructor() {
5
5
  this.matchWith = '';
6
6
  }
7
7
  validate(control) {
8
8
  return this.matchWith ? passwordMismatchValidator(this.matchWith)(control) : null;
9
9
  }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: PasswordMismatchDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.0", type: PasswordMismatchDirective, isStandalone: true, selector: "[passwordMismatch]", inputs: { matchWith: ["passwordMismatch", "matchWith"] }, ngImport: i0 }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PasswordMismatchDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.11", type: PasswordMismatchDirective, isStandalone: true, selector: "[passwordMismatch]", inputs: { matchWith: ["passwordMismatch", "matchWith"] }, ngImport: i0 }); }
12
12
  }
13
- export { PasswordMismatchDirective };
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: PasswordMismatchDirective, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: PasswordMismatchDirective, decorators: [{
15
14
  type: Directive,
16
15
  args: [{
17
16
  selector: '[passwordMismatch]',
@@ -33,4 +32,4 @@ export function passwordMismatchValidator(matchWith) {
33
32
  return password && confirmPassword && password.value === confirmPassword.value ? null : { passwordMismatch: true };
34
33
  };
35
34
  }
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtbWlzbWF0Y2guZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveW9venNvZnQveW9venNvZnQtbmcvZGlyZWN0aXZlcy9zcmMvcGFzc3dvcmQtbWlzbWF0Y2gvcGFzc3dvcmQtbWlzbWF0Y2guZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUdqRCxNQUlhLHlCQUF5QjtJQUp0QztRQU02QixjQUFTLEdBQUcsRUFBRSxDQUFDO0tBTTNDO0lBSkMsUUFBUSxDQUFDLE9BQWtDO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDcEYsQ0FBQzs4R0FOVSx5QkFBeUI7a0dBQXpCLHlCQUF5Qjs7U0FBekIseUJBQXlCOzJGQUF6Qix5QkFBeUI7a0JBSnJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzhCQUc0QixTQUFTO3NCQUFuQyxLQUFLO3VCQUFDLGtCQUFrQjs7QUFRM0I7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSx5QkFBeUIsQ0FBQyxTQUFpQjtJQUN6RCxPQUFPLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtRQUMzRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNoRCxNQUFNLGVBQWUsR0FBRyxPQUFPLENBQUM7UUFDaEMsT0FBTyxRQUFRLElBQUksZUFBZSxJQUFJLFFBQVEsQ0FBQyxLQUFLLEtBQUssZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDO0lBQ3JILENBQUMsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3Bhc3N3b3JkTWlzbWF0Y2hdJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQYXNzd29yZE1pc21hdGNoRGlyZWN0aXZlIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcclxuXHJcbiAgQElucHV0KCdwYXNzd29yZE1pc21hdGNoJykgbWF0Y2hXaXRoID0gJyc7XHJcblxyXG4gIHZhbGlkYXRlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbDxhbnksIGFueT4pOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5tYXRjaFdpdGggPyBwYXNzd29yZE1pc21hdGNoVmFsaWRhdG9yKHRoaXMubWF0Y2hXaXRoKShjb250cm9sKSA6IG51bGw7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuLyoqXHJcbiAqIFZhbGlkYXRlIHBhc3N3b3JkIGFuZCByZXBlYXQgcGFzc3dvcmQgbWF0Y2hpbmcuXHJcbiAqIEBwYXJhbSBtYXRjaFdpdGggQWJzdHJhY3RDb250cm9sIG5hbWUgdG8gbWF0Y2hpbmcuXHJcbiAqIEByZXR1cm5zIFJldHVybnMgbnVsbCBpZiB0aGUgY29udHJvbHMgdmFsdWUgbWF0Y2hlcywgb3RoZXJ3aXNlIHJldHVybnMgcGFzc3dvcmRNaXNtYXRjaCBlcnJvci5cclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBwYXNzd29yZE1pc21hdGNoVmFsaWRhdG9yKG1hdGNoV2l0aDogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xyXG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xyXG4gICAgY29uc3QgcGFzc3dvcmQgPSBjb250cm9sLnBhcmVudD8uZ2V0KG1hdGNoV2l0aCk7XHJcbiAgICBjb25zdCBjb25maXJtUGFzc3dvcmQgPSBjb250cm9sO1xyXG4gICAgcmV0dXJuIHBhc3N3b3JkICYmIGNvbmZpcm1QYXNzd29yZCAmJiBwYXNzd29yZC52YWx1ZSA9PT0gY29uZmlybVBhc3N3b3JkLnZhbHVlID8gbnVsbCA6IHsgcGFzc3dvcmRNaXNtYXRjaDogdHJ1ZSB9O1xyXG4gIH07XHJcbn0iXX0=
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtbWlzbWF0Y2guZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveW9venNvZnQveW9venNvZnQtbmcvZGlyZWN0aXZlcy9zcmMvcGFzc3dvcmQtbWlzbWF0Y2gvcGFzc3dvcmQtbWlzbWF0Y2guZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU9qRCxNQUFNLE9BQU8seUJBQXlCO0lBSnRDO1FBTTZCLGNBQVMsR0FBRyxFQUFFLENBQUM7S0FNM0M7SUFKQyxRQUFRLENBQUMsT0FBa0M7UUFDekMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNwRixDQUFDOytHQU5VLHlCQUF5QjttR0FBekIseUJBQXlCOzs0RkFBekIseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkFHNEIsU0FBUztzQkFBbkMsS0FBSzt1QkFBQyxrQkFBa0I7O0FBUTNCOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUseUJBQXlCLENBQUMsU0FBaUI7SUFDekQsT0FBTyxDQUFDLE9BQXdCLEVBQTJCLEVBQUU7UUFDM0QsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDaEQsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDO1FBQ2hDLE9BQU8sUUFBUSxJQUFJLGVBQWUsSUFBSSxRQUFRLENBQUMsS0FBSyxLQUFLLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNySCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFZhbGlkYXRpb25FcnJvcnMsIFZhbGlkYXRvciwgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1twYXNzd29yZE1pc21hdGNoXScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRNaXNtYXRjaERpcmVjdGl2ZSBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XHJcblxyXG4gIEBJbnB1dCgncGFzc3dvcmRNaXNtYXRjaCcpIG1hdGNoV2l0aCA9ICcnO1xyXG5cclxuICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2w8YW55LCBhbnk+KTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMubWF0Y2hXaXRoID8gcGFzc3dvcmRNaXNtYXRjaFZhbGlkYXRvcih0aGlzLm1hdGNoV2l0aCkoY29udHJvbCkgOiBudWxsO1xyXG4gIH1cclxuXHJcbn1cclxuXHJcbi8qKlxyXG4gKiBWYWxpZGF0ZSBwYXNzd29yZCBhbmQgcmVwZWF0IHBhc3N3b3JkIG1hdGNoaW5nLlxyXG4gKiBAcGFyYW0gbWF0Y2hXaXRoIEFic3RyYWN0Q29udHJvbCBuYW1lIHRvIG1hdGNoaW5nLlxyXG4gKiBAcmV0dXJucyBSZXR1cm5zIG51bGwgaWYgdGhlIGNvbnRyb2xzIHZhbHVlIG1hdGNoZXMsIG90aGVyd2lzZSByZXR1cm5zIHBhc3N3b3JkTWlzbWF0Y2ggZXJyb3IuXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gcGFzc3dvcmRNaXNtYXRjaFZhbGlkYXRvcihtYXRjaFdpdGg6IHN0cmluZyk6IFZhbGlkYXRvckZuIHtcclxuICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcclxuICAgIGNvbnN0IHBhc3N3b3JkID0gY29udHJvbC5wYXJlbnQ/LmdldChtYXRjaFdpdGgpO1xyXG4gICAgY29uc3QgY29uZmlybVBhc3N3b3JkID0gY29udHJvbDtcclxuICAgIHJldHVybiBwYXNzd29yZCAmJiBjb25maXJtUGFzc3dvcmQgJiYgcGFzc3dvcmQudmFsdWUgPT09IGNvbmZpcm1QYXNzd29yZC52YWx1ZSA/IG51bGwgOiB7IHBhc3N3b3JkTWlzbWF0Y2g6IHRydWUgfTtcclxuICB9O1xyXG59Il19
@@ -2,18 +2,17 @@ import { NgClass, NgFor, NgIf } from '@angular/common';
2
2
  import { Component, Input } from '@angular/core';
3
3
  import { NgbTooltip } from '@ng-bootstrap/ng-bootstrap';
4
4
  import * as i0 from "@angular/core";
5
- class YsFooterComponent {
5
+ export class YsFooterComponent {
6
6
  constructor() {
7
7
  this.styleClass = null;
8
8
  this.brand = null;
9
9
  this.copyright = null;
10
10
  this.socialNetworks = [];
11
11
  }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: YsFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.0", type: YsFooterComponent, isStandalone: true, selector: "ys-footer", inputs: { styleClass: "styleClass", brand: "brand", copyright: "copyright", socialNetworks: "socialNetworks" }, ngImport: i0, template: "<footer class=\"d-flex justify-content-between align-items-center py-3 my-4 border-top\" [ngClass]=\"styleClass\">\r\n <div *ngIf=\"brand || copyright\" class=\"d-flex align-items-center\">\r\n <a *ngIf=\"brand\" href=\"{{brand.href}}\" class=\"px-2 text-muted text-decoration-none\">\r\n <img src=\"{{brand.src}}\" alt=\"{{brand.alt}}\" width=\"30\" height=\"24\" class=\"d-inline-block align-text-top\">\r\n </a>\r\n <span *ngIf=\"copyright\" class=\"text-muted\">{{copyright}}</span>\r\n </div>\r\n\r\n <ul *ngIf=\"socialNetworks.length > 0\" class=\"nav d-flex justify-content-end\">\r\n <li class=\"px-2\" *ngFor=\"let item of socialNetworks\">\r\n <a class=\"text-muted social-icon\" href=\"{{item.href}}\" [ngbTooltip]=\"item.tooltip\">\r\n <em class=\"{{item.iconClass}}\"></em>\r\n </a>\r\n </li>\r\n </ul>\r\n</footer>", styles: [".social-icon:hover{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, 1))!important}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }] }); }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: YsFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
13
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: YsFooterComponent, isStandalone: true, selector: "ys-footer", inputs: { styleClass: "styleClass", brand: "brand", copyright: "copyright", socialNetworks: "socialNetworks" }, ngImport: i0, template: "<footer class=\"d-flex justify-content-between align-items-center py-3 my-4 border-top\" [ngClass]=\"styleClass\">\r\n <div *ngIf=\"brand || copyright\" class=\"d-flex align-items-center\">\r\n <a *ngIf=\"brand\" href=\"{{brand.href}}\" class=\"px-2 text-muted text-decoration-none\">\r\n <img src=\"{{brand.src}}\" alt=\"{{brand.alt}}\" width=\"30\" height=\"24\" class=\"d-inline-block align-text-top\">\r\n </a>\r\n <span *ngIf=\"copyright\" class=\"text-muted\">{{copyright}}</span>\r\n </div>\r\n\r\n <ul *ngIf=\"socialNetworks.length > 0\" class=\"nav d-flex justify-content-end\">\r\n <li class=\"px-2\" *ngFor=\"let item of socialNetworks\">\r\n <a class=\"text-muted social-icon\" href=\"{{item.href}}\" [ngbTooltip]=\"item.tooltip\">\r\n <em class=\"{{item.iconClass}}\"></em>\r\n </a>\r\n </li>\r\n </ul>\r\n</footer>", styles: [".social-icon:hover{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity, 1))!important}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }] }); }
14
14
  }
15
- export { YsFooterComponent };
16
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImport: i0, type: YsFooterComponent, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: YsFooterComponent, decorators: [{
17
16
  type: Component,
18
17
  args: [{ selector: 'ys-footer', standalone: true, imports: [
19
18
  NgFor,
@@ -30,4 +29,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.0", ngImpor
30
29
  }], socialNetworks: [{
31
30
  type: Input
32
31
  }] } });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXMtZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3lvb3pzb2Z0L3lvb3pzb2Z0LW5nL2Zvb3Rlci9zcmMveXMtZm9vdGVyL3lzLWZvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy95b296c29mdC95b296c29mdC1uZy9mb290ZXIvc3JjL3lzLWZvb3Rlci95cy1mb290ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUd4RCxNQVlhLGlCQUFpQjtJQVo5QjtRQWNXLGVBQVUsR0FBa0IsSUFBSSxDQUFDO1FBQ2pDLFVBQUssR0FBdUIsSUFBSSxDQUFDO1FBQ2pDLGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBQ2hDLG1CQUFjLEdBQW9CLEVBQUUsQ0FBQztLQUUvQzs4R0FQWSxpQkFBaUI7a0dBQWpCLGlCQUFpQixxTENqQjlCLDY1QkFlUyx3SkROTCxLQUFLLG1IQUNMLElBQUksNkZBQ0osT0FBTyxvRkFDUCxVQUFVOztTQUtELGlCQUFpQjsyRkFBakIsaUJBQWlCO2tCQVo3QixTQUFTOytCQUNFLFdBQVcsY0FDVCxJQUFJLFdBQ1A7d0JBQ1AsS0FBSzt3QkFDTCxJQUFJO3dCQUNKLE9BQU87d0JBQ1AsVUFBVTtxQkFDWDs4QkFNUSxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ0NsYXNzLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiVG9vbHRpcCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgRm9vdGVyQnJhbmQsIFNvY2lhbE5ldHdvcmsgfSBmcm9tICcuLi9tb2RlbHMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd5cy1mb290ZXInLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgTmdGb3IsXHJcbiAgICBOZ0lmLFxyXG4gICAgTmdDbGFzcyxcclxuICAgIE5nYlRvb2x0aXBcclxuICBdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi95cy1mb290ZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3lzLWZvb3Rlci5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBZc0Zvb3RlckNvbXBvbmVudCB7XHJcblxyXG4gIEBJbnB1dCgpIHN0eWxlQ2xhc3M6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGJyYW5kOiBGb290ZXJCcmFuZCB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIGNvcHlyaWdodDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgc29jaWFsTmV0d29ya3M6IFNvY2lhbE5ldHdvcmtbXSA9IFtdO1xyXG5cclxufVxyXG4iLCI8Zm9vdGVyIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBweS0zIG15LTQgYm9yZGVyLXRvcFwiIFtuZ0NsYXNzXT1cInN0eWxlQ2xhc3NcIj5cclxuICAgIDxkaXYgKm5nSWY9XCJicmFuZCB8fCBjb3B5cmlnaHRcIiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICA8YSAqbmdJZj1cImJyYW5kXCIgaHJlZj1cInt7YnJhbmQuaHJlZn19XCIgY2xhc3M9XCJweC0yIHRleHQtbXV0ZWQgdGV4dC1kZWNvcmF0aW9uLW5vbmVcIj5cclxuICAgICAgICAgICAgPGltZyBzcmM9XCJ7e2JyYW5kLnNyY319XCIgYWx0PVwie3ticmFuZC5hbHR9fVwiIHdpZHRoPVwiMzBcIiBoZWlnaHQ9XCIyNFwiIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgYWxpZ24tdGV4dC10b3BcIj5cclxuICAgICAgICA8L2E+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjb3B5cmlnaHRcIiBjbGFzcz1cInRleHQtbXV0ZWRcIj57e2NvcHlyaWdodH19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPHVsICpuZ0lmPVwic29jaWFsTmV0d29ya3MubGVuZ3RoID4gMFwiIGNsYXNzPVwibmF2IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgPGxpIGNsYXNzPVwicHgtMlwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNvY2lhbE5ldHdvcmtzXCI+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwidGV4dC1tdXRlZCBzb2NpYWwtaWNvblwiIGhyZWY9XCJ7e2l0ZW0uaHJlZn19XCIgW25nYlRvb2x0aXBdPVwiaXRlbS50b29sdGlwXCI+XHJcbiAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9XCJ7e2l0ZW0uaWNvbkNsYXNzfX1cIj48L2VtPlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvdWw+XHJcbjwvZm9vdGVyPiJdfQ==
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXMtZm9vdGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3lvb3pzb2Z0L3lvb3pzb2Z0LW5nL2Zvb3Rlci9zcmMveXMtZm9vdGVyL3lzLWZvb3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy95b296c29mdC95b296c29mdC1uZy9mb290ZXIvc3JjL3lzLWZvb3Rlci95cy1mb290ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQWV4RCxNQUFNLE9BQU8saUJBQWlCO0lBWjlCO1FBY1csZUFBVSxHQUFrQixJQUFJLENBQUM7UUFDakMsVUFBSyxHQUF1QixJQUFJLENBQUM7UUFDakMsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFDaEMsbUJBQWMsR0FBb0IsRUFBRSxDQUFDO0tBRS9DOytHQVBZLGlCQUFpQjttR0FBakIsaUJBQWlCLHFMQ2pCOUIsNjVCQWVTLHdKRE5MLEtBQUssbUhBQ0wsSUFBSSw2RkFDSixPQUFPLG9GQUNQLFVBQVU7OzRGQUtELGlCQUFpQjtrQkFaN0IsU0FBUzsrQkFDRSxXQUFXLGNBQ1QsSUFBSSxXQUNQO3dCQUNQLEtBQUs7d0JBQ0wsSUFBSTt3QkFDSixPQUFPO3dCQUNQLFVBQVU7cUJBQ1g7OEJBTVEsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDbGFzcywgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5nYlRvb2x0aXAgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IEZvb3RlckJyYW5kLCBTb2NpYWxOZXR3b3JrIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAneXMtZm9vdGVyJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIE5nRm9yLFxyXG4gICAgTmdJZixcclxuICAgIE5nQ2xhc3MsXHJcbiAgICBOZ2JUb29sdGlwXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4veXMtZm9vdGVyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi95cy1mb290ZXIuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgWXNGb290ZXJDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKSBzdHlsZUNsYXNzOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBicmFuZDogRm9vdGVyQnJhbmQgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBjb3B5cmlnaHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG4gIEBJbnB1dCgpIHNvY2lhbE5ldHdvcmtzOiBTb2NpYWxOZXR3b3JrW10gPSBbXTtcclxuXHJcbn1cclxuIiwiPGZvb3RlciBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgcHktMyBteS00IGJvcmRlci10b3BcIiBbbmdDbGFzc109XCJzdHlsZUNsYXNzXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiYnJhbmQgfHwgY29weXJpZ2h0XCIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPGEgKm5nSWY9XCJicmFuZFwiIGhyZWY9XCJ7e2JyYW5kLmhyZWZ9fVwiIGNsYXNzPVwicHgtMiB0ZXh0LW11dGVkIHRleHQtZGVjb3JhdGlvbi1ub25lXCI+XHJcbiAgICAgICAgICAgIDxpbWcgc3JjPVwie3ticmFuZC5zcmN9fVwiIGFsdD1cInt7YnJhbmQuYWx0fX1cIiB3aWR0aD1cIjMwXCIgaGVpZ2h0PVwiMjRcIiBjbGFzcz1cImQtaW5saW5lLWJsb2NrIGFsaWduLXRleHQtdG9wXCI+XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiY29weXJpZ2h0XCIgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+e3tjb3B5cmlnaHR9fTwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDx1bCAqbmdJZj1cInNvY2lhbE5ldHdvcmtzLmxlbmd0aCA+IDBcIiBjbGFzcz1cIm5hdiBkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgIDxsaSBjbGFzcz1cInB4LTJcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzb2NpYWxOZXR3b3Jrc1wiPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cInRleHQtbXV0ZWQgc29jaWFsLWljb25cIiBocmVmPVwie3tpdGVtLmhyZWZ9fVwiIFtuZ2JUb29sdGlwXT1cIml0ZW0udG9vbHRpcFwiPlxyXG4gICAgICAgICAgICAgICAgPGVtIGNsYXNzPVwie3tpdGVtLmljb25DbGFzc319XCI+PC9lbT5cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICA8L3VsPlxyXG48L2Zvb3Rlcj4iXX0=