{"version":3,"file":"pagination.mjs","sources":["../../../../../packages/components/pagination/src/pagination.ts"],"sourcesContent":["import { h, ref, provide, computed, defineComponent, getCurrentInstance, watch, type PropType } from 'vue'\nimport { debugWarn } from '@element-ultra/utils'\nimport { useNamespace } from '@element-ultra/hooks'\nimport { elPaginationKey } from '@element-ultra/tokens'\n\nimport Prev from './components/prev.vue'\nimport Next from './components/next.vue'\nimport Sizes from './components/sizes.vue'\nimport Jumper from './components/jumper.vue'\nimport Total from './components/total.vue'\nimport Pager from './components/pager.vue'\n\nimport type { VNode, ExtractPropTypes } from 'vue'\n\n/**\n * It it user's responsibility to guarantee that the value of props.total... is number\n * (same as pageSize, defaultPageSize, currentPage, defaultCurrentPage, pageCount)\n * Otherwise we can reasonable infer that the corresponding field is absent\n */\nconst isAbsent = (v: unknown): v is undefined => typeof v !== 'number'\n\ntype LayoutKey = 'prev' | 'pager' | 'next' | 'jumper' | '->' | 'total' | 'sizes' | 'slot'\n\nexport const paginationProps = {\n  total: Number,\n  pageSize: Number,\n  defaultPageSize: Number,\n  currentPage: Number,\n  defaultCurrentPage: Number,\n  pageCount: Number,\n  pagerCount: {\n    type: Number,\n    validator: (value: unknown) => {\n      return (\n        typeof value === 'number' &&\n        (value | 0) === value &&\n        value > 4 &&\n        value < 22 &&\n        value % 2 === 1\n      )\n    },\n    default: 7\n  },\n  layout: {\n    type: String,\n    default: (['prev', 'pager', 'next', 'jumper', '->', 'total'] as LayoutKey[]).join(', ')\n  },\n  pageSizes: {\n    type: Array as PropType<number[]>,\n    default: () => [10, 20, 30, 40, 50, 100]\n  },\n  popperClass: {\n    type: String,\n    default: ''\n  },\n  prevText: {\n    type: String,\n    default: ''\n  },\n  nextText: {\n    type: String,\n    default: ''\n  },\n  small: Boolean,\n  background: Boolean,\n  disabled: Boolean,\n  hideOnSinglePage: Boolean\n}\nexport type PaginationProps = ExtractPropTypes<typeof paginationProps>\n\nexport const paginationEmits = {\n  'update:current-page': (val: number) => typeof val === 'number',\n  'update:page-size': (val: number) => typeof val === 'number',\n  'change': (page: number, size: number) => true,\n  'prev-click': (val: number) => typeof val === 'number',\n  'next-click': (val: number) => typeof val === 'number'\n}\nexport type PaginationEmits = typeof paginationEmits\n\nconst componentName = 'ElPagination'\nexport default defineComponent({\n  name: componentName,\n\n  props: paginationProps,\n  emits: paginationEmits,\n\n  setup(props, { emit, slots }) {\n    const ns = useNamespace('pagination')\n    const vnodeProps = getCurrentInstance()!.vnode.props || {}\n    // we can find @xxx=\"xxx\" props on `vnodeProps` to check if user bind corresponding events\n    const hasCurrentPageListener =\n      'onUpdate:currentPage' in vnodeProps ||\n      'onUpdate:current-page' in vnodeProps\n    const hasPageSizeListener =\n      'onUpdate:pageSize' in vnodeProps ||\n      'onUpdate:page-size' in vnodeProps\n    const assertValidUsage = computed(() => {\n      // Users have to set either one, otherwise count of pages cannot be determined\n      if (isAbsent(props.total) && isAbsent(props.pageCount)) return false\n      // <el-pagination ...otherProps :current-page=\"xxx\" /> without corresponding listener is forbidden now\n      // Users have to use two way binding of `currentPage`\n      // If users just want to provide a default value, `defaultCurrentPage` is here for you\n      if (!isAbsent(props.currentPage) && !hasCurrentPageListener) return false\n      // When you want to change sizes, things get more complex, detailed below\n      // Basically the most important value we need is page count\n      // either directly from props.pageCount\n      // or calculated from props.total\n      // we will take props.pageCount precedence over props.total\n      if (props.layout.includes('sizes')) {\n        if (!isAbsent(props.pageCount)) {\n          // if props.pageCount is assign by user, then user have to watch pageSize change\n          // and recalculate pageCount\n          if (!hasPageSizeListener) return false\n        } else if (!isAbsent(props.total)) {\n          // Otherwise, we will see if user have props.pageSize defined\n          // If so, meaning user want to have pageSize controlled himself/herself from component\n          // Thus page size listener is required\n          // users are account for page size change\n          if (!isAbsent(props.pageSize)) {\n            if (!hasPageSizeListener) {\n              return false\n            }\n          } else {\n            // (else block just for explaination)\n            // else page size is controlled by el-pagination internally\n          }\n        }\n      }\n      return true\n    })\n\n    const innerPageSize = ref(isAbsent(props.defaultPageSize) ? 10 : props.defaultPageSize)\n    const innerCurrentPage = ref(isAbsent(props.defaultCurrentPage) ? 1 : props.defaultCurrentPage)\n\n    const pageSizeBridge = computed({\n      get() {\n        return isAbsent(props.pageSize) ? innerPageSize.value : props.pageSize\n      },\n      set(v: number) {\n        if (isAbsent(props.pageSize)) {\n          innerPageSize.value = v\n        }\n        if (hasPageSizeListener) {\n          emit('update:page-size', v)\n          emit('change', pageCountBridge.value, v)\n        }\n      }\n    })\n\n    const pageCountBridge = computed<number>(() => {\n      let pageCount = 0\n      if (!isAbsent(props.pageCount)) {\n        pageCount = props.pageCount\n      } else if (!isAbsent(props.total)) {\n        pageCount = Math.max(1, Math.ceil(props.total / pageSizeBridge.value))\n      }\n      return pageCount\n    })\n\n    const currentPageBridge = computed<number>({\n      get() {\n        return isAbsent(props.currentPage) ? innerCurrentPage.value : props.currentPage\n      },\n      set(v) {\n        let newCurrentPage = v\n        if (v < 1) {\n          newCurrentPage = 1\n        } else if (v > pageCountBridge.value) {\n          newCurrentPage = pageCountBridge.value\n        }\n        if (isAbsent(props.currentPage)) {\n          innerCurrentPage.value = newCurrentPage\n        }\n        if (hasCurrentPageListener) {\n          emit('update:current-page', newCurrentPage)\n          emit('change', newCurrentPage, pageCountBridge.value)\n        }\n      }\n    })\n\n    watch(pageCountBridge, val => {\n      if (currentPageBridge.value > val) currentPageBridge.value = val\n    })\n\n    function handleCurrentChange(val: number) {\n      currentPageBridge.value = val\n    }\n\n    function handleSizeChange(val: number) {\n      pageSizeBridge.value = val\n      const newPageCount = pageCountBridge.value\n      if (currentPageBridge.value > newPageCount) {\n        currentPageBridge.value = newPageCount\n      }\n    }\n\n    function prev() {\n      if (props.disabled) return\n      currentPageBridge.value -= 1\n      emit('prev-click', currentPageBridge.value)\n    }\n\n    function next() {\n      if (props.disabled) return\n      currentPageBridge.value += 1\n      emit('next-click', currentPageBridge.value)\n    }\n\n    function addClass(element: any, cls: string) {\n      if (element) {\n        if (!element.props) {\n          element.props = {}\n        }\n        element.props.class = [element.props.class, cls].join(' ')\n      }\n    }\n\n    provide(elPaginationKey, {\n      pageCount: pageCountBridge,\n      disabled: computed(() => props.disabled),\n      currentPage: currentPageBridge,\n      changeEvent: handleCurrentChange,\n      handleSizeChange\n    })\n\n    return () => {\n      if (!assertValidUsage.value) {\n        debugWarn(componentName, '废弃警告')\n        return null\n      }\n      if (!props.layout) return null\n      if (props.hideOnSinglePage && pageCountBridge.value <= 1) return null\n      const rootChildren: Array<VNode | VNode[] | null> = []\n      const rightWrapperChildren: Array<VNode | VNode[] | null> = []\n      const rightWrapperRoot = h('div', { class: ns.e('rightwrapper') }, rightWrapperChildren)\n      const TEMPLATE_MAP: Record<Exclude<LayoutKey, '->'>, VNode | VNode[] | null> = {\n        prev: h(Prev, {\n          disabled: props.disabled,\n          currentPage: currentPageBridge.value,\n          prevText: props.prevText,\n          onClick: prev\n        }),\n        jumper: h(Jumper),\n        pager: h(Pager, {\n          currentPage: currentPageBridge.value,\n          pageCount: pageCountBridge.value,\n          pagerCount: props.pagerCount,\n          onChange: handleCurrentChange,\n          disabled: props.disabled\n        }),\n        next: h(Next, {\n          disabled: props.disabled,\n          currentPage: currentPageBridge.value,\n          pageCount: pageCountBridge.value,\n          nextText: props.nextText,\n          onClick: next\n        }),\n        sizes: h(Sizes, {\n          pageSize: pageSizeBridge.value,\n          pageSizes: props.pageSizes,\n          popperClass: props.popperClass,\n          disabled: props.disabled,\n          size: props.small ? 'small' : 'default'\n        }),\n        slot: slots?.default?.() ?? null,\n        total: h(Total, { total: isAbsent(props.total) ? 0 : props.total })\n      }\n\n      const components = props.layout.split(',').map((item: string) => item.trim()) as LayoutKey[]\n\n      let haveRightWrapper = false\n\n      components.forEach(c => {\n        if (c === '->') {\n          haveRightWrapper = true\n          return\n        }\n        if (!haveRightWrapper) {\n          rootChildren.push(TEMPLATE_MAP[c])\n        } else {\n          rightWrapperChildren.push(TEMPLATE_MAP[c])\n        }\n      })\n\n      addClass(rootChildren[0], ns.is('first'))\n      addClass(rootChildren[rootChildren.length - 1], ns.is('last'))\n\n      if (haveRightWrapper && rightWrapperChildren.length > 0) {\n        addClass(rightWrapperChildren[0], ns.is('first'))\n        addClass(rightWrapperChildren[rightWrapperChildren.length - 1], ns.is('last'))\n        rootChildren.push(rightWrapperRoot)\n      }\n      return h(\n        'div',\n        {\n          role: 'pagination',\n          'aria-label': 'pagination',\n          class: [\n            ns.b(),\n            ns.is('background', props.background),\n            {\n              [ns.m('small')]: props.small\n            }\n          ]\n        },\n        rootChildren\n      )\n    }\n  }\n})\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAmBA,MAAM,QAAW,GAAA,CAAC,CAA+B,KAAA,OAAO,CAAM,KAAA,QAAA,CAAA;AAIvD,MAAM,eAAkB,GAAA;AAAA,EAC7B,KAAO,EAAA,MAAA;AAAA,EACP,QAAU,EAAA,MAAA;AAAA,EACV,eAAiB,EAAA,MAAA;AAAA,EACjB,WAAa,EAAA,MAAA;AAAA,EACb,kBAAoB,EAAA,MAAA;AAAA,EACpB,SAAW,EAAA,MAAA;AAAA,EACX,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,MAAA;AAAA,IACN,SAAA,EAAW,CAAC,KAAmB,KAAA;AAC7B,MACE,OAAA,OAAO,KAAU,KAAA,QAAA,IAAA,CAChB,KAAQ,GAAA,CAAA,MAAO,KAChB,IAAA,KAAA,GAAQ,CACR,IAAA,KAAA,GAAQ,EACR,IAAA,KAAA,GAAQ,CAAM,KAAA,CAAA,CAAA;AAAA,KAElB;AAAA,IACA,OAAS,EAAA,CAAA;AAAA,GACX;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,OAAA,EAAU,CAAC,MAAA,EAAQ,OAAS,EAAA,MAAA,EAAQ,UAAU,IAAM,EAAA,OAAO,CAAkB,CAAA,IAAA,CAAK,IAAI,CAAA;AAAA,GACxF;AAAA,EACA,SAAW,EAAA;AAAA,IACT,IAAM,EAAA,KAAA;AAAA,IACN,OAAA,EAAS,MAAM,CAAC,EAAA,EAAI,IAAI,EAAI,EAAA,EAAA,EAAI,IAAI,GAAG,CAAA;AAAA,GACzC;AAAA,EACA,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,EAAA;AAAA,GACX;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,EAAA;AAAA,GACX;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,EAAA;AAAA,GACX;AAAA,EACA,KAAO,EAAA,OAAA;AAAA,EACP,UAAY,EAAA,OAAA;AAAA,EACZ,QAAU,EAAA,OAAA;AAAA,EACV,gBAAkB,EAAA,OAAA;AACpB,EAAA;AAGO,MAAM,eAAkB,GAAA;AAAA,EAC7B,qBAAuB,EAAA,CAAC,GAAgB,KAAA,OAAO,GAAQ,KAAA,QAAA;AAAA,EACvD,kBAAoB,EAAA,CAAC,GAAgB,KAAA,OAAO,GAAQ,KAAA,QAAA;AAAA,EACpD,QAAA,EAAU,CAAC,IAAA,EAAc,IAAiB,KAAA,IAAA;AAAA,EAC1C,YAAc,EAAA,CAAC,GAAgB,KAAA,OAAO,GAAQ,KAAA,QAAA;AAAA,EAC9C,YAAc,EAAA,CAAC,GAAgB,KAAA,OAAO,GAAQ,KAAA,QAAA;AAChD,EAAA;AAGA,MAAM,aAAgB,GAAA,cAAA,CAAA;AACtB,mBAAe,eAAgB,CAAA;AAAA,EAC7B,IAAM,EAAA,aAAA;AAAA,EAEN,KAAO,EAAA,eAAA;AAAA,EACP,KAAO,EAAA,eAAA;AAAA,EAEP,KAAM,CAAA,KAAA,EAAO,EAAE,IAAA,EAAM,OAAS,EAAA;AAC5B,IAAM,MAAA,EAAA,GAAK,aAAa,YAAY,CAAA,CAAA;AACpC,IAAA,MAAM,UAAa,GAAA,kBAAA,EAAsB,CAAA,KAAA,CAAM,SAAS,EAAC,CAAA;AAEzD,IAAM,MAAA,sBAAA,GACJ,sBAA0B,IAAA,UAAA,IAC1B,uBAA2B,IAAA,UAAA,CAAA;AAC7B,IAAM,MAAA,mBAAA,GACJ,mBAAuB,IAAA,UAAA,IACvB,oBAAwB,IAAA,UAAA,CAAA;AAC1B,IAAM,MAAA,gBAAA,GAAmB,SAAS,MAAM;AAEtC,MAAA,IAAI,SAAS,KAAM,CAAA,KAAK,CAAK,IAAA,QAAA,CAAS,MAAM,SAAS,CAAA;AAAG,QAAO,OAAA,KAAA,CAAA;AAI/D,MAAA,IAAI,CAAC,QAAA,CAAS,KAAM,CAAA,WAAW,KAAK,CAAC,sBAAA;AAAwB,QAAO,OAAA,KAAA,CAAA;AAMpE,MAAA,IAAI,KAAM,CAAA,MAAA,CAAO,QAAS,CAAA,OAAO,CAAG,EAAA;AAClC,QAAA,IAAI,CAAC,QAAA,CAAS,KAAM,CAAA,SAAS,CAAG,EAAA;AAG9B,UAAA,IAAI,CAAC,mBAAA;AAAqB,YAAO,OAAA,KAAA,CAAA;AAAA,SACxB,MAAA,IAAA,CAAC,QAAS,CAAA,KAAA,CAAM,KAAK,CAAG,EAAA;AAKjC,UAAA,IAAI,CAAC,QAAA,CAAS,KAAM,CAAA,QAAQ,CAAG,EAAA;AAC7B,YAAA,IAAI,CAAC,mBAAqB,EAAA;AACxB,cAAO,OAAA,KAAA,CAAA;AAAA,aACT;AAAA,WACK,MAAA;AAAA,WAGP;AAAA,SACF;AAAA,OACF;AACA,MAAO,OAAA,IAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAM,MAAA,aAAA,GAAgB,IAAI,QAAS,CAAA,KAAA,CAAM,eAAe,CAAI,GAAA,EAAA,GAAK,MAAM,eAAe,CAAA,CAAA;AACtF,IAAM,MAAA,gBAAA,GAAmB,IAAI,QAAS,CAAA,KAAA,CAAM,kBAAkB,CAAI,GAAA,CAAA,GAAI,MAAM,kBAAkB,CAAA,CAAA;AAE9F,IAAA,MAAM,iBAAiB,QAAS,CAAA;AAAA,MAC9B,GAAM,GAAA;AACJ,QAAA,OAAO,SAAS,KAAM,CAAA,QAAQ,CAAI,GAAA,aAAA,CAAc,QAAQ,KAAM,CAAA,QAAA,CAAA;AAAA,OAChE;AAAA,MACA,IAAI,CAAW,EAAA;AACb,QAAI,IAAA,QAAA,CAAS,KAAM,CAAA,QAAQ,CAAG,EAAA;AAC5B,UAAA,aAAA,CAAc,KAAQ,GAAA,CAAA,CAAA;AAAA,SACxB;AACA,QAAA,IAAI,mBAAqB,EAAA;AACvB,UAAA,IAAA,CAAK,oBAAoB,CAAC,CAAA,CAAA;AAC1B,UAAK,IAAA,CAAA,QAAA,EAAU,eAAgB,CAAA,KAAA,EAAO,CAAC,CAAA,CAAA;AAAA,SACzC;AAAA,OACF;AAAA,KACD,CAAA,CAAA;AAED,IAAM,MAAA,eAAA,GAAkB,SAAiB,MAAM;AAC7C,MAAA,IAAI,SAAY,GAAA,CAAA,CAAA;AAChB,MAAA,IAAI,CAAC,QAAA,CAAS,KAAM,CAAA,SAAS,CAAG,EAAA;AAC9B,QAAA,SAAA,GAAY,KAAM,CAAA,SAAA,CAAA;AAAA,OACT,MAAA,IAAA,CAAC,QAAS,CAAA,KAAA,CAAM,KAAK,CAAG,EAAA;AACjC,QAAY,SAAA,GAAA,IAAA,CAAK,IAAI,CAAG,EAAA,IAAA,CAAK,KAAK,KAAM,CAAA,KAAA,GAAQ,cAAe,CAAA,KAAK,CAAC,CAAA,CAAA;AAAA,OACvE;AACA,MAAO,OAAA,SAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAED,IAAA,MAAM,oBAAoB,QAAiB,CAAA;AAAA,MACzC,GAAM,GAAA;AACJ,QAAA,OAAO,SAAS,KAAM,CAAA,WAAW,CAAI,GAAA,gBAAA,CAAiB,QAAQ,KAAM,CAAA,WAAA,CAAA;AAAA,OACtE;AAAA,MACA,IAAI,CAAG,EAAA;AACL,QAAA,IAAI,cAAiB,GAAA,CAAA,CAAA;AACrB,QAAA,IAAI,IAAI,CAAG,EAAA;AACT,UAAiB,cAAA,GAAA,CAAA,CAAA;AAAA,SACnB,MAAA,IAAW,CAAI,GAAA,eAAA,CAAgB,KAAO,EAAA;AACpC,UAAA,cAAA,GAAiB,eAAgB,CAAA,KAAA,CAAA;AAAA,SACnC;AACA,QAAI,IAAA,QAAA,CAAS,KAAM,CAAA,WAAW,CAAG,EAAA;AAC/B,UAAA,gBAAA,CAAiB,KAAQ,GAAA,cAAA,CAAA;AAAA,SAC3B;AACA,QAAA,IAAI,sBAAwB,EAAA;AAC1B,UAAA,IAAA,CAAK,uBAAuB,cAAc,CAAA,CAAA;AAC1C,UAAK,IAAA,CAAA,QAAA,EAAU,cAAgB,EAAA,eAAA,CAAgB,KAAK,CAAA,CAAA;AAAA,SACtD;AAAA,OACF;AAAA,KACD,CAAA,CAAA;AAED,IAAA,KAAA,CAAM,iBAAiB,CAAO,GAAA,KAAA;AAC5B,MAAA,IAAI,kBAAkB,KAAQ,GAAA,GAAA;AAAK,QAAA,iBAAA,CAAkB,KAAQ,GAAA,GAAA,CAAA;AAAA,KAC9D,CAAA,CAAA;AAED,IAAA,SAAS,oBAAoB,GAAa,EAAA;AACxC,MAAA,iBAAA,CAAkB,KAAQ,GAAA,GAAA,CAAA;AAAA,KAC5B;AAEA,IAAA,SAAS,iBAAiB,GAAa,EAAA;AACrC,MAAA,cAAA,CAAe,KAAQ,GAAA,GAAA,CAAA;AACvB,MAAA,MAAM,eAAe,eAAgB,CAAA,KAAA,CAAA;AACrC,MAAI,IAAA,iBAAA,CAAkB,QAAQ,YAAc,EAAA;AAC1C,QAAA,iBAAA,CAAkB,KAAQ,GAAA,YAAA,CAAA;AAAA,OAC5B;AAAA,KACF;AAEA,IAAA,SAAS,IAAO,GAAA;AACd,MAAA,IAAI,KAAM,CAAA,QAAA;AAAU,QAAA,OAAA;AACpB,MAAA,iBAAA,CAAkB,KAAS,IAAA,CAAA,CAAA;AAC3B,MAAK,IAAA,CAAA,YAAA,EAAc,kBAAkB,KAAK,CAAA,CAAA;AAAA,KAC5C;AAEA,IAAA,SAAS,IAAO,GAAA;AACd,MAAA,IAAI,KAAM,CAAA,QAAA;AAAU,QAAA,OAAA;AACpB,MAAA,iBAAA,CAAkB,KAAS,IAAA,CAAA,CAAA;AAC3B,MAAK,IAAA,CAAA,YAAA,EAAc,kBAAkB,KAAK,CAAA,CAAA;AAAA,KAC5C;AAEA,IAAS,SAAA,QAAA,CAAS,SAAc,GAAa,EAAA;AAC3C,MAAA,IAAI,OAAS,EAAA;AACX,QAAI,IAAA,CAAC,QAAQ,KAAO,EAAA;AAClB,UAAA,OAAA,CAAQ,QAAQ,EAAC,CAAA;AAAA,SACnB;AACA,QAAQ,OAAA,CAAA,KAAA,CAAM,QAAQ,CAAC,OAAA,CAAQ,MAAM,KAAO,EAAA,GAAG,CAAE,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AAAA,OAC3D;AAAA,KACF;AAEA,IAAA,OAAA,CAAQ,eAAiB,EAAA;AAAA,MACvB,SAAW,EAAA,eAAA;AAAA,MACX,QAAU,EAAA,QAAA,CAAS,MAAM,KAAA,CAAM,QAAQ,CAAA;AAAA,MACvC,WAAa,EAAA,iBAAA;AAAA,MACb,WAAa,EAAA,mBAAA;AAAA,MACb,gBAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,OAAO,MAAM;AAjOjB,MAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAkOM,MAAI,IAAA,CAAC,iBAAiB,KAAO,EAAA;AAC3B,QAAA,SAAA,CAAU,eAAe,0BAAM,CAAA,CAAA;AAC/B,QAAO,OAAA,IAAA,CAAA;AAAA,OACT;AACA,MAAA,IAAI,CAAC,KAAM,CAAA,MAAA;AAAQ,QAAO,OAAA,IAAA,CAAA;AAC1B,MAAI,IAAA,KAAA,CAAM,gBAAoB,IAAA,eAAA,CAAgB,KAAS,IAAA,CAAA;AAAG,QAAO,OAAA,IAAA,CAAA;AACjE,MAAA,MAAM,eAA8C,EAAC,CAAA;AACrD,MAAA,MAAM,uBAAsD,EAAC,CAAA;AAC7D,MAAM,MAAA,gBAAA,GAAmB,CAAE,CAAA,KAAA,EAAO,EAAE,KAAA,EAAO,GAAG,CAAE,CAAA,cAAc,CAAE,EAAA,EAAG,oBAAoB,CAAA,CAAA;AACvF,MAAA,MAAM,YAAyE,GAAA;AAAA,QAC7E,IAAA,EAAM,EAAE,IAAM,EAAA;AAAA,UACZ,UAAU,KAAM,CAAA,QAAA;AAAA,UAChB,aAAa,iBAAkB,CAAA,KAAA;AAAA,UAC/B,UAAU,KAAM,CAAA,QAAA;AAAA,UAChB,OAAS,EAAA,IAAA;AAAA,SACV,CAAA;AAAA,QACD,MAAA,EAAQ,EAAE,MAAM,CAAA;AAAA,QAChB,KAAA,EAAO,EAAE,KAAO,EAAA;AAAA,UACd,aAAa,iBAAkB,CAAA,KAAA;AAAA,UAC/B,WAAW,eAAgB,CAAA,KAAA;AAAA,UAC3B,YAAY,KAAM,CAAA,UAAA;AAAA,UAClB,QAAU,EAAA,mBAAA;AAAA,UACV,UAAU,KAAM,CAAA,QAAA;AAAA,SACjB,CAAA;AAAA,QACD,IAAA,EAAM,EAAE,IAAM,EAAA;AAAA,UACZ,UAAU,KAAM,CAAA,QAAA;AAAA,UAChB,aAAa,iBAAkB,CAAA,KAAA;AAAA,UAC/B,WAAW,eAAgB,CAAA,KAAA;AAAA,UAC3B,UAAU,KAAM,CAAA,QAAA;AAAA,UAChB,OAAS,EAAA,IAAA;AAAA,SACV,CAAA;AAAA,QACD,KAAA,EAAO,EAAE,KAAO,EAAA;AAAA,UACd,UAAU,cAAe,CAAA,KAAA;AAAA,UACzB,WAAW,KAAM,CAAA,SAAA;AAAA,UACjB,aAAa,KAAM,CAAA,WAAA;AAAA,UACnB,UAAU,KAAM,CAAA,QAAA;AAAA,UAChB,IAAA,EAAM,KAAM,CAAA,KAAA,GAAQ,OAAU,GAAA,SAAA;AAAA,SAC/B,CAAA;AAAA,QACD,IAAA,EAAA,CAAM,EAAO,GAAA,CAAA,EAAA,GAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,OAAA,KAAP,IAAsB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAA,IAAA;AAAA,QAC5B,KAAO,EAAA,CAAA,CAAE,KAAO,EAAA,EAAE,KAAO,EAAA,QAAA,CAAS,KAAM,CAAA,KAAK,CAAI,GAAA,CAAA,GAAI,KAAM,CAAA,KAAA,EAAO,CAAA;AAAA,OACpE,CAAA;AAEA,MAAM,MAAA,UAAA,GAAa,KAAM,CAAA,MAAA,CAAO,KAAM,CAAA,GAAG,CAAE,CAAA,GAAA,CAAI,CAAC,IAAA,KAAiB,IAAK,CAAA,IAAA,EAAM,CAAA,CAAA;AAE5E,MAAA,IAAI,gBAAmB,GAAA,KAAA,CAAA;AAEvB,MAAA,UAAA,CAAW,QAAQ,CAAK,CAAA,KAAA;AACtB,QAAA,IAAI,MAAM,IAAM,EAAA;AACd,UAAmB,gBAAA,GAAA,IAAA,CAAA;AACnB,UAAA,OAAA;AAAA,SACF;AACA,QAAA,IAAI,CAAC,gBAAkB,EAAA;AACrB,UAAa,YAAA,CAAA,IAAA,CAAK,YAAa,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,SAC5B,MAAA;AACL,UAAqB,oBAAA,CAAA,IAAA,CAAK,YAAa,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,SAC3C;AAAA,OACD,CAAA,CAAA;AAED,MAAA,QAAA,CAAS,aAAa,CAAC,CAAA,EAAG,EAAG,CAAA,EAAA,CAAG,OAAO,CAAC,CAAA,CAAA;AACxC,MAAS,QAAA,CAAA,YAAA,CAAa,aAAa,MAAS,GAAA,CAAC,GAAG,EAAG,CAAA,EAAA,CAAG,MAAM,CAAC,CAAA,CAAA;AAE7D,MAAI,IAAA,gBAAA,IAAoB,oBAAqB,CAAA,MAAA,GAAS,CAAG,EAAA;AACvD,QAAA,QAAA,CAAS,qBAAqB,CAAC,CAAA,EAAG,EAAG,CAAA,EAAA,CAAG,OAAO,CAAC,CAAA,CAAA;AAChD,QAAS,QAAA,CAAA,oBAAA,CAAqB,qBAAqB,MAAS,GAAA,CAAC,GAAG,EAAG,CAAA,EAAA,CAAG,MAAM,CAAC,CAAA,CAAA;AAC7E,QAAA,YAAA,CAAa,KAAK,gBAAgB,CAAA,CAAA;AAAA,OACpC;AACA,MAAO,OAAA,CAAA;AAAA,QACL,KAAA;AAAA,QACA;AAAA,UACE,IAAM,EAAA,YAAA;AAAA,UACN,YAAc,EAAA,YAAA;AAAA,UACd,KAAO,EAAA;AAAA,YACL,GAAG,CAAE,EAAA;AAAA,YACL,EAAG,CAAA,EAAA,CAAG,YAAc,EAAA,KAAA,CAAM,UAAU,CAAA;AAAA,YACpC;AAAA,cACE,CAAC,EAAG,CAAA,CAAA,CAAE,OAAO,CAAC,GAAG,KAAM,CAAA,KAAA;AAAA,aACzB;AAAA,WACF;AAAA,SACF;AAAA,QACA,YAAA;AAAA,OACF,CAAA;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAC,CAAA;;;;"}