{"version":3,"file":"acorex-components-autocomplete.mjs","sources":["../../../../packages/components/autocomplete/src/lib/autocomplete.component.ts","../../../../packages/components/autocomplete/src/lib/autocomplete.component.html","../../../../packages/components/autocomplete/src/lib/autocomplete.module.ts","../../../../packages/components/autocomplete/src/acorex-components-autocomplete.ts"],"sourcesContent":["import {\n  AXAutocompleteParentComponent,\n  AXClearableComponent,\n  AXClosableComponent,\n  AXComponent,\n  AXDataSource,\n  AXEvent,\n  AXFocusableComponent,\n  AXItemClickEvent,\n  AXItemSelectedEvent,\n  AXSearchableComponent,\n  AXValuableComponent,\n  AXValueChangedEvent,\n  AX_SELECTION_DATA_TOKEN,\n  MXInputBaseValueComponent,\n  MXLookComponent,\n  MXSelectionBridgeService,\n  MXSelectionValueComponent,\n  convertArrayToDataSource,\n} from '@acorex/cdk/common';\nimport { AXDecoratorCloseButtonComponent, AXDecoratorGenericComponent } from '@acorex/components/decorators';\nimport { AXDropdownBoxComponent, MXDropdownBoxBaseComponent } from '@acorex/components/dropdown';\nimport { AXListComponent } from '@acorex/components/list';\nimport { AXLoadingComponent } from '@acorex/components/loading';\nimport { AXTranslatorPipe } from '@acorex/core/translation';\nimport { AXUnsubscriber } from '@acorex/core/utils';\nimport { AsyncPipe, NgTemplateOutlet } from '@angular/common';\nimport {\n  AfterViewInit,\n  Component,\n  HostBinding,\n  Input,\n  OnDestroy,\n  TemplateRef,\n  ViewChild,\n  ViewEncapsulation,\n  forwardRef,\n  inject,\n  input,\n  signal,\n} from '@angular/core';\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { classes } from 'polytype';\nimport { Subscription, debounceTime } from 'rxjs';\n\n/**\n * The Button is a component which detects user interaction and triggers a corresponding event\n * @category\n */\n@Component({\n  selector: 'ax-autocomplete',\n  templateUrl: './autocomplete.component.html',\n  inputs: [\n    'disabled',\n    'readonly',\n    'tabIndex',\n    'placeholder',\n    'minValue',\n    'maxValue',\n    'value',\n    'state',\n    'name',\n    'id',\n    'type',\n    'look',\n    'multiple',\n    'valueField',\n    'textField',\n    'disabledField',\n    'textTemplate',\n    'selectedItems',\n  ],\n  outputs: [\n    'valueChange',\n    'stateChange',\n    'onValueChanged',\n    'onBlur',\n    'onFocus',\n    'readonlyChange',\n    'disabledChange',\n    'onOpened',\n    'onClosed',\n    'onItemClick',\n    'onItemSelected',\n  ],\n\n  encapsulation: ViewEncapsulation.None,\n  providers: [\n    { provide: AXComponent, useExisting: AXAutocompleteComponent },\n    { provide: AXFocusableComponent, useExisting: AXAutocompleteComponent },\n    { provide: AXValuableComponent, useExisting: AXAutocompleteComponent },\n    { provide: AXClearableComponent, useExisting: AXAutocompleteComponent },\n    { provide: AXClosableComponent, useExisting: AXAutocompleteComponent },\n    { provide: AXSearchableComponent, useExisting: AXAutocompleteComponent },\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => AXAutocompleteComponent),\n      multi: true,\n    },\n    {\n      provide: AX_SELECTION_DATA_TOKEN,\n      useClass: MXSelectionBridgeService,\n    },\n    AXUnsubscriber,\n  ],\n  host: { ngSkipHydration: 'true' },\n  imports: [\n    AsyncPipe,\n    FormsModule,\n    AXListComponent,\n    NgTemplateOutlet,\n    AXTranslatorPipe,\n    AXLoadingComponent,\n    AXDropdownBoxComponent,\n    AXDecoratorGenericComponent,\n    AXDecoratorCloseButtonComponent,\n  ],\n})\nexport class AXAutocompleteComponent\n  extends classes(MXDropdownBoxBaseComponent, MXSelectionValueComponent, MXLookComponent)\n  implements AfterViewInit, OnDestroy\n{\n  delayTime = input(300);\n\n  /** Height of each list item in pixels, or 'auto' to let list measure. */\n  itemHeight = input<number | 'auto'>(40);\n\n  /** Maximum number of visible items before scrolling. */\n  maxVisibleItems = input(5);\n\n  protected inputValue = signal('');\n  protected isLoading = signal(false);\n\n  /** @ignore */\n  protected renderList = false;\n\n  /** @ignore */\n  protected dropdownSizes: { width: string; height: string } = {\n    width: '100%',\n    height: 'auto',\n  };\n\n  /** @ignore */\n  protected _listDataSource: AXDataSource<any> = convertArrayToDataSource([], {\n    key: this.valueField,\n    pageSize: 10,\n  });\n\n  /** @ignore */\n  private _dataSource: AXDataSource<any> | any[];\n\n  /** @ignore */\n  private onChangedSubscription: Subscription;\n\n  /**\n   * Gets the data source for the component, which can be either an `AXDataSource` or an array of items.\n   * @returns {AXDataSource<any> | any[]}\n   */\n  public get dataSource(): AXDataSource<any> | any[] {\n    return this._dataSource;\n  }\n\n  /**\n   * Sets the data source, either as `AXDataSource` or an array. Converts arrays to `AXDataSource` and subscribes to data and loading changes.\n   * @param {AXDataSource<any> | any[]} v\n   */\n  @Input()\n  public set dataSource(v: AXDataSource<any> | any[]) {\n    this._dataSource = v;\n    if (Array.isArray(v)) {\n      this._listDataSource = convertArrayToDataSource(v, {\n        key: this.valueField,\n        pageSize: 10,\n      });\n    } else {\n      this._listDataSource = this.dataSource as AXDataSource<any>;\n    }\n    //\n    this.onChangedSubscription = this._listDataSource.onChanged.subscribe((data) => {\n      this.setDropdownSize(data.totalCount);\n    });\n    this._listDataSource.onLoadingChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe((loading) => {\n      this.isLoading.set(loading);\n    });\n  }\n\n  /**\n   * The placeholder text displayed when the component is empty.\n   * @param {string} placeholder\n   */\n  @Input()\n  placeholder: string;\n\n  /**\n   * The caption text to be displayed in the component.\n   * @param {string} caption\n   */\n  @Input()\n  caption: string;\n\n  /**\n   * The template used to customize the rendering of items.\n   * @param {TemplateRef<any>} itemTemplate\n   */\n  @Input()\n  itemTemplate: TemplateRef<any>;\n\n  /**\n   * The template used to customize the rendering of selected items.\n   * @param {TemplateRef<any>} selectedTemplate\n   */\n  @Input()\n  selectedTemplate: TemplateRef<any>;\n\n  /**\n   * The template used to display when there are no items.\n   * @param {TemplateRef<any>} emptyTemplate\n   */\n  @Input()\n  emptyTemplate: TemplateRef<any>;\n\n  /**\n   * The template used to display while loading.\n   * @param {TemplateRef<any>} loadingTemplate\n   */\n  @Input()\n  loadingTemplate: TemplateRef<any>;\n\n  /**\n   * The template used to display the header of the list.\n   * @param {TemplateRef<unknown>} listHeaderTemplate\n   */\n  listHeaderTemplate = input<TemplateRef<unknown>>();\n\n  /**\n   * The template used to display the footer of the list.\n   * @param {TemplateRef<unknown>} listFooterTemplate\n   */\n  listFooterTemplate = input<TemplateRef<unknown>>();\n\n  /**\n   * The width of the dropdown in pixels.\n   * @defaultValue 260\n   */\n  @Input()\n  dropdownWidth = 260;\n\n  /** @ignore */\n  @ViewChild(AXListComponent)\n  list: AXListComponent;\n\n  /** @ignore */\n  @ViewChild(AXDropdownBoxComponent, { static: true })\n  protected dropdown: AXDropdownBoxComponent;\n\n  /**\n   * Service for managing selection data, injected via `AX_SELECTION_DATA_TOKEN`.\n   */\n  public selectionService = inject(AX_SELECTION_DATA_TOKEN);\n\n  /** @ignore */\n  private _unsubscriber = inject(AXUnsubscriber);\n\n  parent = inject(AXAutocompleteParentComponent);\n  parentText = inject(MXInputBaseValueComponent);\n\n  /** @ignore */\n  ngAfterViewInit() {\n    this.setDropdownSize();\n    this.registerValidation();\n\n    this.parentText.onTextChanged\n      .pipe(debounceTime(this.delayTime()), this.parent.unsubscriber.takeUntilDestroy)\n      .subscribe((e) => {\n        if (!e.isUserInteraction) return;\n        this.inputValue.set(e.value);\n        if (!e.value) {\n          this.close();\n          return;\n        }\n        this.search(e.value);\n        this.open();\n      });\n\n    this.parent.onKeyDown.pipe(this.parent.unsubscriber.takeUntilDestroy).subscribe((e) => {\n      if (e.nativeEvent.key === 'ArrowDown') {\n        this.search(this.inputValue());\n        this.open();\n        this.list.focus();\n      }\n    });\n  }\n\n  /** @ignore */\n  override ngOnDestroy(): void {\n    this.onChangedSubscription.unsubscribe();\n  }\n\n  /**\n   * Retrieves an item by its key.\n   * @param {any} key\n   */\n  getItemByKey(key: any): Promise<any> | any {\n    const startTime = Date.now();\n\n    const check = async () => {\n      while (Date.now() - startTime < 2000) {\n        if (typeof this._listDataSource.find === 'function') {\n          return this._listDataSource.find(key);\n        } else {\n          await new Promise((resolve) => setTimeout(resolve, 50));\n        }\n      }\n      console.warn('Timeout reached without finding the \"getItemByKey\" method');\n    };\n    return check();\n  }\n\n  /** @ignore */\n  protected _handleOnOpenedEvent(e: AXEvent) {\n    if (!this.renderList) {\n      this.renderList = true;\n      this.list?.render();\n    } else if (!this._listDataSource.totalCount || this._listDataSource.totalCount == 0) {\n      this.list?.refresh(false);\n    }\n    //\n    this.onOpened.emit({\n      component: this,\n      isUserInteraction: e.isUserInteraction,\n    });\n  }\n\n  /** @ignore */\n  protected _handleOnClosedEvent(e: AXEvent) {\n    this.parent.focus();\n    this.onClosed.emit({\n      component: this,\n      isUserInteraction: e.isUserInteraction,\n    });\n    this._unsubscriber.unsubscribe();\n  }\n\n  /** @ignore */\n  protected _handleValueChanged(e: AXValueChangedEvent) {\n    if (e.isUserInteraction) {\n      if (!this.multiple) {\n        this.close();\n      }\n      this.parent.emitOnItemSelected(this.selectedItems, true);\n    }\n  }\n\n  /** @ignore */\n  protected _handleItemClick(e: AXItemClickEvent) {\n    this.onItemClick.emit(e);\n    if (!this.multiple) {\n      this.close();\n    }\n  }\n\n  /** @ignore */\n  protected _handleItemSelected(e: AXItemSelectedEvent) {\n    this.onItemSelected.emit(e);\n    if (!this.multiple) {\n      this.close();\n    }\n  }\n\n  /** @ignore */\n  private setDropdownSize(count = 0) {\n    if (this.dropdown.isActionsheetStyle) {\n      const itemPx = typeof this.itemHeight() === 'number' ? (this.itemHeight() as number) : 40;\n      this.dropdownSizes = {\n        width: '100%',\n        height: ['auto', '0px'].includes(this.dropdownSizes.height)\n          ? `${Math.min(15, count) * itemPx}px`\n          : this.dropdownSizes.height,\n      };\n    } else {\n      const hostWidth = Math.max(this.parent.getHostElement().offsetWidth, this.dropdownWidth);\n      const itemPx = typeof this.itemHeight() === 'number' ? (this.itemHeight() as number) : 40;\n      const maxItems = Number(this.maxVisibleItems());\n      this.dropdownSizes = {\n        width: `${hostWidth}px`,\n        height: count == 0 ? 'auto' : `${Math.min(maxItems, count) * itemPx}px`,\n      };\n    }\n    setTimeout(() => {\n      this.dropdown.updatePosition();\n    });\n  }\n\n  /**\n   * Filters the data source based on the provided search term.\n   * @param {string} term\n   */\n  search(term: string): void {\n    if (term) {\n      this._listDataSource.filter({\n        field: this.textField,\n        value: term,\n        operator: { type: 'contains' },\n      });\n    } else {\n      this._listDataSource.clearFilter();\n    }\n    this._listDataSource.refresh();\n  }\n\n  /**\n   * Refreshes the component by resetting state, clearing selection cache, refreshing the list, and closing the component.\n   */\n  refresh(): void {\n    this.reset(false);\n    this.clearSelectionCache();\n    this.list?.refresh();\n    this.close();\n  }\n\n  @HostBinding('attr.name')\n  private get __hostName(): string {\n    return this.name;\n  }\n}\n","<ax-dropdown-box\n  [look]=\"look\"\n  [hasInput]=\"false\"\n  [disabled]=\"disabled\"\n  (blur)=\"emitOnBlurEvent($event)\"\n  (focus)=\"emitOnFocusEvent($event)\"\n  [class.ax-state-multiple]=\"multiple\"\n  (onOpened)=\"_handleOnOpenedEvent($event)\"\n  (onClosed)=\"_handleOnClosedEvent($event)\"\n>\n  <ng-container panel>\n    <div #panel class=\"ax-autocomplete-panel\" [style.min-width]=\"dropdownSizes.width\">\n      @if (dropdown.isActionsheetStyle) {\n        <ax-header class=\"ax-solid\">\n          <ax-title>{{ caption || placeholder | translate | async }}</ax-title>\n          <ax-close-button [icon]=\"multiple ? 'ax-icon ax-icon-check' : 'ax-icon ax-icon-close'\"></ax-close-button>\n        </ax-header>\n      }\n      @if (renderList) {\n        @if (listHeaderTemplate()) {\n          <ng-template [ngTemplateOutlet]=\"listHeaderTemplate()\"></ng-template>\n        }\n        <ax-list\n          [ngModel]=\"value\"\n          [name]=\"name\"\n          [readonly]=\"readonly\"\n          [multiple]=\"multiple\"\n          [textField]=\"textField\"\n          [selectionMode]=\"'item'\"\n          [valueField]=\"valueField\"\n          [itemHeight]=\"itemHeight()\"\n          [textTemplate]=\"textTemplate\"\n          [itemTemplate]=\"itemTemplate\"\n          [dataSource]=\"_listDataSource\"\n          [loadingTemplate]=\"loadingTemplate\"\n          [style.height]=\"dropdownSizes.height\"\n          [emptyTemplate]=\"emptyTemplate ?? empty\"\n          (onValueChanged)=\"_handleValueChanged($event)\"\n          (onItemClick)=\"_handleItemClick($event)\"\n          (onItemSelected)=\"_handleItemSelected($event)\"\n        >\n          <ng-template #empty> {{ '@acorex:common.general.no-result-found' | translate | async }} </ng-template>\n        </ax-list>\n        @if (listFooterTemplate()) {\n          <ng-template [ngTemplateOutlet]=\"listFooterTemplate()\"></ng-template>\n        }\n      }\n\n      @if (isLoading()) {\n        @if (loadingTemplate) {\n          <ng-template [ngTemplateOutlet]=\"loadingTemplate\"></ng-template>\n        } @else {\n          <div class=\"ax-autocomplete-loading-container\">\n            <ax-loading></ax-loading>\n          </div>\n        }\n      }\n\n      <ng-content select=\"ax-footer\"> </ng-content>\n    </div>\n  </ng-container>\n</ax-dropdown-box>\n","import { NgModule } from '@angular/core';\nimport { AXAutocompleteComponent } from './autocomplete.component';\n\n@NgModule({\n  imports: [AXAutocompleteComponent],\n  exports: [AXAutocompleteComponent],\n})\nexport class AXAutocompleteModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AA6CA;;;AAGG;AAsEG,MAAO,uBACX,SAAQ,OAAO,CAAC,0BAA0B,EAAE,yBAAyB,EAAE,eAAe,CAAC,CAAA;AAtEzF,IAAA,WAAA,GAAA;;QAyEE,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,GAAG;sFAAC;;QAGtB,IAAA,CAAA,UAAU,GAAG,KAAK,CAAkB,EAAE;uFAAC;;QAGvC,IAAA,CAAA,eAAe,GAAG,KAAK,CAAC,CAAC;4FAAC;QAEhB,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,EAAE;uFAAC;QACvB,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,KAAK;sFAAC;;QAGzB,IAAA,CAAA,UAAU,GAAG,KAAK;;AAGlB,QAAA,IAAA,CAAA,aAAa,GAAsC;AAC3D,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,MAAM,EAAE,MAAM;SACf;;AAGS,QAAA,IAAA,CAAA,eAAe,GAAsB,wBAAwB,CAAC,EAAE,EAAE;YAC1E,GAAG,EAAE,IAAI,CAAC,UAAU;AACpB,YAAA,QAAQ,EAAE,EAAE;AACb,SAAA,CAAC;AAkFF;;;AAGG;AACH,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK;0GAAwB;AAElD;;;AAGG;AACH,QAAA,IAAA,CAAA,kBAAkB,GAAG,KAAK;0GAAwB;AAElD;;;AAGG;QAEH,IAAA,CAAA,aAAa,GAAG,GAAG;AAUnB;;AAEG;AACI,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,uBAAuB,CAAC;;AAGjD,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,cAAc,CAAC;AAE9C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,6BAA6B,CAAC;AAC9C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,yBAAyB,CAAC;AAgK/C,IAAA;AA9QC;;;AAGG;AACH,IAAA,IAAW,UAAU,GAAA;QACnB,OAAO,IAAI,CAAC,WAAW;IACzB;AAEA;;;AAGG;IACH,IACW,UAAU,CAAC,CAA4B,EAAA;AAChD,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC;AACpB,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,eAAe,GAAG,wBAAwB,CAAC,CAAC,EAAE;gBACjD,GAAG,EAAE,IAAI,CAAC,UAAU;AACpB,gBAAA,QAAQ,EAAE,EAAE;AACb,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,UAA+B;QAC7D;;AAEA,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AAC7E,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;AACvC,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;AACpG,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;AAC7B,QAAA,CAAC,CAAC;IACJ;;IAmFA,eAAe,GAAA;QACb,IAAI,CAAC,eAAe,EAAE;QACtB,IAAI,CAAC,kBAAkB,EAAE;QAEzB,IAAI,CAAC,UAAU,CAAC;AACb,aAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,gBAAgB;AAC9E,aAAA,SAAS,CAAC,CAAC,CAAC,KAAI;YACf,IAAI,CAAC,CAAC,CAAC,iBAAiB;gBAAE;YAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,KAAK,EAAE;gBACZ;YACF;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;YACpB,IAAI,CAAC,IAAI,EAAE;AACb,QAAA,CAAC,CAAC;QAEJ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI;YACpF,IAAI,CAAC,CAAC,WAAW,CAAC,GAAG,KAAK,WAAW,EAAE;gBACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,EAAE;AACX,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACnB;AACF,QAAA,CAAC,CAAC;IACJ;;IAGS,WAAW,GAAA;AAClB,QAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE;IAC1C;AAEA;;;AAGG;AACH,IAAA,YAAY,CAAC,GAAQ,EAAA;AACnB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE;AAE5B,QAAA,MAAM,KAAK,GAAG,YAAW;YACvB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,IAAI,EAAE;gBACpC,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,KAAK,UAAU,EAAE;oBACnD,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;gBACvC;qBAAO;AACL,oBAAA,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBACzD;YACF;AACA,YAAA,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC;AAC3E,QAAA,CAAC;QACD,OAAO,KAAK,EAAE;IAChB;;AAGU,IAAA,oBAAoB,CAAC,CAAU,EAAA;AACvC,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,YAAA,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE;QACrB;AAAO,aAAA,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,IAAI,CAAC,EAAE;AACnF,YAAA,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC;QAC3B;;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjB,YAAA,SAAS,EAAE,IAAI;YACf,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;AACvC,SAAA,CAAC;IACJ;;AAGU,IAAA,oBAAoB,CAAC,CAAU,EAAA;AACvC,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjB,YAAA,SAAS,EAAE,IAAI;YACf,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;AACvC,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE;IAClC;;AAGU,IAAA,mBAAmB,CAAC,CAAsB,EAAA;AAClD,QAAA,IAAI,CAAC,CAAC,iBAAiB,EAAE;AACvB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAClB,IAAI,CAAC,KAAK,EAAE;YACd;YACA,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC;QAC1D;IACF;;AAGU,IAAA,gBAAgB,CAAC,CAAmB,EAAA;AAC5C,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;;AAGU,IAAA,mBAAmB,CAAC,CAAsB,EAAA;AAClD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,KAAK,EAAE;QACd;IACF;;IAGQ,eAAe,CAAC,KAAK,GAAG,CAAC,EAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE;YACpC,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,UAAU,EAAE,KAAK,QAAQ,GAAI,IAAI,CAAC,UAAU,EAAa,GAAG,EAAE;YACzF,IAAI,CAAC,aAAa,GAAG;AACnB,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM;AACxD,sBAAE,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,MAAM,CAAA,EAAA;AACjC,sBAAE,IAAI,CAAC,aAAa,CAAC,MAAM;aAC9B;QACH;aAAO;AACL,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC;YACxF,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,UAAU,EAAE,KAAK,QAAQ,GAAI,IAAI,CAAC,UAAU,EAAa,GAAG,EAAE;YACzF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC/C,IAAI,CAAC,aAAa,GAAG;gBACnB,KAAK,EAAE,CAAA,EAAG,SAAS,CAAA,EAAA,CAAI;gBACvB,MAAM,EAAE,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,CAAA,EAAA,CAAI;aACxE;QACH;QACA,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;AAChC,QAAA,CAAC,CAAC;IACJ;AAEA;;;AAGG;AACH,IAAA,MAAM,CAAC,IAAY,EAAA;QACjB,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;gBAC1B,KAAK,EAAE,IAAI,CAAC,SAAS;AACrB,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;AAC/B,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE;QACpC;AACA,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;IAChC;AAEA;;AAEG;IACH,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACjB,IAAI,CAAC,mBAAmB,EAAE;AAC1B,QAAA,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE;QACpB,IAAI,CAAC,KAAK,EAAE;IACd;AAEA,IAAA,IACY,UAAU,GAAA;QACpB,OAAO,IAAI,CAAC,IAAI;IAClB;8GAjTW,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,eAAA,EAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,kBAAA,EAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EA/BvB;AACT,YAAA,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,uBAAuB,EAAE;AAC9D,YAAA,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,uBAAuB,EAAE;AACvE,YAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,uBAAuB,EAAE;AACtE,YAAA,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,uBAAuB,EAAE;AACvE,YAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,uBAAuB,EAAE;AACtE,YAAA,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,uBAAuB,EAAE;AACxE,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,uBAAuB,CAAC;AACtD,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACD,YAAA;AACE,gBAAA,OAAO,EAAE,uBAAuB;AAChC,gBAAA,QAAQ,EAAE,wBAAwB;AACnC,aAAA;YACD,cAAc;SACf,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAgJU,eAAe,2EAIf,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5PnC,yyEA8DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED8CI,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACX,eAAe,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,cAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,gBAAgB,oJAEhB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAClB,sBAAsB,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACtB,2BAA2B,yLAC3B,+BAA+B,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAR/B,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAIT,gBAAgB,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FAOP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBArEnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,MAAA,EAEnB;wBACN,UAAU;wBACV,UAAU;wBACV,UAAU;wBACV,aAAa;wBACb,UAAU;wBACV,UAAU;wBACV,OAAO;wBACP,OAAO;wBACP,MAAM;wBACN,IAAI;wBACJ,MAAM;wBACN,MAAM;wBACN,UAAU;wBACV,YAAY;wBACZ,WAAW;wBACX,eAAe;wBACf,cAAc;wBACd,eAAe;qBAChB,EAAA,OAAA,EACQ;wBACP,aAAa;wBACb,aAAa;wBACb,gBAAgB;wBAChB,QAAQ;wBACR,SAAS;wBACT,gBAAgB;wBAChB,gBAAgB;wBAChB,UAAU;wBACV,UAAU;wBACV,aAAa;wBACb,gBAAgB;qBACjB,EAAA,aAAA,EAEc,iBAAiB,CAAC,IAAI,EAAA,SAAA,EAC1B;AACT,wBAAA,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,yBAAyB,EAAE;AAC9D,wBAAA,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,yBAAyB,EAAE;AACvE,wBAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,yBAAyB,EAAE;AACtE,wBAAA,EAAE,OAAO,EAAE,oBAAoB,EAAE,WAAW,yBAAyB,EAAE;AACvE,wBAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,yBAAyB,EAAE;AACtE,wBAAA,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,yBAAyB,EAAE;AACxE,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,6BAA6B,CAAC;AACtD,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACD,wBAAA;AACE,4BAAA,OAAO,EAAE,uBAAuB;AAChC,4BAAA,QAAQ,EAAE,wBAAwB;AACnC,yBAAA;wBACD,cAAc;AACf,qBAAA,EAAA,IAAA,EACK,EAAE,eAAe,EAAE,MAAM,EAAE,EAAA,OAAA,EACxB;wBACP,SAAS;wBACT,WAAW;wBACX,eAAe;wBACf,gBAAgB;wBAChB,gBAAgB;wBAChB,kBAAkB;wBAClB,sBAAsB;wBACtB,2BAA2B;wBAC3B,+BAA+B;AAChC,qBAAA,EAAA,QAAA,EAAA,yyEAAA,EAAA;;sBAkDA;;sBAwBA;;sBAOA;;sBAOA;;sBAOA;;sBAOA;;sBAOA;;sBAmBA;;sBAIA,SAAS;uBAAC,eAAe;;sBAIzB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,sBAAsB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBAwKlD,WAAW;uBAAC,WAAW;;;ME7Zb,oBAAoB,CAAA;8GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAApB,oBAAoB,EAAA,OAAA,EAAA,CAHrB,uBAAuB,CAAA,EAAA,OAAA,EAAA,CACvB,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAEtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAHrB,uBAAuB,CAAA,EAAA,CAAA,CAAA;;2FAGtB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,uBAAuB,CAAC;oBAClC,OAAO,EAAE,CAAC,uBAAuB,CAAC;AACnC,iBAAA;;;ACND;;AAEG;;;;"}