{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/controls/print/index.ts"],"sourcesContent":["import type { CSSProperties, VNode } from 'vue'\nimport { createCommentVNode, defineComponent, getCurrentInstance, nextTick, ref, h, watch, reactive } from 'vue'\nimport type { VcPrintEvt, VcComponentInternalInstance, VcReadyObject, VcComponentPublicInstance } from 'casc-cesium-utils/types'\nimport { $, getVcParentInstance, getInstanceListener } from 'casc-cesium-utils/private/vm'\nimport usePosition from 'casc-cesium-composables/private/use-position'\nimport { captureScreenshot } from 'casc-cesium-utils/cesium-helpers'\nimport type { VcTooltipRef, VcBtnRef } from 'casc-cesium-components/ui'\nimport { VcBtn, VcTooltip, VcIcon, VcTooltipProps } from 'casc-cesium-components/ui'\nimport { useCommon, useLocale } from 'casc-cesium-composables'\nimport createPrintView from './createPrintView'\nimport defaultProps from './defaultProps'\nimport printWindow from './printWindow'\nimport { isPlainObject } from 'casc-cesium-utils/util'\nimport { commonEmits } from 'casc-cesium-utils/emits'\n\nconst emits = {\n  ...commonEmits,\n  printEvt: (evt: VcPrintEvt) => true\n}\n\nexport const printProps = defaultProps\nexport default defineComponent({\n  name: 'VcPrint',\n  props: printProps,\n  emits: emits,\n  setup(props: VcPrintProps, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcPrint'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { t } = useLocale()\n    const { $services } = commonState\n    const rootRef = ref<HTMLElement>(null)\n    const tooltipRef = ref<VcTooltipRef>(null)\n    const btnRef = ref<VcBtnRef>(null)\n    const positionState = usePosition(props, $services)\n    const creatingPrintView = ref(false)\n    const parentInstance = getVcParentInstance(instance)\n    const hasVcNavigation = parentInstance.proxy?.$options.name === 'VcNavigation'\n    const canRender = ref(hasVcNavigation)\n    const rootStyle = reactive<CSSProperties>({})\n    // watch\n    watch(\n      () => props,\n      val => {\n        nextTick(() => {\n          if (!instance.mounted) {\n            return\n          }\n          updateRootStyle()\n        })\n      },\n      {\n        deep: true\n      }\n    )\n    // methods\n    instance.createCesiumObject = async () => {\n      return new Promise((resolve, reject) => {\n        canRender.value = true\n        nextTick(() => {\n          const { viewer } = $services\n          if (!hasVcNavigation && props.teleportToViewer) {\n            const viewerElement = (viewer as any)._element\n            viewerElement.appendChild($(rootRef))\n            resolve($(rootRef))\n          } else {\n            resolve($(rootRef))\n          }\n        })\n      })\n    }\n    instance.mount = async () => {\n      updateRootStyle()\n      const { viewer } = $services\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'mounted',\n        target: $(rootRef)\n      })\n      return true\n    }\n    instance.unmount = async () => {\n      const viewerElement = ($services.viewer as any)._element\n      if (!hasVcNavigation) {\n        viewerElement.contains($(rootRef)) && viewerElement.removeChild($(rootRef))\n      }\n\n      const { viewer } = $services\n\n      viewer.viewerWidgetResized?.raiseEvent({\n        type: instance.cesiumClass,\n        status: 'unmounted',\n        target: $(rootRef)\n      })\n      return true\n    }\n\n    const updateRootStyle = () => {\n      const css: CSSProperties = positionState.style.value\n      rootStyle.left = css.left\n      rootStyle.top = css.top\n      rootStyle.transform = css.transform\n\n      if (!hasVcNavigation) {\n        const side = positionState.attach.value\n        const btnTarget = $(btnRef)?.$el\n        if (btnTarget !== void 0) {\n          // const clientRect = btnTarget.getBoundingClientRect()\n          // css.width = `${clientRect.width}px`\n          // css.height = `${clientRect.height}px`\n\n          if (typeof props.teleportToViewer === 'undefined' || props.teleportToViewer) {\n            if ((side.bottom || side.top) && !side.left && !side.right) {\n              css.left = '50%'\n              css.transform = 'translate(-50%, 0)'\n            }\n\n            if ((side.left || side.right) && !side.top && !side.bottom) {\n              css.top = '50%'\n              css.transform = 'translate(0, -50%)'\n            }\n          }\n        }\n      }\n\n      Object.assign(rootStyle, css)\n    }\n\n    const onHandleClick = () => {\n      $(tooltipRef)?.hide()\n\n      const { viewer } = $services\n      captureScreenshot(viewer).then(imgSrc => {\n        if (props.downloadAutomatically) {\n          const link = document.createElement('a')\n          link.download = props.screenshotName || t('vc.navigation.print.screenshot')\n          link.style.display = 'none'\n          link.href = imgSrc\n          document.body.appendChild(link)\n          link.click()\n          document.body.removeChild(link)\n        }\n\n        if (props.printAutomatically || props.showPrintView) {\n          if (props.showPrintView) {\n            showPrintView(imgSrc)\n          } else if (props.printAutomatically) {\n            print(imgSrc)\n          }\n        }\n\n        const listener = getInstanceListener(instance, 'printEvt')\n        listener &&\n          ctx.emit('printEvt', {\n            type: 'capture',\n            image: imgSrc,\n            status: 'end'\n          })\n      })\n    }\n\n    const print = image => {\n      create(true, true, image)\n    }\n\n    const showPrintView = image => {\n      create(false, false, image)\n    }\n\n    const create = (hidden, printAutomatically, image) => {\n      creatingPrintView.value = true\n      let iframe\n      if (hidden) {\n        iframe = document.createElement('iframe')\n        document.body.appendChild(iframe)\n      }\n\n      const { viewer } = $services\n\n      createPrintView({\n        image,\n        showCredit: props.showCredit,\n        credits: getCredits(viewer),\n        printWindow: iframe ? iframe.contentWindow : undefined,\n        title: t('vc.navigation.print.printViewTitle'),\n        readyCallback: windowToPrint => {\n          if (printAutomatically) {\n            printWindow(windowToPrint)\n              .catch(e => {\n                commonState.logger.warn(e)\n              })\n              .then(() => {\n                if (iframe) {\n                  document.body.removeChild(iframe)\n                }\n                if (hidden) {\n                  creatingPrintView.value = false\n                }\n              })\n          }\n        },\n        closeCallback: windowToPrint => {\n          if (hidden) {\n            creatingPrintView.value = false\n          }\n        }\n      })\n\n      if (!hidden) {\n        creatingPrintView.value = false\n      }\n    }\n\n    const getCredits = viewer => {\n      const credits = viewer.scene.frameState.creditDisplay._currentFrameCredits.screenCredits.values.concat(\n        viewer.scene.frameState.creditDisplay._currentFrameCredits.lightboxCredits.values\n      )\n      return credits.map(credit => credit.html)\n    }\n\n    const onTooltipBeforeShow = e => {\n      if (creatingPrintView.value) {\n        e.cancel = true\n      }\n    }\n\n    return () => {\n      if (canRender.value) {\n        const inner: Array<VNode> = []\n        inner.push(\n          h(VcIcon, {\n            name: props.icon,\n            size: props.size\n          })\n        )\n\n        inner.push(h('div', null, props.label))\n        if (isPlainObject(props.tooltip)) {\n          inner.push(\n            h(\n              VcTooltip,\n              {\n                ref: tooltipRef,\n                onBeforeShow: onTooltipBeforeShow,\n                ...props.tooltip\n              },\n              () => h('strong', null, (isPlainObject(props.tooltip) && props.tooltip.tip) || t('vc.navigation.print.printTip'))\n            )\n          )\n        } else {\n          inner.push(createCommentVNode('v-if'))\n        }\n\n        const child = [\n          h(\n            VcBtn,\n            {\n              ref: btnRef,\n              size: props.size,\n              disabled: creatingPrintView.value,\n              flat: props.flat,\n              stack: props.stack,\n              round: props.round,\n              style: { color: props.color, background: props.background },\n              dense: true,\n              onClick: onHandleClick\n            },\n            () => inner\n          )\n        ]\n\n        return h(\n          'div',\n          {\n            ref: rootRef,\n            class: `vc-print ${positionState.classes.value} ${props.customClass}`,\n            style: rootStyle\n          },\n          child\n        )\n      } else {\n        return createCommentVNode('v-if')\n      }\n    }\n  }\n})\n\nexport type VcPrintEmits = typeof emits\nexport type VcPrintProps = {\n  /**\n   * Specify the position of the VcPrint.\n   * Default value: top-right\n   */\n  position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top' | 'right' | 'bottom' | 'left'\n  /**\n   * An array of two numbers to offset the VcPrint horizontally and vertically in pixels.\n   * Default value: [0, 0]\n   */\n  offset?: [number, number]\n  /**\n   * Specify whether to display the copyright information of the loaded data when printing pictures.\n   * Default value: true\n   */\n  showCredit?: boolean\n  /**\n   * Specify whether to print automatically. Need to set showPrintView to false.\n   * Default value: false\n   */\n  printAutomatically?: boolean\n  /**\n   * Specify whether to display the print preview.\n   * Default value: true\n   */\n  showPrintView?: boolean\n  /**\n   * Specify whether to download the printed pictures.\n   * Default value: false\n   */\n  downloadAutomatically?: boolean\n  /**\n   * Specify the icon of the VcPrint.\n   * Default value: vc-icons-geolocation\n   */\n  icon?: string\n  /**\n   * Specify the size of the VcPrint.\n   * Default value: 24px\n   */\n  size?: string\n  /**\n   * Specify the css color of the VcPrint.\n   * Default value: #3f4854\n   */\n  color?: string\n  /**\n   * Specify the css background of the VcPrint.\n   * Default value: #fff\n   */\n  background?: string\n  /**\n   * Makes a circle shaped VcPrint.\n   */\n  round?: boolean\n  /**\n   * Use 'flat' design.\n   */\n  flat?: boolean\n  /**\n   * The text that will be shown on the VcPrint.\n   */\n  label?: string\n  /**\n   * Stack icon and label vertically instead of on same line.\n   */\n  stack?: boolean\n  /**\n   * The tooltip parameter.\n   */\n  tooltip?: false | VcTooltipProps\n  /**\n   * The screenshot name.\n   */\n  screenshotName?: string\n  /**\n   * Specify the customClass of the vc-print.\n   */\n  customClass?: string\n  /**\n   * Specify whether to add to the cesium-viewer node.\n   * Default value: true\n   */\n  teleportToViewer?: boolean\n  /**\n   * Triggers before the VcPrint is loaded.\n   * @param instance\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcPrint is successfully loaded.\n   */\n  onReady?: (readyObject: VcReadyObject) => void\n  /**\n   * Triggers when the component load failed.\n   */\n  onUnready?: (e: any) => void\n  /**\n   * Triggers when the VcPrint is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the print button is clicked.\n   */\n  onPrintEvt?: (evt: VcPrintEvt) => void\n}\n\nexport type VcPrintRef = VcComponentPublicInstance<VcPrintProps>\n"],"names":["defaultProps"],"mappings":";;;;;;;;;;;;;;;AAWA,MAAM,KAAK,GAAG;AACd,EAAE,GAAG,WAAW;AAChB,EAAE,QAAQ,EAAE,CAAC,GAAG,KAAK,IAAI;AACzB,CAAC,CAAC;AACU,MAAC,UAAU,GAAGA,kBAAa;AACvC,YAAe,eAAe,CAAC;AAC/B,EAAE,IAAI,EAAE,SAAS;AACjB,EAAE,KAAK,EAAE,UAAU;AACnB,EAAE,KAAK;AACP,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE;AACpB,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;AAC1C,IAAI,QAAQ,CAAC,WAAW,GAAG,SAAS,CAAC;AACrC,IAAI,QAAQ,CAAC,YAAY,GAAG,EAAE,CAAC;AAC/B,IAAI,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;AACxD,IAAI,IAAI,WAAW,KAAK,KAAK,CAAC,EAAE;AAChC,MAAM,OAAO;AACb,KAAK;AACL,IAAI,MAAM,EAAE,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC;AAC9B,IAAI,MAAM,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC;AACtC,IAAI,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9B,IAAI,MAAM,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AACjC,IAAI,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7B,IAAI,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AACxD,IAAI,MAAM,iBAAiB,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;AACzC,IAAI,MAAM,cAAc,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AACzD,IAAI,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,GAAG,cAAc,CAAC,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,MAAM,cAAc,CAAC;AACjH,IAAI,MAAM,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC;AAC3C,IAAI,MAAM,SAAS,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AACnC,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,CAAC,GAAG,KAAK;AAChC,MAAM,QAAQ,CAAC,MAAM;AACrB,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC/B,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,eAAe,EAAE,CAAC;AAC1B,OAAO,CAAC,CAAC;AACT,KAAK,EAAE;AACP,MAAM,IAAI,EAAE,IAAI;AAChB,KAAK,CAAC,CAAC;AACP,IAAI,QAAQ,CAAC,kBAAkB,GAAG,YAAY;AAC9C,MAAM,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAC9C,QAAQ,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;AAC/B,QAAQ,QAAQ,CAAC,MAAM;AACvB,UAAU,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACvC,UAAU,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,gBAAgB,EAAE;AAC1D,YAAY,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC;AAClD,YAAY,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAClD,YAAY,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAChC,WAAW,MAAM;AACjB,YAAY,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AAChC,WAAW;AACX,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,CAAC;AACT,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,KAAK,GAAG,YAAY;AACjC,MAAM,IAAI,GAAG,CAAC;AACd,MAAM,eAAe,EAAE,CAAC;AACxB,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,mBAAmB,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC;AAC3E,QAAQ,IAAI,EAAE,QAAQ,CAAC,WAAW;AAClC,QAAQ,MAAM,EAAE,SAAS;AACzB,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;AAC1B,OAAO,CAAC,CAAC;AACT,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,OAAO,GAAG,YAAY;AACnC,MAAM,IAAI,GAAG,CAAC;AACd,MAAM,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;AACtD,MAAM,IAAI,CAAC,eAAe,EAAE;AAC5B,QAAQ,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACpF,OAAO;AACP,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,mBAAmB,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,UAAU,CAAC;AAC3E,QAAQ,IAAI,EAAE,QAAQ,CAAC,WAAW;AAClC,QAAQ,MAAM,EAAE,WAAW;AAC3B,QAAQ,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;AAC1B,OAAO,CAAC,CAAC;AACT,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC;AACN,IAAI,MAAM,eAAe,GAAG,MAAM;AAClC,MAAM,IAAI,GAAG,CAAC;AACd,MAAM,MAAM,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;AAC5C,MAAM,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;AAChC,MAAM,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;AAC9B,MAAM,SAAS,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;AAC1C,MAAM,IAAI,CAAC,eAAe,EAAE;AAC5B,QAAQ,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC;AAChD,QAAQ,MAAM,SAAS,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC;AACvE,QAAQ,IAAI,SAAS,KAAK,KAAK,CAAC,EAAE;AAClC,UAAU,IAAI,OAAO,KAAK,CAAC,gBAAgB,KAAK,WAAW,IAAI,KAAK,CAAC,gBAAgB,EAAE;AACvF,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACxE,cAAc,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC;AAC/B,cAAc,GAAG,CAAC,SAAS,GAAG,oBAAoB,CAAC;AACnD,aAAa;AACb,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACxE,cAAc,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC;AAC9B,cAAc,GAAG,CAAC,SAAS,GAAG,oBAAoB,CAAC;AACnD,aAAa;AACb,WAAW;AACX,SAAS;AACT,OAAO;AACP,MAAM,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AACpC,KAAK,CAAC;AACN,IAAI,MAAM,aAAa,GAAG,MAAM;AAChC,MAAM,IAAI,GAAG,CAAC;AACd,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,UAAU,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;AAC1D,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,iBAAiB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK;AACjD,QAAQ,IAAI,KAAK,CAAC,qBAAqB,EAAE;AACzC,UAAU,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACnD,UAAU,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,cAAc,IAAI,CAAC,CAAC,gCAAgC,CAAC,CAAC;AACtF,UAAU,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;AACtC,UAAU,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;AAC7B,UAAU,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1C,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC;AACvB,UAAU,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1C,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,kBAAkB,IAAI,KAAK,CAAC,aAAa,EAAE;AAC7D,UAAU,IAAI,KAAK,CAAC,aAAa,EAAE;AACnC,YAAY,aAAa,CAAC,MAAM,CAAC,CAAC;AAClC,WAAW,MAAM,IAAI,KAAK,CAAC,kBAAkB,EAAE;AAC/C,YAAY,KAAK,CAAC,MAAM,CAAC,CAAC;AAC1B,WAAW;AACX,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnE,QAAQ,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE;AACzC,UAAU,IAAI,EAAE,SAAS;AACzB,UAAU,KAAK,EAAE,MAAM;AACvB,UAAU,MAAM,EAAE,KAAK;AACvB,SAAS,CAAC,CAAC;AACX,OAAO,CAAC,CAAC;AACT,KAAK,CAAC;AACN,IAAI,MAAM,KAAK,GAAG,CAAC,KAAK,KAAK;AAC7B,MAAM,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAChC,KAAK,CAAC;AACN,IAAI,MAAM,aAAa,GAAG,CAAC,KAAK,KAAK;AACrC,MAAM,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAClC,KAAK,CAAC;AACN,IAAI,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,kBAAkB,EAAE,KAAK,KAAK;AAC1D,MAAM,iBAAiB,CAAC,KAAK,GAAG,IAAI,CAAC;AACrC,MAAM,IAAI,MAAM,CAAC;AACjB,MAAM,IAAI,MAAM,EAAE;AAClB,QAAQ,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAClD,QAAQ,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAC1C,OAAO;AACP,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,eAAe,CAAC;AACtB,QAAQ,KAAK;AACb,QAAQ,UAAU,EAAE,KAAK,CAAC,UAAU;AACpC,QAAQ,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC;AACnC,QAAQ,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3D,QAAQ,KAAK,EAAE,CAAC,CAAC,oCAAoC,CAAC;AACtD,QAAQ,aAAa,EAAE,CAAC,aAAa,KAAK;AAC1C,UAAU,IAAI,kBAAkB,EAAE;AAClC,YAAY,WAAW,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK;AACpD,cAAc,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM;AAC1B,cAAc,IAAI,MAAM,EAAE;AAC1B,gBAAgB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAClD,eAAe;AACf,cAAc,IAAI,MAAM,EAAE;AAC1B,gBAAgB,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC;AAChD,eAAe;AACf,aAAa,CAAC,CAAC;AACf,WAAW;AACX,SAAS;AACT,QAAQ,aAAa,EAAE,CAAC,aAAa,KAAK;AAC1C,UAAU,IAAI,MAAM,EAAE;AACtB,YAAY,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC;AAC5C,WAAW;AACX,SAAS;AACT,OAAO,CAAC,CAAC;AACT,MAAM,IAAI,CAAC,MAAM,EAAE;AACnB,QAAQ,iBAAiB,CAAC,KAAK,GAAG,KAAK,CAAC;AACxC,OAAO;AACP,KAAK,CAAC;AACN,IAAI,MAAM,UAAU,GAAG,CAAC,MAAM,KAAK;AACnC,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,oBAAoB,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,oBAAoB,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;AAChM,MAAM,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;AAClD,KAAK,CAAC;AACN,IAAI,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK;AACvC,MAAM,IAAI,iBAAiB,CAAC,KAAK,EAAE;AACnC,QAAQ,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;AACxB,OAAO;AACP,KAAK,CAAC;AACN,IAAI,OAAO,MAAM;AACjB,MAAM,IAAI,SAAS,CAAC,KAAK,EAAE;AAC3B,QAAQ,MAAM,KAAK,GAAG,EAAE,CAAC;AACzB,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;AAC7B,UAAU,IAAI,EAAE,KAAK,CAAC,IAAI;AAC1B,UAAU,IAAI,EAAE,KAAK,CAAC,IAAI;AAC1B,SAAS,CAAC,CAAC,CAAC;AACZ,QAAQ,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AAChD,QAAQ,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;AAC1C,UAAU,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE;AAClC,YAAY,GAAG,EAAE,UAAU;AAC3B,YAAY,YAAY,EAAE,mBAAmB;AAC7C,YAAY,GAAG,KAAK,CAAC,OAAO;AAC5B,WAAW,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/H,SAAS,MAAM;AACf,UAAU,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;AACjD,SAAS;AACT,QAAQ,MAAM,KAAK,GAAG;AACtB,UAAU,CAAC,CAAC,KAAK,EAAE;AACnB,YAAY,GAAG,EAAE,MAAM;AACvB,YAAY,IAAI,EAAE,KAAK,CAAC,IAAI;AAC5B,YAAY,QAAQ,EAAE,iBAAiB,CAAC,KAAK;AAC7C,YAAY,IAAI,EAAE,KAAK,CAAC,IAAI;AAC5B,YAAY,KAAK,EAAE,KAAK,CAAC,KAAK;AAC9B,YAAY,KAAK,EAAE,KAAK,CAAC,KAAK;AAC9B,YAAY,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE;AACvE,YAAY,KAAK,EAAE,IAAI;AACvB,YAAY,OAAO,EAAE,aAAa;AAClC,WAAW,EAAE,MAAM,KAAK,CAAC;AACzB,SAAS,CAAC;AACV,QAAQ,OAAO,CAAC,CAAC,KAAK,EAAE;AACxB,UAAU,GAAG,EAAE,OAAO;AACtB,UAAU,KAAK,EAAE,CAAC,SAAS,EAAE,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;AAC/E,UAAU,KAAK,EAAE,SAAS;AAC1B,SAAS,EAAE,KAAK,CAAC,CAAC;AAClB,OAAO,MAAM;AACb,QAAQ,OAAO,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC1C,OAAO;AACP,KAAK,CAAC;AACN,GAAG;AACH,CAAC,CAAC;;;;"}