mis-crystal-design-system 18.1.7-signal-16-test-2 → 18.1.7

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 (38) hide show
  1. package/async-search-dropdown/async-dropdown.component.d.ts +44 -3
  2. package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +9 -2
  3. package/esm2022/async-search-dropdown/async-dropdown.component.mjs +147 -37
  4. package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +35 -22
  5. package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +270 -187
  6. package/esm2022/dynamic-form/dynamic-form.component.mjs +30 -21
  7. package/esm2022/loader/loader.component.mjs +12 -6
  8. package/esm2022/slider/slider.component.mjs +2 -2
  9. package/esm2022/table/sort-icons.directive.mjs +24 -5
  10. package/esm2022/table/table.component.mjs +200 -93
  11. package/esm2022/table/table.module.mjs +7 -5
  12. package/esm2022/timepicker/timepicker.component.mjs +41 -14
  13. package/esm2022/timerangepicker/timerangepicker.component.mjs +73 -23
  14. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +146 -36
  15. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
  16. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs +34 -21
  17. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -1
  18. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +269 -186
  19. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -1
  20. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs +29 -20
  21. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -1
  22. package/fesm2022/mis-crystal-design-system-loader.mjs +11 -5
  23. package/fesm2022/mis-crystal-design-system-loader.mjs.map +1 -1
  24. package/fesm2022/mis-crystal-design-system-slider.mjs +2 -2
  25. package/fesm2022/mis-crystal-design-system-slider.mjs.map +1 -1
  26. package/fesm2022/mis-crystal-design-system-table.mjs +227 -99
  27. package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
  28. package/fesm2022/mis-crystal-design-system-timepicker.mjs +40 -13
  29. package/fesm2022/mis-crystal-design-system-timepicker.mjs.map +1 -1
  30. package/fesm2022/mis-crystal-design-system-timerangepicker.mjs +72 -22
  31. package/fesm2022/mis-crystal-design-system-timerangepicker.mjs.map +1 -1
  32. package/loader/loader.component.d.ts +7 -1
  33. package/package.json +25 -25
  34. package/styles/mis-old-icon-styles.scss +498 -0
  35. package/table/table.component.d.ts +16 -4
  36. package/table/table.module.d.ts +2 -1
  37. package/timepicker/timepicker.component.d.ts +3 -1
  38. package/timerangepicker/timerangepicker.component.d.ts +5 -1
@@ -83,8 +83,10 @@ const _c1 = ["timeInterval"];
83
83
  const _c2 = a0 => ({ height: a0 });
84
84
  const _c3 = a0 => ({ "disable": a0 });
85
85
  const _c4 = a0 => ({ invalid: a0 });
86
- const _c5 = a0 => ({ width: a0 });
87
- const _c6 = a0 => ({ highlight: a0 });
86
+ const _c5 = (a0, a1) => ({ width: a0, fontSize: a1 });
87
+ const _c6 = a0 => ({ width: a0 });
88
+ const _c7 = a0 => ({ highlight: a0 });
89
+ const _c8 = a0 => ({ fontSize: a0 });
88
90
  function TimePickerComponent_ng_template_3_div_0_li_3_div_3_Template(rf, ctx) { if (rf & 1) {
89
91
  i0.ɵɵelement(0, "div", 12);
90
92
  } }
@@ -99,7 +101,7 @@ function TimePickerComponent_ng_template_3_div_0_li_3_Template(rf, ctx) { if (rf
99
101
  const interval_r3 = ctx.$implicit;
100
102
  const i_r5 = ctx.index;
101
103
  const ctx_r3 = i0.ɵɵnextContext(3);
102
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c6, i_r5 === ctx_r3.isHighlighted()));
104
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(4, _c7, i_r5 === ctx_r3.isHighlighted()))("ngStyle", i0.ɵɵpureFunction1(6, _c8, ctx_r3.fontSize()));
103
105
  i0.ɵɵadvance(2);
104
106
  i0.ɵɵtextInterpolate1(" ", interval_r3, " ");
105
107
  i0.ɵɵadvance();
@@ -107,11 +109,11 @@ function TimePickerComponent_ng_template_3_div_0_li_3_Template(rf, ctx) { if (rf
107
109
  } }
108
110
  function TimePickerComponent_ng_template_3_div_0_Template(rf, ctx) { if (rf & 1) {
109
111
  i0.ɵɵelementStart(0, "div", 8)(1, "ul", null, 2);
110
- i0.ɵɵtemplate(3, TimePickerComponent_ng_template_3_div_0_li_3_Template, 4, 5, "li", 9);
112
+ i0.ɵɵtemplate(3, TimePickerComponent_ng_template_3_div_0_li_3_Template, 4, 8, "li", 9);
111
113
  i0.ɵɵelementEnd()();
112
114
  } if (rf & 2) {
113
115
  const ctx_r3 = i0.ɵɵnextContext(2);
114
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(2, _c5, ctx_r3.dropdownWidth() || ctx_r3.inputWidth()));
116
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(2, _c6, ctx_r3.dropdownWidth() || ctx_r3.inputWidth()));
115
117
  i0.ɵɵadvance(3);
116
118
  i0.ɵɵproperty("ngForOf", ctx_r3.timeIntervals());
117
119
  } }
@@ -161,16 +163,21 @@ class TimePickerComponent {
161
163
  this.minTime = input(undefined);
162
164
  this.triggerChange = input(true);
163
165
  this.disable = input(false);
166
+ this.disableUserInput = input(false);
167
+ this.fontSize = input("14px");
164
168
  // Internal state for computed first interval
165
169
  this.computedFirstInterval = null;
166
170
  this._isInitializing = false;
167
171
  // Signal-based output with backward compatibility
168
172
  this.timeEmitter = output();
169
- // Effect to handle triggerChange from parent component (timerangepicker)
173
+ // Effect to handle triggerChange toggles (explicit reset requests from parent)
174
+ // This effect ONLY resets chosenTime when triggerChange is toggled
175
+ // It does NOT watch firstInterval to avoid resetting time when dropdown intervals are updated
170
176
  effect(() => {
171
177
  const triggerValue = this.triggerChange();
172
- const firstIntervalValue = this.firstInterval();
173
- // Only update if not during user input and firstInterval is provided
178
+ const firstIntervalValue = untracked(() => this.firstInterval()); // Use untracked to not create dependency
179
+ // Only reset when triggerChange is toggled AND firstInterval is provided
180
+ // This handles cases where parent explicitly wants to reset the time (e.g., conflict resolution)
174
181
  if (!untracked(() => this.userInputFlag()) && firstIntervalValue && !this._isInitializing) {
175
182
  const newTime = dayjs.tz(firstIntervalValue, untracked(() => this.timezone())).format(this.timeFormat);
176
183
  // Only update if the time actually changed
@@ -179,7 +186,7 @@ class TimePickerComponent {
179
186
  setTimeout(() => {
180
187
  this.chosenTime.set(newTime);
181
188
  this.isInvalid.set(!this.checkTimeValidity(newTime.trim()));
182
- // CRITICAL FIX: Repopulate dropdown when firstInterval changes
189
+ // Repopulate dropdown when time is reset
183
190
  this.populateDropdown();
184
191
  // Recalculate closest interval
185
192
  this.calculateClosestInterval(newTime);
@@ -194,6 +201,24 @@ class TimePickerComponent {
194
201
  }
195
202
  }
196
203
  });
204
+ // Separate effect to handle firstInterval changes (only update dropdown, NOT chosenTime)
205
+ // This allows updating dropdown intervals without resetting the selected time
206
+ effect(() => {
207
+ const firstIntervalValue = this.firstInterval();
208
+ // Only update dropdown when firstInterval changes, don't reset chosenTime
209
+ // This is crucial: when timerangepicker updates firstInterval to fix dropdown options,
210
+ // we don't want to reset the user's selected time
211
+ if (!untracked(() => this.userInputFlag()) && firstIntervalValue && !this._isInitializing) {
212
+ // Just repopulate dropdown with new intervals, preserve current chosenTime
213
+ setTimeout(() => {
214
+ this.populateDropdown();
215
+ // Recalculate closest interval for current chosenTime (preserve it)
216
+ if (untracked(() => this.chosenTime())) {
217
+ this.calculateClosestInterval(untracked(() => this.chosenTime()));
218
+ }
219
+ }, 0);
220
+ }
221
+ });
197
222
  }
198
223
  ngOnInit() {
199
224
  this._isInitializing = true;
@@ -372,6 +397,8 @@ class TimePickerComponent {
372
397
  }
373
398
  // checks validity of time on input change and calculates the closest interval
374
399
  onTimeChange(time) {
400
+ if (this.disableUserInput())
401
+ return;
375
402
  // Set user input flag to prevent effects from overriding
376
403
  this.userInputFlag.set(true);
377
404
  // Update the chosenTime signal
@@ -489,7 +516,7 @@ class TimePickerComponent {
489
516
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.timepickerDirective = _t.first);
490
517
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.tooltipDirective = _t.first);
491
518
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.timeIntervalRefs = _t);
492
- } }, inputs: { clockFormat: [1, "clockFormat"], timezone: [1, "timezone"], height: [1, "height"], inputWidth: [1, "inputWidth"], dropdownWidth: [1, "dropdownWidth"], interval: [1, "interval"], dateAsEpoch: [1, "dateAsEpoch"], firstInterval: [1, "firstInterval"], rangeValidity: [1, "rangeValidity"], showTooltip: [1, "showTooltip"], givenTime: [1, "givenTime"], minTime: [1, "minTime"], triggerChange: [1, "triggerChange"], disable: [1, "disable"] }, outputs: { timeEmitter: "timeEmitter" }, decls: 5, vars: 19, consts: [["input", ""], ["dropdownContainer", ""], ["dropdown", ""], ["timeInterval", ""], [1, "timepicker-container", 3, "ngStyle", "ngClass"], ["type", "text", "misToolTip", "", "cdkOverlayOrigin", "", 1, "h7", 3, "ngModelChange", "click", "ngModel", "ngClass", "ngStyle", "showToolTip", "text", "position", "showOnHover"], ["libTimepicker", "", 3, "statusEmitter", "originEl", "openStatus"], ["class", "timepicker-dropdown", 3, "ngStyle", 4, "ngIf"], [1, "timepicker-dropdown", 3, "ngStyle"], [3, "ngClass", "click", 4, "ngFor", "ngForOf"], [3, "click", "ngClass"], ["class", "ic-ui-check-24 selected-icon", 4, "ngIf"], [1, "ic-ui-check-24", "selected-icon"]], template: function TimePickerComponent_Template(rf, ctx) { if (rf & 1) {
519
+ } }, inputs: { clockFormat: [1, "clockFormat"], timezone: [1, "timezone"], height: [1, "height"], inputWidth: [1, "inputWidth"], dropdownWidth: [1, "dropdownWidth"], interval: [1, "interval"], dateAsEpoch: [1, "dateAsEpoch"], firstInterval: [1, "firstInterval"], rangeValidity: [1, "rangeValidity"], showTooltip: [1, "showTooltip"], givenTime: [1, "givenTime"], minTime: [1, "minTime"], triggerChange: [1, "triggerChange"], disable: [1, "disable"], disableUserInput: [1, "disableUserInput"], fontSize: [1, "fontSize"] }, outputs: { timeEmitter: "timeEmitter" }, decls: 5, vars: 21, consts: [["input", ""], ["dropdownContainer", ""], ["dropdown", ""], ["timeInterval", ""], [1, "timepicker-container", 3, "ngStyle", "ngClass"], ["type", "text", "misToolTip", "", "cdkOverlayOrigin", "", 1, "h7", 3, "ngModelChange", "click", "ngModel", "readOnly", "ngClass", "ngStyle", "showToolTip", "text", "position", "showOnHover"], ["libTimepicker", "", 3, "statusEmitter", "originEl", "openStatus"], ["class", "timepicker-dropdown", 3, "ngStyle", 4, "ngIf"], [1, "timepicker-dropdown", 3, "ngStyle"], [3, "ngClass", "ngStyle", "click", 4, "ngFor", "ngForOf"], [3, "click", "ngClass", "ngStyle"], ["class", "ic-ui-check-24 selected-icon", 4, "ngIf"], [1, "ic-ui-check-24", "selected-icon"]], template: function TimePickerComponent_Template(rf, ctx) { if (rf & 1) {
493
520
  const _r1 = i0.ɵɵgetCurrentView();
494
521
  i0.ɵɵelementStart(0, "div", 4)(1, "input", 5, 0);
495
522
  i0.ɵɵlistener("ngModelChange", function TimePickerComponent_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onTimeChange($event)); })("click", function TimePickerComponent_Template_input_click_1_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.openDropdown()); });
@@ -499,16 +526,16 @@ class TimePickerComponent {
499
526
  i0.ɵɵelementEnd();
500
527
  } if (rf & 2) {
501
528
  const input_r6 = i0.ɵɵreference(2);
502
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(11, _c2, ctx.height()))("ngClass", i0.ɵɵpureFunction1(13, _c3, ctx.disable()));
529
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(12, _c2, ctx.height()))("ngClass", i0.ɵɵpureFunction1(14, _c3, ctx.disable()));
503
530
  i0.ɵɵadvance();
504
- i0.ɵɵproperty("ngModel", ctx.chosenTime())("ngClass", i0.ɵɵpureFunction1(15, _c4, ctx.isInvalid() || !ctx.rangeValidity()))("ngStyle", i0.ɵɵpureFunction1(17, _c5, ctx.inputWidth()))("showToolTip", ctx.showTooltip() && (ctx.isInvalid() || !ctx.rangeValidity()) && ctx.dispayToolTip)("text", "Invalid Time")("position", "top")("showOnHover", false);
531
+ i0.ɵɵproperty("ngModel", ctx.chosenTime())("readOnly", ctx.disableUserInput())("ngClass", i0.ɵɵpureFunction1(16, _c4, ctx.isInvalid() || !ctx.rangeValidity()))("ngStyle", i0.ɵɵpureFunction2(18, _c5, ctx.inputWidth(), ctx.fontSize()))("showToolTip", ctx.showTooltip() && (ctx.isInvalid() || !ctx.rangeValidity()) && ctx.dispayToolTip)("text", "Invalid Time")("position", "top")("showOnHover", false);
505
532
  i0.ɵɵadvance(2);
506
533
  i0.ɵɵproperty("originEl", input_r6)("openStatus", ctx.openStatus());
507
534
  } }, dependencies: [i1$1.NgClass, i1$1.NgForOf, i1$1.NgIf, i1$1.NgStyle, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel, i3.ToolTipDirective, i1.CdkOverlayOrigin, TimepickerDirective], styles: ["[_ngcontent-%COMP%]:root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.h1[_ngcontent-%COMP%]{font-size:40px;font-weight:400;letter-spacing:0px;line-height:48px}.h2[_ngcontent-%COMP%]{font-size:32px;font-weight:400;letter-spacing:0px;line-height:40px}.h3[_ngcontent-%COMP%]{font-size:28px;font-weight:400;letter-spacing:0px;line-height:36px}.h4[_ngcontent-%COMP%]{font-size:24px;font-weight:400;letter-spacing:0px;line-height:32px}.h5-b[_ngcontent-%COMP%]{font-size:20px;font-weight:700;letter-spacing:.25px;line-height:28px}.h5[_ngcontent-%COMP%]{font-size:20px;font-weight:400;letter-spacing:.15px;line-height:28px}.h6-b[_ngcontent-%COMP%]{font-size:16px;font-weight:700;letter-spacing:0px;line-height:24px}.h6[_ngcontent-%COMP%]{font-size:16px;font-weight:400;letter-spacing:0px;line-height:24px}.p[_ngcontent-%COMP%]{font-size:16px;font-weight:400;letter-spacing:0px;line-height:180%}.h7-b[_ngcontent-%COMP%]{font-size:14px;font-weight:700;letter-spacing:.25px;line-height:20px}.h7[_ngcontent-%COMP%]{font-size:14px;font-weight:400;letter-spacing:.2px;line-height:20px}.h8-b[_ngcontent-%COMP%]{font-size:12px;font-weight:700;letter-spacing:.25px;line-height:18px}.h8[_ngcontent-%COMP%]{font-size:12px;font-weight:400;letter-spacing:.2px;line-height:18px}.h9[_ngcontent-%COMP%]{font-size:10px;font-weight:400;letter-spacing:0px;line-height:15px}.btn-lg-b[_ngcontent-%COMP%]{font-size:16px;font-weight:700;letter-spacing:.5px;line-height:24px}.btn-lg[_ngcontent-%COMP%]{font-size:16px;font-weight:400;letter-spacing:.2px;line-height:24px}.btn-sm[_ngcontent-%COMP%]{font-size:14px;font-weight:400;letter-spacing:.25px;line-height:20px}.btn-link[_ngcontent-%COMP%]{font-size:16px;font-weight:400;letter-spacing:0px;line-height:24px}.display-1[_ngcontent-%COMP%]{font-size:48px;font-weight:400;letter-spacing:0px;line-height:56px}.display-2[_ngcontent-%COMP%]{font-size:14px;font-weight:400;letter-spacing:.5px;line-height:20px}*[_ngcontent-%COMP%]{box-sizing:border-box;font-family:Lato}.timepicker-container[_ngcontent-%COMP%]{display:inline-block;position:relative}input[_ngcontent-%COMP%]{text-align:center;border:none;border-bottom:1px solid var(--border-primary, #E0E0E0);outline:none;height:100%;width:100px;padding:4px 16px}input[_ngcontent-%COMP%]:hover{background:var(--brand-primary-hover, #F0F3FA)}input[_ngcontent-%COMP%]:focus, input[_ngcontent-%COMP%]:active{background:var(--brand-primary-active, #DAE1F3);border-bottom:1px solid var(--brand-primary, #0937B2)}.timepicker-dropdown[_ngcontent-%COMP%]{position:absolute;top:calc(100% + 4px);left:0;max-height:200px;overflow-y:auto;border:1px solid var(--border-primary, #E0E0E0);box-shadow:0 12px 24px var(--shadow-primary, rgba(0, 0, 0, .12)),0 4px 8px var(--shadow-primary, rgba(0, 0, 0, .12));border-radius:4px;padding:8px;background:var(--bg-primary, #FFFFFF)}.timepicker-dropdown[_ngcontent-%COMP%]::-webkit-scrollbar{display:none}.timepicker-dropdown[_ngcontent-%COMP%] ul[_ngcontent-%COMP%]{margin:0;padding:0}.timepicker-dropdown[_ngcontent-%COMP%] li[_ngcontent-%COMP%]{text-align:start;list-style:none;padding:6px 12px;cursor:pointer;font-size:14px;color:var(--text-primary, #181F33);display:flex;justify-content:space-between;align-items:center}.timepicker-dropdown[_ngcontent-%COMP%] li[_ngcontent-%COMP%]:hover{background:var(--brand-primary-hover, #F0F3FA);border-radius:6px}.timepicker-dropdown[_ngcontent-%COMP%] li[_ngcontent-%COMP%] .selected-icon[_ngcontent-%COMP%]{font-weight:900}.highlight[_ngcontent-%COMP%]{background-color:var(--brand-primary-hover, #F0F3FA);border-radius:6px}.invalid[_ngcontent-%COMP%]{background:var(--brand-error-lighter, #FAE1EA)!important;border-bottom:1px solid var(--brand-error, #B00020)!important}.disable[_ngcontent-%COMP%]{pointer-events:none!important;opacity:.5!important}"] }); }
508
535
  }
509
536
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TimePickerComponent, [{
510
537
  type: Component,
511
- args: [{ selector: "mis-timepicker", template: "<div class=\"timepicker-container\" [ngStyle]=\"{ height: height() }\" [ngClass]=\"{'disable': disable()}\">\n <input\n type=\"text\"\n [ngModel]=\"chosenTime()\"\n (ngModelChange)=\"onTimeChange($event)\"\n [ngClass]=\"{ invalid: isInvalid() || !rangeValidity() }\"\n [ngStyle]=\"{ width: inputWidth() }\"\n (click)=\"openDropdown()\"\n misToolTip\n [showToolTip]=\"showTooltip() && (isInvalid() || !rangeValidity()) && dispayToolTip\"\n [text]=\"'Invalid Time'\"\n [position]=\"'top'\"\n [showOnHover]=\"false\"\n #input\n cdkOverlayOrigin\n class=\"h7\"\n />\n\n <ng-template #dropdownContainer libTimepicker [originEl]=\"input\" [openStatus]=\"openStatus()\" (statusEmitter)=\"closeDropdown()\">\n <div *ngIf=\"openStatus()\" class=\"timepicker-dropdown\" [ngStyle]=\"{ width: dropdownWidth() || inputWidth() }\">\n <ul #dropdown>\n <li #timeInterval (click)=\"onTimeSelect(interval)\" *ngFor=\"let interval of timeIntervals(); index as i\" [ngClass]=\"{ highlight: i === isHighlighted() }\">\n {{ interval }}\n <div class=\"ic-ui-check-24 selected-icon\" *ngIf=\"interval === chosenTime()\"></div>\n </li>\n </ul>\n </div>\n </ng-template>\n</div>\n", styles: [":root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.h1{font-size:40px;font-weight:400;letter-spacing:0px;line-height:48px}.h2{font-size:32px;font-weight:400;letter-spacing:0px;line-height:40px}.h3{font-size:28px;font-weight:400;letter-spacing:0px;line-height:36px}.h4{font-size:24px;font-weight:400;letter-spacing:0px;line-height:32px}.h5-b{font-size:20px;font-weight:700;letter-spacing:.25px;line-height:28px}.h5{font-size:20px;font-weight:400;letter-spacing:.15px;line-height:28px}.h6-b{font-size:16px;font-weight:700;letter-spacing:0px;line-height:24px}.h6{font-size:16px;font-weight:400;letter-spacing:0px;line-height:24px}.p{font-size:16px;font-weight:400;letter-spacing:0px;line-height:180%}.h7-b{font-size:14px;font-weight:700;letter-spacing:.25px;line-height:20px}.h7{font-size:14px;font-weight:400;letter-spacing:.2px;line-height:20px}.h8-b{font-size:12px;font-weight:700;letter-spacing:.25px;line-height:18px}.h8{font-size:12px;font-weight:400;letter-spacing:.2px;line-height:18px}.h9{font-size:10px;font-weight:400;letter-spacing:0px;line-height:15px}.btn-lg-b{font-size:16px;font-weight:700;letter-spacing:.5px;line-height:24px}.btn-lg{font-size:16px;font-weight:400;letter-spacing:.2px;line-height:24px}.btn-sm{font-size:14px;font-weight:400;letter-spacing:.25px;line-height:20px}.btn-link{font-size:16px;font-weight:400;letter-spacing:0px;line-height:24px}.display-1{font-size:48px;font-weight:400;letter-spacing:0px;line-height:56px}.display-2{font-size:14px;font-weight:400;letter-spacing:.5px;line-height:20px}*{box-sizing:border-box;font-family:Lato}.timepicker-container{display:inline-block;position:relative}input{text-align:center;border:none;border-bottom:1px solid var(--border-primary, #E0E0E0);outline:none;height:100%;width:100px;padding:4px 16px}input:hover{background:var(--brand-primary-hover, #F0F3FA)}input:focus,input:active{background:var(--brand-primary-active, #DAE1F3);border-bottom:1px solid var(--brand-primary, #0937B2)}.timepicker-dropdown{position:absolute;top:calc(100% + 4px);left:0;max-height:200px;overflow-y:auto;border:1px solid var(--border-primary, #E0E0E0);box-shadow:0 12px 24px var(--shadow-primary, rgba(0, 0, 0, .12)),0 4px 8px var(--shadow-primary, rgba(0, 0, 0, .12));border-radius:4px;padding:8px;background:var(--bg-primary, #FFFFFF)}.timepicker-dropdown::-webkit-scrollbar{display:none}.timepicker-dropdown ul{margin:0;padding:0}.timepicker-dropdown li{text-align:start;list-style:none;padding:6px 12px;cursor:pointer;font-size:14px;color:var(--text-primary, #181F33);display:flex;justify-content:space-between;align-items:center}.timepicker-dropdown li:hover{background:var(--brand-primary-hover, #F0F3FA);border-radius:6px}.timepicker-dropdown li .selected-icon{font-weight:900}.highlight{background-color:var(--brand-primary-hover, #F0F3FA);border-radius:6px}.invalid{background:var(--brand-error-lighter, #FAE1EA)!important;border-bottom:1px solid var(--brand-error, #B00020)!important}.disable{pointer-events:none!important;opacity:.5!important}\n"] }]
538
+ args: [{ selector: "mis-timepicker", template: "<div class=\"timepicker-container\" [ngStyle]=\"{ height: height() }\" [ngClass]=\"{'disable': disable()}\">\n <input\n type=\"text\"\n [ngModel]=\"chosenTime()\"\n (ngModelChange)=\"onTimeChange($event)\"\n [readOnly]=\"disableUserInput()\"\n [ngClass]=\"{ invalid: isInvalid() || !rangeValidity() }\"\n [ngStyle]=\"{ width: inputWidth(), fontSize: fontSize() }\"\n (click)=\"openDropdown()\"\n misToolTip\n [showToolTip]=\"showTooltip() && (isInvalid() || !rangeValidity()) && dispayToolTip\"\n [text]=\"'Invalid Time'\"\n [position]=\"'top'\"\n [showOnHover]=\"false\"\n #input\n cdkOverlayOrigin\n class=\"h7\"\n />\n\n <ng-template #dropdownContainer libTimepicker [originEl]=\"input\" [openStatus]=\"openStatus()\" (statusEmitter)=\"closeDropdown()\">\n <div *ngIf=\"openStatus()\" class=\"timepicker-dropdown\" [ngStyle]=\"{ width: dropdownWidth() || inputWidth() }\">\n <ul #dropdown>\n <li #timeInterval (click)=\"onTimeSelect(interval)\" *ngFor=\"let interval of timeIntervals(); index as i\" [ngClass]=\"{ highlight: i === isHighlighted() }\" [ngStyle]=\"{ fontSize: fontSize() }\">\n {{ interval }}\n <div class=\"ic-ui-check-24 selected-icon\" *ngIf=\"interval === chosenTime()\"></div>\n </li>\n </ul>\n </div>\n </ng-template>\n</div>\n", styles: [":root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}.h1{font-size:40px;font-weight:400;letter-spacing:0px;line-height:48px}.h2{font-size:32px;font-weight:400;letter-spacing:0px;line-height:40px}.h3{font-size:28px;font-weight:400;letter-spacing:0px;line-height:36px}.h4{font-size:24px;font-weight:400;letter-spacing:0px;line-height:32px}.h5-b{font-size:20px;font-weight:700;letter-spacing:.25px;line-height:28px}.h5{font-size:20px;font-weight:400;letter-spacing:.15px;line-height:28px}.h6-b{font-size:16px;font-weight:700;letter-spacing:0px;line-height:24px}.h6{font-size:16px;font-weight:400;letter-spacing:0px;line-height:24px}.p{font-size:16px;font-weight:400;letter-spacing:0px;line-height:180%}.h7-b{font-size:14px;font-weight:700;letter-spacing:.25px;line-height:20px}.h7{font-size:14px;font-weight:400;letter-spacing:.2px;line-height:20px}.h8-b{font-size:12px;font-weight:700;letter-spacing:.25px;line-height:18px}.h8{font-size:12px;font-weight:400;letter-spacing:.2px;line-height:18px}.h9{font-size:10px;font-weight:400;letter-spacing:0px;line-height:15px}.btn-lg-b{font-size:16px;font-weight:700;letter-spacing:.5px;line-height:24px}.btn-lg{font-size:16px;font-weight:400;letter-spacing:.2px;line-height:24px}.btn-sm{font-size:14px;font-weight:400;letter-spacing:.25px;line-height:20px}.btn-link{font-size:16px;font-weight:400;letter-spacing:0px;line-height:24px}.display-1{font-size:48px;font-weight:400;letter-spacing:0px;line-height:56px}.display-2{font-size:14px;font-weight:400;letter-spacing:.5px;line-height:20px}*{box-sizing:border-box;font-family:Lato}.timepicker-container{display:inline-block;position:relative}input{text-align:center;border:none;border-bottom:1px solid var(--border-primary, #E0E0E0);outline:none;height:100%;width:100px;padding:4px 16px}input:hover{background:var(--brand-primary-hover, #F0F3FA)}input:focus,input:active{background:var(--brand-primary-active, #DAE1F3);border-bottom:1px solid var(--brand-primary, #0937B2)}.timepicker-dropdown{position:absolute;top:calc(100% + 4px);left:0;max-height:200px;overflow-y:auto;border:1px solid var(--border-primary, #E0E0E0);box-shadow:0 12px 24px var(--shadow-primary, rgba(0, 0, 0, .12)),0 4px 8px var(--shadow-primary, rgba(0, 0, 0, .12));border-radius:4px;padding:8px;background:var(--bg-primary, #FFFFFF)}.timepicker-dropdown::-webkit-scrollbar{display:none}.timepicker-dropdown ul{margin:0;padding:0}.timepicker-dropdown li{text-align:start;list-style:none;padding:6px 12px;cursor:pointer;font-size:14px;color:var(--text-primary, #181F33);display:flex;justify-content:space-between;align-items:center}.timepicker-dropdown li:hover{background:var(--brand-primary-hover, #F0F3FA);border-radius:6px}.timepicker-dropdown li .selected-icon{font-weight:900}.highlight{background-color:var(--brand-primary-hover, #F0F3FA);border-radius:6px}.invalid{background:var(--brand-error-lighter, #FAE1EA)!important;border-bottom:1px solid var(--brand-error, #B00020)!important}.disable{pointer-events:none!important;opacity:.5!important}\n"] }]
512
539
  }], () => [], { input: [{
513
540
  type: ViewChild,
514
541
  args: ["input", { static: true }]
@@ -1 +1 @@
1
- {"version":3,"file":"mis-crystal-design-system-timepicker.mjs","sources":["../../../projects/mis-components/timepicker/timepicker.directive.ts","../../../projects/mis-components/timepicker/timepicker.component.html","../../../projects/mis-components/timepicker/timepicker.component.ts","../../../projects/mis-components/timepicker/timepicker.module.ts","../../../projects/mis-components/timepicker/mis-crystal-design-system-timepicker.ts"],"sourcesContent":["import { Directive, Output, TemplateRef } from '@angular/core';\nimport { EventEmitter, Input, ViewContainerRef } from \"@angular/core\";\nimport { ConnectionPositionPair, Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { TemplatePortal } from \"@angular/cdk/portal\";\n\n@Directive({\n selector: '[libTimepicker]'\n})\nexport class TimepickerDirective {\n private openStatus: boolean = false;\n @Input('originEl') originEl : any;\n @Output() statusEmitter = new EventEmitter<boolean>(); \n\n @Input('openStatus') set createOverlayOnInput(openStatus){\n this.openStatus = openStatus;\n if(this.originEl && this.openStatus) {\n this.createOverlay(this.originEl);\n }\n }; \n private overlayRef!: OverlayRef;\n constructor(private templateRef: TemplateRef<Element>, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {}\n\n createOverlay(origin: any): void {\n const positions = [\n new ConnectionPositionPair({ originX: \"start\", originY: \"bottom\" }, { overlayX: \"start\", overlayY: \"top\" }, 0, 4),\n new ConnectionPositionPair({ originX: \"end\", originY: \"bottom\" }, { overlayX: \"end\", overlayY: \"top\" }, 0, 4)\n ];\n\n const overlayConfig = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: \"cdk-overlay-transparent-backdrop\",\n positionStrategy: this.overlay\n .position()\n //connecting the dropdown overlay to the input element\n .flexibleConnectedTo(origin)\n .withPositions([...positions])\n .withPush(true)\n });\n\n this.overlayRef = this.overlay.create(overlayConfig);\n const dropdownPortal = new TemplatePortal(this.templateRef, this.viewContainerRef);\n this.overlayRef.attach(dropdownPortal);\n this.overlayRef.backdropClick().subscribe(resp => {\n this.openStatus = false;\n this.statusEmitter.emit(false);\n if(this.overlay){\n this.overlayRef.detach();\n }\n });\n }\n\n destroyOverlay(){\n if(this.overlay){\n this.overlayRef.detach();\n }\n }\n \n}\n","<div class=\"timepicker-container\" [ngStyle]=\"{ height: height() }\" [ngClass]=\"{'disable': disable()}\">\n <input\n type=\"text\"\n [ngModel]=\"chosenTime()\"\n (ngModelChange)=\"onTimeChange($event)\"\n [ngClass]=\"{ invalid: isInvalid() || !rangeValidity() }\"\n [ngStyle]=\"{ width: inputWidth() }\"\n (click)=\"openDropdown()\"\n misToolTip\n [showToolTip]=\"showTooltip() && (isInvalid() || !rangeValidity()) && dispayToolTip\"\n [text]=\"'Invalid Time'\"\n [position]=\"'top'\"\n [showOnHover]=\"false\"\n #input\n cdkOverlayOrigin\n class=\"h7\"\n />\n\n <ng-template #dropdownContainer libTimepicker [originEl]=\"input\" [openStatus]=\"openStatus()\" (statusEmitter)=\"closeDropdown()\">\n <div *ngIf=\"openStatus()\" class=\"timepicker-dropdown\" [ngStyle]=\"{ width: dropdownWidth() || inputWidth() }\">\n <ul #dropdown>\n <li #timeInterval (click)=\"onTimeSelect(interval)\" *ngFor=\"let interval of timeIntervals(); index as i\" [ngClass]=\"{ highlight: i === isHighlighted() }\">\n {{ interval }}\n <div class=\"ic-ui-check-24 selected-icon\" *ngIf=\"interval === chosenTime()\"></div>\n </li>\n </ul>\n </div>\n </ng-template>\n</div>\n","import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild, ViewChildren, input, output, signal, computed, effect, untracked } from \"@angular/core\";\nimport { ITime } from \"./time.namespace\";\nimport { TimepickerDirective } from \"./timepicker.directive\";\nimport { ToolTipDirective } from \"mis-crystal-design-system/tooltip\";\n\nimport dayjs from 'dayjs';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(customParseFormat);\n\n\n@Component({\n selector: \"mis-timepicker\",\n templateUrl: \"./timepicker.component.html\",\n styleUrls: [\"./timepicker.component.scss\"]\n})\nexport class TimePickerComponent implements OnInit, OnDestroy {\n // Convert to signals for better performance and change detection\n currTime = signal<string>('');\n chosenTime = signal<string>('');\n openStatus = signal<boolean>(false);\n isHighlighted = signal<number>(0);\n isInvalid = signal<boolean>(false);\n timeIntervals = signal<string[]>([]);\n shouldScroll = signal<boolean>(false);\n userInputFlag = signal<boolean>(false);\n givenTimeFlag = signal<boolean>(true);\n // Signal-based inputs with backward compatibility\n clockFormat = input<number>(12);\n timeFormat!: string;\n \n timezone = input<string>(\"Asia/Kolkata\");\n height = input<string>(\"max-content\");\n inputWidth = input<string>(\"100px\");\n dropdownWidth = input<string | undefined>(undefined);\n interval = input<number>(15);\n dateAsEpoch = input<number>(dayjs.tz(dayjs(), \"Asia/Kolkata\").valueOf());\n firstInterval = input<number>();\n rangeValidity = input<boolean>(true);\n showTooltip = input<boolean>(true);\n dispayToolTip: boolean = this.showTooltip();\n givenTime = input<number>();\n minTime = input<number | undefined>(undefined);\n triggerChange = input<boolean>(true);\n disable = input<boolean>(false);\n \n // Internal state for computed first interval\n private computedFirstInterval: number | null = null;\n private _isInitializing = false;\n \n // Signal-based output with backward compatibility\n timeEmitter = output<ITime>();\n @ViewChild(\"input\", { static: true }) input: ElementRef;\n @ViewChild(TimepickerDirective) timepickerDirective: TimepickerDirective;\n @ViewChild(ToolTipDirective) tooltipDirective: ToolTipDirective;\n\n // gets all the li elements from the dropdown and scrolls to the highlighted element\n @ViewChildren(\"timeInterval\") set timeIntervalRefs(intervals) {\n intervals.forEach(interval => {\n if (interval.nativeElement.classList[0] === \"highlight\") {\n const highlighted = interval.nativeElement;\n setTimeout(() => highlighted.scrollIntoView({ block: \"center\" }));\n }\n });\n }\n\n constructor(){\n // Effect to handle triggerChange from parent component (timerangepicker)\n effect(() => {\n const triggerValue = this.triggerChange();\n const firstIntervalValue = this.firstInterval();\n \n // Only update if not during user input and firstInterval is provided\n if (!untracked(() => this.userInputFlag()) && firstIntervalValue && !this._isInitializing) {\n const newTime = dayjs.tz(firstIntervalValue, untracked(() => this.timezone())).format(this.timeFormat);\n \n // Only update if the time actually changed\n if (untracked(() => this.chosenTime()) !== newTime) {\n // Use setTimeout to defer signal writes and avoid circular dependencies\n setTimeout(() => {\n this.chosenTime.set(newTime);\n this.isInvalid.set(!this.checkTimeValidity(newTime.trim()));\n \n // CRITICAL FIX: Repopulate dropdown when firstInterval changes\n this.populateDropdown();\n \n // Recalculate closest interval\n this.calculateClosestInterval(newTime);\n \n // Emit the updated time\n const timedayjs = this.getdayjs(newTime);\n this.emitTime({\n valid: !this.isInvalid(),\n time: newTime,\n epoch: timedayjs.valueOf()\n });\n }, 0);\n }\n }\n });\n }\n \n ngOnInit(): void {\n this._isInitializing = true;\n // Ensure timeFormat is set before initialization\n this.timeFormat = this.clockFormat() === 12 ? \"hh:mm a\" : \"HH:mm\";\n \n // Initialize chosenTime - use firstInterval from parent if available, otherwise calculate\n if (!this.givenTime() && !this.minTime()) {\n let initialTime;\n \n // If firstInterval is provided by parent (timerangepicker), use it\n if (this.firstInterval()) {\n initialTime = dayjs.tz(this.firstInterval(), this.timezone()).format(this.timeFormat);\n } else {\n // Get current time and round to nearest interval using original logic\n const now = dayjs.tz(dayjs(), this.timezone());\n const interval = this.interval();\n const minutes = now.minute();\n const offset = interval - (minutes % interval);\n \n // Round to next interval if we're past halfway point\n const roundedTime = offset >= interval / 2 \n ? now.add(offset, \"m\").second(0).millisecond(0)\n : now.subtract(interval - offset, \"m\").second(0).millisecond(0);\n \n initialTime = roundedTime.format(this.timeFormat);\n }\n \n this.chosenTime.set(initialTime);\n \n // Set userInputFlag to false to avoid validation issues during initialization\n this.userInputFlag.set(false);\n \n // Populate dropdown first to compute the first interval\n this.populateDropdown();\n \n // Now validate with the computed first interval\n this.isInvalid.set(!this.checkTimeValidity(this.chosenTime().trim()));\n \n let chosenTimedayjs = this.getdayjs(this.chosenTime());\n // Defer emission to avoid ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n this.emitTime({\n valid: !this.isInvalid(),\n time: this.chosenTime(),\n epoch: chosenTimedayjs.valueOf()\n });\n }, 0);\n \n // Calculate closest interval\n this.calculateClosestInterval(this.chosenTime());\n \n this._isInitializing = false;\n } else if (this.givenTime()) {\n // When givenTime is present, use the given time as the initial value\n // but the dropdown will start from 12:00 AM\n this.chosenTime.set(dayjs.tz(this.givenTime(), this.timezone()).format(this.timeFormat));\n this.userInputFlag.set(false);\n \n // Populate dropdown first to compute the first interval\n this.populateDropdown();\n \n // Now validate with the computed first interval\n this.isInvalid.set(!this.checkTimeValidity(this.chosenTime().trim()));\n \n let chosenTimedayjs = this.getdayjs(this.chosenTime());\n // Defer emission to avoid ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n this.emitTime({\n valid: !this.isInvalid(),\n time: this.chosenTime(),\n epoch: chosenTimedayjs.valueOf()\n });\n }, 0);\n \n // Calculate closest interval\n this.calculateClosestInterval(this.chosenTime());\n \n this._isInitializing = false;\n } else if (this.minTime()) {\n // Use min time directly - this matches original behavior\n this.chosenTime.set(dayjs.tz(this.minTime(), this.timezone()).format(this.timeFormat));\n this.userInputFlag.set(false);\n \n // Populate dropdown first to compute the first interval\n this.populateDropdown();\n \n // For minTime, validation should only check format, not time comparison\n // This matches the original logic where minTime bypasses time validation\n this.isInvalid.set(!this.checkTimeValidity(this.chosenTime().trim()));\n \n let chosenTimedayjs = this.getdayjs(this.chosenTime());\n // Defer emission to avoid ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n this.emitTime({\n valid: !this.isInvalid(),\n time: this.chosenTime(),\n epoch: chosenTimedayjs.valueOf()\n });\n }, 0);\n \n // Calculate closest interval\n this.calculateClosestInterval(this.chosenTime());\n \n this._isInitializing = false;\n }\n }\n\n\n emitTime(data: ITime): void {\n this.timeEmitter.emit(data);\n }\n\n // function to get dayjs object when time is given in string\n getdayjs(time: string = '00:00'){\n if(!time || typeof time !== 'string') {\n throw new Error('Time must be a string');\n }\n\n let hours: number;\n let minutes: number;\n\n if(this.clockFormat() === 24) {\n hours = parseInt(time.split(':')[0]);\n minutes = parseInt(time.split(':')[1]);\n } else {\n const timeParts = time.split(' ');\n const AM_PM = timeParts?.[1];\n hours = parseInt(timeParts?.[0]?.split(':')?.[0]);\n minutes = parseInt(timeParts?.[0]?.split(':')?.[1]);\n\n if(AM_PM?.toUpperCase() === 'PM' && hours !== 12) {\n hours += 12;\n } else if(AM_PM?.toUpperCase() === 'AM' && hours === 12) {\n hours = 0;\n }\n }\n\n // Use the date from dateAsEpoch but set the time to the parsed hours and minutes\n const baseDate = dayjs.tz(this.dateAsEpoch(), this.timezone());\n const result = baseDate.hour(hours).minute(minutes).second(0).millisecond(0);\n return result;\n }\n\n closeDropdown() {\n this.dispayToolTip = false;\n this.userInputFlag.set(false);\n this.openStatus.set(false);\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n }\n\n // toggle timepicker dropdown\n openDropdown(): void {\n this.dispayToolTip = true;\n this.openStatus.set(true);\n }\n\n checkTimeValidity(time: string): boolean {\n const RE12 = /^(([0][1-9]|1[0-2]):([0-5][0-9])( )?(am|pm|AM|PM))$/i;\n const RE24 = /^([01][0-9]|2[0-3]):[0-5][0-9]$/;\n const RE = this.clockFormat() === 12 ? RE12 : RE24;\n\n // Check if the time format is valid first\n if (!time.match(RE)) {\n return false;\n }\n\n // Restore proper validation logic\n const timedayjs = this.getdayjs(time);\n let flag: boolean = false;\n\n // Original logic: if minTime, givenTime, or firstInterval is start of day, only check format\n if (\n this.minTime() || \n this.givenTime() ||\n (this.firstInterval() &&\n dayjs.tz(this.firstInterval(), this.timezone()).format(this.timeFormat).valueOf() === dayjs.tz(dayjs(), this.timezone()).startOf(\"day\").format(this.timeFormat).valueOf()) \n ) {\n // Only check format validation, not time comparison\n flag = time.match(RE) ? true : false;\n } else {\n // Check against current time for normal cases\n const currentTime = dayjs.tz(dayjs(), this.timezone());\n const timeDiff = timedayjs.diff(currentTime, \"m\");\n flag = timeDiff >= 0;\n }\n\n return flag;\n }\n\n // update chosen time as soon as the user clicks on an interval\n onTimeSelect(time: string): void {\n this.isInvalid.set(!this.checkTimeValidity(time.trim()));\n if (!this.isInvalid()) {\n this.chosenTime.set(time);\n this.calculateClosestInterval(this.chosenTime());\n }\n\n const timedayjs = this.getdayjs(time);\n this.emitTime({\n valid: !this.isInvalid(),\n time: time,\n epoch: timedayjs.valueOf() \n });\n this.openStatus.set(false);\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n }\n\n // checks validity of time on input change and calculates the closest interval\n onTimeChange(time: string): void {\n // Set user input flag to prevent effects from overriding\n this.userInputFlag.set(true);\n \n // Update the chosenTime signal\n this.chosenTime.set(time);\n const isValid = this.checkTimeValidity(time.trim());\n this.isInvalid.set(!isValid);\n\n // Clear user input flag after a delay to allow effects to work again\n setTimeout(() => {\n this.userInputFlag.set(false);\n }, 1000); // 1 second delay\n\n if (!this.isInvalid()) {\n this.openStatus.set(false);\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n this.calculateClosestInterval(time);\n }\n const timedayjs = this.getdayjs(time);\n this.emitTime({\n valid: !this.isInvalid(),\n time: time,\n epoch: timedayjs.valueOf() \n });\n }\n\n calculateClosestInterval(time: string): void {\n let roundedEpoch: number;\n // Converting time and date to a dayjs object \n const chosenDate = dayjs.tz(this.dateAsEpoch(), this.timezone()).format(\"DD-MM-YYYY\"); // 05-01-2024\n const parsedTimeWithDate = dayjs.tz(`${chosenDate} ${time}`, `DD-MM-YYYY ${this.timeFormat}`, this.timezone());\n // Converting dayjs object to epoch\n const chosenTimeEpoch = parsedTimeWithDate.valueOf();\n const offset = this.interval() - (dayjs.tz(chosenTimeEpoch, this.timezone()).minute() % this.interval());\n\n if (this.minTime() && !this.givenTime()) {\n this.isHighlighted.set(0);\n return;\n }\n roundedEpoch = offset >= this.interval() / 2 ? (dayjs.tz(chosenTimeEpoch, this.timezone()).subtract(this.interval() - offset, \"m\")).valueOf() : (dayjs.tz(chosenTimeEpoch, this.timezone()).add( offset, \"m\")).valueOf();\n\n // finding the index of element that needs to be highlighted\n if ( chosenTimeEpoch > dayjs.tz(this.dateAsEpoch(), this.timezone()).endOf(\"day\").subtract(this.interval(), \"m\").valueOf()) {\n this.isHighlighted.set(this.timeIntervals().length - 1);\n } else {\n const roundedEpochdayjs = dayjs.tz(roundedEpoch, this.timezone());\n this.isHighlighted.set(this.timeIntervals().findIndex(interval => {\n const intervalObj = dayjs.tz(`${chosenDate} ${interval}`, `DD-MM-YYYY ${this.timeFormat}`, this.timezone());\n return intervalObj.isSame(roundedEpochdayjs);\n }));\n }\n }\n\n\n // populates the dropdown according to the first interval received\n populateDropdown(): void {\n this.timeIntervals.set([]);\n\n // Compute the effective first interval\n let effectiveFirstInterval = this.firstInterval();\n\n // if picker is used as an individual component\n if (!effectiveFirstInterval) {\n // firstInterval is initialised according to the current time\n // if the date is same as the current date\n if (dayjs.tz(this.dateAsEpoch(), this.timezone()).format(\"DD-MM-YYYY\") === dayjs.tz(dayjs(), this.timezone()).format(\"DD-MM-YYYY\") && !this.minTime()) {\n const offset = this.interval() - (dayjs.tz(dayjs(), this.timezone()).minute() % this.interval());\n effectiveFirstInterval = dayjs.tz(dayjs(), this.timezone()).add(offset, \"m\").valueOf();\n }\n // if minimum time to show is provided\n else if(this.minTime()){\n const minTimeDayjs = dayjs.tz(this.minTime(), this.timezone());\n const offset = this.interval() - (minTimeDayjs.minute() % this.interval());\n effectiveFirstInterval = minTimeDayjs.add(offset, \"m\").valueOf();\n }\n // else the firstInterval is initialised as start of day\n else {\n effectiveFirstInterval = dayjs.tz(dayjs(), this.timezone()).startOf(\"day\").valueOf();\n }\n }\n\n if(this.givenTime()){\n // When givenTime is present, always start from 12:00 AM (start of day)\n // regardless of whether the time has passed or not\n effectiveFirstInterval = dayjs.tz(this.dateAsEpoch(), this.timezone()).startOf('day').valueOf();\n this.givenTimeFlag.set(false);\n }\n\n // Store the computed first interval for later use\n this.computedFirstInterval = effectiveFirstInterval;\n\n const dateAsString = dayjs.tz(this.dateAsEpoch(), this.timezone()).format('DD-MM-YYYY');\n const intervalAsString = dayjs.tz(effectiveFirstInterval, this.timezone()).format(this.timeFormat);\n let start = dayjs.tz(`${dateAsString} ${intervalAsString}`, `DD-MM-YYYY ${this.timeFormat}`, this.timezone());\n const end = dayjs.tz(this.dateAsEpoch(), this.timezone()).endOf('d');\n \n while (start.valueOf() < end.valueOf()) {\n this.timeIntervals.update(intervals => [...intervals, start.format(this.timeFormat)]);\n start = start.add(this.interval(), \"m\");\n }\n\n // NEW: Handle end-of-day case - if firstInterval is at or very close to end of day\n // and we're on the same date, show only 11:59 PM\n const endOfDay = dayjs.tz(this.dateAsEpoch(), this.timezone()).endOf(\"d\");\n const firstIntervalDayjs = dayjs.tz(effectiveFirstInterval, this.timezone());\n \n // Check if firstInterval is at or very close to end of day (within 1 minute)\n const isAtEndOfDay = firstIntervalDayjs.isSame(endOfDay, 'day') && \n firstIntervalDayjs.diff(endOfDay, 'minute') >= -1;\n \n if (isAtEndOfDay || this.timeIntervals().length === 0) {\n // Clear existing intervals and add only 11:59 PM\n this.timeIntervals.set([]);\n this.timeIntervals.update(intervals => [...intervals, endOfDay.format(this.timeFormat)]);\n }\n }\n\n ngOnDestroy() {\n if (this.tooltipDirective) this.tooltipDirective.hideToolTip();\n }\n}\n\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TimePickerComponent } from \"./timepicker.component\";\nimport { ToolTipModule } from \"mis-crystal-design-system/tooltip\";\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { TimepickerDirective } from './timepicker.directive';\n\n@NgModule({\n declarations: [TimePickerComponent, TimepickerDirective],\n imports: [CommonModule, FormsModule, ToolTipModule, OverlayModule],\n exports: [TimePickerComponent]\n})\nexport class TimePickerModule {\n static forRoot(): ModuleWithProviders<TimePickerModule> {\n return { ngModule: TimePickerModule, providers: [] };\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;MAQa,mBAAmB,CAAA;IAK9B,IAA0B,oBAAoB,CAAC,UAAU,EAAA;AACvD,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;AACnC,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACnC;KACF;;AAED,IAAA,WAAA,CAAoB,WAAiC,EAAU,OAAgB,EAAU,gBAAkC,EAAA;QAAvG,IAAW,CAAA,WAAA,GAAX,WAAW,CAAsB;QAAU,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAAU,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAXnH,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAE1B,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW,CAAC;KASyE;AAE/H,IAAA,aAAa,CAAC,MAAW,EAAA;AACvB,QAAA,MAAM,SAAS,GAAG;YAChB,IAAI,sBAAsB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACjH,IAAI,sBAAsB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;SAC9G,CAAC;AAEF,QAAA,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC;AACtC,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,kCAAkC;YACjD,gBAAgB,EAAE,IAAI,CAAC,OAAO;AAC3B,iBAAA,QAAQ,EAAE;;iBAEV,mBAAmB,CAAC,MAAM,CAAC;AAC3B,iBAAA,aAAa,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;iBAC7B,QAAQ,CAAC,IAAI,CAAC;AAClB,SAAA,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACrD,QAAA,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACnF,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,IAAI,IAAG;AAC/C,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,YAAA,IAAG,IAAI,CAAC,OAAO,EAAC;AACd,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;aAC1B;AACH,SAAC,CAAC,CAAC;KACJ;IAED,cAAc,GAAA;AACZ,QAAA,IAAG,IAAI,CAAC,OAAO,EAAC;AACd,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;SAC1B;KACF;oHA/CU,mBAAmB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA;oEAAnB,mBAAmB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,eAAA,EAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,CAAA,CAAA,EAAA,YAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;iFAAnB,mBAAmB,EAAA,CAAA;cAH/B,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACT,gBAAA,QAAQ,EAAE,iBAAiB;AAC5B,aAAA,CAAA;iGAGoB,QAAQ,EAAA,CAAA;kBAA1B,KAAK;mBAAC,UAAU,CAAA;YACP,aAAa,EAAA,CAAA;kBAAtB,MAAM;YAEmB,oBAAoB,EAAA,CAAA;kBAA7C,KAAK;mBAAC,YAAY,CAAA;;;;;;;;;;;ICUX,EAAkF,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;;;;IAFpF,EAAyJ,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA;AAAvI,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,yEAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,gCAAsB,CAAC,CAAA,EAAA,CAAA,CAAA;IAChD,EACA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAA4E,CAAA,UAAA,CAAA,CAAA,EAAA,2DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC9E,EAAK,CAAA,YAAA,EAAA,CAAA;;;;;IAHmG,EAAgD,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,EAAA,IAAA,KAAA,MAAA,CAAA,aAAA,EAAA,CAAA,CAAA,CAAA;IACtJ,EACA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADA,EACA,CAAA,kBAAA,CAAA,GAAA,EAAA,WAAA,EAAA,GAAA,CAAA,CAAA;IAA2C,EAA+B,CAAA,SAAA,EAAA,CAAA;IAA/B,EAA+B,CAAA,UAAA,CAAA,MAAA,EAAA,WAAA,KAAA,MAAA,CAAA,UAAA,EAAA,CAAA,CAAA;;;AAH9E,IADF,8BAA6G,CAC7F,CAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;IACZ,EAAyJ,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;AAK7J,IADE,iBAAK,EACD,CAAA;;;IAPgD,EAAsD,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,EAAA,MAAA,CAAA,aAAA,EAAA,IAAA,MAAA,CAAA,UAAA,EAAA,CAAA,CAAA,CAAA;IAEhC,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,aAAA,EAAA,CAAA,CAAA;;;IAFhG,EAA6G,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;;;IAAvG,EAAkB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,UAAA,EAAA,CAAA,CAAA;;ACT5B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAClB,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACvB,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;MAQnB,mBAAmB,CAAA;;IAyC9B,IAAkC,gBAAgB,CAAC,SAAS,EAAA;AAC1D,QAAA,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;YAC3B,IAAI,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;AACvD,gBAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC;AAC3C,gBAAA,UAAU,CAAC,MAAM,WAAW,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;aACnE;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,WAAA,GAAA;;AAhDA,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAS,EAAE,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAS,EAAE,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AACnC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAW,EAAE,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAU,IAAI,CAAC,CAAC;;AAEtC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAGhC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,cAAc,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAS,aAAa,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,OAAO,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAqB,SAAS,CAAC,CAAC;AACrD,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAC7B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,cAAc,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,IAAa,CAAA,aAAA,GAAG,KAAK,EAAU,CAAC;AAChC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,IAAI,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,IAAI,CAAC,CAAC;AACnC,QAAA,IAAA,CAAA,aAAa,GAAY,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAS,CAAA,SAAA,GAAG,KAAK,EAAU,CAAC;AAC5B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,SAAS,CAAC,CAAC;AAC/C,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,IAAI,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;;QAGxB,IAAqB,CAAA,qBAAA,GAAkB,IAAI,CAAC;QAC5C,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;;QAGhC,IAAW,CAAA,WAAA,GAAG,MAAM,EAAS,CAAC;;QAiB5B,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AAC1C,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;;AAGhD,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,kBAAkB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzF,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,kBAAkB,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;AAGvG,gBAAA,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,OAAO,EAAE;;oBAElD,UAAU,CAAC,MAAK;AACd,wBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7B,wBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;;wBAG5D,IAAI,CAAC,gBAAgB,EAAE,CAAC;;AAGxB,wBAAA,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;;wBAGvC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;wBACzC,IAAI,CAAC,QAAQ,CAAC;AACZ,4BAAA,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;AACxB,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE;AAC3B,yBAAA,CAAC,CAAC;qBACJ,EAAE,CAAC,CAAC,CAAC;iBACP;aACF;AACH,SAAC,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;;AAE5B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC;;AAGlE,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACxC,YAAA,IAAI,WAAW,CAAC;;AAGhB,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;gBACxB,WAAW,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACvF;iBAAM;;AAEL,gBAAA,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/C,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjC,gBAAA,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,QAAQ,IAAI,OAAO,GAAG,QAAQ,CAAC,CAAC;;AAG/C,gBAAA,MAAM,WAAW,GAAG,MAAM,IAAI,QAAQ,GAAG,CAAC;AACxC,sBAAE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;sBAC7C,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBAElE,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACnD;AAED,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;;AAGjC,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;YAG9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;;AAGxB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAEtE,IAAI,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;;YAEvD,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,QAAQ,CAAC;AACZ,oBAAA,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;AACxB,oBAAA,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE;AACvB,oBAAA,KAAK,EAAE,eAAe,CAAC,OAAO,EAAE;AACjC,iBAAA,CAAC,CAAC;aACJ,EAAE,CAAC,CAAC,CAAC;;YAGN,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAEjD,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAC9B;AAAM,aAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;;;YAG3B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACzF,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;YAG9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;;AAGxB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAEtE,IAAI,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;;YAEvD,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,QAAQ,CAAC;AACZ,oBAAA,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;AACxB,oBAAA,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE;AACvB,oBAAA,KAAK,EAAE,eAAe,CAAC,OAAO,EAAE;AACjC,iBAAA,CAAC,CAAC;aACJ,EAAE,CAAC,CAAC,CAAC;;YAGN,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAEjD,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAC9B;AAAM,aAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;;YAEzB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACvF,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;YAG9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;;;AAIxB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAEtE,IAAI,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;;YAEvD,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,QAAQ,CAAC;AACZ,oBAAA,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;AACxB,oBAAA,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE;AACvB,oBAAA,KAAK,EAAE,eAAe,CAAC,OAAO,EAAE;AACjC,iBAAA,CAAC,CAAC;aACJ,EAAE,CAAC,CAAC,CAAC;;YAGN,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAEjD,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAC9B;KACF;AAGD,IAAA,QAAQ,CAAC,IAAW,EAAA;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7B;;IAGD,QAAQ,CAAC,OAAe,OAAO,EAAA;QAC7B,IAAG,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACpC,YAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;SAC1C;AAED,QAAA,IAAI,KAAa,CAAC;AAClB,QAAA,IAAI,OAAe,CAAC;AAEpB,QAAA,IAAG,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;AAC5B,YAAA,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,YAAA,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACxC;aAAM;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAClC,YAAA,MAAM,KAAK,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;AAC7B,YAAA,KAAK,GAAI,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnD,YAAA,OAAO,GAAG,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAEpD,IAAG,KAAK,EAAE,WAAW,EAAE,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;gBAChD,KAAK,IAAI,EAAE,CAAC;aACb;iBAAM,IAAG,KAAK,EAAE,WAAW,EAAE,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;gBACvD,KAAK,GAAG,CAAC,CAAC;aACX;SACF;;AAGD,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC7E,QAAA,OAAO,MAAM,CAAC;KACf;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,mBAAmB;AAAE,YAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC;KACzE;;IAGD,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAC3B;AAED,IAAA,iBAAiB,CAAC,IAAY,EAAA;QAC5B,MAAM,IAAI,GAAG,sDAAsD,CAAC;QACpE,MAAM,IAAI,GAAG,iCAAiC,CAAC;AAC/C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;;QAGnD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AACnB,YAAA,OAAO,KAAK,CAAC;SACd;;QAGD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,IAAI,GAAY,KAAK,CAAC;;QAG1B,IACE,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,SAAS,EAAE;aACf,IAAI,CAAC,aAAa,EAAE;gBACrB,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,EAC1K;;AAEA,YAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;SACtC;aAAM;;AAEL,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAClD,YAAA,IAAI,GAAG,QAAQ,IAAI,CAAC,CAAC;SACtB;AAED,QAAA,OAAO,IAAI,CAAC;KACb;;AAGD,IAAA,YAAY,CAAC,IAAY,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SAClD;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC;AACZ,YAAA,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;AACxB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE;AAC3B,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,mBAAmB;AAAE,YAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC;KACzE;;AAGD,IAAA,YAAY,CAAC,IAAY,EAAA;;AAEvB,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;AAG7B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;;QAG7B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChC,SAAC,EAAE,IAAI,CAAC,CAAC;AAET,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,mBAAmB;AAAE,gBAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC;AACxE,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;SACrC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC;AACZ,YAAA,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;AACxB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE;AAC3B,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,wBAAwB,CAAC,IAAY,EAAA;AACnC,QAAA,IAAI,YAAoB,CAAC;;QAEzB,MAAM,UAAU,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACtF,MAAM,kBAAkB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,EAAE,CAAc,WAAA,EAAA,IAAI,CAAC,UAAU,CAAE,CAAA,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;;AAE/G,QAAA,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,EAAE,CAAC;AACrD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEzG,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACvC,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1B,OAAO;SACR;AACD,QAAA,YAAY,GAAG,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC;;AAGzN,QAAA,IAAK,eAAe,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;AAC1H,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACzD;aAAM;AACL,YAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClE,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,QAAQ,IAAG;gBAC/D,MAAM,WAAW,GAAG,KAAK,CAAC,EAAE,CAAC,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,EAAE,CAAc,WAAA,EAAA,IAAI,CAAC,UAAU,CAAE,CAAA,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5G,gBAAA,OAAO,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;aAC9C,CAAC,CAAC,CAAC;SACL;KACF;;IAID,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;AAG3B,QAAA,IAAI,sBAAsB,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;;QAGlD,IAAI,CAAC,sBAAsB,EAAE;;;YAG3B,IAAI,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACrJ,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACjG,sBAAsB,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;aACxF;;AAEI,iBAAA,IAAG,IAAI,CAAC,OAAO,EAAE,EAAC;AACrB,gBAAA,MAAM,YAAY,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/D,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,YAAY,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3E,gBAAA,sBAAsB,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;aAClE;;iBAEI;gBACH,sBAAsB,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aACtF;SACF;AAED,QAAA,IAAG,IAAI,CAAC,SAAS,EAAE,EAAC;;;YAGlB,sBAAsB,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AAChG,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC/B;;AAGD,QAAA,IAAI,CAAC,qBAAqB,GAAG,sBAAsB,CAAC;QAEpD,MAAM,YAAY,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACxF,MAAM,gBAAgB,GAAG,KAAK,CAAC,EAAE,CAAC,sBAAsB,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnG,IAAI,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,CAAA,EAAG,YAAY,CAAA,CAAA,EAAI,gBAAgB,CAAA,CAAE,EAAE,CAAc,WAAA,EAAA,IAAI,CAAC,UAAU,CAAE,CAAA,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9G,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAErE,OAAO,KAAK,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,EAAE;YACtC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,GAAG,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACtF,YAAA,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;SACzC;;;QAID,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1E,QAAA,MAAM,kBAAkB,GAAG,KAAK,CAAC,EAAE,CAAC,sBAAsB,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;;QAG7E,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC;YAC3C,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAEtE,IAAI,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;;AAErD,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,GAAG,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SAC1F;KACF;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,gBAAgB;AAAE,YAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;KAChE;oHA9ZU,mBAAmB,GAAA,CAAA,EAAA,CAAA,EAAA;oEAAnB,mBAAmB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,yBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;2BAqCnB,mBAAmB,EAAA,CAAA,CAAA,CAAA;2BACnB,gBAAgB,EAAA,CAAA,CAAA,CAAA;;;;;;;;;;ADzD3B,YADF,8BAAsG,CAgBlG,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AATA,YAHA,EAAiB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,2DAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,GAAA,CAAA,YAAA,CAAA,MAAA,CAAoB,CAAC,CAAA,EAAA,CAAA,CAAA,OAAA,EAAA,SAAA,mDAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAG7B,kBAAc,CAAC,CAAA,EAAA,CAAA,CAAA;YAN1B,EAeE,CAAA,YAAA,EAAA,CAAA;YAEF,EAA+H,CAAA,UAAA,CAAA,CAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;AAAlC,YAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,iEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAiB,mBAAe,CAAC,CAAA,EAAA,CAAA,CAAA;YAUhI,EAAM,CAAA,YAAA,EAAA,CAAA;;;AA5B6D,YAAjC,mEAAgC,CAAmC,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,CAAA,OAAA,EAAA,CAAA,CAAA,CAAA;YAGjG,EAAwB,CAAA,SAAA,EAAA,CAAA;YAAxB,EAAwB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,UAAA,EAAA,CAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,CAAA,SAAA,EAAA,IAAA,CAAA,GAAA,CAAA,aAAA,EAAA,CAAA,CAEgC,CACrB,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,CAAA,UAAA,EAAA,CAAA,CAAA,CAAA,aAAA,EAAA,GAAA,CAAA,WAAA,EAAA,KAAA,GAAA,CAAA,SAAA,EAAA,IAAA,CAAA,GAAA,CAAA,aAAA,EAAA,CAAA,IAAA,GAAA,CAAA,aAAA,CAGgD,CAC5D,MAAA,EAAA,cAAA,CAAA,CAAA,UAAA,EAAA,KAAA,CACL,CACG,aAAA,EAAA,KAAA,CAAA,CAAA;YAMuB,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAC,YAAnB,mCAAkB,CAA4B,YAAA,EAAA,GAAA,CAAA,UAAA,EAAA,CAAA,CAAA;;;iFCEjF,mBAAmB,EAAA,CAAA;cAL/B,SAAS;2BACE,gBAAgB,EAAA,QAAA,EAAA,kuCAAA,EAAA,MAAA,EAAA,CAAA,6gNAAA,CAAA,EAAA,CAAA;oBAwCY,KAAK,EAAA,CAAA;kBAA1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YACJ,mBAAmB,EAAA,CAAA;kBAAlD,SAAS;mBAAC,mBAAmB,CAAA;YACD,gBAAgB,EAAA,CAAA;kBAA5C,SAAS;mBAAC,gBAAgB,CAAA;YAGO,gBAAgB,EAAA,CAAA;kBAAjD,YAAY;mBAAC,cAAc,CAAA;;kFAzCjB,mBAAmB,EAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCPnB,gBAAgB,CAAA;AAC3B,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;KACtD;iHAHU,gBAAgB,GAAA,CAAA,EAAA,CAAA,EAAA;mEAAhB,gBAAgB,EAAA,CAAA,CAAA,EAAA;AAHjB,IAAA,SAAA,IAAA,CAAA,IAAA,iBAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;;iFAGtD,gBAAgB,EAAA,CAAA;cAL5B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,YAAY,EAAE,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;gBACxD,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC;gBAClE,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC/B,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,gBAAgB,EAJZ,EAAA,YAAA,EAAA,CAAA,mBAAmB,EAAE,mBAAmB,CAC7C,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,aACvD,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACX/B;;AAEG;;;;"}
1
+ {"version":3,"file":"mis-crystal-design-system-timepicker.mjs","sources":["../../../projects/mis-components/timepicker/timepicker.directive.ts","../../../projects/mis-components/timepicker/timepicker.component.html","../../../projects/mis-components/timepicker/timepicker.component.ts","../../../projects/mis-components/timepicker/timepicker.module.ts","../../../projects/mis-components/timepicker/mis-crystal-design-system-timepicker.ts"],"sourcesContent":["import { Directive, Output, TemplateRef } from '@angular/core';\nimport { EventEmitter, Input, ViewContainerRef } from \"@angular/core\";\nimport { ConnectionPositionPair, Overlay, OverlayConfig, OverlayRef } from \"@angular/cdk/overlay\";\nimport { TemplatePortal } from \"@angular/cdk/portal\";\n\n@Directive({\n selector: '[libTimepicker]'\n})\nexport class TimepickerDirective {\n private openStatus: boolean = false;\n @Input('originEl') originEl : any;\n @Output() statusEmitter = new EventEmitter<boolean>(); \n\n @Input('openStatus') set createOverlayOnInput(openStatus){\n this.openStatus = openStatus;\n if(this.originEl && this.openStatus) {\n this.createOverlay(this.originEl);\n }\n }; \n private overlayRef!: OverlayRef;\n constructor(private templateRef: TemplateRef<Element>, private overlay: Overlay, private viewContainerRef: ViewContainerRef) {}\n\n createOverlay(origin: any): void {\n const positions = [\n new ConnectionPositionPair({ originX: \"start\", originY: \"bottom\" }, { overlayX: \"start\", overlayY: \"top\" }, 0, 4),\n new ConnectionPositionPair({ originX: \"end\", originY: \"bottom\" }, { overlayX: \"end\", overlayY: \"top\" }, 0, 4)\n ];\n\n const overlayConfig = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: \"cdk-overlay-transparent-backdrop\",\n positionStrategy: this.overlay\n .position()\n //connecting the dropdown overlay to the input element\n .flexibleConnectedTo(origin)\n .withPositions([...positions])\n .withPush(true)\n });\n\n this.overlayRef = this.overlay.create(overlayConfig);\n const dropdownPortal = new TemplatePortal(this.templateRef, this.viewContainerRef);\n this.overlayRef.attach(dropdownPortal);\n this.overlayRef.backdropClick().subscribe(resp => {\n this.openStatus = false;\n this.statusEmitter.emit(false);\n if(this.overlay){\n this.overlayRef.detach();\n }\n });\n }\n\n destroyOverlay(){\n if(this.overlay){\n this.overlayRef.detach();\n }\n }\n \n}\n","<div class=\"timepicker-container\" [ngStyle]=\"{ height: height() }\" [ngClass]=\"{'disable': disable()}\">\n <input\n type=\"text\"\n [ngModel]=\"chosenTime()\"\n (ngModelChange)=\"onTimeChange($event)\"\n [readOnly]=\"disableUserInput()\"\n [ngClass]=\"{ invalid: isInvalid() || !rangeValidity() }\"\n [ngStyle]=\"{ width: inputWidth(), fontSize: fontSize() }\"\n (click)=\"openDropdown()\"\n misToolTip\n [showToolTip]=\"showTooltip() && (isInvalid() || !rangeValidity()) && dispayToolTip\"\n [text]=\"'Invalid Time'\"\n [position]=\"'top'\"\n [showOnHover]=\"false\"\n #input\n cdkOverlayOrigin\n class=\"h7\"\n />\n\n <ng-template #dropdownContainer libTimepicker [originEl]=\"input\" [openStatus]=\"openStatus()\" (statusEmitter)=\"closeDropdown()\">\n <div *ngIf=\"openStatus()\" class=\"timepicker-dropdown\" [ngStyle]=\"{ width: dropdownWidth() || inputWidth() }\">\n <ul #dropdown>\n <li #timeInterval (click)=\"onTimeSelect(interval)\" *ngFor=\"let interval of timeIntervals(); index as i\" [ngClass]=\"{ highlight: i === isHighlighted() }\" [ngStyle]=\"{ fontSize: fontSize() }\">\n {{ interval }}\n <div class=\"ic-ui-check-24 selected-icon\" *ngIf=\"interval === chosenTime()\"></div>\n </li>\n </ul>\n </div>\n </ng-template>\n</div>\n","import { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild, ViewChildren, input, output, signal, computed, effect, untracked } from \"@angular/core\";\nimport { ITime } from \"./time.namespace\";\nimport { TimepickerDirective } from \"./timepicker.directive\";\nimport { ToolTipDirective } from \"mis-crystal-design-system/tooltip\";\n\nimport dayjs from 'dayjs';\nimport timezone from 'dayjs/plugin/timezone';\nimport utc from 'dayjs/plugin/utc';\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\n\ndayjs.extend(utc);\ndayjs.extend(timezone);\ndayjs.extend(customParseFormat);\n\n\n@Component({\n selector: \"mis-timepicker\",\n templateUrl: \"./timepicker.component.html\",\n styleUrls: [\"./timepicker.component.scss\"]\n})\nexport class TimePickerComponent implements OnInit, OnDestroy {\n // Convert to signals for better performance and change detection\n currTime = signal<string>('');\n chosenTime = signal<string>('');\n openStatus = signal<boolean>(false);\n isHighlighted = signal<number>(0);\n isInvalid = signal<boolean>(false);\n timeIntervals = signal<string[]>([]);\n shouldScroll = signal<boolean>(false);\n userInputFlag = signal<boolean>(false);\n givenTimeFlag = signal<boolean>(true);\n // Signal-based inputs with backward compatibility\n clockFormat = input<number>(12);\n timeFormat!: string;\n \n timezone = input<string>(\"Asia/Kolkata\");\n height = input<string>(\"max-content\");\n inputWidth = input<string>(\"100px\");\n dropdownWidth = input<string | undefined>(undefined);\n interval = input<number>(15);\n dateAsEpoch = input<number>(dayjs.tz(dayjs(), \"Asia/Kolkata\").valueOf());\n firstInterval = input<number>();\n rangeValidity = input<boolean>(true);\n showTooltip = input<boolean>(true);\n dispayToolTip: boolean = this.showTooltip();\n givenTime = input<number>();\n minTime = input<number | undefined>(undefined);\n triggerChange = input<boolean>(true);\n disable = input<boolean>(false);\n disableUserInput = input<boolean>(false);\n fontSize = input<string>(\"14px\");\n \n // Internal state for computed first interval\n private computedFirstInterval: number | null = null;\n private _isInitializing = false;\n \n // Signal-based output with backward compatibility\n timeEmitter = output<ITime>();\n @ViewChild(\"input\", { static: true }) input: ElementRef;\n @ViewChild(TimepickerDirective) timepickerDirective: TimepickerDirective;\n @ViewChild(ToolTipDirective) tooltipDirective: ToolTipDirective;\n\n // gets all the li elements from the dropdown and scrolls to the highlighted element\n @ViewChildren(\"timeInterval\") set timeIntervalRefs(intervals) {\n intervals.forEach(interval => {\n if (interval.nativeElement.classList[0] === \"highlight\") {\n const highlighted = interval.nativeElement;\n setTimeout(() => highlighted.scrollIntoView({ block: \"center\" }));\n }\n });\n }\n\n constructor(){\n // Effect to handle triggerChange toggles (explicit reset requests from parent)\n // This effect ONLY resets chosenTime when triggerChange is toggled\n // It does NOT watch firstInterval to avoid resetting time when dropdown intervals are updated\n effect(() => {\n const triggerValue = this.triggerChange();\n const firstIntervalValue = untracked(() => this.firstInterval()); // Use untracked to not create dependency\n \n // Only reset when triggerChange is toggled AND firstInterval is provided\n // This handles cases where parent explicitly wants to reset the time (e.g., conflict resolution)\n if (!untracked(() => this.userInputFlag()) && firstIntervalValue && !this._isInitializing) {\n const newTime = dayjs.tz(firstIntervalValue, untracked(() => this.timezone())).format(this.timeFormat);\n \n // Only update if the time actually changed\n if (untracked(() => this.chosenTime()) !== newTime) {\n // Use setTimeout to defer signal writes and avoid circular dependencies\n setTimeout(() => {\n this.chosenTime.set(newTime);\n this.isInvalid.set(!this.checkTimeValidity(newTime.trim()));\n \n // Repopulate dropdown when time is reset\n this.populateDropdown();\n \n // Recalculate closest interval\n this.calculateClosestInterval(newTime);\n \n // Emit the updated time\n const timedayjs = this.getdayjs(newTime);\n this.emitTime({\n valid: !this.isInvalid(),\n time: newTime,\n epoch: timedayjs.valueOf()\n });\n }, 0);\n }\n }\n });\n \n // Separate effect to handle firstInterval changes (only update dropdown, NOT chosenTime)\n // This allows updating dropdown intervals without resetting the selected time\n effect(() => {\n const firstIntervalValue = this.firstInterval();\n \n // Only update dropdown when firstInterval changes, don't reset chosenTime\n // This is crucial: when timerangepicker updates firstInterval to fix dropdown options,\n // we don't want to reset the user's selected time\n if (!untracked(() => this.userInputFlag()) && firstIntervalValue && !this._isInitializing) {\n // Just repopulate dropdown with new intervals, preserve current chosenTime\n setTimeout(() => {\n this.populateDropdown();\n // Recalculate closest interval for current chosenTime (preserve it)\n if (untracked(() => this.chosenTime())) {\n this.calculateClosestInterval(untracked(() => this.chosenTime()));\n }\n }, 0);\n }\n });\n }\n \n ngOnInit(): void {\n this._isInitializing = true;\n // Ensure timeFormat is set before initialization\n this.timeFormat = this.clockFormat() === 12 ? \"hh:mm a\" : \"HH:mm\";\n \n // Initialize chosenTime - use firstInterval from parent if available, otherwise calculate\n if (!this.givenTime() && !this.minTime()) {\n let initialTime;\n \n // If firstInterval is provided by parent (timerangepicker), use it\n if (this.firstInterval()) {\n initialTime = dayjs.tz(this.firstInterval(), this.timezone()).format(this.timeFormat);\n } else {\n // Get current time and round to nearest interval using original logic\n const now = dayjs.tz(dayjs(), this.timezone());\n const interval = this.interval();\n const minutes = now.minute();\n const offset = interval - (minutes % interval);\n \n // Round to next interval if we're past halfway point\n const roundedTime = offset >= interval / 2 \n ? now.add(offset, \"m\").second(0).millisecond(0)\n : now.subtract(interval - offset, \"m\").second(0).millisecond(0);\n \n initialTime = roundedTime.format(this.timeFormat);\n }\n \n this.chosenTime.set(initialTime);\n \n // Set userInputFlag to false to avoid validation issues during initialization\n this.userInputFlag.set(false);\n \n // Populate dropdown first to compute the first interval\n this.populateDropdown();\n \n // Now validate with the computed first interval\n this.isInvalid.set(!this.checkTimeValidity(this.chosenTime().trim()));\n \n let chosenTimedayjs = this.getdayjs(this.chosenTime());\n // Defer emission to avoid ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n this.emitTime({\n valid: !this.isInvalid(),\n time: this.chosenTime(),\n epoch: chosenTimedayjs.valueOf()\n });\n }, 0);\n \n // Calculate closest interval\n this.calculateClosestInterval(this.chosenTime());\n \n this._isInitializing = false;\n } else if (this.givenTime()) {\n // When givenTime is present, use the given time as the initial value\n // but the dropdown will start from 12:00 AM\n this.chosenTime.set(dayjs.tz(this.givenTime(), this.timezone()).format(this.timeFormat));\n this.userInputFlag.set(false);\n \n // Populate dropdown first to compute the first interval\n this.populateDropdown();\n \n // Now validate with the computed first interval\n this.isInvalid.set(!this.checkTimeValidity(this.chosenTime().trim()));\n \n let chosenTimedayjs = this.getdayjs(this.chosenTime());\n // Defer emission to avoid ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n this.emitTime({\n valid: !this.isInvalid(),\n time: this.chosenTime(),\n epoch: chosenTimedayjs.valueOf()\n });\n }, 0);\n \n // Calculate closest interval\n this.calculateClosestInterval(this.chosenTime());\n \n this._isInitializing = false;\n } else if (this.minTime()) {\n // Use min time directly - this matches original behavior\n this.chosenTime.set(dayjs.tz(this.minTime(), this.timezone()).format(this.timeFormat));\n this.userInputFlag.set(false);\n \n // Populate dropdown first to compute the first interval\n this.populateDropdown();\n \n // For minTime, validation should only check format, not time comparison\n // This matches the original logic where minTime bypasses time validation\n this.isInvalid.set(!this.checkTimeValidity(this.chosenTime().trim()));\n \n let chosenTimedayjs = this.getdayjs(this.chosenTime());\n // Defer emission to avoid ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n this.emitTime({\n valid: !this.isInvalid(),\n time: this.chosenTime(),\n epoch: chosenTimedayjs.valueOf()\n });\n }, 0);\n \n // Calculate closest interval\n this.calculateClosestInterval(this.chosenTime());\n \n this._isInitializing = false;\n }\n }\n\n\n emitTime(data: ITime): void {\n this.timeEmitter.emit(data);\n }\n\n // function to get dayjs object when time is given in string\n getdayjs(time: string = '00:00'){\n if(!time || typeof time !== 'string') {\n throw new Error('Time must be a string');\n }\n\n let hours: number;\n let minutes: number;\n\n if(this.clockFormat() === 24) {\n hours = parseInt(time.split(':')[0]);\n minutes = parseInt(time.split(':')[1]);\n } else {\n const timeParts = time.split(' ');\n const AM_PM = timeParts?.[1];\n hours = parseInt(timeParts?.[0]?.split(':')?.[0]);\n minutes = parseInt(timeParts?.[0]?.split(':')?.[1]);\n\n if(AM_PM?.toUpperCase() === 'PM' && hours !== 12) {\n hours += 12;\n } else if(AM_PM?.toUpperCase() === 'AM' && hours === 12) {\n hours = 0;\n }\n }\n\n // Use the date from dateAsEpoch but set the time to the parsed hours and minutes\n const baseDate = dayjs.tz(this.dateAsEpoch(), this.timezone());\n const result = baseDate.hour(hours).minute(minutes).second(0).millisecond(0);\n return result;\n }\n\n closeDropdown() {\n this.dispayToolTip = false;\n this.userInputFlag.set(false);\n this.openStatus.set(false);\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n }\n\n // toggle timepicker dropdown\n openDropdown(): void {\n this.dispayToolTip = true;\n this.openStatus.set(true);\n }\n\n checkTimeValidity(time: string): boolean {\n const RE12 = /^(([0][1-9]|1[0-2]):([0-5][0-9])( )?(am|pm|AM|PM))$/i;\n const RE24 = /^([01][0-9]|2[0-3]):[0-5][0-9]$/;\n const RE = this.clockFormat() === 12 ? RE12 : RE24;\n\n // Check if the time format is valid first\n if (!time.match(RE)) {\n return false;\n }\n\n // Restore proper validation logic\n const timedayjs = this.getdayjs(time);\n let flag: boolean = false;\n\n // Original logic: if minTime, givenTime, or firstInterval is start of day, only check format\n if (\n this.minTime() || \n this.givenTime() ||\n (this.firstInterval() &&\n dayjs.tz(this.firstInterval(), this.timezone()).format(this.timeFormat).valueOf() === dayjs.tz(dayjs(), this.timezone()).startOf(\"day\").format(this.timeFormat).valueOf()) \n ) {\n // Only check format validation, not time comparison\n flag = time.match(RE) ? true : false;\n } else {\n // Check against current time for normal cases\n const currentTime = dayjs.tz(dayjs(), this.timezone());\n const timeDiff = timedayjs.diff(currentTime, \"m\");\n flag = timeDiff >= 0;\n }\n\n return flag;\n }\n\n // update chosen time as soon as the user clicks on an interval\n onTimeSelect(time: string): void {\n this.isInvalid.set(!this.checkTimeValidity(time.trim()));\n if (!this.isInvalid()) {\n this.chosenTime.set(time);\n this.calculateClosestInterval(this.chosenTime());\n }\n\n const timedayjs = this.getdayjs(time);\n this.emitTime({\n valid: !this.isInvalid(),\n time: time,\n epoch: timedayjs.valueOf() \n });\n this.openStatus.set(false);\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n }\n\n // checks validity of time on input change and calculates the closest interval\n onTimeChange(time: string): void {\n if(this.disableUserInput()) return;\n // Set user input flag to prevent effects from overriding\n this.userInputFlag.set(true);\n \n // Update the chosenTime signal\n this.chosenTime.set(time);\n const isValid = this.checkTimeValidity(time.trim());\n this.isInvalid.set(!isValid);\n\n // Clear user input flag after a delay to allow effects to work again\n setTimeout(() => {\n this.userInputFlag.set(false);\n }, 1000); // 1 second delay\n\n if (!this.isInvalid()) {\n this.openStatus.set(false);\n if (this.timepickerDirective) this.timepickerDirective.destroyOverlay();\n this.calculateClosestInterval(time);\n }\n const timedayjs = this.getdayjs(time);\n this.emitTime({\n valid: !this.isInvalid(),\n time: time,\n epoch: timedayjs.valueOf() \n });\n }\n\n calculateClosestInterval(time: string): void {\n let roundedEpoch: number;\n // Converting time and date to a dayjs object \n const chosenDate = dayjs.tz(this.dateAsEpoch(), this.timezone()).format(\"DD-MM-YYYY\"); // 05-01-2024\n const parsedTimeWithDate = dayjs.tz(`${chosenDate} ${time}`, `DD-MM-YYYY ${this.timeFormat}`, this.timezone());\n // Converting dayjs object to epoch\n const chosenTimeEpoch = parsedTimeWithDate.valueOf();\n const offset = this.interval() - (dayjs.tz(chosenTimeEpoch, this.timezone()).minute() % this.interval());\n\n if (this.minTime() && !this.givenTime()) {\n this.isHighlighted.set(0);\n return;\n }\n roundedEpoch = offset >= this.interval() / 2 ? (dayjs.tz(chosenTimeEpoch, this.timezone()).subtract(this.interval() - offset, \"m\")).valueOf() : (dayjs.tz(chosenTimeEpoch, this.timezone()).add( offset, \"m\")).valueOf();\n\n // finding the index of element that needs to be highlighted\n if ( chosenTimeEpoch > dayjs.tz(this.dateAsEpoch(), this.timezone()).endOf(\"day\").subtract(this.interval(), \"m\").valueOf()) {\n this.isHighlighted.set(this.timeIntervals().length - 1);\n } else {\n const roundedEpochdayjs = dayjs.tz(roundedEpoch, this.timezone());\n this.isHighlighted.set(this.timeIntervals().findIndex(interval => {\n const intervalObj = dayjs.tz(`${chosenDate} ${interval}`, `DD-MM-YYYY ${this.timeFormat}`, this.timezone());\n return intervalObj.isSame(roundedEpochdayjs);\n }));\n }\n }\n\n\n // populates the dropdown according to the first interval received\n populateDropdown(): void {\n this.timeIntervals.set([]);\n\n // Compute the effective first interval\n let effectiveFirstInterval = this.firstInterval();\n\n // if picker is used as an individual component\n if (!effectiveFirstInterval) {\n // firstInterval is initialised according to the current time\n // if the date is same as the current date\n if (dayjs.tz(this.dateAsEpoch(), this.timezone()).format(\"DD-MM-YYYY\") === dayjs.tz(dayjs(), this.timezone()).format(\"DD-MM-YYYY\") && !this.minTime()) {\n const offset = this.interval() - (dayjs.tz(dayjs(), this.timezone()).minute() % this.interval());\n effectiveFirstInterval = dayjs.tz(dayjs(), this.timezone()).add(offset, \"m\").valueOf();\n }\n // if minimum time to show is provided\n else if(this.minTime()){\n const minTimeDayjs = dayjs.tz(this.minTime(), this.timezone());\n const offset = this.interval() - (minTimeDayjs.minute() % this.interval());\n effectiveFirstInterval = minTimeDayjs.add(offset, \"m\").valueOf();\n }\n // else the firstInterval is initialised as start of day\n else {\n effectiveFirstInterval = dayjs.tz(dayjs(), this.timezone()).startOf(\"day\").valueOf();\n }\n }\n\n if(this.givenTime()){\n // When givenTime is present, always start from 12:00 AM (start of day)\n // regardless of whether the time has passed or not\n effectiveFirstInterval = dayjs.tz(this.dateAsEpoch(), this.timezone()).startOf('day').valueOf();\n this.givenTimeFlag.set(false);\n }\n\n // Store the computed first interval for later use\n this.computedFirstInterval = effectiveFirstInterval;\n\n const dateAsString = dayjs.tz(this.dateAsEpoch(), this.timezone()).format('DD-MM-YYYY');\n const intervalAsString = dayjs.tz(effectiveFirstInterval, this.timezone()).format(this.timeFormat);\n let start = dayjs.tz(`${dateAsString} ${intervalAsString}`, `DD-MM-YYYY ${this.timeFormat}`, this.timezone());\n const end = dayjs.tz(this.dateAsEpoch(), this.timezone()).endOf('d');\n \n while (start.valueOf() < end.valueOf()) {\n this.timeIntervals.update(intervals => [...intervals, start.format(this.timeFormat)]);\n start = start.add(this.interval(), \"m\");\n }\n\n // NEW: Handle end-of-day case - if firstInterval is at or very close to end of day\n // and we're on the same date, show only 11:59 PM\n const endOfDay = dayjs.tz(this.dateAsEpoch(), this.timezone()).endOf(\"d\");\n const firstIntervalDayjs = dayjs.tz(effectiveFirstInterval, this.timezone());\n \n // Check if firstInterval is at or very close to end of day (within 1 minute)\n const isAtEndOfDay = firstIntervalDayjs.isSame(endOfDay, 'day') && \n firstIntervalDayjs.diff(endOfDay, 'minute') >= -1;\n \n if (isAtEndOfDay || this.timeIntervals().length === 0) {\n // Clear existing intervals and add only 11:59 PM\n this.timeIntervals.set([]);\n this.timeIntervals.update(intervals => [...intervals, endOfDay.format(this.timeFormat)]);\n }\n }\n\n ngOnDestroy() {\n if (this.tooltipDirective) this.tooltipDirective.hideToolTip();\n }\n}\n\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { TimePickerComponent } from \"./timepicker.component\";\nimport { ToolTipModule } from \"mis-crystal-design-system/tooltip\";\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { TimepickerDirective } from './timepicker.directive';\n\n@NgModule({\n declarations: [TimePickerComponent, TimepickerDirective],\n imports: [CommonModule, FormsModule, ToolTipModule, OverlayModule],\n exports: [TimePickerComponent]\n})\nexport class TimePickerModule {\n static forRoot(): ModuleWithProviders<TimePickerModule> {\n return { ngModule: TimePickerModule, providers: [] };\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;MAQa,mBAAmB,CAAA;IAK9B,IAA0B,oBAAoB,CAAC,UAAU,EAAA;AACvD,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;AACnC,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACnC;KACF;;AAED,IAAA,WAAA,CAAoB,WAAiC,EAAU,OAAgB,EAAU,gBAAkC,EAAA;QAAvG,IAAW,CAAA,WAAA,GAAX,WAAW,CAAsB;QAAU,IAAO,CAAA,OAAA,GAAP,OAAO,CAAS;QAAU,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAXnH,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAE1B,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAW,CAAC;KASyE;AAE/H,IAAA,aAAa,CAAC,MAAW,EAAA;AACvB,QAAA,MAAM,SAAS,GAAG;YAChB,IAAI,sBAAsB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YACjH,IAAI,sBAAsB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;SAC9G,CAAC;AAEF,QAAA,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC;AACtC,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,aAAa,EAAE,kCAAkC;YACjD,gBAAgB,EAAE,IAAI,CAAC,OAAO;AAC3B,iBAAA,QAAQ,EAAE;;iBAEV,mBAAmB,CAAC,MAAM,CAAC;AAC3B,iBAAA,aAAa,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;iBAC7B,QAAQ,CAAC,IAAI,CAAC;AAClB,SAAA,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACrD,QAAA,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACnF,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACvC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,IAAI,IAAG;AAC/C,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/B,YAAA,IAAG,IAAI,CAAC,OAAO,EAAC;AACd,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;aAC1B;AACH,SAAC,CAAC,CAAC;KACJ;IAED,cAAc,GAAA;AACZ,QAAA,IAAG,IAAI,CAAC,OAAO,EAAC;AACd,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;SAC1B;KACF;oHA/CU,mBAAmB,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,EAAA,CAAA,EAAA;oEAAnB,mBAAmB,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA,EAAA,eAAA,EAAA,EAAA,CAAA,CAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,CAAA,CAAA,EAAA,YAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;iFAAnB,mBAAmB,EAAA,CAAA;cAH/B,SAAS;AAAC,QAAA,IAAA,EAAA,CAAA;AACT,gBAAA,QAAQ,EAAE,iBAAiB;AAC5B,aAAA,CAAA;iGAGoB,QAAQ,EAAA,CAAA;kBAA1B,KAAK;mBAAC,UAAU,CAAA;YACP,aAAa,EAAA,CAAA;kBAAtB,MAAM;YAEmB,oBAAoB,EAAA,CAAA;kBAA7C,KAAK;mBAAC,YAAY,CAAA;;;;;;;;;;;;;ICWX,EAAkF,CAAA,SAAA,CAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;;;;IAFpF,EAA8L,CAAA,cAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,EAAA,CAAA,CAAA,CAAA;AAA5K,IAAA,EAAA,CAAA,UAAA,CAAA,OAAA,EAAA,SAAA,yEAAA,GAAA,EAAA,MAAA,WAAA,GAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,SAAA,CAAA,CAAA,MAAA,MAAA,GAAA,EAAA,CAAA,aAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAS,gCAAsB,CAAC,CAAA,EAAA,CAAA,CAAA;IAChD,EACA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA;IAAA,EAA4E,CAAA,UAAA,CAAA,CAAA,EAAA,2DAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,CAAA;IAC9E,EAAK,CAAA,YAAA,EAAA,CAAA;;;;;AAHoJ,IAAjD,qFAAgD,CAAqC,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,EAAA,MAAA,CAAA,QAAA,EAAA,CAAA,CAAA,CAAA;IAC3L,EACA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IADA,EACA,CAAA,kBAAA,CAAA,GAAA,EAAA,WAAA,EAAA,GAAA,CAAA,CAAA;IAA2C,EAA+B,CAAA,SAAA,EAAA,CAAA;IAA/B,EAA+B,CAAA,UAAA,CAAA,MAAA,EAAA,WAAA,KAAA,MAAA,CAAA,UAAA,EAAA,CAAA,CAAA;;;AAH9E,IADF,8BAA6G,CAC7F,CAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;IACZ,EAA8L,CAAA,UAAA,CAAA,CAAA,EAAA,qDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA;AAKlM,IADE,iBAAK,EACD,CAAA;;;IAPgD,EAAsD,CAAA,UAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,GAAA,EAAA,MAAA,CAAA,aAAA,EAAA,IAAA,MAAA,CAAA,UAAA,EAAA,CAAA,CAAA,CAAA;IAEhC,EAAoB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;IAApB,EAAoB,CAAA,UAAA,CAAA,SAAA,EAAA,MAAA,CAAA,aAAA,EAAA,CAAA,CAAA;;;IAFhG,EAA6G,CAAA,UAAA,CAAA,CAAA,EAAA,gDAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,CAAA,CAAA;;;IAAvG,EAAkB,CAAA,UAAA,CAAA,MAAA,EAAA,MAAA,CAAA,UAAA,EAAA,CAAA,CAAA;;ACV5B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAClB,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACvB,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;MAQnB,mBAAmB,CAAA;;IA2C9B,IAAkC,gBAAgB,CAAC,SAAS,EAAA;AAC1D,QAAA,SAAS,CAAC,OAAO,CAAC,QAAQ,IAAG;YAC3B,IAAI,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;AACvD,gBAAA,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC;AAC3C,gBAAA,UAAU,CAAC,MAAM,WAAW,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;aACnE;AACH,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,WAAA,GAAA;;AAlDA,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAS,EAAE,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAS,EAAE,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAS,CAAC,CAAC,CAAC;AAClC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AACnC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAW,EAAE,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAU,KAAK,CAAC,CAAC;AACvC,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAU,IAAI,CAAC,CAAC;;AAEtC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAGhC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,cAAc,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAS,aAAa,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAS,OAAO,CAAC,CAAC;AACpC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAqB,SAAS,CAAC,CAAC;AACrD,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,EAAE,CAAC,CAAC;AAC7B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAS,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,cAAc,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,IAAa,CAAA,aAAA,GAAG,KAAK,EAAU,CAAC;AAChC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,IAAI,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAU,IAAI,CAAC,CAAC;AACnC,QAAA,IAAA,CAAA,aAAa,GAAY,IAAI,CAAC,WAAW,EAAE,CAAC;QAC5C,IAAS,CAAA,SAAA,GAAG,KAAK,EAAU,CAAC;AAC5B,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAqB,SAAS,CAAC,CAAC;AAC/C,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAU,IAAI,CAAC,CAAC;AACrC,QAAA,IAAA,CAAA,OAAO,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAU,KAAK,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAAS,MAAM,CAAC,CAAC;;QAGzB,IAAqB,CAAA,qBAAA,GAAkB,IAAI,CAAC;QAC5C,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;;QAGhC,IAAW,CAAA,WAAA,GAAG,MAAM,EAAS,CAAC;;;;QAmB5B,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AAC1C,YAAA,MAAM,kBAAkB,GAAG,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;;;AAIjE,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,kBAAkB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzF,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,kBAAkB,EAAE,SAAS,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;AAGvG,gBAAA,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,OAAO,EAAE;;oBAElD,UAAU,CAAC,MAAK;AACd,wBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AAC7B,wBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;;wBAG5D,IAAI,CAAC,gBAAgB,EAAE,CAAC;;AAGxB,wBAAA,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;;wBAGvC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;wBACzC,IAAI,CAAC,QAAQ,CAAC;AACZ,4BAAA,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;AACxB,4BAAA,IAAI,EAAE,OAAO;AACb,4BAAA,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE;AAC3B,yBAAA,CAAC,CAAC;qBACJ,EAAE,CAAC,CAAC,CAAC;iBACP;aACF;AACH,SAAC,CAAC,CAAC;;;QAIH,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;;;;AAKhD,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,kBAAkB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;;gBAEzF,UAAU,CAAC,MAAK;oBACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;;oBAExB,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE;AACtC,wBAAA,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;qBACnE;iBACF,EAAE,CAAC,CAAC,CAAC;aACP;AACH,SAAC,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;;AAE5B,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC;;AAGlE,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACxC,YAAA,IAAI,WAAW,CAAC;;AAGhB,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;gBACxB,WAAW,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACvF;iBAAM;;AAEL,gBAAA,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/C,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjC,gBAAA,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,QAAQ,IAAI,OAAO,GAAG,QAAQ,CAAC,CAAC;;AAG/C,gBAAA,MAAM,WAAW,GAAG,MAAM,IAAI,QAAQ,GAAG,CAAC;AACxC,sBAAE,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;sBAC7C,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;gBAElE,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aACnD;AAED,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;;AAGjC,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;YAG9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;;AAGxB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAEtE,IAAI,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;;YAEvD,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,QAAQ,CAAC;AACZ,oBAAA,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;AACxB,oBAAA,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE;AACvB,oBAAA,KAAK,EAAE,eAAe,CAAC,OAAO,EAAE;AACjC,iBAAA,CAAC,CAAC;aACJ,EAAE,CAAC,CAAC,CAAC;;YAGN,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAEjD,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAC9B;AAAM,aAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;;;YAG3B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACzF,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;YAG9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;;AAGxB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAEtE,IAAI,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;;YAEvD,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,QAAQ,CAAC;AACZ,oBAAA,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;AACxB,oBAAA,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE;AACvB,oBAAA,KAAK,EAAE,eAAe,CAAC,OAAO,EAAE;AACjC,iBAAA,CAAC,CAAC;aACJ,EAAE,CAAC,CAAC,CAAC;;YAGN,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAEjD,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAC9B;AAAM,aAAA,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;;YAEzB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACvF,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;YAG9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;;;AAIxB,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAEtE,IAAI,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;;YAEvD,UAAU,CAAC,MAAK;gBACd,IAAI,CAAC,QAAQ,CAAC;AACZ,oBAAA,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;AACxB,oBAAA,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE;AACvB,oBAAA,KAAK,EAAE,eAAe,CAAC,OAAO,EAAE;AACjC,iBAAA,CAAC,CAAC;aACJ,EAAE,CAAC,CAAC,CAAC;;YAGN,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;AAEjD,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAC9B;KACF;AAGD,IAAA,QAAQ,CAAC,IAAW,EAAA;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7B;;IAGD,QAAQ,CAAC,OAAe,OAAO,EAAA;QAC7B,IAAG,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACpC,YAAA,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;SAC1C;AAED,QAAA,IAAI,KAAa,CAAC;AAClB,QAAA,IAAI,OAAe,CAAC;AAEpB,QAAA,IAAG,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;AAC5B,YAAA,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,YAAA,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACxC;aAAM;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAClC,YAAA,MAAM,KAAK,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC;AAC7B,YAAA,KAAK,GAAI,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnD,YAAA,OAAO,GAAG,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAEpD,IAAG,KAAK,EAAE,WAAW,EAAE,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;gBAChD,KAAK,IAAI,EAAE,CAAC;aACb;iBAAM,IAAG,KAAK,EAAE,WAAW,EAAE,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;gBACvD,KAAK,GAAG,CAAC,CAAC;aACX;SACF;;AAGD,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAC7E,QAAA,OAAO,MAAM,CAAC;KACf;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,mBAAmB;AAAE,YAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC;KACzE;;IAGD,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;KAC3B;AAED,IAAA,iBAAiB,CAAC,IAAY,EAAA;QAC5B,MAAM,IAAI,GAAG,sDAAsD,CAAC;QACpE,MAAM,IAAI,GAAG,iCAAiC,CAAC;AAC/C,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;;QAGnD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AACnB,YAAA,OAAO,KAAK,CAAC;SACd;;QAGD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,IAAI,GAAY,KAAK,CAAC;;QAG1B,IACE,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,SAAS,EAAE;aACf,IAAI,CAAC,aAAa,EAAE;gBACrB,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC,EAC1K;;AAEA,YAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;SACtC;aAAM;;AAEL,YAAA,MAAM,WAAW,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;AAClD,YAAA,IAAI,GAAG,QAAQ,IAAI,CAAC,CAAC;SACtB;AAED,QAAA,OAAO,IAAI,CAAC;KACb;;AAGD,IAAA,YAAY,CAAC,IAAY,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AACzD,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SAClD;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC;AACZ,YAAA,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;AACxB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE;AAC3B,SAAA,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,mBAAmB;AAAE,YAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC;KACzE;;AAGD,IAAA,YAAY,CAAC,IAAY,EAAA;QACvB,IAAG,IAAI,CAAC,gBAAgB,EAAE;YAAE,OAAO;;AAEnC,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;AAG7B,QAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;;QAG7B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAChC,SAAC,EAAE,IAAI,CAAC,CAAC;AAET,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,mBAAmB;AAAE,gBAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC;AACxE,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;SACrC;QACD,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC;AACZ,YAAA,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;AACxB,YAAA,IAAI,EAAE,IAAI;AACV,YAAA,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE;AAC3B,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,wBAAwB,CAAC,IAAY,EAAA;AACnC,QAAA,IAAI,YAAoB,CAAC;;QAEzB,MAAM,UAAU,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACtF,MAAM,kBAAkB,GAAG,KAAK,CAAC,EAAE,CAAC,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,EAAE,CAAc,WAAA,EAAA,IAAI,CAAC,UAAU,CAAE,CAAA,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;;AAE/G,QAAA,MAAM,eAAe,GAAG,kBAAkB,CAAC,OAAO,EAAE,CAAC;AACrD,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEzG,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;AACvC,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1B,OAAO;SACR;AACD,QAAA,YAAY,GAAG,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC;;AAGzN,QAAA,IAAK,eAAe,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;AAC1H,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;SACzD;aAAM;AACL,YAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAClE,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,QAAQ,IAAG;gBAC/D,MAAM,WAAW,GAAG,KAAK,CAAC,EAAE,CAAC,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,QAAQ,CAAA,CAAE,EAAE,CAAc,WAAA,EAAA,IAAI,CAAC,UAAU,CAAE,CAAA,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC5G,gBAAA,OAAO,WAAW,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;aAC9C,CAAC,CAAC,CAAC;SACL;KACF;;IAID,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;AAG3B,QAAA,IAAI,sBAAsB,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;;QAGlD,IAAI,CAAC,sBAAsB,EAAE;;;YAG3B,IAAI,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE;AACrJ,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACjG,sBAAsB,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;aACxF;;AAEI,iBAAA,IAAG,IAAI,CAAC,OAAO,EAAE,EAAC;AACrB,gBAAA,MAAM,YAAY,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC/D,gBAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,YAAY,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3E,gBAAA,sBAAsB,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;aAClE;;iBAEI;gBACH,sBAAsB,GAAG,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aACtF;SACF;AAED,QAAA,IAAG,IAAI,CAAC,SAAS,EAAE,EAAC;;;YAGlB,sBAAsB,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;AAChG,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;SAC/B;;AAGD,QAAA,IAAI,CAAC,qBAAqB,GAAG,sBAAsB,CAAC;QAEpD,MAAM,YAAY,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACxF,MAAM,gBAAgB,GAAG,KAAK,CAAC,EAAE,CAAC,sBAAsB,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnG,IAAI,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,CAAA,EAAG,YAAY,CAAA,CAAA,EAAI,gBAAgB,CAAA,CAAE,EAAE,CAAc,WAAA,EAAA,IAAI,CAAC,UAAU,CAAE,CAAA,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9G,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAErE,OAAO,KAAK,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,EAAE;YACtC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,GAAG,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;AACtF,YAAA,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;SACzC;;;QAID,MAAM,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC1E,QAAA,MAAM,kBAAkB,GAAG,KAAK,CAAC,EAAE,CAAC,sBAAsB,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;;QAG7E,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC;YAC3C,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QAEtE,IAAI,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;;AAErD,YAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC3B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,GAAG,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SAC1F;KACF;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,gBAAgB;AAAE,YAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;KAChE;oHAxbU,mBAAmB,GAAA,CAAA,EAAA,CAAA,EAAA;oEAAnB,mBAAmB,EAAA,SAAA,EAAA,CAAA,CAAA,gBAAA,CAAA,CAAA,EAAA,SAAA,EAAA,SAAA,yBAAA,CAAA,EAAA,EAAA,GAAA,EAAA,EAAA,IAAA,EAAA,GAAA,CAAA,EAAA;;2BAuCnB,mBAAmB,EAAA,CAAA,CAAA,CAAA;2BACnB,gBAAgB,EAAA,CAAA,CAAA,CAAA;;;;;;;;;;AD3D3B,YADF,8BAAsG,CAiBlG,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA,CAAA;AATA,YAJA,EAAiB,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,2DAAA,CAAA,MAAA,EAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAA,GAAA,CAAA,YAAA,CAAA,MAAA,CAAoB,CAAC,CAAA,EAAA,CAAA,CAAA,OAAA,EAAA,SAAA,mDAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAI7B,kBAAc,CAAC,CAAA,EAAA,CAAA,CAAA;YAP1B,EAgBE,CAAA,YAAA,EAAA,CAAA;YAEF,EAA+H,CAAA,UAAA,CAAA,CAAA,EAAA,0CAAA,EAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA,sBAAA,CAAA,CAAA;AAAlC,YAAA,EAAA,CAAA,UAAA,CAAA,eAAA,EAAA,SAAA,iEAAA,GAAA,EAAA,EAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,CAAA,OAAA,EAAA,CAAA,WAAA,CAAiB,mBAAe,CAAC,CAAA,EAAA,CAAA,CAAA;YAUhI,EAAM,CAAA,YAAA,EAAA,CAAA;;;AA7B6D,YAAjC,mEAAgC,CAAmC,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,CAAA,OAAA,EAAA,CAAA,CAAA,CAAA;YAGjG,EAAwB,CAAA,SAAA,EAAA,CAAA;AAUxB,YAVA,EAAwB,CAAA,UAAA,CAAA,SAAA,EAAA,GAAA,CAAA,UAAA,EAAA,CAAA,CAAA,UAAA,EAAA,GAAA,CAAA,gBAAA,EAAA,CAEO,CACyB,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,CAAA,SAAA,EAAA,IAAA,CAAA,GAAA,CAAA,aAAA,EAAA,CAAA,CAAA,CAAA,SAAA,EAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,GAAA,EAAA,GAAA,CAAA,UAAA,EAAA,EAAA,GAAA,CAAA,QAAA,EAAA,CAAA,CACC,CAG0B,aAAA,EAAA,GAAA,CAAA,WAAA,EAAA,KAAA,GAAA,CAAA,SAAA,EAAA,IAAA,CAAA,GAAA,CAAA,aAAA,EAAA,CAAA,IAAA,GAAA,CAAA,aAAA,CAAA,CAAA,MAAA,EAAA,cAAA,CAC5D,mBACL,CACG,aAAA,EAAA,KAAA,CAAA,CAAA;YAMuB,EAAkB,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAC,YAAnB,mCAAkB,CAA4B,YAAA,EAAA,GAAA,CAAA,UAAA,EAAA,CAAA,CAAA;;;iFCCjF,mBAAmB,EAAA,CAAA;cAL/B,SAAS;2BACE,gBAAgB,EAAA,QAAA,EAAA,s0CAAA,EAAA,MAAA,EAAA,CAAA,6gNAAA,CAAA,EAAA,CAAA;oBA0CY,KAAK,EAAA,CAAA;kBAA1C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;YACJ,mBAAmB,EAAA,CAAA;kBAAlD,SAAS;mBAAC,mBAAmB,CAAA;YACD,gBAAgB,EAAA,CAAA;kBAA5C,SAAS;mBAAC,gBAAgB,CAAA;YAGO,gBAAgB,EAAA,CAAA;kBAAjD,YAAY;mBAAC,cAAc,CAAA;;kFA3CjB,mBAAmB,EAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;MCPnB,gBAAgB,CAAA;AAC3B,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;KACtD;iHAHU,gBAAgB,GAAA,CAAA,EAAA,CAAA,EAAA;mEAAhB,gBAAgB,EAAA,CAAA,CAAA,EAAA;AAHjB,IAAA,SAAA,IAAA,CAAA,IAAA,iBAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA,EAAA;;iFAGtD,gBAAgB,EAAA,CAAA;cAL5B,QAAQ;AAAC,QAAA,IAAA,EAAA,CAAA;AACR,gBAAA,YAAY,EAAE,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;gBACxD,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC;gBAClE,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC/B,aAAA,CAAA;;AACY,CAAA,YAAA,EAAA,CAAA,OAAA,SAAA,KAAA,WAAA,IAAA,SAAA,KAAA,EAAA,CAAA,kBAAA,CAAA,gBAAgB,EAJZ,EAAA,YAAA,EAAA,CAAA,mBAAmB,EAAE,mBAAmB,CAC7C,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,aACvD,mBAAmB,CAAA,EAAA,CAAA,CAAA,EAAA,GAAA;;ACX/B;;AAEG;;;;"}