UNPKG

myprint-design

Version:

操作简单,组件丰富的一站式打印解决方案打印设计器

1 lines 16.2 kB
{"version":3,"file":"rule.vue2.mjs","sources":["../../../../../../src/components/my/rule/rule.vue"],"sourcesContent":["<template>\n <!-- 刻度尺容 -->\n <div class=\"verticalRule\"\n ref=\"ruleRef\"\n :style=\"styleWrapper\"\n @mousemove=\"mouseMove($event)\"\n @mouseleave=\"mouseLeave\"\n @click=\"mouseClick($event)\">\n <div v-if=\"highlight.x != undefined\"\n class=\"ruleHighlight pointer-events\"\n :style=\"highlightStyle\" />\n <svg id=\"canvas\" ref=\"canvas\"\n class=\"rule pointer-events\"\n :style=\"style\">\n <path class=\"u-path\" d=\"\" />\n </svg>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, CSSProperties, nextTick, onMounted, ref, watch, watchEffect } from 'vue-demi';\nimport { unit2px, unit2unit } from '@myprint/design/utils/devicePixelRatio';\nimport { scaleUtil } from '@myprint/design/utils/scaleUtil';\nimport { getCurrentPanel, valueUnit } from '@myprint/design/utils/elementUtil';\nimport { _defaultVal, generateUUID, getRatio } from '@myprint/design/utils/utils';\nimport { useAppStoreHook as useAppStore } from '@myprint/design/stores/app';\nimport { Container, MyAuxiliaryLine } from '@myprint/design/types/entity';\nimport { Path } from 'd3-path';\nimport * as d3Selection from 'd3-selection';\nimport * as d3Path from 'd3-path';\nimport { changeDragSnapIs } from '@myprint/design/plugins/moveable/moveable';\n\nconst appStore = useAppStore();\n\nconst props = withDefaults(defineProps<{\n direction?: 'vertical' | string,\n highlight?: Container,\n length?: number\n auxiliaryLineVisible: boolean\n scroll?: number,\n}>(), {\n direction: 'horizontal',\n highlight: () => {\n return { x: undefined! as number, width: 1 } as Container;\n },\n length: 0,\n scroll: 0\n});\nconst highlightStyle = computed(() => {\n if (props.direction == 'horizontal') {\n return {\n position: 'absolute',\n left: (props.highlight.x! + 30) + 'px',\n bottom: 0,\n width: props.highlight.width + 'px',\n height: '5px',\n border: '1px solid #8c939d'\n } as CSSProperties;\n } else {\n return {\n position: 'absolute',\n top: (props.highlight.x! + 30) + 'px',\n right: 0,\n width: '5px',\n height: props.highlight.width + 'px',\n border: '1px solid #8c939d'\n } as CSSProperties;\n }\n});\n\nconst canvas = ref<SVGElement>();\nconst ruleRef = ref<HTMLDivElement>();\n\nlet height = 20;\nconst length = ref(0);\n\nconst ruleWidth = ref(0);\nconst ruleHeight = ref(0);\nlet chartSvg: any;\n\nfunction mouseMove(event: MouseEvent) {\n if (event.buttons == 1) {\n return;\n }\n \n appStore.auxiliaryLineTmp = {\n x: 0,\n y: 0,\n runtimeOption: { x: 0, y: 0, auxiliaryLineStatus: 'SHOW' },\n direction: props.direction == 'vertical' ? 'horizontal' : 'vertical'\n } as MyAuxiliaryLine;\n \n if (appStore.auxiliaryLineTmp.direction == 'vertical') {\n appStore.auxiliaryLineTmp.x = event.offsetX + 20;\n } else {\n appStore.auxiliaryLineTmp.y = event.offsetY + 20;\n }\n \n}\n\nfunction mouseLeave() {\n appStore.auxiliaryLineTmp = { runtimeOption: { x: 0, y: 0, auxiliaryLineStatus: 'SHOW' } } as MyAuxiliaryLine;\n}\n\nfunction mouseClick(event: MouseEvent) {\n if (!props.auxiliaryLineVisible) {\n return;\n }\n const auxiliaryLine = {\n id: generateUUID(),\n x: 0,\n y: 0,\n runtimeOption: { x: 0, y: 0, auxiliaryLineStatus: 'SHOW' },\n direction: props.direction == 'vertical' ? 'horizontal' : 'vertical'\n } as MyAuxiliaryLine;\n if (auxiliaryLine.direction == 'vertical') {\n auxiliaryLine.x = event.offsetX + 20;\n } else {\n auxiliaryLine.y = event.offsetY + 20;\n }\n \n getCurrentPanel().auxiliaryLineList.push(auxiliaryLine);\n nextTick(() => {\n changeDragSnapIs();\n });\n}\n\n// 可以直接侦听一个 ref\n// watch(() => props.highlight, (_newQuestion, _oldQuestion) => {\n// drawRuler()\n// // console.log(newQuestion[0])\n//\n//\n// // if (newQuestion[0] == null) {\n// // highlightLine.attr({\n// // strokeWidth: 0,\n// // });\n// // } else {\n// // highlightLine.attr({\n// // strokeWidth: 1,\n// // });\n// // }\n// // if (highlightLine != null) {\n// // var matrix = new Snap.Matrix()\n// // if (props.direction == 'horizontal') {\n// // matrix.translate(newQuestion[0], 0);\n// // } else {\n// // matrix.translate(0, newQuestion[0]);\n// // }\n// // highlightLine.transform(matrix);\n// // }\n//\n// })\n\nwatch(() => props.scroll, (_newQuestion, _oldQuestion) => {\n if (props.direction == 'horizontal') {\n ruleRef.value!.scrollTo(props.scroll, 0);\n } else {\n ruleRef.value!.scrollTo(0, props.scroll);\n }\n});\n\nconst styleWrapper = computed(() => {\n const styleTmp = {} as any;\n if (props.direction == 'horizontal') {\n styleTmp['box-sizing'] = 'border-box';\n styleTmp['borderTop'] = '1px solid rgb(233, 233, 233)';\n styleTmp['paddingLeft'] = '30px';\n styleTmp['paddingRight'] = '30px';\n styleTmp['height'] = height + 'px';\n // styleTmp['marginLeft'] = '20px'\n } else {\n styleTmp['paddingTop'] = '30px';\n styleTmp['paddingBottom'] = '50px';\n styleTmp['width'] = height + 'px';\n // styleTmp['minWidth'] = scaleUtil.scale(height) + 'px'\n }\n return styleTmp;\n});\n\nconst style = computed(() => {\n const styleTmp = {} as any;\n if (props.direction == 'horizontal') {\n styleTmp['width'] = valueUnit(props.length);\n styleTmp['height'] = height + 'px';\n } else {\n styleTmp['width'] = height + 'px';\n styleTmp['minWidth'] = height + 'px';\n styleTmp['height'] = valueUnit(props.length);\n }\n styleTmp['transformOrigin'] = scaleUtil.miniMap.scale < 1 ? '0' : '' + ' top';\n styleTmp['transform'] = 'scale(' + scaleUtil.miniMap.scale + ')';\n return styleTmp;\n});\n\nwatchEffect(() => {\n length.value = unit2px(Number.parseInt(props.length.toString()) * 2) + 20;\n if (length.value != 0) {\n nextTick(() => {\n drawRuler();\n });\n }\n \n if (props.direction == 'horizontal') {\n ruleWidth.value = length.value;\n ruleHeight.value = height;\n } else {\n ruleWidth.value = height;\n ruleHeight.value = length.value;\n }\n \n});\n\nfunction drawRuler() {\n const path = d3Path.path() as Path;\n \n const space = getRatio();\n \n const pxLength = unit2unit(_defaultVal(appStore.lastPageUnit, 'px'), _defaultVal(getCurrentPanel().pageUnit, 'px'), props.length);\n \n chartSvg.selectAll('text').remove();\n \n if (props.direction == 'horizontal') {\n // svg.line(0, 0, 0, 20).attr({\n // stroke: \"#8f9292\",\n // strokeWidth: 1,\n // });\n \n for (let i = 1; i < pxLength; i++) {\n // 绘制横标尺\n // let line;\n if (i % 5 == 0) {\n path.moveTo(space * i, 10);\n } else if (i % 2 == 0) {\n path.moveTo(space * i, 13);\n } else {\n path.moveTo(space * i, 14);\n }\n path.lineTo(space * i, 20);\n \n if (i % 10 == 0) {\n chartSvg.append('text') // 添加一个 text 元素\n .attr('x', space * i - 7) // 设置 text 元素的 x 坐标\n .attr('y', 10) // 设置 text 元素的 y 坐标\n .text(i + '') // 设置 text 元素的文本内容\n .style('fill', 'black') // b1b4b4 设置 text 元素的颜色\n .style('font-size', '12px'); // 设置 text 元素的字体大小\n }\n }\n } else {\n for (var i = 1; i < pxLength; i++) {\n if (i % 5 == 0) {\n path.moveTo(10, space * i);\n } else if (i % 2 == 0) {\n path.moveTo(13, space * i);\n } else {\n path.moveTo(14, space * i);\n }\n path.lineTo(20, space * i);\n if (i % 10 == 0) {\n chartSvg.append('text') // 添加一个 text 元素\n .attr('x', 3) // 设置 text 元素的 x 坐标\n .attr('y', space * i) // 设置 text 元素的 y 坐标\n .text(i + '') // 设置 text 元素的文本内容\n .style('fill', 'black') // 设置 text 元素的颜色\n .attr('transform', `rotate(-90, 10, ${space * i})`)\n .style('font-size', '12px'); // 设置 text 元素的字体大小\n }\n }\n \n }\n chartSvg.select('.u-path')\n // #8f9292\n .style('stroke', 'black')\n .style('fill', 'white')\n // .attr(\"stroke-width\", 1.9)\n .attr('d', path.toString());\n}\n\nonMounted(() => {\n chartSvg = d3Selection.select(canvas.value!);\n});\n</script>\n"],"names":["useAppStore","i"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCA,IAAA,MAAM,WAAWA,eAAY,EAAA,CAAA;AAE7B,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAcd,IAAM,MAAA,cAAA,GAAiB,SAAS,MAAM;AAClC,MAAI,IAAA,KAAA,CAAM,aAAa,YAAc,EAAA;AACjC,QAAO,OAAA;AAAA,UACH,QAAU,EAAA,UAAA;AAAA,UACV,IAAO,EAAA,KAAA,CAAM,SAAU,CAAA,CAAA,GAAK,EAAM,GAAA,IAAA;AAAA,UAClC,MAAQ,EAAA,CAAA;AAAA,UACR,KAAA,EAAO,KAAM,CAAA,SAAA,CAAU,KAAQ,GAAA,IAAA;AAAA,UAC/B,MAAQ,EAAA,KAAA;AAAA,UACR,MAAQ,EAAA,mBAAA;AAAA,SACZ,CAAA;AAAA,OACG,MAAA;AACH,QAAO,OAAA;AAAA,UACH,QAAU,EAAA,UAAA;AAAA,UACV,GAAM,EAAA,KAAA,CAAM,SAAU,CAAA,CAAA,GAAK,EAAM,GAAA,IAAA;AAAA,UACjC,KAAO,EAAA,CAAA;AAAA,UACP,KAAO,EAAA,KAAA;AAAA,UACP,MAAA,EAAQ,KAAM,CAAA,SAAA,CAAU,KAAQ,GAAA,IAAA;AAAA,UAChC,MAAQ,EAAA,mBAAA;AAAA,SACZ,CAAA;AAAA,OACJ;AAAA,KACH,CAAA,CAAA;AAED,IAAA,MAAM,SAAS,GAAgB,EAAA,CAAA;AAC/B,IAAA,MAAM,UAAU,GAAoB,EAAA,CAAA;AAEpC,IAAA,IAAI,MAAS,GAAA,EAAA,CAAA;AACb,IAAM,MAAA,MAAA,GAAS,IAAI,CAAC,CAAA,CAAA;AAEpB,IAAM,MAAA,SAAA,GAAY,IAAI,CAAC,CAAA,CAAA;AACvB,IAAM,MAAA,UAAA,GAAa,IAAI,CAAC,CAAA,CAAA;AACxB,IAAI,IAAA,QAAA,CAAA;AAEJ,IAAA,SAAS,UAAU,KAAmB,EAAA;AAClC,MAAI,IAAA,KAAA,CAAM,WAAW,CAAG,EAAA;AACpB,QAAA,OAAA;AAAA,OACJ;AAEA,MAAA,QAAA,CAAS,gBAAmB,GAAA;AAAA,QACxB,CAAG,EAAA,CAAA;AAAA,QACH,CAAG,EAAA,CAAA;AAAA,QACH,eAAe,EAAE,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,qBAAqB,MAAO,EAAA;AAAA,QACzD,SAAW,EAAA,KAAA,CAAM,SAAa,IAAA,UAAA,GAAa,YAAe,GAAA,UAAA;AAAA,OAC9D,CAAA;AAEA,MAAI,IAAA,QAAA,CAAS,gBAAiB,CAAA,SAAA,IAAa,UAAY,EAAA;AACnD,QAAS,QAAA,CAAA,gBAAA,CAAiB,CAAI,GAAA,KAAA,CAAM,OAAU,GAAA,EAAA,CAAA;AAAA,OAC3C,MAAA;AACH,QAAS,QAAA,CAAA,gBAAA,CAAiB,CAAI,GAAA,KAAA,CAAM,OAAU,GAAA,EAAA,CAAA;AAAA,OAClD;AAAA,KAEJ;AAEA,IAAA,SAAS,UAAa,GAAA;AAClB,MAAS,QAAA,CAAA,gBAAA,GAAmB,EAAE,aAAA,EAAe,EAAE,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,mBAAqB,EAAA,MAAA,EAAS,EAAA,CAAA;AAAA,KAC7F;AAEA,IAAA,SAAS,WAAW,KAAmB,EAAA;AACnC,MAAI,IAAA,CAAC,MAAM,oBAAsB,EAAA;AAC7B,QAAA,OAAA;AAAA,OACJ;AACA,MAAA,MAAM,aAAgB,GAAA;AAAA,QAClB,IAAI,YAAa,EAAA;AAAA,QACjB,CAAG,EAAA,CAAA;AAAA,QACH,CAAG,EAAA,CAAA;AAAA,QACH,eAAe,EAAE,CAAA,EAAG,GAAG,CAAG,EAAA,CAAA,EAAG,qBAAqB,MAAO,EAAA;AAAA,QACzD,SAAW,EAAA,KAAA,CAAM,SAAa,IAAA,UAAA,GAAa,YAAe,GAAA,UAAA;AAAA,OAC9D,CAAA;AACA,MAAI,IAAA,aAAA,CAAc,aAAa,UAAY,EAAA;AACvC,QAAc,aAAA,CAAA,CAAA,GAAI,MAAM,OAAU,GAAA,EAAA,CAAA;AAAA,OAC/B,MAAA;AACH,QAAc,aAAA,CAAA,CAAA,GAAI,MAAM,OAAU,GAAA,EAAA,CAAA;AAAA,OACtC;AAEA,MAAgB,eAAA,EAAA,CAAE,iBAAkB,CAAA,IAAA,CAAK,aAAa,CAAA,CAAA;AACtD,MAAA,QAAA,CAAS,MAAM;AACX,QAAiB,gBAAA,EAAA,CAAA;AAAA,OACpB,CAAA,CAAA;AAAA,KACL;AA6BA,IAAA,KAAA,CAAM,MAAM,KAAA,CAAM,MAAQ,EAAA,CAAC,cAAc,YAAiB,KAAA;AACtD,MAAI,IAAA,KAAA,CAAM,aAAa,YAAc,EAAA;AACjC,QAAA,OAAA,CAAQ,KAAO,CAAA,QAAA,CAAS,KAAM,CAAA,MAAA,EAAQ,CAAC,CAAA,CAAA;AAAA,OACpC,MAAA;AACH,QAAA,OAAA,CAAQ,KAAO,CAAA,QAAA,CAAS,CAAG,EAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAAA,OAC3C;AAAA,KACH,CAAA,CAAA;AAED,IAAM,MAAA,YAAA,GAAe,SAAS,MAAM;AAChC,MAAA,MAAM,WAAW,EAAC,CAAA;AAClB,MAAI,IAAA,KAAA,CAAM,aAAa,YAAc,EAAA;AACjC,QAAA,QAAA,CAAS,YAAgB,CAAA,GAAA,YAAA,CAAA;AACzB,QAAA,QAAA,CAAS,WAAe,CAAA,GAAA,8BAAA,CAAA;AACxB,QAAA,QAAA,CAAS,aAAiB,CAAA,GAAA,MAAA,CAAA;AAC1B,QAAA,QAAA,CAAS,cAAkB,CAAA,GAAA,MAAA,CAAA;AAC3B,QAAA,QAAA,CAAS,YAAY,MAAS,GAAA,IAAA,CAAA;AAAA,OAE3B,MAAA;AACH,QAAA,QAAA,CAAS,YAAgB,CAAA,GAAA,MAAA,CAAA;AACzB,QAAA,QAAA,CAAS,eAAmB,CAAA,GAAA,MAAA,CAAA;AAC5B,QAAA,QAAA,CAAS,WAAW,MAAS,GAAA,IAAA,CAAA;AAAA,OAEjC;AACA,MAAO,OAAA,QAAA,CAAA;AAAA,KACV,CAAA,CAAA;AAED,IAAM,MAAA,KAAA,GAAQ,SAAS,MAAM;AACzB,MAAA,MAAM,WAAW,EAAC,CAAA;AAClB,MAAI,IAAA,KAAA,CAAM,aAAa,YAAc,EAAA;AACjC,QAAS,QAAA,CAAA,OAAA,CAAA,GAAW,SAAU,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAC1C,QAAA,QAAA,CAAS,YAAY,MAAS,GAAA,IAAA,CAAA;AAAA,OAC3B,MAAA;AACH,QAAA,QAAA,CAAS,WAAW,MAAS,GAAA,IAAA,CAAA;AAC7B,QAAA,QAAA,CAAS,cAAc,MAAS,GAAA,IAAA,CAAA;AAChC,QAAS,QAAA,CAAA,QAAA,CAAA,GAAY,SAAU,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AAAA,OAC/C;AACA,MAAA,QAAA,CAAS,iBAAqB,CAAA,GAAA,SAAA,CAAU,OAAQ,CAAA,KAAA,GAAQ,IAAI,GAAM,GAAA,MAAA,CAAA;AAClE,MAAA,QAAA,CAAS,WAAe,CAAA,GAAA,QAAA,GAAW,SAAU,CAAA,OAAA,CAAQ,KAAQ,GAAA,GAAA,CAAA;AAC7D,MAAO,OAAA,QAAA,CAAA;AAAA,KACV,CAAA,CAAA;AAED,IAAA,WAAA,CAAY,MAAM;AACd,MAAO,MAAA,CAAA,KAAA,GAAQ,OAAQ,CAAA,MAAA,CAAO,QAAS,CAAA,KAAA,CAAM,OAAO,QAAS,EAAC,CAAI,GAAA,CAAC,CAAI,GAAA,EAAA,CAAA;AACvE,MAAI,IAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AACnB,QAAA,QAAA,CAAS,MAAM;AACX,UAAU,SAAA,EAAA,CAAA;AAAA,SACb,CAAA,CAAA;AAAA,OACL;AAEA,MAAI,IAAA,KAAA,CAAM,aAAa,YAAc,EAAA;AACjC,QAAA,SAAA,CAAU,QAAQ,MAAO,CAAA,KAAA,CAAA;AACzB,QAAA,UAAA,CAAW,KAAQ,GAAA,MAAA,CAAA;AAAA,OAChB,MAAA;AACH,QAAA,SAAA,CAAU,KAAQ,GAAA,MAAA,CAAA;AAClB,QAAA,UAAA,CAAW,QAAQ,MAAO,CAAA,KAAA,CAAA;AAAA,OAC9B;AAAA,KAEH,CAAA,CAAA;AAED,IAAA,SAAS,SAAY,GAAA;AACjB,MAAM,MAAA,IAAA,GAAO,OAAO,IAAK,EAAA,CAAA;AAEzB,MAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AAEvB,MAAA,MAAM,QAAW,GAAA,SAAA,CAAU,WAAY,CAAA,QAAA,CAAS,cAAc,IAAI,CAAA,EAAG,WAAY,CAAA,eAAA,EAAkB,CAAA,QAAA,EAAU,IAAI,CAAA,EAAG,MAAM,MAAM,CAAA,CAAA;AAEhI,MAAS,QAAA,CAAA,SAAA,CAAU,MAAM,CAAA,CAAE,MAAO,EAAA,CAAA;AAElC,MAAI,IAAA,KAAA,CAAM,aAAa,YAAc,EAAA;AAMjC,QAAA,KAAA,IAASC,EAAI,GAAA,CAAA,EAAGA,EAAI,GAAA,QAAA,EAAUA,EAAK,EAAA,EAAA;AAG/B,UAAIA,IAAAA,EAAAA,GAAI,KAAK,CAAG,EAAA;AACZ,YAAK,IAAA,CAAA,MAAA,CAAO,KAAQA,GAAAA,EAAAA,EAAG,EAAE,CAAA,CAAA;AAAA,WAC7B,MAAA,IAAWA,EAAI,GAAA,CAAA,IAAK,CAAG,EAAA;AACnB,YAAK,IAAA,CAAA,MAAA,CAAO,KAAQA,GAAAA,EAAAA,EAAG,EAAE,CAAA,CAAA;AAAA,WACtB,MAAA;AACH,YAAK,IAAA,CAAA,MAAA,CAAO,KAAQA,GAAAA,EAAAA,EAAG,EAAE,CAAA,CAAA;AAAA,WAC7B;AACA,UAAK,IAAA,CAAA,MAAA,CAAO,KAAQA,GAAAA,EAAAA,EAAG,EAAE,CAAA,CAAA;AAEzB,UAAIA,IAAAA,EAAAA,GAAI,MAAM,CAAG,EAAA;AACb,YAAS,QAAA,CAAA,MAAA,CAAO,MAAM,CACjB,CAAA,IAAA,CAAK,KAAK,KAAQA,GAAAA,EAAAA,GAAI,CAAC,CAAA,CACvB,IAAK,CAAA,GAAA,EAAK,EAAE,CACZ,CAAA,IAAA,CAAKA,EAAI,GAAA,EAAE,CACX,CAAA,KAAA,CAAM,QAAQ,OAAO,CAAA,CACrB,KAAM,CAAA,WAAA,EAAa,MAAM,CAAA,CAAA;AAAA,WAClC;AAAA,SACJ;AAAA,OACG,MAAA;AACH,QAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,QAAA,EAAU,CAAK,EAAA,EAAA;AAC/B,UAAI,IAAA,CAAA,GAAI,KAAK,CAAG,EAAA;AACZ,YAAK,IAAA,CAAA,MAAA,CAAO,EAAI,EAAA,KAAA,GAAQ,CAAC,CAAA,CAAA;AAAA,WAC7B,MAAA,IAAW,CAAI,GAAA,CAAA,IAAK,CAAG,EAAA;AACnB,YAAK,IAAA,CAAA,MAAA,CAAO,EAAI,EAAA,KAAA,GAAQ,CAAC,CAAA,CAAA;AAAA,WACtB,MAAA;AACH,YAAK,IAAA,CAAA,MAAA,CAAO,EAAI,EAAA,KAAA,GAAQ,CAAC,CAAA,CAAA;AAAA,WAC7B;AACA,UAAK,IAAA,CAAA,MAAA,CAAO,EAAI,EAAA,KAAA,GAAQ,CAAC,CAAA,CAAA;AACzB,UAAI,IAAA,CAAA,GAAI,MAAM,CAAG,EAAA;AACb,YAAA,QAAA,CAAS,MAAO,CAAA,MAAM,CACjB,CAAA,IAAA,CAAK,GAAK,EAAA,CAAC,CACX,CAAA,IAAA,CAAK,GAAK,EAAA,KAAA,GAAQ,CAAC,CAAA,CACnB,IAAK,CAAA,CAAA,GAAI,EAAE,CAAA,CACX,KAAM,CAAA,MAAA,EAAQ,OAAO,CAAA,CACrB,IAAK,CAAA,WAAA,EAAa,CAAmB,gBAAA,EAAA,KAAA,GAAQ,CAAI,CAAA,CAAA,CAAA,CAAA,CACjD,KAAM,CAAA,WAAA,EAAa,MAAM,CAAA,CAAA;AAAA,WAClC;AAAA,SACJ;AAAA,OAEJ;AACA,MAAA,QAAA,CAAS,MAAO,CAAA,SAAS,CAEpB,CAAA,KAAA,CAAM,UAAU,OAAO,CAAA,CACvB,KAAM,CAAA,MAAA,EAAQ,OAAO,CAErB,CAAA,IAAA,CAAK,GAAK,EAAA,IAAA,CAAK,UAAU,CAAA,CAAA;AAAA,KAClC;AAEA,IAAA,SAAA,CAAU,MAAM;AACZ,MAAW,QAAA,GAAA,WAAA,CAAY,MAAO,CAAA,MAAA,CAAO,KAAM,CAAA,CAAA;AAAA,KAC9C,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}