{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/overlays/dynamic/index.ts"],"sourcesContent":["/*\n * @Author: zouyaoji@https://github.com/zouyaoji\n * @Date: 2021-11-24 11:38:18\n * @LastEditTime: 2022-08-12 14:31:14\n * @LastEditors: zouyaoji\n * @Description:\n * @FilePath: \\vue-cesium@next\\packages\\components\\overlays\\dynamic\\index.ts\n */\nimport { WatchStopHandle, PropType, toRaw, ComponentPublicInstance } from 'vue'\nimport { defineComponent, getCurrentInstance, createCommentVNode, onUnmounted, ref, watch } from 'vue'\nimport {\n  DynamicOverlayOpts,\n  SampledPosition,\n  TrackViewOpts,\n  VcComponentInternalInstance,\n  VcHeadingPitchRange,\n  VcReadyObject\n} from 'casc-cesium-utils/types'\nimport { useCommon } from 'casc-cesium-composables'\nimport { show } from 'casc-cesium-utils/cesium-props'\nimport { addCustomProperty, kebabCase } from 'casc-cesium-utils/util'\nimport DynamicOverlay from 'casc-cesium-shared/src/DynamicOverlay'\nimport {\n  getPolylineSegmentHeading,\n  getPolylineSegmentPitch,\n  makeCartesian3,\n  makeHeadingPitchRang,\n  makeJulianDate\n} from 'casc-cesium-utils/cesium-helpers'\nimport { cloneDeep, differenceBy, remove, find } from 'lodash-unified'\nimport { getInstanceListener } from 'casc-cesium-utils/private/vm'\nimport { commonEmits } from 'casc-cesium-utils/emits'\n\nexport const dynamicOverlayProps = {\n  ...show,\n  name: {\n    type: String,\n    default: '__vc__overlay__dynamic__'\n  },\n  startTime: {\n    type: [Object, String, Date] as PropType<Cesium.JulianDate | string | Date>\n  },\n  stopTime: {\n    type: [Object, String, Date] as PropType<Cesium.JulianDate | string | Date>\n  },\n  currentTime: {\n    type: [Object, String, Date] as PropType<Cesium.JulianDate | string | Date>\n  },\n  clockRange: {\n    type: Number as PropType<number | Cesium.ClockRange>,\n    default: 0\n  },\n  clockStep: {\n    type: Number as PropType<number | Cesium.ClockStep>,\n    default: 1\n  },\n  shouldAnimate: {\n    type: Boolean,\n    default: true\n  },\n  canAnimate: {\n    type: Boolean,\n    default: true\n  },\n  multiplier: {\n    type: Number,\n    default: 1.0\n  },\n  dynamicOverlays: {\n    type: Array as PropType<DynamicOverlayOpts[]>,\n    default: () => []\n  },\n  defaultInterval: {\n    type: Number,\n    default: 3\n  },\n  stopArrivedFlag: {\n    type: String as PropType<'time' | 'position' | 'both' | 'or'>,\n    default: 'time'\n  },\n  positionPrecision: {\n    type: Number,\n    default: 0.0000001\n  },\n  timePrecision: {\n    type: Number,\n    default: 0.01\n  }\n}\nconst emits = {\n  ...commonEmits,\n  'update:currentTime': (currentTime: Cesium.JulianDate) => true,\n  'update:shouldAnimate': (shouldAnimate: boolean) => true,\n  'update:canAnimate': (canAnimate: boolean) => true,\n  'update:clockRange': (clockRange: number | Cesium.ClockRange) => true,\n  'update:clockStep': (clockStep: number | Cesium.ClockStep) => true,\n  'update:multiplier': (multiplier: number) => true,\n  'update:startTime': (startTime: Cesium.JulianDate) => true,\n  'update:stopTime': (stopTime: Cesium.JulianDate) => true,\n  onStop: (clock: Cesium.Clock) => true,\n  stopArrived: (overlay: DynamicOverlay, position: SampledPosition, offset: Cesium.HeadingPitchRange, clock: Cesium.Clock) => true\n}\nexport default defineComponent({\n  name: 'VcOverlayDynamic',\n  props: dynamicOverlayProps,\n  emits: emits,\n  setup(props: VcOverlayDynamicProps, ctx) {\n    // state\n    const instance = getCurrentInstance() as VcComponentInternalInstance\n    instance.cesiumClass = 'VcOverlayDynamic'\n    instance.cesiumEvents = []\n    const commonState = useCommon(props, ctx, instance)\n    if (commonState === void 0) {\n      return\n    }\n    const { $services } = commonState\n    const overlays = ref<Array<DynamicOverlay>>([])\n    const restoreClockOpts = ref<any>({})\n    const { emit } = ctx\n    const trackingOverlay = ref<DynamicOverlay>(null)\n    const trackView = ref<TrackViewOpts>(null)\n    let lastOffset\n    let lastPosition\n    // watcch\n    let unwatchFns: Array<WatchStopHandle> = []\n    unwatchFns.push(\n      watch(\n        () => props.show,\n        val => {\n          const datasource = instance.cesiumObject as Cesium.CustomDataSource\n          datasource && (datasource.show = val)\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.name,\n        val => {\n          const datasource = instance.cesiumObject as Cesium.CustomDataSource\n          datasource && (datasource.name = val)\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.startTime,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer) && val) {\n            viewer.clock.startTime = makeJulianDate(val)\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.stopTime,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer) && val) {\n            viewer.clock.stopTime = makeJulianDate(val)\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.currentTime,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer) && val) {\n            viewer.clock.currentTime = makeJulianDate(val)\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.multiplier,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer)) {\n            viewer.clock.multiplier = val\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.clockStep,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer)) {\n            viewer.clock.clockStep = val\n          }\n        }\n      )\n    )\n    unwatchFns.push(\n      watch(\n        () => props.clockRange,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer)) {\n            viewer.clock.clockRange = val\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.canAnimate,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer)) {\n            viewer.clock.canAnimate = val\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => props.shouldAnimate,\n        val => {\n          const { viewer } = $services\n          if (Cesium.defined(viewer)) {\n            viewer.clock.shouldAnimate = val\n          }\n        }\n      )\n    )\n\n    unwatchFns.push(\n      watch(\n        () => cloneDeep(props.dynamicOverlays),\n        (newVal, oldVal) => {\n          if (!instance.mounted) {\n            return\n          }\n          const datasource = instance.cesiumObject as Cesium.CustomDataSource\n          if (newVal.length === oldVal.length) {\n            // 视为修改操作\n            // Treated as modified\n            const modifies: Array<any> = []\n            for (let i = 0; i < newVal.length; i++) {\n              const options = newVal[i]\n              const oldOptions = oldVal[i]\n\n              // 忽略 model 的 nodeTransformations\n              // 该属性不支持动态响应\n              const testReplace = (key, value) => {\n                if (key !== 'nodeTransformations' && key !== '_definitionChanged') {\n                  return value\n                }\n              }\n\n              if (JSON.stringify(options, testReplace) !== JSON.stringify(oldOptions, testReplace)) {\n                modifies.push({\n                  newOptions: options,\n                  oldOptions: oldOptions\n                })\n              }\n            }\n\n            modifies.forEach(v => {\n              const modifyEntity = datasource.entities.getById(v.oldOptions.id)\n              if (Cesium.defined(modifyEntity)) {\n                if (v.oldOptions.id === v.newOptions.id) {\n                  modifyEntity &&\n                    Object.keys(v.newOptions).forEach(prop => {\n                      if (v.oldOptions[prop] !== v.newOptions[prop]) {\n                        modifyEntity[prop] = commonState.transformProp(prop, v.newOptions[prop])\n                      }\n                    })\n                } else {\n                  // 改了 id\n                  if (modifyEntity) {\n                    datasource.entities.remove(modifyEntity)\n                    remove(overlays.value, overlay => overlay.id === modifyEntity.id)\n                    const entityOptions = v.newOptions\n                    addDynamicOverlays(datasource, [entityOptions])\n                  }\n                }\n\n                const dynamicOverlay = find(overlays.value, v => v.id === modifyEntity.id)\n                if (Cesium.defined(dynamicOverlay)) {\n                  const oldSampledPositions = v.oldOptions.sampledPositions\n                  const newSampledPositions = v.newOptions.sampledPositions\n                  const sampledPositionAdds: any = differenceBy(newSampledPositions, oldSampledPositions, 'id')\n                  const sampledPositionDeletes: any = differenceBy(oldSampledPositions, newSampledPositions, 'id')\n\n                  sampledPositionDeletes.forEach(sampledPosition => {\n                    sampledPosition.time && dynamicOverlay._sampledPosition.removeSample(sampledPosition.time)\n                  })\n\n                  sampledPositionAdds.forEach((sampledPosition: SampledPosition) => {\n                    if (sampledPosition.time) {\n                      dynamicOverlay.addPosition(sampledPosition.position, sampledPosition.time)\n                    } else if (sampledPosition.interval) {\n                      dynamicOverlay.addPosition(sampledPosition.position, sampledPosition.interval || props.defaultInterval)\n                    }\n                  })\n                }\n              }\n            })\n          } else {\n            const adds: any = differenceBy(newVal, oldVal, 'id')\n            const deletes: any = differenceBy(oldVal, newVal, 'id')\n            const deletedEntities: Array<Cesium.Entity> = []\n            for (let i = 0; i < deletes.length; i++) {\n              const deleteEntity = datasource.entities.getById(deletes[i].id)\n              deletedEntities.push(deleteEntity!)\n            }\n            deletedEntities.forEach(v => {\n              datasource.entities.remove(v)\n              remove(overlays.value, overlay => overlay.id === v.id)\n            })\n\n            addDynamicOverlays(datasource, adds)\n          }\n        },\n        {\n          deep: true\n        }\n      )\n    )\n\n    // methods\n    instance.createCesiumObject = async () => {\n      return new Cesium.CustomDataSource(props.name)\n    }\n\n    const onClockTick = (clock: Cesium.Clock) => {\n      let listener = getInstanceListener(instance, 'update:currentTime')\n      props.currentTime !== clock.currentTime && listener && emit('update:currentTime', clock.currentTime)\n\n      listener = getInstanceListener(instance, 'update:shouldAnimate')\n      props.shouldAnimate !== clock.shouldAnimate && listener && emit('update:shouldAnimate', clock.shouldAnimate)\n\n      listener = getInstanceListener(instance, 'update:canAnimate')\n      props.canAnimate !== clock.canAnimate && listener && emit('update:canAnimate', clock.canAnimate)\n\n      listener = getInstanceListener(instance, 'update:clockRange')\n      props.clockRange !== clock.clockRange && listener && emit('update:clockRange', clock.clockRange)\n\n      listener = getInstanceListener(instance, 'update:clockStep')\n      props.clockStep !== clock.clockStep && listener && emit('update:clockStep', clock.clockStep)\n\n      listener = getInstanceListener(instance, 'update:multiplier')\n      props.multiplier !== clock.multiplier && listener && emit('update:multiplier', clock.multiplier)\n\n      listener = getInstanceListener(instance, 'update:startTime')\n      props.startTime !== clock.startTime && listener && emit('update:startTime', clock.startTime)\n\n      listener = getInstanceListener(instance, 'update:stopTime')\n      props.stopTime !== clock.stopTime && listener && emit('update:stopTime', clock.stopTime)\n\n      setTrackView(clock)\n\n      const { JulianDate, Cartesian3 } = Cesium\n      listener = getInstanceListener(instance, 'stopArrived')\n      if (listener && props.shouldAnimate) {\n        for (let i = 0; i < overlays.value.length; i++) {\n          const overlay: DynamicOverlay = overlays.value[i]\n          const currentPosition = overlay._sampledPosition.getValue(clock.currentTime)\n\n          const dynamicOverlayOpts = props.dynamicOverlays[i]\n          for (let j = 0; j < dynamicOverlayOpts.sampledPositions.length; j++) {\n            const sampledPosition = dynamicOverlayOpts.sampledPositions[j]\n            const stopPostion = makeCartesian3(sampledPosition.position) as Cesium.Cartesian3\n            const stopTime = makeJulianDate(sampledPosition.time)\n\n            const positionFlag = Cartesian3.equalsEpsilon(currentPosition, stopPostion, props.positionPrecision)\n            const timeFlag = JulianDate.equalsEpsilon(clock.currentTime, stopTime, props.timePrecision)\n            let arrivedFlag = false\n            switch (props.stopArrivedFlag) {\n              case 'time':\n                arrivedFlag = timeFlag\n                break\n              case 'position':\n                arrivedFlag = positionFlag\n                break\n              case 'both':\n                arrivedFlag = timeFlag && positionFlag\n                break\n              case 'or':\n                arrivedFlag = timeFlag || positionFlag\n                break\n            }\n\n            if (arrivedFlag) {\n              emit('stopArrived', overlay, sampledPosition, lastOffset, clock)\n              break\n            }\n          }\n        }\n      }\n    }\n\n    const addDynamicOverlays = (datasource: Cesium.CustomDataSource, dynamicOverlays: Array<DynamicOverlayOpts>) => {\n      for (let i = 0; i < dynamicOverlays.length; i++) {\n        const entityOptions = dynamicOverlays[i] as any\n        const entityOptionsTransform = commonState.transformProps<DynamicOverlayOpts>(entityOptions)\n        const dynamicOverlay = new DynamicOverlay(entityOptionsTransform)\n        overlays.value.push(dynamicOverlay)\n        const entity = datasource.entities.add(dynamicOverlay._entity)\n        entityOptionsTransform.sampledPositions.forEach((sampledPosition: SampledPosition) => {\n          if (sampledPosition.time) {\n            dynamicOverlay.addPosition(sampledPosition.position, sampledPosition.time)\n          } else if (sampledPosition.interval) {\n            sampledPosition.time = dynamicOverlay.addPosition(sampledPosition.position, sampledPosition.interval || props.defaultInterval)\n          }\n        })\n        entityOptions.id !== entity.id && (entityOptions.id = entity.id)\n        addCustomProperty(entity, entityOptionsTransform, ['id'])\n      }\n    }\n\n    instance.mount = async () => {\n      const { viewer } = $services\n      const datasource = instance.cesiumObject as Cesium.CustomDataSource\n      datasource.show = props.show\n      addDynamicOverlays(datasource, props.dynamicOverlays)\n\n      return viewer.dataSources.add(datasource).then(() => {\n        restoreClockOpts.value.startTime = viewer.clock.startTime\n        restoreClockOpts.value.stopTime = viewer.clock.stopTime\n        restoreClockOpts.value.currentTime = viewer.clock.currentTime\n        restoreClockOpts.value.multiplier = viewer.clock.multiplier\n        restoreClockOpts.value.clockStep = viewer.clock.clockStep\n        restoreClockOpts.value.clockRange = viewer.clock.clockRange\n        restoreClockOpts.value.canAnimate = viewer.clock.canAnimate\n        restoreClockOpts.value.shouldAnimate = viewer.clock.shouldAnimate\n\n        if (props.startTime) {\n          viewer.clock.startTime = makeJulianDate(props.startTime)\n        }\n        if (props.stopTime) {\n          viewer.clock.stopTime = makeJulianDate(props.stopTime)\n        }\n        if (props.currentTime) {\n          viewer.clock.currentTime = makeJulianDate(props.currentTime)\n        }\n\n        viewer.clock.multiplier = props.multiplier\n        viewer.clock.clockStep = props.clockStep\n        viewer.clock.clockRange = props.clockRange\n        viewer.clock.canAnimate = false\n        viewer.clock.shouldAnimate = props.shouldAnimate\n\n        viewer.clock.onTick.addEventListener(onClockTick)\n        const listener = getInstanceListener(instance, 'onStop')\n        listener && viewer.clock.onStop.addEventListener(listener)\n        return true\n      })\n    }\n\n    instance.unmount = async () => {\n      const { viewer } = $services\n      const datasource = instance.cesiumObject as Cesium.CustomDataSource\n      viewer.dataSources.remove(datasource, true)\n\n      viewer.clock.startTime = restoreClockOpts.value.startTime\n      viewer.clock.stopTime = restoreClockOpts.value.stopTime\n      viewer.clock.multiplier = restoreClockOpts.value.multiplier\n      viewer.clock.clockStep = restoreClockOpts.value.clockStep\n      viewer.clock.clockRange = restoreClockOpts.value.clockRange\n      viewer.clock.canAnimate = restoreClockOpts.value.canAnimate\n      viewer.clock.shouldAnimate = restoreClockOpts.value.shouldAnimate\n      overlays.value.length = 0\n      viewer.clock.onTick.removeEventListener(onClockTick)\n      const listener = getInstanceListener(instance, 'onStop')\n      listener && viewer.clock.onStop.removeEventListener(listener)\n      trackingOverlay.value && (viewer.trackedEntity = undefined)\n      return true\n    }\n\n    const setTrackView = (clock: Cesium.Clock) => {\n      if (trackView.value && trackingOverlay.value) {\n        const { viewer } = $services\n\n        if (Cesium.JulianDate.greaterThan(clock.currentTime, clock.stopTime)) {\n          // viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY)\n          // if (lastOffset && lastPosition) {\n          //   viewer.camera.lookAt(lastPosition, lastOffset)\n          // }\n          trackingOverlay.value = null\n          return\n        }\n        const position = trackingOverlay.value._sampledPosition.getValue(clock.currentTime)\n        let offset: Cesium.HeadingPitchRange = new Cesium.HeadingPitchRange()\n        switch (trackView.value.mode) {\n          case 'TP':\n            offset.heading = 0\n            offset.pitch = trackView.value?.offset?.pitch || Cesium.Math.toRadians(-90)\n            offset.range = trackView.value?.offset?.range || 1000\n            break\n          case 'FP': {\n            const nextTickTime = Cesium.JulianDate.addSeconds(clock.currentTime, 1 / 60, new Cesium.JulianDate())\n            const nextTickPosition = trackingOverlay.value._sampledPosition.getValue(nextTickTime) || position\n\n            if (position.equals(nextTickPosition) && lastOffset) {\n              offset = lastOffset\n            } else {\n              offset.heading = Cesium.Math.toRadians(getPolylineSegmentHeading(position, nextTickPosition))\n              offset.pitch = (trackView.value?.offset?.pitch || Cesium.Math.toRadians(-45.0)) + getPolylineSegmentPitch(position, nextTickPosition)\n              offset.range = trackView.value?.offset?.range || 500\n            }\n\n            break\n          }\n          case 'CUSTOM':\n            offset = makeHeadingPitchRang(trackView.value.offset)\n        }\n        lastOffset = offset\n        lastPosition = position\n        viewer.camera.lookAt(position, offset)\n      }\n    }\n\n    const trackOverlay = (trackOverlay?: DynamicOverlay | string | number, trackViewOpts?: TrackViewOpts) => {\n      const { viewer } = $services\n      trackViewOpts = trackViewOpts || {\n        mode: trackView.value === null ? 'FP' : 'FREE'\n      }\n\n      if (trackViewOpts.mode === 'FREE') {\n        viewer.camera.lookAtTransform(Cesium.Matrix4.IDENTITY)\n        if (trackingOverlay.value) {\n          viewer.trackedEntity = undefined\n          trackingOverlay.value = null\n          trackView.value = null\n        }\n        return\n      }\n\n      trackingOverlay.value = getOverlay(trackOverlay)\n\n      viewer.trackedEntity = toRaw(trackingOverlay.value._entity)\n      if (trackViewOpts.mode === 'TRACKED') {\n        if (trackViewOpts?.viewFrom?.length) {\n          viewer.trackedEntity.viewFrom = new Cesium.Cartesian3(\n            trackViewOpts.viewFrom[0],\n            trackViewOpts.viewFrom[1],\n            trackViewOpts.viewFrom[2]\n          ) as any\n        }\n        trackView.value = null\n      } else {\n        trackView.value = trackViewOpts\n      }\n    }\n\n    const getOverlay = (e: number | string | DynamicOverlay) => {\n      if (e instanceof DynamicOverlay) {\n        return e\n      } else if (typeof e === 'string') {\n        return find(overlays.value, v => v.id === e)\n      } else if (typeof e === 'number') {\n        return overlays.value[e]\n      } else {\n        return overlays.value[0]\n      }\n    }\n\n    const flyToOverlay = (\n      overlays?: number | string | DynamicOverlay | Array<DynamicOverlay | number | string>,\n      options?: {\n        duration?: number\n        maximumHeight?: number\n        offset?: VcHeadingPitchRange\n      }\n    ) => {\n      const { viewer } = $services\n      if (trackingOverlay.value) {\n        viewer.trackedEntity = undefined\n        trackingOverlay.value = null\n      }\n      let target: Cesium.Entity | Array<Cesium.Entity> | Cesium.CustomDataSource\n      if (Cesium.defined(overlays)) {\n        if (Array.isArray(overlays)) {\n          if (overlays.length) {\n            const targets: Array<Cesium.Entity> = []\n            overlays.forEach(viewOverlay => {\n              const target = toRaw(getOverlay(viewOverlay)._entity)\n              targets.push(target)\n            })\n            target = targets\n          } else {\n            target = instance.cesiumObject as Cesium.CustomDataSource\n          }\n        } else {\n          target = toRaw(getOverlay(overlays)._entity)\n        }\n      } else {\n        target = instance.cesiumObject as Cesium.CustomDataSource\n      }\n\n      options = options || {\n        duration: 3.0\n      }\n\n      if (Cesium.defined(options.offset)) {\n        options.offset = makeHeadingPitchRang(options.offset)\n      }\n\n      return viewer.flyTo(target, options as any)\n    }\n\n    const zoomToOverlay = (overlays?: number | string | DynamicOverlay | Array<DynamicOverlay | number | string>, offset?: VcHeadingPitchRange) => {\n      const { viewer } = $services\n      if (trackingOverlay.value) {\n        viewer.trackedEntity = undefined\n        trackingOverlay.value = null\n      }\n      let target: Cesium.Entity | Array<Cesium.Entity> | Cesium.CustomDataSource\n      if (Cesium.defined(overlays)) {\n        if (Array.isArray(overlays)) {\n          if (overlays.length) {\n            const targets: Array<Cesium.Entity> = []\n            overlays.forEach(viewOverlay => {\n              const target = toRaw(getOverlay(viewOverlay)._entity)\n              targets.push(target)\n            })\n            target = targets\n          } else {\n            target = instance.cesiumObject as Cesium.CustomDataSource\n          }\n        } else {\n          target = toRaw(getOverlay(overlays)._entity)\n        }\n      } else {\n        target = instance.cesiumObject as Cesium.CustomDataSource\n      }\n\n      return viewer.zoomTo(target, Cesium.defined(offset) ? makeHeadingPitchRang(offset) : undefined)\n    }\n\n    // life cycle\n    onUnmounted(() => {\n      unwatchFns.forEach(item => item())\n      unwatchFns = []\n    })\n\n    // expose public methods\n    Object.assign(instance.proxy, { getOverlays: () => overlays.value, getOverlay, trackOverlay, zoomToOverlay, flyToOverlay })\n\n    return () => createCommentVNode(kebabCase(instance.proxy?.$options.name || ''))\n  }\n})\n\nexport interface VcOverlayDynamicProps {\n  /**\n   * Specify whether to display the CustomDataSource that hosts the dynamic overlays.\n   * Default value: true\n   */\n  show?: boolean\n  /**\n   * Specify the name of the CustomDataSource.\n   * Default value: __vc__overlay__dynamic__\n   */\n  name?: string\n  /**\n   * Specify the start time of the clock.\n   */\n  startTime?: Cesium.JulianDate | string | Date\n  /**\n   * Specify the stop time of the clock.\n   */\n  stopTime?: Cesium.JulianDate | string | Date\n  /**\n   * Specify the current time.\n   */\n  currentTime?: Cesium.JulianDate | string | Date\n  /**\n   * Determines how the clock should behave when Clock#startTime or Clock#stopTime is reached.\n   * Default value: 0\n   */\n  clockRange?: number | Cesium.ClockRange\n  /**\n   * Determines if calls to Clock#tick are frame dependent or system clock dependent.\n   * Default value: 1\n   */\n  clockStep?: number | Cesium.ClockStep\n  /**\n   * Indicates whether Clock#tick should attempt to advance time. The clock will only tick when both Clock#canAnimate and Clock#shouldAnimate are true.\n   * Default value: true\n   */\n  shouldAnimate?: boolean\n  /**\n   * Indicates whether Clock#tick can advance time. This could be false if data is being buffered, for example. The clock will only tick when both Clock#canAnimate and Clock#shouldAnimate are true.\n   * Default value: true\n   */\n  canAnimate?: boolean\n  /**\n   * Determines how much time advances when Clock#tick is called, negative values allow for advancing backwards.\n   * Default value: 1.0\n   */\n  multiplier?: number\n  /**\n   * Specify the dynamicOverlays array.\n   */\n  dynamicOverlays?: Array<DynamicOverlayOpts>\n  /**\n   * Specify the default refresh interval of the default position information, and it is available to change the position of the dynamic overlays in real time.\n   * Default value: 3.0\n   */\n  defaultInterval?: number\n  /**\n   * Specify the decision flag for the stopArrived event.\n   * Default value: time\n   */\n  stopArrivedFlag?: 'time' | 'position' | 'both' | 'or'\n  /**\n   * Specify position accuracy.\n   * Default value: 0.0000001\n   */\n  positionPrecision?: number\n  /**\n   * Specify time accuracy.\n   * 0.01\n   */\n  timePrecision?: number\n  /**\n   * Triggers before the VcOverlayDynamic is loaded.\n   */\n  onBeforeLoad?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when the VcOverlayDynamic 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 VcOverlayDynamic is destroyed.\n   */\n  onDestroyed?: (instance: VcComponentInternalInstance) => void\n  /**\n   * Triggers when Clock#stopTime is reached.\n   */\n  onOnStop?: (clock: Cesium.Clock) => void\n  /**\n   * Triggers when a stop is reached.\n   */\n  onStopArrived?: (overlay: DynamicOverlay, position: SampledPosition, offset: Cesium.HeadingPitchRange, clock: Cesium.Clock) => void\n  /**\n   * Triggers when currentTime changed.\n   */\n  'onUpdate:currentTime'?: (currentTime: Cesium.JulianDate) => void\n  /**\n   * Triggers when shouldAnimate changed.\n   */\n  'onUpdate:shouldAnimate'?: (shouldAnimate: boolean) => void\n  /**\n   * Triggers when canAnimate changed.\n   */\n  'onUpdate:canAnimate'?: (canAnimate: boolean) => void\n  /**\n   * Triggers when clockRange changed.\n   */\n  'onUpdate:clockRange'?: (clockRange: number | Cesium.ClockRange) => void\n  /**\n   * Triggers when clockStep changed.\n   */\n  'onUpdate:clockStep'?: (clockStep: number | Cesium.ClockStep) => void\n  /**\n   * Triggers when multiplier changed.\n   */\n  'onUpdate:multiplier'?: (multiplier: number) => void\n  /**\n   * Triggers when startTime changed.\n   */\n  'onUpdate:startTime'?: (startTime: Cesium.JulianDate) => void\n  /**\n   * Triggers when stopTime changed.\n   */\n  'onUpdate:stopTime'?: (stopTime: Cesium.JulianDate) => void\n}\n\nexport type VcOverlayDynamicEmits = typeof emits\n\nexport interface VcOverlayDynamicRef extends ComponentPublicInstance<VcOverlayDynamicProps> {\n  /**\n   * Get overlay by id or index.\n   * @param e id or index.\n   */\n  getOverlay: (e: number | string | DynamicOverlay) => DynamicOverlay\n  /**\n   * Get overlays.\n   */\n  getOverlays: () => Array<DynamicOverlay>\n  /**\n   * Track dynamic overlay.\n   * @param trackOverlay tracked overlay or tracked overlay's id or index. If not passed, the first overlay is tracked by default.\n   * @param trackViewOpts view parameters.\n   */\n  trackOverlay: (trackOverlay?: DynamicOverlay | string | number, trackViewOpts?: TrackViewOpts) => void\n  /**\n   * Zoom to dynamic overlay(s).\n   * @param viewOverlays Dynamic overlays (index, id) or a collection of dynamic overlay (index, id). If you don't pass it or pass in an empty array (empty object), it scales to all overlays.\n   * @param offset The camera offset to zoom to the overlay.\n   */\n  zoomToOverlay: (\n    overlays: number | string | DynamicOverlay | Array<DynamicOverlay | number | string>,\n    offset?: VcHeadingPitchRange\n  ) => Promise<boolean>\n\n  /**\n   * Fly to dynamic overlay(s).\n   * @param viewOverlays Dynamic overlays (index, id) or a collection of dynamic overlay (index, id). If you don't pass it or pass in an empty array (empty object), it scales to all overlays.\n   * @param offset The camera offset to zoom to the overlay.\n   */\n  flyToOverlay: (\n    overlays: number | string | DynamicOverlay | Array<DynamicOverlay | number | string>,\n    options?: {\n      duration?: number\n      maximumHeight?: number\n      offset?: VcHeadingPitchRange\n    }\n  ) => Promise<boolean>\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAgBY,MAAC,mBAAmB,GAAG;AACnC,EAAE,GAAG,IAAI;AACT,EAAE,IAAI,EAAE;AACR,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,0BAA0B;AACvC,GAAG;AACH,EAAE,SAAS,EAAE;AACb,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;AAChC,GAAG;AACH,EAAE,QAAQ,EAAE;AACZ,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;AAChC,GAAG;AACH,EAAE,WAAW,EAAE;AACf,IAAI,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;AAChC,GAAG;AACH,EAAE,UAAU,EAAE;AACd,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,EAAE,SAAS,EAAE;AACb,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,EAAE,aAAa,EAAE;AACjB,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,OAAO,EAAE,IAAI;AACjB,GAAG;AACH,EAAE,UAAU,EAAE;AACd,IAAI,IAAI,EAAE,OAAO;AACjB,IAAI,OAAO,EAAE,IAAI;AACjB,GAAG;AACH,EAAE,UAAU,EAAE;AACd,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,EAAE,eAAe,EAAE;AACnB,IAAI,IAAI,EAAE,KAAK;AACf,IAAI,OAAO,EAAE,MAAM,EAAE;AACrB,GAAG;AACH,EAAE,eAAe,EAAE;AACnB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,CAAC;AACd,GAAG;AACH,EAAE,eAAe,EAAE;AACnB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,MAAM;AACnB,GAAG;AACH,EAAE,iBAAiB,EAAE;AACrB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,IAAI;AACjB,GAAG;AACH,EAAE,aAAa,EAAE;AACjB,IAAI,IAAI,EAAE,MAAM;AAChB,IAAI,OAAO,EAAE,IAAI;AACjB,GAAG;AACH,EAAE;AACF,MAAM,KAAK,GAAG;AACd,EAAE,GAAG,WAAW;AAChB,EAAE,oBAAoB,EAAE,CAAC,WAAW,KAAK,IAAI;AAC7C,EAAE,sBAAsB,EAAE,CAAC,aAAa,KAAK,IAAI;AACjD,EAAE,mBAAmB,EAAE,CAAC,UAAU,KAAK,IAAI;AAC3C,EAAE,mBAAmB,EAAE,CAAC,UAAU,KAAK,IAAI;AAC3C,EAAE,kBAAkB,EAAE,CAAC,SAAS,KAAK,IAAI;AACzC,EAAE,mBAAmB,EAAE,CAAC,UAAU,KAAK,IAAI;AAC3C,EAAE,kBAAkB,EAAE,CAAC,SAAS,KAAK,IAAI;AACzC,EAAE,iBAAiB,EAAE,CAAC,QAAQ,KAAK,IAAI;AACvC,EAAE,MAAM,EAAE,CAAC,KAAK,KAAK,IAAI;AACzB,EAAE,WAAW,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,KAAK,IAAI;AACzD,CAAC,CAAC;AACF,qBAAe,eAAe,CAAC;AAC/B,EAAE,IAAI,EAAE,kBAAkB;AAC1B,EAAE,KAAK,EAAE,mBAAmB;AAC5B,EAAE,KAAK;AACP,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE;AACpB,IAAI,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;AAC1C,IAAI,QAAQ,CAAC,WAAW,GAAG,kBAAkB,CAAC;AAC9C,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,SAAS,EAAE,GAAG,WAAW,CAAC;AACtC,IAAI,MAAM,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AAC7B,IAAI,MAAM,gBAAgB,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AACrC,IAAI,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC;AACzB,IAAI,MAAM,eAAe,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AACtC,IAAI,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;AAChC,IAAI,IAAI,UAAU,CAAC;AACnB,IAAI,IAAI,YAAY,CAAC;AACrB,IAAI,IAAI,UAAU,GAAG,EAAE,CAAC;AACxB,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK;AACrD,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;AAC/C,MAAM,UAAU,KAAK,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;AAC5C,KAAK,CAAC,CAAC,CAAC;AACR,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK;AACrD,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;AAC/C,MAAM,UAAU,KAAK,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;AAC5C,KAAK,CAAC,CAAC,CAAC;AACR,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,KAAK;AAC1D,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE;AACzC,QAAQ,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;AACrD,OAAO;AACP,KAAK,CAAC,CAAC,CAAC;AACR,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK;AACzD,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE;AACzC,QAAQ,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;AACpD,OAAO;AACP,KAAK,CAAC,CAAC,CAAC;AACR,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK;AAC5D,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE;AACzC,QAAQ,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;AACvD,OAAO;AACP,KAAK,CAAC,CAAC,CAAC;AACR,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,KAAK;AAC3D,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAClC,QAAQ,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC;AACtC,OAAO;AACP,KAAK,CAAC,CAAC,CAAC;AACR,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,KAAK;AAC1D,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAClC,QAAQ,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;AACrC,OAAO;AACP,KAAK,CAAC,CAAC,CAAC;AACR,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,KAAK;AAC3D,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAClC,QAAQ,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC;AACtC,OAAO;AACP,KAAK,CAAC,CAAC,CAAC;AACR,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,KAAK;AAC3D,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAClC,QAAQ,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC;AACtC,OAAO;AACP,KAAK,CAAC,CAAC,CAAC;AACR,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,aAAa,EAAE,CAAC,GAAG,KAAK;AAC9D,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAClC,QAAQ,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;AACzC,OAAO;AACP,KAAK,CAAC,CAAC,CAAC;AACR,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK;AACtF,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC7B,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;AAC/C,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE;AAC3C,QAAQ,MAAM,QAAQ,GAAG,EAAE,CAAC;AAC5B,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,UAAU,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACpC,UAAU,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACvC,UAAU,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,KAAK,KAAK;AAC9C,YAAY,IAAI,GAAG,KAAK,qBAAqB,IAAI,GAAG,KAAK,oBAAoB,EAAE;AAC/E,cAAc,OAAO,KAAK,CAAC;AAC3B,aAAa;AACb,WAAW,CAAC;AACZ,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE;AAChG,YAAY,QAAQ,CAAC,IAAI,CAAC;AAC1B,cAAc,UAAU,EAAE,OAAO;AACjC,cAAc,UAAU;AACxB,aAAa,CAAC,CAAC;AACf,WAAW;AACX,SAAS;AACT,QAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;AAChC,UAAU,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AAC5E,UAAU,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;AAC5C,YAAY,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE;AACrD,cAAc,YAAY,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC1E,gBAAgB,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;AAC/D,kBAAkB,YAAY,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3F,iBAAiB;AACjB,eAAe,CAAC,CAAC;AACjB,aAAa,MAAM;AACnB,cAAc,IAAI,YAAY,EAAE;AAChC,gBAAgB,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;AACzD,gBAAgB,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;AACpF,gBAAgB,MAAM,aAAa,GAAG,CAAC,CAAC,UAAU,CAAC;AACnD,gBAAgB,kBAAkB,CAAC,UAAU,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;AAChE,eAAe;AACf,aAAa;AACb,YAAY,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAAC,CAAC;AAC3F,YAAY,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;AAChD,cAAc,MAAM,mBAAmB,GAAG,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC;AACxE,cAAc,MAAM,mBAAmB,GAAG,CAAC,CAAC,UAAU,CAAC,gBAAgB,CAAC;AACxE,cAAc,MAAM,mBAAmB,GAAG,YAAY,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC;AACvG,cAAc,MAAM,sBAAsB,GAAG,YAAY,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC;AAC1G,cAAc,sBAAsB,CAAC,OAAO,CAAC,CAAC,eAAe,KAAK;AAClE,gBAAgB,eAAe,CAAC,IAAI,IAAI,cAAc,CAAC,gBAAgB,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC3G,eAAe,CAAC,CAAC;AACjB,cAAc,mBAAmB,CAAC,OAAO,CAAC,CAAC,eAAe,KAAK;AAC/D,gBAAgB,IAAI,eAAe,CAAC,IAAI,EAAE;AAC1C,kBAAkB,cAAc,CAAC,WAAW,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;AAC7F,iBAAiB,MAAM,IAAI,eAAe,CAAC,QAAQ,EAAE;AACrD,kBAAkB,cAAc,CAAC,WAAW,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,CAAC,QAAQ,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AAC1H,iBAAiB;AACjB,eAAe,CAAC,CAAC;AACjB,aAAa;AACb,WAAW;AACX,SAAS,CAAC,CAAC;AACX,OAAO,MAAM;AACb,QAAQ,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACxD,QAAQ,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC3D,QAAQ,MAAM,eAAe,GAAG,EAAE,CAAC;AACnC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACjD,UAAU,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAC1E,UAAU,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC7C,SAAS;AACT,QAAQ,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;AACvC,UAAU,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxC,UAAU,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,KAAK,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;AACnE,SAAS,CAAC,CAAC;AACX,QAAQ,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAC7C,OAAO;AACP,KAAK,EAAE;AACP,MAAM,IAAI,EAAE,IAAI;AAChB,KAAK,CAAC,CAAC,CAAC;AACR,IAAI,QAAQ,CAAC,kBAAkB,GAAG,YAAY;AAC9C,MAAM,OAAO,IAAI,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACrD,KAAK,CAAC;AACN,IAAI,MAAM,WAAW,GAAG,CAAC,KAAK,KAAK;AACnC,MAAM,IAAI,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;AACzE,MAAM,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW,IAAI,QAAQ,IAAI,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;AAC3G,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC;AACvE,MAAM,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa,IAAI,QAAQ,IAAI,IAAI,CAAC,sBAAsB,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;AACnH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AACpE,MAAM,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,IAAI,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AACvG,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AACpE,MAAM,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,IAAI,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AACvG,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AACnE,MAAM,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,IAAI,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AACnG,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AACpE,MAAM,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,IAAI,QAAQ,IAAI,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;AACvG,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AACnE,MAAM,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,IAAI,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;AACnG,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAClE,MAAM,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,QAAQ,IAAI,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC/F,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;AAC1B,MAAM,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;AAChD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC9D,MAAM,IAAI,QAAQ,IAAI,KAAK,CAAC,aAAa,EAAE;AAC3C,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACxD,UAAU,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5C,UAAU,MAAM,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACvF,UAAU,MAAM,kBAAkB,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;AAC9D,UAAU,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAC/E,YAAY,MAAM,eAAe,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC3E,YAAY,MAAM,WAAW,GAAG,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AACzE,YAAY,MAAM,QAAQ,GAAG,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAClE,YAAY,MAAM,YAAY,GAAG,UAAU,CAAC,aAAa,CAAC,eAAe,EAAE,WAAW,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACjH,YAAY,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;AACxG,YAAY,IAAI,WAAW,GAAG,KAAK,CAAC;AACpC,YAAY,QAAQ,KAAK,CAAC,eAAe;AACzC,cAAc,KAAK,MAAM;AACzB,gBAAgB,WAAW,GAAG,QAAQ,CAAC;AACvC,gBAAgB,MAAM;AACtB,cAAc,KAAK,UAAU;AAC7B,gBAAgB,WAAW,GAAG,YAAY,CAAC;AAC3C,gBAAgB,MAAM;AACtB,cAAc,KAAK,MAAM;AACzB,gBAAgB,WAAW,GAAG,QAAQ,IAAI,YAAY,CAAC;AACvD,gBAAgB,MAAM;AACtB,cAAc,KAAK,IAAI;AACvB,gBAAgB,WAAW,GAAG,QAAQ,IAAI,YAAY,CAAC;AACvD,gBAAgB,MAAM;AACtB,aAAa;AACb,YAAY,IAAI,WAAW,EAAE;AAC7B,cAAc,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AAC/E,cAAc,MAAM;AACpB,aAAa;AACb,WAAW;AACX,SAAS;AACT,OAAO;AACP,KAAK,CAAC;AACN,IAAI,MAAM,kBAAkB,GAAG,CAAC,UAAU,EAAE,eAAe,KAAK;AAChE,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACvD,QAAQ,MAAM,aAAa,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;AACjD,QAAQ,MAAM,sBAAsB,GAAG,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;AACjF,QAAQ,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,sBAAsB,CAAC,CAAC;AAC1E,QAAQ,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC5C,QAAQ,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACvE,QAAQ,sBAAsB,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,eAAe,KAAK;AAC7E,UAAU,IAAI,eAAe,CAAC,IAAI,EAAE;AACpC,YAAY,cAAc,CAAC,WAAW,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;AACvF,WAAW,MAAM,IAAI,eAAe,CAAC,QAAQ,EAAE;AAC/C,YAAY,eAAe,CAAC,IAAI,GAAG,cAAc,CAAC,WAAW,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,CAAC,QAAQ,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;AAC3I,WAAW;AACX,SAAS,CAAC,CAAC;AACX,QAAQ,aAAa,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,KAAK,aAAa,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;AACzE,QAAQ,iBAAiB,CAAC,MAAM,EAAE,sBAAsB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,OAAO;AACP,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,KAAK,GAAG,YAAY;AACjC,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;AAC/C,MAAM,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AACnC,MAAM,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;AAC5D,MAAM,OAAO,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM;AAC3D,QAAQ,gBAAgB,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;AAClE,QAAQ,gBAAgB,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;AAChE,QAAQ,gBAAgB,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;AACtE,QAAQ,gBAAgB,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;AACpE,QAAQ,gBAAgB,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;AAClE,QAAQ,gBAAgB,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;AACpE,QAAQ,gBAAgB,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;AACpE,QAAQ,gBAAgB,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC;AAC1E,QAAQ,IAAI,KAAK,CAAC,SAAS,EAAE;AAC7B,UAAU,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACnE,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE;AAC5B,UAAU,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACjE,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,WAAW,EAAE;AAC/B,UAAU,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACvE,SAAS;AACT,QAAQ,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;AACnD,QAAQ,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;AACjD,QAAQ,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;AACnD,QAAQ,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;AACxC,QAAQ,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;AACzD,QAAQ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;AAC1D,QAAQ,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACjE,QAAQ,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACnE,QAAQ,OAAO,IAAI,CAAC;AACpB,OAAO,CAAC,CAAC;AACT,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,OAAO,GAAG,YAAY;AACnC,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAY,CAAC;AAC/C,MAAM,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AAClD,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC;AAChE,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC;AAC9D,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC;AAClE,MAAM,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC;AAChE,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC;AAClE,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC;AAClE,MAAM,MAAM,CAAC,KAAK,CAAC,aAAa,GAAG,gBAAgB,CAAC,KAAK,CAAC,aAAa,CAAC;AACxE,MAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAChC,MAAM,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;AAC3D,MAAM,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC/D,MAAM,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AACpE,MAAM,eAAe,CAAC,KAAK,KAAK,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC;AAC/D,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC;AACN,IAAI,MAAM,YAAY,GAAG,CAAC,KAAK,KAAK;AACpC,MAAM,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;AACzC,MAAM,IAAI,SAAS,CAAC,KAAK,IAAI,eAAe,CAAC,KAAK,EAAE;AACpD,QAAQ,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACrC,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;AAC9E,UAAU,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;AACvC,UAAU,OAAO;AACjB,SAAS;AACT,QAAQ,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AAC5F,QAAQ,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;AACpD,QAAQ,QAAQ,SAAS,CAAC,KAAK,CAAC,IAAI;AACpC,UAAU,KAAK,IAAI;AACnB,YAAY,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;AAC/B,YAAY,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;AAClJ,YAAY,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC;AAC3H,YAAY,MAAM;AAClB,UAAU,KAAK,IAAI,EAAE;AACrB,YAAY,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;AAClH,YAAY,MAAM,gBAAgB,GAAG,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC;AAC/G,YAAY,IAAI,QAAQ,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,UAAU,EAAE;AACjE,cAAc,MAAM,GAAG,UAAU,CAAC;AAClC,aAAa,MAAM;AACnB,cAAc,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAC5G,cAAc,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,uBAAuB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AAC5M,cAAc,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,SAAS,CAAC,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC;AAC7H,aAAa;AACb,YAAY,MAAM;AAClB,WAAW;AACX,UAAU,KAAK,QAAQ;AACvB,YAAY,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAClE,SAAS;AACT,QAAQ,UAAU,GAAG,MAAM,CAAC;AAC5B,QAAQ,YAAY,GAAG,QAAQ,CAAC;AAChC,QAAQ,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC/C,OAAO;AACP,KAAK,CAAC;AACN,IAAI,MAAM,YAAY,GAAG,CAAC,aAAa,EAAE,aAAa,KAAK;AAC3D,MAAM,IAAI,EAAE,CAAC;AACb,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,aAAa,GAAG,aAAa,IAAI;AACvC,QAAQ,IAAI,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM;AACtD,OAAO,CAAC;AACR,MAAM,IAAI,aAAa,CAAC,IAAI,KAAK,MAAM,EAAE;AACzC,QAAQ,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AAC/D,QAAQ,IAAI,eAAe,CAAC,KAAK,EAAE;AACnC,UAAU,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC;AACxC,UAAU,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;AACvC,UAAU,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;AACjC,SAAS;AACT,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,eAAe,CAAC,KAAK,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;AACxD,MAAM,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAClE,MAAM,IAAI,aAAa,CAAC,IAAI,KAAK,SAAS,EAAE;AAC5C,QAAQ,IAAI,CAAC,EAAE,GAAG,aAAa,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,aAAa,CAAC,QAAQ,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE;AACzG,UAAU,MAAM,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACjJ,SAAS;AACT,QAAQ,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC;AAC/B,OAAO,MAAM;AACb,QAAQ,SAAS,CAAC,KAAK,GAAG,aAAa,CAAC;AACxC,OAAO;AACP,KAAK,CAAC;AACN,IAAI,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK;AAC9B,MAAM,IAAI,CAAC,YAAY,cAAc,EAAE;AACvC,QAAQ,OAAO,CAAC,CAAC;AACjB,OAAO,MAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACxC,QAAQ,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AACvD,OAAO,MAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;AACxC,QAAQ,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,OAAO,MAAM;AACb,QAAQ,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACjC,OAAO;AACP,KAAK,CAAC;AACN,IAAI,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,OAAO,KAAK;AACjD,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,IAAI,eAAe,CAAC,KAAK,EAAE;AACjC,QAAQ,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC;AACtC,QAAQ,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;AACrC,OAAO;AACP,MAAM,IAAI,MAAM,CAAC;AACjB,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AACrC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AACtC,UAAU,IAAI,SAAS,CAAC,MAAM,EAAE;AAChC,YAAY,MAAM,OAAO,GAAG,EAAE,CAAC;AAC/B,YAAY,SAAS,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK;AAC/C,cAAc,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC;AACrE,cAAc,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpC,aAAa,CAAC,CAAC;AACf,YAAY,MAAM,GAAG,OAAO,CAAC;AAC7B,WAAW,MAAM;AACjB,YAAY,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC;AAC3C,WAAW;AACX,SAAS,MAAM;AACf,UAAU,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;AACxD,SAAS;AACT,OAAO,MAAM;AACb,QAAQ,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC;AACvC,OAAO;AACP,MAAM,OAAO,GAAG,OAAO,IAAI;AAC3B,QAAQ,QAAQ,EAAE,CAAC;AACnB,OAAO,CAAC;AACR,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC1C,QAAQ,OAAO,CAAC,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC9D,OAAO;AACP,MAAM,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3C,KAAK,CAAC;AACN,IAAI,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK;AACjD,MAAM,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;AACnC,MAAM,IAAI,eAAe,CAAC,KAAK,EAAE;AACjC,QAAQ,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC;AACtC,QAAQ,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;AACrC,OAAO;AACP,MAAM,IAAI,MAAM,CAAC;AACjB,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AACrC,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;AACtC,UAAU,IAAI,SAAS,CAAC,MAAM,EAAE;AAChC,YAAY,MAAM,OAAO,GAAG,EAAE,CAAC;AAC/B,YAAY,SAAS,CAAC,OAAO,CAAC,CAAC,WAAW,KAAK;AAC/C,cAAc,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC;AACrE,cAAc,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACpC,aAAa,CAAC,CAAC;AACf,YAAY,MAAM,GAAG,OAAO,CAAC;AAC7B,WAAW,MAAM;AACjB,YAAY,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC;AAC3C,WAAW;AACX,SAAS,MAAM;AACf,UAAU,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;AACxD,SAAS;AACT,OAAO,MAAM;AACb,QAAQ,MAAM,GAAG,QAAQ,CAAC,YAAY,CAAC;AACvC,OAAO;AACP,MAAM,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,oBAAoB,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;AACnG,KAAK,CAAC;AACN,IAAI,WAAW,CAAC,MAAM;AACtB,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC;AAC3C,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,KAAK,CAAC,CAAC;AACP,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC;AAChI,IAAI,OAAO,MAAM;AACjB,MAAM,IAAI,EAAE,CAAC;AACb,MAAM,OAAO,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;AAC9G,KAAK,CAAC;AACN,GAAG;AACH,CAAC,CAAC;;;;"}