{"version":3,"file":"pagiflow-angular.mjs","sources":["../../src/Pagiflow.ts","../../src/usePagiflow.ts","../../src/index.ts","../../src/pagiflow-angular.ts"],"sourcesContent":["import {\n  Component,\n  Input,\n  Output,\n  EventEmitter,\n  ViewChild,\n  ElementRef,\n  AfterViewInit,\n  OnDestroy,\n  ViewEncapsulation,\n  Inject,\n  PLATFORM_ID,\n  NgZone,\n  Renderer2,\n  OnChanges,\n  SimpleChanges,\n} from '@angular/core';\n\nimport { CommonModule, isPlatformBrowser } from '@angular/common';\nimport type { PagiflowInstance, PagiflowOptions } from './types';\n\n// @ts-ignore\nimport PagiflowCore from 'pagiflow';\n\ntype PagiflowCtor = (\n  selector: string | HTMLElement,\n  opts?: PagiflowOptions\n) => PagiflowInstance;\n\nfunction getPagiflow(): PagiflowCtor | null {\n  if (typeof window !== 'undefined' && (window as any).Pagiflow) {\n    return (window as any).Pagiflow as PagiflowCtor;\n  }\n  return (PagiflowCore as any).default ?? PagiflowCore;\n}\n\nfunction initPagiflowFromElement(\n  ctor: PagiflowCtor,\n  el: HTMLElement,\n  opts: PagiflowOptions,\n  renderer: Renderer2\n): PagiflowInstance | null {\n  const attrValue = `pf-${Math.random().toString(36).slice(2)}`;\n  const selector = `[data-pagiflow-angular-id=\"${attrValue}\"]`;\n  renderer.setAttribute(el, 'data-pagiflow-angular-id', attrValue);\n\n  const bySelector = ctor(selector, opts) as PagiflowInstance | null;\n  if (!bySelector) {\n    renderer.removeAttribute(el, 'data-pagiflow-angular-id');\n    return null;\n  }\n  return bySelector;\n}\n\n// ─── Pagiflow Component ───────────────────────────────────────────────────────\n@Component({\n  selector: 'pf-pagiflow',\n  standalone: true,\n  imports: [CommonModule],\n  template: `\n    <div\n      #track\n      [ngClass]=\"['pagiflow', className || '']\"\n      [style]=\"style\"\n    >\n      <ng-content></ng-content>\n    </div>\n  `,\n  encapsulation: ViewEncapsulation.None,\n})\nexport class PagiflowComponent implements AfterViewInit, OnDestroy, OnChanges {\n  @ViewChild('track', { read: ElementRef }) trackRef!: ElementRef<HTMLDivElement>;\n\n  // Input options\n  @Input() options: PagiflowOptions = {};\n  @Input() className?: string;\n  @Input() style?: Record<string, string | number>;\n\n  // Output events\n  @Output() slideChange = new EventEmitter<number>();\n  @Output() ready = new EventEmitter<PagiflowInstance>();\n\n  private instance: PagiflowInstance | null = null;\n  private resizeObserver: ResizeObserver | null = null;\n  private raf1 = 0;\n  private raf2 = 0;\n  private timeoutId = 0;\n  private destroyed = false;\n\n  constructor(\n    @Inject(PLATFORM_ID) private platformId: Object,\n    private ngZone: NgZone,\n    private renderer: Renderer2,\n    private hostRef: ElementRef<HTMLElement>\n  ) {}\n\n  ngAfterViewInit(): void {\n    this.destroyed = false;\n    if (!isPlatformBrowser(this.platformId)) return;\n    // Wait one frame so projected slide content is fully rendered before core snapshots children.\n    this.ngZone.runOutsideAngular(() => {\n      requestAnimationFrame(() => {\n        if (!this.destroyed) this.initPagiflow();\n      });\n    });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (!changes['options'] || !this.instance || changes['options'].firstChange) return;\n\n    // Reconfigure existing instance when Angular input object changes.\n    this.scheduleReinit();\n  }\n\n  ngOnDestroy(): void {\n    this.destroyed = true;\n    this.destroy();\n  }\n\n  private initPagiflow(): void {\n    if (!isPlatformBrowser(this.platformId)) return;\n\n    const el = this.trackRef.nativeElement;\n    const existing = (el as any).pagiflowInstance as PagiflowInstance | undefined;\n\n    let inst: PagiflowInstance | null = null;\n\n    if (existing && !existing.destroyed) {\n      inst = existing;\n    } else {\n      const ctor = getPagiflow();\n      if (!ctor) {\n        console.error('[PagiflowComponent] Pagiflow core not found. Install pagiflow or load it via CDN.');\n        return;\n      }\n      inst = initPagiflowFromElement(ctor, el, this.options, this.renderer);\n    }\n\n    if (!inst) return;\n\n    this.instance = inst;\n    (el as any).pagiflowInstance = inst;\n    (this.hostRef.nativeElement as any).pagiflowInstance = inst;\n    this.ready.emit(inst);\n\n    // Listen to slide changes via the instance API\n    inst.onSlideChange((idx) => {\n      this.ngZone.run(() => {\n        this.slideChange.emit(idx);\n      });\n    });\n\n    const syncLayout = () => {\n      const api = this.instance as (PagiflowInstance & { update?: () => void }) | null;\n      api?.update?.();\n    };\n\n    // Setup resize observer for responsive behavior\n    this.ngZone.runOutsideAngular(() => {\n      this.resizeObserver = new ResizeObserver(() => {\n        syncLayout();\n      });\n      this.resizeObserver.observe(el);\n    });\n\n    // Keep behavior aligned with other wrappers so sync/thumbnails settle after mount.\n    this.raf1 = requestAnimationFrame(() => syncLayout());\n    this.raf2 = requestAnimationFrame(() => syncLayout());\n    this.timeoutId = window.setTimeout(() => syncLayout(), 80);\n    window.addEventListener('load', syncLayout, { once: true });\n\n    // Keep a final layout sync after mount without resetting slide index.\n    this.raf1 = requestAnimationFrame(() => syncLayout());\n  }\n\n  private scheduleReinit(): void {\n    if (!isPlatformBrowser(this.platformId)) return;\n    cancelAnimationFrame(this.raf1);\n    this.raf1 = requestAnimationFrame(() => {\n      cancelAnimationFrame(this.raf2);\n      this.raf2 = requestAnimationFrame(() => {\n        const host = this.trackRef?.nativeElement;\n        if (this.destroyed || !this.instance || !host || !host.isConnected) return;\n        try {\n          this.instance.reInit(this.options);\n        } catch {\n          // Ignore transient rebuild errors during rapid teardown/remount.\n        }\n      });\n    });\n  }\n\n  private destroy(): void {\n    if (this.resizeObserver) {\n      this.resizeObserver.disconnect();\n      this.resizeObserver = null;\n    }\n    if (isPlatformBrowser(this.platformId)) {\n      cancelAnimationFrame(this.raf1);\n      cancelAnimationFrame(this.raf2);\n      clearTimeout(this.timeoutId);\n    }\n\n    if (this.instance && !this.instance.destroyed) {\n      this.instance.destroy();\n    }\n    delete (this.hostRef.nativeElement as any).pagiflowInstance;\n    this.instance = null;\n  }\n\n  // Public API methods\n\n  /**\n   * Get the underlying Pagiflow instance.\n   */\n  getInstance(): PagiflowInstance | null {\n    return this.instance;\n  }\n\n  /**\n   * Navigate to the next slide.\n   */\n  next(): void {\n    this.instance?.next();\n  }\n\n  /**\n   * Navigate to the previous slide.\n   */\n  prev(): void {\n    this.instance?.prev();\n  }\n\n  /**\n   * Go to a specific slide index.\n   */\n  goTo(index: number, opts?: { silent?: boolean; instant?: boolean }): void {\n    this.instance?.goTo(index, opts);\n  }\n\n  /**\n   * Start autoScroll.\n   */\n  play(): void {\n    this.instance?.play();\n  }\n\n  /**\n   * Pause autoScroll.\n   */\n  pause(): void {\n    this.instance?.pause();\n  }\n\n  /**\n   * Resume autoScroll after pause.\n   */\n  resume(): void {\n    this.instance?.resume();\n  }\n\n  /**\n   * Toggle autoScroll play/pause state.\n   */\n  togglePlayPause(): void {\n    this.instance?.togglePlayPause();\n  }\n\n  /**\n   * Update options and optionally rebuild.\n   */\n  setOptions(opts: Partial<PagiflowOptions>, rebuild?: boolean): void {\n    this.instance?.setOptions(opts, rebuild);\n  }\n\n  /**\n   * Reinitialize with new or updated options.\n   */\n  reInit(opts?: Partial<PagiflowOptions>): void {\n    this.instance?.reInit(opts);\n  }\n}\n\n// ─── Pagiflow Slide Component ─────────────────────────────────────────────────\n/**\n * Component or directive to wrap individual slides.\n * Use \\`<pf-slide>\\` to create a wrapper element, or use \\`[pf-slide]\\` as an attribute\n * on your own element to avoid an extra DOM wrapper.\n */\n@Component({\n  selector: 'pf-slide, [pf-slide]',\n  standalone: true,\n  template: `<ng-content></ng-content>`,\n  host: {\n    '[class]': \"className ? 'pf-slide ' + className : 'pf-slide'\",\n    '[style]': 'style'\n  },\n  encapsulation: ViewEncapsulation.None,\n})\nexport class PagiflowSlideComponent {\n  @Input() className?: string;\n  @Input() style?: string | Record<string, string | number>;\n}\n","import {\n  inject,\n  Signal,\n  WritableSignal,\n  signal,\n  effect,\n  untracked,\n  type OnInit,\n  type OnDestroy,\n  Injector,\n} from '@angular/core';\n\nimport type { PagiflowInstance, PagiflowOptions } from './types';\n\n// @ts-ignore\nimport PagiflowCore from 'pagiflow';\n\ntype PagiflowCtor = (\n  selector: string | HTMLElement,\n  opts?: PagiflowOptions\n) => PagiflowInstance;\n\nfunction getPagiflow(): PagiflowCtor | null {\n  if (typeof window !== 'undefined' && (window as any).Pagiflow) {\n    return (window as any).Pagiflow as PagiflowCtor;\n  }\n  return (PagiflowCore as any).default ?? PagiflowCore;\n}\n\nfunction initPagiflowFromElement(\n  ctor: PagiflowCtor,\n  el: HTMLElement,\n  opts: PagiflowOptions\n): PagiflowInstance | null {\n  const attrValue = `pf-${Math.random().toString(36).slice(2)}`;\n  const selector = `[data-pagiflow-angular-id=\"${attrValue}\"]`;\n  el.setAttribute('data-pagiflow-angular-id', attrValue);\n\n  const bySelector = ctor(selector, opts) as PagiflowInstance | null;\n  if (!bySelector) {\n    el.removeAttribute('data-pagiflow-angular-id');\n    return null;\n  }\n  return bySelector;\n}\n\nexport interface UsePagiflowReturn {\n  /** Signal for the slider ref */\n  sliderRef: WritableSignal<HTMLElement | null>;\n  /** Signal for Pagiflow instance */\n  instance: WritableSignal<PagiflowInstance | null>;\n  /** Signal for current slide index */\n  currentIndex: WritableSignal<number>;\n  /** Navigate to a specific slide */\n  goTo: (index: number, opts?: { silent?: boolean; instant?: boolean }) => void;\n  /** Go to next slide */\n  next: () => void;\n  /** Go to previous slide */\n  prev: () => void;\n  /** Start autoScroll */\n  play: () => void;\n  /** Pause autoScroll */\n  pause: () => void;\n  /** Toggle play/pause */\n  togglePlayPause: () => void;\n  /** Update options */\n  setOptions: (opts: Partial<PagiflowOptions>, rebuild?: boolean) => void;\n  /** Reinitialize with new options */\n  reInit: (opts?: Partial<PagiflowOptions>) => void;\n}\n\n/**\n * Angular composable (using signals) for Pagiflow slider integration.\n * Usage:\n *   export class SliderComponent {\n *     pagi = usePagiflow({ direction: 'horizontal' });\n *\n *     onMount() {\n *       this.pagi.sliderRef.set(this.elementRef.nativeElement);\n *     }\n *   }\n */\nexport function usePagiflow(options: PagiflowOptions = {}): UsePagiflowReturn {\n  const injector = inject(Injector);\n  const sliderRef = signal<HTMLElement | null>(null);\n  const instance = signal<PagiflowInstance | null>(null);\n  const currentIndex = signal<number>(options.startIndex ?? 0);\n\n  let resizeObserver: ResizeObserver | null = null;\n  let raf1 = 0;\n  let raf2 = 0;\n  let timeoutId = 0;\n\n  // Setup effect to initialize Pagiflow when sliderRef changes\n  effect(() => {\n    if (typeof window === 'undefined') return;\n    const el = sliderRef();\n    if (!el) return;\n\n    const existing = (el as any).pagiflowInstance as PagiflowInstance | undefined;\n    if (existing && !existing.destroyed) {\n      instance.set(existing);\n      return;\n    }\n\n    const ctor = getPagiflow();\n    if (!ctor) {\n      console.error('[usePagiflow] Pagiflow core not found. Install pagiflow or load it via CDN.');\n      return;\n    }\n\n    const inst = initPagiflowFromElement(ctor, el, options);\n    if (!inst) return;\n\n    instance.set(inst);\n    (el as any).pagiflowInstance = inst;\n\n    const syncLayout = () => {\n      const api = inst as PagiflowInstance & { update?: () => void };\n      api.update?.();\n    };\n\n    // Setup resize observer\n    if (typeof ResizeObserver !== 'undefined') {\n      resizeObserver = new ResizeObserver(() => {\n        syncLayout();\n        if (typeof cancelAnimationFrame !== 'undefined') {\n          cancelAnimationFrame(raf1);\n          raf1 = requestAnimationFrame(() => {\n            cancelAnimationFrame(raf2);\n            raf2 = requestAnimationFrame(() => {\n              inst.reInit();\n            });\n          });\n        }\n      });\n      resizeObserver.observe(el);\n    }\n\n    if (typeof requestAnimationFrame !== 'undefined') {\n      raf1 = requestAnimationFrame(() => syncLayout());\n      raf2 = requestAnimationFrame(() => syncLayout());\n    }\n    \n    if (typeof window !== 'undefined') {\n      timeoutId = window.setTimeout(() => syncLayout(), 80);\n      window.addEventListener('load', syncLayout, { once: true });\n    }\n\n    // Listen to slide changes via instance API\n    inst.onSlideChange((idx) => {\n      currentIndex.set(idx);\n    });\n\n    return () => {\n      cleanup();\n      if (inst && !inst.destroyed) inst.destroy();\n      instance.set(null);\n    };\n  }, { allowSignalWrites: true });\n\n  const cleanup = () => {\n    if (resizeObserver) {\n      resizeObserver.disconnect();\n      resizeObserver = null;\n    }\n    if (typeof cancelAnimationFrame !== 'undefined') {\n      cancelAnimationFrame(raf1);\n      cancelAnimationFrame(raf2);\n    }\n    if (typeof window !== 'undefined') {\n      clearTimeout(timeoutId);\n    }\n  };\n\n  const goTo = (index: number, opts?: { silent?: boolean; instant?: boolean }) => {\n    const inst = untracked(() => instance());\n    inst?.goTo(index, opts);\n  };\n\n  const next = () => {\n    const inst = untracked(() => instance());\n    inst?.next();\n  };\n\n  const prev = () => {\n    const inst = untracked(() => instance());\n    inst?.prev();\n  };\n\n  const play = () => {\n    const inst = untracked(() => instance());\n    inst?.play();\n  };\n\n  const pause = () => {\n    const inst = untracked(() => instance());\n    inst?.pause();\n  };\n\n  const togglePlayPause = () => {\n    const inst = untracked(() => instance());\n    inst?.togglePlayPause();\n  };\n\n  const setOptions = (opts: Partial<PagiflowOptions>, rebuild?: boolean) => {\n    const inst = untracked(() => instance());\n    inst?.setOptions(opts, rebuild);\n  };\n\n  const reInit = (opts?: Partial<PagiflowOptions>) => {\n    const inst = untracked(() => instance());\n    inst?.reInit(opts);\n  };\n\n  return {\n    sliderRef,\n    instance,\n    currentIndex,\n    goTo,\n    next,\n    prev,\n    play,\n    pause,\n    togglePlayPause,\n    setOptions,\n    reInit,\n  };\n}\n","import 'pagiflow';\r\nimport { NgModule } from '@angular/core';\r\nimport { PagiflowComponent, PagiflowSlideComponent } from './Pagiflow';\r\n\r\n// ─── Components ───────────────────────────────────────────────────────────────\r\nexport { PagiflowComponent } from './Pagiflow';\r\nexport { PagiflowSlideComponent } from './Pagiflow';\r\n\r\n\r\n@NgModule({\r\n  imports: [PagiflowComponent, PagiflowSlideComponent],\r\n  exports: [PagiflowComponent, PagiflowSlideComponent],\r\n})\r\nexport class PagiflowModule {}\r\n\r\n// ─── Composable ────────────────────────────────────────────────────────────────\r\nexport { usePagiflow } from './usePagiflow';\r\nexport type { UsePagiflowReturn } from './usePagiflow';\r\n\r\n// ─── Types ────────────────────────────────────────────────────────────────────\r\nexport type {\r\n  PagiflowOptions,\r\n  PagiflowInstance,\r\n  PagiflowThumbnailOptions,\r\n  PagiflowNavigationOptions,\r\n  PagiflowDirection,\r\n  PagiflowAutoScrollDirection,\r\n  PagiflowResponsiveOptions,\r\n} from './types';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["getPagiflow","initPagiflowFromElement"],"mappings":";;;;;;AA6BA,SAASA,aAAW,GAAA;IAClB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAK,MAAc,CAAC,QAAQ,EAAE;QAC7D,OAAQ,MAAc,CAAC,QAAwB;IACjD;AACA,IAAA,OAAQ,YAAoB,CAAC,OAAO,IAAI,YAAY;AACtD;AAEA,SAASC,yBAAuB,CAC9B,IAAkB,EAClB,EAAe,EACf,IAAqB,EACrB,QAAmB,EAAA;AAEnB,IAAA,MAAM,SAAS,GAAG,CAAA,GAAA,EAAM,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC7D,IAAA,MAAM,QAAQ,GAAG,CAAA,2BAAA,EAA8B,SAAS,IAAI;IAC5D,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,0BAA0B,EAAE,SAAS,CAAC;IAEhE,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAA4B;IAClE,IAAI,CAAC,UAAU,EAAE;AACf,QAAA,QAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,0BAA0B,CAAC;AACxD,QAAA,OAAO,IAAI;IACb;AACA,IAAA,OAAO,UAAU;AACnB;AAEA;MAgBa,iBAAiB,CAAA;AAoBG,IAAA,UAAA;AACrB,IAAA,MAAA;AACA,IAAA,QAAA;AACA,IAAA,OAAA;AAtBgC,IAAA,QAAQ;;IAGzC,OAAO,GAAoB,EAAE;AAC7B,IAAA,SAAS;AACT,IAAA,KAAK;;AAGJ,IAAA,WAAW,GAAG,IAAI,YAAY,EAAU;AACxC,IAAA,KAAK,GAAG,IAAI,YAAY,EAAoB;IAE9C,QAAQ,GAA4B,IAAI;IACxC,cAAc,GAA0B,IAAI;IAC5C,IAAI,GAAG,CAAC;IACR,IAAI,GAAG,CAAC;IACR,SAAS,GAAG,CAAC;IACb,SAAS,GAAG,KAAK;AAEzB,IAAA,WAAA,CAC+B,UAAkB,EACvC,MAAc,EACd,QAAmB,EACnB,OAAgC,EAAA;QAHX,IAAA,CAAA,UAAU,GAAV,UAAU;QAC/B,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,QAAQ,GAAR,QAAQ;QACR,IAAA,CAAA,OAAO,GAAP,OAAO;IACd;IAEH,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;;AAEzC,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;YACjC,qBAAqB,CAAC,MAAK;gBACzB,IAAI,CAAC,IAAI,CAAC,SAAS;oBAAE,IAAI,CAAC,YAAY,EAAE;AAC1C,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW;YAAE;;QAG7E,IAAI,CAAC,cAAc,EAAE;IACvB;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACrB,IAAI,CAAC,OAAO,EAAE;IAChB;IAEQ,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;AAEzC,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa;AACtC,QAAA,MAAM,QAAQ,GAAI,EAAU,CAAC,gBAAgD;QAE7E,IAAI,IAAI,GAA4B,IAAI;AAExC,QAAA,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;YACnC,IAAI,GAAG,QAAQ;QACjB;aAAO;AACL,YAAA,MAAM,IAAI,GAAGD,aAAW,EAAE;YAC1B,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,OAAO,CAAC,KAAK,CAAC,mFAAmF,CAAC;gBAClG;YACF;AACA,YAAA,IAAI,GAAGC,yBAAuB,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC;QACvE;AAEA,QAAA,IAAI,CAAC,IAAI;YAAE;AAEX,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACnB,QAAA,EAAU,CAAC,gBAAgB,GAAG,IAAI;QAClC,IAAI,CAAC,OAAO,CAAC,aAAqB,CAAC,gBAAgB,GAAG,IAAI;AAC3D,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGrB,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,KAAI;AACzB,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACnB,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5B,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,MAAK;AACtB,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAA+D;AAChF,YAAA,GAAG,EAAE,MAAM,IAAI;AACjB,QAAA,CAAC;;AAGD,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AACjC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,MAAK;AAC5C,gBAAA,UAAU,EAAE;AACd,YAAA,CAAC,CAAC;AACF,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;AACjC,QAAA,CAAC,CAAC;;QAGF,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC,MAAM,UAAU,EAAE,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC,MAAM,UAAU,EAAE,CAAC;AACrD,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,UAAU,EAAE,EAAE,EAAE,CAAC;AAC1D,QAAA,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;QAG3D,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC,MAAM,UAAU,EAAE,CAAC;IACvD;IAEQ,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;YAAE;AACzC,QAAA,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,QAAA,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC,MAAK;AACrC,YAAA,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,YAAA,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC,MAAK;AACrC,gBAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa;AACzC,gBAAA,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW;oBAAE;AACpE,gBAAA,IAAI;oBACF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;gBACpC;AAAE,gBAAA,MAAM;;gBAER;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEQ,OAAO,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;AAChC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;QAC5B;AACA,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,YAAA,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;AAC/B,YAAA,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;QAC9B;QAEA,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AAC7C,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;QACzB;AACA,QAAA,OAAQ,IAAI,CAAC,OAAO,CAAC,aAAqB,CAAC,gBAAgB;AAC3D,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;IACtB;;AAIA;;AAEG;IACH,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ;IACtB;AAEA;;AAEG;IACH,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;IACvB;AAEA;;AAEG;IACH,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;IACvB;AAEA;;AAEG;IACH,IAAI,CAAC,KAAa,EAAE,IAA8C,EAAA;QAChE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;IAClC;AAEA;;AAEG;IACH,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;IACvB;AAEA;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE;IACxB;AAEA;;AAEG;IACH,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE;IACzB;AAEA;;AAEG;IACH,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE;IAClC;AAEA;;AAEG;IACH,UAAU,CAAC,IAA8B,EAAE,OAAiB,EAAA;QAC1D,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;IAC1C;AAEA;;AAEG;AACH,IAAA,MAAM,CAAC,IAA+B,EAAA;AACpC,QAAA,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC;IAC7B;AAlNW,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBAoBlB,WAAW,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;4FApBV,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACA,UAAU,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZ5B;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EATS,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAYX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAf7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,EAAA,CAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACtC,iBAAA;;0BAqBI,MAAM;2BAAC,WAAW;+GAnBqB,QAAQ,EAAA,CAAA;sBAAjD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE;gBAG/B,OAAO,EAAA,CAAA;sBAAf;gBACQ,SAAS,EAAA,CAAA;sBAAjB;gBACQ,KAAK,EAAA,CAAA;sBAAb;gBAGS,WAAW,EAAA,CAAA;sBAApB;gBACS,KAAK,EAAA,CAAA;sBAAd;;AA2MH;AACA;;;;AAIG;MAWU,sBAAsB,CAAA;AACxB,IAAA,SAAS;AACT,IAAA,KAAK;wGAFH,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAtB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,sBAAsB,6OAPvB,CAAA,yBAAA,CAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;4FAO1B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,CAAA,yBAAA,CAA2B;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,SAAS,EAAE,kDAAkD;AAC7D,wBAAA,SAAS,EAAE;AACZ,qBAAA;oBACD,aAAa,EAAE,iBAAiB,CAAC,IAAI;AACtC,iBAAA;8BAEU,SAAS,EAAA,CAAA;sBAAjB;gBACQ,KAAK,EAAA,CAAA;sBAAb;;;ACvRH,SAAS,WAAW,GAAA;IAClB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAK,MAAc,CAAC,QAAQ,EAAE;QAC7D,OAAQ,MAAc,CAAC,QAAwB;IACjD;AACA,IAAA,OAAQ,YAAoB,CAAC,OAAO,IAAI,YAAY;AACtD;AAEA,SAAS,uBAAuB,CAC9B,IAAkB,EAClB,EAAe,EACf,IAAqB,EAAA;AAErB,IAAA,MAAM,SAAS,GAAG,CAAA,GAAA,EAAM,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;AAC7D,IAAA,MAAM,QAAQ,GAAG,CAAA,2BAAA,EAA8B,SAAS,IAAI;AAC5D,IAAA,EAAE,CAAC,YAAY,CAAC,0BAA0B,EAAE,SAAS,CAAC;IAEtD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAA4B;IAClE,IAAI,CAAC,UAAU,EAAE;AACf,QAAA,EAAE,CAAC,eAAe,CAAC,0BAA0B,CAAC;AAC9C,QAAA,OAAO,IAAI;IACb;AACA,IAAA,OAAO,UAAU;AACnB;AA2BA;;;;;;;;;;AAUG;AACG,SAAU,WAAW,CAAC,OAAA,GAA2B,EAAE,EAAA;AACvD,IAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;AACjC,IAAA,MAAM,SAAS,GAAG,MAAM,CAAqB,IAAI,CAAC;AAClD,IAAA,MAAM,QAAQ,GAAG,MAAM,CAA0B,IAAI,CAAC;IACtD,MAAM,YAAY,GAAG,MAAM,CAAS,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC;IAE5D,IAAI,cAAc,GAA0B,IAAI;IAChD,IAAI,IAAI,GAAG,CAAC;IACZ,IAAI,IAAI,GAAG,CAAC;IACZ,IAAI,SAAS,GAAG,CAAC;;IAGjB,MAAM,CAAC,MAAK;QACV,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;AACnC,QAAA,MAAM,EAAE,GAAG,SAAS,EAAE;AACtB,QAAA,IAAI,CAAC,EAAE;YAAE;AAET,QAAA,MAAM,QAAQ,GAAI,EAAU,CAAC,gBAAgD;AAC7E,QAAA,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AACnC,YAAA,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;YACtB;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,WAAW,EAAE;QAC1B,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,CAAC,KAAK,CAAC,6EAA6E,CAAC;YAC5F;QACF;QAEA,MAAM,IAAI,GAAG,uBAAuB,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC;AACvD,QAAA,IAAI,CAAC,IAAI;YAAE;AAEX,QAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACjB,QAAA,EAAU,CAAC,gBAAgB,GAAG,IAAI;QAEnC,MAAM,UAAU,GAAG,MAAK;YACtB,MAAM,GAAG,GAAG,IAAkD;AAC9D,YAAA,GAAG,CAAC,MAAM,IAAI;AAChB,QAAA,CAAC;;AAGD,QAAA,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;AACzC,YAAA,cAAc,GAAG,IAAI,cAAc,CAAC,MAAK;AACvC,gBAAA,UAAU,EAAE;AACZ,gBAAA,IAAI,OAAO,oBAAoB,KAAK,WAAW,EAAE;oBAC/C,oBAAoB,CAAC,IAAI,CAAC;AAC1B,oBAAA,IAAI,GAAG,qBAAqB,CAAC,MAAK;wBAChC,oBAAoB,CAAC,IAAI,CAAC;AAC1B,wBAAA,IAAI,GAAG,qBAAqB,CAAC,MAAK;4BAChC,IAAI,CAAC,MAAM,EAAE;AACf,wBAAA,CAAC,CAAC;AACJ,oBAAA,CAAC,CAAC;gBACJ;AACF,YAAA,CAAC,CAAC;AACF,YAAA,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B;AAEA,QAAA,IAAI,OAAO,qBAAqB,KAAK,WAAW,EAAE;YAChD,IAAI,GAAG,qBAAqB,CAAC,MAAM,UAAU,EAAE,CAAC;YAChD,IAAI,GAAG,qBAAqB,CAAC,MAAM,UAAU,EAAE,CAAC;QAClD;AAEA,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACjC,YAAA,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,UAAU,EAAE,EAAE,EAAE,CAAC;AACrD,YAAA,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC7D;;AAGA,QAAA,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,KAAI;AACzB,YAAA,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC;AACvB,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,MAAK;AACV,YAAA,OAAO,EAAE;AACT,YAAA,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS;gBAAE,IAAI,CAAC,OAAO,EAAE;AAC3C,YAAA,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;AACpB,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC;IAE/B,MAAM,OAAO,GAAG,MAAK;QACnB,IAAI,cAAc,EAAE;YAClB,cAAc,CAAC,UAAU,EAAE;YAC3B,cAAc,GAAG,IAAI;QACvB;AACA,QAAA,IAAI,OAAO,oBAAoB,KAAK,WAAW,EAAE;YAC/C,oBAAoB,CAAC,IAAI,CAAC;YAC1B,oBAAoB,CAAC,IAAI,CAAC;QAC5B;AACA,QAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;YACjC,YAAY,CAAC,SAAS,CAAC;QACzB;AACF,IAAA,CAAC;AAED,IAAA,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,IAA8C,KAAI;QAC7E,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,QAAQ,EAAE,CAAC;AACxC,QAAA,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;AACzB,IAAA,CAAC;IAED,MAAM,IAAI,GAAG,MAAK;QAChB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,QAAQ,EAAE,CAAC;QACxC,IAAI,EAAE,IAAI,EAAE;AACd,IAAA,CAAC;IAED,MAAM,IAAI,GAAG,MAAK;QAChB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,QAAQ,EAAE,CAAC;QACxC,IAAI,EAAE,IAAI,EAAE;AACd,IAAA,CAAC;IAED,MAAM,IAAI,GAAG,MAAK;QAChB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,QAAQ,EAAE,CAAC;QACxC,IAAI,EAAE,IAAI,EAAE;AACd,IAAA,CAAC;IAED,MAAM,KAAK,GAAG,MAAK;QACjB,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,QAAQ,EAAE,CAAC;QACxC,IAAI,EAAE,KAAK,EAAE;AACf,IAAA,CAAC;IAED,MAAM,eAAe,GAAG,MAAK;QAC3B,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,QAAQ,EAAE,CAAC;QACxC,IAAI,EAAE,eAAe,EAAE;AACzB,IAAA,CAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,IAA8B,EAAE,OAAiB,KAAI;QACvE,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,QAAQ,EAAE,CAAC;AACxC,QAAA,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC;AACjC,IAAA,CAAC;AAED,IAAA,MAAM,MAAM,GAAG,CAAC,IAA+B,KAAI;QACjD,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,QAAQ,EAAE,CAAC;AACxC,QAAA,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;AACpB,IAAA,CAAC;IAED,OAAO;QACL,SAAS;QACT,QAAQ;QACR,YAAY;QACZ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,eAAe;QACf,UAAU;QACV,MAAM;KACP;AACH;;MCvNa,cAAc,CAAA;wGAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAd,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAHf,iBAAiB,EAAE,sBAAsB,CAAA,EAAA,OAAA,EAAA,CACzC,iBAAiB,EAAE,sBAAsB,CAAA,EAAA,CAAA;AAExC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAHf,iBAAiB,CAAA,EAAA,CAAA;;4FAGhB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;AACpD,oBAAA,OAAO,EAAE,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;AACrD,iBAAA;;;ACZD;;AAEG;;;;"}