{"version":3,"file":"PicViewer.vue2.mjs","sources":["../../../../../../packages/components/pic/src/PicViewer.vue"],"sourcesContent":["<template>\n\t<transition :key=\"langKey\" name=\"viewer-fade\">\n\t\t<div v-if=\"true\" ref=\"viewer\" tabindex=\"-1\" class=\"to-pic-viewer\" :style=\"{ 'z-index': viewerZIndex }\">\n\t\t\t<!-- 遮罩 -->\n\t\t\t<div class=\"to-pic-viewer-mask\" @click.self=\"handleMaskClick\"></div>\n\n\t\t\t<!-- CLOSE -->\n\t\t\t<to-icon class=\"to-pic-viewer-close\" value=\"close\" link @click=\"hide\"></to-icon>\n\n\t\t\t<!-- ARROW -->\n\t\t\t<template v-if=\"!isSingle\">\n\t\t\t\t<to-icon v-dis=\"!infinite && isFirst\" class=\"to-pic-viewer-prev\" value=\"back\" link @click=\"prev\"></to-icon>\n\t\t\t\t<to-icon v-dis=\"!infinite && isLast\" class=\"to-pic-viewer-next\" value=\"next\" link @click=\"next\"></to-icon>\n\t\t\t</template>\n\n\t\t\t<!-- ACTIONS -->\n\t\t\t<div class=\"to-pic-viewer-fn\">\n\t\t\t\t<to-button class=\"to-pic-viewer-zoomout\" icon=\"zoomout\" @click=\"handleActions('zoomOut')\"></to-button>\n\t\t\t\t<to-button class=\"to-pic-viewer-zoomin\" icon=\"zoomin\" @click=\"handleActions('zoomIn')\"></to-button>\n\t\t\t\t<to-button class=\"to-pic-viewer-full\" @click=\"toggleMode()\">{{ mode.name === 'contain' ? t('to.pic.viewer.full') : t('to.pic.viewer.restore') }}</to-button>\n\t\t\t\t<to-button class=\"to-pic-viewer-counterclockwise\" icon=\"leftrotation\" @click=\"handleActions('anticlocelise')\"></to-button>\n\t\t\t\t<to-button class=\"to-pic-viewer-clockwise\" icon=\"reset\" @click=\"handleActions('clocelise')\"></to-button>\n\t\t\t</div>\n\n\t\t\t<!-- CANVAS -->\n\t\t\t<div class=\"to-pic-viewer-list\">\n\t\t\t\t<img v-for=\"url in urlList.filter((item, i) => i === index)\" ref=\"img\" :key=\"url\" :src=\"currentImg\" :style=\"imgStyle\" @load=\"handleImgLoad\" @error=\"handleImgError\" @mousedown=\"handleMouseDown\" @touchstart=\"handleMouseDown\" />\n\t\t\t</div>\n\t\t</div>\n\t</transition>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, computed, watch, onMounted, nextTick } from 'vue'\nimport { ToIcon, ToButton } from '@touchvue/components'\nimport { vDis } from '@touchvue/directives'\nimport { t, langKey } from '@touchvue/locale'\n\n// 临时实现工具函数，实际项目中应该从对应的工具库导入\nconst on = (element: Document | Element, event: string, handler: EventListener) => {\n\telement.addEventListener(event, handler)\n}\n\nconst off = (element: Document | Element, event: string, handler: EventListener) => {\n\telement.removeEventListener(event, handler)\n}\n\nconst rafThrottle = (fn: (...args: any[]) => void) => {\n\tlet ticking = false\n\treturn function (this: any, ...args: any[]) {\n\t\tif (!ticking) {\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tfn.apply(this, args)\n\t\t\t\tticking = false\n\t\t\t})\n\t\t\tticking = true\n\t\t}\n\t}\n}\n\nconst isFirefox = () => {\n\treturn navigator.userAgent.toLowerCase().indexOf('firefox') > -1\n}\n\nexport interface ModeType {\n\tname: string\n}\n\nconst ModeEnum = {\n\tCONTAIN: {\n\t\tname: 'contain'\n\t},\n\tORIGINAL: {\n\t\tname: 'original'\n\t}\n}\n\nconst mousewheelEventName = isFirefox() ? 'DOMMouseScroll' : 'mousewheel'\n\nexport interface Props {\n\turlList: string[]\n\tzIndex: number\n\tonSwitch?: (index: number) => void\n\tonClose?: () => void\n\tinitialIndex: number\n\tmaskClosable: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n\turlList: () => [],\n\tzIndex: 2000,\n\tonSwitch: () => {},\n\tonClose: () => {},\n\tinitialIndex: 0,\n\tmaskClosable: true\n})\n\nconst viewer = ref<HTMLElement>()\nconst img = ref<HTMLImageElement[]>()\nconst index = ref(props.initialIndex)\nconst infinite = ref(true)\nconst loading = ref(false)\nconst mode = ref<ModeType>(ModeEnum.CONTAIN)\nconst transform = ref({\n\tscale: 1,\n\tdeg: 0,\n\toffsetX: 0,\n\toffsetY: 0,\n\tenableTransition: false\n})\n\nlet _keyDownHandler: ((e: KeyboardEvent) => void) | null = null\nlet _mouseWheelHandler: ((e: WheelEvent) => void) | null = null\nlet _dragHandler: ((e: MouseEvent | TouchEvent) => void) | null = null\n\nconst isSingle = computed(() => props.urlList.length <= 1)\nconst isFirst = computed(() => index.value === 0)\nconst isLast = computed(() => index.value === props.urlList.length - 1)\nconst currentImg = computed(() => props.urlList[index.value])\n\nconst imgStyle = computed(() => {\n\tconst { scale, deg, offsetX, offsetY, enableTransition } = transform.value\n\tconst style: Record<string, string> = {\n\t\ttransform: `scale(${scale}) rotate(${deg}deg)`,\n\t\ttransition: enableTransition ? 'transform .3s' : '',\n\t\t'margin-left': `${offsetX}px`,\n\t\t'margin-top': `${offsetY}px`\n\t}\n\tif (mode.value === ModeEnum.CONTAIN) {\n\t\tstyle.maxWidth = style.maxHeight = '100%'\n\t}\n\treturn style\n})\n\nconst viewerZIndex = computed(() => {\n\tconst nextZIndex = (window as any).$TouchUI?.zIndex || 2000\n\tif ((window as any).$TouchUI) {\n\t\t;(window as any).$TouchUI.zIndex++\n\t}\n\treturn props.zIndex > nextZIndex ? props.zIndex : nextZIndex\n})\n\nwatch(index, val => {\n\treset()\n\tprops.onSwitch?.(val)\n})\n\nwatch(currentImg, async () => {\n\tawait nextTick()\n\tconst $img = img.value?.[0]\n\tif ($img && !$img.complete) {\n\t\tloading.value = true\n\t}\n})\n\nconst hide = () => {\n\tdeviceSupportUninstall()\n\tprops.onClose?.()\n}\n\nconst deviceSupportInstall = () => {\n\t_keyDownHandler = (e: KeyboardEvent) => {\n\t\te.stopPropagation()\n\t\tconst keyCode = e.keyCode\n\t\tswitch (keyCode) {\n\t\t\tcase 27: // ESC\n\t\t\t\thide()\n\t\t\t\tbreak\n\t\t\tcase 32: // SPACE\n\t\t\t\ttoggleMode()\n\t\t\t\tbreak\n\t\t\tcase 37: // LEFT_ARROW\n\t\t\t\tprev()\n\t\t\t\tbreak\n\t\t\tcase 38: // UP_ARROW\n\t\t\t\thandleActions('zoomIn')\n\t\t\t\tbreak\n\t\t\tcase 39: // RIGHT_ARROW\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t\tcase 40: // DOWN_ARROW\n\t\t\t\thandleActions('zoomOut')\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\t_mouseWheelHandler = rafThrottle((e: WheelEvent) => {\n\t\te.preventDefault()\n\t\tconst delta = e.deltaY ? -e.deltaY : (e as any).wheelDelta ? (e as any).wheelDelta : -(e as any).detail\n\t\tif (delta > 0) {\n\t\t\thandleActions('zoomIn', {\n\t\t\t\tzoomRate: 0.015,\n\t\t\t\tenableTransition: false\n\t\t\t})\n\t\t} else {\n\t\t\thandleActions('zoomOut', {\n\t\t\t\tzoomRate: 0.015,\n\t\t\t\tenableTransition: false\n\t\t\t})\n\t\t}\n\t})\n\n\ton(document, 'keydown', _keyDownHandler)\n\ton(document, mousewheelEventName, _mouseWheelHandler)\n}\n\nconst deviceSupportUninstall = () => {\n\tif (_keyDownHandler) {\n\t\toff(document, 'keydown', _keyDownHandler)\n\t\t_keyDownHandler = null\n\t}\n\tif (_mouseWheelHandler) {\n\t\toff(document, mousewheelEventName, _mouseWheelHandler)\n\t\t_mouseWheelHandler = null\n\t}\n}\n\nconst handleImgLoad = () => {\n\tloading.value = false\n}\n\nconst handleImgError = (e: Event) => {\n\tloading.value = false\n\t;(e.target as HTMLImageElement).alt = t('pic.tip.error.load')\n}\n\nconst handleMouseDown = (e: MouseEvent | TouchEvent) => {\n\tif (loading.value || (!(e as TouchEvent).touches && (e as MouseEvent).button !== 0)) return\n\n\tconst { offsetX, offsetY } = transform.value\n\tlet startX = (e as MouseEvent).pageX\n\tlet startY = (e as MouseEvent).pageY\n\n\tif ((e as TouchEvent).touches) {\n\t\tstartX = (e as TouchEvent).touches[0].pageX\n\t\tstartY = (e as TouchEvent).touches[0].pageY\n\t}\n\n\t_dragHandler = rafThrottle((ev: MouseEvent | TouchEvent) => {\n\t\ttransform.value.offsetX = offsetX + (ev as MouseEvent).pageX - startX\n\t\ttransform.value.offsetY = offsetY + (ev as MouseEvent).pageY - startY\n\t\tif ((ev as TouchEvent).touches) {\n\t\t\ttransform.value.offsetX = offsetX + (ev as TouchEvent).touches[0].pageX - startX\n\t\t\ttransform.value.offsetY = offsetY + (ev as TouchEvent).touches[0].pageY - startY\n\t\t}\n\t})\n\n\tconst handleMouseUp = () => {\n\t\tif (_dragHandler) {\n\t\t\toff(document, 'mousemove', _dragHandler)\n\t\t\toff(document, 'touchmove', _dragHandler)\n\t\t}\n\t}\n\n\ton(document, 'mousemove', _dragHandler)\n\ton(document, 'mouseup', handleMouseUp)\n\ton(document, 'touchmove', _dragHandler)\n\ton(document, 'touchend', handleMouseUp)\n\n\te.preventDefault()\n}\n\nconst handleMaskClick = () => {\n\tif (props.maskClosable) {\n\t\thide()\n\t}\n}\n\nconst reset = () => {\n\ttransform.value = {\n\t\tscale: 1,\n\t\tdeg: 0,\n\t\toffsetX: 0,\n\t\toffsetY: 0,\n\t\tenableTransition: false\n\t}\n}\n\nconst toggleMode = () => {\n\tif (loading.value) return\n\tconst modeNames = Object.keys(ModeEnum) as (keyof typeof ModeEnum)[]\n\tconst modeValues = Object.values(ModeEnum)\n\tconst currentIndex = modeValues.indexOf(mode.value)\n\tconst nextIndex = (currentIndex + 1) % modeNames.length\n\tmode.value = ModeEnum[modeNames[nextIndex]]\n\treset()\n}\n\nconst prev = () => {\n\tif (isFirst.value && !infinite.value) return\n\tconst len = props.urlList.length\n\tindex.value = (index.value - 1 + len) % len\n}\n\nconst next = () => {\n\tif (isLast.value && !infinite.value) return\n\tconst len = props.urlList.length\n\tindex.value = (index.value + 1) % len\n}\n\nconst handleActions = (action: string, options: any = {}) => {\n\tif (loading.value) return\n\tconst { zoomRate = 0.2, rotateDeg = 90, enableTransition = true } = options\n\n\tswitch (action) {\n\t\tcase 'zoomOut':\n\t\t\tif (transform.value.scale > 0.2) {\n\t\t\t\ttransform.value.scale = parseFloat((transform.value.scale - zoomRate).toFixed(3))\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'zoomIn':\n\t\t\ttransform.value.scale = parseFloat((transform.value.scale + zoomRate).toFixed(3))\n\t\t\tbreak\n\t\tcase 'clocelise':\n\t\t\ttransform.value.deg += rotateDeg\n\t\t\tbreak\n\t\tcase 'anticlocelise':\n\t\t\ttransform.value.deg -= rotateDeg\n\t\t\tbreak\n\t}\n\ttransform.value.enableTransition = enableTransition\n}\n\nonMounted(() => {\n\tdeviceSupportInstall()\n\tviewer.value?.focus()\n})\n</script>\n"],"names":["_createBlock","_Transition","_unref","_createElementBlock","_createCommentVNode","_createElementVNode","_createVNode","_Fragment","_createTextVNode","_toDisplayString","_openBlock","urlList"],"mappings":";;;;;;;;;;;;;;;;;;;AAuCA,IAAA,MAAM,EAAK,GAAA,CAAC,OAA6B,EAAA,KAAA,EAAe,OAA2B,KAAA;AAClF,MAAQ,OAAA,CAAA,gBAAA,CAAiB,OAAO,OAAO,CAAA,CAAA;AAAA,KACxC,CAAA;AAEA,IAAA,MAAM,GAAM,GAAA,CAAC,OAA6B,EAAA,KAAA,EAAe,OAA2B,KAAA;AACnF,MAAQ,OAAA,CAAA,mBAAA,CAAoB,OAAO,OAAO,CAAA,CAAA;AAAA,KAC3C,CAAA;AAEA,IAAM,MAAA,WAAA,GAAc,CAAC,EAAiC,KAAA;AACrD,MAAA,IAAI,OAAU,GAAA,KAAA,CAAA;AACd,MAAA,OAAO,YAAwB,IAAa,EAAA;AAC3C,QAAA,IAAI,CAAC,OAAS,EAAA;AACb,UAAA,qBAAA,CAAsB,MAAM;AAC3B,YAAG,EAAA,CAAA,KAAA,CAAM,MAAM,IAAI,CAAA,CAAA;AACnB,YAAU,OAAA,GAAA,KAAA,CAAA;AAAA,WACV,CAAA,CAAA;AACD,UAAU,OAAA,GAAA,IAAA,CAAA;AAAA,SACX;AAAA,OACD,CAAA;AAAA,KACD,CAAA;AAEA,IAAA,MAAM,YAAY,MAAM;AACvB,MAAA,OAAO,UAAU,SAAU,CAAA,WAAA,EAAc,CAAA,OAAA,CAAQ,SAAS,CAAI,GAAA,CAAA,CAAA,CAAA;AAAA,KAC/D,CAAA;AAMA,IAAA,MAAM,QAAW,GAAA;AAAA,MAChB,OAAS,EAAA;AAAA,QACR,IAAM,EAAA,SAAA;AAAA,OACP;AAAA,MACA,QAAU,EAAA;AAAA,QACT,IAAM,EAAA,UAAA;AAAA,OACP;AAAA,KACD,CAAA;AAEA,IAAM,MAAA,mBAAA,GAAsB,SAAU,EAAA,GAAI,gBAAmB,GAAA,YAAA,CAAA;AAW7D,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AASd,IAAA,MAAM,SAAS,GAAiB,EAAA,CAAA;AAChC,IAAA,MAAM,MAAM,GAAwB,EAAA,CAAA;AACpC,IAAM,MAAA,KAAA,GAAQ,GAAI,CAAA,KAAA,CAAM,YAAY,CAAA,CAAA;AACpC,IAAM,MAAA,QAAA,GAAW,IAAI,IAAI,CAAA,CAAA;AACzB,IAAM,MAAA,OAAA,GAAU,IAAI,KAAK,CAAA,CAAA;AACzB,IAAM,MAAA,IAAA,GAAO,GAAc,CAAA,QAAA,CAAS,OAAO,CAAA,CAAA;AAC3C,IAAA,MAAM,YAAY,GAAI,CAAA;AAAA,MACrB,KAAO,EAAA,CAAA;AAAA,MACP,GAAK,EAAA,CAAA;AAAA,MACL,OAAS,EAAA,CAAA;AAAA,MACT,OAAS,EAAA,CAAA;AAAA,MACT,gBAAkB,EAAA,KAAA;AAAA,KAClB,CAAA,CAAA;AAED,IAAA,IAAI,eAAuD,GAAA,IAAA,CAAA;AAC3D,IAAA,IAAI,kBAAuD,GAAA,IAAA,CAAA;AAC3D,IAAA,IAAI,YAA8D,GAAA,IAAA,CAAA;AAElE,IAAA,MAAM,WAAW,QAAS,CAAA,MAAM,KAAM,CAAA,OAAA,CAAQ,UAAU,CAAC,CAAA,CAAA;AACzD,IAAA,MAAM,OAAU,GAAA,QAAA,CAAS,MAAM,KAAA,CAAM,UAAU,CAAC,CAAA,CAAA;AAChD,IAAM,MAAA,MAAA,GAAS,SAAS,MAAM,KAAA,CAAM,UAAU,KAAM,CAAA,OAAA,CAAQ,SAAS,CAAC,CAAA,CAAA;AACtE,IAAA,MAAM,aAAa,QAAS,CAAA,MAAM,MAAM,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAC,CAAA,CAAA;AAE5D,IAAM,MAAA,QAAA,GAAW,SAAS,MAAM;AAC/B,MAAA,MAAM,EAAE,KAAO,EAAA,GAAA,EAAK,SAAS,OAAS,EAAA,gBAAA,KAAqB,SAAU,CAAA,KAAA,CAAA;AACrE,MAAA,MAAM,KAAgC,GAAA;AAAA,QACrC,SAAA,EAAW,SAAS,KAAiB,CAAA,SAAA,EAAA,GAAA,CAAA,IAAA,CAAA;AAAA,QACrC,UAAA,EAAY,mBAAmB,eAAkB,GAAA,EAAA;AAAA,QACjD,eAAe,CAAG,EAAA,OAAA,CAAA,EAAA,CAAA;AAAA,QAClB,cAAc,CAAG,EAAA,OAAA,CAAA,EAAA,CAAA;AAAA,OAClB,CAAA;AACA,MAAI,IAAA,IAAA,CAAK,KAAU,KAAA,QAAA,CAAS,OAAS,EAAA;AACpC,QAAM,KAAA,CAAA,QAAA,GAAW,MAAM,SAAY,GAAA,MAAA,CAAA;AAAA,OACpC;AACA,MAAO,OAAA,KAAA,CAAA;AAAA,KACP,CAAA,CAAA;AAED,IAAM,MAAA,YAAA,GAAe,SAAS,MAAM;;AACnC,MAAA,MAAM,UAAc,GAAA,CAAA,CAAA,EAAA,GAAA,MAAA,CAAe,QAAf,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAyB,MAAU,KAAA,GAAA,CAAA;AACvD,MAAA,IAAK,OAAe,QAAU,EAAA;AAC5B,QAAC,OAAe,QAAS,CAAA,MAAA,EAAA,CAAA;AAAA,OAC3B;AACA,MAAA,OAAO,KAAM,CAAA,MAAA,GAAS,UAAa,GAAA,KAAA,CAAM,MAAS,GAAA,UAAA,CAAA;AAAA,KAClD,CAAA,CAAA;AAED,IAAA,KAAA,CAAM,OAAO,CAAO,GAAA,KAAA;;AACnB,MAAM,KAAA,EAAA,CAAA;AACN,MAAA,CAAA,EAAA,GAAA,KAAA,CAAM,aAAN,IAAiB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,EAAA,GAAA,CAAA,CAAA;AAAA,KACjB,CAAA,CAAA;AAED,IAAA,KAAA,CAAM,YAAY,YAAY;;AAC7B,MAAA,MAAM,QAAS,EAAA,CAAA;AACf,MAAM,MAAA,IAAA,GAAA,CAAO,EAAI,GAAA,GAAA,CAAA,KAAA,KAAJ,IAAY,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA;AACzB,MAAI,IAAA,IAAA,IAAQ,CAAC,IAAA,CAAK,QAAU,EAAA;AAC3B,QAAA,OAAA,CAAQ,KAAQ,GAAA,IAAA,CAAA;AAAA,OACjB;AAAA,KACA,CAAA,CAAA;AAED,IAAA,MAAM,OAAO,MAAM;;AAClB,MAAuB,sBAAA,EAAA,CAAA;AACvB,MAAA,CAAA,EAAA,GAAA,KAAA,CAAM,OAAN,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA;AAAA,KACD,CAAA;AAEA,IAAA,MAAM,uBAAuB,MAAM;AAClC,MAAA,eAAA,GAAkB,CAAC,CAAqB,KAAA;AACvC,QAAA,CAAA,CAAE,eAAgB,EAAA,CAAA;AAClB,QAAA,MAAM,UAAU,CAAE,CAAA,OAAA,CAAA;AAClB,QAAA,QAAQ,OAAS;AAAA,UAChB,KAAK,EAAA;AACJ,YAAK,IAAA,EAAA,CAAA;AACL,YAAA,MAAA;AAAA,UACD,KAAK,EAAA;AACJ,YAAW,UAAA,EAAA,CAAA;AACX,YAAA,MAAA;AAAA,UACD,KAAK,EAAA;AACJ,YAAK,IAAA,EAAA,CAAA;AACL,YAAA,MAAA;AAAA,UACD,KAAK,EAAA;AACJ,YAAA,aAAA,CAAc,QAAQ,CAAA,CAAA;AACtB,YAAA,MAAA;AAAA,UACD,KAAK,EAAA;AACJ,YAAK,IAAA,EAAA,CAAA;AACL,YAAA,MAAA;AAAA,UACD,KAAK,EAAA;AACJ,YAAA,aAAA,CAAc,SAAS,CAAA,CAAA;AACvB,YAAA,MAAA;AAAA,SACF;AAAA,OACD,CAAA;AAEA,MAAqB,kBAAA,GAAA,WAAA,CAAY,CAAC,CAAkB,KAAA;AACnD,QAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AACjB,QAAM,MAAA,KAAA,GAAQ,CAAE,CAAA,MAAA,GAAS,CAAC,CAAA,CAAE,MAAU,GAAA,CAAA,CAAU,UAAc,GAAA,CAAA,CAAU,UAAa,GAAA,CAAE,CAAU,CAAA,MAAA,CAAA;AACjG,QAAA,IAAI,QAAQ,CAAG,EAAA;AACd,UAAA,aAAA,CAAc,QAAU,EAAA;AAAA,YACvB,QAAU,EAAA,KAAA;AAAA,YACV,gBAAkB,EAAA,KAAA;AAAA,WAClB,CAAA,CAAA;AAAA,SACK,MAAA;AACN,UAAA,aAAA,CAAc,SAAW,EAAA;AAAA,YACxB,QAAU,EAAA,KAAA;AAAA,YACV,gBAAkB,EAAA,KAAA;AAAA,WAClB,CAAA,CAAA;AAAA,SACF;AAAA,OACA,CAAA,CAAA;AAED,MAAG,EAAA,CAAA,QAAA,EAAU,WAAW,eAAe,CAAA,CAAA;AACvC,MAAG,EAAA,CAAA,QAAA,EAAU,qBAAqB,kBAAkB,CAAA,CAAA;AAAA,KACrD,CAAA;AAEA,IAAA,MAAM,yBAAyB,MAAM;AACpC,MAAA,IAAI,eAAiB,EAAA;AACpB,QAAI,GAAA,CAAA,QAAA,EAAU,WAAW,eAAe,CAAA,CAAA;AACxC,QAAkB,eAAA,GAAA,IAAA,CAAA;AAAA,OACnB;AACA,MAAA,IAAI,kBAAoB,EAAA;AACvB,QAAI,GAAA,CAAA,QAAA,EAAU,qBAAqB,kBAAkB,CAAA,CAAA;AACrD,QAAqB,kBAAA,GAAA,IAAA,CAAA;AAAA,OACtB;AAAA,KACD,CAAA;AAEA,IAAA,MAAM,gBAAgB,MAAM;AAC3B,MAAA,OAAA,CAAQ,KAAQ,GAAA,KAAA,CAAA;AAAA,KACjB,CAAA;AAEA,IAAM,MAAA,cAAA,GAAiB,CAAC,CAAa,KAAA;AACpC,MAAA,OAAA,CAAQ,KAAQ,GAAA,KAAA,CAAA;AACf,MAAC,CAAE,CAAA,MAAA,CAA4B,GAAM,GAAA,CAAA,CAAE,oBAAoB,CAAA,CAAA;AAAA,KAC7D,CAAA;AAEA,IAAM,MAAA,eAAA,GAAkB,CAAC,CAA+B,KAAA;AACvD,MAAA,IAAI,QAAQ,KAAU,IAAA,CAAE,CAAiB,CAAA,OAAA,IAAY,EAAiB,MAAW,KAAA,CAAA;AAAI,QAAA,OAAA;AAErF,MAAA,MAAM,EAAE,OAAA,EAAS,OAAQ,EAAA,GAAI,SAAU,CAAA,KAAA,CAAA;AACvC,MAAA,IAAI,SAAU,CAAiB,CAAA,KAAA,CAAA;AAC/B,MAAA,IAAI,SAAU,CAAiB,CAAA,KAAA,CAAA;AAE/B,MAAA,IAAK,EAAiB,OAAS,EAAA;AAC9B,QAAU,MAAA,GAAA,CAAA,CAAiB,OAAQ,CAAA,CAAC,CAAE,CAAA,KAAA,CAAA;AACtC,QAAU,MAAA,GAAA,CAAA,CAAiB,OAAQ,CAAA,CAAC,CAAE,CAAA,KAAA,CAAA;AAAA,OACvC;AAEA,MAAe,YAAA,GAAA,WAAA,CAAY,CAAC,EAAgC,KAAA;AAC3D,QAAA,SAAA,CAAU,KAAM,CAAA,OAAA,GAAU,OAAW,GAAA,EAAA,CAAkB,KAAQ,GAAA,MAAA,CAAA;AAC/D,QAAA,SAAA,CAAU,KAAM,CAAA,OAAA,GAAU,OAAW,GAAA,EAAA,CAAkB,KAAQ,GAAA,MAAA,CAAA;AAC/D,QAAA,IAAK,GAAkB,OAAS,EAAA;AAC/B,UAAA,SAAA,CAAU,MAAM,OAAU,GAAA,OAAA,GAAW,GAAkB,OAAQ,CAAA,CAAC,EAAE,KAAQ,GAAA,MAAA,CAAA;AAC1E,UAAA,SAAA,CAAU,MAAM,OAAU,GAAA,OAAA,GAAW,GAAkB,OAAQ,CAAA,CAAC,EAAE,KAAQ,GAAA,MAAA,CAAA;AAAA,SAC3E;AAAA,OACA,CAAA,CAAA;AAED,MAAA,MAAM,gBAAgB,MAAM;AAC3B,QAAA,IAAI,YAAc,EAAA;AACjB,UAAI,GAAA,CAAA,QAAA,EAAU,aAAa,YAAY,CAAA,CAAA;AACvC,UAAI,GAAA,CAAA,QAAA,EAAU,aAAa,YAAY,CAAA,CAAA;AAAA,SACxC;AAAA,OACD,CAAA;AAEA,MAAG,EAAA,CAAA,QAAA,EAAU,aAAa,YAAY,CAAA,CAAA;AACtC,MAAG,EAAA,CAAA,QAAA,EAAU,WAAW,aAAa,CAAA,CAAA;AACrC,MAAG,EAAA,CAAA,QAAA,EAAU,aAAa,YAAY,CAAA,CAAA;AACtC,MAAG,EAAA,CAAA,QAAA,EAAU,YAAY,aAAa,CAAA,CAAA;AAEtC,MAAA,CAAA,CAAE,cAAe,EAAA,CAAA;AAAA,KAClB,CAAA;AAEA,IAAA,MAAM,kBAAkB,MAAM;AAC7B,MAAA,IAAI,MAAM,YAAc,EAAA;AACvB,QAAK,IAAA,EAAA,CAAA;AAAA,OACN;AAAA,KACD,CAAA;AAEA,IAAA,MAAM,QAAQ,MAAM;AACnB,MAAA,SAAA,CAAU,KAAQ,GAAA;AAAA,QACjB,KAAO,EAAA,CAAA;AAAA,QACP,GAAK,EAAA,CAAA;AAAA,QACL,OAAS,EAAA,CAAA;AAAA,QACT,OAAS,EAAA,CAAA;AAAA,QACT,gBAAkB,EAAA,KAAA;AAAA,OACnB,CAAA;AAAA,KACD,CAAA;AAEA,IAAA,MAAM,aAAa,MAAM;AACxB,MAAA,IAAI,OAAQ,CAAA,KAAA;AAAO,QAAA,OAAA;AACnB,MAAM,MAAA,SAAA,GAAY,MAAO,CAAA,IAAA,CAAK,QAAQ,CAAA,CAAA;AACtC,MAAM,MAAA,UAAA,GAAa,MAAO,CAAA,MAAA,CAAO,QAAQ,CAAA,CAAA;AACzC,MAAA,MAAM,YAAe,GAAA,UAAA,CAAW,OAAQ,CAAA,IAAA,CAAK,KAAK,CAAA,CAAA;AAClD,MAAM,MAAA,SAAA,GAAA,CAAa,YAAe,GAAA,CAAA,IAAK,SAAU,CAAA,MAAA,CAAA;AACjD,MAAA,IAAA,CAAK,KAAQ,GAAA,QAAA,CAAS,SAAU,CAAA,SAAS,CAAC,CAAA,CAAA;AAC1C,MAAM,KAAA,EAAA,CAAA;AAAA,KACP,CAAA;AAEA,IAAA,MAAM,OAAO,MAAM;AAClB,MAAI,IAAA,OAAA,CAAQ,KAAS,IAAA,CAAC,QAAS,CAAA,KAAA;AAAO,QAAA,OAAA;AACtC,MAAM,MAAA,GAAA,GAAM,MAAM,OAAQ,CAAA,MAAA,CAAA;AAC1B,MAAA,KAAA,CAAM,KAAS,GAAA,CAAA,KAAA,CAAM,KAAQ,GAAA,CAAA,GAAI,GAAO,IAAA,GAAA,CAAA;AAAA,KACzC,CAAA;AAEA,IAAA,MAAM,OAAO,MAAM;AAClB,MAAI,IAAA,MAAA,CAAO,KAAS,IAAA,CAAC,QAAS,CAAA,KAAA;AAAO,QAAA,OAAA;AACrC,MAAM,MAAA,GAAA,GAAM,MAAM,OAAQ,CAAA,MAAA,CAAA;AAC1B,MAAM,KAAA,CAAA,KAAA,GAAA,CAAS,KAAM,CAAA,KAAA,GAAQ,CAAK,IAAA,GAAA,CAAA;AAAA,KACnC,CAAA;AAEA,IAAA,MAAM,aAAgB,GAAA,CAAC,MAAgB,EAAA,OAAA,GAAe,EAAO,KAAA;AAC5D,MAAA,IAAI,OAAQ,CAAA,KAAA;AAAO,QAAA,OAAA;AACnB,MAAA,MAAM,EAAE,QAAW,GAAA,GAAA,EAAK,YAAY,EAAI,EAAA,gBAAA,GAAmB,MAAS,GAAA,OAAA,CAAA;AAEpE,MAAA,QAAQ,MAAQ;AAAA,QACf,KAAK,SAAA;AACJ,UAAI,IAAA,SAAA,CAAU,KAAM,CAAA,KAAA,GAAQ,GAAK,EAAA;AAChC,YAAU,SAAA,CAAA,KAAA,CAAM,QAAQ,UAAY,CAAA,CAAA,SAAA,CAAU,MAAM,KAAQ,GAAA,QAAA,EAAU,OAAQ,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,WACjF;AACA,UAAA,MAAA;AAAA,QACD,KAAK,QAAA;AACJ,UAAU,SAAA,CAAA,KAAA,CAAM,QAAQ,UAAY,CAAA,CAAA,SAAA,CAAU,MAAM,KAAQ,GAAA,QAAA,EAAU,OAAQ,CAAA,CAAC,CAAC,CAAA,CAAA;AAChF,UAAA,MAAA;AAAA,QACD,KAAK,WAAA;AACJ,UAAA,SAAA,CAAU,MAAM,GAAO,IAAA,SAAA,CAAA;AACvB,UAAA,MAAA;AAAA,QACD,KAAK,eAAA;AACJ,UAAA,SAAA,CAAU,MAAM,GAAO,IAAA,SAAA,CAAA;AACvB,UAAA,MAAA;AAAA,OACF;AACA,MAAA,SAAA,CAAU,MAAM,gBAAmB,GAAA,gBAAA,CAAA;AAAA,KACpC,CAAA;AAEA,IAAA,SAAA,CAAU,MAAM;;AACf,MAAqB,oBAAA,EAAA,CAAA;AACrB,MAAA,CAAA,EAAA,GAAA,MAAA,CAAO,UAAP,IAAc,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,EAAA,CAAA;AAAA,KACd,CAAA,CAAA;;wBArUA,EAAAA,WAAA,CA4BaC,UAAA,EAAA;AAAA,QA5BA,GAAA,EAAKC,MAAO,OAAA,CAAA;AAAA,QAAE,IAAK,EAAA,aAAA;AAAA;yBAC/B,MA0BM;AAAA,UA1BK,YAAX,EAAAC,kBAAA;AAAA,YA0BM,KAAA;AAAA,YAAA;AAAA;qBA1Be,EAAA,QAAA;AAAA,cAAJ,GAAI,EAAA,MAAA;AAAA,cAAS,QAAS,EAAA,IAAA;AAAA,cAAK,KAAM,EAAA,eAAA;AAAA,cAAiB,iCAAoB,EAAA,YAAA,CAAY,OAAA,CAAA;AAAA;;cAClGC,mBAAW,gBAAA,CAAA;AAAA,cACXC,mBAAoE,KAAA,EAAA;AAAA,gBAA/D,KAAM,EAAA,oBAAA;AAAA,gBAAsB,uBAAY,eAAe,EAAA,CAAA,MAAA,CAAA,CAAA;AAAA;cAE5DD,mBAAc,SAAA,CAAA;AAAA,cACdE,WAAA,CAAgFJ,KAAA,CAAA,MAAA,CAAA,EAAA;AAAA,gBAAvE,KAAM,EAAA,qBAAA;AAAA,gBAAsB,KAAM,EAAA,OAAA;AAAA,gBAAQ,IAAA,EAAA,EAAA;AAAA,gBAAM,OAAO,EAAA,IAAA;AAAA;cAEhEE,mBAAc,SAAA,CAAA;AAAA,eACG,QAAA,CAAQ,oBAAzB,EAAAD,kBAAA;AAAA,gBAGWI,QAAA;AAAA,gBAAA,EAAA,KAAA,CAAA,EAAA;AAAA,gBAAA;AAAA,gCAFV,CAAAD,WAAA;AAAA,oBAA2GJ,MAAA,MAAA,CAAA;AAAA,oBAAA;AAAA,sBAArE,KAAM,EAAA,oBAAA;AAAA,sBAAqB,KAAM,EAAA,MAAA;AAAA,sBAAO,IAAA,EAAA,EAAA;AAAA,sBAAM,OAAO,EAAA,IAAA;AAAA;;;;;oBAA1E,CAAAA,MAAA,IAAA,CAAA,EAAA,CAAA,QAAA,CAAA,KAAA,IAAY,QAAO,KAAA,CAAA;AAAA;gCACpC,CAAAI,WAAA;AAAA,oBAA0GJ,MAAA,MAAA,CAAA;AAAA,oBAAA;AAAA,sBAArE,KAAM,EAAA,oBAAA;AAAA,sBAAqB,KAAM,EAAA,MAAA;AAAA,sBAAO,IAAA,EAAA,EAAA;AAAA,sBAAM,OAAO,EAAA,IAAA;AAAA;;;;;oBAAzE,CAAAA,MAAA,IAAA,CAAA,EAAA,CAAA,QAAA,CAAA,KAAA,IAAY,OAAM,KAAA,CAAA;AAAA;;;;;cAGpCE,mBAAgB,WAAA,CAAA;AAAA,cAChBC,kBAMM,CAAA,KAAA,EAAA,EAND,KAAA,EAAM,oBAAkB,EAAA;AAAA,gBAC5BC,WAAA,CAAsGJ,KAAA,CAAA,QAAA,CAAA,EAAA;AAAA,kBAA3F,KAAM,EAAA,uBAAA;AAAA,kBAAwB,IAAK,EAAA,SAAA;AAAA,kBAAW,gBAAO,KAAA,aAAA,CAAa,SAAA,CAAA;AAAA;gBAC7EI,WAAA,CAAmGJ,KAAA,CAAA,QAAA,CAAA,EAAA;AAAA,kBAAxF,KAAM,EAAA,sBAAA;AAAA,kBAAuB,IAAK,EAAA,QAAA;AAAA,kBAAU,gBAAO,KAAA,aAAA,CAAa,QAAA,CAAA;AAAA;gBAC3EI,WAAA,CAA4JJ,KAAA,CAAA,QAAA,CAAA,EAAA;AAAA,kBAAjJ,KAAM,EAAA,oBAAA;AAAA,kBAAsB,OAAA,cAAO,UAAU,EAAA;AAAA;mCAAI,MAAoF;AAAA,oBAAjFM,eAAA;AAAA,sBAAAC,eAAA,CAAA,IAAA,CAAA,KAAK,CAAA,IAAA,KAAqB,YAAAP,KAAA,CAAA,CAAA,uBAA0B,GAAAA,KAAA,CAAC,CAAA,CAAA,CAAA,uBAAA,CAAA,CAAA;AAAA,sBAAA,CAAA;AAAA;AAAA,qBAAA;AAAA;;;;gBACpHI,WAAA,CAA0HJ,KAAA,CAAA,QAAA,CAAA,EAAA;AAAA,kBAA/G,KAAM,EAAA,gCAAA;AAAA,kBAAiC,IAAK,EAAA,cAAA;AAAA,kBAAgB,gBAAO,KAAA,aAAA,CAAa,eAAA,CAAA;AAAA;gBAC3FI,WAAA,CAAwGJ,KAAA,CAAA,QAAA,CAAA,EAAA;AAAA,kBAA7F,KAAM,EAAA,yBAAA;AAAA,kBAA0B,IAAK,EAAA,OAAA;AAAA,kBAAS,gBAAO,KAAA,aAAA,CAAa,WAAA,CAAA;AAAA;;cAG9EE,mBAAe,UAAA,CAAA;AAAA,cACfC,kBAEM,CAAA,KAAA,EAAA,EAFD,KAAA,EAAM,sBAAoB,EAAA;AAAA,iBAC9BK,SAAA,CAAA,IAAA,CAAA,EAAAP,kBAAA;AAAA,kBAAiOI,QAAA;AAAA,kBAA9MI,IAAAA;AAAAA,kBAAAA,UAAAA,CAAAA,IAAAA,CAAAA,OAAQ,CAAA,MAAA,CAAQ,CAAA,IAAA,EAAM,CAAM,KAAA,CAAA,KAAM,KAAA,CAAA,KAAK,IAA9C,GAAG,KAAA;sCAAf,EAAAR,kBAAA,CAAiO,KAAA,EAAA;AAAA;6BAAhK,EAAA,KAAA;AAAA,sBAAJ,GAAI,EAAA,GAAA;AAAA,sBAAO,GAAK,EAAA,GAAA;AAAA,sBAAM,KAAK,UAAU,CAAA,KAAA;AAAA,sBAAG,KAAA,gBAAO,CAAA,QAAA,CAAQ,KAAA,CAAA;AAAA,sBAAG,MAAM,EAAA,aAAA;AAAA,sBAAgB,OAAO,EAAA,cAAA;AAAA,sBAAiB,WAAW,EAAA,eAAA;AAAA,sBAAkB,YAAY,EAAA,eAAA;AAAA;;;;;;;;;;;;;;;;;;;;"}