{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/controls/vc-overview-map/index.ts"],"sourcesContent":["import type { VNode, WatchStopHandle, CSSProperties, PropType } from 'vue'\nimport { useCommon, useLocale } from '@vue-cesium/composables'\nimport usePosition from '@vue-cesium/composables/private/use-position'\nimport { VcBtn, VcBtnRef, VcTooltip, VcTooltipRef } from '@vue-cesium/components/ui'\nimport { $ } from '@vue-cesium/utils/private/vm'\nimport type { VcBtnTooltipProps, VcColor, VcComponentInternalInstance, VcComponentPublicInstance, VcReadyObject } from '@vue-cesium/utils/types'\nimport { computed, createCommentVNode, defineComponent, getCurrentInstance, h, onUnmounted, reactive, ref } from 'vue'\nimport VcViewer, { VcViewerProps, VcViewerRef } from '@vue-cesium/components/viewer'\nimport { hSlot } from '@vue-cesium/utils/private/render'\nimport { commonEmits } from '@vue-cesium/utils/emits'\nimport { makeColor } from '@vue-cesium/utils/cesium-helpers'\n\nexport const overviewProps = {\n  position: {\n    type: String as PropType<'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'>,\n    default: 'bottom-right',\n    validator: (v: string) => ['top-right', 'top-left', 'bottom-right', 'bottom-left'].includes(v)\n  },\n  offset: {\n    type: Array,\n    validator: (v: Array<string>) => v.length === 2\n  },\n  width: {\n    type: String,\n    default: '150px'\n  },\n  height: {\n    type: String,\n    default: '150px'\n  },\n  border: {\n    type: String,\n    default: 'solid 4px rgb(255, 255, 255)'\n  },\n  borderRadius: {\n    type: String\n  },\n  toggleOpts: {\n    type: Object as PropType<VcBtnTooltipProps>\n  },\n  viewerOpts: {\n    type: Object as PropType<VcViewerProps>\n  },\n  centerRectColor: {\n    type: [Object, Array, String] as PropType<VcColor>,\n    default: '#ff000080'\n  },\n  widthFactor: {\n    type: Number,\n    default: 2\n  },\n  heightFactor: {\n    type: Number,\n    default: 2\n  },\n  modelValue: {\n    type: Boolean,\n    default: true\n  }\n}\nexport default defineComponent({\n  name: 'VcOverviewMap',\n  props: overviewProps,\n  emits: {\n    ...commonEmits,\n    'update:modelValue': (value: boolean) => true\n  },\n  setup(props, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcOverviewMap'\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 toggleBtnRef = ref<VcBtnRef>(null)\n    const rootStyle = reactive<CSSProperties>({})\n    const tooltipRef = ref<VcTooltipRef>(null)\n    const viewerRef = ref<VcViewerRef>(null)\n    const positionState = usePosition(props, $services)\n    const showing = ref(props.modelValue)\n    let unwatchFns: Array<WatchStopHandle> = []\n    let overviewViewer: Cesium.Viewer\n    let centerRect: Cesium.ViewportQuad\n\n    // computed\n    const toggleOpts = computed(() => {\n      return Object.assign(\n        {},\n        {\n          color: '#fff',\n          background: '#3f4854',\n          icon: 'vc-icons-overview-toggle',\n          size: '15px',\n          tooltip: {\n            delay: 500,\n            anchor: 'bottom middle',\n            offset: [0, 20],\n            tip: void 0\n          } as any\n        },\n        props.toggleOpts\n      )\n    })\n\n    const viewerOpts = computed(() => {\n      return Object.assign(\n        {},\n        {\n          removeCesiumScript: false,\n          showCredit: false,\n          sceneMode: 2,\n          containerId: 'vc-overview-map'\n        },\n        props.viewerOpts\n      )\n    })\n    // watch\n\n    // methods\n    instance.createCesiumObject = async () => {\n      const { viewer } = $services\n      const viewerElement = (viewer as any)._element\n      viewerElement.appendChild($(rootRef))\n      return [$(rootRef), $(viewerRef)]\n    }\n\n    instance.mount = async () => {\n      updateRootStyle()\n      const { viewer } = $services\n      viewer.clock.onTick.addEventListener(onClockTick)\n      return true\n    }\n\n    instance.unmount = async () => {\n      const { viewer } = $services\n      const viewerElement = (viewer as any)._element\n      viewer.clock.onTick.removeEventListener(onClockTick)\n      viewerElement.contains($(rootRef)) && viewerElement.removeChild($(rootRef))\n      return true\n    }\n\n    const onClockTick = () => {\n      if (overviewViewer) {\n        const { viewer: parentViewer } = $services\n        const parentCameraRectangle = parentViewer.camera.computeViewRectangle()\n        const { defined } = Cesium\n        if (!defined(parentCameraRectangle)) {\n          return\n        }\n        const rectangle = parentCameraRectangle.expand(props.widthFactor, props.heightFactor)\n\n        overviewViewer.camera.flyTo({\n          destination: rectangle.clone(),\n          // destination: parentViewer.camera.position,\n          orientation: {\n            heading: parentViewer.camera.heading,\n            pitch: parentViewer.camera.pitch,\n            roll: parentViewer.camera.roll\n          },\n          duration: 0.0\n        })\n        const { Cartesian3, SceneTransforms } = Cesium\n        const wnPosition = Cartesian3.fromRadians(parentCameraRectangle.west, parentCameraRectangle.north)\n        const enPosition = Cartesian3.fromRadians(parentCameraRectangle.east, parentCameraRectangle.north)\n        const wsPosition = Cartesian3.fromRadians(parentCameraRectangle.west, parentCameraRectangle.south)\n        const esPosition = Cartesian3.fromRadians(parentCameraRectangle.east, parentCameraRectangle.south)\n        const scene = overviewViewer.scene\n        const wnWindowPosition = SceneTransforms.wgs84ToWindowCoordinates(scene, wnPosition)\n        const enWindowPosition = SceneTransforms.wgs84ToWindowCoordinates(scene, enPosition)\n        const wsWindowPosition = SceneTransforms.wgs84ToWindowCoordinates(scene, wsPosition)\n        const esWindowPosition = SceneTransforms.wgs84ToWindowCoordinates(scene, esPosition)\n\n        if (!defined(wnWindowPosition) || !defined(enWindowPosition) || !defined(wsWindowPosition) || !defined(esWindowPosition)) {\n          return\n        }\n\n        const width = enWindowPosition.x - wnWindowPosition.x\n        const height = wsWindowPosition.y - wnWindowPosition.y\n        const x = (wnWindowPosition.x + enWindowPosition.x) / 2 - width / 2\n        const y = (wnWindowPosition.y + wsWindowPosition.y) / 2 - height / 2\n\n        if (width <= 0 || height <= 0) {\n          return\n        }\n        const boundingRectangle = new Cesium.BoundingRectangle(x, y, width, height)\n        centerRect.rectangle = boundingRectangle\n        centerRect.material.uniforms.color = makeColor(props.centerRectColor)\n        centerRect.show = true\n      }\n    }\n\n    const onViewerReady = (readyObj: VcReadyObject) => {\n      const { viewer } = readyObj\n      overviewViewer = viewer\n      const control = viewer.scene.screenSpaceCameraController\n      control.enableRotate = false\n      control.enableTranslate = false\n      control.enableZoom = false\n      control.enableTilt = false\n      control.enableLook = false\n\n      overviewViewer.scene.highDynamicRange = false\n      overviewViewer.scene.globe.enableLighting = false\n      overviewViewer.scene.globe.showWaterEffect = false\n      overviewViewer.scene.globe.depthTestAgainstTerrain = false\n      overviewViewer.scene.skyAtmosphere.show = false\n      overviewViewer.scene.fog.enabled = false\n      overviewViewer.scene.skyBox.show = false\n      overviewViewer.scene.sun.show = false\n      overviewViewer.scene.moon.show = false\n      overviewViewer.scene.highDynamicRange = false\n      overviewViewer.scene.globe.showGroundAtmosphere = false\n\n      centerRect = new Cesium.ViewportQuad(new Cesium.BoundingRectangle(150, 100, 100, 50))\n      centerRect.show = false\n      overviewViewer.scene.primitives.add(centerRect)\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      rootStyle['pointer-events'] = 'none'\n\n      css.borderRadius = props.borderRadius\n      css.border = props.border\n\n      if (showing.value) {\n        css.width = props.width\n        css.height = props.height\n      } else {\n        const reg = /(\\d+)/g\n        const regResult = reg.exec(props.border)\n        const boder = regResult?.length ? parseFloat(regResult[0]) : 0\n        const toggleBtnRefStyle = getComputedStyle($(toggleBtnRef)?.$el)\n        css.width = `${parseFloat(toggleBtnRefStyle.width) + parseFloat(toggleBtnRefStyle.padding) + boder}px`\n        css.height = `${parseFloat(toggleBtnRefStyle.height) + parseFloat(toggleBtnRefStyle.padding) + boder}px`\n      }\n      Object.assign(rootStyle, css)\n    }\n\n    // const onTooltipBeforeShow = () => {\n\n    // }\n\n    const onToggle = () => {\n      if (showing.value) {\n        minimize()\n      } else {\n        restore()\n      }\n      showing.value = !showing.value\n      ctx.emit('update:modelValue', showing.value)\n    }\n\n    const minimize = () => {\n      const reg = /(\\d+)/g\n      const regResult = reg.exec(props.border)\n      const boder = regResult?.length ? parseFloat(regResult[0]) : 0\n      const toggleBtnRefStyle = getComputedStyle($(toggleBtnRef)?.$el)\n      rootStyle.width = `${parseFloat(toggleBtnRefStyle.width) + parseFloat(toggleBtnRefStyle.padding) + boder}px`\n      rootStyle.height = `${parseFloat(toggleBtnRefStyle.height) + parseFloat(toggleBtnRefStyle.padding) + boder}px`\n    }\n\n    const restore = () => {\n      rootStyle.width = props.width\n      rootStyle.height = props.height\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    return () => {\n      const children: Array<VNode> = []\n      children.push(\n        h(\n          VcBtn,\n          {\n            ref: toggleBtnRef,\n            class: 'toggle toggle-' + props.position + (!showing.value ? ' minimized ' : ''),\n            flat: true,\n            dense: true,\n            icon: toggleOpts.value.icon,\n            size: toggleOpts.value.size,\n            style: { color: toggleOpts.value.color, background: toggleOpts.value.background, 'pointer-events': 'auto' },\n            onClick: onToggle\n          },\n          () =>\n            toggleOpts.value.tooltip\n              ? h(\n                  VcTooltip,\n                  {\n                    ref: tooltipRef,\n                    ...toggleOpts.value.tooltip\n                    // onBeforeShow: onTooltipBeforeShow\n                  },\n                  () => h('strong', {}, toggleOpts.value.tooltip.tip || t(`vc.overview.${!showing.value ? 'show' : 'hidden'}`))\n                )\n              : createCommentVNode('v-if')\n        )\n      )\n      children.push(\n        h(\n          VcViewer,\n          {\n            ref: viewerRef,\n            ...viewerOpts.value,\n            onReady: onViewerReady\n          },\n          () => hSlot(ctx.slots.default)\n        )\n      )\n      return h(\n        'div',\n        {\n          ref: rootRef,\n          class: 'vc-overview-map ' + positionState.classes.value,\n          style: rootStyle\n        },\n        children\n      )\n    }\n  }\n})\n\nexport type VcOverviewMapProps = {\n  /**\n   * Specify the position of the VcOverviewMap.\n   * Default value: bottom-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 VcOverviewMap horizontally and vertically in pixels.\n   * Default value: [0, 0]\n   */\n  offset?: [number, number]\n  /**\n   * Specify the width of the overviewmap component.\n   * Default value: 150px\n   */\n  width?: string\n  /**\n   * Specify the height of the overviewmap component.\n   * Default value: 150px\n   */\n  height?: string\n  /**\n   * Specify the border of the overviewmap component.\n   * Default value: solid 4px rgb(255, 255, 255)\n   */\n  border?: string\n  /**\n   * Specify the border radius of the overviewmap component.\n   */\n  borderRadius?: string\n  /**\n   * Specify the toggle button options of the overviewmap component.\n   */\n  toggleOpts?: VcBtnTooltipProps\n  /**\n   * Specify the vc-viewer component options in the overviewmap component.\n   */\n  viewerOpts?: VcViewerProps\n  /**\n   * Specify the center rectangle color.\n   * Default value: #ff000080\n   */\n  centerRectColor?: VcColor\n  /**\n   * Specify the width factor of center rectangle.\n   * Default value: 2\n   */\n  widthFactor?: number\n  /**\n   * Specify the height factor of center rectangle.\n   * Default value: 2\n   */\n  heightFactor?: number\n  /**\n   * Model of the component determining if VcOverviewMap should be expanded or not.\n   * Default value: true\n   */\n  modelValue?: boolean\n  /**\n   * Triggers before the VcOverviewMap is loaded.\n   * @param instance\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcOverviewMap 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 VcOverviewMap is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Emitted when showing/hidden state changes; Is also used by v-model.\n   * @param value New state (showing/hidden)\n   */\n  'onUpdate:modelValue'?: (value: boolean) => void\n}\n\nexport interface VcOverviewMapSlots {\n  /**\n   * Default slot content of the component\n   */\n  default: () => VNode[]\n}\n\nexport type VcOverviewMapRef = VcComponentPublicInstance<VcOverviewMapProps>\n"],"names":["VcViewer"],"mappings":";;;;;;;;;;;;;AAYO,MAAM,aAAgB,GAAA;AAAA,EAC3B,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,cAAA;AAAA,IACT,SAAA,EAAW,CAAC,CAAA,KAAc,CAAC,WAAA,EAAa,YAAY,cAAgB,EAAA,aAAa,CAAE,CAAA,QAAA,CAAS,CAAC,CAAA;AAAA,GAC/F;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,KAAA;AAAA,IACN,SAAW,EAAA,CAAC,CAAqB,KAAA,CAAA,CAAE,MAAW,KAAA,CAAA;AAAA,GAChD;AAAA,EACA,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,OAAA;AAAA,GACX;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,OAAA;AAAA,GACX;AAAA,EACA,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,8BAAA;AAAA,GACX;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,IAAM,EAAA,MAAA;AAAA,GACR;AAAA,EACA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,MAAA;AAAA,GACR;AAAA,EACA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,MAAA;AAAA,GACR;AAAA,EACA,eAAiB,EAAA;AAAA,IACf,IAAM,EAAA,CAAC,MAAQ,EAAA,KAAA,EAAO,MAAM,CAAA;AAAA,IAC5B,OAAS,EAAA,WAAA;AAAA,GACX;AAAA,EACA,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,CAAA;AAAA,GACX;AAAA,EACA,YAAc,EAAA;AAAA,IACZ,IAAM,EAAA,MAAA;AAAA,IACN,OAAS,EAAA,CAAA;AAAA,GACX;AAAA,EACA,UAAY,EAAA;AAAA,IACV,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,IAAA;AAAA,GACX;AACF,EAAA;AACA,kBAAe,eAAgB,CAAA;AAAA,EAC7B,IAAM,EAAA,eAAA;AAAA,EACN,KAAO,EAAA,aAAA;AAAA,EACP,KAAO,EAAA;AAAA,IACL,GAAG,WAAA;AAAA,IACH,mBAAA,EAAqB,CAAC,KAAmB,KAAA,IAAA;AAAA,GAC3C;AAAA,EACA,KAAA,CAAM,OAAO,GAAK,EAAA;AAEhB,IAAA,MAAM,WAAW,kBAAmB,EAAA,CAAA;AACpC,IAAA,QAAA,CAAS,WAAc,GAAA,eAAA,CAAA;AACvB,IAAA,QAAA,CAAS,eAAe,EAAC,CAAA;AACzB,IAAA,MAAM,WAAc,GAAA,SAAA,CAAU,KAAO,EAAA,GAAA,EAAK,QAAQ,CAAA,CAAA;AAClD,IAAA,IAAI,gBAAgB,KAAQ,CAAA,EAAA;AAC1B,MAAA,OAAA;AAAA,KACF;AACA,IAAM,MAAA,EAAE,CAAE,EAAA,GAAI,SAAU,EAAA,CAAA;AACxB,IAAM,MAAA,EAAE,WAAc,GAAA,WAAA,CAAA;AACtB,IAAM,MAAA,OAAA,GAAU,IAAiB,IAAI,CAAA,CAAA;AACrC,IAAM,MAAA,YAAA,GAAe,IAAc,IAAI,CAAA,CAAA;AACvC,IAAM,MAAA,SAAA,GAAY,QAAwB,CAAA,EAAE,CAAA,CAAA;AAC5C,IAAM,MAAA,UAAA,GAAa,IAAkB,IAAI,CAAA,CAAA;AACzC,IAAM,MAAA,SAAA,GAAY,IAAiB,IAAI,CAAA,CAAA;AACvC,IAAM,MAAA,aAAA,GAAgB,WAAY,CAAA,KAAA,EAAO,SAAS,CAAA,CAAA;AAClD,IAAM,MAAA,OAAA,GAAU,GAAI,CAAA,KAAA,CAAM,UAAU,CAAA,CAAA;AACpC,IAAA,IAAI,aAAqC,EAAC,CAAA;AAC1C,IAAI,IAAA,cAAA,CAAA;AACJ,IAAI,IAAA,UAAA,CAAA;AAGJ,IAAM,MAAA,UAAA,GAAa,SAAS,MAAM;AAChC,MAAA,OAAO,MAAO,CAAA,MAAA;AAAA,QACZ,EAAC;AAAA,QACD;AAAA,UACE,KAAO,EAAA,MAAA;AAAA,UACP,UAAY,EAAA,SAAA;AAAA,UACZ,IAAM,EAAA,0BAAA;AAAA,UACN,IAAM,EAAA,MAAA;AAAA,UACN,OAAS,EAAA;AAAA,YACP,KAAO,EAAA,GAAA;AAAA,YACP,MAAQ,EAAA,eAAA;AAAA,YACR,MAAA,EAAQ,CAAC,CAAA,EAAG,EAAE,CAAA;AAAA,YACd,GAAK,EAAA,KAAA,CAAA;AAAA,WACP;AAAA,SACF;AAAA,QACA,KAAM,CAAA,UAAA;AAAA,OACR,CAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAM,MAAA,UAAA,GAAa,SAAS,MAAM;AAChC,MAAA,OAAO,MAAO,CAAA,MAAA;AAAA,QACZ,EAAC;AAAA,QACD;AAAA,UACE,kBAAoB,EAAA,KAAA;AAAA,UACpB,UAAY,EAAA,KAAA;AAAA,UACZ,SAAW,EAAA,CAAA;AAAA,UACX,WAAa,EAAA,iBAAA;AAAA,SACf;AAAA,QACA,KAAM,CAAA,UAAA;AAAA,OACR,CAAA;AAAA,KACD,CAAA,CAAA;AAID,IAAA,QAAA,CAAS,qBAAqB,YAAY;AACxC,MAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,MAAA,MAAM,gBAAiB,MAAe,CAAA,QAAA,CAAA;AACtC,MAAc,aAAA,CAAA,WAAA,CAAY,CAAE,CAAA,OAAO,CAAC,CAAA,CAAA;AACpC,MAAA,OAAO,CAAC,CAAE,CAAA,OAAO,CAAG,EAAA,CAAA,CAAE,SAAS,CAAC,CAAA,CAAA;AAAA,KAClC,CAAA;AAEA,IAAA,QAAA,CAAS,QAAQ,YAAY;AAC3B,MAAgB,eAAA,EAAA,CAAA;AAChB,MAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,MAAO,MAAA,CAAA,KAAA,CAAM,MAAO,CAAA,gBAAA,CAAiB,WAAW,CAAA,CAAA;AAChD,MAAO,OAAA,IAAA,CAAA;AAAA,KACT,CAAA;AAEA,IAAA,QAAA,CAAS,UAAU,YAAY;AAC7B,MAAM,MAAA,EAAE,QAAW,GAAA,SAAA,CAAA;AACnB,MAAA,MAAM,gBAAiB,MAAe,CAAA,QAAA,CAAA;AACtC,MAAO,MAAA,CAAA,KAAA,CAAM,MAAO,CAAA,mBAAA,CAAoB,WAAW,CAAA,CAAA;AACnD,MAAc,aAAA,CAAA,QAAA,CAAS,EAAE,OAAO,CAAC,KAAK,aAAc,CAAA,WAAA,CAAY,CAAE,CAAA,OAAO,CAAC,CAAA,CAAA;AAC1E,MAAO,OAAA,IAAA,CAAA;AAAA,KACT,CAAA;AAEA,IAAA,MAAM,cAAc,MAAM;AACxB,MAAA,IAAI,cAAgB,EAAA;AAClB,QAAM,MAAA,EAAE,MAAQ,EAAA,YAAA,EAAiB,GAAA,SAAA,CAAA;AACjC,QAAM,MAAA,qBAAA,GAAwB,YAAa,CAAA,MAAA,CAAO,oBAAqB,EAAA,CAAA;AACvE,QAAM,MAAA,EAAE,SAAY,GAAA,MAAA,CAAA;AACpB,QAAI,IAAA,CAAC,OAAQ,CAAA,qBAAqB,CAAG,EAAA;AACnC,UAAA,OAAA;AAAA,SACF;AACA,QAAA,MAAM,YAAY,qBAAsB,CAAA,MAAA,CAAO,KAAM,CAAA,WAAA,EAAa,MAAM,YAAY,CAAA,CAAA;AAEpF,QAAA,cAAA,CAAe,OAAO,KAAM,CAAA;AAAA,UAC1B,WAAA,EAAa,UAAU,KAAM,EAAA;AAAA;AAAA,UAE7B,WAAa,EAAA;AAAA,YACX,OAAA,EAAS,aAAa,MAAO,CAAA,OAAA;AAAA,YAC7B,KAAA,EAAO,aAAa,MAAO,CAAA,KAAA;AAAA,YAC3B,IAAA,EAAM,aAAa,MAAO,CAAA,IAAA;AAAA,WAC5B;AAAA,UACA,QAAU,EAAA,CAAA;AAAA,SACX,CAAA,CAAA;AACD,QAAM,MAAA,EAAE,UAAY,EAAA,eAAA,EAAoB,GAAA,MAAA,CAAA;AACxC,QAAA,MAAM,aAAa,UAAW,CAAA,WAAA,CAAY,qBAAsB,CAAA,IAAA,EAAM,sBAAsB,KAAK,CAAA,CAAA;AACjG,QAAA,MAAM,aAAa,UAAW,CAAA,WAAA,CAAY,qBAAsB,CAAA,IAAA,EAAM,sBAAsB,KAAK,CAAA,CAAA;AACjG,QAAA,MAAM,aAAa,UAAW,CAAA,WAAA,CAAY,qBAAsB,CAAA,IAAA,EAAM,sBAAsB,KAAK,CAAA,CAAA;AACjG,QAAA,MAAM,aAAa,UAAW,CAAA,WAAA,CAAY,qBAAsB,CAAA,IAAA,EAAM,sBAAsB,KAAK,CAAA,CAAA;AACjG,QAAA,MAAM,QAAQ,cAAe,CAAA,KAAA,CAAA;AAC7B,QAAA,MAAM,gBAAmB,GAAA,eAAA,CAAgB,wBAAyB,CAAA,KAAA,EAAO,UAAU,CAAA,CAAA;AACnF,QAAA,MAAM,gBAAmB,GAAA,eAAA,CAAgB,wBAAyB,CAAA,KAAA,EAAO,UAAU,CAAA,CAAA;AACnF,QAAA,MAAM,gBAAmB,GAAA,eAAA,CAAgB,wBAAyB,CAAA,KAAA,EAAO,UAAU,CAAA,CAAA;AACnF,QAAA,MAAM,gBAAmB,GAAA,eAAA,CAAgB,wBAAyB,CAAA,KAAA,EAAO,UAAU,CAAA,CAAA;AAEnF,QAAA,IAAI,CAAC,OAAA,CAAQ,gBAAgB,CAAA,IAAK,CAAC,OAAQ,CAAA,gBAAgB,CAAK,IAAA,CAAC,QAAQ,gBAAgB,CAAA,IAAK,CAAC,OAAA,CAAQ,gBAAgB,CAAG,EAAA;AACxH,UAAA,OAAA;AAAA,SACF;AAEA,QAAM,MAAA,KAAA,GAAQ,gBAAiB,CAAA,CAAA,GAAI,gBAAiB,CAAA,CAAA,CAAA;AACpD,QAAM,MAAA,MAAA,GAAS,gBAAiB,CAAA,CAAA,GAAI,gBAAiB,CAAA,CAAA,CAAA;AACrD,QAAA,MAAM,KAAK,gBAAiB,CAAA,CAAA,GAAI,gBAAiB,CAAA,CAAA,IAAK,IAAI,KAAQ,GAAA,CAAA,CAAA;AAClE,QAAA,MAAM,KAAK,gBAAiB,CAAA,CAAA,GAAI,gBAAiB,CAAA,CAAA,IAAK,IAAI,MAAS,GAAA,CAAA,CAAA;AAEnE,QAAI,IAAA,KAAA,IAAS,CAAK,IAAA,MAAA,IAAU,CAAG,EAAA;AAC7B,UAAA,OAAA;AAAA,SACF;AACA,QAAA,MAAM,oBAAoB,IAAI,MAAA,CAAO,kBAAkB,CAAG,EAAA,CAAA,EAAG,OAAO,MAAM,CAAA,CAAA;AAC1E,QAAA,UAAA,CAAW,SAAY,GAAA,iBAAA,CAAA;AACvB,QAAA,UAAA,CAAW,QAAS,CAAA,QAAA,CAAS,KAAQ,GAAA,SAAA,CAAU,MAAM,eAAe,CAAA,CAAA;AACpE,QAAA,UAAA,CAAW,IAAO,GAAA,IAAA,CAAA;AAAA,OACpB;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,aAAA,GAAgB,CAAC,QAA4B,KAAA;AACjD,MAAM,MAAA,EAAE,QAAW,GAAA,QAAA,CAAA;AACnB,MAAiB,cAAA,GAAA,MAAA,CAAA;AACjB,MAAM,MAAA,OAAA,GAAU,OAAO,KAAM,CAAA,2BAAA,CAAA;AAC7B,MAAA,OAAA,CAAQ,YAAe,GAAA,KAAA,CAAA;AACvB,MAAA,OAAA,CAAQ,eAAkB,GAAA,KAAA,CAAA;AAC1B,MAAA,OAAA,CAAQ,UAAa,GAAA,KAAA,CAAA;AACrB,MAAA,OAAA,CAAQ,UAAa,GAAA,KAAA,CAAA;AACrB,MAAA,OAAA,CAAQ,UAAa,GAAA,KAAA,CAAA;AAErB,MAAA,cAAA,CAAe,MAAM,gBAAmB,GAAA,KAAA,CAAA;AACxC,MAAe,cAAA,CAAA,KAAA,CAAM,MAAM,cAAiB,GAAA,KAAA,CAAA;AAC5C,MAAe,cAAA,CAAA,KAAA,CAAM,MAAM,eAAkB,GAAA,KAAA,CAAA;AAC7C,MAAe,cAAA,CAAA,KAAA,CAAM,MAAM,uBAA0B,GAAA,KAAA,CAAA;AACrD,MAAe,cAAA,CAAA,KAAA,CAAM,cAAc,IAAO,GAAA,KAAA,CAAA;AAC1C,MAAe,cAAA,CAAA,KAAA,CAAM,IAAI,OAAU,GAAA,KAAA,CAAA;AACnC,MAAe,cAAA,CAAA,KAAA,CAAM,OAAO,IAAO,GAAA,KAAA,CAAA;AACnC,MAAe,cAAA,CAAA,KAAA,CAAM,IAAI,IAAO,GAAA,KAAA,CAAA;AAChC,MAAe,cAAA,CAAA,KAAA,CAAM,KAAK,IAAO,GAAA,KAAA,CAAA;AACjC,MAAA,cAAA,CAAe,MAAM,gBAAmB,GAAA,KAAA,CAAA;AACxC,MAAe,cAAA,CAAA,KAAA,CAAM,MAAM,oBAAuB,GAAA,KAAA,CAAA;AAElD,MAAa,UAAA,GAAA,IAAI,MAAO,CAAA,YAAA,CAAa,IAAI,MAAA,CAAO,kBAAkB,GAAK,EAAA,GAAA,EAAK,GAAK,EAAA,EAAE,CAAC,CAAA,CAAA;AACpF,MAAA,UAAA,CAAW,IAAO,GAAA,KAAA,CAAA;AAClB,MAAe,cAAA,CAAA,KAAA,CAAM,UAAW,CAAA,GAAA,CAAI,UAAU,CAAA,CAAA;AAAA,KAChD,CAAA;AAEA,IAAA,MAAM,kBAAkB,MAAM;AA/NlC,MAAA,IAAA,EAAA,CAAA;AAgOM,MAAM,MAAA,GAAA,GAAqB,cAAc,KAAM,CAAA,KAAA,CAAA;AAC/C,MAAA,SAAA,CAAU,OAAO,GAAI,CAAA,IAAA,CAAA;AACrB,MAAA,SAAA,CAAU,MAAM,GAAI,CAAA,GAAA,CAAA;AACpB,MAAA,SAAA,CAAU,YAAY,GAAI,CAAA,SAAA,CAAA;AAC1B,MAAA,SAAA,CAAU,gBAAgB,CAAI,GAAA,MAAA,CAAA;AAE9B,MAAA,GAAA,CAAI,eAAe,KAAM,CAAA,YAAA,CAAA;AACzB,MAAA,GAAA,CAAI,SAAS,KAAM,CAAA,MAAA,CAAA;AAEnB,MAAA,IAAI,QAAQ,KAAO,EAAA;AACjB,QAAA,GAAA,CAAI,QAAQ,KAAM,CAAA,KAAA,CAAA;AAClB,QAAA,GAAA,CAAI,SAAS,KAAM,CAAA,MAAA,CAAA;AAAA,OACd,MAAA;AACL,QAAA,MAAM,GAAM,GAAA,QAAA,CAAA;AACZ,QAAA,MAAM,SAAY,GAAA,GAAA,CAAI,IAAK,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AACvC,QAAA,MAAM,SAAQ,SAAW,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAA,MAAA,IAAS,WAAW,SAAU,CAAA,CAAC,CAAC,CAAI,GAAA,CAAA,CAAA;AAC7D,QAAA,MAAM,oBAAoB,gBAAiB,CAAA,CAAA,EAAA,GAAA,CAAA,CAAE,YAAY,CAAA,KAAd,mBAAiB,GAAG,CAAA,CAAA;AAC/D,QAAI,GAAA,CAAA,KAAA,GAAQ,CAAG,EAAA,UAAA,CAAW,iBAAkB,CAAA,KAAK,IAAI,UAAW,CAAA,iBAAA,CAAkB,OAAO,CAAA,GAAI,KAAK,CAAA,EAAA,CAAA,CAAA;AAClG,QAAI,GAAA,CAAA,MAAA,GAAS,CAAG,EAAA,UAAA,CAAW,iBAAkB,CAAA,MAAM,IAAI,UAAW,CAAA,iBAAA,CAAkB,OAAO,CAAA,GAAI,KAAK,CAAA,EAAA,CAAA,CAAA;AAAA,OACtG;AACA,MAAO,MAAA,CAAA,MAAA,CAAO,WAAW,GAAG,CAAA,CAAA;AAAA,KAC9B,CAAA;AAMA,IAAA,MAAM,WAAW,MAAM;AACrB,MAAA,IAAI,QAAQ,KAAO,EAAA;AACjB,QAAS,QAAA,EAAA,CAAA;AAAA,OACJ,MAAA;AACL,QAAQ,OAAA,EAAA,CAAA;AAAA,OACV;AACA,MAAQ,OAAA,CAAA,KAAA,GAAQ,CAAC,OAAQ,CAAA,KAAA,CAAA;AACzB,MAAI,GAAA,CAAA,IAAA,CAAK,mBAAqB,EAAA,OAAA,CAAQ,KAAK,CAAA,CAAA;AAAA,KAC7C,CAAA;AAEA,IAAA,MAAM,WAAW,MAAM;AArQ3B,MAAA,IAAA,EAAA,CAAA;AAsQM,MAAA,MAAM,GAAM,GAAA,QAAA,CAAA;AACZ,MAAA,MAAM,SAAY,GAAA,GAAA,CAAI,IAAK,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AACvC,MAAA,MAAM,SAAQ,SAAW,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,SAAA,CAAA,MAAA,IAAS,WAAW,SAAU,CAAA,CAAC,CAAC,CAAI,GAAA,CAAA,CAAA;AAC7D,MAAA,MAAM,oBAAoB,gBAAiB,CAAA,CAAA,EAAA,GAAA,CAAA,CAAE,YAAY,CAAA,KAAd,mBAAiB,GAAG,CAAA,CAAA;AAC/D,MAAU,SAAA,CAAA,KAAA,GAAQ,CAAG,EAAA,UAAA,CAAW,iBAAkB,CAAA,KAAK,IAAI,UAAW,CAAA,iBAAA,CAAkB,OAAO,CAAA,GAAI,KAAK,CAAA,EAAA,CAAA,CAAA;AACxG,MAAU,SAAA,CAAA,MAAA,GAAS,CAAG,EAAA,UAAA,CAAW,iBAAkB,CAAA,MAAM,IAAI,UAAW,CAAA,iBAAA,CAAkB,OAAO,CAAA,GAAI,KAAK,CAAA,EAAA,CAAA,CAAA;AAAA,KAC5G,CAAA;AAEA,IAAA,MAAM,UAAU,MAAM;AACpB,MAAA,SAAA,CAAU,QAAQ,KAAM,CAAA,KAAA,CAAA;AACxB,MAAA,SAAA,CAAU,SAAS,KAAM,CAAA,MAAA,CAAA;AAAA,KAC3B,CAAA;AAGA,IAAA,WAAA,CAAY,MAAM;AAChB,MAAW,UAAA,CAAA,OAAA,CAAQ,CAAQ,IAAA,KAAA,IAAA,EAAM,CAAA,CAAA;AACjC,MAAA,UAAA,GAAa,EAAC,CAAA;AAAA,KACf,CAAA,CAAA;AAED,IAAA,OAAO,MAAM;AACX,MAAA,MAAM,WAAyB,EAAC,CAAA;AAChC,MAAS,QAAA,CAAA,IAAA;AAAA,QACP,CAAA;AAAA,UACE,KAAA;AAAA,UACA;AAAA,YACE,GAAK,EAAA,YAAA;AAAA,YACL,OAAO,gBAAmB,GAAA,KAAA,CAAM,YAAY,CAAC,OAAA,CAAQ,QAAQ,aAAgB,GAAA,EAAA,CAAA;AAAA,YAC7E,IAAM,EAAA,IAAA;AAAA,YACN,KAAO,EAAA,IAAA;AAAA,YACP,IAAA,EAAM,WAAW,KAAM,CAAA,IAAA;AAAA,YACvB,IAAA,EAAM,WAAW,KAAM,CAAA,IAAA;AAAA,YACvB,KAAA,EAAO,EAAE,KAAA,EAAO,UAAW,CAAA,KAAA,CAAM,KAAO,EAAA,UAAA,EAAY,UAAW,CAAA,KAAA,CAAM,UAAY,EAAA,gBAAA,EAAkB,MAAO,EAAA;AAAA,YAC1G,OAAS,EAAA,QAAA;AAAA,WACX;AAAA,UACA,MACE,UAAW,CAAA,KAAA,CAAM,OACb,GAAA,CAAA;AAAA,YACE,SAAA;AAAA,YACA;AAAA,cACE,GAAK,EAAA,UAAA;AAAA,cACL,GAAG,WAAW,KAAM,CAAA,OAAA;AAAA;AAAA,aAEtB;AAAA,YACA,MAAM,CAAE,CAAA,QAAA,EAAU,EAAC,EAAG,WAAW,KAAM,CAAA,OAAA,CAAQ,GAAO,IAAA,CAAA,CAAE,eAAe,CAAC,OAAA,CAAQ,QAAQ,MAAS,GAAA,QAAQ,EAAE,CAAC,CAAA;AAAA,WAC9G,GACA,mBAAmB,MAAM,CAAA;AAAA,SACjC;AAAA,OACF,CAAA;AACA,MAAS,QAAA,CAAA,IAAA;AAAA,QACP,CAAA;AAAA,UACEA,OAAA;AAAA,UACA;AAAA,YACE,GAAK,EAAA,SAAA;AAAA,YACL,GAAG,UAAW,CAAA,KAAA;AAAA,YACd,OAAS,EAAA,aAAA;AAAA,WACX;AAAA,UACA,MAAM,KAAA,CAAM,GAAI,CAAA,KAAA,CAAM,OAAO,CAAA;AAAA,SAC/B;AAAA,OACF,CAAA;AACA,MAAO,OAAA,CAAA;AAAA,QACL,KAAA;AAAA,QACA;AAAA,UACE,GAAK,EAAA,OAAA;AAAA,UACL,KAAA,EAAO,kBAAqB,GAAA,aAAA,CAAc,OAAQ,CAAA,KAAA;AAAA,UAClD,KAAO,EAAA,SAAA;AAAA,SACT;AAAA,QACA,QAAA;AAAA,OACF,CAAA;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAC,CAAA;;;;"}