{"version":3,"file":"index.mjs","sources":["../../../../../../../packages/components/editor/src/toolbar/index.vue"],"sourcesContent":["<template>\n  <div v-if=\"editor\" :class=\"ns.b()\">\n    <slot name=\"prepend\" />\n    <template v-for=\"key in toolbarList\" :key=\"key\">\n      <template v-if=\"key === 'emoji'\">\n        <ElEmoji @change=\"insertImage\">\n          <template #trigger>\n            <el-tooltip\n              effect=\"light\"\n              placement=\"top\"\n              :disabled=\"!showTip\"\n              :content=\"getCommandItem(key).tip\"\n            >\n              <Icon\n                :icon=\"getValueByKey(key, 'icon')\"\n                :size=\"getValueByKey(key, 'size')\"\n              />\n            </el-tooltip>\n          </template>\n        </ElEmoji>\n      </template>\n      <template v-else-if=\"key === 'image'\">\n        <Image />\n      </template>\n      <template v-else-if=\"key === 'video'\">\n        <Video />\n      </template>\n      <template v-else-if=\"key === 'link'\">\n        <Link />\n      </template>\n      <template v-else-if=\"key === 'divider'\">\n        <ElDivider :class=\"ns.e('divider')\" direction=\"vertical\" />\n      </template>\n      <template v-else-if=\"key === 'heading'\">\n        <Heading />\n      </template>\n      <template v-else-if=\"key === 'font-size'\">\n        <FontSize />\n      </template>\n      <template v-else>\n        <el-tooltip\n          effect=\"light\"\n          placement=\"top\"\n          :disabled=\"!showTip\"\n          :content=\"getCommandItem(key).tip\"\n        >\n          <Icon\n            :active=\"isActive(key)\"\n            :icon=\"getValueByKey(key, 'icon')\"\n            :size=\"getValueByKey(key, 'size')\"\n            @click=\"handleClick(key)\"\n          />\n        </el-tooltip>\n      </template>\n    </template>\n    <slot name=\"append\" />\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed } from 'vue'\nimport { ElDivider, ElTooltip, useLocale, useNamespace } from 'element-plus'\nimport { definePropType, isFunction } from '@element-plus/utils'\nimport { ElEmoji } from '@element-plus/components/emoji'\nimport * as IconsVue from '@element-plus/components/icons-vue/index'\nimport { provideToolBarContext } from '../hooks'\nimport Icon from './icon.vue'\nimport Image from './image/index.vue'\nimport Video from './video/index.vue'\nimport Link from './link/index.vue'\nimport Heading from './heading/index.vue'\nimport FontSize from './font-size/index.vue'\nimport type { Component, ComputedRef } from 'vue'\nimport type { IEditor, IToolbarConfigure, IToolbarList } from '../types'\n\nconst {\n  Bold,\n  Italic,\n  Bullet,\n  Ordered,\n  Blockquote,\n  Code,\n  Strike,\n  Undo,\n  Redo,\n  Emoji,\n  Underline,\n  Horizontal,\n  AlignLeft,\n  AlignRight,\n  AlignCenter,\n  AlignJustify,\n} = IconsVue\n\nconst ns = useNamespace('editor-toolbar')\nconst { t } = useLocale()\n\ndefineOptions({\n  name: 'ElEditorToolbar',\n})\n\nconst props = defineProps({\n  editor: {\n    type: definePropType<IEditor>(Object),\n    required: true,\n  },\n  toolbarList: {\n    type: definePropType<IToolbarList>(Array),\n    default: () => [\n      'bold', // 加粗\n      'strike', // 删除线\n      'italic', // 斜体\n      'underline', // 下划线\n      'link', // 链接\n      'ordered', // 有序列表\n      'bullet', // 无序列表\n      'blockquote', // 引用\n      'code', // 代码块\n      'horizontal', // 分割线\n      'alignLeft', // 左对齐\n      'alignRight', // 右对齐\n      'alignCenter', // 居中对齐\n      'alignJustify', // 两端对齐\n      'emoji', // 表情\n      'image', // 图片\n      'video', // 视频\n      'undo', // 撤销\n      'redo', // 重做\n      'heading', // head大小\n      'font-size', // 字体大小\n    ],\n  },\n  configure: {\n    type: definePropType<IToolbarConfigure>(Object),\n    default: () => ({}),\n  },\n})\n\nconst toolBarContext = computed(() => {\n  return {\n    editor: props.editor,\n    configure: props.configure,\n  }\n})\n\nconst showTip = computed(() => toolBarContext.value.configure.showTip)\n\nprovideToolBarContext(toolBarContext)\n\nconst getEditor = () => {\n  return props.editor as any\n}\n\ntype ICommandOption = {\n  type: string\n  icon: Component\n  command: () => void\n  isActive: () => boolean\n  size: number\n  tip: string\n  [key: string]: any\n}\n\ntype ICommands = {\n  [key: string]: ICommandOption\n}\n\nconst commands: ComputedRef<ICommands> = computed(() => ({\n  bold: {\n    type: 'bold',\n    icon: Bold,\n    command: () => getEditor().chain().focus().toggleBold().run(),\n    isActive: () => getEditor().isActive('bold'),\n    size: 18,\n    tip: t('epx.editor.boldTip'),\n  },\n  italic: {\n    type: 'italic',\n    icon: Italic,\n    command: () => getEditor().chain().focus().toggleItalic().run(),\n    isActive: () => getEditor().isActive('italic'),\n    size: 18,\n    tip: t('epx.editor.italicTip'),\n  },\n  bullet: {\n    type: 'bulletList',\n    icon: Bullet,\n    command: () => getEditor().chain().focus().toggleBulletList().run(),\n    isActive: () => getEditor().isActive('bulletList'),\n    size: 21,\n    tip: t('epx.editor.bulletTip'),\n  },\n  ordered: {\n    type: 'orderedList',\n    icon: Ordered,\n    command: () => getEditor().chain().focus().toggleOrderedList().run(),\n    isActive: () => getEditor().isActive('orderedList'),\n    size: 21,\n    tip: t('epx.editor.orderedTip'),\n  },\n  blockquote: {\n    type: 'blockquote',\n    icon: Blockquote,\n    command: () => getEditor().chain().focus().toggleBlockquote().run(),\n    isActive: () => getEditor().isActive('blockquote'),\n    size: 18,\n    tip: t('epx.editor.blockquoteTip'),\n  },\n  code: {\n    type: 'codeBlock',\n    icon: Code,\n    command: () => getEditor().chain().focus().toggleCodeBlock().run(),\n    isActive: () => getEditor().isActive('codeBlock'),\n    size: 21,\n    tip: t('epx.editor.codeTip'),\n  },\n  strike: {\n    type: 'strike',\n    icon: Strike,\n    command: () => getEditor().chain().focus().toggleStrike().run(),\n    isActive: () => getEditor().isActive('strike'),\n    size: 18,\n    tip: t('epx.editor.strikeTip'),\n  },\n  undo: {\n    type: 'undo',\n    icon: Undo,\n    command: () => getEditor().chain().focus().undo().run(),\n    isActive: () => false,\n    size: 18,\n    tip: t('epx.editor.undoTip'),\n  },\n  redo: {\n    type: 'redo',\n    icon: Redo,\n    command: () => getEditor().chain().focus().redo().run(),\n    isActive: () => false,\n    size: 18,\n    tip: t('epx.editor.redoTip'),\n  },\n  emoji: {\n    type: 'emoji',\n    icon: Emoji,\n    command: () => {},\n    isActive: () => false,\n    size: 21,\n    tip: t('epx.editor.emojiTip'),\n  },\n  underline: {\n    type: 'underline',\n    icon: Underline,\n    command: () => getEditor().chain().focus().toggleUnderline().run(),\n    isActive: () => getEditor().isActive('underline'),\n    size: 17,\n    tip: t('epx.editor.underlineTip'),\n  },\n  horizontal: {\n    type: 'horizontal',\n    icon: Horizontal,\n    command: () => getEditor().chain().focus().setHorizontalRule().run(),\n    isActive: () => false,\n    size: 21,\n    tip: t('epx.editor.horizontalTip'),\n  },\n  alignLeft: {\n    type: 'alignLeft',\n    icon: AlignLeft,\n    command: () => {\n      if (commands.value.alignLeft.isActive()) {\n        getEditor().chain().focus().unsetTextAlign().run()\n      } else {\n        getEditor().chain().focus().setTextAlign('left').run()\n      }\n    },\n    isActive: () => getEditor().isActive({ textAlign: 'left' }),\n    size: 21,\n    tip: t('epx.editor.alignLeftTip'),\n  },\n  alignRight: {\n    type: 'alignRight',\n    icon: AlignRight,\n    command: () => {\n      if (commands.value.alignRight.isActive()) {\n        getEditor().chain().focus().unsetTextAlign().run()\n      } else {\n        getEditor().chain().focus().setTextAlign('right').run()\n      }\n    },\n    isActive: () => getEditor().isActive({ textAlign: 'right' }),\n    size: 21,\n    tip: t('epx.editor.alignRightTip'),\n  },\n  alignCenter: {\n    type: 'alignCenter',\n    icon: AlignCenter,\n    command: () => {\n      if (commands.value.alignCenter.isActive()) {\n        getEditor().chain().focus().unsetTextAlign().run()\n      } else {\n        getEditor().chain().focus().setTextAlign('center').run()\n      }\n    },\n    isActive: () => getEditor().isActive({ textAlign: 'center' }),\n    size: 21,\n    tip: t('epx.editor.alignCenterTip'),\n  },\n  alignJustify: {\n    type: 'alignJustify',\n    icon: AlignJustify,\n    command: () => {\n      if (commands.value.alignJustify.isActive()) {\n        getEditor().chain().focus().unsetTextAlign().run()\n      } else {\n        getEditor().chain().focus().setTextAlign('justify').run()\n      }\n    },\n    isActive: () => getEditor().isActive({ textAlign: 'justify' }),\n    size: 21,\n    tip: t('epx.editor.alignJustifyTip'),\n  },\n}))\n\nconst getCommandItem = (key: string) => commands.value[key]\n\nconst handleClick = (key: string) => {\n  const item = commands.value[key]\n  item.command()\n}\n\nconst isActive = (key: string) => {\n  const item = commands.value[key]\n  return item.isActive()\n}\n\nconst getValueByKey = (key: string, prop: string) => {\n  const item = commands.value[key]\n  return isFunction(item[prop]) ? item[prop]() : item[prop]\n}\n\nconst insertImage = (item: any) => {\n  getEditor()\n    .chain()\n    .focus()\n    .setImage({\n      src: item.image,\n      alt: item.text,\n    })\n    .run()\n}\n</script>\n"],"names":["IconsVue"],"mappings":";;;;;;;;;;;;;;mCAiGc,CAAA;AAAA,EACZ,IAAM,EAAA,iBAAA;AACR,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAxBM,IAAA,MAAA;AAAA,MACJ,IAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,MACA,KAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,WAAA;AAAA,MACA,YAAA;AAAA,KACE,GAAAA,KAAA,CAAA;AAEE,IAAA,MAAA,EAAA,GAAK,aAAa,gBAAgB,CAAA,CAAA;AAClC,IAAA,MAAA,EAAE,CAAE,EAAA,GAAI,SAAU,EAAA,CAAA;AAMxB,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAA;AAqCR,IAAA,MAAA,cAAA,GAAiB,SAAS,MAAM;AAC7B,MAAA,OAAA;AAAA,QACL,QAAQ,KAAM,CAAA,MAAA;AAAA,QACd,WAAW,KAAM,CAAA,SAAA;AAAA,OACnB,CAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAA,MAAM,UAAU,QAAS,CAAA,MAAM,cAAe,CAAA,KAAA,CAAM,UAAU,OAAO,CAAA,CAAA;AAErE,IAAA,qBAAA,CAAsB,cAAc,CAAA,CAAA;AAEpC,IAAA,MAAM,YAAY,MAAM;AACtB,MAAA,OAAO,KAAM,CAAA,MAAA,CAAA;AAAA,KACf,CAAA;AAgBM,IAAA,MAAA,QAAA,GAAmC,SAAS,OAAO;AAAA,MACvD,IAAM,EAAA;AAAA,QACJ,IAAM,EAAA,MAAA;AAAA,QACN,IAAM,EAAA,IAAA;AAAA,QACN,OAAA,EAAS,MAAM,SAAA,EAAY,CAAA,KAAA,GAAQ,KAAM,EAAA,CAAE,UAAW,EAAA,CAAE,GAAI,EAAA;AAAA,QAC5D,QAAU,EAAA,MAAM,SAAU,EAAA,CAAE,SAAS,MAAM,CAAA;AAAA,QAC3C,IAAM,EAAA,EAAA;AAAA,QACN,GAAA,EAAK,EAAE,oBAAoB,CAAA;AAAA,OAC7B;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,IAAM,EAAA,QAAA;AAAA,QACN,IAAM,EAAA,MAAA;AAAA,QACN,OAAA,EAAS,MAAM,SAAA,EAAY,CAAA,KAAA,GAAQ,KAAM,EAAA,CAAE,YAAa,EAAA,CAAE,GAAI,EAAA;AAAA,QAC9D,QAAU,EAAA,MAAM,SAAU,EAAA,CAAE,SAAS,QAAQ,CAAA;AAAA,QAC7C,IAAM,EAAA,EAAA;AAAA,QACN,GAAA,EAAK,EAAE,sBAAsB,CAAA;AAAA,OAC/B;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,IAAM,EAAA,YAAA;AAAA,QACN,IAAM,EAAA,MAAA;AAAA,QACN,OAAA,EAAS,MAAM,SAAA,EAAY,CAAA,KAAA,GAAQ,KAAM,EAAA,CAAE,gBAAiB,EAAA,CAAE,GAAI,EAAA;AAAA,QAClE,QAAU,EAAA,MAAM,SAAU,EAAA,CAAE,SAAS,YAAY,CAAA;AAAA,QACjD,IAAM,EAAA,EAAA;AAAA,QACN,GAAA,EAAK,EAAE,sBAAsB,CAAA;AAAA,OAC/B;AAAA,MACA,OAAS,EAAA;AAAA,QACP,IAAM,EAAA,aAAA;AAAA,QACN,IAAM,EAAA,OAAA;AAAA,QACN,OAAA,EAAS,MAAM,SAAA,EAAY,CAAA,KAAA,GAAQ,KAAM,EAAA,CAAE,iBAAkB,EAAA,CAAE,GAAI,EAAA;AAAA,QACnE,QAAU,EAAA,MAAM,SAAU,EAAA,CAAE,SAAS,aAAa,CAAA;AAAA,QAClD,IAAM,EAAA,EAAA;AAAA,QACN,GAAA,EAAK,EAAE,uBAAuB,CAAA;AAAA,OAChC;AAAA,MACA,UAAY,EAAA;AAAA,QACV,IAAM,EAAA,YAAA;AAAA,QACN,IAAM,EAAA,UAAA;AAAA,QACN,OAAA,EAAS,MAAM,SAAA,EAAY,CAAA,KAAA,GAAQ,KAAM,EAAA,CAAE,gBAAiB,EAAA,CAAE,GAAI,EAAA;AAAA,QAClE,QAAU,EAAA,MAAM,SAAU,EAAA,CAAE,SAAS,YAAY,CAAA;AAAA,QACjD,IAAM,EAAA,EAAA;AAAA,QACN,GAAA,EAAK,EAAE,0BAA0B,CAAA;AAAA,OACnC;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,IAAM,EAAA,WAAA;AAAA,QACN,IAAM,EAAA,IAAA;AAAA,QACN,OAAA,EAAS,MAAM,SAAA,EAAY,CAAA,KAAA,GAAQ,KAAM,EAAA,CAAE,eAAgB,EAAA,CAAE,GAAI,EAAA;AAAA,QACjE,QAAU,EAAA,MAAM,SAAU,EAAA,CAAE,SAAS,WAAW,CAAA;AAAA,QAChD,IAAM,EAAA,EAAA;AAAA,QACN,GAAA,EAAK,EAAE,oBAAoB,CAAA;AAAA,OAC7B;AAAA,MACA,MAAQ,EAAA;AAAA,QACN,IAAM,EAAA,QAAA;AAAA,QACN,IAAM,EAAA,MAAA;AAAA,QACN,OAAA,EAAS,MAAM,SAAA,EAAY,CAAA,KAAA,GAAQ,KAAM,EAAA,CAAE,YAAa,EAAA,CAAE,GAAI,EAAA;AAAA,QAC9D,QAAU,EAAA,MAAM,SAAU,EAAA,CAAE,SAAS,QAAQ,CAAA;AAAA,QAC7C,IAAM,EAAA,EAAA;AAAA,QACN,GAAA,EAAK,EAAE,sBAAsB,CAAA;AAAA,OAC/B;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,IAAM,EAAA,MAAA;AAAA,QACN,IAAM,EAAA,IAAA;AAAA,QACN,OAAA,EAAS,MAAM,SAAA,EAAY,CAAA,KAAA,GAAQ,KAAM,EAAA,CAAE,IAAK,EAAA,CAAE,GAAI,EAAA;AAAA,QACtD,UAAU,MAAM,KAAA;AAAA,QAChB,IAAM,EAAA,EAAA;AAAA,QACN,GAAA,EAAK,EAAE,oBAAoB,CAAA;AAAA,OAC7B;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,IAAM,EAAA,MAAA;AAAA,QACN,IAAM,EAAA,IAAA;AAAA,QACN,OAAA,EAAS,MAAM,SAAA,EAAY,CAAA,KAAA,GAAQ,KAAM,EAAA,CAAE,IAAK,EAAA,CAAE,GAAI,EAAA;AAAA,QACtD,UAAU,MAAM,KAAA;AAAA,QAChB,IAAM,EAAA,EAAA;AAAA,QACN,GAAA,EAAK,EAAE,oBAAoB,CAAA;AAAA,OAC7B;AAAA,MACA,KAAO,EAAA;AAAA,QACL,IAAM,EAAA,OAAA;AAAA,QACN,IAAM,EAAA,KAAA;AAAA,QACN,SAAS,MAAM;AAAA,SAAC;AAAA,QAChB,UAAU,MAAM,KAAA;AAAA,QAChB,IAAM,EAAA,EAAA;AAAA,QACN,GAAA,EAAK,EAAE,qBAAqB,CAAA;AAAA,OAC9B;AAAA,MACA,SAAW,EAAA;AAAA,QACT,IAAM,EAAA,WAAA;AAAA,QACN,IAAM,EAAA,SAAA;AAAA,QACN,OAAA,EAAS,MAAM,SAAA,EAAY,CAAA,KAAA,GAAQ,KAAM,EAAA,CAAE,eAAgB,EAAA,CAAE,GAAI,EAAA;AAAA,QACjE,QAAU,EAAA,MAAM,SAAU,EAAA,CAAE,SAAS,WAAW,CAAA;AAAA,QAChD,IAAM,EAAA,EAAA;AAAA,QACN,GAAA,EAAK,EAAE,yBAAyB,CAAA;AAAA,OAClC;AAAA,MACA,UAAY,EAAA;AAAA,QACV,IAAM,EAAA,YAAA;AAAA,QACN,IAAM,EAAA,UAAA;AAAA,QACN,OAAA,EAAS,MAAM,SAAA,EAAY,CAAA,KAAA,GAAQ,KAAM,EAAA,CAAE,iBAAkB,EAAA,CAAE,GAAI,EAAA;AAAA,QACnE,UAAU,MAAM,KAAA;AAAA,QAChB,IAAM,EAAA,EAAA;AAAA,QACN,GAAA,EAAK,EAAE,0BAA0B,CAAA;AAAA,OACnC;AAAA,MACA,SAAW,EAAA;AAAA,QACT,IAAM,EAAA,WAAA;AAAA,QACN,IAAM,EAAA,SAAA;AAAA,QACN,SAAS,MAAM;AACb,UAAA,IAAI,QAAS,CAAA,KAAA,CAAM,SAAU,CAAA,QAAA,EAAY,EAAA;AACvC,YAAA,SAAA,GAAY,KAAM,EAAA,CAAE,OAAQ,CAAA,cAAA,GAAiB,GAAI,EAAA,CAAA;AAAA,WAC5C,MAAA;AACK,YAAA,SAAA,EAAA,CAAE,OAAQ,CAAA,KAAA,GAAQ,YAAa,CAAA,MAAM,EAAE,GAAI,EAAA,CAAA;AAAA,WACvD;AAAA,SACF;AAAA,QACA,QAAA,EAAU,MAAM,SAAU,EAAA,CAAE,SAAS,EAAE,SAAA,EAAW,QAAQ,CAAA;AAAA,QAC1D,IAAM,EAAA,EAAA;AAAA,QACN,GAAA,EAAK,EAAE,yBAAyB,CAAA;AAAA,OAClC;AAAA,MACA,UAAY,EAAA;AAAA,QACV,IAAM,EAAA,YAAA;AAAA,QACN,IAAM,EAAA,UAAA;AAAA,QACN,SAAS,MAAM;AACb,UAAA,IAAI,QAAS,CAAA,KAAA,CAAM,UAAW,CAAA,QAAA,EAAY,EAAA;AACxC,YAAA,SAAA,GAAY,KAAM,EAAA,CAAE,OAAQ,CAAA,cAAA,GAAiB,GAAI,EAAA,CAAA;AAAA,WAC5C,MAAA;AACK,YAAA,SAAA,EAAA,CAAE,OAAQ,CAAA,KAAA,GAAQ,YAAa,CAAA,OAAO,EAAE,GAAI,EAAA,CAAA;AAAA,WACxD;AAAA,SACF;AAAA,QACA,QAAA,EAAU,MAAM,SAAU,EAAA,CAAE,SAAS,EAAE,SAAA,EAAW,SAAS,CAAA;AAAA,QAC3D,IAAM,EAAA,EAAA;AAAA,QACN,GAAA,EAAK,EAAE,0BAA0B,CAAA;AAAA,OACnC;AAAA,MACA,WAAa,EAAA;AAAA,QACX,IAAM,EAAA,aAAA;AAAA,QACN,IAAM,EAAA,WAAA;AAAA,QACN,SAAS,MAAM;AACb,UAAA,IAAI,QAAS,CAAA,KAAA,CAAM,WAAY,CAAA,QAAA,EAAY,EAAA;AACzC,YAAA,SAAA,GAAY,KAAM,EAAA,CAAE,OAAQ,CAAA,cAAA,GAAiB,GAAI,EAAA,CAAA;AAAA,WAC5C,MAAA;AACK,YAAA,SAAA,EAAA,CAAE,OAAQ,CAAA,KAAA,GAAQ,YAAa,CAAA,QAAQ,EAAE,GAAI,EAAA,CAAA;AAAA,WACzD;AAAA,SACF;AAAA,QACA,QAAA,EAAU,MAAM,SAAU,EAAA,CAAE,SAAS,EAAE,SAAA,EAAW,UAAU,CAAA;AAAA,QAC5D,IAAM,EAAA,EAAA;AAAA,QACN,GAAA,EAAK,EAAE,2BAA2B,CAAA;AAAA,OACpC;AAAA,MACA,YAAc,EAAA;AAAA,QACZ,IAAM,EAAA,cAAA;AAAA,QACN,IAAM,EAAA,YAAA;AAAA,QACN,SAAS,MAAM;AACb,UAAA,IAAI,QAAS,CAAA,KAAA,CAAM,YAAa,CAAA,QAAA,EAAY,EAAA;AAC1C,YAAA,SAAA,GAAY,KAAM,EAAA,CAAE,OAAQ,CAAA,cAAA,GAAiB,GAAI,EAAA,CAAA;AAAA,WAC5C,MAAA;AACK,YAAA,SAAA,EAAA,CAAE,OAAQ,CAAA,KAAA,GAAQ,YAAa,CAAA,SAAS,EAAE,GAAI,EAAA,CAAA;AAAA,WAC1D;AAAA,SACF;AAAA,QACA,QAAA,EAAU,MAAM,SAAU,EAAA,CAAE,SAAS,EAAE,SAAA,EAAW,WAAW,CAAA;AAAA,QAC7D,IAAM,EAAA,EAAA;AAAA,QACN,GAAA,EAAK,EAAE,4BAA4B,CAAA;AAAA,OACrC;AAAA,KACA,CAAA,CAAA,CAAA;AAEF,IAAA,MAAM,cAAiB,GAAA,CAAC,GAAgB,KAAA,QAAA,CAAS,KAAM,CAAA,GAAA,CAAA,CAAA;AAEjD,IAAA,MAAA,WAAA,GAAc,CAAC,GAAgB,KAAA;AAC7B,MAAA,MAAA,IAAA,GAAO,SAAS,KAAM,CAAA,GAAA,CAAA,CAAA;AAC5B,MAAA,IAAA,CAAK,OAAQ,EAAA,CAAA;AAAA,KACf,CAAA;AAEM,IAAA,MAAA,QAAA,GAAW,CAAC,GAAgB,KAAA;AAC1B,MAAA,MAAA,IAAA,GAAO,SAAS,KAAM,CAAA,GAAA,CAAA,CAAA;AAC5B,MAAA,OAAO,KAAK,QAAS,EAAA,CAAA;AAAA,KACvB,CAAA;AAEM,IAAA,MAAA,aAAA,GAAgB,CAAC,GAAA,EAAa,IAAiB,KAAA;AAC7C,MAAA,MAAA,IAAA,GAAO,SAAS,KAAM,CAAA,GAAA,CAAA,CAAA;AACrB,MAAA,OAAA,WAAW,IAAK,CAAA,IAAA,CAAK,IAAI,IAAK,CAAA,IAAA,CAAA,KAAU,IAAK,CAAA,IAAA,CAAA,CAAA;AAAA,KACtD,CAAA;AAEM,IAAA,MAAA,WAAA,GAAc,CAAC,IAAc,KAAA;AACjC,MAAA,SAAA,EACG,CAAA,KAAA,EACA,CAAA,KAAA,GACA,QAAS,CAAA;AAAA,QACR,KAAK,IAAK,CAAA,KAAA;AAAA,QACV,KAAK,IAAK,CAAA,IAAA;AAAA,OACX,EACA,GAAI,EAAA,CAAA;AAAA,KACT,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}