react-map4d-map 1.3.9 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/components/MFBuilding.d.ts +21 -21
  2. package/dist/components/MFBuildingOverlay.d.ts +10 -10
  3. package/dist/components/MFCircle.d.ts +18 -18
  4. package/dist/components/MFDataLayer.d.ts +7 -7
  5. package/dist/components/MFDirectionsRenderer.d.ts +31 -31
  6. package/dist/components/MFGroundOverlay.d.ts +6 -6
  7. package/dist/components/MFImageOverlay.d.ts +6 -6
  8. package/dist/components/MFMap.d.ts +38 -38
  9. package/dist/components/MFMarker.d.ts +36 -36
  10. package/dist/components/MFMarkerCluster.d.ts +8 -8
  11. package/dist/components/MFPOI.d.ts +19 -19
  12. package/dist/components/MFPOIOverlay.d.ts +6 -6
  13. package/dist/components/MFPolygon.d.ts +21 -18
  14. package/dist/components/MFPolyline.d.ts +22 -22
  15. package/dist/components/MFTileOverlay.d.ts +10 -10
  16. package/dist/context/Map4dContext.d.ts +6 -7
  17. package/dist/context/index.d.ts +2 -2
  18. package/dist/context/{MarkerClusterContext.d.ts → markerClusterContext.d.ts} +8 -9
  19. package/dist/engine/Color.d.ts +34 -34
  20. package/dist/engine/MathUtils.d.ts +8 -8
  21. package/dist/engine/Matrix.d.ts +115 -115
  22. package/dist/engine/ResourceReference.d.ts +8 -8
  23. package/dist/engine/Shader.d.ts +118 -118
  24. package/dist/engine/ShaderSource.d.ts +42 -42
  25. package/dist/engine/Texture.d.ts +51 -51
  26. package/dist/engine/Vector2.d.ts +82 -82
  27. package/dist/engine/Vector3.d.ts +84 -84
  28. package/dist/engine/Vertex.d.ts +2 -2
  29. package/dist/enum/index.d.ts +2 -2
  30. package/dist/enum/mapEventEnum.d.ts +11 -11
  31. package/dist/index.d.ts +18 -18
  32. package/dist/index.js +2309 -2330
  33. package/dist/index.js.map +1 -1
  34. package/dist/index.modern.js +2290 -2314
  35. package/dist/index.modern.js.map +1 -1
  36. package/dist/map/ProjectionMercator.d.ts +26 -26
  37. package/dist/models/LatLng.d.ts +37 -37
  38. package/dist/models/Map4dObject.d.ts +32 -32
  39. package/dist/models/MapConstants.d.ts +165 -165
  40. package/dist/tool/index.d.ts +1 -1
  41. package/dist/tool/variableTool.d.ts +3 -3
  42. package/dist/ultils/CoordinateTransformer.d.ts +11 -11
  43. package/package.json +23 -16
  44. package/dist/engine/Framebuffer.d.ts +0 -16
  45. package/dist/engine/Model.d.ts +0 -77
  46. package/dist/index.test.d.ts +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.modern.js","sources":["../src/context/Map4dContext.ts","../src/context/MarkerClusterContext.ts","../src/components/MFBuilding.tsx","../src/components/MFBuildingOverlay.tsx","../src/tool/variableTool.ts","../src/components/MFCircle.tsx","../src/components/MFDataLayer.tsx","../src/components/MFDirectionsRenderer.tsx","../src/components/MFGroundOverlay.tsx","../src/components/MFImageOverlay.tsx","../src/components/MFMap.tsx","../src/components/MFMarker.tsx","../src/components/MFMarkerCluster.tsx","../src/components/MFPOI.tsx","../src/components/MFPOIOverlay.tsx","../src/components/MFPolygon.tsx","../src/components/MFPolyline.tsx","../src/components/MFTileOverlay.tsx","../src/engine/Vector2.ts","../src/engine/MathUtils.ts","../src/engine/Vector3.ts","../src/engine/Matrix.ts","../src/engine/Color.ts","../src/models/MapConstants.ts","../src/models/Map4dObject.ts","../src/models/LatLng.ts","../src/map/ProjectionMercator.ts","../src/ultils/CoordinateTransformer.ts"],"sourcesContent":["import { createContext } from 'react';\r\n\r\nexport const defaultCt = {\r\n map: null as any,\r\n}\r\nexport const Map4dContext = createContext(defaultCt)","import { createContext } from 'react';\r\n\r\nexport const markerClusterDefaultContext = {\r\n addMarker: null as unknown as (marker: map4d.Marker)=>void,\r\n removeMarker: null as unknown as (marker: map4d.Marker)=>void,\r\n}\r\nexport const MarkerClusterContext = createContext(markerClusterDefaultContext)","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface BuildingProps {\r\n position?: map4d.ILatLng\r\n name?: string\r\n scale?: number\r\n bearing?: number\r\n elevation?: number\r\n height?: number\r\n model?: string\r\n texture?: string\r\n coordinates?: map4d.ILatLng[]\r\n zIndex?: number\r\n visible?: boolean\r\n draggable?: boolean\r\n clickable?: boolean\r\n selected?: boolean\r\n growUp?: boolean\r\n map?: map4d.Map\r\n onCreated?: (building: map4d.Building) => void\r\n}\r\nconst MFBuilding = (props: BuildingProps) => {\r\n const {\r\n position,\r\n name,\r\n scale = 1,\r\n bearing = 0,\r\n elevation = 0,\r\n height = 1,\r\n model,\r\n texture,\r\n coordinates,\r\n visible = true,\r\n draggable = false,\r\n clickable = true,\r\n selected = false,\r\n growUp = true,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const buildingRef = useRef(null as unknown as map4d.Building)\r\n\r\n useEffect(() => {\r\n if (theMap && !buildingRef.current && ((coordinates && coordinates?.length > 0) || model)) {\r\n let option = {\r\n position: position || { lat: 10.793113, lng: 106.720739 },\r\n name: name,\r\n scale: scale,\r\n bearing: bearing,\r\n elevation: elevation,\r\n height: height,\r\n model: model,\r\n texture: texture,\r\n coordinates: coordinates,\r\n visible: visible,\r\n draggable: draggable,\r\n clickable: clickable,\r\n selected: selected,\r\n growUp: growUp\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n buildingRef.current = new map4d.Building(option)\r\n buildingRef.current?.setMap(theMap)\r\n onCreated && onCreated(buildingRef.current)\r\n }\r\n }, [theMap, position, coordinates, model])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n buildingRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n buildingRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n buildingRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n buildingRef.current?.setPosition(position as map4d.ILatLng)\r\n }, [position])\r\n useEffect(() => {\r\n buildingRef.current?.setName(name)\r\n }, [name])\r\n useEffect(() => {\r\n buildingRef.current?.setScale(scale)\r\n }, [scale])\r\n useEffect(() => {\r\n buildingRef.current?.setBearing(bearing)\r\n }, [bearing])\r\n useEffect(() => {\r\n buildingRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n buildingRef.current?.setHeight(height)\r\n }, [height])\r\n useEffect(() => {\r\n buildingRef.current?.setModel(model)\r\n }, [model])\r\n useEffect(() => {\r\n buildingRef.current?.setTexture(texture)\r\n }, [texture])\r\n useEffect(() => {\r\n buildingRef.current?.setCoordinates(coordinates)\r\n }, [coordinates])\r\n useEffect(() => {\r\n buildingRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n buildingRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n buildingRef.current?.setClickable(clickable)\r\n }, [clickable])\r\n useEffect(() => {\r\n buildingRef.current?.setSelected(selected)\r\n }, [selected])\r\n useEffect(() => {\r\n buildingRef.current?.setGrowUp(growUp)\r\n }, [growUp])\r\n return null\r\n}\r\nexport default MFBuilding\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface BuildingOverlayProps {\r\n getUrl: (x: number, y: number, zoom: number) => any\r\n parserData: (response: any) => any\r\n prefixId?: string\r\n visible?: boolean\r\n map?: map4d.Map\r\n onCreated?: (buildingOverlay: map4d.BuildingOverlay) => void\r\n}\r\nconst MFBuildingOverlay = (props: BuildingOverlayProps) => {\r\n const {\r\n getUrl,\r\n visible,\r\n parserData,\r\n prefixId,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const buildingOverlayRef = useRef<map4d.BuildingOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n buildingOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n let option = {\r\n getUrl: getUrl || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n parserData: parserData,\r\n prefixId: prefixId\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n buildingOverlayRef.current = new map4d.BuildingOverlay(option)\r\n buildingOverlayRef.current?.setMap(theMap as map4d.Map)\r\n onCreated && onCreated(buildingOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !buildingOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n buildingOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n buildingOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n buildingOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [getUrl, parserData, prefixId, visible])\r\n return null\r\n}\r\nexport default MFBuildingOverlay\r\n","export class VariableTool {\r\n static hasValue = (variable: any) => {\r\n if (variable != undefined && variable != null) {\r\n return true\r\n }\r\n return false\r\n }\r\n}","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\nimport { VariableTool } from '../tool';\r\n\r\ninterface CircleProps {\r\n center: map4d.ILatLng\r\n radius: number\r\n fillColor?: string\r\n fillOpacity?: number\r\n visible?: boolean\r\n strokeColor?: string\r\n strokeWidth?: number\r\n draggable?: boolean\r\n zIndex?: number\r\n elevation?: number\r\n clickable?: boolean\r\n map?: map4d.Map\r\n onCreated?: (circle: map4d.Circle) => void,\r\n onClick?: (args: any) => void\r\n}\r\n\r\nconst MFCircle = (props: CircleProps) => {\r\n const {\r\n center,\r\n radius,\r\n fillColor=\"#0000FF\",\r\n fillOpacity = 1,\r\n visible = true,\r\n strokeColor = \"#00FF00\",\r\n strokeWidth,\r\n draggable,\r\n zIndex,\r\n elevation,\r\n clickable,\r\n map,\r\n onCreated,\r\n onClick\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const circleRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !circleRef.current) {\r\n let option = {\r\n center: center || { lat: 10.793113, lng: 106.720739 },\r\n radius: radius,\r\n fillColor: fillColor,\r\n fillOpacity: fillOpacity,\r\n visible: visible,\r\n strokeColor: strokeColor,\r\n strokeWidth: strokeWidth,\r\n draggable: draggable,\r\n zIndex: zIndex,\r\n elevation: elevation,\r\n clickable: clickable,\r\n }\r\n Object.keys(option).forEach((key: keyof typeof option) => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n circleRef.current = new map4d.Circle(option)\r\n circleRef.current?.setMap(theMap)\r\n onCreated && onCreated(circleRef.current)\r\n circleRef.current.onClick = onClick\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (circleRef.current) {\r\n circleRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n circleRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n circleRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n circleRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (VariableTool.hasValue(center)) {\r\n circleRef.current?.setCenter(center)\r\n }\r\n\r\n }, [center])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(radius)) {\r\n circleRef.current?.setRadius(radius as number)\r\n }\r\n }, [radius])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(fillColor)) {\r\n circleRef.current?.setFillColor(fillColor as string)\r\n }\r\n }, [fillColor])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(fillOpacity)) {\r\n circleRef.current?.setFillOpacity(fillOpacity as number)\r\n }\r\n }, [fillOpacity])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(visible)) {\r\n circleRef.current?.setVisible(visible as boolean)\r\n }\r\n }, [visible])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(strokeColor)) {\r\n circleRef.current?.setStrokeColor(strokeColor as string)\r\n }\r\n }, [strokeColor])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(strokeWidth)) {\r\n circleRef.current?.setStrokeWidth(strokeWidth as number)\r\n }\r\n }, [strokeWidth])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(draggable)) {\r\n circleRef.current?.setDraggable(draggable as boolean)\r\n }\r\n }, [draggable])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(zIndex)) {\r\n circleRef.current?.setZIndex(zIndex as number)\r\n }\r\n }, [zIndex])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(elevation)) {\r\n circleRef.current?.setElevation(elevation as number)\r\n }\r\n }, [elevation])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(clickable)) {\r\n circleRef.current?.setClickable(clickable as boolean)\r\n }\r\n }, [clickable])\r\n\r\n return null\r\n}\r\n\r\nexport default MFCircle\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface DataLayerProps {\r\n geoJsonString: string\r\n map?: map4d.Map\r\n onCreated?: (dataLeyer?: map4d.Data.Feature[]) => void\r\n}\r\n\r\nconst MFDataLayer = (props: DataLayerProps) => {\r\n const {\r\n geoJsonString,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const dataLayerRef = useRef<map4d.Data.Feature[]>()\r\n\r\n\r\n const reCreate = () => {\r\n dataLayerRef.current?.forEach((feature) => {\r\n theMap?.data?.remove(feature)\r\n })\r\n dataLayerRef.current = theMap?.data?.addGeoJson(geoJsonString)\r\n onCreated && onCreated(dataLayerRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n return () => {\r\n dataLayerRef.current?.forEach((feature) => {\r\n theMap?.data?.remove(feature)\r\n })\r\n }\r\n }, [])\r\n return null\r\n}\r\nexport default MFDataLayer\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface DirectionsRendererProps {\r\n routes?: string | object | map4d.RouteOptions | map4d.ILatLng[][]\r\n\r\n /**\r\n * @deprecated The `directions` prop is no longer support, which is subject to removal in a future versions. Use\r\n * the `routes` prop instead.\r\n */\r\n directions?: string\r\n activedIndex?: number\r\n\r\n activeStrokeWidth?: number\r\n activeStrokeColor?: string\r\n activeOutlineWidth?: number\r\n activeOutlineColor?: string\r\n activeStrokePattern?: map4d.PatternItem\r\n\r\n inactiveStrokeWidth?: number\r\n inactiveStrokeColor?: string\r\n inactiveOutlineWidth?: number\r\n inactiveOutlineColor?: string\r\n inactiveStrokePattern?: map4d.PatternItem\r\n\r\n originMarkerOptions?: map4d.MarkerOptions\r\n destinationMarkerOptions?: map4d.MarkerOptions\r\n waypointMarkerOptions?: map4d.MarkerOptions[]\r\n\r\n onMarkerDragEnd?: Function,\r\n\r\n map?: map4d.Map,\r\n onCreated?: (directionsRenderer?: map4d.DirectionsRenderer) => void\r\n onHover?: (args: any) => void\r\n onMouseOut?: (args: any) => void\r\n onMouseOver?: (args: any) => void\r\n onMouseMove?: (args: any) => void\r\n}\r\n\r\nconst MFDirectionsRenderer = (props: DirectionsRendererProps) => {\r\n const {\r\n routes,\r\n activedIndex,\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n activeStrokePattern,\r\n inactiveStrokeWidth,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n inactiveStrokePattern,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd,\r\n map,\r\n onHover,\r\n onCreated,\r\n onMouseOut,\r\n onMouseOver,\r\n onMouseMove\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const directionRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !directionRef.current) {\r\n let option = {\r\n routes,\r\n activedIndex,\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n activeStrokePattern,\r\n inactiveStrokeWidth,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n inactiveStrokePattern,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n directionRef.current = new map4d.DirectionsRenderer(option)\r\n directionRef.current?.setMap(theMap)\r\n directionRef.current.onHover = props.onHover\r\n directionRef.current.onMouseOut = onMouseOut\r\n directionRef.current.onMouseOver = onMouseOver\r\n directionRef.current.onMouseMove = onMouseMove\r\n onCreated && onCreated(directionRef.current)\r\n }\r\n return () => {\r\n directionRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onMouseOut = onMouseOut\r\n }\r\n }, [onMouseOut])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onMouseOver = onMouseOver\r\n }\r\n }, [onMouseOver])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onMouseMove = onMouseMove\r\n }\r\n }, [onMouseMove])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n directionRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n directionRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n directionRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n routes != undefined && directionRef.current?.setRoutes(routes)\r\n }, [routes])\r\n useEffect(() => {\r\n activedIndex != undefined && directionRef.current?.setActivedIndex(activedIndex)\r\n }, [activedIndex])\r\n useEffect(() => {\r\n activeStrokePattern != undefined && directionRef.current?.setActiveStrokePattern(activeStrokePattern)\r\n }, [activeStrokePattern])\r\n useEffect(() => {\r\n inactiveStrokePattern != undefined && directionRef.current?.setInactiveStrokePattern(inactiveStrokePattern)\r\n }, [inactiveStrokePattern])\r\n useEffect(() => {\r\n let option = {\r\n routes,\r\n activedIndex,\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n activeStrokePattern,\r\n inactiveStrokeWidth,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n inactiveStrokePattern,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n directionRef.current?.setOptions(option)\r\n },\r\n [\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd\r\n ]\r\n )\r\n\r\n\r\n return null\r\n}\r\nexport default MFDirectionsRenderer\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface GroundOverlayProps extends map4d.GroundOverlayOptions {\r\n map?: map4d.Map\r\n onCreated?: (groundOverlay: map4d.GroundOverlay) => void\r\n}\r\n\r\nconst MFGroundOverlay = (props: GroundOverlayProps) => {\r\n const {\r\n bounds,\r\n getUrl,\r\n override,\r\n visible,\r\n zIndex,\r\n opacity,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const groundOverlayRef = useRef<map4d.GroundOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n groundOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n let option = {\r\n bounds,\r\n getUrl: getUrl,\r\n override,\r\n visible: visible,\r\n zIndex: zIndex,\r\n opacity: opacity\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n groundOverlayRef.current = new map4d.TileOverlay(option)\r\n groundOverlayRef.current?.setMap(theMap as map4d.Map)\r\n onCreated && onCreated(groundOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !groundOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n groundOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n groundOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n groundOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [bounds, getUrl, override])\r\n useEffect(() => {\r\n visible != undefined && groundOverlayRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n zIndex != undefined && groundOverlayRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n opacity != undefined && groundOverlayRef.current?.setOpacity(opacity)\r\n }, [opacity])\r\n return null\r\n}\r\nexport default MFGroundOverlay\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface ImageOverlayProps extends map4d.ImageOverlayOptions {\r\n map?: map4d.Map,\r\n onCreated?: (imageOverlay: map4d.ImageOverlay) => void\r\n}\r\n\r\nconst MFImageOverlay = (props: ImageOverlayProps) => {\r\n const {\r\n url,\r\n bounds,\r\n visible,\r\n zIndex,\r\n opacity,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const imageOverlayRef = useRef<map4d.ImageOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n imageOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n let option = {\r\n url,\r\n bounds: bounds,\r\n visible: visible,\r\n zIndex: zIndex,\r\n opacity: opacity\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n imageOverlayRef.current = new map4d.ImageOverlay(option)\r\n imageOverlayRef.current?.setMap(theMap as map4d.Map)\r\n onCreated && onCreated(imageOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !imageOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n imageOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n imageOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n imageOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [url, bounds, zIndex])\r\n useEffect(() => {\r\n visible != undefined && imageOverlayRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n opacity != undefined && imageOverlayRef.current?.setOpacity(opacity)\r\n }, [opacity])\r\n return null\r\n}\r\nexport default MFImageOverlay\r\n","import React, { Fragment, useEffect, useRef, useState } from 'react';\r\nimport { Map4dContext } from '../context';\r\nimport { MapEventEnum } from '../enum';\r\n\r\nexport function addLibrary(url: string, id: string) {\r\n let scriptId = `script_${id}`\r\n let exist = document.getElementById(scriptId)\r\n if (exist) {\r\n return null\r\n }\r\n const script = document.createElement('script')\r\n script.src = url;\r\n script.defer = true;\r\n script.id = scriptId\r\n document.body.appendChild(script)\r\n return script\r\n}\r\n\r\nconst createId = () => {\r\n var dt = new Date().getTime();\r\n var uuid = 'xxxxxxxx_xxxx_4xxx_yxxx_xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = (dt + Math.random() * 16) % 16 | 0;\r\n dt = Math.floor(dt / 16);\r\n return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n return uuid;\r\n}\r\ninterface MapOptions {\r\n center?: any\r\n zoom?: number\r\n minZoom?: number\r\n maxZoom?: number\r\n maxNativeZoom?: number\r\n geolocate?: boolean\r\n tilt?: number\r\n bearing?: number\r\n controls?: boolean\r\n mapType?: any\r\n controlOptions?: any\r\n restrictionBounds?: any\r\n shouldChangeMapMode?: Function\r\n cooperativeGestures?: boolean\r\n}\r\ninterface MapProps {\r\n mapid?: string\r\n options: MapOptions,\r\n zoom?: number,\r\n bearing?: number,\r\n center?: any,\r\n tilt?: number\r\n version: string\r\n accessKey: string,\r\n environment?: \"dev\" | \"test\" | undefined | null,\r\n sdkDomain?: string | null\r\n onMapReady?: (map: any, key?: string) => void\r\n onClickLocation?: (args: any) => void\r\n onRightClickLocation?: (args: any) => void\r\n onCameraChanging?: (args: any) => void\r\n onTilesLoaded?: (args: any) => void\r\n children?: any\r\n}\r\n\r\nconst MFMap = (props: MapProps) => {\r\n\r\n const _options = useRef({\r\n options: props.options,\r\n mapId: props.mapid,\r\n version: props.version,\r\n environment: props.environment,\r\n accessKey: props.accessKey,\r\n sdkDomain: props.sdkDomain\r\n })\r\n\r\n const callback = useRef(`callback`)\r\n const mapDomRef = useRef<any>()\r\n const mapRef = useRef<map4d.Map>()\r\n const scriptElement = useRef<HTMLScriptElement>()\r\n const url = useRef<string>()\r\n const events = useRef<any[]>([])\r\n const { zoom, bearing, center, tilt } = props\r\n\r\n const [map, setMap] = useState<map4d.Map>()\r\n\r\n useEffect(() => {\r\n if (map) {\r\n let camera = map.getCamera()\r\n if (zoom != undefined && zoom != null) {\r\n camera.setZoom(zoom)\r\n }\r\n if (bearing != undefined && bearing != null) {\r\n camera.setBearing(bearing)\r\n }\r\n if (center != undefined && center != null) {\r\n camera.setTarget(center)\r\n }\r\n if (tilt != undefined && tilt != null) {\r\n camera.setTilt(center)\r\n }\r\n map.moveCamera(camera)\r\n }\r\n }, [zoom, bearing, center, map])\r\n\r\n\r\n useEffect(() => {\r\n const id = createId()\r\n callback.current = `callback_${id}`\r\n const createCallback = () => {\r\n window[callback.current] = () => {\r\n mapRef.current = new window.map4d.Map(mapDomRef.current, _options.current.options)\r\n if (props.onMapReady) {\r\n props.onMapReady(mapRef.current, id)\r\n }\r\n registerEvent()\r\n setMap(mapRef.current)\r\n }\r\n }\r\n let domain = `https://api${props.environment ? \"-\" + _options.current.environment : \"\"}.map4d.vn`\r\n if (_options.current.sdkDomain) {\r\n domain = _options.current.sdkDomain\r\n }\r\n let urlNew = `${domain}/sdk/map/js?version=${_options.current.version}&key=${_options.current.accessKey}&callback=${callback.current}`\r\n if (_options.current.mapId) {\r\n urlNew += `&mapId=${_options.current.mapId}`\r\n }\r\n createCallback()\r\n let script = addLibrary(urlNew, id)\r\n if (script) {\r\n scriptElement.current = script\r\n }\r\n url.current = urlNew\r\n return () => {\r\n const destroy = () => {\r\n delete window[callback.current]\r\n if (scriptElement.current != null) {\r\n scriptElement.current.remove()\r\n }\r\n events.current?.forEach((t: any) => {\r\n t?.remove()\r\n })\r\n mapRef.current?.destroy()\r\n url.current = undefined\r\n }\r\n destroy()\r\n }\r\n }, [props.environment, props.version, props.accessKey])\r\n\r\n useEffect(() => {\r\n props.options?.mapType != undefined && mapRef.current?.setMapType(props.options?.mapType)\r\n }, [props.options?.mapType])\r\n\r\n useEffect(() => {\r\n if (props.options?.center != undefined) {\r\n let camera = mapRef.current?.getCamera()\r\n camera?.setTarget(props.options?.center)\r\n mapRef.current?.moveCamera(camera)\r\n }\r\n props.options?.mapType != undefined && mapRef.current?.setMapType(props.options?.mapType)\r\n }, [props.options?.center])\r\n\r\n const registerEvent = () => {\r\n let eventClickMarker = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n args.marker?.onClick && args.marker?.onClick(args)\r\n }, {\r\n marker: true\r\n })\r\n let eventRightClickMarker = mapRef.current?.addListener(MapEventEnum.rightClick, (args: any) => {\r\n args.marker?.onRightClick && args.marker?.onRightClick(args)\r\n }, {\r\n marker: true\r\n })\r\n let eventDragEndMarker = mapRef.current?.addListener(MapEventEnum.dragEnd, (args: any) => {\r\n args.marker?.onDragEnd && args.marker?.onDragEnd(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventHoverMarker = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.marker?.onHover && args.marker?.onHover(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventHoverPolygon = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.polygon?.onHover && args.polygon?.onHover(args)\r\n }, {\r\n polygon: true\r\n })\r\n\r\n let eventHoverPolyline = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.polyline?.onHover && args.polyline?.onHover(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventHoverDirection = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.renderer?.onHover && args.renderer?.onHover(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventClickPolyline = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n args.polyline?.onClick && args.polyline?.onClick(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseOutDirection = mapRef.current?.addListener(MapEventEnum.mouseOut, (args: any) => {\r\n args.renderer?.onMouseOut && args.renderer?.onMouseOut(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventMouseOverDirection = mapRef.current?.addListener(MapEventEnum.mouseOver, (args: any) => {\r\n args.renderer?.onMouseOver && args.renderer?.onMouseOver(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventMouseMoveDirection = mapRef.current?.addListener(MapEventEnum.mouseMove, (args: any) => {\r\n args.renderer?.onMouseMove && args.renderer?.onMouseMove(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventMouseOutPolyline = mapRef.current?.addListener(MapEventEnum.mouseOut, (args: any) => {\r\n args.polyline?.onMouseOut && args.polyline?.onMouseOut(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseOverPolyline = mapRef.current?.addListener(MapEventEnum.mouseOver, (args: any) => {\r\n args.polyline?.onMouseOver && args.polyline?.onMouseOver(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseMovePolyline = mapRef.current?.addListener(MapEventEnum.mouseMove, (args: any) => {\r\n args.polyline?.onMouseMove && args.polyline?.onMouseMove(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseOutMarker = mapRef.current?.addListener(MapEventEnum.mouseOut, (args: any) => {\r\n args.marker?.onMouseOut && args.marker?.onMouseOut(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventMouseOverMarker = mapRef.current?.addListener(MapEventEnum.mouseOver, (args: any) => {\r\n args.marker?.onMouseOver && args.marker?.onMouseOver(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventMouseMoveMarker = mapRef.current?.addListener(MapEventEnum.mouseMove, (args: any) => {\r\n args.marker?.onMouseMove && args.marker?.onMouseMove(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventClickPoi = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n args.poi?.onClick && args.poi?.onClick(args)\r\n }, {\r\n poi: true\r\n })\r\n\r\n let eventHoverPoi = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.poi?.onHover && args.poi?.onHover(args)\r\n }, {\r\n poi: true\r\n })\r\n\r\n events.current = events.current.concat([\r\n eventClickMarker,\r\n eventRightClickMarker,\r\n eventDragEndMarker,\r\n eventHoverMarker,\r\n eventHoverPolygon,\r\n eventHoverPolyline,\r\n eventHoverDirection,\r\n eventClickPolyline,\r\n eventMouseOutDirection,\r\n eventMouseOverDirection,\r\n eventMouseMoveDirection,\r\n eventMouseOutPolyline,\r\n eventMouseOverPolyline,\r\n eventMouseMovePolyline,\r\n eventMouseOutMarker,\r\n eventMouseOverMarker,\r\n eventMouseMoveMarker,\r\n eventClickPoi,\r\n eventHoverPoi,\r\n mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n args.circle?.onClick && args.circle?.onClick(args)\r\n args.polygon?.onClick?.(args)\r\n }, {\r\n circle: true,\r\n polygon: true\r\n })\r\n ])\r\n if (props.onClickLocation) {\r\n let onClickLocation = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n props.onClickLocation && props.onClickLocation(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onClickLocation)\r\n }\r\n if (props.onRightClickLocation) {\r\n let onRightClickLocation = mapRef.current?.addListener(MapEventEnum.rightClick, (args: any) => {\r\n props.onRightClickLocation && props.onRightClickLocation(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onRightClickLocation)\r\n }\r\n if (props.onTilesLoaded) {\r\n let onTilesLoaded = mapRef.current?.addListener(MapEventEnum.tilesLoaded, (args: any) => {\r\n props.onTilesLoaded && props.onTilesLoaded(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onTilesLoaded)\r\n }\r\n if (props.onCameraChanging) {\r\n let onCameraChanging = mapRef.current?.addListener(MapEventEnum.cameraChanging, (args: any) => {\r\n props.onCameraChanging && props.onCameraChanging(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onCameraChanging)\r\n }\r\n }\r\n let newContext = {\r\n map: map\r\n }\r\n return (\r\n <Fragment>\r\n <div\r\n style={{ width: '100%', height: '100%', display: 'block' }}\r\n ref={mapDomRef}\r\n >\r\n </div>\r\n <Map4dContext.Provider value={newContext}>\r\n\r\n {\r\n props.children\r\n }\r\n </Map4dContext.Provider>\r\n </Fragment>\r\n\r\n );\r\n}\r\n\r\nexport default MFMap;\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext, MarkerClusterContext } from '../context';\r\nimport { VariableTool } from '../tool';\r\n\r\ninterface IconProps {\r\n width: number,\r\n height: number,\r\n url: string\r\n}\r\ninterface MarkerProps {\r\n position: any\r\n visible?: boolean\r\n anchor?: any\r\n labelAnchor?: any\r\n icon?: IconProps\r\n elevation?: number\r\n rotation?: number\r\n title?: string\r\n snippet?: string\r\n windowAnchor?: any\r\n zIndex?: number\r\n label?: string | map4d.MarkerLabelOptions\r\n draggable?: boolean\r\n iconView?: string | Node\r\n clickable?: boolean\r\n map?: any,\r\n infoWindow?: string | Node\r\n infoContents?: string | Node\r\n showInfoWindow?: boolean\r\n onClick?: (args: any) => void\r\n onCreated?: (marker: any) => void\r\n onRightClick?: (args: any) => void\r\n onDragEnd?: (args: any) => void\r\n onHover?: (args: any) => void\r\n onMouseOut?:(args: any)=> void\r\n onMouseOver?:(args: any)=> void\r\n onMouseMove?: (args: any)=> void\r\n}\r\n\r\nconst MFMarker = (props: MarkerProps) => {\r\n const {\r\n position,\r\n visible = true,\r\n anchor,\r\n labelAnchor,\r\n icon,\r\n elevation,\r\n rotation,\r\n title,\r\n snippet,\r\n windowAnchor,\r\n zIndex,\r\n label,\r\n draggable,\r\n iconView,\r\n clickable,\r\n map,\r\n onCreated,\r\n onClick,\r\n onRightClick,\r\n onDragEnd,\r\n onHover,\r\n onMouseOut,\r\n onMouseOver,\r\n onMouseMove\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const markerClusterContext = useContext(MarkerClusterContext)\r\n\r\n const theMap = map || map4dContext.map\r\n const markerRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !markerRef.current) {\r\n let markerLabel = typeof label == \"string\" ? label : new map4d.MarkerLabel(label)\r\n let option = {\r\n position: position || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n anchor: anchor,\r\n labelAnchor: labelAnchor,\r\n elevation: elevation,\r\n rotation: rotation,\r\n title: title,\r\n snippet: snippet,\r\n windowAnchor: windowAnchor,\r\n zIndex: zIndex,\r\n label: markerLabel,\r\n draggable: draggable,\r\n iconView: iconView,\r\n clickable: clickable\r\n } as map4d.MarkerOptions\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n if (icon) {\r\n let iconT = new map4d.Icon(icon.width, icon.height, icon.url)\r\n option.icon = iconT\r\n }\r\n markerRef.current = new map4d.Marker(option)\r\n if (props.infoWindow != undefined) {\r\n markerRef.current.setInfoWindow(props.infoWindow)\r\n }\r\n if (props.infoContents != undefined) {\r\n markerRef.current.setInfoContents(props.infoContents)\r\n }\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current.setMap(theMap)\r\n }\r\n if (props.showInfoWindow != undefined) {\r\n props.showInfoWindow ? markerRef.current?.showInfoWindow() : markerRef.current?.hideInfoWindow()\r\n }\r\n markerRef.current.onClick = onClick\r\n markerRef.current.onRightClick = props.onRightClick\r\n markerRef.current.onDragEnd = props.onDragEnd\r\n markerRef.current.onHover = props.onHover\r\n markerRef.current.onMouseOut = onMouseOut\r\n markerRef.current.onMouseOver = onMouseOver\r\n markerRef.current.onMouseMove = onMouseMove\r\n onCreated && onCreated(markerRef.current)\r\n markerClusterContext?.addMarker && markerClusterContext?.addMarker(markerRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current?.setMap(theMap)\r\n }\r\n }\r\n return () => {\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current?.setMap(null)\r\n }\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current?.setMap(null)\r\n }\r\n markerRef.current && markerClusterContext?.removeMarker && markerClusterContext?.removeMarker(markerRef.current)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onMouseOut = onMouseOut\r\n }\r\n }, [onMouseOut])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onMouseOver = onMouseOver\r\n }\r\n }, [onMouseOver])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onMouseMove = onMouseMove\r\n }\r\n }, [onMouseMove])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onRightClick = onRightClick\r\n }\r\n }, [onRightClick])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onHover = onDragEnd\r\n }\r\n }, [onDragEnd])\r\n\r\n useEffect(() => {\r\n markerRef.current?.setPosition(position)\r\n }, [position])\r\n useEffect(() => {\r\n markerRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n anchor != undefined && markerRef.current?.setAnchor(anchor)\r\n }, [anchor])\r\n useEffect(() => {\r\n labelAnchor != undefined && markerRef.current?.setLabelAnchor(labelAnchor)\r\n }, [labelAnchor])\r\n useEffect(() => {\r\n icon != undefined && markerRef.current?.setIcon(icon)\r\n }, [icon])\r\n useEffect(() => {\r\n elevation != undefined && markerRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n rotation != undefined && markerRef.current?.setRotation(rotation)\r\n }, [rotation])\r\n useEffect(() => {\r\n title != undefined && markerRef.current?.setTitle(title)\r\n }, [title])\r\n useEffect(() => {\r\n snippet != undefined && markerRef.current?.setSnippet(snippet)\r\n }, [snippet])\r\n useEffect(() => {\r\n windowAnchor != undefined && markerRef.current?.setWindowAnchor(windowAnchor)\r\n }, [windowAnchor])\r\n useEffect(() => {\r\n zIndex != undefined && markerRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n if (theMap && VariableTool.hasValue(label)) {\r\n let markerLabel = typeof label == \"string\" ? label : new map4d.MarkerLabel(label)\r\n markerRef.current?.setLabel(markerLabel)\r\n }\r\n }, [label])\r\n useEffect(() => {\r\n draggable != undefined && markerRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n\r\n useEffect(() => {\r\n iconView != undefined && markerRef.current?.setIconView(iconView)\r\n }, [iconView])\r\n\r\n useEffect(() => {\r\n clickable != undefined && markerRef.current?.setClickable(clickable)\r\n }, [clickable])\r\n\r\n useEffect(() => {\r\n icon != undefined && markerRef.current?.setIcon(new map4d.Icon(icon.width, icon.height, icon.url))\r\n }, [icon])\r\n\r\n useEffect(() => {\r\n props.infoWindow != undefined && markerRef.current?.setInfoWindow(props.infoWindow)\r\n }, [props.infoWindow])\r\n\r\n useEffect(() => {\r\n props.infoContents != undefined && markerRef.current?.setInfoContents(props.infoContents)\r\n }, [props.infoContents])\r\n\r\n useEffect(() => {\r\n if (props.showInfoWindow != undefined) {\r\n props.showInfoWindow ? markerRef.current?.showInfoWindow() : markerRef.current?.hideInfoWindow()\r\n }\r\n }, [props.showInfoWindow])\r\n return null\r\n}\r\nexport default MFMarker\r\n","import React, { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext, MarkerClusterContext } from '../context';\r\n\r\ninterface MarkerClusterProps extends map4d.MarkerClusterOptions {\r\n map?: map4d.Map,\r\n onCreated?: (markerCluster: map4d.MarkerClusterer) => void,\r\n children?: any\r\n}\r\n\r\nconst MFMarkerCluster = (props: MarkerClusterProps) => {\r\n const {\r\n minZoom = 0,\r\n maxZoom = 22,\r\n radius = 100,\r\n zoomOnClick,\r\n clusterIcon,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const markerRefs = useRef<map4d.Marker[]>([])\r\n const markerClusterRef = useRef<map4d.MarkerClusterer>()\r\n\r\n const drawCluster = () => {\r\n markerClusterRef.current?.setMap(null)\r\n if (theMap) {\r\n let option = {\r\n minZoom: minZoom,\r\n maxZoom: maxZoom,\r\n radius: radius,\r\n zoomOnClick: zoomOnClick,\r\n clusterIcon: clusterIcon,\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n if (markerRefs.current && markerRefs.current?.length > 0) {\r\n markerClusterRef.current = new map4d.MarkerClusterer(markerRefs.current, option)\r\n markerClusterRef.current?.setMap(theMap)\r\n onCreated && onCreated(markerClusterRef.current)\r\n }\r\n\r\n }\r\n }\r\n const clusterContext = {\r\n addMarker: (marker: map4d.Marker) => {\r\n markerRefs.current.push(marker)\r\n drawCluster()\r\n },\r\n removeMarker: (marker: map4d.Marker) => {\r\n let newMarkers = markerRefs.current.filter(t => t != marker)\r\n markerRefs.current = newMarkers\r\n drawCluster()\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !markerClusterRef.current) {\r\n drawCluster()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n markerClusterRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n markerClusterRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n markerClusterRef.current?.setMap(null)\r\n }\r\n }, [])\r\n useEffect(() => {\r\n if (theMap) {\r\n drawCluster()\r\n }\r\n }, [minZoom, maxZoom, radius, clusterIcon])\r\n useEffect(() => {\r\n zoomOnClick != undefined && markerClusterRef.current?.setZoomOnClick(zoomOnClick)\r\n }, [zoomOnClick])\r\n\r\n return (\r\n <MarkerClusterContext.Provider value={clusterContext}>\r\n {props?.children}\r\n </MarkerClusterContext.Provider>\r\n )\r\n}\r\nexport default MFMarkerCluster\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface POIProps extends map4d.POIOptions {\r\n position: any\r\n title?: string\r\n subtitle?: string\r\n color?: string\r\n type?: string\r\n icon?: string\r\n elevation?: number\r\n zIndex?: number\r\n visible?: boolean\r\n draggable?: boolean\r\n clickable?: boolean\r\n map?: map4d.Map,\r\n onCreated?: (poi: map4d.POI) => void\r\n onClick?: (args: any) => void\r\n onHover?: (args: any) => void\r\n}\r\n\r\nconst MFPOI = (props: POIProps) => {\r\n const {\r\n position,\r\n title,\r\n subtitle,\r\n color,\r\n type,\r\n icon,\r\n elevation,\r\n zIndex,\r\n visible,\r\n draggable,\r\n clickable,\r\n map,\r\n onCreated,\r\n onClick,\r\n onHover\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const poiRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !poiRef.current) {\r\n let option = {\r\n position: position || { lat: 10.793113, lng: 106.720739 },\r\n title: title,\r\n subtitle: subtitle,\r\n color: color,\r\n type: type,\r\n icon: icon,\r\n elevation: elevation,\r\n zIndex: zIndex,\r\n visible: visible,\r\n draggable: draggable,\r\n clickable: clickable\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n poiRef.current = new map4d.POI(option)\r\n poiRef.current.onClick = onClick\r\n poiRef.current.onHover = onHover\r\n poiRef.current?.setMap(theMap)\r\n onCreated && onCreated(poiRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n poiRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n poiRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n poiRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n poiRef.current?.setPosition(position)\r\n }, [position])\r\n useEffect(() => {\r\n title != undefined && poiRef.current?.setTitle(title)\r\n }, [title])\r\n useEffect(() => {\r\n subtitle != undefined && poiRef.current?.setSubtitle(subtitle)\r\n }, [subtitle])\r\n useEffect(() => {\r\n color != undefined && poiRef.current?.setColor(color)\r\n }, [color])\r\n useEffect(() => {\r\n type != undefined && poiRef.current?.setType(type)\r\n }, [type])\r\n useEffect(() => {\r\n icon != undefined && poiRef.current?.setIcon(icon)\r\n }, [icon])\r\n useEffect(() => {\r\n elevation != undefined && poiRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n zIndex != undefined && poiRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n visible != undefined && poiRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n draggable != undefined && poiRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n clickable != undefined && poiRef.current?.setClickable(clickable)\r\n }, [clickable])\r\n\r\n useEffect(() => {\r\n if (poiRef.current) {\r\n poiRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n useEffect(() => {\r\n if (poiRef.current) {\r\n poiRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n return null\r\n}\r\nexport default MFPOI\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface POIOverlayProps extends map4d.POIOverlayOptions {\r\n map?: map4d.Map,\r\n onCreated?: (poiOverlay: map4d.POIOverlay) => void\r\n}\r\n\r\nconst MFPOIOverlay = (props: POIOverlayProps) => {\r\n const {\r\n getUrl,\r\n visible = true,\r\n parserData,\r\n prefixId,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const poiOverlayRef = useRef<map4d.POIOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n poiOverlayRef.current?.setMap(null)\r\n let option = {\r\n getUrl: getUrl || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n parserData: parserData,\r\n prefixId: prefixId\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n poiOverlayRef.current = new map4d.POIOverlay(option)\r\n poiOverlayRef.current?.setMap(theMap)\r\n onCreated && onCreated(poiOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !poiOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n poiOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n poiOverlayRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n poiOverlayRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [getUrl, parserData, prefixId])\r\n return null\r\n}\r\nexport default MFPOIOverlay\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface PolygonProps {\r\n paths: any[][]\r\n fillColor?: string\r\n fillOpacity?: number\r\n visible?: boolean\r\n strokeColor?: string\r\n strokeWidth?: number\r\n draggable?: boolean\r\n zIndex?: number\r\n elevation?: number\r\n clickable?: boolean\r\n map?: map4d.Map,\r\n onCreated?: (polygon: map4d.Polygon) => void\r\n onHover?: (args: any) => void,\r\n onClick?: (args: any) => void\r\n}\r\n\r\nconst MFPolygon = (props: PolygonProps) => {\r\n const {\r\n paths,\r\n fillColor,\r\n fillOpacity,\r\n visible = true,\r\n strokeColor,\r\n strokeWidth,\r\n draggable,\r\n elevation,\r\n zIndex,\r\n clickable,\r\n map,\r\n onHover,\r\n onClick,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const polygonRef = useRef<any>()\r\n const a = useRef()\r\n useEffect(() => {\r\n if (theMap && !polygonRef.current) {\r\n let option = {\r\n paths: paths,\r\n fillColor: fillColor,\r\n fillOpacity: fillOpacity,\r\n visible: visible,\r\n strokeColor: strokeColor,\r\n strokeWidth: strokeWidth,\r\n draggable: draggable,\r\n elevation: elevation,\r\n zIndex: zIndex,\r\n clickable: clickable,\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n polygonRef.current = new map4d.Polygon(option)\r\n a.current = theMap\r\n console.log(a.current)\r\n polygonRef.current?.setMap(theMap)\r\n polygonRef.current.onHover = props.onHover\r\n polygonRef.current.onClick = onClick\r\n onCreated && onCreated(polygonRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n polygonRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n polygonRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n polygonRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (polygonRef.current) {\r\n polygonRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (polygonRef.current) {\r\n polygonRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n\r\n useEffect(() => {\r\n polygonRef.current?.setPaths(paths)\r\n }, [paths])\r\n useEffect(() => {\r\n fillColor != undefined && polygonRef.current?.setFillColor(fillColor)\r\n }, [fillColor])\r\n useEffect(() => {\r\n fillOpacity != undefined && polygonRef.current?.setFillOpacity(fillOpacity)\r\n }, [fillOpacity])\r\n useEffect(() => {\r\n polygonRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n strokeColor != undefined && polygonRef.current?.setStrokeColor(strokeColor)\r\n }, [strokeColor])\r\n useEffect(() => {\r\n strokeWidth != undefined && polygonRef.current?.setStrokeWidth(strokeWidth)\r\n }, [strokeWidth])\r\n useEffect(() => {\r\n draggable != undefined && polygonRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n elevation != undefined && polygonRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n zIndex != undefined && polygonRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n clickable != undefined && polygonRef.current?.setClickable(clickable)\r\n }, [clickable])\r\n\r\n return null\r\n}\r\nexport default MFPolygon\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface PolylineProps {\r\n path: any[]\r\n strokeWidth: number\r\n strokeColor?: string\r\n strokeOpacity?: number\r\n visible?: boolean\r\n closed?: boolean\r\n draggable?: boolean\r\n zIndex?: number\r\n elevation?: number\r\n strokePattern?: any\r\n clickable?: boolean\r\n map?: map4d.Map\r\n onCreated?: (polyline: map4d.Polyline) => void\r\n onHover?: (args: any) => void\r\n onClick?: (args: any) => void\r\n onMouseOut?:(args: any)=> void\r\n onMouseOver?:(args: any)=> void\r\n onMouseMove?: (args: any)=> void\r\n}\r\n\r\nconst MFPolyline = (props: PolylineProps) => {\r\n const {\r\n path,\r\n strokeWidth,\r\n strokeColor,\r\n strokeOpacity,\r\n visible = true,\r\n closed,\r\n draggable,\r\n zIndex,\r\n elevation,\r\n strokePattern,\r\n clickable,\r\n map,\r\n onClick,\r\n onHover,\r\n onCreated,\r\n onMouseOut,\r\n onMouseOver,\r\n onMouseMove\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const polylineRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !polylineRef.current) {\r\n let option = {\r\n path: path || { lat: 10.793113, lng: 106.720739 },\r\n strokeWidth: strokeWidth,\r\n strokeColor: strokeColor,\r\n strokeOpacity: strokeOpacity,\r\n visible: visible,\r\n closed: closed,\r\n draggable: draggable,\r\n zIndex: zIndex,\r\n elevation: elevation,\r\n strokePattern: strokePattern,\r\n clickable: clickable,\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n polylineRef.current = new map4d.Polyline(option)\r\n polylineRef.current?.setMap(theMap)\r\n polylineRef.current.onHover = props.onHover\r\n polylineRef.current.onClick = props.onClick\r\n polylineRef.current.onMouseOut = onMouseOut\r\n polylineRef.current.onMouseOver = onMouseOver\r\n polylineRef.current.onMouseMove = onMouseMove\r\n onCreated && onCreated(polylineRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n polylineRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n polylineRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n polylineRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onMouseOut = onMouseOut\r\n }\r\n }, [onMouseOut])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onMouseOver = onMouseOver\r\n }\r\n }, [onMouseOver])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onMouseMove = onMouseMove\r\n }\r\n }, [onMouseMove])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n\r\n useEffect(() => {\r\n polylineRef.current?.setPath(path)\r\n }, [path])\r\n useEffect(() => {\r\n strokeWidth != undefined && polylineRef.current?.setStrokeWidth(strokeWidth)\r\n }, [strokeWidth])\r\n useEffect(() => {\r\n strokeColor != undefined && polylineRef.current?.setStrokeColor(strokeColor)\r\n }, [strokeColor])\r\n useEffect(() => {\r\n strokeOpacity != undefined && polylineRef.current?.setStrokeOpacity(strokeOpacity)\r\n }, [strokeOpacity])\r\n useEffect(() => {\r\n visible != undefined && polylineRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n closed != undefined && polylineRef.current?.setClosed(closed)\r\n }, [closed])\r\n useEffect(() => {\r\n draggable != undefined && polylineRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n zIndex != undefined && polylineRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n elevation != undefined && polylineRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n strokePattern != undefined && polylineRef.current?.setStrokePattern(strokePattern)\r\n }, [strokePattern])\r\n useEffect(() => {\r\n clickable != undefined && polylineRef.current?.setClickable(clickable)\r\n }, [clickable])\r\n\r\n return null\r\n}\r\nexport default MFPolyline\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface TileOverlayProps {\r\n getUrl: Function\r\n visible?: boolean\r\n zIndex?: number\r\n opacity?: number\r\n map?: map4d.Map,\r\n onCreated?: (tileOverlay: map4d.TileOverlay) => void\r\n}\r\n\r\nconst MFTileOverlay = (props: TileOverlayProps) => {\r\n const {\r\n getUrl,\r\n visible = true,\r\n zIndex,\r\n opacity,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const tileOverlayRef = useRef<map4d.TileOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n tileOverlayRef.current?.setMap(null)\r\n let option = {\r\n getUrl: getUrl || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n zIndex: zIndex,\r\n opacity: opacity\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n tileOverlayRef.current = new map4d.TileOverlay(option)\r\n tileOverlayRef.current?.setMap(theMap)\r\n onCreated && onCreated(tileOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !tileOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n tileOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n tileOverlayRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n tileOverlayRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [getUrl])\r\n useEffect(() => {\r\n tileOverlayRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n zIndex != undefined && tileOverlayRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n opacity != undefined && tileOverlayRef.current?.setOpacity(opacity)\r\n }, [opacity])\r\n return null\r\n}\r\nexport default MFTileOverlay\r\n","/**\r\n * class vector 2\r\n */\r\nexport class Vector2 {\r\n\r\n /**\r\n * create a vector 2 class\r\n * @param x\r\n * @param y\r\n */\r\n constructor(public x: number = 0.0,\r\n public y: number = 0.0) {\r\n }\r\n\r\n clone() {\r\n return new Vector2(this.x, this.y)\r\n }\r\n\r\n /**\r\n * get the length of the vector\r\n * @returns {number}\r\n */\r\n get length(): number {\r\n return Math.sqrt(this.x * this.x + this.y * this.y)\r\n }\r\n\r\n /**\r\n * @return {number}\r\n */\r\n get lengthSq(): number {\r\n return this.x * this.x + this.y * this.y\r\n }\r\n\r\n /**\r\n * normalize the vector\r\n * @returns {Vector2}\r\n */\r\n normalize(): Vector2 {\r\n let length = this.length\r\n let x = 0.0\r\n let y = 0.0\r\n\r\n if (length > 0) {\r\n x = this.x / length\r\n y = this.y / length\r\n }\r\n\r\n return new Vector2(x, y)\r\n }\r\n\r\n /**\r\n * set value of the vector\r\n * @param a\r\n */\r\n set(a: Vector2) {\r\n this.x = a.x\r\n this.y = a.y\r\n }\r\n\r\n /**\r\n * invert the vector direction\r\n * @returns {Vector2}\r\n */\r\n invert() {\r\n return new Vector2(-this.x, -this.y)\r\n }\r\n\r\n /**\r\n * rotate 90\r\n * @returns {Vector2}\r\n */\r\n rotate90() {\r\n return new Vector2(this.y, -this.x)\r\n }\r\n\r\n /**\r\n * add to another vector\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n add(a: Vector2) {\r\n return new Vector2(a.x + this.x, a.y + this.y)\r\n }\r\n\r\n /**\r\n * subtract with another vector\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n subtract(a: Vector2) {\r\n if (!a) {\r\n return this.clone()\r\n }\r\n return new Vector2(this.x - a.x, this.y - a.y)\r\n }\r\n\r\n /**\r\n * multiply by a number\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n multiply(a: number) {\r\n return new Vector2(a * this.x, a * this.y)\r\n }\r\n\r\n /**\r\n * rotate by an angle\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n rotateBy(a: number) {\r\n let cos = Math.cos(a * Math.PI / 180)\r\n let sin = Math.sin(a * Math.PI / 180)\r\n return new Vector2(this.x * cos - this.y * sin, this.x * sin + this.y * cos)\r\n }\r\n\r\n rotateByRadian(a: number): Vector2 {\r\n let cos = Math.cos(a)\r\n let sin = Math.sin(a)\r\n return new Vector2(this.x * cos - this.y * sin, this.x * sin + this.y * cos)\r\n }\r\n\r\n /**\r\n * multiply by a vector\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n cross(a: Vector2) {\r\n return this.x * a.y - this.y * a.x\r\n }\r\n\r\n /**\r\n * dot a vector\r\n * @param a\r\n * @returns {number}\r\n */\r\n dot(a: Vector2) {\r\n return a.x * this.x + a.y * this.y\r\n }\r\n\r\n static perp(v1: number[], v2: number[]) {\r\n return new Vector2(v2[1] - v1[1],\r\n v1[0] - v2[0])\r\n }\r\n\r\n static neg(v: Vector2) {\r\n return new Vector2(-v.x, -v.y)\r\n }\r\n}\r\n","import {Vector2} from \"./Vector2\"\r\n\r\nexport class MathUtils {\r\n static clamp(value: number, min: number, max: number) {\r\n return value < min ? min : (value > max ? max : value)\r\n }\r\n\r\n static toRadians(angleDegrees: number) {\r\n return (angleDegrees * Math.PI) / 180.0\r\n }\r\n\r\n static distance(p1: Vector2, p2: Vector2): number {\r\n return Math.sqrt((p1.x - p2.x)*(p1.x - p2.x) + (p1.y - p2.y)*(p1.y - p2.y))\r\n }\r\n\r\n static findNextPowerOf2(n: number) {\r\n /** decrement `n` (to handle the case when `n` itself is a power of 2) **/\r\n n = n - 1\r\n\r\n /** calculate the position of the last set bit of `n` **/\r\n let lg = Math.log2(n)\r\n\r\n /** next power of two will have a bit set at position `lg+1`. **/\r\n return 1 << lg + 1\r\n }\r\n\r\n static findPreviousPowerOf2(n: number) {\r\n return 1 << 31 - Math.clz32(n)\r\n }\r\n}\r\n","/**\r\n * class vector 3\r\n */\r\nexport class Vector3 {\r\n\r\n /**\r\n * create a vector 3 class\r\n * @param x\r\n * @param y\r\n * @param z\r\n */\r\n constructor(public x: number = 0.0,\r\n public y: number = 0.0,\r\n public z: number = 0.0) {\r\n }\r\n\r\n clone() {\r\n return new Vector3(this.x, this.y, this.z)\r\n }\r\n\r\n buffer(): Float32Array {\r\n return new Float32Array([this.x, this.y, this.z])\r\n }\r\n\r\n /**\r\n * get the length of the vector\r\n * @returns {number}\r\n */\r\n get length(): number {\r\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z)\r\n }\r\n\r\n /**\r\n * @return {number}\r\n */\r\n get lengthSq(): number {\r\n return this.x * this.x + this.y * this.y + this.z * this.z\r\n }\r\n\r\n /**\r\n * normalize the vector\r\n * @returns {Vector3}\r\n */\r\n normalize(): Vector3 {\r\n let length = this.length\r\n let x = 0.0\r\n let y = 0.0\r\n let z = 0.0\r\n\r\n if (length > 0) {\r\n x = this.x / length\r\n y = this.y / length\r\n z = this.z / length\r\n }\r\n\r\n return new Vector3(x, y, z)\r\n }\r\n\r\n /**\r\n * set value of the vector\r\n * @param a\r\n */\r\n set(a: Vector3) {\r\n this.x = a.x\r\n this.y = a.y\r\n this.z = a.z\r\n }\r\n\r\n /**\r\n * invert the vector direction\r\n * @returns {Vector3}\r\n */\r\n invert() {\r\n return new Vector3(-this.x, -this.y, -this.z)\r\n }\r\n\r\n /**\r\n * rotate 90\r\n * @returns {Vector3}\r\n */\r\n rotate90() {\r\n return new Vector3(this.y, -this.x, this.z)\r\n }\r\n\r\n /**\r\n * add to another vector\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n add(a: Vector3) {\r\n return new Vector3(a.x + this.x, a.y + this.y, a.z + this.z)\r\n }\r\n\r\n /**\r\n * subtract with another vector\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n subtract(a: Vector3) {\r\n if (!a) {\r\n return this.clone()\r\n }\r\n return new Vector3(this.x - a.x, this.y - a.y, this.z - a.z)\r\n }\r\n\r\n /**\r\n * multiply by a number\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n multiply(a: number) {\r\n return new Vector3(a * this.x, a * this.y, a * this.z)\r\n }\r\n\r\n /**\r\n * rotate by an angle\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n rotateBy(a: number) {\r\n let cos = Math.cos(a * Math.PI / 180)\r\n let sin = Math.sin(a * Math.PI / 180)\r\n return new Vector3(this.x * cos - this.y * sin, this.x * sin + this.y * cos)\r\n }\r\n\r\n /**\r\n * multiply by a vector\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n cross(a: Vector3) {\r\n return new Vector3(\r\n this.y * a.z - this.z * a.y,\r\n this.z * a.x - this.x * a.z,\r\n this.x * a.y - this.y * a.x\r\n )\r\n }\r\n\r\n /**\r\n * dot a vector\r\n * @param a\r\n * @returns {number}\r\n */\r\n dot(a: Vector3) {\r\n return a.x * this.x + a.y * this.y + a.z * this.z\r\n }\r\n\r\n static perp(v1: number[], v2: number[]) {\r\n return new Vector3(v2[1] - v1[1],\r\n v1[0] - v2[0])\r\n }\r\n\r\n static neg(v: Vector3) {\r\n return new Vector3(-v.x, -v.y, -v.z)\r\n }\r\n}\r\n","/**\r\n * the matrix class\r\n */\r\nimport {Vector3} from \"./Vector3\"\r\n\r\nexport class Matrix4 {\r\n\r\n /**\r\n * create an eye 4x4 matrix\r\n * @param data\r\n */\r\n constructor(public data: Float32Array = new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, 1.0, 0.0, 0.0,\r\n 0.0, 0.0, 1.0, 0.0,\r\n 0.0, 0.0, 0.0, 1.0])) {\r\n }\r\n\r\n setIdentity(x = 1.0, y = 1.0, z = 1.0) {\r\n this.data[0] = x\r\n this.data[1] = 0\r\n this.data[2] = 0\r\n this.data[3] = 0\r\n this.data[4] = 0\r\n this.data[5] = y\r\n this.data[6] = 0\r\n this.data[7] = 0\r\n this.data[8] = 0\r\n this.data[9] = 0\r\n this.data[10] = z\r\n this.data[11] = 0\r\n this.data[12] = 0\r\n this.data[13] = 0\r\n this.data[14] = 0\r\n this.data[15] = 1.0\r\n return this\r\n }\r\n\r\n copy(other: Matrix4) {\r\n this.data[0] = other.data[0]\r\n this.data[1] = other.data[1]\r\n this.data[2] = other.data[2]\r\n this.data[3] = other.data[3]\r\n this.data[4] = other.data[4]\r\n this.data[5] = other.data[5]\r\n this.data[6] = other.data[6]\r\n this.data[7] = other.data[7]\r\n this.data[8] = other.data[8]\r\n this.data[9] = other.data[9]\r\n this.data[10] = other.data[10]\r\n this.data[11] = other.data[11]\r\n this.data[12] = other.data[12]\r\n this.data[13] = other.data[13]\r\n this.data[14] = other.data[14]\r\n this.data[15] = other.data[15]\r\n return this\r\n }\r\n\r\n /**\r\n * get a translation matrix\r\n * @param x\r\n * @param y\r\n * @param z\r\n * @returns {Matrix4}\r\n */\r\n static translate(x: number, y: number, z: number = 0.0) {\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, 1.0, 0.0, 0.,\r\n 0.0, 0.0, 1.0, 0.0,\r\n x, y, z, 1.0]))\r\n }\r\n\r\n translate(x: number, y: number, z: number = 0.0) {\r\n this.data[12] += x\r\n this.data[13] += y\r\n this.data[14] += z\r\n return this\r\n }\r\n\r\n get position() {\r\n return new Vector3(this.data[12], this.data[13], this.data[14])\r\n }\r\n\r\n /**\r\n * get a rotation matrix around x-axis\r\n * @param alpha\r\n * @returns {Matrix4}\r\n */\r\n static rotateX(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, cosA, sinA, 0.0,\r\n 0.0, -sinA, cosA, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ]))\r\n }\r\n\r\n setRotationX(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n this.setIdentity()\r\n this.data[5] = cosA\r\n this.data[6] = sinA\r\n this.data[9] = -sinA\r\n this.data[10] = cosA\r\n return this\r\n }\r\n\r\n\r\n rotateX(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n let r1 = this.data[1]\r\n let r2 = this.data[2]\r\n this.data[1] = r1 * cosA - r2 * sinA\r\n this.data[2] = r1 * sinA + r2 * cosA\r\n\r\n r1 = this.data[5]\r\n r2 = this.data[6]\r\n this.data[5] = r1 * cosA - r2 * sinA\r\n this.data[6] = r1 * sinA + r2 * cosA\r\n\r\n r1 = this.data[9]\r\n r2 = this.data[10]\r\n this.data[9] = r1 * cosA - r2 * sinA\r\n this.data[10] = r1 * sinA + r2 * cosA\r\n\r\n r1 = this.data[13]\r\n r2 = this.data[14]\r\n this.data[13] = r1 * cosA - r2 * sinA\r\n this.data[14] = r1 * sinA + r2 * cosA\r\n return this\r\n }\r\n\r\n\r\n /**\r\n * get a rotation matrix around y-axis\r\n * @param alpha\r\n * @returns {Matrix4}\r\n */\r\n static rotateY(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n cosA, 0.0, sinA, 0.0,\r\n 0.0, 1.0, 0.0, 0.0,\r\n -sinA, 0.0, cosA, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ]))\r\n }\r\n\r\n setRotationY(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n this.setIdentity()\r\n this.data[0] = cosA\r\n this.data[2] = sinA\r\n this.data[8] = -sinA\r\n this.data[10] = cosA\r\n return this\r\n }\r\n\r\n rotateY(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n let r0 = this.data[0]\r\n let r2 = this.data[2]\r\n this.data[0] = r0 * cosA - r2 * sinA\r\n this.data[2] = r0 * sinA + r2 * cosA\r\n\r\n r0 = this.data[4]\r\n r2 = this.data[6]\r\n this.data[4] = r0 * cosA - r2 * sinA\r\n this.data[6] = r0 * sinA + r2 * cosA\r\n\r\n r0 = this.data[8]\r\n r2 = this.data[10]\r\n this.data[8] = r0 * cosA - r2 * sinA\r\n this.data[10] = r0 * sinA + r2 * cosA\r\n\r\n r0 = this.data[12]\r\n r2 = this.data[14]\r\n this.data[12] = r0 * cosA - r2 * sinA\r\n this.data[14] = r0 * sinA + r2 * cosA\r\n return this\r\n }\r\n\r\n /**\r\n * get a rotation matrix around z-axis\r\n * @param alpha\r\n * @returns {Matrix4}\r\n */\r\n static rotateZ(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n cosA, sinA, 0.0, 0.0,\r\n -sinA, cosA, 0.0, 0.0,\r\n 0.0, 0.0, 1.0, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ]))\r\n }\r\n\r\n setRotationZ(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n this.setIdentity()\r\n this.data[0] = cosA\r\n this.data[1] = sinA\r\n this.data[4] = -sinA\r\n this.data[5] = cosA\r\n return this\r\n }\r\n\r\n rotateZ(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n let r0 = this.data[0]\r\n let r1 = this.data[1]\r\n\r\n this.data[0] = r0 * cosA - r1 * sinA\r\n this.data[1] = r0 * sinA + r1 * cosA\r\n\r\n r0 = this.data[4]\r\n r1 = this.data[5]\r\n this.data[4] = r0 * cosA - r1 * sinA\r\n this.data[5] = r0 * sinA + r1 * cosA\r\n\r\n r0 = this.data[8]\r\n r1 = this.data[9]\r\n this.data[8] = r0 * cosA - r1 * sinA\r\n this.data[9] = r0 * sinA + r1 * cosA\r\n\r\n r0 = this.data[12]\r\n r1 = this.data[13]\r\n this.data[12] = r0 * cosA - r1 * sinA\r\n this.data[13] = r0 * sinA + r1 * cosA\r\n return this\r\n }\r\n\r\n /**\r\n * get a scale matrix\r\n * @param x\r\n * @param y\r\n * @param z\r\n * @returns {Matrix4}\r\n */\r\n // static scale(x: number, y?: number, z?: number) {\r\n // if (y == null) {\r\n // y = x\r\n // z = x\r\n // }\r\n\r\n // return new Matrix4( new Float32Array([\r\n // x, 0.0, 0.0, 0.0,\r\n // 0.0, y, 0.0, 0.0,\r\n // 0.0, 0.0, z, 0.0,\r\n // 0.0, 0.0, 0.0, 1.0\r\n // ]))\r\n // }\r\n\r\n // scale(x: number, y?: number, z?: number) {\r\n // if (y == null) {\r\n // y = x\r\n // z = x\r\n // }\r\n\r\n // let r0 = this.data[0]\r\n // let r1 = this.data[1]\r\n // let r2 = this.data[2]\r\n // this.data[0] = r0 * x\r\n // this.data[1] = r1 * y\r\n // this.data[2] = r2 * z\r\n\r\n // r0 = this.data[4]\r\n // r1 = this.data[5]\r\n // r2 = this.data[6]\r\n // this.data[4] = r0 * x\r\n // this.data[5] = r1 * y\r\n // this.data[6] = r2 * z\r\n\r\n // r0 = this.data[8]\r\n // r1 = this.data[9]\r\n // r2 = this.data[10]\r\n // this.data[8] = r0 * x\r\n // this.data[9] = r1 * y\r\n // this.data[10] = r2 * z\r\n\r\n // r0 = this.data[12]\r\n // r1 = this.data[13]\r\n // r2 = this.data[14]\r\n // this.data[12] = r0 * x\r\n // this.data[13] = r1 * y\r\n // this.data[14] = r2 * z\r\n // return this\r\n // }\r\n\r\n /**\r\n * concatenate with other transformation matrix\r\n * @param matrix\r\n * @returns {Matrix4}\r\n */\r\n multiply(matrix: Matrix4) {\r\n let result = new Matrix4(new Float32Array([\r\n 0.0, 0.0, 0.0, 0.0,\r\n 0.0, 0.0, 0.0, 0.0,\r\n 0.0, 0.0, 0.0, 0.0,\r\n 0.0, 0.0, 0.0, 0.0\r\n ]))\r\n\r\n if (matrix == null){\r\n return result\r\n }\r\n\r\n for (let i = 0; i < 4; ++i) {\r\n for (let j = 0; j < 4; ++j) {\r\n for (let k = 0; k < 4; ++k) {\r\n result.data[i * 4 + k] += this.data[i * 4 + j] * matrix.data[j * 4 + k]\r\n }\r\n }\r\n }\r\n return result\r\n }\r\n\r\n // fconcat(\r\n // data0, data1, data2, data3,\r\n // data4, data5, data6, data7,\r\n // data8, data9, data10, data11,\r\n // data12, data13, data14, data15) {\r\n // let r0 = this.data[0]\r\n // let r1 = this.data[1]\r\n // let r2 = this.data[2]\r\n // let r3 = this.data[3]\r\n // this.data[0] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[1] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[2] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[3] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n\r\n // r0 = this.data[4]\r\n // r1 = this.data[5]\r\n // r2 = this.data[6]\r\n // r3 = this.data[7]\r\n // this.data[4] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[5] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[6] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[7] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n\r\n // r0 = this.data[8]\r\n // r1 = this.data[9]\r\n // r2 = this.data[10]\r\n // r3 = this.data[11]\r\n // this.data[8] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[9] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[10] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[11] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n\r\n // r0 = this.data[12]\r\n // r1 = this.data[13]\r\n // r2 = this.data[14]\r\n // r3 = this.data[15]\r\n // this.data[12] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[13] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[14] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[15] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n // return this\r\n // }\r\n\r\n // concat(matrix: Matrix4) {\r\n // if (matrix == null){\r\n // return this\r\n // }\r\n // return this.fconcat(\r\n // matrix.data[0], matrix.data[1], matrix.data[2], matrix.data[3],\r\n // matrix.data[4], matrix.data[5], matrix.data[6], matrix.data[7],\r\n // matrix.data[8], matrix.data[9], matrix.data[10], matrix.data[11],\r\n // matrix.data[12], matrix.data[13], matrix.data[14], matrix.data[15]\r\n // )\r\n // }\r\n\r\n /**\r\n *\r\n * @param left\r\n * @param right\r\n * @param bottom\r\n * @param top\r\n * @param near\r\n * @param far\r\n * @returns {Matrix4}\r\n */\r\n static ortho(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n return new Matrix4(new Float32Array([\r\n 2.0/(right - left), 0.0, 0.0, 0.0,\r\n 0.0, 2.0/(top - bottom), 0.0, 0.0,\r\n 0.0, 0.0, -2.0/(far - near), 0.0,\r\n -(left + right)/(right - left), -(top + bottom)/(top - bottom), -(near + far)/(near - far), 1.0\r\n ]))\r\n }\r\n\r\n setOrtho(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n this.data[0] = 2.0/(right - left)\r\n this.data[1] = 0\r\n this.data[2] = 0\r\n this.data[3] = 0\r\n this.data[4] = 0\r\n this.data[5] = 2.0/(top - bottom)\r\n this.data[6] = 0\r\n this.data[7] = 0\r\n this.data[8] = 0\r\n this.data[9] = 0\r\n this.data[10] = -2.0/(far - near)\r\n this.data[11] = -1\r\n this.data[12] = -(left + right)/(right - left)\r\n this.data[13] = -(top + bottom)/(top - bottom)\r\n this.data[14] = -(near + far)/(near - far)\r\n this.data[15] = 1.0\r\n return this\r\n }\r\n\r\n /**\r\n * create a perspective matrix\r\n * @param fov\r\n * @param aspect\r\n * @param near\r\n * @param far\r\n * @returns {Matrix4}\r\n */\r\n static perspective(fov: number, aspect: number, near: number, far: number) {\r\n let y = Math.tan(fov / 2.0) * near\r\n let x = y * aspect\r\n return Matrix4.frustum(-x, x, -y, y, near, far)\r\n }\r\n\r\n setPerspective(fov: number, aspect: number, near: number, far: number) {\r\n let y = Math.tan(fov / 2.0) * near\r\n let x = y * aspect\r\n return this.setFrustum(-x, x, -y, y, near, far)\r\n }\r\n\r\n /**\r\n *\r\n * @param left\r\n * @param right\r\n * @param bottom\r\n * @param top\r\n * @param near\r\n * @param far\r\n * @returns {Matrix4}\r\n */\r\n static frustum(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n return new Matrix4(new Float32Array([\r\n 2 * near / (right - left), 0, 0, 0,\r\n 0, 2 * near / (top - bottom), 0, 0,\r\n (right + left)/(right - left), (top + bottom) / (top - bottom), -(far + near) / (far - near), -1,\r\n 0, 0, -2 * near * far / (far - near), 0\r\n ]))\r\n }\r\n\r\n setFrustum(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n this.data[0] = 2 * near / (right - left);\r\n this.data[1] = 0\r\n this.data[2] = 0\r\n this.data[3] = 0\r\n this.data[4] = 0\r\n this.data[5] = 2 * near / (top - bottom)\r\n this.data[6] = 0\r\n this.data[7] = 0\r\n this.data[8] = (right + left)/(right - left)\r\n this.data[9] = (top + bottom) / (top - bottom)\r\n this.data[10] = -(far + near) / (far - near)\r\n this.data[11] = -1\r\n this.data[12] = 0\r\n this.data[13] = 0\r\n this.data[14] = -2 * near * far / (far - near)\r\n this.data[15] = 0\r\n }\r\n\r\n /**\r\n * transform a vector\r\n * @param vector\r\n * @param w include transformation\r\n */\r\n transform(vector: Vector3, w: number = 0.0) {\r\n\r\n let x = this.data[0 * 4 + 0] * vector.x\r\n + this.data[1 * 4 + 0] * vector.y\r\n + this.data[2 * 4 + 0] * vector.z\r\n + this.data[3 * 4 + 0] * w\r\n\r\n let y = this.data[0 * 4 + 1] * vector.x\r\n + this.data[1 * 4 + 1] * vector.y\r\n + this.data[2 * 4 + 1] * vector.z\r\n + this.data[3 * 4 + 1] * w\r\n\r\n let z = this.data[0 * 4 + 2] * vector.x\r\n + this.data[1 * 4 + 2] * vector.y\r\n + this.data[2 * 4 + 2] * vector.z\r\n + this.data[3 * 4 + 2] * w\r\n\r\n w = this.data[0 * 4 + 3] * vector.x\r\n + this.data[1 * 4 + 3] * vector.y\r\n + this.data[2 * 4 + 3] * vector.z\r\n + this.data[3 * 4 + 3] * w\r\n\r\n if (w == 0) {\r\n w = 1\r\n }\r\n\r\n return new Vector3(\r\n x / w, y / w, z / w\r\n )\r\n }\r\n\r\n /**\r\n * get the matrix buffer\r\n * @returns {number[]}\r\n */\r\n buffer() {\r\n return this.data\r\n }\r\n\r\n /**\r\n * return look at matrix\r\n * @param eye\r\n * @param target\r\n * @param scale\r\n * @param up\r\n * @returns {Matrix4}\r\n */\r\n // static lookAt(eye: Vector3, target: Vector3, scale: number = 1, up = new Vector3(0, 0, 1)) {\r\n\r\n // //compute x, y, z\r\n // let zaxis = eye.subtract(target).normalize()\r\n // let xaxis = up.cross(zaxis).normalize()\r\n // let yaxis = zaxis.cross(xaxis).normalize()\r\n // let transformation = Matrix4.translate(-eye.x, -eye.y, -eye.z)\r\n // transformation.fconcat(\r\n // xaxis.x, yaxis.x, zaxis.x, 0.0,\r\n // xaxis.y, yaxis.y, zaxis.y, 0.0,\r\n // xaxis.z, yaxis.z, zaxis.z, 0.0,\r\n // 0.0, 0.0, 0.0, 1.0\r\n // )\r\n // return transformation.scale(scale)\r\n // }\r\n\r\n // lookAt(eye: Vector3, target: Vector3, scale: number = 1, up = new Vector3(0, 0, 1)) {\r\n // //compute x, y, z\r\n // let zaxis = eye.subtract(target).normalize()\r\n // let xaxis = up.cross(zaxis).normalize()\r\n // let yaxis = zaxis.cross(xaxis).normalize()\r\n // this.setIdentity()\r\n // this.translate(-eye.x, -eye.y, -eye.z)\r\n // this.fconcat(\r\n // xaxis.x, yaxis.x, zaxis.x, 0.0,\r\n // xaxis.y, yaxis.y, zaxis.y, 0.0,\r\n // xaxis.z, yaxis.z, zaxis.z, 0.0,\r\n // 0.0, 0.0, 0.0, 1.0\r\n // )\r\n // return this.scale(scale)\r\n // }\r\n\r\n inverse() {\r\n\r\n // this is a matrix of 3 x 3 or larger\r\n // calculate inverse using gauss-jordan elimination\r\n // http://en.wikipedia.org/wiki/Gaussian_elimination\r\n // http://mathworld.wolfram.com/MatrixInverse.html\r\n // http://math.uww.edu/~mcfarlat/inverse.htm\r\n\r\n // make a copy of the matrix (only the arrays, not of the elements)\r\n const rows = 4\r\n let cols = 4\r\n\r\n let A = this.data.slice()\r\n\r\n // create an identity matrix which in the end will contain the\r\n // matrix inverse\r\n let B = new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, 1.0, 0.0, 0.0,\r\n 0.0, 0.0, 1.0, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ])\r\n\r\n //eye(rows).valueOf();\r\n\r\n // loop over all columns, and perform row reductions\r\n for (let c = 0; c < cols; ++c) {\r\n\r\n // element Acc should be non zero. if not, swap content\r\n // with one of the lower rows\r\n let r = c\r\n while (r < rows && A[r * 4 + c] == 0) {\r\n ++r\r\n }\r\n if (r == rows || A[r * 4 + c] == 0) {\r\n\r\n // TODO: in case of zero det, just return a matrix wih Infinity values? (like octave)\r\n console.log(\"Cannot calculate inverse, determinant is zero\")\r\n return this\r\n }\r\n if (r != c) {\r\n let Ac = A.slice(c * rows, (c + 1) * rows)\r\n let Ar = A.slice(r * rows, (r + 1) * rows)\r\n A.set(Ar, c * rows)\r\n A.set(Ac, r * rows)\r\n let Bc = B.slice(c * rows, (c + 1) * rows)\r\n let Br = B.slice(r * rows, (r + 1) * rows)\r\n B.set(Br, c * rows)\r\n B.set(Bc, r * rows)\r\n }\r\n\r\n // eliminate non-zero values on the other rows at column c\r\n let Ac = A.slice(c * rows, (c + 1) * rows)\r\n let Bc = B.slice(c * rows, (c + 1) * rows)\r\n\r\n for (r = 0; r < rows; ++r) {\r\n let Ar = A.slice(r * rows, (r + 1) * rows)\r\n let Br = B.slice(r * rows, (r + 1) * rows)\r\n if(r != c) {\r\n\r\n // eliminate value at column c and row r\r\n if (Ar[c] != 0) {\r\n let f = -Ar[c] / Ac[c]\r\n\r\n // add (f * row c) to row r to eliminate the value\r\n // at column c\r\n for (let s = c; s < cols; ++s) {\r\n Ar[s] = Ar[s] + (f * Ac[s])\r\n }\r\n A.set(Ar, r * rows)\r\n for (let s = 0; s < cols; ++s) {\r\n Br[s] = Br[s] + (f * Bc[s])\r\n }\r\n B.set(Br, r * rows)\r\n }\r\n }\r\n else {\r\n\r\n // normalize value at Acc to 1,\r\n // divide each value on row r with the value at Acc\r\n let f = Ac[c]\r\n if (f == 0) {\r\n console.log(\"Cannot calculate inverse, determinant is zero\")\r\n return this\r\n }\r\n for (let s = c; s < cols; ++s) {\r\n Ar[s] = Ar[s] / f\r\n }\r\n A.set(Ar, r * rows)\r\n for (let s = 0; s < cols; ++s) {\r\n Br[s] = Br[s] / f\r\n }\r\n B.set(Br, r * rows)\r\n }\r\n }\r\n }\r\n return new Matrix4(B)\r\n }\r\n}\r\n","import {Vector3} from \"./Vector3\"\r\n\r\nexport class Color {\r\n private _buffer: Float32Array\r\n\r\n /**\r\n * create a color\r\n */\r\n constructor(red: number = 0.0,\r\n green: number = 0.0,\r\n blue: number = 0.0,\r\n public alpha: number = 1.0) {\r\n this._buffer = new Float32Array([red, green, blue])\r\n }\r\n\r\n /**\r\n * get the buffer\r\n */\r\n rgbBuffer(): Float32Array {\r\n return this._buffer\r\n }\r\n\r\n /**\r\n * get the buffer\r\n */\r\n buffer(): Float32Array {\r\n return new Float32Array([this.red, this.green, this.blue, this.alpha])\r\n }\r\n\r\n get red() {\r\n return this._buffer[0]\r\n }\r\n\r\n get green() {\r\n return this._buffer[1]\r\n }\r\n\r\n get blue() {\r\n return this._buffer[2]\r\n }\r\n\r\n /**\r\n * string style for canvas\r\n * @return {string}\r\n */\r\n get rgba() {\r\n return \"rgba(\" + this.red * 255 + \",\" + this.green * 255 + \",\" + this.blue * 255 + \",\" + this.alpha + \")\"\r\n }\r\n\r\n /**\r\n * create color from hex string\r\n */\r\n static fromHex(hexString = \"000000\") {\r\n if (hexString.length == 4 || hexString.length == 7 || hexString.length == 9) {\r\n hexString = hexString.substring(1, hexString.length)\r\n }\r\n if (hexString.length == 3) {\r\n hexString = hexString.split(\"\").map(x => x + x).join(\"\")\r\n }\r\n\r\n let colorCode = parseInt(hexString, 16)\r\n\r\n if (hexString.length == 6) {\r\n return new Color(\r\n (colorCode >> 16) / 255,\r\n ((colorCode >> 8) & 255) / 255,\r\n (colorCode & 255) / 255\r\n )\r\n }\r\n else {\r\n return new Color(\r\n ((colorCode >> 24) & 255) / 255,\r\n ((colorCode >> 16) & 255) / 255,\r\n ((colorCode >> 8) & 255) / 255,\r\n (colorCode & 255) / 255\r\n )\r\n }\r\n }\r\n\r\n static fromInt(colorCode = 0) {\r\n if (colorCode < 0) {\r\n colorCode = 0\r\n }\r\n return new Color(\r\n ((colorCode >> 16) & 255) / 255,\r\n ((colorCode >> 8) & 255) / 255,\r\n (colorCode & 255) / 255\r\n )\r\n }\r\n\r\n static fromVec3(color: Vector3) {\r\n return new Color(\r\n color.x,\r\n color.y,\r\n color.z\r\n )\r\n }\r\n\r\n static mix(a: Color, b: Color, factor: number) {\r\n return new Color(\r\n a.red * factor + b.red * (1 - factor),\r\n a.green* factor + b.green * (1 - factor),\r\n a.blue * factor + b.blue * (1 - factor),\r\n a.alpha * factor + b.alpha * (1 - factor)\r\n )\r\n }\r\n\r\n get code() {\r\n let float2hex = (f: number) => {\r\n let hex = Math.floor(f * 255).toString(16)\r\n hex = hex.length == 1 ? \"0\" + hex : hex\r\n hex = hex.length > 2 ? hex.substr(0, 2) : hex\r\n return hex\r\n }\r\n return \"#\" + float2hex(this.red) + float2hex(this.green) + float2hex(this.blue) + float2hex(this.alpha)\r\n }\r\n\r\n static isValid(colorString: string): boolean{\r\n return /^#?([0-9A-Fa-f]){6,8}$/i.test(colorString)\r\n }\r\n}\r\n","import { Matrix4 } from \"../engine/Matrix\"\r\nimport { Color } from \"../engine/Color\"\r\n\r\nexport class MapConstants {\r\n\r\n static none = -1.0\r\n\r\n static baseTileSize = 256\r\n\r\n static minLatitude = -85.051128779806604\r\n\r\n static maxLatitude = 85.051128779806604\r\n\r\n static maxLongitude = 180\r\n\r\n static minLongitude = -180\r\n\r\n static maxDegrees = 360\r\n\r\n static radiusEarthMeters = 6378137.0\r\n\r\n static halfEarthCircumFerenceInMeter = MapConstants.radiusEarthMeters * Math.PI\r\n\r\n static earthCircumFerenceInMeter = MapConstants.halfEarthCircumFerenceInMeter * 2\r\n\r\n static tileCacheSize = 512\r\n\r\n static baseMapLowestOrder = Number.MIN_SAFE_INTEGER\r\n\r\n static baseMapMiddleOrder = -1.0E6\r\n\r\n static buildingLayerOrder = 0\r\n\r\n static userPOILayerOrder = 1.0\r\n\r\n static pointGeoJsonWidth = 32\r\n\r\n static pointGeoJsonHeight = 32\r\n\r\n static placeSelectedIdPrefix = \"maplink-selected-place-\"\r\n\r\n static placeWidth = 26\r\n\r\n static placeHeight = 32\r\n\r\n static spritePadding = 2.\r\n\r\n static get placeFontSize() {\r\n return 12\r\n }\r\n\r\n static poiFontWeight = \"normal\"\r\n\r\n static poiMaxWidth = 120\r\n\r\n static poiNumLine = 2\r\n\r\n static poiDefaultColor = new Color(0.5, 0.6, 0.7)\r\n\r\n static pointGeoJsonAnchor = [0.5, 1.0]\r\n\r\n static infoWindowPadding = 2\r\n\r\n // pixels/s\r\n static flingMinVelocity = -10000.0\r\n\r\n // pixels/s\r\n static flingMaxVelocity = 10000.0\r\n\r\n static flingTimeConstant = 150.0\r\n\r\n static flingSpeedMultiply = 15\r\n\r\n static zoomSpeedMouseWheel = 15\r\n\r\n // milliseconds\r\n static minDurationFlyTo = 1000\r\n\r\n // milliseconds\r\n static maxDurationFlyTo = 13000\r\n\r\n static maxBearingAngle = 720\r\n\r\n static defaultMinZoom = 3\r\n\r\n static defaultMinZoom3d = 17\r\n\r\n static defaultMaxZoom = 22\r\n\r\n static defaultMaxNativeZoom = 19\r\n\r\n static geoJsonMinNativeZoom = 20\r\n\r\n static vectorBuildingsMinZoom = 17\r\n\r\n static tileExtend = 4096.0\r\n\r\n static defaultAnimationDuration = 300\r\n\r\n static defaultFlyZoom = 17.0\r\n\r\n static minTilt = 0.0\r\n\r\n static maxTilt2D = 40.0\r\n\r\n static maxTilt3D = 87.0\r\n\r\n static get maxTiltIntersectWithScreen() {\r\n return 90.0 - CameraConstants.fov * MathConstants.rad2Deg\r\n }\r\n\r\n static minTiltReduceFog = 75.0\r\n\r\n static minTimeMoving = 150.0\r\n\r\n static minTimeDoubleZoom = 500.0\r\n\r\n static minTimeSpanTo = 500.0\r\n\r\n static maxTimeSpanTo = 4000.0\r\n\r\n static skyboxMapBorderMinimum = 0.001\r\n\r\n static metersPerPixelAtLatitude = 0.0\r\n\r\n static mapBackgroundColor2D = Color.fromHex(\"#f2efe9\")\r\n\r\n static mapBackgroundColor3D = Color.fromHex(\"#e1e1e1\")\r\n\r\n static satellitePOIColor = new Color(1.0, 1.0, 1.0)\r\n\r\n static satellitePOIHalo = new Color(0.0, 0.0, 0.0)\r\n\r\n static mapBackgroundScaleRatio = 20000.0\r\n\r\n static clusterMaxPointCount = 1000000\r\n\r\n static biasMatrix = new Matrix4(new Float32Array([\r\n 0.5, 0.0, 0.0, 0.0,\r\n 0.0, 0.5, 0.0, 0.0,\r\n 0.0, 0.0, 0.5, 0.0,\r\n 0.5, 0.5, 0.5, 1.0\r\n ]))\r\n\r\n static FPS = 1000.0 / 15.0\r\n\r\n static buildingOverlayIdPrefix = \"_overlay\"\r\n\r\n static customBuildingType = \"custom_building\"\r\n\r\n static touchBoxSize = 8.0\r\n\r\n static zoomStep = 0.25\r\n\r\n static distanceRatioToForceMoveCamera = 3.0 /** ratio with screen size to force move camera when call flyTo() method **/\r\n\r\n static gridIndexExtent = 4096\r\n\r\n static gridIndexN = 4\r\n\r\n static gridIndexPadding = 0\r\n}\r\n\r\n\r\n\r\nexport class SymbolConstants {\r\n\r\n static defaultSymbol = \"markerDefault\"\r\n\r\n static geoJsonLayerId = \"geoJsonLayerId\"\r\n\r\n}\r\n\r\nexport class LayerConstants {\r\n\r\n /** Map layer */\r\n\r\n static readonly rasterLayerId = \"1.0.rasterLayer\"\r\n\r\n static readonly surfaceLayerId = \"1.1.vector.surfaces\"\r\n\r\n static readonly roadsLayerId = \"1.2.vector.roads\"\r\n\r\n static readonly boundaryLayerId = \"1.3.vector.boundaries\"\r\n\r\n static readonly labelLayerId = \"4.label.tile\"\r\n\r\n static readonly rasterOverlayLayerId = \"1.4.rasterOverlay\"\r\n\r\n static readonly imageOverlayLayerId = \"5.imageOverlay\"\r\n\r\n static readonly buildingOverlayLayerId = \"2.buildingOverlay\"\r\n\r\n static readonly pointLayerId = \"2.maplink.vector.tile.points\"\r\n\r\n static readonly pointOverlayLayerId = \"2.maplink.overlay.tile.points\"\r\n\r\n static readonly userPOILayerId = \"1.maplink.vector.tile.user.poi\"\r\n\r\n static readonly buildingLayerId = \"2.buildingLayer\"\r\n\r\n static readonly userBuildingLayerId = \"3.userBuilding.layer\"\r\n\r\n /** Tile layer */\r\n\r\n static readonly roadTileLayerId = \"roadTileLayer\"\r\n\r\n static readonly labelTileLayerId = \"labelTileLayer\"\r\n\r\n static readonly pointTileLayerId = \"pointTileLayer\"\r\n\r\n static readonly buildingTileLayerId = \"buildingTileLayer\"\r\n\r\n static readonly rasterTileLayerId = \"rasterTileLayer\"\r\n}\r\n\r\nexport class MathConstants {\r\n\r\n static rad2Deg = 180 / Math.PI\r\n\r\n static deg2Rad = Math.PI / 180.0\r\n\r\n static epsilon = 1e-6\r\n}\r\n\r\nexport class CameraConstants {\r\n\r\n static fov = 30 * MathConstants.deg2Rad\r\n\r\n static nearPlane = 0.1\r\n\r\n static farPlane = 1000\r\n\r\n static height = 15.5\r\n\r\n}\r\n\r\nexport class PolyConstants {\r\n\r\n static numTrianglesOnRoundCap = 6\r\n\r\n static numTrianglesOnRoundJoin = 5\r\n\r\n static numTrianglesPerCircle = 4\r\n}\r\n\r\nexport class ParticleConstants {\r\n\r\n static rainFrequency = 0.004\r\n\r\n static rainParticleRotation = -25\r\n\r\n static snowFrequency = 0.004\r\n\r\n}\r\n\r\nexport class WeatherConstants {\r\n\r\n static refreshTime = 60000 /** miliseconds */\r\n\r\n static refreshDistance = 10000 /** meter */\r\n\r\n}\r\n\r\nexport class ColorConstants {\r\n static skyColors = {\r\n \"Morning\": Color.fromHex(\"cdf9ff\"),\r\n \"Noon\": Color.fromHex(\"0783f4\"),\r\n \"AfterNoon\": Color.fromHex(\"243a8b\"),\r\n \"Evening\": Color.fromHex(\"182863\"),\r\n }\r\n\r\n static fogColors = {\r\n \"Morning\": Color.fromHex(\"FAD8C4\"),\r\n \"Noon\": Color.fromHex(\"FAFAFA\"),\r\n \"AfterNoon\": Color.fromHex(\"FAA899\"),\r\n \"Evening\": Color.fromHex(\"141c36\"),\r\n }\r\n\r\n static lightColors = {\r\n \"Morning\": Color.fromHex(\"#DE8989\"),\r\n \"Noon\": Color.fromHex(\"#F8F8F8\"),\r\n \"AfterNoon\": Color.fromHex(\"#BE321A\"),\r\n \"Evening\": Color.fromHex(\"#1E0032\")\r\n }\r\n\r\n static getSkyColor(name: string): Color {\r\n return ColorConstants.skyColors[name]\r\n }\r\n\r\n static getFogColor(name: string): Color {\r\n return ColorConstants.fogColors[name]\r\n }\r\n\r\n static getLightColor(name: string): Color {\r\n return ColorConstants.lightColors[name]\r\n }\r\n}\r\n\r\nexport class TimeConstants {\r\n\r\n static morningTime = 6.0\r\n\r\n static noonTime = 12.0\r\n\r\n static afterNoonTime = 16.0\r\n\r\n static eveningTime = 18.0\r\n\r\n}\r\n\r\nexport class FontConstant {\r\n\r\n static fontTextureWidth = 1000\r\n\r\n static fontTextureHeight = 400\r\n\r\n static get fontSize() {\r\n return 24\r\n }\r\n}\r\n\r\nexport class LabelConstant {\r\n /** Max angle (degree) of 2 segment on path that can create text data **/\r\n static maxCurvedTextAngle = 22\r\n}\r\n","export enum ClassType {\r\n //Annotation\r\n MARKER,\r\n CIRCLE,\r\n POLYLINE,\r\n POLYGON,\r\n POI,\r\n BUILDING,\r\n\r\n //UserLayer\r\n VECTOR_TILE_LAYER,\r\n\r\n //Query\r\n BUILDING_QUERY_RESULT,\r\n\r\n //AnnotationData\r\n POLYLINE_DATA,\r\n POLYGON_DATA,\r\n\r\n //Item\r\n ICON,\r\n LATLNG,\r\n POINT,\r\n CAMERA_POSITION,\r\n\r\n //Bounds\r\n LATLNG_BOUNDS,\r\n\r\n //Label\r\n MARKER_LABEL,\r\n\r\n //Feature\r\n FEATURE,\r\n TILE_FEATURE,\r\n VECTOR_TILE_FEATURE\r\n}\r\n\r\nexport class Map4dObject {\r\n private readonly classType: ClassType\r\n\r\n constructor(classType: ClassType) {\r\n this.classType = classType\r\n }\r\n\r\n /**\r\n * Check classType in mapObject\r\n * @param mapObject \r\n * @param classType \r\n * @returns \r\n */\r\n static isClassType(mapObject: any, classType: ClassType): boolean {\r\n let mfClassType = (mapObject || {}).classType\r\n return mfClassType == classType\r\n }\r\n}","import { ClassType, Map4dObject } from \"./Map4dObject\"\r\nimport { MapConstants, MathConstants } from './MapConstants';\r\n\r\n\r\nexport class LatLng extends Map4dObject {\r\n\r\n /** Latitude, in degrees. */\r\n lat: number\r\n\r\n /** Longitude, in degrees. */\r\n lng: number\r\n\r\n constructor(lat: number, lng: number) {\r\n super(ClassType.LATLNG)\r\n this.lat = lat\r\n this.lng = lng\r\n }\r\n\r\n /**\r\n * Comparison function.\r\n * @param other\r\n */\r\n equals(other: LatLng): boolean {\r\n return this.lat == other.lat && this.lng == other.lng\r\n }\r\n\r\n valid() {\r\n return isFinite(this.lat) && Math.abs(this.lat) <= 90\r\n //tile wrap\r\n }\r\n\r\n /**\r\n * Converts to string representation.\r\n */\r\n toString(): string {\r\n return \"(\" + this.lat + \", \" + this.lng + \")\"\r\n }\r\n\r\n static convert(input: ILatLng): LatLng {\r\n if(Map4dObject.isClassType(input, ClassType.LATLNG)) {\r\n return input as LatLng\r\n }\r\n if (Array.isArray(input) && (input.length === 2)) {\r\n return new LatLng(Number(input[1]), Number(input[0]))\r\n }\r\n if (!Array.isArray(input) && typeof input === \"object\" && input !== null && \"lat\" in input && \"lng\" in input) {\r\n return new LatLng(\r\n Number(input.lat),\r\n Number(input.lng))\r\n }\r\n throw new Error(\"`ILngLat` argument must be specified as a LngLat instance, an object \" +\r\n \"{lat: <lat>, lng: <lng>}, or an array of [<lng>, <lat>]\")\r\n }\r\n \r\n distanceTo(target: ILatLng): number {\r\n if (target == null) {\r\n return 0;\r\n }\r\n let desc = LatLng.convert(target)\r\n let latStartRadian = MathConstants.deg2Rad * this.lat\r\n let longStartRadian = MathConstants.deg2Rad * this.lng\r\n let latDescRadian = MathConstants.deg2Rad * desc.lat\r\n let longDescRadian = MathConstants.deg2Rad * desc.lng\r\n let u = Math.sin((latDescRadian - latStartRadian)/2)\r\n let v = Math.sin((longDescRadian - longStartRadian)/2)\r\n\r\n // Distance between two latLngs in meters\r\n return 2.0 * MapConstants.radiusEarthMeters *\r\n Math.asin(Math.sqrt(u * u + Math.cos(latStartRadian) * Math.cos(latDescRadian) * v * v))\r\n }\r\n\r\n normalize(): LatLng {\r\n let sign = this.lat > 0 ? -1 : 1\r\n let lat = (this.lat - sign * 90) % 180 + 90 * sign\r\n sign = this.lng > 0 ? -1 : 1\r\n let lng = (this.lng - sign * 180) % 380 + 180 * sign\r\n return new LatLng(lat, lng)\r\n }\r\n\r\n /**\r\n * add to another LatLng\r\n * @param a\r\n * @returns {LatLng}\r\n */\r\n add(a: LatLng) {\r\n return new LatLng(this.lat + a.lat, this.lng + a.lng).normalize()\r\n }\r\n\r\n /**\r\n * subtract with another LatLng\r\n * @param a\r\n * @returns {LatLng}\r\n */\r\n subtract(a: LatLng) {\r\n if (!a) {\r\n return this\r\n }\r\n return new LatLng(this.lat - a.lat, this.lng - a.lng).normalize()\r\n }\r\n}\r\n\r\nexport type ILatLng = LatLng | {lat: number, lng: number} | [number, number] | null\r\n","import {Vector2} from \"../engine/Vector2\"\r\nimport {MathUtils} from \"../engine/MathUtils\"\r\nimport { MapConstants, MathConstants } from \"../models/MapConstants\"\r\nimport { LatLng } from \"../models/LatLng\"\r\n\r\nexport class ProjectionMercator {\r\n\r\n /**\r\n * ok for test\r\n * @param latLng\r\n * @param worldSize\r\n */\r\n private static projectInternal(latLng: LatLng, worldSize: number) : Vector2 {\r\n let latitude = MathUtils.clamp(latLng.lat, MapConstants.minLatitude, MapConstants.maxLatitude)\r\n return new Vector2(\r\n MapConstants.maxLongitude + latLng.lng,\r\n MapConstants.maxLongitude - MathConstants.rad2Deg\r\n * Math.log(Math.tan(Math.PI / 4 + latitude * Math.PI / MapConstants.maxDegrees))\r\n ).multiply(worldSize / MapConstants.maxDegrees)\r\n }\r\n\r\n /**\r\n * ok for test\r\n * @param latLng\r\n */\r\n static convertToMeterFromLatLng(latLng: LatLng): Vector2 {\r\n let constrainedLatitude = MathUtils.clamp(latLng.lat, MapConstants.minLatitude, MapConstants.maxLatitude)\r\n let constrainedLongitude = latLng.lng\r\n let m = 1 - 1e-15\r\n let f = MathUtils.clamp(Math.sin(MathConstants.deg2Rad * constrainedLatitude), -m, m)\r\n let easting = MapConstants.radiusEarthMeters * constrainedLongitude * MathConstants.deg2Rad\r\n let northing = 0.5 * MapConstants.radiusEarthMeters * Math.log((1 + f) / (1 - f))\r\n return new Vector2(easting, northing)\r\n }\r\n\r\n /**\r\n * ok for test\r\n * @param meters\r\n */\r\n static convertToLatLngFromMeter(meters: Vector2): LatLng {\r\n let latitude = (2 * Math.atan(Math.exp(meters.y / MapConstants.radiusEarthMeters)) - (Math.PI / 2.0))\r\n * MathConstants.rad2Deg\r\n let longitude = meters.x * MathConstants.rad2Deg / MapConstants.radiusEarthMeters\r\n return new LatLng(latitude, longitude)\r\n }\r\n\r\n /**\r\n * ok for test\r\n * @param latLng\r\n * @param zoom\r\n */\r\n static projectZoom(latLng: LatLng, zoom: number): Vector2 {\r\n return this.projectInternal(latLng, 1 << zoom)\r\n }\r\n\r\n\r\n}\r\n","import { ProjectionMercator } from \"../map/ProjectionMercator\"\r\nimport { MathUtils } from \"../engine/MathUtils\"\r\nimport { Vector2 } from \"../engine/Vector2\"\r\nimport { ILatLng, LatLng } from \"../models/LatLng\"\r\n\r\nexport class CoordinateTransformer {\r\n\r\n private coordinates: LatLng[] = []\r\n\r\n constructor(coordinates: ILatLng[]) {\r\n this.coordinates = coordinates.map(coordinate => LatLng.convert(coordinate))\r\n }\r\n\r\n setCoordinates(coordinates: ILatLng[]): void {\r\n this.coordinates = coordinates.map(coordinate => LatLng.convert(coordinate))\r\n }\r\n\r\n addCoordinates(coordinates: ILatLng[]): void {\r\n coordinates.forEach(coordinate => this.coordinates.push(LatLng.convert(coordinate)))\r\n }\r\n\r\n rotate(degree: number, anchor: ILatLng = null): LatLng[] {\r\n if (this.coordinates.length <= 1) {\r\n return this.coordinates.slice()\r\n }\r\n let center = null\r\n if (anchor != null) {\r\n center = LatLng.convert(center)\r\n }\r\n else {\r\n center = this.center\r\n }\r\n let centerInMeters = ProjectionMercator.convertToMeterFromLatLng(center)\r\n let transformedCoordinates: LatLng[] = []\r\n let degreeInRadians = MathUtils.toRadians(degree)\r\n this.coordinates.forEach(coordinate => {\r\n let point = ProjectionMercator.convertToMeterFromLatLng(coordinate)\r\n point.x -= centerInMeters.x\r\n point.y -= centerInMeters.y\r\n\r\n let x = point.x\r\n let y = point.y\r\n point.x = (x * Math.cos(degreeInRadians) - y * Math.sin(degreeInRadians))\r\n point.y = (x * Math.sin(degreeInRadians) + y * Math.cos(degreeInRadians))\r\n\r\n transformedCoordinates.push(ProjectionMercator.convertToLatLngFromMeter(\r\n new Vector2(centerInMeters.x + point.x, centerInMeters.y + point.y)))\r\n })\r\n return transformedCoordinates\r\n }\r\n\r\n translate(target: ILatLng, anchor: ILatLng = null): LatLng[] {\r\n if (this.coordinates.length <= 0) {\r\n return []\r\n }\r\n let newCenter = LatLng.convert(target)\r\n let oldCenter = null\r\n if (anchor != null) {\r\n oldCenter = LatLng.convert(anchor)\r\n }\r\n else {\r\n oldCenter = this.center\r\n }\r\n\r\n let transformedCoordinates: LatLng[] = []\r\n let translateVectorX = newCenter.lng - oldCenter.lng\r\n let translateVectorY = newCenter.lat - oldCenter.lat\r\n this.coordinates.forEach(coordinate => {\r\n transformedCoordinates.push(new LatLng(coordinate.lat + translateVectorY,\r\n coordinate.lng + translateVectorX))\r\n })\r\n return transformedCoordinates\r\n }\r\n\r\n scale(scale: number, anchor: ILatLng = null): LatLng[] {\r\n if (this.coordinates.length <= 1) {\r\n return this.coordinates.slice()\r\n }\r\n let center = null\r\n if (anchor != null) {\r\n center = LatLng.convert(anchor)\r\n }\r\n else {\r\n center = this.center\r\n }\r\n\r\n let centerInMeters = ProjectionMercator.convertToMeterFromLatLng(center)\r\n let transformedCoordinates: LatLng[] = []\r\n this.coordinates.forEach(coordinate => {\r\n let point = ProjectionMercator.convertToMeterFromLatLng(coordinate)\r\n point.x -= centerInMeters.x\r\n point.y -= centerInMeters.y\r\n point.x *= scale\r\n point.y *= scale\r\n transformedCoordinates.push(ProjectionMercator.convertToLatLngFromMeter(\r\n new Vector2(centerInMeters.x + point.x, centerInMeters.y + point.y)))\r\n })\r\n return transformedCoordinates\r\n }\r\n\r\n get center(): LatLng {\r\n if (this.coordinates.length == 0) {\r\n return null as unknown as LatLng\r\n }\r\n let center = new LatLng(0, 0)\r\n for (let i = 0; i < this.coordinates.length; ++i) {\r\n center.lat += this.coordinates[i].lat\r\n center.lng += this.coordinates[i].lng\r\n }\r\n center.lat /= this.coordinates.length\r\n center.lng /= this.coordinates.length\r\n return center\r\n }\r\n}"],"names":["defaultCt","map","Map4dContext","createContext","markerClusterDefaultContext","addMarker","removeMarker","MarkerClusterContext","MFBuilding","props","position","name","scale","bearing","elevation","height","model","texture","coordinates","visible","draggable","clickable","selected","growUp","onCreated","map4dContext","useContext","theMap","buildingRef","useRef","useEffect","current","length","option","lat","lng","Object","keys","forEach","key","undefined","map4d","Building","setMap","setPosition","setName","setScale","setBearing","setElevation","setHeight","setModel","setTexture","setCoordinates","setVisible","setDraggable","setClickable","setSelected","setGrowUp","MFBuildingOverlay","getUrl","parserData","prefixId","buildingOverlayRef","reCreate","BuildingOverlay","VariableTool","variable","MFCircle","center","radius","fillColor","fillOpacity","strokeColor","strokeWidth","zIndex","onClick","circleRef","Circle","hasValue","setCenter","setRadius","setFillColor","setFillOpacity","setStrokeColor","setStrokeWidth","setZIndex","MFDataLayer","geoJsonString","dataLayerRef","feature","data","remove","addGeoJson","MFDirectionsRenderer","routes","activedIndex","activeStrokeWidth","activeStrokeColor","activeOutlineWidth","activeOutlineColor","activeStrokePattern","inactiveStrokeWidth","inactiveStrokeColor","inactiveOutlineWidth","inactiveOutlineColor","inactiveStrokePattern","originMarkerOptions","destinationMarkerOptions","waypointMarkerOptions","onMarkerDragEnd","onHover","onMouseOut","onMouseOver","onMouseMove","directionRef","DirectionsRenderer","setRoutes","setActivedIndex","setActiveStrokePattern","setInactiveStrokePattern","setOptions","MFGroundOverlay","bounds","override","opacity","groundOverlayRef","TileOverlay","setOpacity","MFImageOverlay","url","imageOverlayRef","ImageOverlay","addLibrary","id","scriptId","exist","document","getElementById","script","createElement","src","defer","body","appendChild","createId","dt","Date","getTime","uuid","replace","c","r","Math","random","floor","toString","MFMap","_options","options","mapId","mapid","version","environment","accessKey","sdkDomain","callback","mapDomRef","mapRef","scriptElement","events","zoom","tilt","useState","camera","getCamera","setZoom","setTarget","setTilt","moveCamera","createCallback","window","Map","onMapReady","registerEvent","domain","urlNew","destroy","t","mapType","setMapType","eventClickMarker","addListener","args","marker","eventRightClickMarker","onRightClick","eventDragEndMarker","onDragEnd","eventHoverMarker","eventHoverPolygon","polygon","eventHoverPolyline","polyline","eventHoverDirection","renderer","directions","eventClickPolyline","eventMouseOutDirection","eventMouseOverDirection","eventMouseMoveDirection","eventMouseOutPolyline","eventMouseOverPolyline","eventMouseMovePolyline","eventMouseOutMarker","eventMouseOverMarker","eventMouseMoveMarker","eventClickPoi","poi","eventHoverPoi","concat","circle","onClickLocation","location","push","onRightClickLocation","onTilesLoaded","onCameraChanging","newContext","React","Fragment","style","width","display","ref","Provider","value","children","MFMarker","anchor","labelAnchor","icon","rotation","title","snippet","windowAnchor","label","iconView","markerClusterContext","markerRef","markerLabel","MarkerLabel","iconT","Icon","Marker","infoWindow","setInfoWindow","infoContents","setInfoContents","showInfoWindow","hideInfoWindow","setAnchor","setLabelAnchor","setIcon","setRotation","setTitle","setSnippet","setWindowAnchor","setLabel","setIconView","MFMarkerCluster","minZoom","maxZoom","zoomOnClick","clusterIcon","markerRefs","markerClusterRef","drawCluster","MarkerClusterer","clusterContext","newMarkers","filter","setZoomOnClick","MFPOI","subtitle","color","type","poiRef","POI","setSubtitle","setColor","setType","MFPOIOverlay","poiOverlayRef","POIOverlay","MFPolygon","paths","polygonRef","a","Polygon","console","log","setPaths","MFPolyline","path","strokeOpacity","closed","strokePattern","polylineRef","Polyline","setPath","setStrokeOpacity","setClosed","setStrokePattern","MFTileOverlay","tileOverlayRef","Vector2","x","y","clone","normalize","set","invert","rotate90","add","subtract","multiply","rotateBy","cos","PI","sin","rotateByRadian","cross","dot","perp","v1","v2","neg","v","sqrt","MathUtils","clamp","min","max","toRadians","angleDegrees","distance","p1","p2","findNextPowerOf2","n","lg","log2","findPreviousPowerOf2","clz32","Vector3","z","buffer","Float32Array","Matrix4","setIdentity","copy","other","translate","rotateX","alpha","sinA","cosA","setRotationX","r1","r2","rotateY","setRotationY","r0","rotateZ","setRotationZ","matrix","result","i","j","k","ortho","left","right","bottom","top","near","far","setOrtho","perspective","fov","aspect","tan","frustum","setPerspective","setFrustum","transform","vector","w","inverse","rows","cols","A","slice","B","Ac","Ar","Bc","Br","f","s","Color","red","green","blue","_buffer","rgbBuffer","fromHex","hexString","substring","split","join","colorCode","parseInt","fromInt","fromVec3","mix","b","factor","isValid","colorString","test","float2hex","hex","substr","MapConstants","CameraConstants","MathConstants","rad2Deg","radiusEarthMeters","halfEarthCircumFerenceInMeter","Number","MIN_SAFE_INTEGER","deg2Rad","ColorConstants","getSkyColor","skyColors","getFogColor","fogColors","getLightColor","lightColors","ClassType","Map4dObject","classType","isClassType","mapObject","mfClassType","LatLng","LATLNG","equals","valid","isFinite","abs","convert","input","Array","isArray","Error","distanceTo","target","desc","latStartRadian","longStartRadian","latDescRadian","longDescRadian","u","asin","sign","ProjectionMercator","projectInternal","latLng","worldSize","latitude","minLatitude","maxLatitude","maxLongitude","maxDegrees","convertToMeterFromLatLng","constrainedLatitude","constrainedLongitude","m","easting","northing","convertToLatLngFromMeter","meters","atan","exp","longitude","projectZoom","CoordinateTransformer","coordinate","addCoordinates","rotate","degree","centerInMeters","transformedCoordinates","degreeInRadians","point","newCenter","oldCenter","translateVectorX","translateVectorY"],"mappings":";;AAEO,IAAMA,SAAS,GAAG;EACrBC,GAAG,EAAE;AADgB,CAAlB;AAGA,IAAMC,YAAY,GAAGC,aAAa,CAACH,SAAD,CAAlC;;ACHA,IAAMI,2BAA2B,GAAG;EACvCC,SAAS,EAAE,IAD4B;EAEvCC,YAAY,EAAE;AAFyB,CAApC;AAIP,AAAO,IAAMC,oBAAoB,GAAGJ,aAAa,CAACC,2BAAD,CAA1C;;ACgBP,IAAMI,UAAU,GAAG,SAAbA,UAAa,CAACC,KAAD;EACf,IACIC,QADJ,GAiBID,KAjBJ,CACIC,QADJ;MAEIC,IAFJ,GAiBIF,KAjBJ,CAEIE,IAFJ;qBAiBIF,KAjBJ,CAGIG,KAHJ;MAGIA,KAHJ,6BAGY,CAHZ;uBAiBIH,KAjBJ,CAIII,OAJJ;MAIIA,OAJJ,+BAIc,CAJd;yBAiBIJ,KAjBJ,CAKIK,SALJ;MAKIA,SALJ,iCAKgB,CALhB;sBAiBIL,KAjBJ,CAMIM,MANJ;MAMIA,MANJ,8BAMa,CANb;MAOIC,KAPJ,GAiBIP,KAjBJ,CAOIO,KAPJ;MAQIC,OARJ,GAiBIR,KAjBJ,CAQIQ,OARJ;MASIC,WATJ,GAiBIT,KAjBJ,CASIS,WATJ;uBAiBIT,KAjBJ,CAUIU,OAVJ;MAUIA,OAVJ,+BAUc,IAVd;yBAiBIV,KAjBJ,CAWIW,SAXJ;MAWIA,SAXJ,iCAWgB,KAXhB;yBAiBIX,KAjBJ,CAYIY,SAZJ;MAYIA,SAZJ,iCAYgB,IAZhB;wBAiBIZ,KAjBJ,CAaIa,QAbJ;MAaIA,QAbJ,gCAae,KAbf;sBAiBIb,KAjBJ,CAcIc,MAdJ;MAcIA,MAdJ,8BAca,IAdb;MAeItB,GAfJ,GAiBIQ,KAjBJ,CAeIR,GAfJ;MAgBIuB,SAhBJ,GAiBIf,KAjBJ,CAgBIe,SAhBJ;EAmBA,IAAMC,YAAY,GAAGC,UAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAM2B,WAAW,GAAGC,MAAM,CAAC,IAAD,CAA1B;EAEAC,SAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAACC,WAAW,CAACG,OAAvB,KAAoCb,WAAW,IAAI,CAAAA,WAAW,SAAX,IAAAA,WAAW,WAAX,YAAAA,WAAW,CAAEc,MAAb,IAAsB,CAAtC,IAA4ChB,KAA/E,CAAJ,EAA2F;MAAA;;MACvF,IAAIiB,MAAM,GAAG;QACTvB,QAAQ,EAAEA,QAAQ,IAAI;UAAEwB,GAAG,EAAE,SAAP;UAAkBC,GAAG,EAAE;SADpC;QAETxB,IAAI,EAAEA,IAFG;QAGTC,KAAK,EAAEA,KAHE;QAITC,OAAO,EAAEA,OAJA;QAKTC,SAAS,EAAEA,SALF;QAMTC,MAAM,EAAEA,MANC;QAOTC,KAAK,EAAEA,KAPE;QAQTC,OAAO,EAAEA,OARA;QASTC,WAAW,EAAEA,WATJ;QAUTC,OAAO,EAAEA,OAVA;QAWTC,SAAS,EAAEA,SAXF;QAYTC,SAAS,EAAEA,SAZF;QAaTC,QAAQ,EAAEA,QAbD;QAcTC,MAAM,EAAEA;OAdZ;MAgBAa,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;QAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;UACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;OAFR;MAKAX,WAAW,CAACG,OAAZ,GAAsB,IAAIU,KAAK,CAACC,QAAV,CAAmBT,MAAnB,CAAtB;MACA,wBAAAL,WAAW,CAACG,OAAZ,8EAAqBY,MAArB,CAA4BhB,MAA5B;MACAH,SAAS,IAAIA,SAAS,CAACI,WAAW,CAACG,OAAb,CAAtB;;GAzBC,EA2BN,CAACJ,MAAD,EAASjB,QAAT,EAAmBQ,WAAnB,EAAgCF,KAAhC,CA3BM,CAAT;EA6BAc,SAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,yBAAAC,WAAW,CAACG,OAAZ,gFAAqBY,MAArB,CAA4BhB,MAA5B;;;IAEJ,OAAO;;;MACH,yBAAAC,WAAW,CAACG,OAAZ,gFAAqBY,MAArB,CAA4B,IAA5B;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,SAAS,CAAC;IACN,OAAO;;;MACH,yBAAAF,WAAW,CAACG,OAAZ,gFAAqBY,MAArB,CAA4B,IAA5B;KADJ;GADK,EAIN,EAJM,CAAT;EAMAb,SAAS,CAAC;;;IACN,yBAAAF,WAAW,CAACG,OAAZ,gFAAqBa,WAArB,CAAiClC,QAAjC;GADK,EAEN,CAACA,QAAD,CAFM,CAAT;EAGAoB,SAAS,CAAC;;;IACN,yBAAAF,WAAW,CAACG,OAAZ,gFAAqBc,OAArB,CAA6BlC,IAA7B;GADK,EAEN,CAACA,IAAD,CAFM,CAAT;EAGAmB,SAAS,CAAC;;;IACN,yBAAAF,WAAW,CAACG,OAAZ,gFAAqBe,QAArB,CAA8BlC,KAA9B;GADK,EAEN,CAACA,KAAD,CAFM,CAAT;EAGAkB,SAAS,CAAC;;;IACN,yBAAAF,WAAW,CAACG,OAAZ,gFAAqBgB,UAArB,CAAgClC,OAAhC;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGAiB,SAAS,CAAC;;;IACN,yBAAAF,WAAW,CAACG,OAAZ,gFAAqBiB,YAArB,CAAkClC,SAAlC;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAGAgB,SAAS,CAAC;;;IACN,0BAAAF,WAAW,CAACG,OAAZ,kFAAqBkB,SAArB,CAA+BlC,MAA/B;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGAe,SAAS,CAAC;;;IACN,0BAAAF,WAAW,CAACG,OAAZ,kFAAqBmB,QAArB,CAA8BlC,KAA9B;GADK,EAEN,CAACA,KAAD,CAFM,CAAT;EAGAc,SAAS,CAAC;;;IACN,0BAAAF,WAAW,CAACG,OAAZ,kFAAqBoB,UAArB,CAAgClC,OAAhC;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGAa,SAAS,CAAC;;;IACN,0BAAAF,WAAW,CAACG,OAAZ,kFAAqBqB,cAArB,CAAoClC,WAApC;GADK,EAEN,CAACA,WAAD,CAFM,CAAT;EAGAY,SAAS,CAAC;;;IACN,0BAAAF,WAAW,CAACG,OAAZ,kFAAqBsB,UAArB,CAAgClC,OAAhC;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGAW,SAAS,CAAC;;;IACP,0BAAAF,WAAW,CAACG,OAAZ,kFAAqBuB,YAArB,CAAkClC,SAAlC;GADM,EAEN,CAACA,SAAD,CAFM,CAAT;EAGAU,SAAS,CAAC;;;IACN,0BAAAF,WAAW,CAACG,OAAZ,kFAAqBwB,YAArB,CAAkClC,SAAlC;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAGAS,SAAS,CAAC;;;IACN,0BAAAF,WAAW,CAACG,OAAZ,kFAAqByB,WAArB,CAAiClC,QAAjC;GADK,EAEN,CAACA,QAAD,CAFM,CAAT;EAGAQ,SAAS,CAAC;;;IACN,0BAAAF,WAAW,CAACG,OAAZ,kFAAqB0B,SAArB,CAA+BlC,MAA/B;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGA,OAAO,IAAP;AACH,CA9GD;;ACXA,IAAMmC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACjD,KAAD;EACtB,IACIkD,MADJ,GAOIlD,KAPJ,CACIkD,MADJ;MAEIxC,OAFJ,GAOIV,KAPJ,CAEIU,OAFJ;MAGIyC,UAHJ,GAOInD,KAPJ,CAGImD,UAHJ;MAIIC,QAJJ,GAOIpD,KAPJ,CAIIoD,QAJJ;MAKI5D,GALJ,GAOIQ,KAPJ,CAKIR,GALJ;MAMIuB,SANJ,GAOIf,KAPJ,CAMIe,SANJ;EASA,IAAMC,YAAY,GAAGC,UAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAM6D,kBAAkB,GAAGjC,MAAM,EAAjC;;EAGA,IAAMkC,QAAQ,GAAG,SAAXA,QAAW;;;IACb,yBAAAD,kBAAkB,CAAC/B,OAAnB,gFAA4BY,MAA5B,CAAmC,IAAnC;IACA,IAAIV,MAAM,GAAG;MACT0B,MAAM,EAAEA,MAAM,IAAI;QAAEzB,GAAG,EAAE,SAAP;QAAkBC,GAAG,EAAE;OADhC;MAEThB,OAAO,EAAEA,OAFA;MAGTyC,UAAU,EAAEA,UAHH;MAITC,QAAQ,EAAEA;KAJd;IAMAzB,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;MAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;QACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;KAFR;IAKAuB,kBAAkB,CAAC/B,OAAnB,GAA6B,IAAIU,KAAK,CAACuB,eAAV,CAA0B/B,MAA1B,CAA7B;IACA,0BAAA6B,kBAAkB,CAAC/B,OAAnB,kFAA4BY,MAA5B,CAAmChB,MAAnC;IACAH,SAAS,IAAIA,SAAS,CAACsC,kBAAkB,CAAC/B,OAApB,CAAtB;GAfJ;;EAkBAD,SAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAACmC,kBAAkB,CAAC/B,OAAlC,EAA2C;MACvCgC,QAAQ;;GAFP,EAIN,CAACpC,MAAD,CAJM,CAAT;EAMAG,SAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,0BAAAmC,kBAAkB,CAAC/B,OAAnB,kFAA4BY,MAA5B,CAAmChB,MAAnC;;;IAEJ,OAAO;;;MACH,0BAAAmC,kBAAkB,CAAC/B,OAAnB,kFAA4BY,MAA5B,CAAmC,IAAnC;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,SAAS,CAAC;IACN,OAAO;;;MACH,0BAAAgC,kBAAkB,CAAC/B,OAAnB,kFAA4BY,MAA5B,CAAmC,IAAnC;KADJ;GADK,EAIN,EAJM,CAAT;EAMAb,SAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MACRoC,QAAQ;;GAFP,EAIN,CAACJ,MAAD,EAASC,UAAT,EAAqBC,QAArB,EAA+B1C,OAA/B,CAJM,CAAT;EAKA,OAAO,IAAP;AACH,CA3DD;;ICXa8C,YAAb;;AACWA,qBAAA,GAAW,UAACC,QAAD;EACd,IAAIA,QAAQ,IAAI1B,SAAZ,IAAyB0B,QAAQ,IAAI,IAAzC,EAA+C;IAC3C,OAAO,IAAP;;;EAEJ,OAAO,KAAP;AACH,CALM;;ACoBX,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAAC1D,KAAD;EACb,IACI2D,MADJ,GAeI3D,KAfJ,CACI2D,MADJ;MAEIC,MAFJ,GAeI5D,KAfJ,CAEI4D,MAFJ;yBAeI5D,KAfJ,CAGI6D,SAHJ;MAGIA,SAHJ,iCAGc,SAHd;2BAeI7D,KAfJ,CAII8D,WAJJ;MAIIA,WAJJ,mCAIkB,CAJlB;uBAeI9D,KAfJ,CAKIU,OALJ;MAKIA,OALJ,+BAKc,IALd;2BAeIV,KAfJ,CAMI+D,WANJ;MAMIA,WANJ,mCAMkB,SANlB;MAOIC,WAPJ,GAeIhE,KAfJ,CAOIgE,WAPJ;MAQIrD,SARJ,GAeIX,KAfJ,CAQIW,SARJ;MASIsD,MATJ,GAeIjE,KAfJ,CASIiE,MATJ;MAUI5D,SAVJ,GAeIL,KAfJ,CAUIK,SAVJ;MAWIO,SAXJ,GAeIZ,KAfJ,CAWIY,SAXJ;MAYIpB,GAZJ,GAeIQ,KAfJ,CAYIR,GAZJ;MAaIuB,SAbJ,GAeIf,KAfJ,CAaIe,SAbJ;MAcImD,OAdJ,GAeIlE,KAfJ,CAcIkE,OAdJ;EAiBA,IAAMlD,YAAY,GAAGC,UAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAM2E,SAAS,GAAG/C,MAAM,EAAxB;EAEAC,SAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAACiD,SAAS,CAAC7C,OAAzB,EAAkC;MAAA;;MAC9B,IAAIE,MAAM,GAAG;QACTmC,MAAM,EAAEA,MAAM,IAAI;UAAElC,GAAG,EAAE,SAAP;UAAkBC,GAAG,EAAE;SADhC;QAETkC,MAAM,EAAEA,MAFC;QAGTC,SAAS,EAAEA,SAHF;QAITC,WAAW,EAAEA,WAJJ;QAKTpD,OAAO,EAAEA,OALA;QAMTqD,WAAW,EAAEA,WANJ;QAOTC,WAAW,EAAEA,WAPJ;QAQTrD,SAAS,EAAEA,SARF;QASTsD,MAAM,EAAEA,MATC;QAUT5D,SAAS,EAAEA,SAVF;QAWTO,SAAS,EAAEA;OAXf;MAaAe,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAACC,GAAD;QACxB,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;UACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;OAFR;MAKAqC,SAAS,CAAC7C,OAAV,GAAoB,IAAIU,KAAK,CAACoC,MAAV,CAAiB5C,MAAjB,CAApB;MACA,sBAAA2C,SAAS,CAAC7C,OAAV,0EAAmBY,MAAnB,CAA0BhB,MAA1B;MACAH,SAAS,IAAIA,SAAS,CAACoD,SAAS,CAAC7C,OAAX,CAAtB;MACA6C,SAAS,CAAC7C,OAAV,CAAkB4C,OAAlB,GAA4BA,OAA5B;;GAvBC,EAyBN,CAAChD,MAAD,CAzBM,CAAT;EA2BAG,SAAS,CAAC;IACN,IAAI8C,SAAS,CAAC7C,OAAd,EAAuB;MACnB6C,SAAS,CAAC7C,OAAV,CAAkB4C,OAAlB,GAA4BA,OAA5B;;GAFC,EAIN,CAACA,OAAD,CAJM,CAAT;EAMA7C,SAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,uBAAAiD,SAAS,CAAC7C,OAAV,4EAAmBY,MAAnB,CAA0BhB,MAA1B;;;IAEJ,OAAO;;;MACH,uBAAAiD,SAAS,CAAC7C,OAAV,4EAAmBY,MAAnB,CAA0B,IAA1B;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,SAAS,CAAC;IACN,OAAO;;;MACH,uBAAA8C,SAAS,CAAC7C,OAAV,4EAAmBY,MAAnB,CAA0B,IAA1B;KADJ;GADK,EAIN,EAJM,CAAT;EAMAb,SAAS,CAAC;IACN,IAAImC,YAAY,CAACa,QAAb,CAAsBV,MAAtB,CAAJ,EAAmC;MAAA;;MAC/B,uBAAAQ,SAAS,CAAC7C,OAAV,4EAAmBgD,SAAnB,CAA6BX,MAA7B;;GAFC,EAKN,CAACA,MAAD,CALM,CAAT;EAMAtC,SAAS,CAAC;IACN,IAAImC,YAAY,CAACa,QAAb,CAAsBT,MAAtB,CAAJ,EAAmC;MAAA;;MAC/B,uBAAAO,SAAS,CAAC7C,OAAV,4EAAmBiD,SAAnB,CAA6BX,MAA7B;;GAFC,EAIN,CAACA,MAAD,CAJM,CAAT;EAKAvC,SAAS,CAAC;IACN,IAAImC,YAAY,CAACa,QAAb,CAAsBR,SAAtB,CAAJ,EAAsC;MAAA;;MAClC,uBAAAM,SAAS,CAAC7C,OAAV,4EAAmBkD,YAAnB,CAAgCX,SAAhC;;GAFC,EAIN,CAACA,SAAD,CAJM,CAAT;EAKAxC,SAAS,CAAC;IACN,IAAImC,YAAY,CAACa,QAAb,CAAsBP,WAAtB,CAAJ,EAAwC;MAAA;;MACpC,uBAAAK,SAAS,CAAC7C,OAAV,4EAAmBmD,cAAnB,CAAkCX,WAAlC;;GAFC,EAIN,CAACA,WAAD,CAJM,CAAT;EAKAzC,SAAS,CAAC;IACN,IAAImC,YAAY,CAACa,QAAb,CAAsB3D,OAAtB,CAAJ,EAAoC;MAAA;;MAChC,uBAAAyD,SAAS,CAAC7C,OAAV,4EAAmBsB,UAAnB,CAA8BlC,OAA9B;;GAFC,EAIN,CAACA,OAAD,CAJM,CAAT;EAKAW,SAAS,CAAC;IACN,IAAImC,YAAY,CAACa,QAAb,CAAsBN,WAAtB,CAAJ,EAAwC;MAAA;;MACpC,wBAAAI,SAAS,CAAC7C,OAAV,8EAAmBoD,cAAnB,CAAkCX,WAAlC;;GAFC,EAIN,CAACA,WAAD,CAJM,CAAT;EAKA1C,SAAS,CAAC;IACN,IAAImC,YAAY,CAACa,QAAb,CAAsBL,WAAtB,CAAJ,EAAwC;MAAA;;MACpC,wBAAAG,SAAS,CAAC7C,OAAV,8EAAmBqD,cAAnB,CAAkCX,WAAlC;;GAFC,EAIN,CAACA,WAAD,CAJM,CAAT;EAKA3C,SAAS,CAAC;IACN,IAAImC,YAAY,CAACa,QAAb,CAAsB1D,SAAtB,CAAJ,EAAsC;MAAA;;MAClC,wBAAAwD,SAAS,CAAC7C,OAAV,8EAAmBuB,YAAnB,CAAgClC,SAAhC;;GAFC,EAIN,CAACA,SAAD,CAJM,CAAT;EAKAU,SAAS,CAAC;IACN,IAAImC,YAAY,CAACa,QAAb,CAAsBJ,MAAtB,CAAJ,EAAmC;MAAA;;MAC/B,wBAAAE,SAAS,CAAC7C,OAAV,8EAAmBsD,SAAnB,CAA6BX,MAA7B;;GAFC,EAIN,CAACA,MAAD,CAJM,CAAT;EAKA5C,SAAS,CAAC;IACN,IAAImC,YAAY,CAACa,QAAb,CAAsBhE,SAAtB,CAAJ,EAAsC;MAAA;;MAClC,wBAAA8D,SAAS,CAAC7C,OAAV,8EAAmBiB,YAAnB,CAAgClC,SAAhC;;GAFC,EAIN,CAACA,SAAD,CAJM,CAAT;EAKAgB,SAAS,CAAC;IACN,IAAImC,YAAY,CAACa,QAAb,CAAsBzD,SAAtB,CAAJ,EAAsC;MAAA;;MAClC,wBAAAuD,SAAS,CAAC7C,OAAV,8EAAmBwB,YAAnB,CAAgClC,SAAhC;;GAFC,EAIN,CAACA,SAAD,CAJM,CAAT;EAMA,OAAO,IAAP;AACH,CA/HD;;ACZA,IAAMiE,WAAW,GAAG,SAAdA,WAAc,CAAC7E,KAAD;EAChB,IACI8E,aADJ,GAII9E,KAJJ,CACI8E,aADJ;MAEItF,GAFJ,GAIIQ,KAJJ,CAEIR,GAFJ;MAGIuB,SAHJ,GAIIf,KAJJ,CAGIe,SAHJ;EAMA,IAAMC,YAAY,GAAGC,UAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAMuF,YAAY,GAAG3D,MAAM,EAA3B;;EAGA,IAAMkC,QAAQ,GAAG,SAAXA,QAAW;;;IACb,yBAAAyB,YAAY,CAACzD,OAAb,gFAAsBO,OAAtB,CAA8B,UAACmD,OAAD;;;MAC1B9D,MAAM,SAAN,IAAAA,MAAM,WAAN,4BAAAA,MAAM,CAAE+D,IAAR,8DAAcC,MAAd,CAAqBF,OAArB;KADJ;IAGAD,YAAY,CAACzD,OAAb,GAAuBJ,MAAvB,aAAuBA,MAAvB,wCAAuBA,MAAM,CAAE+D,IAA/B,kDAAuB,cAAcE,UAAd,CAAyBL,aAAzB,CAAvB;IACA/D,SAAS,IAAIA,SAAS,CAACgE,YAAY,CAACzD,OAAd,CAAtB;GALJ;;EAQAD,SAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MACRoC,QAAQ;;GAFP,EAIN,CAACpC,MAAD,CAJM,CAAT;EAMAG,SAAS,CAAC;IACN,OAAO;;;MACH,0BAAA0D,YAAY,CAACzD,OAAb,kFAAsBO,OAAtB,CAA8B,UAACmD,OAAD;;;QAC1B9D,MAAM,SAAN,IAAAA,MAAM,WAAN,6BAAAA,MAAM,CAAE+D,IAAR,gEAAcC,MAAd,CAAqBF,OAArB;OADJ;KADJ;GADK,EAMN,EANM,CAAT;EAOA,OAAO,IAAP;AACH,CAlCD;;AC8BA,IAAMI,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACpF,KAAD;EACzB,IACIqF,MADJ,GAuBIrF,KAvBJ,CACIqF,MADJ;MAEIC,YAFJ,GAuBItF,KAvBJ,CAEIsF,YAFJ;MAGIC,iBAHJ,GAuBIvF,KAvBJ,CAGIuF,iBAHJ;MAIIC,iBAJJ,GAuBIxF,KAvBJ,CAIIwF,iBAJJ;MAKIC,kBALJ,GAuBIzF,KAvBJ,CAKIyF,kBALJ;MAMIC,kBANJ,GAuBI1F,KAvBJ,CAMI0F,kBANJ;MAOIC,mBAPJ,GAuBI3F,KAvBJ,CAOI2F,mBAPJ;MAQIC,mBARJ,GAuBI5F,KAvBJ,CAQI4F,mBARJ;MASIC,mBATJ,GAuBI7F,KAvBJ,CASI6F,mBATJ;MAUIC,oBAVJ,GAuBI9F,KAvBJ,CAUI8F,oBAVJ;MAWIC,oBAXJ,GAuBI/F,KAvBJ,CAWI+F,oBAXJ;MAYIC,qBAZJ,GAuBIhG,KAvBJ,CAYIgG,qBAZJ;MAaIC,mBAbJ,GAuBIjG,KAvBJ,CAaIiG,mBAbJ;MAcIC,wBAdJ,GAuBIlG,KAvBJ,CAcIkG,wBAdJ;MAeIC,qBAfJ,GAuBInG,KAvBJ,CAeImG,qBAfJ;MAgBIC,eAhBJ,GAuBIpG,KAvBJ,CAgBIoG,eAhBJ;MAiBI5G,GAjBJ,GAuBIQ,KAvBJ,CAiBIR,GAjBJ;MAkBI6G,OAlBJ,GAuBIrG,KAvBJ,CAkBIqG,OAlBJ;MAmBItF,SAnBJ,GAuBIf,KAvBJ,CAmBIe,SAnBJ;MAoBIuF,UApBJ,GAuBItG,KAvBJ,CAoBIsG,UApBJ;MAqBIC,WArBJ,GAuBIvG,KAvBJ,CAqBIuG,WArBJ;MAsBIC,WAtBJ,GAuBIxG,KAvBJ,CAsBIwG,WAtBJ;EAyBA,IAAMxF,YAAY,GAAGC,UAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAMiH,YAAY,GAAGrF,MAAM,EAA3B;EAEAC,SAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAACuF,YAAY,CAACnF,OAA5B,EAAqC;MAAA;;MACjC,IAAIE,MAAM,GAAG;QACT6D,MAAM,EAANA,MADS;QAETC,YAAY,EAAZA,YAFS;QAGTC,iBAAiB,EAAjBA,iBAHS;QAITC,iBAAiB,EAAjBA,iBAJS;QAKTC,kBAAkB,EAAlBA,kBALS;QAMTC,kBAAkB,EAAlBA,kBANS;QAOTC,mBAAmB,EAAnBA,mBAPS;QAQTC,mBAAmB,EAAnBA,mBARS;QASTC,mBAAmB,EAAnBA,mBATS;QAUTC,oBAAoB,EAApBA,oBAVS;QAWTC,oBAAoB,EAApBA,oBAXS;QAYTC,qBAAqB,EAArBA,qBAZS;QAaTC,mBAAmB,EAAnBA,mBAbS;QAcTC,wBAAwB,EAAxBA,wBAdS;QAeTC,qBAAqB,EAArBA,qBAfS;QAgBTC,eAAe,EAAfA;OAhBJ;MAkBAzE,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;QAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;UACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;OAFR;MAKA2E,YAAY,CAACnF,OAAb,GAAuB,IAAIU,KAAK,CAAC0E,kBAAV,CAA6BlF,MAA7B,CAAvB;MACA,yBAAAiF,YAAY,CAACnF,OAAb,gFAAsBY,MAAtB,CAA6BhB,MAA7B;MACAuF,YAAY,CAACnF,OAAb,CAAqB+E,OAArB,GAA+BrG,KAAK,CAACqG,OAArC;MACAI,YAAY,CAACnF,OAAb,CAAqBgF,UAArB,GAAkCA,UAAlC;MACAG,YAAY,CAACnF,OAAb,CAAqBiF,WAArB,GAAmCA,WAAnC;MACAE,YAAY,CAACnF,OAAb,CAAqBkF,WAArB,GAAmCA,WAAnC;MACAzF,SAAS,IAAIA,SAAS,CAAC0F,YAAY,CAACnF,OAAd,CAAtB;;;IAEJ,OAAO;;;MACH,0BAAAmF,YAAY,CAACnF,OAAb,kFAAsBY,MAAtB,CAA6B,IAA7B;KADJ;GAjCK,EAoCN,CAAChB,MAAD,CApCM,CAAT;EAsCAG,SAAS,CAAC;IACN,IAAIoF,YAAY,CAACnF,OAAjB,EAA0B;MACtBmF,YAAY,CAACnF,OAAb,CAAqB+E,OAArB,GAA+BA,OAA/B;;GAFC,EAIN,CAACA,OAAD,CAJM,CAAT;EAMAhF,SAAS,CAAC;IACN,IAAIoF,YAAY,CAACnF,OAAjB,EAA0B;MACtBmF,YAAY,CAACnF,OAAb,CAAqBgF,UAArB,GAAkCA,UAAlC;;GAFC,EAIN,CAACA,UAAD,CAJM,CAAT;EAMAjF,SAAS,CAAC;IACN,IAAIoF,YAAY,CAACnF,OAAjB,EAA0B;MACtBmF,YAAY,CAACnF,OAAb,CAAqBiF,WAArB,GAAmCA,WAAnC;;GAFC,EAIN,CAACA,WAAD,CAJM,CAAT;EAMAlF,SAAS,CAAC;IACN,IAAIoF,YAAY,CAACnF,OAAjB,EAA0B;MACtBmF,YAAY,CAACnF,OAAb,CAAqBkF,WAArB,GAAmCA,WAAnC;;GAFC,EAIN,CAACA,WAAD,CAJM,CAAT;EAMAnF,SAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,0BAAAuF,YAAY,CAACnF,OAAb,kFAAsBY,MAAtB,CAA6BhB,MAA7B;;;IAEJ,OAAO;;;MACH,0BAAAuF,YAAY,CAACnF,OAAb,kFAAsBY,MAAtB,CAA6B,IAA7B;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,SAAS,CAAC;IACN,OAAO;;;MACH,0BAAAoF,YAAY,CAACnF,OAAb,kFAAsBY,MAAtB,CAA6B,IAA7B;KADJ;GADK,EAIN,EAJM,CAAT;EAMAb,SAAS,CAAC;;;IACNgE,MAAM,IAAItD,SAAV,+BAAuB0E,YAAY,CAACnF,OAApC,2DAAuB,uBAAsBqF,SAAtB,CAAgCtB,MAAhC,CAAvB;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGAhE,SAAS,CAAC;;;IACNiE,YAAY,IAAIvD,SAAhB,+BAA6B0E,YAAY,CAACnF,OAA1C,2DAA6B,uBAAsBsF,eAAtB,CAAsCtB,YAAtC,CAA7B;GADK,EAEN,CAACA,YAAD,CAFM,CAAT;EAGAjE,SAAS,CAAC;;;IACNsE,mBAAmB,IAAI5D,SAAvB,+BAAoC0E,YAAY,CAACnF,OAAjD,2DAAoC,uBAAsBuF,sBAAtB,CAA6ClB,mBAA7C,CAApC;GADK,EAEN,CAACA,mBAAD,CAFM,CAAT;EAGAtE,SAAS,CAAC;;;IACN2E,qBAAqB,IAAIjE,SAAzB,+BAAsC0E,YAAY,CAACnF,OAAnD,2DAAsC,uBAAsBwF,wBAAtB,CAA+Cd,qBAA/C,CAAtC;GADK,EAEN,CAACA,qBAAD,CAFM,CAAT;EAGA3E,SAAS,CAAC;;;IACN,IAAIG,MAAM,GAAG;MACT6D,MAAM,EAANA,MADS;MAETC,YAAY,EAAZA,YAFS;MAGTC,iBAAiB,EAAjBA,iBAHS;MAITC,iBAAiB,EAAjBA,iBAJS;MAKTC,kBAAkB,EAAlBA,kBALS;MAMTC,kBAAkB,EAAlBA,kBANS;MAOTC,mBAAmB,EAAnBA,mBAPS;MAQTC,mBAAmB,EAAnBA,mBARS;MASTC,mBAAmB,EAAnBA,mBATS;MAUTC,oBAAoB,EAApBA,oBAVS;MAWTC,oBAAoB,EAApBA,oBAXS;MAYTC,qBAAqB,EAArBA,qBAZS;MAaTC,mBAAmB,EAAnBA,mBAbS;MAcTC,wBAAwB,EAAxBA,wBAdS;MAeTC,qBAAqB,EAArBA,qBAfS;MAgBTC,eAAe,EAAfA;KAhBJ;IAkBAzE,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;MAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;QACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;KAFR;IAKA,2BAAA2E,YAAY,CAACnF,OAAb,oFAAsByF,UAAtB,CAAiCvF,MAAjC;GAxBK,EA0BL,CACI+D,iBADJ,EAEIC,iBAFJ,EAGIC,kBAHJ,EAIIC,kBAJJ,EAKIG,mBALJ,EAMIC,oBANJ,EAOIC,oBAPJ,EAQIE,mBARJ,EASIC,wBATJ,EAUIC,qBAVJ,EAWIC,eAXJ,CA1BK,CAAT;EA0CA,OAAO,IAAP;AACH,CAjKD;;AC/BA,IAAMY,eAAe,GAAG,SAAlBA,eAAkB,CAAChH,KAAD;EACpB,IACIiH,MADJ,GASIjH,KATJ,CACIiH,MADJ;MAEI/D,MAFJ,GASIlD,KATJ,CAEIkD,MAFJ;MAGIgE,QAHJ,GASIlH,KATJ,CAGIkH,QAHJ;MAIIxG,OAJJ,GASIV,KATJ,CAIIU,OAJJ;MAKIuD,MALJ,GASIjE,KATJ,CAKIiE,MALJ;MAMIkD,OANJ,GASInH,KATJ,CAMImH,OANJ;MAOI3H,GAPJ,GASIQ,KATJ,CAOIR,GAPJ;MAQIuB,SARJ,GASIf,KATJ,CAQIe,SARJ;EAWA,IAAMC,YAAY,GAAGC,UAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAM4H,gBAAgB,GAAGhG,MAAM,EAA/B;;EAGA,IAAMkC,QAAQ,GAAG,SAAXA,QAAW;;;IACb,yBAAA8D,gBAAgB,CAAC9F,OAAjB,gFAA0BY,MAA1B,CAAiC,IAAjC;IACA,IAAIV,MAAM,GAAG;MACTyF,MAAM,EAANA,MADS;MAET/D,MAAM,EAAEA,MAFC;MAGTgE,QAAQ,EAARA,QAHS;MAITxG,OAAO,EAAEA,OAJA;MAKTuD,MAAM,EAAEA,MALC;MAMTkD,OAAO,EAAEA;KANb;IAQAxF,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;MAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;QACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;KAFR;IAKAsF,gBAAgB,CAAC9F,OAAjB,GAA2B,IAAIU,KAAK,CAACqF,WAAV,CAAsB7F,MAAtB,CAA3B;IACA,0BAAA4F,gBAAgB,CAAC9F,OAAjB,kFAA0BY,MAA1B,CAAiChB,MAAjC;IACAH,SAAS,IAAIA,SAAS,CAACqG,gBAAgB,CAAC9F,OAAlB,CAAtB;GAjBJ;;EAoBAD,SAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAACkG,gBAAgB,CAAC9F,OAAhC,EAAyC;MACrCgC,QAAQ;;GAFP,EAIN,CAACpC,MAAD,CAJM,CAAT;EAMAG,SAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,0BAAAkG,gBAAgB,CAAC9F,OAAjB,kFAA0BY,MAA1B,CAAiChB,MAAjC;;;IAEJ,OAAO;;;MACH,0BAAAkG,gBAAgB,CAAC9F,OAAjB,kFAA0BY,MAA1B,CAAiC,IAAjC;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,SAAS,CAAC;IACN,OAAO;;;MACH,0BAAA+F,gBAAgB,CAAC9F,OAAjB,kFAA0BY,MAA1B,CAAiC,IAAjC;KADJ;GADK,EAIN,EAJM,CAAT;EAMAb,SAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MACRoC,QAAQ;;GAFP,EAIN,CAAC2D,MAAD,EAAS/D,MAAT,EAAiBgE,QAAjB,CAJM,CAAT;EAKA7F,SAAS,CAAC;;;IACNX,OAAO,IAAIqB,SAAX,+BAAwBqF,gBAAgB,CAAC9F,OAAzC,2DAAwB,uBAA0BsB,UAA1B,CAAqClC,OAArC,CAAxB;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGAW,SAAS,CAAC;;;IACN4C,MAAM,IAAIlC,SAAV,+BAAuBqF,gBAAgB,CAAC9F,OAAxC,2DAAuB,uBAA0BsD,SAA1B,CAAoCX,MAApC,CAAvB;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGA5C,SAAS,CAAC;;;IACN8F,OAAO,IAAIpF,SAAX,+BAAwBqF,gBAAgB,CAAC9F,OAAzC,2DAAwB,uBAA0BgG,UAA1B,CAAqCH,OAArC,CAAxB;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGA,OAAO,IAAP;AACH,CAxED;;ACAA,IAAMI,cAAc,GAAG,SAAjBA,cAAiB,CAACvH,KAAD;EACnB,IACIwH,GADJ,GAQIxH,KARJ,CACIwH,GADJ;MAEIP,MAFJ,GAQIjH,KARJ,CAEIiH,MAFJ;MAGIvG,OAHJ,GAQIV,KARJ,CAGIU,OAHJ;MAIIuD,MAJJ,GAQIjE,KARJ,CAIIiE,MAJJ;MAKIkD,OALJ,GAQInH,KARJ,CAKImH,OALJ;MAMI3H,GANJ,GAQIQ,KARJ,CAMIR,GANJ;MAOIuB,SAPJ,GAQIf,KARJ,CAOIe,SAPJ;EAUA,IAAMC,YAAY,GAAGC,UAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAMiI,eAAe,GAAGrG,MAAM,EAA9B;;EAGA,IAAMkC,QAAQ,GAAG,SAAXA,QAAW;;;IACb,yBAAAmE,eAAe,CAACnG,OAAhB,gFAAyBY,MAAzB,CAAgC,IAAhC;IACA,IAAIV,MAAM,GAAG;MACTgG,GAAG,EAAHA,GADS;MAETP,MAAM,EAAEA,MAFC;MAGTvG,OAAO,EAAEA,OAHA;MAITuD,MAAM,EAAEA,MAJC;MAKTkD,OAAO,EAAEA;KALb;IAOAxF,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;MAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;QACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;KAFR;IAKA2F,eAAe,CAACnG,OAAhB,GAA0B,IAAIU,KAAK,CAAC0F,YAAV,CAAuBlG,MAAvB,CAA1B;IACA,0BAAAiG,eAAe,CAACnG,OAAhB,kFAAyBY,MAAzB,CAAgChB,MAAhC;IACAH,SAAS,IAAIA,SAAS,CAAC0G,eAAe,CAACnG,OAAjB,CAAtB;GAhBJ;;EAmBAD,SAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAACuG,eAAe,CAACnG,OAA/B,EAAwC;MACpCgC,QAAQ;;GAFP,EAIN,CAACpC,MAAD,CAJM,CAAT;EAMAG,SAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,0BAAAuG,eAAe,CAACnG,OAAhB,kFAAyBY,MAAzB,CAAgChB,MAAhC;;;IAEJ,OAAO;;;MACH,0BAAAuG,eAAe,CAACnG,OAAhB,kFAAyBY,MAAzB,CAAgC,IAAhC;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,SAAS,CAAC;IACN,OAAO;;;MACH,0BAAAoG,eAAe,CAACnG,OAAhB,kFAAyBY,MAAzB,CAAgC,IAAhC;KADJ;GADK,EAIN,EAJM,CAAT;EAMAb,SAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MACRoC,QAAQ;;GAFP,EAIN,CAACkE,GAAD,EAAMP,MAAN,EAAchD,MAAd,CAJM,CAAT;EAKA5C,SAAS,CAAC;;;IACNX,OAAO,IAAIqB,SAAX,+BAAwB0F,eAAe,CAACnG,OAAxC,2DAAwB,uBAAyBsB,UAAzB,CAAoClC,OAApC,CAAxB;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGAW,SAAS,CAAC;;;IACN8F,OAAO,IAAIpF,SAAX,+BAAwB0F,eAAe,CAACnG,OAAxC,2DAAwB,uBAAyBgG,UAAzB,CAAoCH,OAApC,CAAxB;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGA,OAAO,IAAP;AACH,CAnED;;SCJgBQ,WAAWH,KAAaI;EACtC,IAAIC,QAAQ,eAAaD,EAAzB;EACA,IAAIE,KAAK,GAAGC,QAAQ,CAACC,cAAT,CAAwBH,QAAxB,CAAZ;;EACA,IAAIC,KAAJ,EAAW;IACT,OAAO,IAAP;;;EAEF,IAAMG,MAAM,GAAGF,QAAQ,CAACG,aAAT,CAAuB,QAAvB,CAAf;EACAD,MAAM,CAACE,GAAP,GAAaX,GAAb;EACAS,MAAM,CAACG,KAAP,GAAe,IAAf;EACAH,MAAM,CAACL,EAAP,GAAYC,QAAZ;EACAE,QAAQ,CAACM,IAAT,CAAcC,WAAd,CAA0BL,MAA1B;EACA,OAAOA,MAAP;AACD;;AAED,IAAMM,QAAQ,GAAG,SAAXA,QAAW;EACf,IAAIC,EAAE,GAAG,IAAIC,IAAJ,GAAWC,OAAX,EAAT;EACA,IAAIC,IAAI,GAAG,uCAAuCC,OAAvC,CAA+C,OAA/C,EAAwD,UAAUC,CAAV;IACjE,IAAIC,CAAC,GAAG,CAACN,EAAE,GAAGO,IAAI,CAACC,MAAL,KAAgB,EAAtB,IAA4B,EAA5B,GAAiC,CAAzC;IACAR,EAAE,GAAGO,IAAI,CAACE,KAAL,CAAWT,EAAE,GAAG,EAAhB,CAAL;IACA,OAAO,CAACK,CAAC,IAAI,GAAL,GAAWC,CAAX,GAAgBA,CAAC,GAAG,GAAJ,GAAU,GAA3B,EAAiCI,QAAjC,CAA0C,EAA1C,CAAP;GAHS,CAAX;EAKA,OAAOP,IAAP;AACD,CARD;;AA4CA,IAAMQ,KAAK,GAAG,SAARA,KAAQ,CAACnJ,KAAD;;;EAEZ,IAAMoJ,QAAQ,GAAGhI,MAAM,CAAC;IACtBiI,OAAO,EAAErJ,KAAK,CAACqJ,OADO;IAEtBC,KAAK,EAAEtJ,KAAK,CAACuJ,KAFS;IAGtBC,OAAO,EAAExJ,KAAK,CAACwJ,OAHO;IAItBC,WAAW,EAAEzJ,KAAK,CAACyJ,WAJG;IAKtBC,SAAS,EAAE1J,KAAK,CAAC0J,SALK;IAMtBC,SAAS,EAAE3J,KAAK,CAAC2J;GANI,CAAvB;;EASA,IAAMC,QAAQ,GAAGxI,MAAM,YAAvB;EACA,IAAMyI,SAAS,GAAGzI,MAAM,EAAxB;EACA,IAAM0I,MAAM,GAAG1I,MAAM,EAArB;EACA,IAAM2I,aAAa,GAAG3I,MAAM,EAA5B;EACA,IAAMoG,GAAG,GAAGpG,MAAM,EAAlB;EACA,IAAM4I,MAAM,GAAG5I,MAAM,CAAQ,EAAR,CAArB;EACA,IAAQ6I,IAAR,GAAwCjK,KAAxC,CAAQiK,IAAR;MAAc7J,OAAd,GAAwCJ,KAAxC,CAAcI,OAAd;MAAuBuD,MAAvB,GAAwC3D,KAAxC,CAAuB2D,MAAvB;MAA+BuG,IAA/B,GAAwClK,KAAxC,CAA+BkK,IAA/B;;EAEA,gBAAsBC,QAAQ,EAA9B;MAAO3K,GAAP;MAAY0C,MAAZ;;EAEAb,SAAS,CAAC;IACR,IAAI7B,GAAJ,EAAS;MACP,IAAI4K,MAAM,GAAG5K,GAAG,CAAC6K,SAAJ,EAAb;;MACA,IAAIJ,IAAI,IAAIlI,SAAR,IAAqBkI,IAAI,IAAI,IAAjC,EAAuC;QACrCG,MAAM,CAACE,OAAP,CAAeL,IAAf;;;MAEF,IAAI7J,OAAO,IAAI2B,SAAX,IAAwB3B,OAAO,IAAI,IAAvC,EAA6C;QAC3CgK,MAAM,CAAC9H,UAAP,CAAkBlC,OAAlB;;;MAEF,IAAIuD,MAAM,IAAI5B,SAAV,IAAuB4B,MAAM,IAAI,IAArC,EAA2C;QACzCyG,MAAM,CAACG,SAAP,CAAiB5G,MAAjB;;;MAEF,IAAIuG,IAAI,IAAInI,SAAR,IAAqBmI,IAAI,IAAI,IAAjC,EAAuC;QACrCE,MAAM,CAACI,OAAP,CAAe7G,MAAf;;;MAEFnE,GAAG,CAACiL,UAAJ,CAAeL,MAAf;;GAfK,EAiBN,CAACH,IAAD,EAAO7J,OAAP,EAAgBuD,MAAhB,EAAwBnE,GAAxB,CAjBM,CAAT;EAoBA6B,SAAS,CAAC;IACR,IAAMuG,EAAE,GAAGW,QAAQ,EAAnB;IACAqB,QAAQ,CAACtI,OAAT,iBAA+BsG,EAA/B;;IACA,IAAM8C,cAAc,GAAG,SAAjBA,cAAiB;MACrBC,MAAM,CAACf,QAAQ,CAACtI,OAAV,CAAN,GAA2B;QACzBwI,MAAM,CAACxI,OAAP,GAAiB,IAAIqJ,MAAM,CAAC3I,KAAP,CAAa4I,GAAjB,CAAqBf,SAAS,CAACvI,OAA/B,EAAwC8H,QAAQ,CAAC9H,OAAT,CAAiB+H,OAAzD,CAAjB;;QACA,IAAIrJ,KAAK,CAAC6K,UAAV,EAAsB;UACpB7K,KAAK,CAAC6K,UAAN,CAAiBf,MAAM,CAACxI,OAAxB,EAAiCsG,EAAjC;;;QAEFkD,aAAa;QACb5I,MAAM,CAAC4H,MAAM,CAACxI,OAAR,CAAN;OANF;KADF;;IAUA,IAAIyJ,MAAM,oBAAiB/K,KAAK,CAACyJ,WAAN,GAAoB,MAAML,QAAQ,CAAC9H,OAAT,CAAiBmI,WAA3C,GAAyD,EAA1E,eAAV;;IACA,IAAIL,QAAQ,CAAC9H,OAAT,CAAiBqI,SAArB,EAAgC;MAC9BoB,MAAM,GAAG3B,QAAQ,CAAC9H,OAAT,CAAiBqI,SAA1B;;;IAEF,IAAIqB,MAAM,GAAMD,MAAN,4BAAmC3B,QAAQ,CAAC9H,OAAT,CAAiBkI,OAApD,aAAmEJ,QAAQ,CAAC9H,OAAT,CAAiBoI,SAApF,kBAA0GE,QAAQ,CAACtI,OAA7H;;IACA,IAAI8H,QAAQ,CAAC9H,OAAT,CAAiBgI,KAArB,EAA4B;MAC1B0B,MAAM,gBAAc5B,QAAQ,CAAC9H,OAAT,CAAiBgI,KAArC;;;IAEFoB,cAAc;IACd,IAAIzC,MAAM,GAAGN,UAAU,CAACqD,MAAD,EAASpD,EAAT,CAAvB;;IACA,IAAIK,MAAJ,EAAY;MACV8B,aAAa,CAACzI,OAAd,GAAwB2G,MAAxB;;;IAEFT,GAAG,CAAClG,OAAJ,GAAc0J,MAAd;IACA,OAAO;MACL,IAAMC,OAAO,GAAG,SAAVA,OAAU;;;QACd,OAAON,MAAM,CAACf,QAAQ,CAACtI,OAAV,CAAb;;QACA,IAAIyI,aAAa,CAACzI,OAAd,IAAyB,IAA7B,EAAmC;UACjCyI,aAAa,CAACzI,OAAd,CAAsB4D,MAAtB;;;QAEF,mBAAA8E,MAAM,CAAC1I,OAAP,oEAAgBO,OAAhB,CAAwB,UAACqJ,CAAD;UACtBA,CAAC,SAAD,IAAAA,CAAC,WAAD,YAAAA,CAAC,CAAEhG,MAAH;SADF;QAGA,mBAAA4E,MAAM,CAACxI,OAAP,oEAAgB2J,OAAhB;QACAzD,GAAG,CAAClG,OAAJ,GAAcS,SAAd;OATF;;MAWAkJ,OAAO;KAZT;GA3BO,EAyCN,CAACjL,KAAK,CAACyJ,WAAP,EAAoBzJ,KAAK,CAACwJ,OAA1B,EAAmCxJ,KAAK,CAAC0J,SAAzC,CAzCM,CAAT;EA2CArI,SAAS,CAAC;;;IACR,mBAAArB,KAAK,CAACqJ,OAAN,kEAAe8B,OAAf,KAA0BpJ,SAA1B,yBAAuC+H,MAAM,CAACxI,OAA9C,qDAAuC,iBAAgB8J,UAAhB,oBAA2BpL,KAAK,CAACqJ,OAAjC,oDAA2B,gBAAe8B,OAA1C,CAAvC;GADO,EAEN,oBAACnL,KAAK,CAACqJ,OAAP,oDAAC,gBAAe8B,OAAhB,CAFM,CAAT;EAIA9J,SAAS,CAAC;;;IACR,IAAI,oBAAArB,KAAK,CAACqJ,OAAN,oEAAe1F,MAAf,KAAyB5B,SAA7B,EAAwC;MAAA;;MACtC,IAAIqI,MAAM,uBAAGN,MAAM,CAACxI,OAAV,qDAAG,iBAAgB+I,SAAhB,EAAb;MACAD,MAAM,SAAN,IAAAA,MAAM,WAAN,YAAAA,MAAM,CAAEG,SAAR,oBAAkBvK,KAAK,CAACqJ,OAAxB,oDAAkB,gBAAe1F,MAAjC;MACA,oBAAAmG,MAAM,CAACxI,OAAP,sEAAgBmJ,UAAhB,CAA2BL,MAA3B;;;IAEF,oBAAApK,KAAK,CAACqJ,OAAN,oEAAe8B,OAAf,KAA0BpJ,SAA1B,yBAAuC+H,MAAM,CAACxI,OAA9C,qDAAuC,iBAAgB8J,UAAhB,oBAA2BpL,KAAK,CAACqJ,OAAjC,oDAA2B,gBAAe8B,OAA1C,CAAvC;GANO,EAON,oBAACnL,KAAK,CAACqJ,OAAP,oDAAC,gBAAe1F,MAAhB,CAPM,CAAT;;EASA,IAAMmH,aAAa,GAAG,SAAhBA,aAAgB;;;IACpB,IAAIO,gBAAgB,uBAAGvB,MAAM,CAACxI,OAAV,qDAAG,iBAAgBgK,WAAhB,QAAA,EAAgD,UAACC,IAAD;;;MACrE,iBAAAA,IAAI,CAACC,MAAL,8DAAatH,OAAb,uBAAwBqH,IAAI,CAACC,MAA7B,kDAAwB,cAAatH,OAAb,CAAqBqH,IAArB,CAAxB;KADqB,EAEpB;MACDC,MAAM,EAAE;KAHa,CAAvB;IAKA,IAAIC,qBAAqB,uBAAG3B,MAAM,CAACxI,OAAV,qDAAG,iBAAgBgK,WAAhB,aAAA,EAAqD,UAACC,IAAD;;;MAC/E,kBAAAA,IAAI,CAACC,MAAL,gEAAaE,YAAb,uBAA6BH,IAAI,CAACC,MAAlC,kDAA6B,cAAaE,YAAb,CAA0BH,IAA1B,CAA7B;KAD0B,EAEzB;MACDC,MAAM,EAAE;KAHkB,CAA5B;IAKA,IAAIG,kBAAkB,uBAAG7B,MAAM,CAACxI,OAAV,qDAAG,iBAAgBgK,WAAhB,UAAA,EAAkD,UAACC,IAAD;;;MACzE,kBAAAA,IAAI,CAACC,MAAL,gEAAaI,SAAb,uBAA0BL,IAAI,CAACC,MAA/B,kDAA0B,cAAaI,SAAb,CAAuBL,IAAvB,CAA1B;KADuB,EAEtB;MACDC,MAAM,EAAE;KAHe,CAAzB;IAMA,IAAIK,gBAAgB,uBAAG/B,MAAM,CAACxI,OAAV,qDAAG,iBAAgBgK,WAAhB,QAAA,EAAgD,UAACC,IAAD;;;MACrE,kBAAAA,IAAI,CAACC,MAAL,gEAAanF,OAAb,uBAAwBkF,IAAI,CAACC,MAA7B,kDAAwB,cAAanF,OAAb,CAAqBkF,IAArB,CAAxB;KADqB,EAEpB;MACDC,MAAM,EAAE;KAHa,CAAvB;IAMA,IAAIM,iBAAiB,wBAAGhC,MAAM,CAACxI,OAAV,sDAAG,kBAAgBgK,WAAhB,QAAA,EAAgD,UAACC,IAAD;;;MACtE,kBAAAA,IAAI,CAACQ,OAAL,gEAAc1F,OAAd,wBAAyBkF,IAAI,CAACQ,OAA9B,mDAAyB,eAAc1F,OAAd,CAAsBkF,IAAtB,CAAzB;KADsB,EAErB;MACDQ,OAAO,EAAE;KAHa,CAAxB;IAMA,IAAIC,kBAAkB,wBAAGlC,MAAM,CAACxI,OAAV,sDAAG,kBAAgBgK,WAAhB,QAAA,EAAgD,UAACC,IAAD;;;MACvE,mBAAAA,IAAI,CAACU,QAAL,kEAAe5F,OAAf,yBAA0BkF,IAAI,CAACU,QAA/B,oDAA0B,gBAAe5F,OAAf,CAAuBkF,IAAvB,CAA1B;KADuB,EAEtB;MACDU,QAAQ,EAAE;KAHa,CAAzB;IAMA,IAAIC,mBAAmB,wBAAGpC,MAAM,CAACxI,OAAV,sDAAG,kBAAgBgK,WAAhB,QAAA,EAAgD,UAACC,IAAD;;;MACxE,mBAAAA,IAAI,CAACY,QAAL,kEAAe9F,OAAf,yBAA0BkF,IAAI,CAACY,QAA/B,oDAA0B,gBAAe9F,OAAf,CAAuBkF,IAAvB,CAA1B;KADwB,EAEvB;MACDa,UAAU,EAAE;KAHY,CAA1B;IAMA,IAAIC,kBAAkB,wBAAGvC,MAAM,CAACxI,OAAV,sDAAG,kBAAgBgK,WAAhB,QAAA,EAAgD,UAACC,IAAD;;;MACvE,oBAAAA,IAAI,CAACU,QAAL,oEAAe/H,OAAf,yBAA0BqH,IAAI,CAACU,QAA/B,oDAA0B,gBAAe/H,OAAf,CAAuBqH,IAAvB,CAA1B;KADuB,EAEtB;MACDU,QAAQ,EAAE;KAHa,CAAzB;IAMA,IAAIK,sBAAsB,wBAAGxC,MAAM,CAACxI,OAAV,sDAAG,kBAAgBgK,WAAhB,WAAA,EAAmD,UAACC,IAAD;;;MAC9E,oBAAAA,IAAI,CAACY,QAAL,oEAAe7F,UAAf,yBAA6BiF,IAAI,CAACY,QAAlC,oDAA6B,gBAAe7F,UAAf,CAA0BiF,IAA1B,CAA7B;KAD2B,EAE1B;MACDa,UAAU,EAAE;KAHe,CAA7B;IAMA,IAAIG,uBAAuB,wBAAGzC,MAAM,CAACxI,OAAV,sDAAG,kBAAgBgK,WAAhB,YAAA,EAAoD,UAACC,IAAD;;;MAChF,oBAAAA,IAAI,CAACY,QAAL,oEAAe5F,WAAf,yBAA8BgF,IAAI,CAACY,QAAnC,oDAA8B,gBAAe5F,WAAf,CAA2BgF,IAA3B,CAA9B;KAD4B,EAE3B;MACDa,UAAU,EAAE;KAHgB,CAA9B;IAMA,IAAII,uBAAuB,wBAAG1C,MAAM,CAACxI,OAAV,sDAAG,kBAAgBgK,WAAhB,YAAA,EAAoD,UAACC,IAAD;;;MAChF,oBAAAA,IAAI,CAACY,QAAL,oEAAe3F,WAAf,yBAA8B+E,IAAI,CAACY,QAAnC,oDAA8B,gBAAe3F,WAAf,CAA2B+E,IAA3B,CAA9B;KAD4B,EAE3B;MACDa,UAAU,EAAE;KAHgB,CAA9B;IAMA,IAAIK,qBAAqB,wBAAG3C,MAAM,CAACxI,OAAV,sDAAG,kBAAgBgK,WAAhB,WAAA,EAAmD,UAACC,IAAD;;;MAC7E,oBAAAA,IAAI,CAACU,QAAL,oEAAe3F,UAAf,yBAA6BiF,IAAI,CAACU,QAAlC,oDAA6B,gBAAe3F,UAAf,CAA0BiF,IAA1B,CAA7B;KAD0B,EAEzB;MACDU,QAAQ,EAAE;KAHgB,CAA5B;IAMA,IAAIS,sBAAsB,wBAAG5C,MAAM,CAACxI,OAAV,sDAAG,kBAAgBgK,WAAhB,YAAA,EAAoD,UAACC,IAAD;;;MAC/E,oBAAAA,IAAI,CAACU,QAAL,oEAAe1F,WAAf,yBAA8BgF,IAAI,CAACU,QAAnC,oDAA8B,gBAAe1F,WAAf,CAA2BgF,IAA3B,CAA9B;KAD2B,EAE1B;MACDU,QAAQ,EAAE;KAHiB,CAA7B;IAMA,IAAIU,sBAAsB,wBAAG7C,MAAM,CAACxI,OAAV,sDAAG,kBAAgBgK,WAAhB,YAAA,EAAoD,UAACC,IAAD;;;MAC/E,oBAAAA,IAAI,CAACU,QAAL,oEAAezF,WAAf,0BAA8B+E,IAAI,CAACU,QAAnC,qDAA8B,iBAAezF,WAAf,CAA2B+E,IAA3B,CAA9B;KAD2B,EAE1B;MACDU,QAAQ,EAAE;KAHiB,CAA7B;IAMA,IAAIW,mBAAmB,wBAAG9C,MAAM,CAACxI,OAAV,sDAAG,kBAAgBgK,WAAhB,WAAA,EAAmD,UAACC,IAAD;;;MAC3E,kBAAAA,IAAI,CAACC,MAAL,gEAAalF,UAAb,wBAA2BiF,IAAI,CAACC,MAAhC,mDAA2B,eAAalF,UAAb,CAAwBiF,IAAxB,CAA3B;KADwB,EAEvB;MACDC,MAAM,EAAE;KAHgB,CAA1B;IAMA,IAAIqB,oBAAoB,wBAAG/C,MAAM,CAACxI,OAAV,sDAAG,kBAAgBgK,WAAhB,YAAA,EAAoD,UAACC,IAAD;;;MAC7E,mBAAAA,IAAI,CAACC,MAAL,kEAAajF,WAAb,wBAA4BgF,IAAI,CAACC,MAAjC,mDAA4B,eAAajF,WAAb,CAAyBgF,IAAzB,CAA5B;KADyB,EAExB;MACDC,MAAM,EAAE;KAHiB,CAA3B;IAMA,IAAIsB,oBAAoB,wBAAGhD,MAAM,CAACxI,OAAV,sDAAG,kBAAgBgK,WAAhB,YAAA,EAAoD,UAACC,IAAD;;;MAC7E,mBAAAA,IAAI,CAACC,MAAL,kEAAahF,WAAb,wBAA4B+E,IAAI,CAACC,MAAjC,mDAA4B,eAAahF,WAAb,CAAyB+E,IAAzB,CAA5B;KADyB,EAExB;MACDC,MAAM,EAAE;KAHiB,CAA3B;IAMA,IAAIuB,aAAa,wBAAGjD,MAAM,CAACxI,OAAV,sDAAG,kBAAgBgK,WAAhB,QAAA,EAAgD,UAACC,IAAD;;;MAClE,cAAAA,IAAI,CAACyB,GAAL,wDAAU9I,OAAV,oBAAqBqH,IAAI,CAACyB,GAA1B,+CAAqB,WAAU9I,OAAV,CAAkBqH,IAAlB,CAArB;KADkB,EAEjB;MACDyB,GAAG,EAAE;KAHa,CAApB;IAMA,IAAIC,aAAa,wBAAGnD,MAAM,CAACxI,OAAV,sDAAG,kBAAgBgK,WAAhB,QAAA,EAAgD,UAACC,IAAD;;;MAClE,eAAAA,IAAI,CAACyB,GAAL,0DAAU3G,OAAV,oBAAqBkF,IAAI,CAACyB,GAA1B,+CAAqB,WAAU3G,OAAV,CAAkBkF,IAAlB,CAArB;KADkB,EAEjB;MACDyB,GAAG,EAAE;KAHa,CAApB;IAMAhD,MAAM,CAAC1I,OAAP,GAAiB0I,MAAM,CAAC1I,OAAP,CAAe4L,MAAf,CAAsB,CACrC7B,gBADqC,EAErCI,qBAFqC,EAGrCE,kBAHqC,EAIrCE,gBAJqC,EAKrCC,iBALqC,EAMrCE,kBANqC,EAOrCE,mBAPqC,EAQrCG,kBARqC,EASrCC,sBATqC,EAUrCC,uBAVqC,EAWrCC,uBAXqC,EAYrCC,qBAZqC,EAarCC,sBAbqC,EAcrCC,sBAdqC,EAerCC,mBAfqC,EAgBrCC,oBAhBqC,EAiBrCC,oBAjBqC,EAkBrCC,aAlBqC,EAmBrCE,aAnBqC,uBAoBrCnD,MAAM,CAACxI,OApB8B,sDAoBrC,kBAAgBgK,WAAhB,QAAA,EAAgD,UAACC,IAAD;;;MAC9C,iBAAAA,IAAI,CAAC4B,MAAL,8DAAajJ,OAAb,uBAAwBqH,IAAI,CAAC4B,MAA7B,kDAAwB,cAAajJ,OAAb,CAAqBqH,IAArB,CAAxB;MACA,kBAAAA,IAAI,CAACQ,OAAL,2FAAc7H,OAAd,qGAAwBqH,IAAxB;KAFF,EAGG;MACD4B,MAAM,EAAE,IADP;MAEDpB,OAAO,EAAE;KALX,CApBqC,CAAtB,CAAjB;;IA4BA,IAAI/L,KAAK,CAACoN,eAAV,EAA2B;MAAA;;MACzB,IAAIA,eAAe,wBAAGtD,MAAM,CAACxI,OAAV,sDAAG,kBAAgBgK,WAAhB,QAAA,EAAgD,UAACC,IAAD;QACpEvL,KAAK,CAACoN,eAAN,IAAyBpN,KAAK,CAACoN,eAAN,CAAsB7B,IAAtB,CAAzB;OADoB,EAEnB;QACD8B,QAAQ,EAAE;OAHU,CAAtB;MAKArD,MAAM,CAAC1I,OAAP,CAAegM,IAAf,CAAoBF,eAApB;;;IAEF,IAAIpN,KAAK,CAACuN,oBAAV,EAAgC;MAAA;;MAC9B,IAAIA,oBAAoB,wBAAGzD,MAAM,CAACxI,OAAV,sDAAG,kBAAgBgK,WAAhB,aAAA,EAAqD,UAACC,IAAD;QAC9EvL,KAAK,CAACuN,oBAAN,IAA8BvN,KAAK,CAACuN,oBAAN,CAA2BhC,IAA3B,CAA9B;OADyB,EAExB;QACD8B,QAAQ,EAAE;OAHe,CAA3B;MAKArD,MAAM,CAAC1I,OAAP,CAAegM,IAAf,CAAoBC,oBAApB;;;IAEF,IAAIvN,KAAK,CAACwN,aAAV,EAAyB;MAAA;;MACvB,IAAIA,aAAa,wBAAG1D,MAAM,CAACxI,OAAV,sDAAG,kBAAgBgK,WAAhB,cAAA,EAAsD,UAACC,IAAD;QACxEvL,KAAK,CAACwN,aAAN,IAAuBxN,KAAK,CAACwN,aAAN,CAAoBjC,IAApB,CAAvB;OADkB,EAEjB;QACD8B,QAAQ,EAAE;OAHQ,CAApB;MAKArD,MAAM,CAAC1I,OAAP,CAAegM,IAAf,CAAoBE,aAApB;;;IAEF,IAAIxN,KAAK,CAACyN,gBAAV,EAA4B;MAAA;;MAC1B,IAAIA,gBAAgB,wBAAG3D,MAAM,CAACxI,OAAV,sDAAG,kBAAgBgK,WAAhB,iBAAA,EAAyD,UAACC,IAAD;QAC9EvL,KAAK,CAACyN,gBAAN,IAA0BzN,KAAK,CAACyN,gBAAN,CAAuBlC,IAAvB,CAA1B;OADqB,EAEpB;QACD8B,QAAQ,EAAE;OAHW,CAAvB;MAKArD,MAAM,CAAC1I,OAAP,CAAegM,IAAf,CAAoBG,gBAApB;;GA3KJ;;EA8KA,IAAIC,UAAU,GAAG;IACflO,GAAG,EAAEA;GADP;EAGA,OACEmO,mBAAA,CAACC,QAAD,MAAA,EACED,mBAAA,MAAA;IACEE,KAAK,EAAE;MAAEC,KAAK,EAAE,MAAT;MAAiBxN,MAAM,EAAE,MAAzB;MAAiCyN,OAAO,EAAE;;IACjDC,GAAG,EAAEnE;GAFP,CADF,EAME8D,mBAAA,CAAClO,YAAY,CAACwO,QAAd;IAAuBC,KAAK,EAAER;GAA9B,EAGI1N,KAAK,CAACmO,QAHV,CANF,CADF;AAgBD,CAlSD;;ACvBA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAACpO,KAAD;EACb,IACIC,QADJ,GAyBID,KAzBJ,CACIC,QADJ;uBAyBID,KAzBJ,CAEIU,OAFJ;MAEIA,OAFJ,+BAEc,IAFd;MAGI2N,MAHJ,GAyBIrO,KAzBJ,CAGIqO,MAHJ;MAIIC,WAJJ,GAyBItO,KAzBJ,CAIIsO,WAJJ;MAKIC,IALJ,GAyBIvO,KAzBJ,CAKIuO,IALJ;MAMIlO,SANJ,GAyBIL,KAzBJ,CAMIK,SANJ;MAOImO,QAPJ,GAyBIxO,KAzBJ,CAOIwO,QAPJ;MAQIC,KARJ,GAyBIzO,KAzBJ,CAQIyO,KARJ;MASIC,OATJ,GAyBI1O,KAzBJ,CASI0O,OATJ;MAUIC,YAVJ,GAyBI3O,KAzBJ,CAUI2O,YAVJ;MAWI1K,MAXJ,GAyBIjE,KAzBJ,CAWIiE,MAXJ;MAYI2K,KAZJ,GAyBI5O,KAzBJ,CAYI4O,KAZJ;MAaIjO,SAbJ,GAyBIX,KAzBJ,CAaIW,SAbJ;MAcIkO,QAdJ,GAyBI7O,KAzBJ,CAcI6O,QAdJ;MAeIjO,SAfJ,GAyBIZ,KAzBJ,CAeIY,SAfJ;MAgBIpB,GAhBJ,GAyBIQ,KAzBJ,CAgBIR,GAhBJ;MAiBIuB,SAjBJ,GAyBIf,KAzBJ,CAiBIe,SAjBJ;MAkBImD,OAlBJ,GAyBIlE,KAzBJ,CAkBIkE,OAlBJ;MAmBIwH,YAnBJ,GAyBI1L,KAzBJ,CAmBI0L,YAnBJ;MAoBIE,SApBJ,GAyBI5L,KAzBJ,CAoBI4L,SApBJ;MAqBIvF,OArBJ,GAyBIrG,KAzBJ,CAqBIqG,OArBJ;MAsBIC,UAtBJ,GAyBItG,KAzBJ,CAsBIsG,UAtBJ;MAuBIC,WAvBJ,GAyBIvG,KAzBJ,CAuBIuG,WAvBJ;MAwBIC,WAxBJ,GAyBIxG,KAzBJ,CAwBIwG,WAxBJ;EA2BA,IAAMxF,YAAY,GAAGC,UAAU,CAACxB,YAAD,CAA/B;EACA,IAAMqP,oBAAoB,GAAG7N,UAAU,CAACnB,oBAAD,CAAvC;EAEA,IAAMoB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAMuP,SAAS,GAAG3N,MAAM,EAAxB;EAEAC,SAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAAC6N,SAAS,CAACzN,OAAzB,EAAkC;MAC9B,IAAI0N,WAAW,GAAG,OAAOJ,KAAP,IAAgB,QAAhB,GAA2BA,KAA3B,GAAmC,IAAI5M,KAAK,CAACiN,WAAV,CAAsBL,KAAtB,CAArD;MACA,IAAIpN,MAAM,GAAG;QACTvB,QAAQ,EAAEA,QAAQ,IAAI;UAAEwB,GAAG,EAAE,SAAP;UAAkBC,GAAG,EAAE;SADpC;QAEThB,OAAO,EAAEA,OAFA;QAGT2N,MAAM,EAAEA,MAHC;QAITC,WAAW,EAAEA,WAJJ;QAKTjO,SAAS,EAAEA,SALF;QAMTmO,QAAQ,EAAEA,QAND;QAOTC,KAAK,EAAEA,KAPE;QAQTC,OAAO,EAAEA,OARA;QASTC,YAAY,EAAEA,YATL;QAUT1K,MAAM,EAAEA,MAVC;QAWT2K,KAAK,EAAEI,WAXE;QAYTrO,SAAS,EAAEA,SAZF;QAaTkO,QAAQ,EAAEA,QAbD;QAcTjO,SAAS,EAAEA;OAdf;MAgBAe,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;QAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;UACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;OAFR;;MAKA,IAAIyM,IAAJ,EAAU;QACN,IAAIW,KAAK,GAAG,IAAIlN,KAAK,CAACmN,IAAV,CAAeZ,IAAI,CAACT,KAApB,EAA2BS,IAAI,CAACjO,MAAhC,EAAwCiO,IAAI,CAAC/G,GAA7C,CAAZ;QACAhG,MAAM,CAAC+M,IAAP,GAAcW,KAAd;;;MAEJH,SAAS,CAACzN,OAAV,GAAoB,IAAIU,KAAK,CAACoN,MAAV,CAAiB5N,MAAjB,CAApB;;MACA,IAAIxB,KAAK,CAACqP,UAAN,IAAoBtN,SAAxB,EAAmC;QAC/BgN,SAAS,CAACzN,OAAV,CAAkBgO,aAAlB,CAAgCtP,KAAK,CAACqP,UAAtC;;;MAEJ,IAAIrP,KAAK,CAACuP,YAAN,IAAsBxN,SAA1B,EAAqC;QACjCgN,SAAS,CAACzN,OAAV,CAAkBkO,eAAlB,CAAkCxP,KAAK,CAACuP,YAAxC;;;MAEJ,IAAI,EAACT,oBAAD,aAACA,oBAAD,eAACA,oBAAoB,CAAElP,SAAvB,CAAJ,EAAsC;QAClCmP,SAAS,CAACzN,OAAV,CAAkBY,MAAlB,CAAyBhB,MAAzB;;;MAEJ,IAAIlB,KAAK,CAACyP,cAAN,IAAwB1N,SAA5B,EAAuC;QAAA;;QACnC/B,KAAK,CAACyP,cAAN,yBAAuBV,SAAS,CAACzN,OAAjC,uDAAuB,mBAAmBmO,cAAnB,EAAvB,0BAA6DV,SAAS,CAACzN,OAAvE,wDAA6D,oBAAmBoO,cAAnB,EAA7D;;;MAEJX,SAAS,CAACzN,OAAV,CAAkB4C,OAAlB,GAA4BA,OAA5B;MACA6K,SAAS,CAACzN,OAAV,CAAkBoK,YAAlB,GAAiC1L,KAAK,CAAC0L,YAAvC;MACAqD,SAAS,CAACzN,OAAV,CAAkBsK,SAAlB,GAA8B5L,KAAK,CAAC4L,SAApC;MACAmD,SAAS,CAACzN,OAAV,CAAkB+E,OAAlB,GAA4BrG,KAAK,CAACqG,OAAlC;MACA0I,SAAS,CAACzN,OAAV,CAAkBgF,UAAlB,GAA+BA,UAA/B;MACAyI,SAAS,CAACzN,OAAV,CAAkBiF,WAAlB,GAAgCA,WAAhC;MACAwI,SAAS,CAACzN,OAAV,CAAkBkF,WAAlB,GAAgCA,WAAhC;MACAzF,SAAS,IAAIA,SAAS,CAACgO,SAAS,CAACzN,OAAX,CAAtB;MACA,CAAAwN,oBAAoB,SAApB,IAAAA,oBAAoB,WAApB,YAAAA,oBAAoB,CAAElP,SAAtB,MAAmCkP,oBAAnC,aAAmCA,oBAAnC,uBAAmCA,oBAAoB,CAAElP,SAAtB,CAAgCmP,SAAS,CAACzN,OAA1C,CAAnC;;GAjDC,EAmDN,CAACJ,MAAD,CAnDM,CAAT;EAqDAG,SAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MACR,IAAI,EAAC4N,oBAAD,aAACA,oBAAD,eAACA,oBAAoB,CAAElP,SAAvB,CAAJ,EAAsC;QAAA;;QAClC,uBAAAmP,SAAS,CAACzN,OAAV,4EAAmBY,MAAnB,CAA0BhB,MAA1B;;;;IAGR,OAAO;MACH,IAAI,EAAC4N,oBAAD,aAACA,oBAAD,eAACA,oBAAoB,CAAElP,SAAvB,CAAJ,EAAsC;QAAA;;QAClC,uBAAAmP,SAAS,CAACzN,OAAV,4EAAmBY,MAAnB,CAA0B,IAA1B;;KAFR;GANK,EAWN,CAAChB,MAAD,CAXM,CAAT;EAYAG,SAAS,CAAC;IACN,OAAO;MACH,IAAI,EAACyN,oBAAD,aAACA,oBAAD,eAACA,oBAAoB,CAAElP,SAAvB,CAAJ,EAAsC;QAAA;;QAClC,uBAAAmP,SAAS,CAACzN,OAAV,4EAAmBY,MAAnB,CAA0B,IAA1B;;;MAEJ6M,SAAS,CAACzN,OAAV,KAAqBwN,oBAArB,aAAqBA,oBAArB,uBAAqBA,oBAAoB,CAAEjP,YAA3C,MAA2DiP,oBAA3D,aAA2DA,oBAA3D,uBAA2DA,oBAAoB,CAAEjP,YAAtB,CAAmCkP,SAAS,CAACzN,OAA7C,CAA3D;KAJJ;GADK,EAON,EAPM,CAAT;EASAD,SAAS,CAAC;IACN,IAAI0N,SAAS,CAACzN,OAAd,EAAuB;MACnByN,SAAS,CAACzN,OAAV,CAAkB+E,OAAlB,GAA4BA,OAA5B;;GAFC,EAIN,CAACA,OAAD,CAJM,CAAT;EAMAhF,SAAS,CAAC;IACN,IAAI0N,SAAS,CAACzN,OAAd,EAAuB;MACnByN,SAAS,CAACzN,OAAV,CAAkBgF,UAAlB,GAA+BA,UAA/B;;GAFC,EAIN,CAACA,UAAD,CAJM,CAAT;EAMAjF,SAAS,CAAC;IACN,IAAI0N,SAAS,CAACzN,OAAd,EAAuB;MACnByN,SAAS,CAACzN,OAAV,CAAkBiF,WAAlB,GAAgCA,WAAhC;;GAFC,EAIN,CAACA,WAAD,CAJM,CAAT;EAMAlF,SAAS,CAAC;IACN,IAAI0N,SAAS,CAACzN,OAAd,EAAuB;MACnByN,SAAS,CAACzN,OAAV,CAAkBkF,WAAlB,GAAgCA,WAAhC;;GAFC,EAIN,CAACA,WAAD,CAJM,CAAT;EAMAnF,SAAS,CAAC;IACN,IAAI0N,SAAS,CAACzN,OAAd,EAAuB;MACnByN,SAAS,CAACzN,OAAV,CAAkB4C,OAAlB,GAA4BA,OAA5B;;GAFC,EAIN,CAACA,OAAD,CAJM,CAAT;EAMA7C,SAAS,CAAC;IACN,IAAI0N,SAAS,CAACzN,OAAd,EAAuB;MACnByN,SAAS,CAACzN,OAAV,CAAkBoK,YAAlB,GAAiCA,YAAjC;;GAFC,EAIN,CAACA,YAAD,CAJM,CAAT;EAMArK,SAAS,CAAC;IACN,IAAI0N,SAAS,CAACzN,OAAd,EAAuB;MACnByN,SAAS,CAACzN,OAAV,CAAkB+E,OAAlB,GAA4BuF,SAA5B;;GAFC,EAIN,CAACA,SAAD,CAJM,CAAT;EAMAvK,SAAS,CAAC;;;IACN,uBAAA0N,SAAS,CAACzN,OAAV,4EAAmBa,WAAnB,CAA+BlC,QAA/B;GADK,EAEN,CAACA,QAAD,CAFM,CAAT;EAGAoB,SAAS,CAAC;;;IACN,uBAAA0N,SAAS,CAACzN,OAAV,4EAAmBsB,UAAnB,CAA8BlC,OAA9B;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGAW,SAAS,CAAC;;;IACNgN,MAAM,IAAItM,SAAV,4BAAuBgN,SAAS,CAACzN,OAAjC,wDAAuB,oBAAmBqO,SAAnB,CAA6BtB,MAA7B,CAAvB;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGAhN,SAAS,CAAC;;;IACNiN,WAAW,IAAIvM,SAAf,4BAA4BgN,SAAS,CAACzN,OAAtC,wDAA4B,oBAAmBsO,cAAnB,CAAkCtB,WAAlC,CAA5B;GADK,EAEN,CAACA,WAAD,CAFM,CAAT;EAGAjN,SAAS,CAAC;;;IACNkN,IAAI,IAAIxM,SAAR,6BAAqBgN,SAAS,CAACzN,OAA/B,yDAAqB,qBAAmBuO,OAAnB,CAA2BtB,IAA3B,CAArB;GADK,EAEN,CAACA,IAAD,CAFM,CAAT;EAGAlN,SAAS,CAAC;;;IACNhB,SAAS,IAAI0B,SAAb,6BAA0BgN,SAAS,CAACzN,OAApC,yDAA0B,qBAAmBiB,YAAnB,CAAgClC,SAAhC,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAGAgB,SAAS,CAAC;;;IACNmN,QAAQ,IAAIzM,SAAZ,6BAAyBgN,SAAS,CAACzN,OAAnC,yDAAyB,qBAAmBwO,WAAnB,CAA+BtB,QAA/B,CAAzB;GADK,EAEN,CAACA,QAAD,CAFM,CAAT;EAGAnN,SAAS,CAAC;;;IACNoN,KAAK,IAAI1M,SAAT,6BAAsBgN,SAAS,CAACzN,OAAhC,yDAAsB,qBAAmByO,QAAnB,CAA4BtB,KAA5B,CAAtB;GADK,EAEN,CAACA,KAAD,CAFM,CAAT;EAGApN,SAAS,CAAC;;;IACNqN,OAAO,IAAI3M,SAAX,6BAAwBgN,SAAS,CAACzN,OAAlC,yDAAwB,qBAAmB0O,UAAnB,CAA8BtB,OAA9B,CAAxB;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGArN,SAAS,CAAC;;;IACNsN,YAAY,IAAI5M,SAAhB,6BAA6BgN,SAAS,CAACzN,OAAvC,yDAA6B,qBAAmB2O,eAAnB,CAAmCtB,YAAnC,CAA7B;GADK,EAEN,CAACA,YAAD,CAFM,CAAT;EAGAtN,SAAS,CAAC;;;IACN4C,MAAM,IAAIlC,SAAV,6BAAuBgN,SAAS,CAACzN,OAAjC,yDAAuB,qBAAmBsD,SAAnB,CAA6BX,MAA7B,CAAvB;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGA5C,SAAS,CAAC;IACN,IAAIH,MAAM,IAAIsC,YAAY,CAACa,QAAb,CAAsBuK,KAAtB,CAAd,EAA4C;MAAA;;MACxC,IAAII,WAAW,GAAG,OAAOJ,KAAP,IAAgB,QAAhB,GAA2BA,KAA3B,GAAmC,IAAI5M,KAAK,CAACiN,WAAV,CAAsBL,KAAtB,CAArD;MACA,wBAAAG,SAAS,CAACzN,OAAV,8EAAmB4O,QAAnB,CAA4BlB,WAA5B;;GAHC,EAKN,CAACJ,KAAD,CALM,CAAT;EAMAvN,SAAS,CAAC;;;IACNV,SAAS,IAAIoB,SAAb,6BAA0BgN,SAAS,CAACzN,OAApC,yDAA0B,qBAAmBuB,YAAnB,CAAgClC,SAAhC,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAIAU,SAAS,CAAC;;;IACNwN,QAAQ,IAAI9M,SAAZ,6BAAyBgN,SAAS,CAACzN,OAAnC,yDAAyB,qBAAmB6O,WAAnB,CAA+BtB,QAA/B,CAAzB;GADK,EAEN,CAACA,QAAD,CAFM,CAAT;EAIAxN,SAAS,CAAC;;;IACNT,SAAS,IAAImB,SAAb,6BAA0BgN,SAAS,CAACzN,OAApC,yDAA0B,qBAAmBwB,YAAnB,CAAgClC,SAAhC,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAIAS,SAAS,CAAC;;;IACNkN,IAAI,IAAIxM,SAAR,6BAAqBgN,SAAS,CAACzN,OAA/B,yDAAqB,qBAAmBuO,OAAnB,CAA2B,IAAI7N,KAAK,CAACmN,IAAV,CAAeZ,IAAI,CAACT,KAApB,EAA2BS,IAAI,CAACjO,MAAhC,EAAwCiO,IAAI,CAAC/G,GAA7C,CAA3B,CAArB;GADK,EAEN,CAAC+G,IAAD,CAFM,CAAT;EAIAlN,SAAS,CAAC;;;IACNrB,KAAK,CAACqP,UAAN,IAAoBtN,SAApB,6BAAiCgN,SAAS,CAACzN,OAA3C,yDAAiC,qBAAmBgO,aAAnB,CAAiCtP,KAAK,CAACqP,UAAvC,CAAjC;GADK,EAEN,CAACrP,KAAK,CAACqP,UAAP,CAFM,CAAT;EAIAhO,SAAS,CAAC;;;IACNrB,KAAK,CAACuP,YAAN,IAAsBxN,SAAtB,6BAAmCgN,SAAS,CAACzN,OAA7C,yDAAmC,qBAAmBkO,eAAnB,CAAmCxP,KAAK,CAACuP,YAAzC,CAAnC;GADK,EAEN,CAACvP,KAAK,CAACuP,YAAP,CAFM,CAAT;EAIAlO,SAAS,CAAC;IACN,IAAIrB,KAAK,CAACyP,cAAN,IAAwB1N,SAA5B,EAAuC;MAAA;;MACnC/B,KAAK,CAACyP,cAAN,2BAAuBV,SAAS,CAACzN,OAAjC,yDAAuB,qBAAmBmO,cAAnB,EAAvB,2BAA6DV,SAAS,CAACzN,OAAvE,yDAA6D,qBAAmBoO,cAAnB,EAA7D;;GAFC,EAIN,CAAC1P,KAAK,CAACyP,cAAP,CAJM,CAAT;EAKA,OAAO,IAAP;AACH,CA3ND;;AC9BA,IAAMW,eAAe,GAAG,SAAlBA,eAAkB,CAACpQ,KAAD;EACpB,qBAQIA,KARJ,CACIqQ,OADJ;MACIA,OADJ,+BACc,CADd;uBAQIrQ,KARJ,CAEIsQ,OAFJ;MAEIA,OAFJ,+BAEc,EAFd;sBAQItQ,KARJ,CAGI4D,MAHJ;MAGIA,MAHJ,8BAGa,GAHb;MAII2M,WAJJ,GAQIvQ,KARJ,CAIIuQ,WAJJ;MAKIC,WALJ,GAQIxQ,KARJ,CAKIwQ,WALJ;MAMIhR,GANJ,GAQIQ,KARJ,CAMIR,GANJ;MAOIuB,SAPJ,GAQIf,KARJ,CAOIe,SAPJ;EAUA,IAAMC,YAAY,GAAGC,UAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAMiR,UAAU,GAAGrP,MAAM,CAAiB,EAAjB,CAAzB;EACA,IAAMsP,gBAAgB,GAAGtP,MAAM,EAA/B;;EAEA,IAAMuP,WAAW,GAAG,SAAdA,WAAc;;;IAChB,yBAAAD,gBAAgB,CAACpP,OAAjB,gFAA0BY,MAA1B,CAAiC,IAAjC;;IACA,IAAIhB,MAAJ,EAAY;MAAA;;MACR,IAAIM,MAAM,GAAG;QACT6O,OAAO,EAAEA,OADA;QAETC,OAAO,EAAEA,OAFA;QAGT1M,MAAM,EAAEA,MAHC;QAIT2M,WAAW,EAAEA,WAJJ;QAKTC,WAAW,EAAEA;OALjB;MAOA7O,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;QAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;UACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;OAFR;;MAKA,IAAI2O,UAAU,CAACnP,OAAX,IAAsB,wBAAAmP,UAAU,CAACnP,OAAX,4EAAoBC,MAApB,IAA6B,CAAvD,EAA0D;QAAA;;QACtDmP,gBAAgB,CAACpP,OAAjB,GAA2B,IAAIU,KAAK,CAAC4O,eAAV,CAA0BH,UAAU,CAACnP,OAArC,EAA8CE,MAA9C,CAA3B;QACA,0BAAAkP,gBAAgB,CAACpP,OAAjB,kFAA0BY,MAA1B,CAAiChB,MAAjC;QACAH,SAAS,IAAIA,SAAS,CAAC2P,gBAAgB,CAACpP,OAAlB,CAAtB;;;GAlBZ;;EAuBA,IAAMuP,cAAc,GAAG;IACnBjR,SAAS,EAAE,mBAAC4L,MAAD;MACPiF,UAAU,CAACnP,OAAX,CAAmBgM,IAAnB,CAAwB9B,MAAxB;MACAmF,WAAW;KAHI;IAKnB9Q,YAAY,EAAE,sBAAC2L,MAAD;MACV,IAAIsF,UAAU,GAAGL,UAAU,CAACnP,OAAX,CAAmByP,MAAnB,CAA0B,UAAA7F,CAAC;QAAA,OAAIA,CAAC,IAAIM,MAAT;OAA3B,CAAjB;MACAiF,UAAU,CAACnP,OAAX,GAAqBwP,UAArB;MACAH,WAAW;;GARnB;EAYAtP,SAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAACwP,gBAAgB,CAACpP,OAAhC,EAAyC;MACrCqP,WAAW;;GAFV,EAIN,CAACzP,MAAD,CAJM,CAAT;EAMAG,SAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,0BAAAwP,gBAAgB,CAACpP,OAAjB,kFAA0BY,MAA1B,CAAiChB,MAAjC;;;IAEJ,OAAO;;;MACH,0BAAAwP,gBAAgB,CAACpP,OAAjB,kFAA0BY,MAA1B,CAAiC,IAAjC;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,SAAS,CAAC;IACN,OAAO;;;MACH,0BAAAqP,gBAAgB,CAACpP,OAAjB,kFAA0BY,MAA1B,CAAiC,IAAjC;KADJ;GADK,EAIN,EAJM,CAAT;EAKAb,SAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MACRyP,WAAW;;GAFV,EAIN,CAACN,OAAD,EAAUC,OAAV,EAAmB1M,MAAnB,EAA2B4M,WAA3B,CAJM,CAAT;EAKAnP,SAAS,CAAC;;;IACNkP,WAAW,IAAIxO,SAAf,+BAA4B2O,gBAAgB,CAACpP,OAA7C,2DAA4B,uBAA0B0P,cAA1B,CAAyCT,WAAzC,CAA5B;GADK,EAEN,CAACA,WAAD,CAFM,CAAT;EAIA,OACI5C,mBAAA,CAAC7N,oBAAoB,CAACmO,QAAtB;IAA+BC,KAAK,EAAE2C;GAAtC,EACK7Q,KADL,aACKA,KADL,uBACKA,KAAK,CAAEmO,QADZ,CADJ;AAKH,CApFD;;ACYA,IAAM8C,KAAK,GAAG,SAARA,KAAQ,CAACjR,KAAD;EACV,IACIC,QADJ,GAgBID,KAhBJ,CACIC,QADJ;MAEIwO,KAFJ,GAgBIzO,KAhBJ,CAEIyO,KAFJ;MAGIyC,QAHJ,GAgBIlR,KAhBJ,CAGIkR,QAHJ;MAIIC,KAJJ,GAgBInR,KAhBJ,CAIImR,KAJJ;MAKIC,IALJ,GAgBIpR,KAhBJ,CAKIoR,IALJ;MAMI7C,IANJ,GAgBIvO,KAhBJ,CAMIuO,IANJ;MAOIlO,SAPJ,GAgBIL,KAhBJ,CAOIK,SAPJ;MAQI4D,MARJ,GAgBIjE,KAhBJ,CAQIiE,MARJ;MASIvD,OATJ,GAgBIV,KAhBJ,CASIU,OATJ;MAUIC,SAVJ,GAgBIX,KAhBJ,CAUIW,SAVJ;MAWIC,SAXJ,GAgBIZ,KAhBJ,CAWIY,SAXJ;MAYIpB,GAZJ,GAgBIQ,KAhBJ,CAYIR,GAZJ;MAaIuB,SAbJ,GAgBIf,KAhBJ,CAaIe,SAbJ;MAcImD,OAdJ,GAgBIlE,KAhBJ,CAcIkE,OAdJ;MAeImC,OAfJ,GAgBIrG,KAhBJ,CAeIqG,OAfJ;EAkBA,IAAMrF,YAAY,GAAGC,UAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAM6R,MAAM,GAAGjQ,MAAM,EAArB;EAEAC,SAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAACmQ,MAAM,CAAC/P,OAAtB,EAA+B;MAAA;;MAC3B,IAAIE,MAAM,GAAG;QACTvB,QAAQ,EAAEA,QAAQ,IAAI;UAAEwB,GAAG,EAAE,SAAP;UAAkBC,GAAG,EAAE;SADpC;QAET+M,KAAK,EAAEA,KAFE;QAGTyC,QAAQ,EAAEA,QAHD;QAITC,KAAK,EAAEA,KAJE;QAKTC,IAAI,EAAEA,IALG;QAMT7C,IAAI,EAAEA,IANG;QAOTlO,SAAS,EAAEA,SAPF;QAQT4D,MAAM,EAAEA,MARC;QASTvD,OAAO,EAAEA,OATA;QAUTC,SAAS,EAAEA,SAVF;QAWTC,SAAS,EAAEA;OAXf;MAaAe,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;QAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;UACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;OAFR;MAKAuP,MAAM,CAAC/P,OAAP,GAAiB,IAAIU,KAAK,CAACsP,GAAV,CAAc9P,MAAd,CAAjB;MACA6P,MAAM,CAAC/P,OAAP,CAAe4C,OAAf,GAAyBA,OAAzB;MACAmN,MAAM,CAAC/P,OAAP,CAAe+E,OAAf,GAAyBA,OAAzB;MACA,mBAAAgL,MAAM,CAAC/P,OAAP,oEAAgBY,MAAhB,CAAuBhB,MAAvB;MACAH,SAAS,IAAIA,SAAS,CAACsQ,MAAM,CAAC/P,OAAR,CAAtB;;GAxBC,EA0BN,CAACJ,MAAD,CA1BM,CAAT;EA4BAG,SAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,oBAAAmQ,MAAM,CAAC/P,OAAP,sEAAgBY,MAAhB,CAAuBhB,MAAvB;;;IAEJ,OAAO;;;MACH,oBAAAmQ,MAAM,CAAC/P,OAAP,sEAAgBY,MAAhB,CAAuB,IAAvB;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,SAAS,CAAC;IACN,OAAO;;;MACH,oBAAAgQ,MAAM,CAAC/P,OAAP,sEAAgBY,MAAhB,CAAuB,IAAvB;KADJ;GADK,EAIN,EAJM,CAAT;EAMAb,SAAS,CAAC;;;IACN,oBAAAgQ,MAAM,CAAC/P,OAAP,sEAAgBa,WAAhB,CAA4BlC,QAA5B;GADK,EAEN,CAACA,QAAD,CAFM,CAAT;EAGAoB,SAAS,CAAC;;;IACNoN,KAAK,IAAI1M,SAAT,yBAAsBsP,MAAM,CAAC/P,OAA7B,qDAAsB,iBAAgByO,QAAhB,CAAyBtB,KAAzB,CAAtB;GADK,EAEN,CAACA,KAAD,CAFM,CAAT;EAGApN,SAAS,CAAC;;;IACN6P,QAAQ,IAAInP,SAAZ,yBAAyBsP,MAAM,CAAC/P,OAAhC,qDAAyB,iBAAgBiQ,WAAhB,CAA4BL,QAA5B,CAAzB;GADK,EAEN,CAACA,QAAD,CAFM,CAAT;EAGA7P,SAAS,CAAC;;;IACN8P,KAAK,IAAIpP,SAAT,yBAAsBsP,MAAM,CAAC/P,OAA7B,qDAAsB,iBAAgBkQ,QAAhB,CAAyBL,KAAzB,CAAtB;GADK,EAEN,CAACA,KAAD,CAFM,CAAT;EAGA9P,SAAS,CAAC;;;IACN+P,IAAI,IAAIrP,SAAR,yBAAqBsP,MAAM,CAAC/P,OAA5B,qDAAqB,iBAAgBmQ,OAAhB,CAAwBL,IAAxB,CAArB;GADK,EAEN,CAACA,IAAD,CAFM,CAAT;EAGA/P,SAAS,CAAC;;;IACNkN,IAAI,IAAIxM,SAAR,0BAAqBsP,MAAM,CAAC/P,OAA5B,sDAAqB,kBAAgBuO,OAAhB,CAAwBtB,IAAxB,CAArB;GADK,EAEN,CAACA,IAAD,CAFM,CAAT;EAGAlN,SAAS,CAAC;;;IACNhB,SAAS,IAAI0B,SAAb,0BAA0BsP,MAAM,CAAC/P,OAAjC,sDAA0B,kBAAgBiB,YAAhB,CAA6BlC,SAA7B,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAGAgB,SAAS,CAAC;;;IACN4C,MAAM,IAAIlC,SAAV,0BAAuBsP,MAAM,CAAC/P,OAA9B,sDAAuB,kBAAgBsD,SAAhB,CAA0BX,MAA1B,CAAvB;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGA5C,SAAS,CAAC;;;IACNX,OAAO,IAAIqB,SAAX,0BAAwBsP,MAAM,CAAC/P,OAA/B,sDAAwB,kBAAgBsB,UAAhB,CAA2BlC,OAA3B,CAAxB;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGAW,SAAS,CAAC;;;IACNV,SAAS,IAAIoB,SAAb,0BAA0BsP,MAAM,CAAC/P,OAAjC,sDAA0B,kBAAgBuB,YAAhB,CAA6BlC,SAA7B,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAGAU,SAAS,CAAC;;;IACNT,SAAS,IAAImB,SAAb,0BAA0BsP,MAAM,CAAC/P,OAAjC,sDAA0B,kBAAgBwB,YAAhB,CAA6BlC,SAA7B,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAIAS,SAAS,CAAC;IACN,IAAIgQ,MAAM,CAAC/P,OAAX,EAAoB;MAChB+P,MAAM,CAAC/P,OAAP,CAAe4C,OAAf,GAAyBA,OAAzB;;GAFC,EAIN,CAACA,OAAD,CAJM,CAAT;EAKA7C,SAAS,CAAC;IACN,IAAIgQ,MAAM,CAAC/P,OAAX,EAAoB;MAChB+P,MAAM,CAAC/P,OAAP,CAAe+E,OAAf,GAAyBA,OAAzB;;GAFC,EAIN,CAACA,OAAD,CAJM,CAAT;EAKA,OAAO,IAAP;AACH,CA9GD;;ACbA,IAAMqL,YAAY,GAAG,SAAfA,YAAe,CAAC1R,KAAD;EACjB,IACIkD,MADJ,GAOIlD,KAPJ,CACIkD,MADJ;uBAOIlD,KAPJ,CAEIU,OAFJ;MAEIA,OAFJ,+BAEc,IAFd;MAGIyC,UAHJ,GAOInD,KAPJ,CAGImD,UAHJ;MAIIC,QAJJ,GAOIpD,KAPJ,CAIIoD,QAJJ;MAKI5D,GALJ,GAOIQ,KAPJ,CAKIR,GALJ;MAMIuB,SANJ,GAOIf,KAPJ,CAMIe,SANJ;EASA,IAAMC,YAAY,GAAGC,UAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAMmS,aAAa,GAAGvQ,MAAM,EAA5B;;EAGA,IAAMkC,QAAQ,GAAG,SAAXA,QAAW;;;IACb,yBAAAqO,aAAa,CAACrQ,OAAd,gFAAuBY,MAAvB,CAA8B,IAA9B;IACA,IAAIV,MAAM,GAAG;MACT0B,MAAM,EAAEA,MAAM,IAAI;QAAEzB,GAAG,EAAE,SAAP;QAAkBC,GAAG,EAAE;OADhC;MAEThB,OAAO,EAAEA,OAFA;MAGTyC,UAAU,EAAEA,UAHH;MAITC,QAAQ,EAAEA;KAJd;IAMAzB,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;MAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;QACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;KAFR;IAKA6P,aAAa,CAACrQ,OAAd,GAAwB,IAAIU,KAAK,CAAC4P,UAAV,CAAqBpQ,MAArB,CAAxB;IACA,0BAAAmQ,aAAa,CAACrQ,OAAd,kFAAuBY,MAAvB,CAA8BhB,MAA9B;IACAH,SAAS,IAAIA,SAAS,CAAC4Q,aAAa,CAACrQ,OAAf,CAAtB;GAfJ;;EAkBAD,SAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAACyQ,aAAa,CAACrQ,OAA7B,EAAsC;MAClCgC,QAAQ;;GAFP,EAIN,CAACpC,MAAD,CAJM,CAAT;EAMAG,SAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,0BAAAyQ,aAAa,CAACrQ,OAAd,kFAAuBY,MAAvB,CAA8BhB,MAA9B;;;IAEJ,OAAO;;;MACH,0BAAAyQ,aAAa,CAACrQ,OAAd,kFAAuBY,MAAvB,CAA8B,IAA9B;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,SAAS,CAAC;IACN,OAAO;;;MACH,0BAAAsQ,aAAa,CAACrQ,OAAd,kFAAuBY,MAAvB,CAA8B,IAA9B;KADJ;GADK,EAIN,EAJM,CAAT;EAMAb,SAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MACRoC,QAAQ;;GAFP,EAIN,CAACJ,MAAD,EAASC,UAAT,EAAqBC,QAArB,CAJM,CAAT;EAKA,OAAO,IAAP;AACH,CA3DD;;ACYA,IAAMyO,SAAS,GAAG,SAAZA,SAAY,CAAC7R,KAAD;EACd,IACI8R,KADJ,GAeI9R,KAfJ,CACI8R,KADJ;MAEIjO,SAFJ,GAeI7D,KAfJ,CAEI6D,SAFJ;MAGIC,WAHJ,GAeI9D,KAfJ,CAGI8D,WAHJ;uBAeI9D,KAfJ,CAIIU,OAJJ;MAIIA,OAJJ,+BAIc,IAJd;MAKIqD,WALJ,GAeI/D,KAfJ,CAKI+D,WALJ;MAMIC,WANJ,GAeIhE,KAfJ,CAMIgE,WANJ;MAOIrD,SAPJ,GAeIX,KAfJ,CAOIW,SAPJ;MAQIN,SARJ,GAeIL,KAfJ,CAQIK,SARJ;MASI4D,MATJ,GAeIjE,KAfJ,CASIiE,MATJ;MAUIrD,SAVJ,GAeIZ,KAfJ,CAUIY,SAVJ;MAWIpB,GAXJ,GAeIQ,KAfJ,CAWIR,GAXJ;MAYI6G,OAZJ,GAeIrG,KAfJ,CAYIqG,OAZJ;MAaInC,OAbJ,GAeIlE,KAfJ,CAaIkE,OAbJ;MAcInD,SAdJ,GAeIf,KAfJ,CAcIe,SAdJ;EAiBA,IAAMC,YAAY,GAAGC,UAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAMuS,UAAU,GAAG3Q,MAAM,EAAzB;EACA,IAAM4Q,CAAC,GAAG5Q,MAAM,EAAhB;EACAC,SAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAAC6Q,UAAU,CAACzQ,OAA1B,EAAmC;MAAA;;MAC/B,IAAIE,MAAM,GAAG;QACTsQ,KAAK,EAAEA,KADE;QAETjO,SAAS,EAAEA,SAFF;QAGTC,WAAW,EAAEA,WAHJ;QAITpD,OAAO,EAAEA,OAJA;QAKTqD,WAAW,EAAEA,WALJ;QAMTC,WAAW,EAAEA,WANJ;QAOTrD,SAAS,EAAEA,SAPF;QAQTN,SAAS,EAAEA,SARF;QAST4D,MAAM,EAAEA,MATC;QAUTrD,SAAS,EAAEA;OAVf;MAYAe,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;QAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;UACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;OAFR;MAKAiQ,UAAU,CAACzQ,OAAX,GAAqB,IAAIU,KAAK,CAACiQ,OAAV,CAAkBzQ,MAAlB,CAArB;MACAwQ,CAAC,CAAC1Q,OAAF,GAAYJ,MAAZ;MACAgR,OAAO,CAACC,GAAR,CAAYH,CAAC,CAAC1Q,OAAd;MACA,uBAAAyQ,UAAU,CAACzQ,OAAX,4EAAoBY,MAApB,CAA2BhB,MAA3B;MACA6Q,UAAU,CAACzQ,OAAX,CAAmB+E,OAAnB,GAA6BrG,KAAK,CAACqG,OAAnC;MACA0L,UAAU,CAACzQ,OAAX,CAAmB4C,OAAnB,GAA6BA,OAA7B;MACAnD,SAAS,IAAIA,SAAS,CAACgR,UAAU,CAACzQ,OAAZ,CAAtB;;GAzBC,EA2BN,CAACJ,MAAD,CA3BM,CAAT;EA6BAG,SAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,wBAAA6Q,UAAU,CAACzQ,OAAX,8EAAoBY,MAApB,CAA2BhB,MAA3B;;;IAEJ,OAAO;;;MACH,wBAAA6Q,UAAU,CAACzQ,OAAX,8EAAoBY,MAApB,CAA2B,IAA3B;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,SAAS,CAAC;IACN,OAAO;;;MACH,wBAAA0Q,UAAU,CAACzQ,OAAX,8EAAoBY,MAApB,CAA2B,IAA3B;KADJ;GADK,EAIN,EAJM,CAAT;EAMAb,SAAS,CAAC;IACN,IAAI0Q,UAAU,CAACzQ,OAAf,EAAwB;MACpByQ,UAAU,CAACzQ,OAAX,CAAmB+E,OAAnB,GAA6BA,OAA7B;;GAFC,EAIN,CAACA,OAAD,CAJM,CAAT;EAMAhF,SAAS,CAAC;IACN,IAAI0Q,UAAU,CAACzQ,OAAf,EAAwB;MACpByQ,UAAU,CAACzQ,OAAX,CAAmB4C,OAAnB,GAA6BA,OAA7B;;GAFC,EAIN,CAACA,OAAD,CAJM,CAAT;EAMA7C,SAAS,CAAC;;;IACN,wBAAA0Q,UAAU,CAACzQ,OAAX,8EAAoB8Q,QAApB,CAA6BN,KAA7B;GADK,EAEN,CAACA,KAAD,CAFM,CAAT;EAGAzQ,SAAS,CAAC;;;IACNwC,SAAS,IAAI9B,SAAb,6BAA0BgQ,UAAU,CAACzQ,OAArC,yDAA0B,qBAAoBkD,YAApB,CAAiCX,SAAjC,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAGAxC,SAAS,CAAC;;;IACNyC,WAAW,IAAI/B,SAAf,6BAA4BgQ,UAAU,CAACzQ,OAAvC,yDAA4B,qBAAoBmD,cAApB,CAAmCX,WAAnC,CAA5B;GADK,EAEN,CAACA,WAAD,CAFM,CAAT;EAGAzC,SAAS,CAAC;;;IACN,wBAAA0Q,UAAU,CAACzQ,OAAX,8EAAoBsB,UAApB,CAA+BlC,OAA/B;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGAW,SAAS,CAAC;;;IACN0C,WAAW,IAAIhC,SAAf,6BAA4BgQ,UAAU,CAACzQ,OAAvC,yDAA4B,qBAAoBoD,cAApB,CAAmCX,WAAnC,CAA5B;GADK,EAEN,CAACA,WAAD,CAFM,CAAT;EAGA1C,SAAS,CAAC;;;IACN2C,WAAW,IAAIjC,SAAf,8BAA4BgQ,UAAU,CAACzQ,OAAvC,0DAA4B,sBAAoBqD,cAApB,CAAmCX,WAAnC,CAA5B;GADK,EAEN,CAACA,WAAD,CAFM,CAAT;EAGA3C,SAAS,CAAC;;;IACNV,SAAS,IAAIoB,SAAb,8BAA0BgQ,UAAU,CAACzQ,OAArC,0DAA0B,sBAAoBuB,YAApB,CAAiClC,SAAjC,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAGAU,SAAS,CAAC;;;IACNhB,SAAS,IAAI0B,SAAb,8BAA0BgQ,UAAU,CAACzQ,OAArC,0DAA0B,sBAAoBiB,YAApB,CAAiClC,SAAjC,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAGAgB,SAAS,CAAC;;;IACN4C,MAAM,IAAIlC,SAAV,8BAAuBgQ,UAAU,CAACzQ,OAAlC,0DAAuB,sBAAoBsD,SAApB,CAA8BX,MAA9B,CAAvB;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGA5C,SAAS,CAAC;;;IACNT,SAAS,IAAImB,SAAb,8BAA0BgQ,UAAU,CAACzQ,OAArC,0DAA0B,sBAAoBwB,YAApB,CAAiClC,SAAjC,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAIA,OAAO,IAAP;AACH,CA7GD;;ACIA,IAAMyR,UAAU,GAAG,SAAbA,UAAa,CAACrS,KAAD;EACf,IACIsS,IADJ,GAmBItS,KAnBJ,CACIsS,IADJ;MAEItO,WAFJ,GAmBIhE,KAnBJ,CAEIgE,WAFJ;MAGID,WAHJ,GAmBI/D,KAnBJ,CAGI+D,WAHJ;MAIIwO,aAJJ,GAmBIvS,KAnBJ,CAIIuS,aAJJ;uBAmBIvS,KAnBJ,CAKIU,OALJ;MAKIA,OALJ,+BAKc,IALd;MAMI8R,MANJ,GAmBIxS,KAnBJ,CAMIwS,MANJ;MAOI7R,SAPJ,GAmBIX,KAnBJ,CAOIW,SAPJ;MAQIsD,MARJ,GAmBIjE,KAnBJ,CAQIiE,MARJ;MASI5D,SATJ,GAmBIL,KAnBJ,CASIK,SATJ;MAUIoS,aAVJ,GAmBIzS,KAnBJ,CAUIyS,aAVJ;MAWI7R,SAXJ,GAmBIZ,KAnBJ,CAWIY,SAXJ;MAYIpB,GAZJ,GAmBIQ,KAnBJ,CAYIR,GAZJ;MAaI0E,OAbJ,GAmBIlE,KAnBJ,CAaIkE,OAbJ;MAcImC,OAdJ,GAmBIrG,KAnBJ,CAcIqG,OAdJ;MAeItF,SAfJ,GAmBIf,KAnBJ,CAeIe,SAfJ;MAgBIuF,UAhBJ,GAmBItG,KAnBJ,CAgBIsG,UAhBJ;MAiBIC,WAjBJ,GAmBIvG,KAnBJ,CAiBIuG,WAjBJ;MAkBIC,WAlBJ,GAmBIxG,KAnBJ,CAkBIwG,WAlBJ;EAqBA,IAAMxF,YAAY,GAAGC,UAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAMkT,WAAW,GAAGtR,MAAM,EAA1B;EAEAC,SAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAACwR,WAAW,CAACpR,OAA3B,EAAoC;MAAA;;MAChC,IAAIE,MAAM,GAAG;QACT8Q,IAAI,EAAEA,IAAI,IAAI;UAAE7Q,GAAG,EAAE,SAAP;UAAkBC,GAAG,EAAE;SAD5B;QAETsC,WAAW,EAAEA,WAFJ;QAGTD,WAAW,EAAEA,WAHJ;QAITwO,aAAa,EAAEA,aAJN;QAKT7R,OAAO,EAAEA,OALA;QAMT8R,MAAM,EAAEA,MANC;QAOT7R,SAAS,EAAEA,SAPF;QAQTsD,MAAM,EAAEA,MARC;QAST5D,SAAS,EAAEA,SATF;QAUToS,aAAa,EAAEA,aAVN;QAWT7R,SAAS,EAAEA;OAXf;MAaAe,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;QAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;UACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;OAFR;MAKA4Q,WAAW,CAACpR,OAAZ,GAAsB,IAAIU,KAAK,CAAC2Q,QAAV,CAAmBnR,MAAnB,CAAtB;MACA,wBAAAkR,WAAW,CAACpR,OAAZ,8EAAqBY,MAArB,CAA4BhB,MAA5B;MACAwR,WAAW,CAACpR,OAAZ,CAAoB+E,OAApB,GAA8BrG,KAAK,CAACqG,OAApC;MACAqM,WAAW,CAACpR,OAAZ,CAAoB4C,OAApB,GAA8BlE,KAAK,CAACkE,OAApC;MACAwO,WAAW,CAACpR,OAAZ,CAAoBgF,UAApB,GAAiCA,UAAjC;MACAoM,WAAW,CAACpR,OAAZ,CAAoBiF,WAApB,GAAkCA,WAAlC;MACAmM,WAAW,CAACpR,OAAZ,CAAoBkF,WAApB,GAAkCA,WAAlC;MACAzF,SAAS,IAAIA,SAAS,CAAC2R,WAAW,CAACpR,OAAb,CAAtB;;GA3BC,EA6BN,CAACJ,MAAD,CA7BM,CAAT;EA+BAG,SAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,yBAAAwR,WAAW,CAACpR,OAAZ,gFAAqBY,MAArB,CAA4BhB,MAA5B;;;IAEJ,OAAO;;;MACH,yBAAAwR,WAAW,CAACpR,OAAZ,gFAAqBY,MAArB,CAA4B,IAA5B;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,SAAS,CAAC;IACN,OAAO;;;MACH,yBAAAqR,WAAW,CAACpR,OAAZ,gFAAqBY,MAArB,CAA4B,IAA5B;KADJ;GADK,EAIN,EAJM,CAAT;EAOAb,SAAS,CAAC;IACN,IAAIqR,WAAW,CAACpR,OAAhB,EAAyB;MACrBoR,WAAW,CAACpR,OAAZ,CAAoB+E,OAApB,GAA8BA,OAA9B;;GAFC,EAIN,CAACA,OAAD,CAJM,CAAT;EAMAhF,SAAS,CAAC;IACN,IAAIqR,WAAW,CAACpR,OAAhB,EAAyB;MACrBoR,WAAW,CAACpR,OAAZ,CAAoBgF,UAApB,GAAiCA,UAAjC;;GAFC,EAIN,CAACA,UAAD,CAJM,CAAT;EAMAjF,SAAS,CAAC;IACN,IAAIqR,WAAW,CAACpR,OAAhB,EAAyB;MACrBoR,WAAW,CAACpR,OAAZ,CAAoBiF,WAApB,GAAkCA,WAAlC;;GAFC,EAIN,CAACA,WAAD,CAJM,CAAT;EAMAlF,SAAS,CAAC;IACN,IAAIqR,WAAW,CAACpR,OAAhB,EAAyB;MACrBoR,WAAW,CAACpR,OAAZ,CAAoBkF,WAApB,GAAkCA,WAAlC;;GAFC,EAIN,CAACA,WAAD,CAJM,CAAT;EAMAnF,SAAS,CAAC;IACN,IAAIqR,WAAW,CAACpR,OAAhB,EAAyB;MACrBoR,WAAW,CAACpR,OAAZ,CAAoB4C,OAApB,GAA8BA,OAA9B;;GAFC,EAIN,CAACA,OAAD,CAJM,CAAT;EAMA7C,SAAS,CAAC;;;IACN,yBAAAqR,WAAW,CAACpR,OAAZ,gFAAqBsR,OAArB,CAA6BN,IAA7B;GADK,EAEN,CAACA,IAAD,CAFM,CAAT;EAGAjR,SAAS,CAAC;;;IACN2C,WAAW,IAAIjC,SAAf,8BAA4B2Q,WAAW,CAACpR,OAAxC,0DAA4B,sBAAqBqD,cAArB,CAAoCX,WAApC,CAA5B;GADK,EAEN,CAACA,WAAD,CAFM,CAAT;EAGA3C,SAAS,CAAC;;;IACN0C,WAAW,IAAIhC,SAAf,8BAA4B2Q,WAAW,CAACpR,OAAxC,0DAA4B,sBAAqBoD,cAArB,CAAoCX,WAApC,CAA5B;GADK,EAEN,CAACA,WAAD,CAFM,CAAT;EAGA1C,SAAS,CAAC;;;IACNkR,aAAa,IAAIxQ,SAAjB,8BAA8B2Q,WAAW,CAACpR,OAA1C,0DAA8B,sBAAqBuR,gBAArB,CAAsCN,aAAtC,CAA9B;GADK,EAEN,CAACA,aAAD,CAFM,CAAT;EAGAlR,SAAS,CAAC;;;IACNX,OAAO,IAAIqB,SAAX,8BAAwB2Q,WAAW,CAACpR,OAApC,0DAAwB,sBAAqBsB,UAArB,CAAgClC,OAAhC,CAAxB;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGAW,SAAS,CAAC;;;IACNmR,MAAM,IAAIzQ,SAAV,+BAAuB2Q,WAAW,CAACpR,OAAnC,2DAAuB,uBAAqBwR,SAArB,CAA+BN,MAA/B,CAAvB;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGAnR,SAAS,CAAC;;;IACNV,SAAS,IAAIoB,SAAb,+BAA0B2Q,WAAW,CAACpR,OAAtC,2DAA0B,uBAAqBuB,YAArB,CAAkClC,SAAlC,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAGAU,SAAS,CAAC;;;IACN4C,MAAM,IAAIlC,SAAV,+BAAuB2Q,WAAW,CAACpR,OAAnC,2DAAuB,uBAAqBsD,SAArB,CAA+BX,MAA/B,CAAvB;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGA5C,SAAS,CAAC;;;IACNhB,SAAS,IAAI0B,SAAb,+BAA0B2Q,WAAW,CAACpR,OAAtC,2DAA0B,uBAAqBiB,YAArB,CAAkClC,SAAlC,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAGAgB,SAAS,CAAC;;;IACNoR,aAAa,IAAI1Q,SAAjB,+BAA8B2Q,WAAW,CAACpR,OAA1C,2DAA8B,uBAAqByR,gBAArB,CAAsCN,aAAtC,CAA9B;GADK,EAEN,CAACA,aAAD,CAFM,CAAT;EAGApR,SAAS,CAAC;;;IACNT,SAAS,IAAImB,SAAb,+BAA0B2Q,WAAW,CAACpR,OAAtC,2DAA0B,uBAAqBwB,YAArB,CAAkClC,SAAlC,CAA1B;GADK,EAEN,CAACA,SAAD,CAFM,CAAT;EAIA,OAAO,IAAP;AACH,CAzID;;ACZA,IAAMoS,aAAa,GAAG,SAAhBA,aAAgB,CAAChT,KAAD;EAClB,IACIkD,MADJ,GAOIlD,KAPJ,CACIkD,MADJ;uBAOIlD,KAPJ,CAEIU,OAFJ;MAEIA,OAFJ,+BAEc,IAFd;MAGIuD,MAHJ,GAOIjE,KAPJ,CAGIiE,MAHJ;MAIIkD,OAJJ,GAOInH,KAPJ,CAIImH,OAJJ;MAKI3H,GALJ,GAOIQ,KAPJ,CAKIR,GALJ;MAMIuB,SANJ,GAOIf,KAPJ,CAMIe,SANJ;EASA,IAAMC,YAAY,GAAGC,UAAU,CAACxB,YAAD,CAA/B;EACA,IAAMyB,MAAM,GAAG1B,GAAG,IAAIwB,YAAY,CAACxB,GAAnC;EACA,IAAMyT,cAAc,GAAG7R,MAAM,EAA7B;;EAGA,IAAMkC,QAAQ,GAAG,SAAXA,QAAW;;;IACb,yBAAA2P,cAAc,CAAC3R,OAAf,gFAAwBY,MAAxB,CAA+B,IAA/B;IACA,IAAIV,MAAM,GAAG;MACT0B,MAAM,EAAEA,MAAM,IAAI;QAAEzB,GAAG,EAAE,SAAP;QAAkBC,GAAG,EAAE;OADhC;MAEThB,OAAO,EAAEA,OAFA;MAGTuD,MAAM,EAAEA,MAHC;MAITkD,OAAO,EAAEA;KAJb;IAMAxF,MAAM,CAACC,IAAP,CAAYJ,MAAZ,EAAoBK,OAApB,CAA4B,UAAAC,GAAG;MAC3B,IAAIN,MAAM,CAACM,GAAD,CAAN,IAAeC,SAAf,IAA4BP,MAAM,CAACM,GAAD,CAAN,IAAe,IAA/C,EAAqD;QACjD,OAAON,MAAM,CAACM,GAAD,CAAb;;KAFR;IAKAmR,cAAc,CAAC3R,OAAf,GAAyB,IAAIU,KAAK,CAACqF,WAAV,CAAsB7F,MAAtB,CAAzB;IACA,0BAAAyR,cAAc,CAAC3R,OAAf,kFAAwBY,MAAxB,CAA+BhB,MAA/B;IACAH,SAAS,IAAIA,SAAS,CAACkS,cAAc,CAAC3R,OAAhB,CAAtB;GAfJ;;EAkBAD,SAAS,CAAC;IACN,IAAIH,MAAM,IAAI,CAAC+R,cAAc,CAAC3R,OAA9B,EAAuC;MACnCgC,QAAQ;;GAFP,EAIN,CAACpC,MAAD,CAJM,CAAT;EAMAG,SAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MAAA;;MACR,0BAAA+R,cAAc,CAAC3R,OAAf,kFAAwBY,MAAxB,CAA+BhB,MAA/B;;;IAEJ,OAAO;;;MACH,0BAAA+R,cAAc,CAAC3R,OAAf,kFAAwBY,MAAxB,CAA+B,IAA/B;KADJ;GAJK,EAON,CAAChB,MAAD,CAPM,CAAT;EAQAG,SAAS,CAAC;IACN,OAAO;;;MACH,0BAAA4R,cAAc,CAAC3R,OAAf,kFAAwBY,MAAxB,CAA+B,IAA/B;KADJ;GADK,EAIN,EAJM,CAAT;EAMAb,SAAS,CAAC;IACN,IAAIH,MAAJ,EAAY;MACRoC,QAAQ;;GAFP,EAIN,CAACJ,MAAD,CAJM,CAAT;EAKA7B,SAAS,CAAC;;;IACN,0BAAA4R,cAAc,CAAC3R,OAAf,kFAAwBsB,UAAxB,CAAmClC,OAAnC;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGAW,SAAS,CAAC;;;IACN4C,MAAM,IAAIlC,SAAV,+BAAuBkR,cAAc,CAAC3R,OAAtC,2DAAuB,uBAAwBsD,SAAxB,CAAkCX,MAAlC,CAAvB;GADK,EAEN,CAACA,MAAD,CAFM,CAAT;EAGA5C,SAAS,CAAC;;;IACN8F,OAAO,IAAIpF,SAAX,+BAAwBkR,cAAc,CAAC3R,OAAvC,2DAAwB,uBAAwBgG,UAAxB,CAAmCH,OAAnC,CAAxB;GADK,EAEN,CAACA,OAAD,CAFM,CAAT;EAGA,OAAO,IAAP;AACH,CApED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICTa+L,OAAb;EAOE,iBAAmBC,CAAnB,EACmBC,CADnB;QAAmBD;MAAAA,IAAY;;;QACZC;MAAAA,IAAY;;;IADZ,MAAA,GAAAD,CAAA;IACA,MAAA,GAAAC,CAAA;;;EARrB;;EAAA,OAWEC,KAXF,GAWE;IACE,OAAO,IAAIH,OAAJ,CAAY,KAAKC,CAAjB,EAAoB,KAAKC,CAAzB,CAAP;GAZJ;;EAAA,OAkCEE,SAlCF,GAkCE;IACE,IAAI/R,MAAM,GAAG,KAAKA,MAAlB;IACA,IAAI4R,CAAC,GAAG,GAAR;IACA,IAAIC,CAAC,GAAG,GAAR;;IAEA,IAAI7R,MAAM,GAAG,CAAb,EAAgB;MACd4R,CAAC,GAAG,KAAKA,CAAL,GAAS5R,MAAb;MACA6R,CAAC,GAAG,KAAKA,CAAL,GAAS7R,MAAb;;;IAGF,OAAO,IAAI2R,OAAJ,CAAYC,CAAZ,EAAeC,CAAf,CAAP;GA5CJ;;EAAA,OAmDEG,GAnDF,GAmDE,aAAIvB,CAAJ;IACE,KAAKmB,CAAL,GAASnB,CAAC,CAACmB,CAAX;IACA,KAAKC,CAAL,GAASpB,CAAC,CAACoB,CAAX;GArDJ;;EAAA,OA4DEI,MA5DF,GA4DE;IACE,OAAO,IAAIN,OAAJ,CAAY,CAAC,KAAKC,CAAlB,EAAqB,CAAC,KAAKC,CAA3B,CAAP;GA7DJ;;EAAA,OAoEEK,QApEF,GAoEE;IACE,OAAO,IAAIP,OAAJ,CAAY,KAAKE,CAAjB,EAAoB,CAAC,KAAKD,CAA1B,CAAP;GArEJ;;EAAA,OA6EEO,GA7EF,GA6EE,aAAI1B,CAAJ;IACE,OAAO,IAAIkB,OAAJ,CAAYlB,CAAC,CAACmB,CAAF,GAAM,KAAKA,CAAvB,EAA0BnB,CAAC,CAACoB,CAAF,GAAM,KAAKA,CAArC,CAAP;GA9EJ;;EAAA,OAsFEO,QAtFF,GAsFE,kBAAS3B,CAAT;IACE,IAAI,CAACA,CAAL,EAAQ;MACN,OAAO,KAAKqB,KAAL,EAAP;;;IAEF,OAAO,IAAIH,OAAJ,CAAY,KAAKC,CAAL,GAASnB,CAAC,CAACmB,CAAvB,EAA2B,KAAKC,CAAL,GAASpB,CAAC,CAACoB,CAAtC,CAAP;GA1FJ;;EAAA,OAkGEQ,QAlGF,GAkGE,kBAAS5B,CAAT;IACE,OAAO,IAAIkB,OAAJ,CAAYlB,CAAC,GAAG,KAAKmB,CAArB,EAAwBnB,CAAC,GAAG,KAAKoB,CAAjC,CAAP;GAnGJ;;EAAA,OA2GES,QA3GF,GA2GE,kBAAS7B,CAAT;IACE,IAAI8B,GAAG,GAAG/K,IAAI,CAAC+K,GAAL,CAAS9B,CAAC,GAAGjJ,IAAI,CAACgL,EAAT,GAAc,GAAvB,CAAV;IACA,IAAIC,GAAG,GAAGjL,IAAI,CAACiL,GAAL,CAAShC,CAAC,GAAGjJ,IAAI,CAACgL,EAAT,GAAc,GAAvB,CAAV;IACA,OAAO,IAAIb,OAAJ,CAAY,KAAKC,CAAL,GAASW,GAAT,GAAe,KAAKV,CAAL,GAASY,GAApC,EAAyC,KAAKb,CAAL,GAASa,GAAT,GAAe,KAAKZ,CAAL,GAASU,GAAjE,CAAP;GA9GJ;;EAAA,OAiHEG,cAjHF,GAiHE,wBAAejC,CAAf;IACE,IAAI8B,GAAG,GAAG/K,IAAI,CAAC+K,GAAL,CAAS9B,CAAT,CAAV;IACA,IAAIgC,GAAG,GAAGjL,IAAI,CAACiL,GAAL,CAAShC,CAAT,CAAV;IACA,OAAO,IAAIkB,OAAJ,CAAY,KAAKC,CAAL,GAASW,GAAT,GAAe,KAAKV,CAAL,GAASY,GAApC,EAAyC,KAAKb,CAAL,GAASa,GAAT,GAAe,KAAKZ,CAAL,GAASU,GAAjE,CAAP;GApHJ;;EAAA,OA4HEI,KA5HF,GA4HE,eAAMlC,CAAN;IACE,OAAO,KAAKmB,CAAL,GAASnB,CAAC,CAACoB,CAAX,GAAe,KAAKA,CAAL,GAASpB,CAAC,CAACmB,CAAjC;GA7HJ;;EAAA,OAqIEgB,GArIF,GAqIE,aAAInC,CAAJ;IACE,OAAOA,CAAC,CAACmB,CAAF,GAAM,KAAKA,CAAX,GAAenB,CAAC,CAACoB,CAAF,GAAM,KAAKA,CAAjC;GAtIJ;;EAAA,QAyISgB,IAzIT,GAyIE,cAAYC,EAAZ,EAA0BC,EAA1B;IACE,OAAO,IAAIpB,OAAJ,CAAYoB,EAAE,CAAC,CAAD,CAAF,GAAQD,EAAE,CAAC,CAAD,CAAtB,EACLA,EAAE,CAAC,CAAD,CAAF,GAAQC,EAAE,CAAC,CAAD,CADL,CAAP;GA1IJ;;EAAA,QA8ISC,GA9IT,GA8IE,aAAWC,CAAX;IACE,OAAO,IAAItB,OAAJ,CAAY,CAACsB,CAAC,CAACrB,CAAf,EAAkB,CAACqB,CAAC,CAACpB,CAArB,CAAP;GA/IJ;;EAAA;IAAA;IAAA,KAmBE;MACE,OAAOrK,IAAI,CAAC0L,IAAL,CAAU,KAAKtB,CAAL,GAAS,KAAKA,CAAd,GAAkB,KAAKC,CAAL,GAAS,KAAKA,CAA1C,CAAP;;;IApBJ;IAAA,KA0BE;MACE,OAAO,KAAKD,CAAL,GAAS,KAAKA,CAAd,GAAkB,KAAKC,CAAL,GAAS,KAAKA,CAAvC;;;;EA3BJ;AAAA;;ICDasB,SAAb;EAAA;;EAAA,UACSC,KADT,GACE,eAAazG,KAAb,EAA4B0G,GAA5B,EAAyCC,GAAzC;IACE,OAAO3G,KAAK,GAAG0G,GAAR,GAAcA,GAAd,GAAqB1G,KAAK,GAAG2G,GAAR,GAAcA,GAAd,GAAoB3G,KAAhD;GAFJ;;EAAA,UAKS4G,SALT,GAKE,mBAAiBC,YAAjB;IACE,OAAQA,YAAY,GAAGhM,IAAI,CAACgL,EAArB,GAA2B,KAAlC;GANJ;;EAAA,UASSiB,QATT,GASE,kBAAgBC,EAAhB,EAA6BC,EAA7B;IACE,OAAOnM,IAAI,CAAC0L,IAAL,CAAU,CAACQ,EAAE,CAAC9B,CAAH,GAAO+B,EAAE,CAAC/B,CAAX,KAAe8B,EAAE,CAAC9B,CAAH,GAAO+B,EAAE,CAAC/B,CAAzB,IAA8B,CAAC8B,EAAE,CAAC7B,CAAH,GAAO8B,EAAE,CAAC9B,CAAX,KAAe6B,EAAE,CAAC7B,CAAH,GAAO8B,EAAE,CAAC9B,CAAzB,CAAxC,CAAP;GAVJ;;EAAA,UAaS+B,gBAbT,GAaE,0BAAwBC,CAAxB;IAEEA,CAAC,GAAGA,CAAC,GAAG,CAAR;IAGA,IAAIC,EAAE,GAAGtM,IAAI,CAACuM,IAAL,CAAUF,CAAV,CAAT;IAGA,OAAO,KAAKC,EAAE,GAAG,CAAjB;GArBJ;;EAAA,UAwBSE,oBAxBT,GAwBE,8BAA4BH,CAA5B;IACE,OAAO,KAAK,KAAKrM,IAAI,CAACyM,KAAL,CAAWJ,CAAX,CAAjB;GAzBJ;;EAAA;AAAA;;ICCaK,OAAb;EAQE,iBAAmBtC,CAAnB,EACmBC,CADnB,EAEmBsC,CAFnB;QAAmBvC;MAAAA,IAAY;;;QACZC;MAAAA,IAAY;;;QACZsC;MAAAA,IAAY;;;IAFZ,MAAA,GAAAvC,CAAA;IACA,MAAA,GAAAC,CAAA;IACA,MAAA,GAAAsC,CAAA;;;EAVrB;;EAAA,OAaErC,KAbF,GAaE;IACE,OAAO,IAAIoC,OAAJ,CAAY,KAAKtC,CAAjB,EAAoB,KAAKC,CAAzB,EAA4B,KAAKsC,CAAjC,CAAP;GAdJ;;EAAA,OAiBEC,MAjBF,GAiBE;IACE,OAAO,IAAIC,YAAJ,CAAiB,CAAC,KAAKzC,CAAN,EAAS,KAAKC,CAAd,EAAiB,KAAKsC,CAAtB,CAAjB,CAAP;GAlBJ;;EAAA,OAwCEpC,SAxCF,GAwCE;IACE,IAAI/R,MAAM,GAAG,KAAKA,MAAlB;IACA,IAAI4R,CAAC,GAAG,GAAR;IACA,IAAIC,CAAC,GAAG,GAAR;IACA,IAAIsC,CAAC,GAAG,GAAR;;IAEA,IAAInU,MAAM,GAAG,CAAb,EAAgB;MACd4R,CAAC,GAAG,KAAKA,CAAL,GAAS5R,MAAb;MACA6R,CAAC,GAAG,KAAKA,CAAL,GAAS7R,MAAb;MACAmU,CAAC,GAAG,KAAKA,CAAL,GAASnU,MAAb;;;IAGF,OAAO,IAAIkU,OAAJ,CAAYtC,CAAZ,EAAeC,CAAf,EAAkBsC,CAAlB,CAAP;GApDJ;;EAAA,OA2DEnC,GA3DF,GA2DE,aAAIvB,CAAJ;IACE,KAAKmB,CAAL,GAASnB,CAAC,CAACmB,CAAX;IACA,KAAKC,CAAL,GAASpB,CAAC,CAACoB,CAAX;IACA,KAAKsC,CAAL,GAAS1D,CAAC,CAAC0D,CAAX;GA9DJ;;EAAA,OAqEElC,MArEF,GAqEE;IACE,OAAO,IAAIiC,OAAJ,CAAY,CAAC,KAAKtC,CAAlB,EAAqB,CAAC,KAAKC,CAA3B,EAA8B,CAAC,KAAKsC,CAApC,CAAP;GAtEJ;;EAAA,OA6EEjC,QA7EF,GA6EE;IACE,OAAO,IAAIgC,OAAJ,CAAY,KAAKrC,CAAjB,EAAoB,CAAC,KAAKD,CAA1B,EAA6B,KAAKuC,CAAlC,CAAP;GA9EJ;;EAAA,OAsFEhC,GAtFF,GAsFE,aAAI1B,CAAJ;IACE,OAAO,IAAIyD,OAAJ,CAAYzD,CAAC,CAACmB,CAAF,GAAM,KAAKA,CAAvB,EAA0BnB,CAAC,CAACoB,CAAF,GAAM,KAAKA,CAArC,EAAwCpB,CAAC,CAAC0D,CAAF,GAAM,KAAKA,CAAnD,CAAP;GAvFJ;;EAAA,OA+FE/B,QA/FF,GA+FE,kBAAS3B,CAAT;IACE,IAAI,CAACA,CAAL,EAAQ;MACN,OAAO,KAAKqB,KAAL,EAAP;;;IAEF,OAAO,IAAIoC,OAAJ,CAAY,KAAKtC,CAAL,GAASnB,CAAC,CAACmB,CAAvB,EAA2B,KAAKC,CAAL,GAASpB,CAAC,CAACoB,CAAtC,EAAyC,KAAKsC,CAAL,GAAS1D,CAAC,CAAC0D,CAApD,CAAP;GAnGJ;;EAAA,OA2GE9B,QA3GF,GA2GE,kBAAS5B,CAAT;IACE,OAAO,IAAIyD,OAAJ,CAAYzD,CAAC,GAAG,KAAKmB,CAArB,EAAwBnB,CAAC,GAAG,KAAKoB,CAAjC,EAAoCpB,CAAC,GAAG,KAAK0D,CAA7C,CAAP;GA5GJ;;EAAA,OAoHE7B,QApHF,GAoHE,kBAAS7B,CAAT;IACE,IAAI8B,GAAG,GAAG/K,IAAI,CAAC+K,GAAL,CAAS9B,CAAC,GAAGjJ,IAAI,CAACgL,EAAT,GAAc,GAAvB,CAAV;IACA,IAAIC,GAAG,GAAGjL,IAAI,CAACiL,GAAL,CAAShC,CAAC,GAAGjJ,IAAI,CAACgL,EAAT,GAAc,GAAvB,CAAV;IACA,OAAO,IAAI0B,OAAJ,CAAY,KAAKtC,CAAL,GAASW,GAAT,GAAe,KAAKV,CAAL,GAASY,GAApC,EAAyC,KAAKb,CAAL,GAASa,GAAT,GAAe,KAAKZ,CAAL,GAASU,GAAjE,CAAP;GAvHJ;;EAAA,OA+HEI,KA/HF,GA+HE,eAAMlC,CAAN;IACE,OAAO,IAAIyD,OAAJ,CACL,KAAKrC,CAAL,GAASpB,CAAC,CAAC0D,CAAX,GAAe,KAAKA,CAAL,GAAS1D,CAAC,CAACoB,CADrB,EAEL,KAAKsC,CAAL,GAAS1D,CAAC,CAACmB,CAAX,GAAe,KAAKA,CAAL,GAASnB,CAAC,CAAC0D,CAFrB,EAGL,KAAKvC,CAAL,GAASnB,CAAC,CAACoB,CAAX,GAAe,KAAKA,CAAL,GAASpB,CAAC,CAACmB,CAHrB,CAAP;GAhIJ;;EAAA,OA4IEgB,GA5IF,GA4IE,aAAInC,CAAJ;IACE,OAAOA,CAAC,CAACmB,CAAF,GAAM,KAAKA,CAAX,GAAenB,CAAC,CAACoB,CAAF,GAAM,KAAKA,CAA1B,GAA8BpB,CAAC,CAAC0D,CAAF,GAAM,KAAKA,CAAhD;GA7IJ;;EAAA,QAgJStB,IAhJT,GAgJE,cAAYC,EAAZ,EAA0BC,EAA1B;IACE,OAAO,IAAImB,OAAJ,CAAYnB,EAAE,CAAC,CAAD,CAAF,GAAQD,EAAE,CAAC,CAAD,CAAtB,EACLA,EAAE,CAAC,CAAD,CAAF,GAAQC,EAAE,CAAC,CAAD,CADL,CAAP;GAjJJ;;EAAA,QAqJSC,GArJT,GAqJE,aAAWC,CAAX;IACE,OAAO,IAAIiB,OAAJ,CAAY,CAACjB,CAAC,CAACrB,CAAf,EAAkB,CAACqB,CAAC,CAACpB,CAArB,EAAwB,CAACoB,CAAC,CAACkB,CAA3B,CAAP;GAtJJ;;EAAA;IAAA;IAAA,KAyBE;MACE,OAAO3M,IAAI,CAAC0L,IAAL,CAAU,KAAKtB,CAAL,GAAS,KAAKA,CAAd,GAAkB,KAAKC,CAAL,GAAS,KAAKA,CAAhC,GAAoC,KAAKsC,CAAL,GAAS,KAAKA,CAA5D,CAAP;;;IA1BJ;IAAA,KAgCE;MACE,OAAO,KAAKvC,CAAL,GAAS,KAAKA,CAAd,GAAkB,KAAKC,CAAL,GAAS,KAAKA,CAAhC,GAAoC,KAAKsC,CAAL,GAAS,KAAKA,CAAzD;;;;EAjCJ;AAAA;;ICEaG,OAAb;EAME,iBAAmB5Q,IAAnB;QAAmBA;MAAAA,OAAqB,IAAI2Q,YAAJ,CAAiB,CACvD,GADuD,EAClD,GADkD,EAC7C,GAD6C,EACxC,GADwC,EAEvD,GAFuD,EAElD,GAFkD,EAE7C,GAF6C,EAExC,GAFwC,EAGvD,GAHuD,EAGlD,GAHkD,EAG7C,GAH6C,EAGxC,GAHwC,EAIvD,GAJuD,EAIlD,GAJkD,EAI7C,GAJ6C,EAIxC,GAJwC,CAAjB;;;IAArB,SAAA,GAAA3Q,IAAA;;;EANrB;;EAAA,OAaE6Q,WAbF,GAaE,qBAAY3C,CAAZ,EAAqBC,CAArB,EAA8BsC,CAA9B;QAAYvC;MAAAA,IAAI;;;QAAKC;MAAAA,IAAI;;;QAAKsC;MAAAA,IAAI;;;IAChC,KAAKzQ,IAAL,CAAU,CAAV,IAAekO,CAAf;IACA,KAAKlO,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAemO,CAAf;IACA,KAAKnO,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgByQ,CAAhB;IACA,KAAKzQ,IAAL,CAAU,EAAV,IAAgB,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB,GAAhB;IACA,OAAO,IAAP;GA9BJ;;EAAA,OAiCE8Q,IAjCF,GAiCE,cAAKC,KAAL;IACE,KAAK/Q,IAAL,CAAU,CAAV,IAAe+Q,KAAK,CAAC/Q,IAAN,CAAW,CAAX,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe+Q,KAAK,CAAC/Q,IAAN,CAAW,CAAX,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe+Q,KAAK,CAAC/Q,IAAN,CAAW,CAAX,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe+Q,KAAK,CAAC/Q,IAAN,CAAW,CAAX,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe+Q,KAAK,CAAC/Q,IAAN,CAAW,CAAX,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe+Q,KAAK,CAAC/Q,IAAN,CAAW,CAAX,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe+Q,KAAK,CAAC/Q,IAAN,CAAW,CAAX,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe+Q,KAAK,CAAC/Q,IAAN,CAAW,CAAX,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe+Q,KAAK,CAAC/Q,IAAN,CAAW,CAAX,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe+Q,KAAK,CAAC/Q,IAAN,CAAW,CAAX,CAAf;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB+Q,KAAK,CAAC/Q,IAAN,CAAW,EAAX,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB+Q,KAAK,CAAC/Q,IAAN,CAAW,EAAX,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB+Q,KAAK,CAAC/Q,IAAN,CAAW,EAAX,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB+Q,KAAK,CAAC/Q,IAAN,CAAW,EAAX,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB+Q,KAAK,CAAC/Q,IAAN,CAAW,EAAX,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB+Q,KAAK,CAAC/Q,IAAN,CAAW,EAAX,CAAhB;IACA,OAAO,IAAP;GAlDJ;;EAAA,QA4DSgR,SA5DT,GA4DE,mBAAiB9C,CAAjB,EAA4BC,CAA5B,EAAuCsC,CAAvC;QAAuCA;MAAAA,IAAY;;;IAGjD,OAAO,IAAIG,OAAJ,CAAY,IAAID,YAAJ,CAAiB,CAClC,GADkC,EAC7B,GAD6B,EACxB,GADwB,EACnB,GADmB,EAElC,GAFkC,EAE7B,GAF6B,EAExB,GAFwB,EAEnB,EAFmB,EAGlC,GAHkC,EAG7B,GAH6B,EAGxB,GAHwB,EAGnB,GAHmB,EAIlCzC,CAJkC,EAI/BC,CAJ+B,EAI5BsC,CAJ4B,EAIzB,GAJyB,CAAjB,CAAZ,CAAP;GA/DJ;;EAAA,OAsEEO,SAtEF,GAsEE,mBAAU9C,CAAV,EAAqBC,CAArB,EAAgCsC,CAAhC;QAAgCA;MAAAA,IAAY;;;IAC1C,KAAKzQ,IAAL,CAAU,EAAV,KAAiBkO,CAAjB;IACA,KAAKlO,IAAL,CAAU,EAAV,KAAiBmO,CAAjB;IACA,KAAKnO,IAAL,CAAU,EAAV,KAAiByQ,CAAjB;IACA,OAAO,IAAP;GA1EJ;;EAAA,QAsFSQ,OAtFT,GAsFE,iBAAeC,KAAf;IACEA,KAAK,IAAIpN,IAAI,CAACgL,EAAL,GAAU,KAAnB;IAEA,IAAIqC,IAAI,GAAGrN,IAAI,CAACiL,GAAL,CAASmC,KAAT,CAAX;IACA,IAAIE,IAAI,GAAGtN,IAAI,CAAC+K,GAAL,CAASqC,KAAT,CAAX;IAGA,OAAO,IAAIN,OAAJ,CAAY,IAAID,YAAJ,CAAiB,CAClC,GADkC,EAC7B,GAD6B,EACxB,GADwB,EACnB,GADmB,EAElC,GAFkC,EAE7BS,IAF6B,EAEvBD,IAFuB,EAEjB,GAFiB,EAGlC,GAHkC,EAG7B,CAACA,IAH4B,EAGtBC,IAHsB,EAGhB,GAHgB,EAIlC,GAJkC,EAI7B,GAJ6B,EAIxB,GAJwB,EAInB,GAJmB,CAAjB,CAAZ,CAAP;GA7FJ;;EAAA,OAqGEC,YArGF,GAqGE,sBAAaH,KAAb;IACEA,KAAK,IAAIpN,IAAI,CAACgL,EAAL,GAAU,KAAnB;IACA,IAAIqC,IAAI,GAAGrN,IAAI,CAACiL,GAAL,CAASmC,KAAT,CAAX;IACA,IAAIE,IAAI,GAAGtN,IAAI,CAAC+K,GAAL,CAASqC,KAAT,CAAX;IACA,KAAKL,WAAL;IACA,KAAK7Q,IAAL,CAAU,CAAV,IAAeoR,IAAf;IACA,KAAKpR,IAAL,CAAU,CAAV,IAAemR,IAAf;IACA,KAAKnR,IAAL,CAAU,CAAV,IAAe,CAACmR,IAAhB;IACA,KAAKnR,IAAL,CAAU,EAAV,IAAgBoR,IAAhB;IACA,OAAO,IAAP;GA9GJ;;EAAA,OAkHEH,OAlHF,GAkHE,iBAAQC,KAAR;IACEA,KAAK,IAAIpN,IAAI,CAACgL,EAAL,GAAU,KAAnB;IAEA,IAAIqC,IAAI,GAAGrN,IAAI,CAACiL,GAAL,CAASmC,KAAT,CAAX;IACA,IAAIE,IAAI,GAAGtN,IAAI,CAAC+K,GAAL,CAASqC,KAAT,CAAX;IAEA,IAAII,EAAE,GAAG,KAAKtR,IAAL,CAAU,CAAV,CAAT;IACA,IAAIuR,EAAE,GAAG,KAAKvR,IAAL,CAAU,CAAV,CAAT;IACA,KAAKA,IAAL,CAAU,CAAV,IAAesR,EAAE,GAAGF,IAAL,GAAYG,EAAE,GAAGJ,IAAhC;IACA,KAAKnR,IAAL,CAAU,CAAV,IAAesR,EAAE,GAAGH,IAAL,GAAYI,EAAE,GAAGH,IAAhC;IAEAE,EAAE,GAAG,KAAKtR,IAAL,CAAU,CAAV,CAAL;IACAuR,EAAE,GAAG,KAAKvR,IAAL,CAAU,CAAV,CAAL;IACA,KAAKA,IAAL,CAAU,CAAV,IAAesR,EAAE,GAAGF,IAAL,GAAYG,EAAE,GAAGJ,IAAhC;IACA,KAAKnR,IAAL,CAAU,CAAV,IAAesR,EAAE,GAAGH,IAAL,GAAYI,EAAE,GAAGH,IAAhC;IAEAE,EAAE,GAAG,KAAKtR,IAAL,CAAU,CAAV,CAAL;IACAuR,EAAE,GAAG,KAAKvR,IAAL,CAAU,EAAV,CAAL;IACA,KAAKA,IAAL,CAAU,CAAV,IAAesR,EAAE,GAAGF,IAAL,GAAYG,EAAE,GAAGJ,IAAhC;IACA,KAAKnR,IAAL,CAAU,EAAV,IAAgBsR,EAAE,GAAGH,IAAL,GAAYI,EAAE,GAAGH,IAAjC;IAEAE,EAAE,GAAG,KAAKtR,IAAL,CAAU,EAAV,CAAL;IACAuR,EAAE,GAAG,KAAKvR,IAAL,CAAU,EAAV,CAAL;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgBsR,EAAE,GAAGF,IAAL,GAAYG,EAAE,GAAGJ,IAAjC;IACA,KAAKnR,IAAL,CAAU,EAAV,IAAgBsR,EAAE,GAAGH,IAAL,GAAYI,EAAE,GAAGH,IAAjC;IACA,OAAO,IAAP;GA3IJ;;EAAA,QAoJSI,OApJT,GAoJE,iBAAeN,KAAf;IACEA,KAAK,IAAIpN,IAAI,CAACgL,EAAL,GAAU,KAAnB;IAEA,IAAIqC,IAAI,GAAGrN,IAAI,CAACiL,GAAL,CAASmC,KAAT,CAAX;IACA,IAAIE,IAAI,GAAGtN,IAAI,CAAC+K,GAAL,CAASqC,KAAT,CAAX;IAGA,OAAO,IAAIN,OAAJ,CAAY,IAAID,YAAJ,CAAiB,CAClCS,IADkC,EAC5B,GAD4B,EACvBD,IADuB,EACjB,GADiB,EAElC,GAFkC,EAE7B,GAF6B,EAExB,GAFwB,EAEnB,GAFmB,EAGlC,CAACA,IAHiC,EAG3B,GAH2B,EAGtBC,IAHsB,EAGhB,GAHgB,EAIlC,GAJkC,EAI7B,GAJ6B,EAIxB,GAJwB,EAInB,GAJmB,CAAjB,CAAZ,CAAP;GA3JJ;;EAAA,OAmKEK,YAnKF,GAmKE,sBAAaP,KAAb;IACEA,KAAK,IAAIpN,IAAI,CAACgL,EAAL,GAAU,KAAnB;IACA,IAAIqC,IAAI,GAAGrN,IAAI,CAACiL,GAAL,CAASmC,KAAT,CAAX;IACA,IAAIE,IAAI,GAAGtN,IAAI,CAAC+K,GAAL,CAASqC,KAAT,CAAX;IACA,KAAKL,WAAL;IACA,KAAK7Q,IAAL,CAAU,CAAV,IAAeoR,IAAf;IACA,KAAKpR,IAAL,CAAU,CAAV,IAAemR,IAAf;IACA,KAAKnR,IAAL,CAAU,CAAV,IAAe,CAACmR,IAAhB;IACA,KAAKnR,IAAL,CAAU,EAAV,IAAgBoR,IAAhB;IACA,OAAO,IAAP;GA5KJ;;EAAA,OA+KEI,OA/KF,GA+KE,iBAAQN,KAAR;IACEA,KAAK,IAAIpN,IAAI,CAACgL,EAAL,GAAU,KAAnB;IAEA,IAAIqC,IAAI,GAAGrN,IAAI,CAACiL,GAAL,CAASmC,KAAT,CAAX;IACA,IAAIE,IAAI,GAAGtN,IAAI,CAAC+K,GAAL,CAASqC,KAAT,CAAX;IAEA,IAAIQ,EAAE,GAAG,KAAK1R,IAAL,CAAU,CAAV,CAAT;IACA,IAAIuR,EAAE,GAAG,KAAKvR,IAAL,CAAU,CAAV,CAAT;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe0R,EAAE,GAAGN,IAAL,GAAaG,EAAE,GAAGJ,IAAjC;IACA,KAAKnR,IAAL,CAAU,CAAV,IAAe0R,EAAE,GAAGP,IAAL,GAAYI,EAAE,GAAGH,IAAhC;IAEAM,EAAE,GAAG,KAAK1R,IAAL,CAAU,CAAV,CAAL;IACAuR,EAAE,GAAG,KAAKvR,IAAL,CAAU,CAAV,CAAL;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe0R,EAAE,GAAGN,IAAL,GAAcG,EAAE,GAAGJ,IAAlC;IACA,KAAKnR,IAAL,CAAU,CAAV,IAAe0R,EAAE,GAAGP,IAAL,GAAYI,EAAE,GAAGH,IAAhC;IAEAM,EAAE,GAAG,KAAK1R,IAAL,CAAU,CAAV,CAAL;IACAuR,EAAE,GAAG,KAAKvR,IAAL,CAAU,EAAV,CAAL;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe0R,EAAE,GAAGN,IAAL,GAAcG,EAAE,GAAGJ,IAAlC;IACA,KAAKnR,IAAL,CAAU,EAAV,IAAgB0R,EAAE,GAAGP,IAAL,GAAYI,EAAE,GAAGH,IAAjC;IAEAM,EAAE,GAAG,KAAK1R,IAAL,CAAU,EAAV,CAAL;IACAuR,EAAE,GAAG,KAAKvR,IAAL,CAAU,EAAV,CAAL;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB0R,EAAE,GAAGN,IAAL,GAAcG,EAAE,GAAGJ,IAAnC;IACA,KAAKnR,IAAL,CAAU,EAAV,IAAgB0R,EAAE,GAAGP,IAAL,GAAYI,EAAE,GAAGH,IAAjC;IACA,OAAO,IAAP;GAxMJ;;EAAA,QAgNSO,OAhNT,GAgNE,iBAAeT,KAAf;IACEA,KAAK,IAAIpN,IAAI,CAACgL,EAAL,GAAU,KAAnB;IAEA,IAAIqC,IAAI,GAAGrN,IAAI,CAACiL,GAAL,CAASmC,KAAT,CAAX;IACA,IAAIE,IAAI,GAAGtN,IAAI,CAAC+K,GAAL,CAASqC,KAAT,CAAX;IAGA,OAAO,IAAIN,OAAJ,CAAY,IAAID,YAAJ,CAAiB,CAClCS,IADkC,EAC5BD,IAD4B,EACtB,GADsB,EACjB,GADiB,EAElC,CAACA,IAFiC,EAE3BC,IAF2B,EAErB,GAFqB,EAEhB,GAFgB,EAGlC,GAHkC,EAG7B,GAH6B,EAGxB,GAHwB,EAGnB,GAHmB,EAIlC,GAJkC,EAI7B,GAJ6B,EAIxB,GAJwB,EAInB,GAJmB,CAAjB,CAAZ,CAAP;GAvNJ;;EAAA,OA+NEQ,YA/NF,GA+NE,sBAAaV,KAAb;IACEA,KAAK,IAAIpN,IAAI,CAACgL,EAAL,GAAU,KAAnB;IACA,IAAIqC,IAAI,GAAGrN,IAAI,CAACiL,GAAL,CAASmC,KAAT,CAAX;IACA,IAAIE,IAAI,GAAGtN,IAAI,CAAC+K,GAAL,CAASqC,KAAT,CAAX;IACA,KAAKL,WAAL;IACA,KAAK7Q,IAAL,CAAU,CAAV,IAAeoR,IAAf;IACA,KAAKpR,IAAL,CAAU,CAAV,IAAemR,IAAf;IACA,KAAKnR,IAAL,CAAU,CAAV,IAAe,CAACmR,IAAhB;IACA,KAAKnR,IAAL,CAAU,CAAV,IAAeoR,IAAf;IACA,OAAO,IAAP;GAxOJ;;EAAA,OA2OEO,OA3OF,GA2OE,iBAAQT,KAAR;IACEA,KAAK,IAAIpN,IAAI,CAACgL,EAAL,GAAU,KAAnB;IAEA,IAAIqC,IAAI,GAAGrN,IAAI,CAACiL,GAAL,CAASmC,KAAT,CAAX;IACA,IAAIE,IAAI,GAAGtN,IAAI,CAAC+K,GAAL,CAASqC,KAAT,CAAX;IAEA,IAAIQ,EAAE,GAAG,KAAK1R,IAAL,CAAU,CAAV,CAAT;IACA,IAAIsR,EAAE,GAAG,KAAKtR,IAAL,CAAU,CAAV,CAAT;IAEA,KAAKA,IAAL,CAAU,CAAV,IAAe0R,EAAE,GAAGN,IAAL,GAAYE,EAAE,GAAGH,IAAhC;IACA,KAAKnR,IAAL,CAAU,CAAV,IAAe0R,EAAE,GAAGP,IAAL,GAAYG,EAAE,GAAGF,IAAhC;IAEAM,EAAE,GAAG,KAAK1R,IAAL,CAAU,CAAV,CAAL;IACAsR,EAAE,GAAG,KAAKtR,IAAL,CAAU,CAAV,CAAL;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe0R,EAAE,GAAGN,IAAL,GAAYE,EAAE,GAAGH,IAAhC;IACA,KAAKnR,IAAL,CAAU,CAAV,IAAe0R,EAAE,GAAGP,IAAL,GAAYG,EAAE,GAAGF,IAAhC;IAEAM,EAAE,GAAG,KAAK1R,IAAL,CAAU,CAAV,CAAL;IACAsR,EAAE,GAAG,KAAKtR,IAAL,CAAU,CAAV,CAAL;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe0R,EAAE,GAAGN,IAAL,GAAYE,EAAE,GAAGH,IAAhC;IACA,KAAKnR,IAAL,CAAU,CAAV,IAAe0R,EAAE,GAAGP,IAAL,GAAYG,EAAE,GAAGF,IAAhC;IAEAM,EAAE,GAAG,KAAK1R,IAAL,CAAU,EAAV,CAAL;IACAsR,EAAE,GAAG,KAAKtR,IAAL,CAAU,EAAV,CAAL;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB0R,EAAE,GAAGN,IAAL,GAAYE,EAAE,GAAGH,IAAjC;IACA,KAAKnR,IAAL,CAAU,EAAV,IAAgB0R,EAAE,GAAGP,IAAL,GAAYG,EAAE,GAAGF,IAAjC;IACA,OAAO,IAAP;GArQJ;;EAAA,OAsUEzC,QAtUF,GAsUE,kBAASkD,MAAT;IACE,IAAIC,MAAM,GAAG,IAAIlB,OAAJ,CAAY,IAAID,YAAJ,CAAiB,CACxC,GADwC,EACnC,GADmC,EAC9B,GAD8B,EACzB,GADyB,EAExC,GAFwC,EAEnC,GAFmC,EAE9B,GAF8B,EAEzB,GAFyB,EAGxC,GAHwC,EAGnC,GAHmC,EAG9B,GAH8B,EAGzB,GAHyB,EAIxC,GAJwC,EAInC,GAJmC,EAI9B,GAJ8B,EAIzB,GAJyB,CAAjB,CAAZ,CAAb;;IAOA,IAAIkB,MAAM,IAAI,IAAd,EAAmB;MACjB,OAAOC,MAAP;;;IAGF,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuB,EAAEA,CAAzB,EAA4B;MAC1B,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuB,EAAEA,CAAzB,EAA4B;QAC1B,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,CAApB,EAAuB,EAAEA,CAAzB,EAA4B;UAC1BH,MAAM,CAAC9R,IAAP,CAAY+R,CAAC,GAAG,CAAJ,GAAQE,CAApB,KAA0B,KAAKjS,IAAL,CAAU+R,CAAC,GAAG,CAAJ,GAAQC,CAAlB,IAAuBH,MAAM,CAAC7R,IAAP,CAAYgS,CAAC,GAAG,CAAJ,GAAQC,CAApB,CAAjD;;;;;IAIN,OAAOH,MAAP;GAzVJ;;EAAA,QA6ZSI,KA7ZT,GA6ZE,eAAaC,IAAb,EAA2BC,KAA3B,EACEC,MADF,EACkBC,GADlB,EAEEC,IAFF,EAEyBC,GAFzB;QAEED;MAAAA,OAAe,CAAC;;;QAAOC;MAAAA,MAAc;;;IACrC,OAAO,IAAI5B,OAAJ,CAAY,IAAID,YAAJ,CAAiB,CAClC,OAAKyB,KAAK,GAAGD,IAAb,CADkC,EACd,GADc,EACT,GADS,EACJ,GADI,EAElC,GAFkC,EAE7B,OAAKG,GAAG,GAAGD,MAAX,CAF6B,EAET,GAFS,EAEJ,GAFI,EAGlC,GAHkC,EAG7B,GAH6B,EAGxB,CAAC,GAAD,IAAMG,GAAG,GAAGD,IAAZ,CAHwB,EAGL,GAHK,EAIlC,EAAEJ,IAAI,GAAGC,KAAT,KAAiBA,KAAK,GAAGD,IAAzB,CAJkC,EAIF,EAAEG,GAAG,GAAGD,MAAR,KAAiBC,GAAG,GAAGD,MAAvB,CAJE,EAI8B,EAAEE,IAAI,GAAGC,GAAT,KAAeD,IAAI,GAAGC,GAAtB,CAJ9B,EAI0D,GAJ1D,CAAjB,CAAZ,CAAP;GAhaJ;;EAAA,OAwaEC,QAxaF,GAwaE,kBAASN,IAAT,EAAuBC,KAAvB,EACaC,MADb,EAC6BC,GAD7B,EAEaC,IAFb,EAEoCC,GAFpC;QAEaD;MAAAA,OAAe,CAAC;;;QAAOC;MAAAA,MAAc;;;IAChD,KAAKxS,IAAL,CAAU,CAAV,IAAe,OAAKoS,KAAK,GAAGD,IAAb,CAAf;IACA,KAAKnS,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,OAAKsS,GAAG,GAAGD,MAAX,CAAf;IACA,KAAKrS,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB,CAAC,GAAD,IAAMwS,GAAG,GAAGD,IAAZ,CAAhB;IACA,KAAKvS,IAAL,CAAU,EAAV,IAAgB,CAAC,CAAjB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB,EAAEmS,IAAI,GAAGC,KAAT,KAAiBA,KAAK,GAAGD,IAAzB,CAAhB;IACA,KAAKnS,IAAL,CAAU,EAAV,IAAgB,EAAEsS,GAAG,GAAGD,MAAR,KAAiBC,GAAG,GAAGD,MAAvB,CAAhB;IACA,KAAKrS,IAAL,CAAU,EAAV,IAAgB,EAAEuS,IAAI,GAAGC,GAAT,KAAeD,IAAI,GAAGC,GAAtB,CAAhB;IACA,KAAKxS,IAAL,CAAU,EAAV,IAAgB,GAAhB;IACA,OAAO,IAAP;GA3bJ;;EAAA,QAscS0S,WAtcT,GAscE,qBAAmBC,GAAnB,EAAgCC,MAAhC,EAAgDL,IAAhD,EAA8DC,GAA9D;IACE,IAAIrE,CAAC,GAAGrK,IAAI,CAAC+O,GAAL,CAASF,GAAG,GAAG,GAAf,IAAsBJ,IAA9B;IACA,IAAIrE,CAAC,GAAGC,CAAC,GAAGyE,MAAZ;IACA,OAAOhC,OAAO,CAACkC,OAAR,CAAgB,CAAC5E,CAAjB,EAAoBA,CAApB,EAAuB,CAACC,CAAxB,EAA2BA,CAA3B,EAA8BoE,IAA9B,EAAoCC,GAApC,CAAP;GAzcJ;;EAAA,OA4cEO,cA5cF,GA4cE,wBAAeJ,GAAf,EAA4BC,MAA5B,EAA4CL,IAA5C,EAA0DC,GAA1D;IACE,IAAIrE,CAAC,GAAGrK,IAAI,CAAC+O,GAAL,CAASF,GAAG,GAAG,GAAf,IAAsBJ,IAA9B;IACA,IAAIrE,CAAC,GAAGC,CAAC,GAAGyE,MAAZ;IACA,OAAO,KAAKI,UAAL,CAAgB,CAAC9E,CAAjB,EAAoBA,CAApB,EAAuB,CAACC,CAAxB,EAA2BA,CAA3B,EAA8BoE,IAA9B,EAAoCC,GAApC,CAAP;GA/cJ;;EAAA,QA4dSM,OA5dT,GA4dE,iBAAeX,IAAf,EAA6BC,KAA7B,EACEC,MADF,EACkBC,GADlB,EAEEC,IAFF,EAEyBC,GAFzB;QAEED;MAAAA,OAAe,CAAC;;;QAAOC;MAAAA,MAAc;;;IACrC,OAAO,IAAI5B,OAAJ,CAAY,IAAID,YAAJ,CAAiB,CAClC,IAAI4B,IAAJ,IAAYH,KAAK,GAAGD,IAApB,CADkC,EACP,CADO,EACJ,CADI,EACD,CADC,EAElC,CAFkC,EAE/B,IAAII,IAAJ,IAAYD,GAAG,GAAGD,MAAlB,CAF+B,EAEJ,CAFI,EAED,CAFC,EAGlC,CAACD,KAAK,GAAGD,IAAT,KAAgBC,KAAK,GAAGD,IAAxB,CAHkC,EAGH,CAACG,GAAG,GAAGD,MAAP,KAAkBC,GAAG,GAAGD,MAAxB,CAHG,EAG8B,EAAEG,GAAG,GAAGD,IAAR,KAAiBC,GAAG,GAAGD,IAAvB,CAH9B,EAG4D,CAAC,CAH7D,EAIlC,CAJkC,EAI/B,CAJ+B,EAI5B,CAAC,CAAD,GAAKA,IAAL,GAAYC,GAAZ,IAAmBA,GAAG,GAAGD,IAAzB,CAJ4B,EAII,CAJJ,CAAjB,CAAZ,CAAP;GA/dJ;;EAAA,OAueES,UAveF,GAueE,oBAAWb,IAAX,EAAyBC,KAAzB,EACQC,MADR,EACwBC,GADxB,EAEQC,IAFR,EAE+BC,GAF/B;QAEQD;MAAAA,OAAe,CAAC;;;QAAOC;MAAAA,MAAc;;;IAC3C,KAAKxS,IAAL,CAAU,CAAV,IAAe,IAAIuS,IAAJ,IAAYH,KAAK,GAAGD,IAApB,CAAf;IACA,KAAKnS,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,IAAIuS,IAAJ,IAAYD,GAAG,GAAGD,MAAlB,CAAf;IACA,KAAKrS,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAAf;IACA,KAAKA,IAAL,CAAU,CAAV,IAAe,CAACoS,KAAK,GAAGD,IAAT,KAAgBC,KAAK,GAAGD,IAAxB,CAAf;IACA,KAAKnS,IAAL,CAAU,CAAV,IAAe,CAACsS,GAAG,GAAGD,MAAP,KAAkBC,GAAG,GAAGD,MAAxB,CAAf;IACA,KAAKrS,IAAL,CAAU,EAAV,IAAgB,EAAEwS,GAAG,GAAGD,IAAR,KAAiBC,GAAG,GAAGD,IAAvB,CAAhB;IACA,KAAKvS,IAAL,CAAU,EAAV,IAAgB,CAAC,CAAjB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB,CAAhB;IACA,KAAKA,IAAL,CAAU,EAAV,IAAgB,CAAC,CAAD,GAAKuS,IAAL,GAAYC,GAAZ,IAAmBA,GAAG,GAAGD,IAAzB,CAAhB;IACA,KAAKvS,IAAL,CAAU,EAAV,IAAgB,CAAhB;GAzfJ;;EAAA,OAigBEiT,SAjgBF,GAigBE,mBAAUC,MAAV,EAA2BC,CAA3B;QAA2BA;MAAAA,IAAY;;;IAErC,IAAIjF,CAAC,GAAG,KAAKlO,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBkT,MAAM,CAAChF,CAA9B,GACJ,KAAKlO,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBkT,MAAM,CAAC/E,CAD1B,GAEJ,KAAKnO,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBkT,MAAM,CAACzC,CAF1B,GAGJ,KAAKzQ,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBmT,CAH3B;IAKA,IAAIhF,CAAC,GAAG,KAAKnO,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBkT,MAAM,CAAChF,CAA9B,GACJ,KAAKlO,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBkT,MAAM,CAAC/E,CAD1B,GAEJ,KAAKnO,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBkT,MAAM,CAACzC,CAF1B,GAGJ,KAAKzQ,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBmT,CAH3B;IAKA,IAAI1C,CAAC,GAAG,KAAKzQ,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBkT,MAAM,CAAChF,CAA9B,GACJ,KAAKlO,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBkT,MAAM,CAAC/E,CAD1B,GAEJ,KAAKnO,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBkT,MAAM,CAACzC,CAF1B,GAGJ,KAAKzQ,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBmT,CAH3B;IAKAA,CAAC,GAAG,KAAKnT,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBkT,MAAM,CAAChF,CAA9B,GACA,KAAKlO,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBkT,MAAM,CAAC/E,CAD9B,GAEA,KAAKnO,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBkT,MAAM,CAACzC,CAF9B,GAGA,KAAKzQ,IAAL,CAAU,IAAI,CAAJ,GAAQ,CAAlB,IAAuBmT,CAH3B;;IAKA,IAAIA,CAAC,IAAI,CAAT,EAAY;MACVA,CAAC,GAAG,CAAJ;;;IAGF,OAAO,IAAI3C,OAAJ,CACLtC,CAAC,GAAGiF,CADC,EACEhF,CAAC,GAAGgF,CADN,EACS1C,CAAC,GAAG0C,CADb,CAAP;GA3hBJ;;EAAA,OAoiBEzC,MApiBF,GAoiBE;IACE,OAAO,KAAK1Q,IAAZ;GAriBJ;;EAAA,OAglBEoT,OAhlBF,GAglBE;IASE,IAAMC,IAAI,GAAG,CAAb;IACA,IAAIC,IAAI,GAAG,CAAX;IAEA,IAAIC,CAAC,GAAG,KAAKvT,IAAL,CAAUwT,KAAV,EAAR;IAIA,IAAIC,CAAC,GAAG,IAAI9C,YAAJ,CAAiB,CACvB,GADuB,EAClB,GADkB,EACb,GADa,EACR,GADQ,EAEvB,GAFuB,EAElB,GAFkB,EAEb,GAFa,EAER,GAFQ,EAGvB,GAHuB,EAGlB,GAHkB,EAGb,GAHa,EAGR,GAHQ,EAIvB,GAJuB,EAIlB,GAJkB,EAIb,GAJa,EAIR,GAJQ,CAAjB,CAAR;;IAUA,KAAK,IAAI/M,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0P,IAApB,EAA0B,EAAE1P,CAA5B,EAA+B;MAI7B,IAAIC,CAAC,GAAGD,CAAR;;MACA,OAAOC,CAAC,GAAGwP,IAAJ,IAAYE,CAAC,CAAC1P,CAAC,GAAG,CAAJ,GAAQD,CAAT,CAAD,IAAgB,CAAnC,EAAsC;QACpC,EAAEC,CAAF;;;MAEF,IAAIA,CAAC,IAAIwP,IAAL,IAAaE,CAAC,CAAC1P,CAAC,GAAG,CAAJ,GAAQD,CAAT,CAAD,IAAgB,CAAjC,EAAoC;QAGlCqJ,OAAO,CAACC,GAAR,CAAY,+CAAZ;QACA,OAAO,IAAP;;;MAEF,IAAIrJ,CAAC,IAAID,CAAT,EAAY;QACV,IAAI8P,GAAE,GAAGH,CAAC,CAACC,KAAF,CAAQ5P,CAAC,GAAGyP,IAAZ,EAAkB,CAACzP,CAAC,GAAG,CAAL,IAAUyP,IAA5B,CAAT;;QACA,IAAIM,EAAE,GAAGJ,CAAC,CAACC,KAAF,CAAQ3P,CAAC,GAAGwP,IAAZ,EAAkB,CAACxP,CAAC,GAAG,CAAL,IAAUwP,IAA5B,CAAT;QACAE,CAAC,CAACjF,GAAF,CAAMqF,EAAN,EAAU/P,CAAC,GAAGyP,IAAd;QACAE,CAAC,CAACjF,GAAF,CAAMoF,GAAN,EAAU7P,CAAC,GAAGwP,IAAd;;QACA,IAAIO,GAAE,GAAGH,CAAC,CAACD,KAAF,CAAQ5P,CAAC,GAAGyP,IAAZ,EAAkB,CAACzP,CAAC,GAAG,CAAL,IAAUyP,IAA5B,CAAT;;QACA,IAAIQ,EAAE,GAAGJ,CAAC,CAACD,KAAF,CAAQ3P,CAAC,GAAGwP,IAAZ,EAAkB,CAACxP,CAAC,GAAG,CAAL,IAAUwP,IAA5B,CAAT;QACAI,CAAC,CAACnF,GAAF,CAAMuF,EAAN,EAAUjQ,CAAC,GAAGyP,IAAd;QACAI,CAAC,CAACnF,GAAF,CAAMsF,GAAN,EAAU/P,CAAC,GAAGwP,IAAd;;;MAIF,IAAIK,EAAE,GAAGH,CAAC,CAACC,KAAF,CAAQ5P,CAAC,GAAGyP,IAAZ,EAAkB,CAACzP,CAAC,GAAG,CAAL,IAAUyP,IAA5B,CAAT;MACA,IAAIO,EAAE,GAAGH,CAAC,CAACD,KAAF,CAAQ5P,CAAC,GAAGyP,IAAZ,EAAkB,CAACzP,CAAC,GAAG,CAAL,IAAUyP,IAA5B,CAAT;;MAEA,KAAKxP,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGwP,IAAhB,EAAsB,EAAExP,CAAxB,EAA2B;QACzB,IAAI8P,GAAE,GAAGJ,CAAC,CAACC,KAAF,CAAQ3P,CAAC,GAAGwP,IAAZ,EAAkB,CAACxP,CAAC,GAAG,CAAL,IAAUwP,IAA5B,CAAT;;QACA,IAAIQ,GAAE,GAAGJ,CAAC,CAACD,KAAF,CAAQ3P,CAAC,GAAGwP,IAAZ,EAAkB,CAACxP,CAAC,GAAG,CAAL,IAAUwP,IAA5B,CAAT;;QACA,IAAGxP,CAAC,IAAID,CAAR,EAAW;UAGT,IAAI+P,GAAE,CAAC/P,CAAD,CAAF,IAAS,CAAb,EAAgB;YACd,IAAIkQ,CAAC,GAAG,CAACH,GAAE,CAAC/P,CAAD,CAAH,GAAS8P,EAAE,CAAC9P,CAAD,CAAnB;;YAIA,KAAK,IAAImQ,CAAC,GAAGnQ,CAAb,EAAgBmQ,CAAC,GAAGT,IAApB,EAA0B,EAAES,CAA5B,EAA+B;cAC7BJ,GAAE,CAACI,CAAD,CAAF,GAAQJ,GAAE,CAACI,CAAD,CAAF,GAASD,CAAC,GAAGJ,EAAE,CAACK,CAAD,CAAvB;;;YAEFR,CAAC,CAACjF,GAAF,CAAMqF,GAAN,EAAU9P,CAAC,GAAGwP,IAAd;;YACA,KAAK,IAAIU,EAAC,GAAG,CAAb,EAAgBA,EAAC,GAAGT,IAApB,EAA0B,EAAES,EAA5B,EAA+B;cAC7BF,GAAE,CAACE,EAAD,CAAF,GAAQF,GAAE,CAACE,EAAD,CAAF,GAASD,CAAC,GAAGF,EAAE,CAACG,EAAD,CAAvB;;;YAEFN,CAAC,CAACnF,GAAF,CAAMuF,GAAN,EAAUhQ,CAAC,GAAGwP,IAAd;;SAfJ,MAkBK;UAIH,IAAIS,EAAC,GAAGJ,EAAE,CAAC9P,CAAD,CAAV;;UACA,IAAIkQ,EAAC,IAAI,CAAT,EAAY;YACV7G,OAAO,CAACC,GAAR,CAAY,+CAAZ;YACA,OAAO,IAAP;;;UAEF,KAAK,IAAI6G,GAAC,GAAGnQ,CAAb,EAAgBmQ,GAAC,GAAGT,IAApB,EAA0B,EAAES,GAA5B,EAA+B;YAC7BJ,GAAE,CAACI,GAAD,CAAF,GAAQJ,GAAE,CAACI,GAAD,CAAF,GAAQD,EAAhB;;;UAEFP,CAAC,CAACjF,GAAF,CAAMqF,GAAN,EAAU9P,CAAC,GAAGwP,IAAd;;UACA,KAAK,IAAIU,GAAC,GAAG,CAAb,EAAgBA,GAAC,GAAGT,IAApB,EAA0B,EAAES,GAA5B,EAA+B;YAC7BF,GAAE,CAACE,GAAD,CAAF,GAAQF,GAAE,CAACE,GAAD,CAAF,GAAQD,EAAhB;;;UAEFL,CAAC,CAACnF,GAAF,CAAMuF,GAAN,EAAUhQ,CAAC,GAAGwP,IAAd;;;;;IAIN,OAAO,IAAIzC,OAAJ,CAAY6C,CAAZ,CAAP;GAhrBJ;;EAAA;IAAA;IAAA,KA6EE;MACE,OAAO,IAAIjD,OAAJ,CAAY,KAAKxQ,IAAL,CAAU,EAAV,CAAZ,EAA2B,KAAKA,IAAL,CAAU,EAAV,CAA3B,EAA0C,KAAKA,IAAL,CAAU,EAAV,CAA1C,CAAP;;;;EA9EJ;AAAA;;ICHagU,KAAb;EAME,eAAYC,GAAZ,EACEC,KADF,EAEEC,IAFF,EAGmBjD,KAHnB;QAAY+C;MAAAA,MAAc;;;QACxBC;MAAAA,QAAgB;;;QAChBC;MAAAA,OAAe;;;QACEjD;MAAAA,QAAgB;;;IAAhB,UAAA,GAAAA,KAAA;IACjB,KAAKkD,OAAL,GAAe,IAAIzD,YAAJ,CAAiB,CAACsD,GAAD,EAAMC,KAAN,EAAaC,IAAb,CAAjB,CAAf;;;EAVJ;;EAAA,OAgBEE,SAhBF,GAgBE;IACE,OAAO,KAAKD,OAAZ;GAjBJ;;EAAA,OAuBE1D,MAvBF,GAuBE;IACE,OAAO,IAAIC,YAAJ,CAAiB,CAAC,KAAKsD,GAAN,EAAW,KAAKC,KAAhB,EAAuB,KAAKC,IAA5B,EAAkC,KAAKjD,KAAvC,CAAjB,CAAP;GAxBJ;;EAAA,MAkDSoD,OAlDT,GAkDE,iBAAeC,SAAf;QAAeA;MAAAA,YAAY;;;IACzB,IAAIA,SAAS,CAACjY,MAAV,IAAoB,CAApB,IAAyBiY,SAAS,CAACjY,MAAV,IAAoB,CAA7C,IAAkDiY,SAAS,CAACjY,MAAV,IAAoB,CAA1E,EAA6E;MAC3EiY,SAAS,GAAGA,SAAS,CAACC,SAAV,CAAoB,CAApB,EAAuBD,SAAS,CAACjY,MAAjC,CAAZ;;;IAEF,IAAIiY,SAAS,CAACjY,MAAV,IAAoB,CAAxB,EAA2B;MACzBiY,SAAS,GAAGA,SAAS,CAACE,KAAV,CAAgB,EAAhB,EAAoBla,GAApB,CAAwB,UAAA2T,CAAC;QAAA,OAAIA,CAAC,GAAGA,CAAR;OAAzB,EAAoCwG,IAApC,CAAyC,EAAzC,CAAZ;;;IAGF,IAAIC,SAAS,GAAGC,QAAQ,CAACL,SAAD,EAAY,EAAZ,CAAxB;;IAEA,IAAIA,SAAS,CAACjY,MAAV,IAAoB,CAAxB,EAA2B;MACzB,OAAO,IAAI0X,KAAJ,CACL,CAACW,SAAS,IAAI,EAAd,IAAoB,GADf,EAEL,CAAEA,SAAS,IAAI,CAAd,GAAmB,GAApB,IAA2B,GAFtB,EAGL,CAACA,SAAS,GAAG,GAAb,IAAoB,GAHf,CAAP;KADF,MAOK;MACH,OAAO,IAAIX,KAAJ,CACL,CAAEW,SAAS,IAAI,EAAd,GAAoB,GAArB,IAA4B,GADvB,EAEL,CAAEA,SAAS,IAAI,EAAd,GAAoB,GAArB,IAA4B,GAFvB,EAGL,CAAEA,SAAS,IAAI,CAAd,GAAmB,GAApB,IAA2B,GAHtB,EAIL,CAACA,SAAS,GAAG,GAAb,IAAoB,GAJf,CAAP;;GApEN;;EAAA,MA6ESE,OA7ET,GA6EE,iBAAeF,SAAf;QAAeA;MAAAA,YAAY;;;IACzB,IAAIA,SAAS,GAAG,CAAhB,EAAmB;MACjBA,SAAS,GAAG,CAAZ;;;IAEF,OAAO,IAAIX,KAAJ,CACL,CAAEW,SAAS,IAAI,EAAd,GAAoB,GAArB,IAA4B,GADvB,EAEL,CAAEA,SAAS,IAAI,CAAd,GAAmB,GAApB,IAA2B,GAFtB,EAGL,CAACA,SAAS,GAAG,GAAb,IAAoB,GAHf,CAAP;GAjFJ;;EAAA,MAwFSG,QAxFT,GAwFE,kBAAgB5I,KAAhB;IACE,OAAO,IAAI8H,KAAJ,CACL9H,KAAK,CAACgC,CADD,EAELhC,KAAK,CAACiC,CAFD,EAGLjC,KAAK,CAACuE,CAHD,CAAP;GAzFJ;;EAAA,MAgGSsE,GAhGT,GAgGE,aAAWhI,CAAX,EAAqBiI,CAArB,EAA+BC,MAA/B;IACE,OAAO,IAAIjB,KAAJ,CACLjH,CAAC,CAACkH,GAAF,GAAQgB,MAAR,GAAiBD,CAAC,CAACf,GAAF,IAAS,IAAIgB,MAAb,CADZ,EAELlI,CAAC,CAACmH,KAAF,GAASe,MAAT,GAAkBD,CAAC,CAACd,KAAF,IAAW,IAAIe,MAAf,CAFb,EAGLlI,CAAC,CAACoH,IAAF,GAASc,MAAT,GAAkBD,CAAC,CAACb,IAAF,IAAU,IAAIc,MAAd,CAHb,EAILlI,CAAC,CAACmE,KAAF,GAAU+D,MAAV,GAAmBD,CAAC,CAAC9D,KAAF,IAAW,IAAI+D,MAAf,CAJd,CAAP;GAjGJ;;EAAA,MAmHSC,OAnHT,GAmHE,iBAAeC,WAAf;IACE,OAAO,0BAA0BC,IAA1B,CAA+BD,WAA/B,CAAP;GApHJ;;EAAA;IAAA;IAAA,KA2BE;MACE,OAAO,KAAKf,OAAL,CAAa,CAAb,CAAP;;;IA5BJ;IAAA,KA+BE;MACE,OAAO,KAAKA,OAAL,CAAa,CAAb,CAAP;;;IAhCJ;IAAA,KAmCE;MACE,OAAO,KAAKA,OAAL,CAAa,CAAb,CAAP;;;IApCJ;IAAA,KA2CE;MACE,OAAO,UAAU,KAAKH,GAAL,GAAW,GAArB,GAA2B,GAA3B,GAAiC,KAAKC,KAAL,GAAa,GAA9C,GAAoD,GAApD,GAA0D,KAAKC,IAAL,GAAY,GAAtE,GAA4E,GAA5E,GAAkF,KAAKjD,KAAvF,GAA+F,GAAtG;;;IA5CJ;IAAA,KAyGE;MACE,IAAImE,SAAS,GAAG,SAAZA,SAAY,CAACvB,CAAD;QACd,IAAIwB,GAAG,GAAGxR,IAAI,CAACE,KAAL,CAAW8P,CAAC,GAAG,GAAf,EAAoB7P,QAApB,CAA6B,EAA7B,CAAV;QACAqR,GAAG,GAAGA,GAAG,CAAChZ,MAAJ,IAAc,CAAd,GAAkB,MAAMgZ,GAAxB,GAA8BA,GAApC;QACAA,GAAG,GAAGA,GAAG,CAAChZ,MAAJ,GAAa,CAAb,GAAiBgZ,GAAG,CAACC,MAAJ,CAAW,CAAX,EAAc,CAAd,CAAjB,GAAoCD,GAA1C;QACA,OAAOA,GAAP;OAJF;;MAMA,OAAO,MAAMD,SAAS,CAAC,KAAKpB,GAAN,CAAf,GAA4BoB,SAAS,CAAC,KAAKnB,KAAN,CAArC,GAAoDmB,SAAS,CAAC,KAAKlB,IAAN,CAA7D,GAA2EkB,SAAS,CAAC,KAAKnE,KAAN,CAA3F;;;;EAhHJ;AAAA;;ICCasE,YAAb;EAAA;;EAAA;IAAA;IAAA,KA4CE;MACE,OAAO,EAAP;;;IA7CJ;IAAA,KAwGE;MACE,OAAO,OAAOC,eAAe,CAAC9C,GAAhB,GAAsB+C,aAAa,CAACC,OAAlD;;;;EAzGJ;AAAA;AAESH,iBAAA,GAAO,CAAC,GAAR;AAEAA,yBAAA,GAAe,GAAf;AAEAA,wBAAA,GAAc,CAAC,kBAAf;AAEAA,wBAAA,GAAc,kBAAd;AAEAA,yBAAA,GAAe,GAAf;AAEAA,yBAAA,GAAe,CAAC,GAAhB;AAEAA,uBAAA,GAAa,GAAb;AAEAA,8BAAA,GAAoB,SAApB;AAEAA,0CAAA,GAAgCA,YAAY,CAACI,iBAAb,GAAiC9R,IAAI,CAACgL,EAAtE;AAEA0G,sCAAA,GAA4BA,YAAY,CAACK,6BAAb,GAA6C,CAAzE;AAEAL,0BAAA,GAAgB,GAAhB;AAEAA,+BAAA,GAAqBM,MAAM,CAACC,gBAA5B;AAEAP,+BAAA,GAAqB,CAAC,KAAtB;AAEAA,+BAAA,GAAqB,CAArB;AAEAA,8BAAA,GAAoB,GAApB;AAEAA,8BAAA,GAAoB,EAApB;AAEAA,+BAAA,GAAqB,EAArB;AAEAA,kCAAA,GAAwB,yBAAxB;AAEAA,uBAAA,GAAa,EAAb;AAEAA,wBAAA,GAAc,EAAd;AAEAA,0BAAA,GAAgB,EAAhB;AAMAA,0BAAA,GAAgB,QAAhB;AAEAA,wBAAA,GAAc,GAAd;AAEAA,uBAAA,GAAa,CAAb;AAEAA,4BAAA,GAAkB,IAAIxB,KAAJ,CAAU,GAAV,EAAe,GAAf,EAAoB,GAApB,CAAlB;AAEAwB,+BAAA,GAAqB,CAAC,GAAD,EAAM,GAAN,CAArB;AAEAA,8BAAA,GAAoB,CAApB;AAGAA,6BAAA,GAAmB,CAAC,OAApB;AAGAA,6BAAA,GAAmB,OAAnB;AAEAA,8BAAA,GAAoB,KAApB;AAEAA,+BAAA,GAAqB,EAArB;AAEAA,gCAAA,GAAsB,EAAtB;AAGAA,6BAAA,GAAmB,IAAnB;AAGAA,6BAAA,GAAmB,KAAnB;AAEAA,4BAAA,GAAkB,GAAlB;AAEAA,2BAAA,GAAiB,CAAjB;AAEAA,6BAAA,GAAmB,EAAnB;AAEAA,2BAAA,GAAiB,EAAjB;AAEAA,iCAAA,GAAuB,EAAvB;AAEAA,iCAAA,GAAuB,EAAvB;AAEAA,mCAAA,GAAyB,EAAzB;AAEAA,uBAAA,GAAa,MAAb;AAEAA,qCAAA,GAA2B,GAA3B;AAEAA,2BAAA,GAAiB,IAAjB;AAEAA,oBAAA,GAAU,GAAV;AAEAA,sBAAA,GAAY,IAAZ;AAEAA,sBAAA,GAAY,IAAZ;AAMAA,6BAAA,GAAmB,IAAnB;AAEAA,0BAAA,GAAgB,KAAhB;AAEAA,8BAAA,GAAoB,KAApB;AAEAA,0BAAA,GAAgB,KAAhB;AAEAA,0BAAA,GAAgB,MAAhB;AAEAA,mCAAA,GAAyB,KAAzB;AAEAA,qCAAA,GAA2B,GAA3B;AAEAA,iCAAA,GAAuBxB,KAAK,CAACM,OAAN,CAAc,SAAd,CAAvB;AAEAkB,iCAAA,GAAuBxB,KAAK,CAACM,OAAN,CAAc,SAAd,CAAvB;AAEAkB,8BAAA,GAAoB,IAAIxB,KAAJ,CAAU,GAAV,EAAe,GAAf,EAAoB,GAApB,CAApB;AAEAwB,6BAAA,GAAmB,IAAIxB,KAAJ,CAAU,GAAV,EAAe,GAAf,EAAoB,GAApB,CAAnB;AAEAwB,oCAAA,GAA0B,OAA1B;AAEAA,iCAAA,GAAuB,OAAvB;AAEAA,uBAAA,GAAa,IAAI5E,OAAJ,CAAY,IAAID,YAAJ,CAAiB,CAC/C,GAD+C,EAC1C,GAD0C,EACrC,GADqC,EAChC,GADgC,EAE/C,GAF+C,EAE1C,GAF0C,EAErC,GAFqC,EAEhC,GAFgC,EAG/C,GAH+C,EAG1C,GAH0C,EAGrC,GAHqC,EAGhC,GAHgC,EAI/C,GAJ+C,EAI1C,GAJ0C,EAIrC,GAJqC,EAIhC,GAJgC,CAAjB,CAAZ,CAAb;AAOA6E,gBAAA,GAAM,SAAS,IAAf;AAEAA,oCAAA,GAA0B,UAA1B;AAEAA,+BAAA,GAAqB,iBAArB;AAEAA,yBAAA,GAAe,GAAf;AAEAA,qBAAA,GAAW,IAAX;AAEAA,2CAAA,GAAiC,GAAjC;AAEAA,4BAAA,GAAkB,IAAlB;AAEAA,uBAAA,GAAa,CAAb;AAEAA,6BAAA,GAAmB,CAAnB;AAKT,IAmDaE,aAAb;AAESA,qBAAA,GAAU,MAAM5R,IAAI,CAACgL,EAArB;AAEA4G,qBAAA,GAAU5R,IAAI,CAACgL,EAAL,GAAU,KAApB;AAEA4G,qBAAA,GAAU,IAAV;AAGT,IAAaD,eAAb;AAESA,mBAAA,GAAM,KAAKC,aAAa,CAACM,OAAzB;AAEAP,yBAAA,GAAY,GAAZ;AAEAA,wBAAA,GAAW,IAAX;AAEAA,sBAAA,GAAS,IAAT;AAIT,IA2BaQ,cAAb;EAAA;;EAAA,eAsBSC,WAtBT,GAsBE,qBAAmBjb,IAAnB;IACE,OAAOgb,cAAc,CAACE,SAAf,CAAyBlb,IAAzB,CAAP;GAvBJ;;EAAA,eA0BSmb,WA1BT,GA0BE,qBAAmBnb,IAAnB;IACE,OAAOgb,cAAc,CAACI,SAAf,CAAyBpb,IAAzB,CAAP;GA3BJ;;EAAA,eA8BSqb,aA9BT,GA8BE,uBAAqBrb,IAArB;IACE,OAAOgb,cAAc,CAACM,WAAf,CAA2Btb,IAA3B,CAAP;GA/BJ;;EAAA;AAAA;AACSgb,wBAAA,GAAY;EACjB,WAAWjC,KAAK,CAACM,OAAN,CAAc,QAAd,CADM;EAEjB,QAAQN,KAAK,CAACM,OAAN,CAAc,QAAd,CAFS;EAGjB,aAAaN,KAAK,CAACM,OAAN,CAAc,QAAd,CAHI;EAIjB,WAAWN,KAAK,CAACM,OAAN,CAAc,QAAd;AAJM,CAAZ;AAOA2B,wBAAA,GAAY;EACjB,WAAWjC,KAAK,CAACM,OAAN,CAAc,QAAd,CADM;EAEjB,QAAQN,KAAK,CAACM,OAAN,CAAc,QAAd,CAFS;EAGjB,aAAaN,KAAK,CAACM,OAAN,CAAc,QAAd,CAHI;EAIjB,WAAWN,KAAK,CAACM,OAAN,CAAc,QAAd;AAJM,CAAZ;AAOA2B,0BAAA,GAAc;EACnB,WAAWjC,KAAK,CAACM,OAAN,CAAc,SAAd,CADQ;EAEnB,QAAQN,KAAK,CAACM,OAAN,CAAc,SAAd,CAFW;EAGnB,aAAaN,KAAK,CAACM,OAAN,CAAc,SAAd,CAHM;EAInB,WAAWN,KAAK,CAACM,OAAN,CAAc,SAAd;AAJQ,CAAd;;ACvRT,IAAYkC,SAAZ;;AAAA,WAAYA;EAEVA,kCAAA,WAAA;EACAA,kCAAA,WAAA;EACAA,oCAAA,aAAA;EACAA,mCAAA,YAAA;EACAA,+BAAA,QAAA;EACAA,oCAAA,aAAA;EAGAA,6CAAA,sBAAA;EAGAA,iDAAA,0BAAA;EAGAA,yCAAA,kBAAA;EACAA,wCAAA,iBAAA;EAGAA,iCAAA,SAAA;EACAA,mCAAA,WAAA;EACAA,kCAAA,UAAA;EACAA,4CAAA,oBAAA;EAGAA,0CAAA,kBAAA;EAGAA,yCAAA,iBAAA;EAGAA,oCAAA,YAAA;EACAA,yCAAA,iBAAA;EACAA,gDAAA,wBAAA;AACD,CAnCD,EAAYA,SAAS,KAATA,SAAS,KAAA,CAArB;;AAqCA,IAAaC,WAAb;EAGE,qBAAYC,SAAZ;IACE,KAAKA,SAAL,GAAiBA,SAAjB;;;EAJJ,YAaSC,WAbT,GAaE,qBAAmBC,SAAnB,EAAmCF,SAAnC;IACE,IAAIG,WAAW,GAAG,CAACD,SAAS,IAAI,EAAd,EAAkBF,SAApC;IACA,OAAOG,WAAW,IAAIH,SAAtB;GAfJ;;EAAA;AAAA;;ICjCaI,MAAb;EAAA;;EAQE,gBAAYta,GAAZ,EAAyBC,GAAzB;;;IACE,gCAAM+Z,SAAS,CAACO,MAAhB;IACA,MAAKva,GAAL,GAAWA,GAAX;IACA,MAAKC,GAAL,GAAWA,GAAX;;;;EAXJ;;EAAA,OAkBEua,MAlBF,GAkBE,gBAAOjG,KAAP;IACE,OAAO,KAAKvU,GAAL,IAAYuU,KAAK,CAACvU,GAAlB,IAAyB,KAAKC,GAAL,IAAYsU,KAAK,CAACtU,GAAlD;GAnBJ;;EAAA,OAsBEwa,KAtBF,GAsBE;IACE,OAAOC,QAAQ,CAAC,KAAK1a,GAAN,CAAR,IAAsBsH,IAAI,CAACqT,GAAL,CAAS,KAAK3a,GAAd,KAAsB,EAAnD;GAvBJ;;EAAA,OA8BEyH,QA9BF,GA8BE;IACE,OAAO,MAAM,KAAKzH,GAAX,GAAiB,IAAjB,GAAwB,KAAKC,GAA7B,GAAmC,GAA1C;GA/BJ;;EAAA,OAkCS2a,OAlCT,GAkCE,iBAAeC,KAAf;IACE,IAAGZ,WAAW,CAACE,WAAZ,CAAwBU,KAAxB,EAA+Bb,SAAS,CAACO,MAAzC,CAAH,EAAqD;MACnD,OAAOM,KAAP;;;IAEF,IAAIC,KAAK,CAACC,OAAN,CAAcF,KAAd,KAAyBA,KAAK,CAAC/a,MAAN,KAAiB,CAA9C,EAAkD;MAChD,OAAO,IAAIwa,MAAJ,CAAWhB,MAAM,CAACuB,KAAK,CAAC,CAAD,CAAN,CAAjB,EAA6BvB,MAAM,CAACuB,KAAK,CAAC,CAAD,CAAN,CAAnC,CAAP;;;IAEF,IAAI,CAACC,KAAK,CAACC,OAAN,CAAcF,KAAd,CAAD,IAAyB,OAAOA,KAAP,KAAiB,QAA1C,IAAsDA,KAAK,KAAK,IAAhE,IAAwE,SAASA,KAAjF,IAA0F,SAASA,KAAvG,EAA8G;MAC5G,OAAO,IAAIP,MAAJ,CACLhB,MAAM,CAACuB,KAAK,CAAC7a,GAAP,CADD,EAELsZ,MAAM,CAACuB,KAAK,CAAC5a,GAAP,CAFD,CAAP;;;IAIF,MAAM,IAAI+a,KAAJ,CAAU,0EACQ,yDADlB,CAAN;GA9CJ;;EAAA,OAkDEC,UAlDF,GAkDE,oBAAWC,MAAX;IACE,IAAIA,MAAM,IAAI,IAAd,EAAoB;MAClB,OAAO,CAAP;;;IAEF,IAAIC,IAAI,GAAGb,MAAM,CAACM,OAAP,CAAeM,MAAf,CAAX;IACA,IAAIE,cAAc,GAAGlC,aAAa,CAACM,OAAd,GAAwB,KAAKxZ,GAAlD;IACA,IAAIqb,eAAe,GAAGnC,aAAa,CAACM,OAAd,GAAwB,KAAKvZ,GAAnD;IACA,IAAIqb,aAAa,GAAGpC,aAAa,CAACM,OAAd,GAAwB2B,IAAI,CAACnb,GAAjD;IACA,IAAIub,cAAc,GAAGrC,aAAa,CAACM,OAAd,GAAwB2B,IAAI,CAAClb,GAAlD;IACA,IAAIub,CAAC,GAAGlU,IAAI,CAACiL,GAAL,CAAS,CAAC+I,aAAa,GAAGF,cAAjB,IAAiC,CAA1C,CAAR;IACA,IAAIrI,CAAC,GAAGzL,IAAI,CAACiL,GAAL,CAAS,CAACgJ,cAAc,GAAGF,eAAlB,IAAmC,CAA5C,CAAR;IAGA,OAAQ,MAAMrC,YAAY,CAACI,iBAAnB,GACN9R,IAAI,CAACmU,IAAL,CAAUnU,IAAI,CAAC0L,IAAL,CAAUwI,CAAC,GAAGA,CAAJ,GAAQlU,IAAI,CAAC+K,GAAL,CAAS+I,cAAT,IAA2B9T,IAAI,CAAC+K,GAAL,CAASiJ,aAAT,CAA3B,GAAqDvI,CAArD,GAAyDA,CAA3E,CAAV,CADF;GA/DJ;;EAAA,OAmEElB,SAnEF,GAmEE;IACE,IAAI6J,IAAI,GAAG,KAAK1b,GAAL,GAAW,CAAX,GAAe,CAAC,CAAhB,GAAoB,CAA/B;IACA,IAAIA,GAAG,GAAG,CAAC,KAAKA,GAAL,GAAW0b,IAAI,GAAG,EAAnB,IAAyB,GAAzB,GAA+B,KAAKA,IAA9C;IACAA,IAAI,GAAG,KAAKzb,GAAL,GAAW,CAAX,GAAe,CAAC,CAAhB,GAAoB,CAA3B;IACA,IAAIA,GAAG,GAAG,CAAC,KAAKA,GAAL,GAAWyb,IAAI,GAAG,GAAnB,IAA0B,GAA1B,GAAgC,MAAMA,IAAhD;IACA,OAAO,IAAIpB,MAAJ,CAAWta,GAAX,EAAgBC,GAAhB,CAAP;GAxEJ;;EAAA,OAgFEgS,GAhFF,GAgFE,aAAI1B,CAAJ;IACE,OAAO,IAAI+J,MAAJ,CAAW,KAAKta,GAAL,GAAWuQ,CAAC,CAACvQ,GAAxB,EAA6B,KAAKC,GAAL,GAAWsQ,CAAC,CAACtQ,GAA1C,EAA+C4R,SAA/C,EAAP;GAjFJ;;EAAA,OAyFEK,QAzFF,GAyFE,kBAAS3B,CAAT;IACE,IAAI,CAACA,CAAL,EAAQ;MACN,OAAO,IAAP;;;IAEF,OAAO,IAAI+J,MAAJ,CAAW,KAAKta,GAAL,GAAWuQ,CAAC,CAACvQ,GAAxB,EAA8B,KAAKC,GAAL,GAAWsQ,CAAC,CAACtQ,GAA3C,EAAgD4R,SAAhD,EAAP;GA7FJ;;EAAA;AAAA,EAA4BoI,WAA5B;;ICCa0B,kBAAb;EAAA;;EAAA,mBAOiBC,eAPjB,GAOU,yBAAuBC,MAAvB,EAAuCC,SAAvC;IACN,IAAIC,QAAQ,GAAG9I,SAAS,CAACC,KAAV,CAAgB2I,MAAM,CAAC7b,GAAvB,EAA4BgZ,YAAY,CAACgD,WAAzC,EAAsDhD,YAAY,CAACiD,WAAnE,CAAf;IACA,OAAO,IAAIxK,OAAJ,CACLuH,YAAY,CAACkD,YAAb,GAA4BL,MAAM,CAAC5b,GAD9B,EAEL+Y,YAAY,CAACkD,YAAb,GAA4BhD,aAAa,CAACC,OAAd,GACxB7R,IAAI,CAACoJ,GAAL,CAASpJ,IAAI,CAAC+O,GAAL,CAAS/O,IAAI,CAACgL,EAAL,GAAU,CAAV,GAAcyJ,QAAQ,GAAGzU,IAAI,CAACgL,EAAhB,GAAqB0G,YAAY,CAACmD,UAAzD,CAAT,CAHC,EAILhK,QAJK,CAII2J,SAAS,GAAG9C,YAAY,CAACmD,UAJ7B,CAAP;GATJ;;EAAA,mBAoBSC,wBApBT,GAoBE,kCAAgCP,MAAhC;IACE,IAAIQ,mBAAmB,GAAGpJ,SAAS,CAACC,KAAV,CAAgB2I,MAAM,CAAC7b,GAAvB,EAA4BgZ,YAAY,CAACgD,WAAzC,EAAsDhD,YAAY,CAACiD,WAAnE,CAA1B;IACA,IAAIK,oBAAoB,GAAGT,MAAM,CAAC5b,GAAlC;IACA,IAAIsc,CAAC,GAAG,IAAI,KAAZ;IACA,IAAIjF,CAAC,GAAGrE,SAAS,CAACC,KAAV,CAAgB5L,IAAI,CAACiL,GAAL,CAAS2G,aAAa,CAACM,OAAd,GAAwB6C,mBAAjC,CAAhB,EAAuE,CAACE,CAAxE,EAA2EA,CAA3E,CAAR;IACA,IAAIC,OAAO,GAAGxD,YAAY,CAACI,iBAAb,GAAiCkD,oBAAjC,GAAwDpD,aAAa,CAACM,OAApF;IACA,IAAIiD,QAAQ,GAAG,MAAMzD,YAAY,CAACI,iBAAnB,GAAuC9R,IAAI,CAACoJ,GAAL,CAAS,CAAC,IAAI4G,CAAL,KAAW,IAAIA,CAAf,CAAT,CAAtD;IACA,OAAO,IAAI7F,OAAJ,CAAY+K,OAAZ,EAAqBC,QAArB,CAAP;GA3BJ;;EAAA,mBAkCSC,wBAlCT,GAkCE,kCAAgCC,MAAhC;IACE,IAAIZ,QAAQ,GAAG,CAAC,IAAIzU,IAAI,CAACsV,IAAL,CAAUtV,IAAI,CAACuV,GAAL,CAASF,MAAM,CAAChL,CAAP,GAAWqH,YAAY,CAACI,iBAAjC,CAAV,CAAJ,GAAsE9R,IAAI,CAACgL,EAAL,GAAU,GAAjF,IACG4G,aAAa,CAACC,OADhC;IAEA,IAAI2D,SAAS,GAAGH,MAAM,CAACjL,CAAP,GAAWwH,aAAa,CAACC,OAAzB,GAAmCH,YAAY,CAACI,iBAAhE;IACA,OAAO,IAAIkB,MAAJ,CAAWyB,QAAX,EAAqBe,SAArB,CAAP;GAtCJ;;EAAA,mBA8CSC,WA9CT,GA8CE,qBAAmBlB,MAAnB,EAAmCrT,IAAnC;IACE,OAAO,KAAKoT,eAAL,CAAqBC,MAArB,EAA6B,KAAKrT,IAAlC,CAAP;GA/CJ;;EAAA;AAAA;;ICAawU,qBAAb;EAIE,+BAAYhe,WAAZ;IAFQ,gBAAA,GAAwB,EAAxB;IAGN,KAAKA,WAAL,GAAmBA,WAAW,CAACjB,GAAZ,CAAgB,UAAAkf,UAAU;MAAA,OAAI3C,MAAM,CAACM,OAAP,CAAeqC,UAAf,CAAJ;KAA1B,CAAnB;;;EALJ;;EAAA,OAQE/b,cARF,GAQE,wBAAelC,WAAf;IACE,KAAKA,WAAL,GAAmBA,WAAW,CAACjB,GAAZ,CAAgB,UAAAkf,UAAU;MAAA,OAAI3C,MAAM,CAACM,OAAP,CAAeqC,UAAf,CAAJ;KAA1B,CAAnB;GATJ;;EAAA,OAYEC,cAZF,GAYE,wBAAele,WAAf;;;IACEA,WAAW,CAACoB,OAAZ,CAAoB,UAAA6c,UAAU;MAAA,OAAI,KAAI,CAACje,WAAL,CAAiB6M,IAAjB,CAAsByO,MAAM,CAACM,OAAP,CAAeqC,UAAf,CAAtB,CAAJ;KAA9B;GAbJ;;EAAA,OAgBEE,MAhBF,GAgBE,gBAAOC,MAAP,EAAuBxQ,MAAvB;QAAuBA;MAAAA,SAAkB;;;IACvC,IAAI,KAAK5N,WAAL,CAAiBc,MAAjB,IAA2B,CAA/B,EAAkC;MAChC,OAAO,KAAKd,WAAL,CAAiBgY,KAAjB,EAAP;;;IAEF,IAAI9U,MAAM,GAAG,IAAb;;IACA,IAAI0K,MAAM,IAAI,IAAd,EAAoB;MAClB1K,MAAM,GAAGoY,MAAM,CAACM,OAAP,CAAe1Y,MAAf,CAAT;KADF,MAGK;MACHA,MAAM,GAAG,KAAKA,MAAd;;;IAEF,IAAImb,cAAc,GAAG1B,kBAAkB,CAACS,wBAAnB,CAA4Cla,MAA5C,CAArB;IACA,IAAIob,sBAAsB,GAAa,EAAvC;IACA,IAAIC,eAAe,GAAGtK,SAAS,CAACI,SAAV,CAAoB+J,MAApB,CAAtB;IACA,KAAKpe,WAAL,CAAiBoB,OAAjB,CAAyB,UAAA6c,UAAU;MACjC,IAAIO,KAAK,GAAG7B,kBAAkB,CAACS,wBAAnB,CAA4Ca,UAA5C,CAAZ;MACAO,KAAK,CAAC9L,CAAN,IAAW2L,cAAc,CAAC3L,CAA1B;MACA8L,KAAK,CAAC7L,CAAN,IAAW0L,cAAc,CAAC1L,CAA1B;MAEA,IAAID,CAAC,GAAG8L,KAAK,CAAC9L,CAAd;MACA,IAAIC,CAAC,GAAG6L,KAAK,CAAC7L,CAAd;MACA6L,KAAK,CAAC9L,CAAN,GAAWA,CAAC,GAAGpK,IAAI,CAAC+K,GAAL,CAASkL,eAAT,CAAJ,GAAgC5L,CAAC,GAAGrK,IAAI,CAACiL,GAAL,CAASgL,eAAT,CAA/C;MACAC,KAAK,CAAC7L,CAAN,GAAWD,CAAC,GAAGpK,IAAI,CAACiL,GAAL,CAASgL,eAAT,CAAJ,GAAgC5L,CAAC,GAAGrK,IAAI,CAAC+K,GAAL,CAASkL,eAAT,CAA/C;MAEAD,sBAAsB,CAACzR,IAAvB,CAA4B8P,kBAAkB,CAACe,wBAAnB,CAC1B,IAAIjL,OAAJ,CAAY4L,cAAc,CAAC3L,CAAf,GAAmB8L,KAAK,CAAC9L,CAArC,EAAwC2L,cAAc,CAAC1L,CAAf,GAAmB6L,KAAK,CAAC7L,CAAjE,CAD0B,CAA5B;KAVF;IAaA,OAAO2L,sBAAP;GA3CJ;;EAAA,OA8CE9I,SA9CF,GA8CE,mBAAU0G,MAAV,EAA2BtO,MAA3B;QAA2BA;MAAAA,SAAkB;;;IAC3C,IAAI,KAAK5N,WAAL,CAAiBc,MAAjB,IAA2B,CAA/B,EAAkC;MAChC,OAAO,EAAP;;;IAEF,IAAI2d,SAAS,GAAGnD,MAAM,CAACM,OAAP,CAAeM,MAAf,CAAhB;IACA,IAAIwC,SAAS,GAAG,IAAhB;;IACA,IAAI9Q,MAAM,IAAI,IAAd,EAAoB;MAClB8Q,SAAS,GAAGpD,MAAM,CAACM,OAAP,CAAehO,MAAf,CAAZ;KADF,MAGK;MACH8Q,SAAS,GAAG,KAAKxb,MAAjB;;;IAGF,IAAIob,sBAAsB,GAAa,EAAvC;IACA,IAAIK,gBAAgB,GAAGF,SAAS,CAACxd,GAAV,GAAgByd,SAAS,CAACzd,GAAjD;IACA,IAAI2d,gBAAgB,GAAGH,SAAS,CAACzd,GAAV,GAAgB0d,SAAS,CAAC1d,GAAjD;IACA,KAAKhB,WAAL,CAAiBoB,OAAjB,CAAyB,UAAA6c,UAAU;MACjCK,sBAAsB,CAACzR,IAAvB,CAA4B,IAAIyO,MAAJ,CAAW2C,UAAU,CAACjd,GAAX,GAAiB4d,gBAA5B,EAC1BX,UAAU,CAAChd,GAAX,GAAiB0d,gBADS,CAA5B;KADF;IAIA,OAAOL,sBAAP;GAlEJ;;EAAA,OAqEE5e,KArEF,GAqEE,eAAMA,MAAN,EAAqBkO,MAArB;QAAqBA;MAAAA,SAAkB;;;IACrC,IAAI,KAAK5N,WAAL,CAAiBc,MAAjB,IAA2B,CAA/B,EAAkC;MAChC,OAAO,KAAKd,WAAL,CAAiBgY,KAAjB,EAAP;;;IAEF,IAAI9U,MAAM,GAAG,IAAb;;IACA,IAAI0K,MAAM,IAAI,IAAd,EAAoB;MAClB1K,MAAM,GAAGoY,MAAM,CAACM,OAAP,CAAehO,MAAf,CAAT;KADF,MAGK;MACH1K,MAAM,GAAG,KAAKA,MAAd;;;IAGF,IAAImb,cAAc,GAAG1B,kBAAkB,CAACS,wBAAnB,CAA4Cla,MAA5C,CAArB;IACA,IAAIob,sBAAsB,GAAa,EAAvC;IACA,KAAKte,WAAL,CAAiBoB,OAAjB,CAAyB,UAAA6c,UAAU;MACjC,IAAIO,KAAK,GAAG7B,kBAAkB,CAACS,wBAAnB,CAA4Ca,UAA5C,CAAZ;MACAO,KAAK,CAAC9L,CAAN,IAAW2L,cAAc,CAAC3L,CAA1B;MACA8L,KAAK,CAAC7L,CAAN,IAAW0L,cAAc,CAAC1L,CAA1B;MACA6L,KAAK,CAAC9L,CAAN,IAAWhT,MAAX;MACA8e,KAAK,CAAC7L,CAAN,IAAWjT,MAAX;MACA4e,sBAAsB,CAACzR,IAAvB,CAA4B8P,kBAAkB,CAACe,wBAAnB,CAC1B,IAAIjL,OAAJ,CAAY4L,cAAc,CAAC3L,CAAf,GAAmB8L,KAAK,CAAC9L,CAArC,EAAwC2L,cAAc,CAAC1L,CAAf,GAAmB6L,KAAK,CAAC7L,CAAjE,CAD0B,CAA5B;KANF;IASA,OAAO2L,sBAAP;GA5FJ;;EAAA;IAAA;IAAA,KA+FE;MACE,IAAI,KAAKte,WAAL,CAAiBc,MAAjB,IAA2B,CAA/B,EAAkC;QAChC,OAAO,IAAP;;;MAEF,IAAIoC,MAAM,GAAG,IAAIoY,MAAJ,CAAW,CAAX,EAAc,CAAd,CAAb;;MACA,KAAK,IAAI/E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKvW,WAAL,CAAiBc,MAArC,EAA6C,EAAEyV,CAA/C,EAAkD;QAChDrT,MAAM,CAAClC,GAAP,IAAc,KAAKhB,WAAL,CAAiBuW,CAAjB,EAAoBvV,GAAlC;QACAkC,MAAM,CAACjC,GAAP,IAAc,KAAKjB,WAAL,CAAiBuW,CAAjB,EAAoBtV,GAAlC;;;MAEFiC,MAAM,CAAClC,GAAP,IAAc,KAAKhB,WAAL,CAAiBc,MAA/B;MACAoC,MAAM,CAACjC,GAAP,IAAc,KAAKjB,WAAL,CAAiBc,MAA/B;MACA,OAAOoC,MAAP;;;;EA1GJ;AAAA;;;;"}
1
+ {"version":3,"sources":["../src/context/Map4dContext.ts","../src/context/markerClusterContext.ts","../src/components/MFBuilding.tsx","../src/components/MFBuildingOverlay.tsx","../src/tool/variableTool.ts","../src/components/MFCircle.tsx","../src/components/MFDataLayer.tsx","../src/components/MFDirectionsRenderer.tsx","../src/components/MFGroundOverlay.tsx","../src/components/MFImageOverlay.tsx","../src/components/MFMap.tsx","../src/components/MFMarker.tsx","../src/components/MFMarkerCluster.tsx","../src/components/MFPOI.tsx","../src/components/MFPOIOverlay.tsx","../src/components/MFPolygon.tsx","../src/components/MFPolyline.tsx","../src/components/MFTileOverlay.tsx","../src/engine/Vector2.ts","../src/engine/MathUtils.ts","../src/engine/Vector3.ts","../src/engine/Matrix.ts","../src/engine/Color.ts","../src/models/MapConstants.ts","../src/models/Map4dObject.ts","../src/models/LatLng.ts","../src/map/ProjectionMercator.ts","../src/ultils/CoordinateTransformer.ts"],"names":["createContext","_a","useContext","useRef","useEffect","_b","_c","_d","React","Ac","Bc"],"mappings":"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","file":"index.modern.js","sourcesContent":["import { createContext } from 'react';\r\n\r\nexport const defaultCt = {\r\n map: null as any,\r\n}\r\nexport const Map4dContext = createContext(defaultCt)","import { createContext } from 'react';\r\n\r\nexport const markerClusterDefaultContext = {\r\n addMarker: null as unknown as (marker: map4d.Marker)=>void,\r\n removeMarker: null as unknown as (marker: map4d.Marker)=>void,\r\n}\r\nexport const MarkerClusterContext = createContext(markerClusterDefaultContext)","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface BuildingProps {\r\n position?: map4d.ILatLng\r\n name?: string\r\n scale?: number\r\n bearing?: number\r\n elevation?: number\r\n height?: number\r\n model?: string\r\n texture?: string\r\n coordinates?: map4d.ILatLng[]\r\n zIndex?: number\r\n visible?: boolean\r\n draggable?: boolean\r\n clickable?: boolean\r\n selected?: boolean\r\n growUp?: boolean\r\n map?: map4d.Map\r\n onCreated?: (building: map4d.Building) => void\r\n}\r\nconst MFBuilding = (props: BuildingProps) => {\r\n const {\r\n position,\r\n name,\r\n scale = 1,\r\n bearing = 0,\r\n elevation = 0,\r\n height = 1,\r\n model,\r\n texture,\r\n coordinates,\r\n visible = true,\r\n draggable = false,\r\n clickable = true,\r\n selected = false,\r\n growUp = true,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const buildingRef = useRef(null as unknown as map4d.Building)\r\n\r\n useEffect(() => {\r\n if (theMap && !buildingRef.current && ((coordinates && coordinates?.length > 0) || model)) {\r\n let option = {\r\n position: position || { lat: 10.793113, lng: 106.720739 },\r\n name: name,\r\n scale: scale,\r\n bearing: bearing,\r\n elevation: elevation,\r\n height: height,\r\n model: model,\r\n texture: texture,\r\n coordinates: coordinates,\r\n visible: visible,\r\n draggable: draggable,\r\n clickable: clickable,\r\n selected: selected,\r\n growUp: growUp\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n buildingRef.current = new map4d.Building(option)\r\n buildingRef.current?.setMap(theMap)\r\n onCreated && onCreated(buildingRef.current)\r\n }\r\n }, [theMap, position, coordinates, model])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n buildingRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n buildingRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n buildingRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n buildingRef.current?.setPosition(position as map4d.ILatLng)\r\n }, [position])\r\n useEffect(() => {\r\n buildingRef.current?.setName(name)\r\n }, [name])\r\n useEffect(() => {\r\n buildingRef.current?.setScale(scale)\r\n }, [scale])\r\n useEffect(() => {\r\n buildingRef.current?.setBearing(bearing)\r\n }, [bearing])\r\n useEffect(() => {\r\n buildingRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n buildingRef.current?.setHeight(height)\r\n }, [height])\r\n useEffect(() => {\r\n buildingRef.current?.setModel(model)\r\n }, [model])\r\n useEffect(() => {\r\n buildingRef.current?.setTexture(texture)\r\n }, [texture])\r\n useEffect(() => {\r\n buildingRef.current?.setCoordinates(coordinates)\r\n }, [coordinates])\r\n useEffect(() => {\r\n buildingRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n buildingRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n buildingRef.current?.setClickable(clickable)\r\n }, [clickable])\r\n useEffect(() => {\r\n buildingRef.current?.setSelected(selected)\r\n }, [selected])\r\n useEffect(() => {\r\n buildingRef.current?.setGrowUp(growUp)\r\n }, [growUp])\r\n return null\r\n}\r\nexport default MFBuilding\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface BuildingOverlayProps {\r\n getUrl: (x: number, y: number, zoom: number) => any\r\n parserData: (response: any) => any\r\n prefixId?: string\r\n visible?: boolean\r\n map?: map4d.Map\r\n onCreated?: (buildingOverlay: map4d.BuildingOverlay) => void\r\n}\r\nconst MFBuildingOverlay = (props: BuildingOverlayProps) => {\r\n const {\r\n getUrl,\r\n visible,\r\n parserData,\r\n prefixId,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const buildingOverlayRef = useRef<map4d.BuildingOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n buildingOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n let option = {\r\n getUrl: getUrl || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n parserData: parserData,\r\n prefixId: prefixId\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n buildingOverlayRef.current = new map4d.BuildingOverlay(option)\r\n buildingOverlayRef.current?.setMap(theMap as map4d.Map)\r\n onCreated && onCreated(buildingOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !buildingOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n buildingOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n buildingOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n buildingOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [getUrl, parserData, prefixId, visible])\r\n return null\r\n}\r\nexport default MFBuildingOverlay\r\n","export class VariableTool {\r\n static hasValue = (variable: any) => {\r\n if (variable != undefined && variable != null) {\r\n return true\r\n }\r\n return false\r\n }\r\n}","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\nimport { VariableTool } from '../tool';\r\n\r\ninterface CircleProps {\r\n center: map4d.ILatLng\r\n radius: number\r\n fillColor?: string\r\n fillOpacity?: number\r\n visible?: boolean\r\n strokeColor?: string\r\n strokeWidth?: number\r\n draggable?: boolean\r\n zIndex?: number\r\n elevation?: number\r\n clickable?: boolean\r\n map?: map4d.Map\r\n onCreated?: (circle: map4d.Circle) => void,\r\n onClick?: (args: any) => void\r\n}\r\n\r\nconst MFCircle = (props: CircleProps) => {\r\n const {\r\n center,\r\n radius,\r\n fillColor=\"#0000FF\",\r\n fillOpacity = 1,\r\n visible = true,\r\n strokeColor = \"#00FF00\",\r\n strokeWidth,\r\n draggable,\r\n zIndex,\r\n elevation,\r\n clickable,\r\n map,\r\n onCreated,\r\n onClick\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const circleRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !circleRef.current) {\r\n let option = {\r\n center: center || { lat: 10.793113, lng: 106.720739 },\r\n radius: radius,\r\n fillColor: fillColor,\r\n fillOpacity: fillOpacity,\r\n visible: visible,\r\n strokeColor: strokeColor,\r\n strokeWidth: strokeWidth,\r\n draggable: draggable,\r\n zIndex: zIndex,\r\n elevation: elevation,\r\n clickable: clickable,\r\n }\r\n Object.keys(option).forEach((key) => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n circleRef.current = new map4d.Circle(option)\r\n circleRef.current?.setMap(theMap)\r\n onCreated && onCreated(circleRef.current)\r\n circleRef.current.onClick = onClick\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (circleRef.current) {\r\n circleRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n circleRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n circleRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n circleRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (VariableTool.hasValue(center)) {\r\n circleRef.current?.setCenter(center)\r\n }\r\n\r\n }, [center])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(radius)) {\r\n circleRef.current?.setRadius(radius as number)\r\n }\r\n }, [radius])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(fillColor)) {\r\n circleRef.current?.setFillColor(fillColor as string)\r\n }\r\n }, [fillColor])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(fillOpacity)) {\r\n circleRef.current?.setFillOpacity(fillOpacity as number)\r\n }\r\n }, [fillOpacity])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(visible)) {\r\n circleRef.current?.setVisible(visible as boolean)\r\n }\r\n }, [visible])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(strokeColor)) {\r\n circleRef.current?.setStrokeColor(strokeColor as string)\r\n }\r\n }, [strokeColor])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(strokeWidth)) {\r\n circleRef.current?.setStrokeWidth(strokeWidth as number)\r\n }\r\n }, [strokeWidth])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(draggable)) {\r\n circleRef.current?.setDraggable(draggable as boolean)\r\n }\r\n }, [draggable])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(zIndex)) {\r\n circleRef.current?.setZIndex(zIndex as number)\r\n }\r\n }, [zIndex])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(elevation)) {\r\n circleRef.current?.setElevation(elevation as number)\r\n }\r\n }, [elevation])\r\n useEffect(() => {\r\n if (VariableTool.hasValue(clickable)) {\r\n circleRef.current?.setClickable(clickable as boolean)\r\n }\r\n }, [clickable])\r\n\r\n return null\r\n}\r\n\r\nexport default MFCircle\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface DataLayerProps {\r\n geoJsonString: string\r\n map?: map4d.Map\r\n onCreated?: (dataLeyer?: map4d.Data.Feature[]) => void\r\n}\r\n\r\nconst MFDataLayer = (props: DataLayerProps) => {\r\n const {\r\n geoJsonString,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const dataLayerRef = useRef<map4d.Data.Feature[]>()\r\n\r\n\r\n const reCreate = () => {\r\n dataLayerRef.current?.forEach((feature) => {\r\n theMap?.data?.remove(feature)\r\n })\r\n dataLayerRef.current = theMap?.data?.addGeoJson(geoJsonString)\r\n onCreated && onCreated(dataLayerRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n return () => {\r\n dataLayerRef.current?.forEach((feature) => {\r\n theMap?.data?.remove(feature)\r\n })\r\n }\r\n }, [])\r\n return null\r\n}\r\nexport default MFDataLayer\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface DirectionsRendererProps {\r\n routes?: string | object | map4d.RouteOptions | map4d.ILatLng[][]\r\n\r\n /**\r\n * @deprecated The `directions` prop is no longer support, which is subject to removal in a future versions. Use\r\n * the `routes` prop instead.\r\n */\r\n directions?: string\r\n activedIndex?: number\r\n\r\n activeStrokeWidth?: number\r\n activeStrokeColor?: string\r\n activeOutlineWidth?: number\r\n activeOutlineColor?: string\r\n activeStrokePattern?: map4d.PatternItem\r\n\r\n inactiveStrokeWidth?: number\r\n inactiveStrokeColor?: string\r\n inactiveOutlineWidth?: number\r\n inactiveOutlineColor?: string\r\n inactiveStrokePattern?: map4d.PatternItem\r\n\r\n originMarkerOptions?: map4d.MarkerOptions\r\n destinationMarkerOptions?: map4d.MarkerOptions\r\n waypointMarkerOptions?: map4d.MarkerOptions[]\r\n\r\n onMarkerDragEnd?: Function,\r\n\r\n map?: map4d.Map,\r\n onCreated?: (directionsRenderer?: map4d.DirectionsRenderer) => void\r\n onHover?: (args: any) => void\r\n onMouseOut?: (args: any) => void\r\n onMouseOver?: (args: any) => void\r\n onMouseMove?: (args: any) => void\r\n}\r\n\r\nconst MFDirectionsRenderer = (props: DirectionsRendererProps) => {\r\n const {\r\n routes,\r\n activedIndex,\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n activeStrokePattern,\r\n inactiveStrokeWidth,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n inactiveStrokePattern,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd,\r\n map,\r\n onHover,\r\n onCreated,\r\n onMouseOut,\r\n onMouseOver,\r\n onMouseMove\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const directionRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !directionRef.current) {\r\n let option = {\r\n routes,\r\n activedIndex,\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n activeStrokePattern,\r\n inactiveStrokeWidth,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n inactiveStrokePattern,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n directionRef.current = new map4d.DirectionsRenderer(option)\r\n directionRef.current?.setMap(theMap)\r\n directionRef.current.onHover = props.onHover\r\n directionRef.current.onMouseOut = onMouseOut\r\n directionRef.current.onMouseOver = onMouseOver\r\n directionRef.current.onMouseMove = onMouseMove\r\n onCreated && onCreated(directionRef.current)\r\n }\r\n return () => {\r\n directionRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onMouseOut = onMouseOut\r\n }\r\n }, [onMouseOut])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onMouseOver = onMouseOver\r\n }\r\n }, [onMouseOver])\r\n\r\n useEffect(() => {\r\n if (directionRef.current) {\r\n directionRef.current.onMouseMove = onMouseMove\r\n }\r\n }, [onMouseMove])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n directionRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n directionRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n directionRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n routes != undefined && directionRef.current?.setRoutes(routes)\r\n }, [routes])\r\n useEffect(() => {\r\n activedIndex != undefined && directionRef.current?.setActivedIndex(activedIndex)\r\n }, [activedIndex])\r\n useEffect(() => {\r\n activeStrokePattern != undefined && directionRef.current?.setActiveStrokePattern(activeStrokePattern)\r\n }, [activeStrokePattern])\r\n useEffect(() => {\r\n inactiveStrokePattern != undefined && directionRef.current?.setInactiveStrokePattern(inactiveStrokePattern)\r\n }, [inactiveStrokePattern])\r\n useEffect(() => {\r\n let option = {\r\n routes,\r\n activedIndex,\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n activeStrokePattern,\r\n inactiveStrokeWidth,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n inactiveStrokePattern,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n directionRef.current?.setOptions(option)\r\n },\r\n [\r\n activeStrokeWidth,\r\n activeStrokeColor,\r\n activeOutlineWidth,\r\n activeOutlineColor,\r\n inactiveStrokeColor,\r\n inactiveOutlineWidth,\r\n inactiveOutlineColor,\r\n originMarkerOptions,\r\n destinationMarkerOptions,\r\n waypointMarkerOptions,\r\n onMarkerDragEnd\r\n ]\r\n )\r\n\r\n\r\n return null\r\n}\r\nexport default MFDirectionsRenderer\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface GroundOverlayProps extends map4d.GroundOverlayOptions {\r\n map?: map4d.Map\r\n onCreated?: (groundOverlay: map4d.GroundOverlay) => void\r\n}\r\n\r\nconst MFGroundOverlay = (props: GroundOverlayProps) => {\r\n const {\r\n bounds,\r\n getUrl,\r\n override,\r\n visible,\r\n zIndex,\r\n opacity,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const groundOverlayRef = useRef<map4d.GroundOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n groundOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n let option = {\r\n bounds,\r\n getUrl: getUrl,\r\n override,\r\n visible: visible,\r\n zIndex: zIndex,\r\n opacity: opacity\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n groundOverlayRef.current = new map4d.TileOverlay(option)\r\n groundOverlayRef.current?.setMap(theMap as map4d.Map)\r\n onCreated && onCreated(groundOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !groundOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n groundOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n groundOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n groundOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [bounds, getUrl, override])\r\n useEffect(() => {\r\n visible != undefined && groundOverlayRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n zIndex != undefined && groundOverlayRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n opacity != undefined && groundOverlayRef.current?.setOpacity(opacity)\r\n }, [opacity])\r\n return null\r\n}\r\nexport default MFGroundOverlay\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface ImageOverlayProps extends map4d.ImageOverlayOptions {\r\n map?: map4d.Map,\r\n onCreated?: (imageOverlay: map4d.ImageOverlay) => void\r\n}\r\n\r\nconst MFImageOverlay = (props: ImageOverlayProps) => {\r\n const {\r\n url,\r\n bounds,\r\n visible,\r\n zIndex,\r\n opacity,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const imageOverlayRef = useRef<map4d.ImageOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n imageOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n let option = {\r\n url,\r\n bounds: bounds,\r\n visible: visible,\r\n zIndex: zIndex,\r\n opacity: opacity\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n imageOverlayRef.current = new map4d.ImageOverlay(option)\r\n imageOverlayRef.current?.setMap(theMap as map4d.Map)\r\n onCreated && onCreated(imageOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !imageOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n imageOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n imageOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n imageOverlayRef.current?.setMap(null as unknown as map4d.Map)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [url, bounds, zIndex])\r\n useEffect(() => {\r\n visible != undefined && imageOverlayRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n opacity != undefined && imageOverlayRef.current?.setOpacity(opacity)\r\n }, [opacity])\r\n return null\r\n}\r\nexport default MFImageOverlay\r\n","import React, { Fragment, useEffect, useRef, useState } from 'react';\r\nimport { Map4dContext } from '../context';\r\nimport { MapEventEnum } from '../enum';\r\n\r\nexport function addLibrary(url: string, id: string) {\r\n let scriptId = `script_${id}`\r\n let exist = document.getElementById(scriptId)\r\n if (exist) {\r\n return null\r\n }\r\n const script = document.createElement('script')\r\n script.src = url;\r\n script.defer = true;\r\n script.id = scriptId\r\n document.body.appendChild(script)\r\n return script\r\n}\r\n\r\nconst createId = () => {\r\n var dt = new Date().getTime();\r\n var uuid = 'xxxxxxxx_xxxx_4xxx_yxxx_xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = (dt + Math.random() * 16) % 16 | 0;\r\n dt = Math.floor(dt / 16);\r\n return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);\r\n });\r\n return uuid;\r\n}\r\ninterface MapOptions {\r\n center?: any\r\n zoom?: number\r\n minZoom?: number\r\n maxZoom?: number\r\n maxNativeZoom?: number\r\n geolocate?: boolean\r\n tilt?: number\r\n bearing?: number\r\n controls?: boolean\r\n mapType?: any\r\n controlOptions?: any\r\n restrictionBounds?: any\r\n shouldChangeMapMode?: Function\r\n cooperativeGestures?: boolean\r\n}\r\ninterface MapProps {\r\n mapid?: string\r\n options: MapOptions,\r\n zoom?: number,\r\n bearing?: number,\r\n center?: any,\r\n tilt?: number\r\n version: string\r\n accessKey: string,\r\n environment?: \"dev\" | \"test\" | undefined | null,\r\n sdkDomain?: string | null\r\n onMapReady?: (map: any, key?: string) => void\r\n onClickLocation?: (args: any) => void\r\n onRightClickLocation?: (args: any) => void\r\n onCameraChanging?: (args: any) => void\r\n onTilesLoaded?: (args: any) => void\r\n children?: any\r\n}\r\n\r\nconst MFMap = (props: MapProps) => {\r\n\r\n const _options = useRef({\r\n options: props.options,\r\n mapId: props.mapid,\r\n version: props.version,\r\n environment: props.environment,\r\n accessKey: props.accessKey,\r\n sdkDomain: props.sdkDomain\r\n })\r\n\r\n const callback = useRef(`callback`)\r\n const mapDomRef = useRef<any>()\r\n const mapRef = useRef<map4d.Map>()\r\n const scriptElement = useRef<HTMLScriptElement>()\r\n const url = useRef<string>()\r\n const events = useRef<any[]>([])\r\n const { zoom, bearing, center, tilt } = props\r\n\r\n const [map, setMap] = useState<map4d.Map>()\r\n\r\n useEffect(() => {\r\n if (map) {\r\n let camera = map.getCamera()\r\n if (zoom != undefined && zoom != null) {\r\n camera.setZoom(zoom)\r\n }\r\n if (bearing != undefined && bearing != null) {\r\n camera.setBearing(bearing)\r\n }\r\n if (center != undefined && center != null) {\r\n camera.setTarget(center)\r\n }\r\n if (tilt != undefined && tilt != null) {\r\n camera.setTilt(center)\r\n }\r\n map.moveCamera(camera)\r\n }\r\n }, [zoom, bearing, center, map])\r\n\r\n\r\n useEffect(() => {\r\n const id = createId()\r\n callback.current = `callback_${id}`\r\n const createCallback = () => {\r\n window[callback.current] = () => {\r\n mapRef.current = new window.map4d.Map(mapDomRef.current, _options.current.options)\r\n if (props.onMapReady) {\r\n props.onMapReady(mapRef.current, id)\r\n }\r\n registerEvent()\r\n setMap(mapRef.current)\r\n }\r\n }\r\n let domain = `https://api${props.environment ? \"-\" + _options.current.environment : \"\"}.map4d.vn`\r\n if (_options.current.sdkDomain) {\r\n domain = _options.current.sdkDomain\r\n }\r\n let urlNew = `${domain}/sdk/map/js?version=${_options.current.version}&key=${_options.current.accessKey}&callback=${callback.current}`\r\n if (_options.current.mapId) {\r\n urlNew += `&mapId=${_options.current.mapId}`\r\n }\r\n createCallback()\r\n let script = addLibrary(urlNew, id)\r\n if (script) {\r\n scriptElement.current = script\r\n }\r\n url.current = urlNew\r\n return () => {\r\n const destroy = () => {\r\n delete window[callback.current]\r\n if (scriptElement.current != null) {\r\n scriptElement.current.remove()\r\n }\r\n events.current?.forEach((t: any) => {\r\n t?.remove()\r\n })\r\n mapRef.current?.destroy()\r\n url.current = undefined\r\n }\r\n destroy()\r\n }\r\n }, [props.environment, props.version, props.accessKey])\r\n\r\n useEffect(() => {\r\n props.options?.mapType != undefined && mapRef.current?.setMapType(props.options?.mapType)\r\n }, [props.options?.mapType])\r\n\r\n useEffect(() => {\r\n if (props.options?.center != undefined) {\r\n let camera = mapRef.current?.getCamera()\r\n camera?.setTarget(props.options?.center)\r\n mapRef.current?.moveCamera(camera)\r\n }\r\n props.options?.mapType != undefined && mapRef.current?.setMapType(props.options?.mapType)\r\n }, [props.options?.center])\r\n\r\n const registerEvent = () => {\r\n let eventClickMarker = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n args.marker?.onClick && args.marker?.onClick(args)\r\n }, {\r\n marker: true\r\n })\r\n let eventRightClickMarker = mapRef.current?.addListener(MapEventEnum.rightClick, (args: any) => {\r\n args.marker?.onRightClick && args.marker?.onRightClick(args)\r\n }, {\r\n marker: true\r\n })\r\n let eventDragEndMarker = mapRef.current?.addListener(MapEventEnum.dragEnd, (args: any) => {\r\n args.marker?.onDragEnd && args.marker?.onDragEnd(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventHoverMarker = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.marker?.onHover && args.marker?.onHover(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventHoverPolygon = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.polygon?.onHover && args.polygon?.onHover(args)\r\n }, {\r\n polygon: true\r\n })\r\n\r\n let eventHoverPolyline = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.polyline?.onHover && args.polyline?.onHover(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventHoverDirection = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.renderer?.onHover && args.renderer?.onHover(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventClickPolyline = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n args.polyline?.onClick && args.polyline?.onClick(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseOutDirection = mapRef.current?.addListener(MapEventEnum.mouseOut, (args: any) => {\r\n args.renderer?.onMouseOut && args.renderer?.onMouseOut(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventMouseOverDirection = mapRef.current?.addListener(MapEventEnum.mouseOver, (args: any) => {\r\n args.renderer?.onMouseOver && args.renderer?.onMouseOver(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventMouseMoveDirection = mapRef.current?.addListener(MapEventEnum.mouseMove, (args: any) => {\r\n args.renderer?.onMouseMove && args.renderer?.onMouseMove(args)\r\n }, {\r\n directions: true\r\n })\r\n\r\n let eventMouseOutPolyline = mapRef.current?.addListener(MapEventEnum.mouseOut, (args: any) => {\r\n args.polyline?.onMouseOut && args.polyline?.onMouseOut(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseOverPolyline = mapRef.current?.addListener(MapEventEnum.mouseOver, (args: any) => {\r\n args.polyline?.onMouseOver && args.polyline?.onMouseOver(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseMovePolyline = mapRef.current?.addListener(MapEventEnum.mouseMove, (args: any) => {\r\n args.polyline?.onMouseMove && args.polyline?.onMouseMove(args)\r\n }, {\r\n polyline: true\r\n })\r\n\r\n let eventMouseOutMarker = mapRef.current?.addListener(MapEventEnum.mouseOut, (args: any) => {\r\n args.marker?.onMouseOut && args.marker?.onMouseOut(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventMouseOverMarker = mapRef.current?.addListener(MapEventEnum.mouseOver, (args: any) => {\r\n args.marker?.onMouseOver && args.marker?.onMouseOver(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventMouseMoveMarker = mapRef.current?.addListener(MapEventEnum.mouseMove, (args: any) => {\r\n args.marker?.onMouseMove && args.marker?.onMouseMove(args)\r\n }, {\r\n marker: true\r\n })\r\n\r\n let eventClickPoi = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n args.poi?.onClick && args.poi?.onClick(args)\r\n }, {\r\n poi: true\r\n })\r\n\r\n let eventHoverPoi = mapRef.current?.addListener(MapEventEnum.hover, (args: any) => {\r\n args.poi?.onHover && args.poi?.onHover(args)\r\n }, {\r\n poi: true\r\n })\r\n\r\n events.current = events.current.concat([\r\n eventClickMarker,\r\n eventRightClickMarker,\r\n eventDragEndMarker,\r\n eventHoverMarker,\r\n eventHoverPolygon,\r\n eventHoverPolyline,\r\n eventHoverDirection,\r\n eventClickPolyline,\r\n eventMouseOutDirection,\r\n eventMouseOverDirection,\r\n eventMouseMoveDirection,\r\n eventMouseOutPolyline,\r\n eventMouseOverPolyline,\r\n eventMouseMovePolyline,\r\n eventMouseOutMarker,\r\n eventMouseOverMarker,\r\n eventMouseMoveMarker,\r\n eventClickPoi,\r\n eventHoverPoi,\r\n mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n args.circle?.onClick && args.circle?.onClick(args)\r\n args.polygon?.onClick?.(args)\r\n }, {\r\n circle: true,\r\n polygon: true\r\n })\r\n ])\r\n if (props.onClickLocation) {\r\n let onClickLocation = mapRef.current?.addListener(MapEventEnum.click, (args: any) => {\r\n props.onClickLocation && props.onClickLocation(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onClickLocation)\r\n }\r\n if (props.onRightClickLocation) {\r\n let onRightClickLocation = mapRef.current?.addListener(MapEventEnum.rightClick, (args: any) => {\r\n props.onRightClickLocation && props.onRightClickLocation(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onRightClickLocation)\r\n }\r\n if (props.onTilesLoaded) {\r\n let onTilesLoaded = mapRef.current?.addListener(MapEventEnum.tilesLoaded, (args: any) => {\r\n props.onTilesLoaded && props.onTilesLoaded(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onTilesLoaded)\r\n }\r\n if (props.onCameraChanging) {\r\n let onCameraChanging = mapRef.current?.addListener(MapEventEnum.cameraChanging, (args: any) => {\r\n props.onCameraChanging && props.onCameraChanging(args)\r\n }, {\r\n location: true\r\n })\r\n events.current.push(onCameraChanging)\r\n }\r\n }\r\n let newContext = {\r\n map: map\r\n }\r\n return (\r\n <Fragment>\r\n <div\r\n style={{ width: '100%', height: '100%', display: 'block' }}\r\n ref={mapDomRef}\r\n >\r\n </div>\r\n <Map4dContext.Provider value={newContext}>\r\n\r\n {\r\n props.children\r\n }\r\n </Map4dContext.Provider>\r\n </Fragment>\r\n\r\n );\r\n}\r\n\r\nexport default MFMap;\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext, MarkerClusterContext } from '../context';\r\nimport { VariableTool } from '../tool';\r\n\r\ninterface IconProps {\r\n width: number,\r\n height: number,\r\n url: string\r\n}\r\ninterface MarkerProps {\r\n position: any\r\n visible?: boolean\r\n anchor?: any\r\n labelAnchor?: any\r\n icon?: IconProps\r\n elevation?: number\r\n rotation?: number\r\n title?: string\r\n snippet?: string\r\n windowAnchor?: any\r\n zIndex?: number\r\n label?: string | map4d.MarkerLabelOptions\r\n draggable?: boolean\r\n iconView?: string | Node\r\n clickable?: boolean\r\n map?: any,\r\n infoWindow?: string | Node\r\n infoContents?: string | Node\r\n showInfoWindow?: boolean\r\n onClick?: (args: any) => void\r\n onCreated?: (marker: any) => void\r\n onRightClick?: (args: any) => void\r\n onDragEnd?: (args: any) => void\r\n onHover?: (args: any) => void\r\n onMouseOut?:(args: any)=> void\r\n onMouseOver?:(args: any)=> void\r\n onMouseMove?: (args: any)=> void\r\n}\r\n\r\nconst MFMarker = (props: MarkerProps) => {\r\n const {\r\n position,\r\n visible = true,\r\n anchor,\r\n labelAnchor,\r\n icon,\r\n elevation,\r\n rotation,\r\n title,\r\n snippet,\r\n windowAnchor,\r\n zIndex,\r\n label,\r\n draggable,\r\n iconView,\r\n clickable,\r\n map,\r\n onCreated,\r\n onClick,\r\n onRightClick,\r\n onDragEnd,\r\n onHover,\r\n onMouseOut,\r\n onMouseOver,\r\n onMouseMove\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const markerClusterContext = useContext(MarkerClusterContext)\r\n\r\n const theMap = map || map4dContext.map\r\n const markerRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !markerRef.current) {\r\n let markerLabel = typeof label == \"string\" ? label : new map4d.MarkerLabel(label)\r\n let option = {\r\n position: position || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n anchor: anchor,\r\n labelAnchor: labelAnchor,\r\n elevation: elevation,\r\n rotation: rotation,\r\n title: title,\r\n snippet: snippet,\r\n windowAnchor: windowAnchor,\r\n zIndex: zIndex,\r\n label: markerLabel,\r\n draggable: draggable,\r\n iconView: iconView,\r\n clickable: clickable\r\n } as map4d.MarkerOptions\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n if (icon) {\r\n let iconT = new map4d.Icon(icon.width, icon.height, icon.url)\r\n option.icon = iconT\r\n }\r\n markerRef.current = new map4d.Marker(option)\r\n if (props.infoWindow != undefined) {\r\n markerRef.current.setInfoWindow(props.infoWindow)\r\n }\r\n if (props.infoContents != undefined) {\r\n markerRef.current.setInfoContents(props.infoContents)\r\n }\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current.setMap(theMap)\r\n }\r\n if (props.showInfoWindow != undefined) {\r\n props.showInfoWindow ? markerRef.current?.showInfoWindow() : markerRef.current?.hideInfoWindow()\r\n }\r\n markerRef.current.onClick = onClick\r\n markerRef.current.onRightClick = props.onRightClick\r\n markerRef.current.onDragEnd = props.onDragEnd\r\n markerRef.current.onHover = props.onHover\r\n markerRef.current.onMouseOut = onMouseOut\r\n markerRef.current.onMouseOver = onMouseOver\r\n markerRef.current.onMouseMove = onMouseMove\r\n onCreated && onCreated(markerRef.current)\r\n markerClusterContext?.addMarker && markerClusterContext?.addMarker(markerRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current?.setMap(theMap)\r\n }\r\n }\r\n return () => {\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current?.setMap(null)\r\n }\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n if (!markerClusterContext?.addMarker) {\r\n markerRef.current?.setMap(null)\r\n }\r\n markerRef.current && markerClusterContext?.removeMarker && markerClusterContext?.removeMarker(markerRef.current)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onMouseOut = onMouseOut\r\n }\r\n }, [onMouseOut])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onMouseOver = onMouseOver\r\n }\r\n }, [onMouseOver])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onMouseMove = onMouseMove\r\n }\r\n }, [onMouseMove])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onRightClick = onRightClick\r\n }\r\n }, [onRightClick])\r\n\r\n useEffect(() => {\r\n if (markerRef.current) {\r\n markerRef.current.onHover = onDragEnd\r\n }\r\n }, [onDragEnd])\r\n\r\n useEffect(() => {\r\n markerRef.current?.setPosition(position)\r\n }, [position])\r\n useEffect(() => {\r\n markerRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n anchor != undefined && markerRef.current?.setAnchor(anchor)\r\n }, [anchor])\r\n useEffect(() => {\r\n labelAnchor != undefined && markerRef.current?.setLabelAnchor(labelAnchor)\r\n }, [labelAnchor])\r\n useEffect(() => {\r\n icon != undefined && markerRef.current?.setIcon(icon)\r\n }, [icon])\r\n useEffect(() => {\r\n elevation != undefined && markerRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n rotation != undefined && markerRef.current?.setRotation(rotation)\r\n }, [rotation])\r\n useEffect(() => {\r\n title != undefined && markerRef.current?.setTitle(title)\r\n }, [title])\r\n useEffect(() => {\r\n snippet != undefined && markerRef.current?.setSnippet(snippet)\r\n }, [snippet])\r\n useEffect(() => {\r\n windowAnchor != undefined && markerRef.current?.setWindowAnchor(windowAnchor)\r\n }, [windowAnchor])\r\n useEffect(() => {\r\n zIndex != undefined && markerRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n if (theMap && VariableTool.hasValue(label)) {\r\n let markerLabel = typeof label == \"string\" ? label : new map4d.MarkerLabel(label)\r\n markerRef.current?.setLabel(markerLabel)\r\n }\r\n }, [label])\r\n useEffect(() => {\r\n draggable != undefined && markerRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n\r\n useEffect(() => {\r\n iconView != undefined && markerRef.current?.setIconView(iconView)\r\n }, [iconView])\r\n\r\n useEffect(() => {\r\n clickable != undefined && markerRef.current?.setClickable(clickable)\r\n }, [clickable])\r\n\r\n useEffect(() => {\r\n icon != undefined && markerRef.current?.setIcon(new map4d.Icon(icon.width, icon.height, icon.url))\r\n }, [icon])\r\n\r\n useEffect(() => {\r\n props.infoWindow != undefined && markerRef.current?.setInfoWindow(props.infoWindow)\r\n }, [props.infoWindow])\r\n\r\n useEffect(() => {\r\n props.infoContents != undefined && markerRef.current?.setInfoContents(props.infoContents)\r\n }, [props.infoContents])\r\n\r\n useEffect(() => {\r\n if (props.showInfoWindow != undefined) {\r\n props.showInfoWindow ? markerRef.current?.showInfoWindow() : markerRef.current?.hideInfoWindow()\r\n }\r\n }, [props.showInfoWindow])\r\n return null\r\n}\r\nexport default MFMarker\r\n","import React, { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext, MarkerClusterContext } from '../context';\r\n\r\ninterface MarkerClusterProps extends map4d.MarkerClusterOptions {\r\n map?: map4d.Map,\r\n onCreated?: (markerCluster: map4d.MarkerClusterer) => void,\r\n children?: any\r\n}\r\n\r\nconst MFMarkerCluster = (props: MarkerClusterProps) => {\r\n const {\r\n minZoom = 0,\r\n maxZoom = 22,\r\n radius = 100,\r\n zoomOnClick,\r\n clusterIcon,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const markerRefs = useRef<map4d.Marker[]>([])\r\n const markerClusterRef = useRef<map4d.MarkerClusterer>()\r\n\r\n const drawCluster = () => {\r\n markerClusterRef.current?.setMap(null)\r\n if (theMap) {\r\n let option = {\r\n minZoom: minZoom,\r\n maxZoom: maxZoom,\r\n radius: radius,\r\n zoomOnClick: zoomOnClick,\r\n clusterIcon: clusterIcon,\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n if (markerRefs.current && markerRefs.current?.length > 0) {\r\n markerClusterRef.current = new map4d.MarkerClusterer(markerRefs.current, option)\r\n markerClusterRef.current?.setMap(theMap)\r\n onCreated && onCreated(markerClusterRef.current)\r\n }\r\n\r\n }\r\n }\r\n const clusterContext = {\r\n addMarker: (marker: map4d.Marker) => {\r\n markerRefs.current.push(marker)\r\n drawCluster()\r\n },\r\n removeMarker: (marker: map4d.Marker) => {\r\n let newMarkers = markerRefs.current.filter(t => t != marker)\r\n markerRefs.current = newMarkers\r\n drawCluster()\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !markerClusterRef.current) {\r\n drawCluster()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n markerClusterRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n markerClusterRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n markerClusterRef.current?.setMap(null)\r\n }\r\n }, [])\r\n useEffect(() => {\r\n if (theMap) {\r\n drawCluster()\r\n }\r\n }, [minZoom, maxZoom, radius, clusterIcon])\r\n useEffect(() => {\r\n zoomOnClick != undefined && markerClusterRef.current?.setZoomOnClick(zoomOnClick)\r\n }, [zoomOnClick])\r\n\r\n return (\r\n <MarkerClusterContext.Provider value={clusterContext}>\r\n {props?.children}\r\n </MarkerClusterContext.Provider>\r\n )\r\n}\r\nexport default MFMarkerCluster\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface POIProps extends map4d.POIOptions {\r\n position: any\r\n title?: string\r\n subtitle?: string\r\n color?: string\r\n type?: string\r\n icon?: string\r\n elevation?: number\r\n zIndex?: number\r\n visible?: boolean\r\n draggable?: boolean\r\n clickable?: boolean\r\n map?: map4d.Map,\r\n onCreated?: (poi: map4d.POI) => void\r\n onClick?: (args: any) => void\r\n onHover?: (args: any) => void\r\n}\r\n\r\nconst MFPOI = (props: POIProps) => {\r\n const {\r\n position,\r\n title,\r\n subtitle,\r\n color,\r\n type,\r\n icon,\r\n elevation,\r\n zIndex,\r\n visible,\r\n draggable,\r\n clickable,\r\n map,\r\n onCreated,\r\n onClick,\r\n onHover\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const poiRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !poiRef.current) {\r\n let option = {\r\n position: position || { lat: 10.793113, lng: 106.720739 },\r\n title: title,\r\n subtitle: subtitle,\r\n color: color,\r\n type: type,\r\n icon: icon,\r\n elevation: elevation,\r\n zIndex: zIndex,\r\n visible: visible,\r\n draggable: draggable,\r\n clickable: clickable\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n poiRef.current = new map4d.POI(option)\r\n poiRef.current.onClick = onClick\r\n poiRef.current.onHover = onHover\r\n poiRef.current?.setMap(theMap)\r\n onCreated && onCreated(poiRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n poiRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n poiRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n poiRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n poiRef.current?.setPosition(position)\r\n }, [position])\r\n useEffect(() => {\r\n title != undefined && poiRef.current?.setTitle(title)\r\n }, [title])\r\n useEffect(() => {\r\n subtitle != undefined && poiRef.current?.setSubtitle(subtitle)\r\n }, [subtitle])\r\n useEffect(() => {\r\n color != undefined && poiRef.current?.setColor(color)\r\n }, [color])\r\n useEffect(() => {\r\n type != undefined && poiRef.current?.setType(type)\r\n }, [type])\r\n useEffect(() => {\r\n icon != undefined && poiRef.current?.setIcon(icon)\r\n }, [icon])\r\n useEffect(() => {\r\n elevation != undefined && poiRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n zIndex != undefined && poiRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n visible != undefined && poiRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n draggable != undefined && poiRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n clickable != undefined && poiRef.current?.setClickable(clickable)\r\n }, [clickable])\r\n\r\n useEffect(() => {\r\n if (poiRef.current) {\r\n poiRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n useEffect(() => {\r\n if (poiRef.current) {\r\n poiRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n return null\r\n}\r\nexport default MFPOI\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface POIOverlayProps extends map4d.POIOverlayOptions {\r\n map?: map4d.Map,\r\n onCreated?: (poiOverlay: map4d.POIOverlay) => void\r\n}\r\n\r\nconst MFPOIOverlay = (props: POIOverlayProps) => {\r\n const {\r\n getUrl,\r\n visible = true,\r\n parserData,\r\n prefixId,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const poiOverlayRef = useRef<map4d.POIOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n poiOverlayRef.current?.setMap(null)\r\n let option = {\r\n getUrl: getUrl || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n parserData: parserData,\r\n prefixId: prefixId\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n poiOverlayRef.current = new map4d.POIOverlay(option)\r\n poiOverlayRef.current?.setMap(theMap)\r\n onCreated && onCreated(poiOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !poiOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n poiOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n poiOverlayRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n poiOverlayRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [getUrl, parserData, prefixId])\r\n return null\r\n}\r\nexport default MFPOIOverlay\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface PolygonProps {\r\n paths: any[][]\r\n fillColor?: string\r\n fillOpacity?: number\r\n visible?: boolean\r\n strokeColor?: string\r\n strokeWidth?: number\r\n draggable?: boolean\r\n zIndex?: number\r\n elevation?: number\r\n pattern?: string\r\n patternScale?: number\r\n useFillColorForPattern?: boolean\r\n clickable?: boolean\r\n map?: map4d.Map,\r\n onCreated?: (polygon: map4d.Polygon) => void\r\n onHover?: (args: any) => void,\r\n onClick?: (args: any) => void\r\n}\r\n\r\nconst MFPolygon = (props: PolygonProps) => {\r\n const {\r\n paths,\r\n fillColor,\r\n fillOpacity,\r\n visible = true,\r\n strokeColor,\r\n strokeWidth,\r\n draggable,\r\n elevation,\r\n pattern,\r\n patternScale,\r\n useFillColorForPattern,\r\n zIndex,\r\n clickable,\r\n map,\r\n onHover,\r\n onClick,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const polygonRef = useRef<any>()\r\n const a = useRef()\r\n useEffect(() => {\r\n if (theMap && !polygonRef.current) {\r\n let option = {\r\n paths: paths,\r\n fillColor: fillColor,\r\n fillOpacity: fillOpacity,\r\n visible: visible,\r\n strokeColor: strokeColor,\r\n strokeWidth: strokeWidth,\r\n draggable: draggable,\r\n elevation: elevation,\r\n pattern: pattern != undefined ? (pattern ? new map4d.ImageFillPattern(pattern) : null) : undefined,\r\n patternScale: patternScale,\r\n useFillColorForPattern: useFillColorForPattern,\r\n zIndex: zIndex,\r\n clickable: clickable,\r\n }\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n polygonRef.current = new map4d.Polygon(option)\r\n a.current = theMap\r\n console.log(a.current)\r\n polygonRef.current?.setMap(theMap)\r\n polygonRef.current.onHover = props.onHover\r\n polygonRef.current.onClick = onClick\r\n onCreated && onCreated(polygonRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n polygonRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n polygonRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n polygonRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (polygonRef.current) {\r\n polygonRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (polygonRef.current) {\r\n polygonRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n\r\n useEffect(() => {\r\n polygonRef.current?.setPaths(paths)\r\n }, [paths])\r\n useEffect(() => {\r\n fillColor != undefined && polygonRef.current?.setFillColor(fillColor)\r\n }, [fillColor])\r\n useEffect(() => {\r\n fillOpacity != undefined && polygonRef.current?.setFillOpacity(fillOpacity)\r\n }, [fillOpacity])\r\n useEffect(() => {\r\n polygonRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n strokeColor != undefined && polygonRef.current?.setStrokeColor(strokeColor)\r\n }, [strokeColor])\r\n useEffect(() => {\r\n strokeWidth != undefined && polygonRef.current?.setStrokeWidth(strokeWidth)\r\n }, [strokeWidth])\r\n useEffect(() => {\r\n draggable != undefined && polygonRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n elevation != undefined && polygonRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n zIndex != undefined && polygonRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n clickable != undefined && polygonRef.current?.setClickable(clickable)\r\n }, [clickable])\r\n useEffect(() => {\r\n pattern !== undefined && polygonRef.current?.setPattern(pattern ? new map4d.ImageFillPattern(pattern) : null)\r\n }, [pattern])\r\n useEffect(() => {\r\n patternScale != undefined && polygonRef.current?.setPatternScale(patternScale)\r\n }, [patternScale])\r\n useEffect(() => {\r\n useFillColorForPattern != undefined && polygonRef.current?.setUseFillColorForPattern(useFillColorForPattern)\r\n }, [useFillColorForPattern])\r\n\r\n return null\r\n}\r\nexport default MFPolygon\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface PolylineProps {\r\n path: any[]\r\n strokeWidth: number\r\n strokeColor?: string\r\n strokeOpacity?: number\r\n visible?: boolean\r\n closed?: boolean\r\n draggable?: boolean\r\n zIndex?: number\r\n elevation?: number\r\n strokePattern?: any\r\n clickable?: boolean\r\n map?: map4d.Map\r\n onCreated?: (polyline: map4d.Polyline) => void\r\n onHover?: (args: any) => void\r\n onClick?: (args: any) => void\r\n onMouseOut?:(args: any)=> void\r\n onMouseOver?:(args: any)=> void\r\n onMouseMove?: (args: any)=> void\r\n}\r\n\r\nconst MFPolyline = (props: PolylineProps) => {\r\n const {\r\n path,\r\n strokeWidth,\r\n strokeColor,\r\n strokeOpacity,\r\n visible = true,\r\n closed,\r\n draggable,\r\n zIndex,\r\n elevation,\r\n strokePattern,\r\n clickable,\r\n map,\r\n onClick,\r\n onHover,\r\n onCreated,\r\n onMouseOut,\r\n onMouseOver,\r\n onMouseMove\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const polylineRef = useRef<any>()\r\n\r\n useEffect(() => {\r\n if (theMap && !polylineRef.current) {\r\n let option = {\r\n path: path || { lat: 10.793113, lng: 106.720739 },\r\n strokeWidth: strokeWidth,\r\n strokeColor: strokeColor,\r\n strokeOpacity: strokeOpacity,\r\n visible: visible,\r\n closed: closed,\r\n draggable: draggable,\r\n zIndex: zIndex,\r\n elevation: elevation,\r\n strokePattern: strokePattern,\r\n clickable: clickable,\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n polylineRef.current = new map4d.Polyline(option)\r\n polylineRef.current?.setMap(theMap)\r\n polylineRef.current.onHover = props.onHover\r\n polylineRef.current.onClick = props.onClick\r\n polylineRef.current.onMouseOut = onMouseOut\r\n polylineRef.current.onMouseOver = onMouseOver\r\n polylineRef.current.onMouseMove = onMouseMove\r\n onCreated && onCreated(polylineRef.current)\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n polylineRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n polylineRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n polylineRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onHover = onHover\r\n }\r\n }, [onHover])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onMouseOut = onMouseOut\r\n }\r\n }, [onMouseOut])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onMouseOver = onMouseOver\r\n }\r\n }, [onMouseOver])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onMouseMove = onMouseMove\r\n }\r\n }, [onMouseMove])\r\n\r\n useEffect(() => {\r\n if (polylineRef.current) {\r\n polylineRef.current.onClick = onClick\r\n }\r\n }, [onClick])\r\n\r\n useEffect(() => {\r\n polylineRef.current?.setPath(path)\r\n }, [path])\r\n useEffect(() => {\r\n strokeWidth != undefined && polylineRef.current?.setStrokeWidth(strokeWidth)\r\n }, [strokeWidth])\r\n useEffect(() => {\r\n strokeColor != undefined && polylineRef.current?.setStrokeColor(strokeColor)\r\n }, [strokeColor])\r\n useEffect(() => {\r\n strokeOpacity != undefined && polylineRef.current?.setStrokeOpacity(strokeOpacity)\r\n }, [strokeOpacity])\r\n useEffect(() => {\r\n visible != undefined && polylineRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n closed != undefined && polylineRef.current?.setClosed(closed)\r\n }, [closed])\r\n useEffect(() => {\r\n draggable != undefined && polylineRef.current?.setDraggable(draggable)\r\n }, [draggable])\r\n useEffect(() => {\r\n zIndex != undefined && polylineRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n elevation != undefined && polylineRef.current?.setElevation(elevation)\r\n }, [elevation])\r\n useEffect(() => {\r\n strokePattern != undefined && polylineRef.current?.setStrokePattern(strokePattern)\r\n }, [strokePattern])\r\n useEffect(() => {\r\n clickable != undefined && polylineRef.current?.setClickable(clickable)\r\n }, [clickable])\r\n\r\n return null\r\n}\r\nexport default MFPolyline\r\n","import { useContext, useEffect, useRef } from 'react';\r\nimport { Map4dContext } from '../context';\r\n\r\ninterface TileOverlayProps {\r\n getUrl: Function\r\n visible?: boolean\r\n zIndex?: number\r\n opacity?: number\r\n map?: map4d.Map,\r\n onCreated?: (tileOverlay: map4d.TileOverlay) => void\r\n}\r\n\r\nconst MFTileOverlay = (props: TileOverlayProps) => {\r\n const {\r\n getUrl,\r\n visible = true,\r\n zIndex,\r\n opacity,\r\n map,\r\n onCreated\r\n } = props\r\n\r\n const map4dContext = useContext(Map4dContext);\r\n const theMap = map || map4dContext.map\r\n const tileOverlayRef = useRef<map4d.TileOverlay>()\r\n\r\n\r\n const reCreate = () => {\r\n tileOverlayRef.current?.setMap(null)\r\n let option = {\r\n getUrl: getUrl || { lat: 10.793113, lng: 106.720739 },\r\n visible: visible,\r\n zIndex: zIndex,\r\n opacity: opacity\r\n } as any\r\n Object.keys(option).forEach(key => {\r\n if (option[key] == undefined || option[key] == null) {\r\n delete option[key]\r\n }\r\n })\r\n tileOverlayRef.current = new map4d.TileOverlay(option)\r\n tileOverlayRef.current?.setMap(theMap)\r\n onCreated && onCreated(tileOverlayRef.current)\r\n }\r\n\r\n useEffect(() => {\r\n if (theMap && !tileOverlayRef.current) {\r\n reCreate()\r\n }\r\n }, [theMap])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n tileOverlayRef.current?.setMap(theMap)\r\n }\r\n return () => {\r\n tileOverlayRef.current?.setMap(null)\r\n }\r\n }, [theMap])\r\n useEffect(() => {\r\n return () => {\r\n tileOverlayRef.current?.setMap(null)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n if (theMap) {\r\n reCreate()\r\n }\r\n }, [getUrl])\r\n useEffect(() => {\r\n tileOverlayRef.current?.setVisible(visible)\r\n }, [visible])\r\n useEffect(() => {\r\n zIndex != undefined && tileOverlayRef.current?.setZIndex(zIndex)\r\n }, [zIndex])\r\n useEffect(() => {\r\n opacity != undefined && tileOverlayRef.current?.setOpacity(opacity)\r\n }, [opacity])\r\n return null\r\n}\r\nexport default MFTileOverlay\r\n","/**\r\n * class vector 2\r\n */\r\nexport class Vector2 {\r\n\r\n /**\r\n * create a vector 2 class\r\n * @param x\r\n * @param y\r\n */\r\n constructor(public x: number = 0.0,\r\n public y: number = 0.0) {\r\n }\r\n\r\n clone() {\r\n return new Vector2(this.x, this.y)\r\n }\r\n\r\n /**\r\n * get the length of the vector\r\n * @returns {number}\r\n */\r\n get length(): number {\r\n return Math.sqrt(this.x * this.x + this.y * this.y)\r\n }\r\n\r\n /**\r\n * @return {number}\r\n */\r\n get lengthSq(): number {\r\n return this.x * this.x + this.y * this.y\r\n }\r\n\r\n /**\r\n * normalize the vector\r\n * @returns {Vector2}\r\n */\r\n normalize(): Vector2 {\r\n let length = this.length\r\n let x = 0.0\r\n let y = 0.0\r\n\r\n if (length > 0) {\r\n x = this.x / length\r\n y = this.y / length\r\n }\r\n\r\n return new Vector2(x, y)\r\n }\r\n\r\n /**\r\n * set value of the vector\r\n * @param a\r\n */\r\n set(a: Vector2) {\r\n this.x = a.x\r\n this.y = a.y\r\n }\r\n\r\n /**\r\n * invert the vector direction\r\n * @returns {Vector2}\r\n */\r\n invert() {\r\n return new Vector2(-this.x, -this.y)\r\n }\r\n\r\n /**\r\n * rotate 90\r\n * @returns {Vector2}\r\n */\r\n rotate90() {\r\n return new Vector2(this.y, -this.x)\r\n }\r\n\r\n /**\r\n * add to another vector\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n add(a: Vector2) {\r\n return new Vector2(a.x + this.x, a.y + this.y)\r\n }\r\n\r\n /**\r\n * subtract with another vector\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n subtract(a: Vector2) {\r\n if (!a) {\r\n return this.clone()\r\n }\r\n return new Vector2(this.x - a.x, this.y - a.y)\r\n }\r\n\r\n /**\r\n * multiply by a number\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n multiply(a: number) {\r\n return new Vector2(a * this.x, a * this.y)\r\n }\r\n\r\n /**\r\n * rotate by an angle\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n rotateBy(a: number) {\r\n let cos = Math.cos(a * Math.PI / 180)\r\n let sin = Math.sin(a * Math.PI / 180)\r\n return new Vector2(this.x * cos - this.y * sin, this.x * sin + this.y * cos)\r\n }\r\n\r\n rotateByRadian(a: number): Vector2 {\r\n let cos = Math.cos(a)\r\n let sin = Math.sin(a)\r\n return new Vector2(this.x * cos - this.y * sin, this.x * sin + this.y * cos)\r\n }\r\n\r\n /**\r\n * multiply by a vector\r\n * @param a\r\n * @returns {Vector2}\r\n */\r\n cross(a: Vector2) {\r\n return this.x * a.y - this.y * a.x\r\n }\r\n\r\n /**\r\n * dot a vector\r\n * @param a\r\n * @returns {number}\r\n */\r\n dot(a: Vector2) {\r\n return a.x * this.x + a.y * this.y\r\n }\r\n\r\n static perp(v1: number[], v2: number[]) {\r\n return new Vector2(v2[1] - v1[1],\r\n v1[0] - v2[0])\r\n }\r\n\r\n static neg(v: Vector2) {\r\n return new Vector2(-v.x, -v.y)\r\n }\r\n}\r\n","import {Vector2} from \"./Vector2\"\r\n\r\nexport class MathUtils {\r\n static clamp(value: number, min: number, max: number) {\r\n return value < min ? min : (value > max ? max : value)\r\n }\r\n\r\n static toRadians(angleDegrees: number) {\r\n return (angleDegrees * Math.PI) / 180.0\r\n }\r\n\r\n static distance(p1: Vector2, p2: Vector2): number {\r\n return Math.sqrt((p1.x - p2.x)*(p1.x - p2.x) + (p1.y - p2.y)*(p1.y - p2.y))\r\n }\r\n\r\n static findNextPowerOf2(n: number) {\r\n /** decrement `n` (to handle the case when `n` itself is a power of 2) **/\r\n n = n - 1\r\n\r\n /** calculate the position of the last set bit of `n` **/\r\n let lg = Math.log2(n)\r\n\r\n /** next power of two will have a bit set at position `lg+1`. **/\r\n return 1 << lg + 1\r\n }\r\n\r\n static findPreviousPowerOf2(n: number) {\r\n return 1 << 31 - Math.clz32(n)\r\n }\r\n}\r\n","/**\r\n * class vector 3\r\n */\r\nexport class Vector3 {\r\n\r\n /**\r\n * create a vector 3 class\r\n * @param x\r\n * @param y\r\n * @param z\r\n */\r\n constructor(public x: number = 0.0,\r\n public y: number = 0.0,\r\n public z: number = 0.0) {\r\n }\r\n\r\n clone() {\r\n return new Vector3(this.x, this.y, this.z)\r\n }\r\n\r\n buffer(): Float32Array {\r\n return new Float32Array([this.x, this.y, this.z])\r\n }\r\n\r\n /**\r\n * get the length of the vector\r\n * @returns {number}\r\n */\r\n get length(): number {\r\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z)\r\n }\r\n\r\n /**\r\n * @return {number}\r\n */\r\n get lengthSq(): number {\r\n return this.x * this.x + this.y * this.y + this.z * this.z\r\n }\r\n\r\n /**\r\n * normalize the vector\r\n * @returns {Vector3}\r\n */\r\n normalize(): Vector3 {\r\n let length = this.length\r\n let x = 0.0\r\n let y = 0.0\r\n let z = 0.0\r\n\r\n if (length > 0) {\r\n x = this.x / length\r\n y = this.y / length\r\n z = this.z / length\r\n }\r\n\r\n return new Vector3(x, y, z)\r\n }\r\n\r\n /**\r\n * set value of the vector\r\n * @param a\r\n */\r\n set(a: Vector3) {\r\n this.x = a.x\r\n this.y = a.y\r\n this.z = a.z\r\n }\r\n\r\n /**\r\n * invert the vector direction\r\n * @returns {Vector3}\r\n */\r\n invert() {\r\n return new Vector3(-this.x, -this.y, -this.z)\r\n }\r\n\r\n /**\r\n * rotate 90\r\n * @returns {Vector3}\r\n */\r\n rotate90() {\r\n return new Vector3(this.y, -this.x, this.z)\r\n }\r\n\r\n /**\r\n * add to another vector\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n add(a: Vector3) {\r\n return new Vector3(a.x + this.x, a.y + this.y, a.z + this.z)\r\n }\r\n\r\n /**\r\n * subtract with another vector\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n subtract(a: Vector3) {\r\n if (!a) {\r\n return this.clone()\r\n }\r\n return new Vector3(this.x - a.x, this.y - a.y, this.z - a.z)\r\n }\r\n\r\n /**\r\n * multiply by a number\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n multiply(a: number) {\r\n return new Vector3(a * this.x, a * this.y, a * this.z)\r\n }\r\n\r\n /**\r\n * rotate by an angle\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n rotateBy(a: number) {\r\n let cos = Math.cos(a * Math.PI / 180)\r\n let sin = Math.sin(a * Math.PI / 180)\r\n return new Vector3(this.x * cos - this.y * sin, this.x * sin + this.y * cos)\r\n }\r\n\r\n /**\r\n * multiply by a vector\r\n * @param a\r\n * @returns {Vector3}\r\n */\r\n cross(a: Vector3) {\r\n return new Vector3(\r\n this.y * a.z - this.z * a.y,\r\n this.z * a.x - this.x * a.z,\r\n this.x * a.y - this.y * a.x\r\n )\r\n }\r\n\r\n /**\r\n * dot a vector\r\n * @param a\r\n * @returns {number}\r\n */\r\n dot(a: Vector3) {\r\n return a.x * this.x + a.y * this.y + a.z * this.z\r\n }\r\n\r\n static perp(v1: number[], v2: number[]) {\r\n return new Vector3(v2[1] - v1[1],\r\n v1[0] - v2[0])\r\n }\r\n\r\n static neg(v: Vector3) {\r\n return new Vector3(-v.x, -v.y, -v.z)\r\n }\r\n}\r\n","/**\r\n * the matrix class\r\n */\r\nimport {Vector3} from \"./Vector3\"\r\n\r\nexport class Matrix4 {\r\n\r\n /**\r\n * create an eye 4x4 matrix\r\n * @param data\r\n */\r\n constructor(public data: Float32Array = new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, 1.0, 0.0, 0.0,\r\n 0.0, 0.0, 1.0, 0.0,\r\n 0.0, 0.0, 0.0, 1.0])) {\r\n }\r\n\r\n setIdentity(x = 1.0, y = 1.0, z = 1.0) {\r\n this.data[0] = x\r\n this.data[1] = 0\r\n this.data[2] = 0\r\n this.data[3] = 0\r\n this.data[4] = 0\r\n this.data[5] = y\r\n this.data[6] = 0\r\n this.data[7] = 0\r\n this.data[8] = 0\r\n this.data[9] = 0\r\n this.data[10] = z\r\n this.data[11] = 0\r\n this.data[12] = 0\r\n this.data[13] = 0\r\n this.data[14] = 0\r\n this.data[15] = 1.0\r\n return this\r\n }\r\n\r\n copy(other: Matrix4) {\r\n this.data[0] = other.data[0]\r\n this.data[1] = other.data[1]\r\n this.data[2] = other.data[2]\r\n this.data[3] = other.data[3]\r\n this.data[4] = other.data[4]\r\n this.data[5] = other.data[5]\r\n this.data[6] = other.data[6]\r\n this.data[7] = other.data[7]\r\n this.data[8] = other.data[8]\r\n this.data[9] = other.data[9]\r\n this.data[10] = other.data[10]\r\n this.data[11] = other.data[11]\r\n this.data[12] = other.data[12]\r\n this.data[13] = other.data[13]\r\n this.data[14] = other.data[14]\r\n this.data[15] = other.data[15]\r\n return this\r\n }\r\n\r\n /**\r\n * get a translation matrix\r\n * @param x\r\n * @param y\r\n * @param z\r\n * @returns {Matrix4}\r\n */\r\n static translate(x: number, y: number, z: number = 0.0) {\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, 1.0, 0.0, 0.,\r\n 0.0, 0.0, 1.0, 0.0,\r\n x, y, z, 1.0]))\r\n }\r\n\r\n translate(x: number, y: number, z: number = 0.0) {\r\n this.data[12] += x\r\n this.data[13] += y\r\n this.data[14] += z\r\n return this\r\n }\r\n\r\n get position() {\r\n return new Vector3(this.data[12], this.data[13], this.data[14])\r\n }\r\n\r\n /**\r\n * get a rotation matrix around x-axis\r\n * @param alpha\r\n * @returns {Matrix4}\r\n */\r\n static rotateX(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, cosA, sinA, 0.0,\r\n 0.0, -sinA, cosA, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ]))\r\n }\r\n\r\n setRotationX(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n this.setIdentity()\r\n this.data[5] = cosA\r\n this.data[6] = sinA\r\n this.data[9] = -sinA\r\n this.data[10] = cosA\r\n return this\r\n }\r\n\r\n\r\n rotateX(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n let r1 = this.data[1]\r\n let r2 = this.data[2]\r\n this.data[1] = r1 * cosA - r2 * sinA\r\n this.data[2] = r1 * sinA + r2 * cosA\r\n\r\n r1 = this.data[5]\r\n r2 = this.data[6]\r\n this.data[5] = r1 * cosA - r2 * sinA\r\n this.data[6] = r1 * sinA + r2 * cosA\r\n\r\n r1 = this.data[9]\r\n r2 = this.data[10]\r\n this.data[9] = r1 * cosA - r2 * sinA\r\n this.data[10] = r1 * sinA + r2 * cosA\r\n\r\n r1 = this.data[13]\r\n r2 = this.data[14]\r\n this.data[13] = r1 * cosA - r2 * sinA\r\n this.data[14] = r1 * sinA + r2 * cosA\r\n return this\r\n }\r\n\r\n\r\n /**\r\n * get a rotation matrix around y-axis\r\n * @param alpha\r\n * @returns {Matrix4}\r\n */\r\n static rotateY(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n cosA, 0.0, sinA, 0.0,\r\n 0.0, 1.0, 0.0, 0.0,\r\n -sinA, 0.0, cosA, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ]))\r\n }\r\n\r\n setRotationY(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n this.setIdentity()\r\n this.data[0] = cosA\r\n this.data[2] = sinA\r\n this.data[8] = -sinA\r\n this.data[10] = cosA\r\n return this\r\n }\r\n\r\n rotateY(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n let r0 = this.data[0]\r\n let r2 = this.data[2]\r\n this.data[0] = r0 * cosA - r2 * sinA\r\n this.data[2] = r0 * sinA + r2 * cosA\r\n\r\n r0 = this.data[4]\r\n r2 = this.data[6]\r\n this.data[4] = r0 * cosA - r2 * sinA\r\n this.data[6] = r0 * sinA + r2 * cosA\r\n\r\n r0 = this.data[8]\r\n r2 = this.data[10]\r\n this.data[8] = r0 * cosA - r2 * sinA\r\n this.data[10] = r0 * sinA + r2 * cosA\r\n\r\n r0 = this.data[12]\r\n r2 = this.data[14]\r\n this.data[12] = r0 * cosA - r2 * sinA\r\n this.data[14] = r0 * sinA + r2 * cosA\r\n return this\r\n }\r\n\r\n /**\r\n * get a rotation matrix around z-axis\r\n * @param alpha\r\n * @returns {Matrix4}\r\n */\r\n static rotateZ(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n /// get translation matrix\r\n return new Matrix4(new Float32Array([\r\n cosA, sinA, 0.0, 0.0,\r\n -sinA, cosA, 0.0, 0.0,\r\n 0.0, 0.0, 1.0, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ]))\r\n }\r\n\r\n setRotationZ(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n this.setIdentity()\r\n this.data[0] = cosA\r\n this.data[1] = sinA\r\n this.data[4] = -sinA\r\n this.data[5] = cosA\r\n return this\r\n }\r\n\r\n rotateZ(alpha: number) {\r\n alpha *= Math.PI / 180.0\r\n\r\n let sinA = Math.sin(alpha)\r\n let cosA = Math.cos(alpha)\r\n\r\n let r0 = this.data[0]\r\n let r1 = this.data[1]\r\n\r\n this.data[0] = r0 * cosA - r1 * sinA\r\n this.data[1] = r0 * sinA + r1 * cosA\r\n\r\n r0 = this.data[4]\r\n r1 = this.data[5]\r\n this.data[4] = r0 * cosA - r1 * sinA\r\n this.data[5] = r0 * sinA + r1 * cosA\r\n\r\n r0 = this.data[8]\r\n r1 = this.data[9]\r\n this.data[8] = r0 * cosA - r1 * sinA\r\n this.data[9] = r0 * sinA + r1 * cosA\r\n\r\n r0 = this.data[12]\r\n r1 = this.data[13]\r\n this.data[12] = r0 * cosA - r1 * sinA\r\n this.data[13] = r0 * sinA + r1 * cosA\r\n return this\r\n }\r\n\r\n /**\r\n * get a scale matrix\r\n * @param x\r\n * @param y\r\n * @param z\r\n * @returns {Matrix4}\r\n */\r\n // static scale(x: number, y?: number, z?: number) {\r\n // if (y == null) {\r\n // y = x\r\n // z = x\r\n // }\r\n\r\n // return new Matrix4( new Float32Array([\r\n // x, 0.0, 0.0, 0.0,\r\n // 0.0, y, 0.0, 0.0,\r\n // 0.0, 0.0, z, 0.0,\r\n // 0.0, 0.0, 0.0, 1.0\r\n // ]))\r\n // }\r\n\r\n // scale(x: number, y?: number, z?: number) {\r\n // if (y == null) {\r\n // y = x\r\n // z = x\r\n // }\r\n\r\n // let r0 = this.data[0]\r\n // let r1 = this.data[1]\r\n // let r2 = this.data[2]\r\n // this.data[0] = r0 * x\r\n // this.data[1] = r1 * y\r\n // this.data[2] = r2 * z\r\n\r\n // r0 = this.data[4]\r\n // r1 = this.data[5]\r\n // r2 = this.data[6]\r\n // this.data[4] = r0 * x\r\n // this.data[5] = r1 * y\r\n // this.data[6] = r2 * z\r\n\r\n // r0 = this.data[8]\r\n // r1 = this.data[9]\r\n // r2 = this.data[10]\r\n // this.data[8] = r0 * x\r\n // this.data[9] = r1 * y\r\n // this.data[10] = r2 * z\r\n\r\n // r0 = this.data[12]\r\n // r1 = this.data[13]\r\n // r2 = this.data[14]\r\n // this.data[12] = r0 * x\r\n // this.data[13] = r1 * y\r\n // this.data[14] = r2 * z\r\n // return this\r\n // }\r\n\r\n /**\r\n * concatenate with other transformation matrix\r\n * @param matrix\r\n * @returns {Matrix4}\r\n */\r\n multiply(matrix: Matrix4) {\r\n let result = new Matrix4(new Float32Array([\r\n 0.0, 0.0, 0.0, 0.0,\r\n 0.0, 0.0, 0.0, 0.0,\r\n 0.0, 0.0, 0.0, 0.0,\r\n 0.0, 0.0, 0.0, 0.0\r\n ]))\r\n\r\n if (matrix == null){\r\n return result\r\n }\r\n\r\n for (let i = 0; i < 4; ++i) {\r\n for (let j = 0; j < 4; ++j) {\r\n for (let k = 0; k < 4; ++k) {\r\n result.data[i * 4 + k] += this.data[i * 4 + j] * matrix.data[j * 4 + k]\r\n }\r\n }\r\n }\r\n return result\r\n }\r\n\r\n // fconcat(\r\n // data0, data1, data2, data3,\r\n // data4, data5, data6, data7,\r\n // data8, data9, data10, data11,\r\n // data12, data13, data14, data15) {\r\n // let r0 = this.data[0]\r\n // let r1 = this.data[1]\r\n // let r2 = this.data[2]\r\n // let r3 = this.data[3]\r\n // this.data[0] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[1] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[2] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[3] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n\r\n // r0 = this.data[4]\r\n // r1 = this.data[5]\r\n // r2 = this.data[6]\r\n // r3 = this.data[7]\r\n // this.data[4] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[5] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[6] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[7] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n\r\n // r0 = this.data[8]\r\n // r1 = this.data[9]\r\n // r2 = this.data[10]\r\n // r3 = this.data[11]\r\n // this.data[8] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[9] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[10] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[11] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n\r\n // r0 = this.data[12]\r\n // r1 = this.data[13]\r\n // r2 = this.data[14]\r\n // r3 = this.data[15]\r\n // this.data[12] = r0 * data0 + r1 * data4 + r2 * data8 + r3 * data12\r\n // this.data[13] = r0 * data1 + r1 * data5 + r2 * data9 + r3 * data13\r\n // this.data[14] = r0 * data2 + r1 * data6 + r2 * data10 + r3 * data14\r\n // this.data[15] = r0 * data3 + r1 * data7 + r2 * data11 + r3 * data15\r\n // return this\r\n // }\r\n\r\n // concat(matrix: Matrix4) {\r\n // if (matrix == null){\r\n // return this\r\n // }\r\n // return this.fconcat(\r\n // matrix.data[0], matrix.data[1], matrix.data[2], matrix.data[3],\r\n // matrix.data[4], matrix.data[5], matrix.data[6], matrix.data[7],\r\n // matrix.data[8], matrix.data[9], matrix.data[10], matrix.data[11],\r\n // matrix.data[12], matrix.data[13], matrix.data[14], matrix.data[15]\r\n // )\r\n // }\r\n\r\n /**\r\n *\r\n * @param left\r\n * @param right\r\n * @param bottom\r\n * @param top\r\n * @param near\r\n * @param far\r\n * @returns {Matrix4}\r\n */\r\n static ortho(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n return new Matrix4(new Float32Array([\r\n 2.0/(right - left), 0.0, 0.0, 0.0,\r\n 0.0, 2.0/(top - bottom), 0.0, 0.0,\r\n 0.0, 0.0, -2.0/(far - near), 0.0,\r\n -(left + right)/(right - left), -(top + bottom)/(top - bottom), -(near + far)/(near - far), 1.0\r\n ]))\r\n }\r\n\r\n setOrtho(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n this.data[0] = 2.0/(right - left)\r\n this.data[1] = 0\r\n this.data[2] = 0\r\n this.data[3] = 0\r\n this.data[4] = 0\r\n this.data[5] = 2.0/(top - bottom)\r\n this.data[6] = 0\r\n this.data[7] = 0\r\n this.data[8] = 0\r\n this.data[9] = 0\r\n this.data[10] = -2.0/(far - near)\r\n this.data[11] = -1\r\n this.data[12] = -(left + right)/(right - left)\r\n this.data[13] = -(top + bottom)/(top - bottom)\r\n this.data[14] = -(near + far)/(near - far)\r\n this.data[15] = 1.0\r\n return this\r\n }\r\n\r\n /**\r\n * create a perspective matrix\r\n * @param fov\r\n * @param aspect\r\n * @param near\r\n * @param far\r\n * @returns {Matrix4}\r\n */\r\n static perspective(fov: number, aspect: number, near: number, far: number) {\r\n let y = Math.tan(fov / 2.0) * near\r\n let x = y * aspect\r\n return Matrix4.frustum(-x, x, -y, y, near, far)\r\n }\r\n\r\n setPerspective(fov: number, aspect: number, near: number, far: number) {\r\n let y = Math.tan(fov / 2.0) * near\r\n let x = y * aspect\r\n return this.setFrustum(-x, x, -y, y, near, far)\r\n }\r\n\r\n /**\r\n *\r\n * @param left\r\n * @param right\r\n * @param bottom\r\n * @param top\r\n * @param near\r\n * @param far\r\n * @returns {Matrix4}\r\n */\r\n static frustum(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n return new Matrix4(new Float32Array([\r\n 2 * near / (right - left), 0, 0, 0,\r\n 0, 2 * near / (top - bottom), 0, 0,\r\n (right + left)/(right - left), (top + bottom) / (top - bottom), -(far + near) / (far - near), -1,\r\n 0, 0, -2 * near * far / (far - near), 0\r\n ]))\r\n }\r\n\r\n setFrustum(left: number, right: number,\r\n bottom: number, top: number,\r\n near: number = -100.0, far: number = 100.0) {\r\n this.data[0] = 2 * near / (right - left);\r\n this.data[1] = 0\r\n this.data[2] = 0\r\n this.data[3] = 0\r\n this.data[4] = 0\r\n this.data[5] = 2 * near / (top - bottom)\r\n this.data[6] = 0\r\n this.data[7] = 0\r\n this.data[8] = (right + left)/(right - left)\r\n this.data[9] = (top + bottom) / (top - bottom)\r\n this.data[10] = -(far + near) / (far - near)\r\n this.data[11] = -1\r\n this.data[12] = 0\r\n this.data[13] = 0\r\n this.data[14] = -2 * near * far / (far - near)\r\n this.data[15] = 0\r\n }\r\n\r\n /**\r\n * transform a vector\r\n * @param vector\r\n * @param w include transformation\r\n */\r\n transform(vector: Vector3, w: number = 0.0) {\r\n\r\n let x = this.data[0 * 4 + 0] * vector.x\r\n + this.data[1 * 4 + 0] * vector.y\r\n + this.data[2 * 4 + 0] * vector.z\r\n + this.data[3 * 4 + 0] * w\r\n\r\n let y = this.data[0 * 4 + 1] * vector.x\r\n + this.data[1 * 4 + 1] * vector.y\r\n + this.data[2 * 4 + 1] * vector.z\r\n + this.data[3 * 4 + 1] * w\r\n\r\n let z = this.data[0 * 4 + 2] * vector.x\r\n + this.data[1 * 4 + 2] * vector.y\r\n + this.data[2 * 4 + 2] * vector.z\r\n + this.data[3 * 4 + 2] * w\r\n\r\n w = this.data[0 * 4 + 3] * vector.x\r\n + this.data[1 * 4 + 3] * vector.y\r\n + this.data[2 * 4 + 3] * vector.z\r\n + this.data[3 * 4 + 3] * w\r\n\r\n if (w == 0) {\r\n w = 1\r\n }\r\n\r\n return new Vector3(\r\n x / w, y / w, z / w\r\n )\r\n }\r\n\r\n /**\r\n * get the matrix buffer\r\n * @returns {number[]}\r\n */\r\n buffer() {\r\n return this.data\r\n }\r\n\r\n /**\r\n * return look at matrix\r\n * @param eye\r\n * @param target\r\n * @param scale\r\n * @param up\r\n * @returns {Matrix4}\r\n */\r\n // static lookAt(eye: Vector3, target: Vector3, scale: number = 1, up = new Vector3(0, 0, 1)) {\r\n\r\n // //compute x, y, z\r\n // let zaxis = eye.subtract(target).normalize()\r\n // let xaxis = up.cross(zaxis).normalize()\r\n // let yaxis = zaxis.cross(xaxis).normalize()\r\n // let transformation = Matrix4.translate(-eye.x, -eye.y, -eye.z)\r\n // transformation.fconcat(\r\n // xaxis.x, yaxis.x, zaxis.x, 0.0,\r\n // xaxis.y, yaxis.y, zaxis.y, 0.0,\r\n // xaxis.z, yaxis.z, zaxis.z, 0.0,\r\n // 0.0, 0.0, 0.0, 1.0\r\n // )\r\n // return transformation.scale(scale)\r\n // }\r\n\r\n // lookAt(eye: Vector3, target: Vector3, scale: number = 1, up = new Vector3(0, 0, 1)) {\r\n // //compute x, y, z\r\n // let zaxis = eye.subtract(target).normalize()\r\n // let xaxis = up.cross(zaxis).normalize()\r\n // let yaxis = zaxis.cross(xaxis).normalize()\r\n // this.setIdentity()\r\n // this.translate(-eye.x, -eye.y, -eye.z)\r\n // this.fconcat(\r\n // xaxis.x, yaxis.x, zaxis.x, 0.0,\r\n // xaxis.y, yaxis.y, zaxis.y, 0.0,\r\n // xaxis.z, yaxis.z, zaxis.z, 0.0,\r\n // 0.0, 0.0, 0.0, 1.0\r\n // )\r\n // return this.scale(scale)\r\n // }\r\n\r\n inverse() {\r\n\r\n // this is a matrix of 3 x 3 or larger\r\n // calculate inverse using gauss-jordan elimination\r\n // http://en.wikipedia.org/wiki/Gaussian_elimination\r\n // http://mathworld.wolfram.com/MatrixInverse.html\r\n // http://math.uww.edu/~mcfarlat/inverse.htm\r\n\r\n // make a copy of the matrix (only the arrays, not of the elements)\r\n const rows = 4\r\n let cols = 4\r\n\r\n let A = this.data.slice()\r\n\r\n // create an identity matrix which in the end will contain the\r\n // matrix inverse\r\n let B = new Float32Array([\r\n 1.0, 0.0, 0.0, 0.0,\r\n 0.0, 1.0, 0.0, 0.0,\r\n 0.0, 0.0, 1.0, 0.0,\r\n 0.0, 0.0, 0.0, 1.0\r\n ])\r\n\r\n //eye(rows).valueOf();\r\n\r\n // loop over all columns, and perform row reductions\r\n for (let c = 0; c < cols; ++c) {\r\n\r\n // element Acc should be non zero. if not, swap content\r\n // with one of the lower rows\r\n let r = c\r\n while (r < rows && A[r * 4 + c] == 0) {\r\n ++r\r\n }\r\n if (r == rows || A[r * 4 + c] == 0) {\r\n\r\n // TODO: in case of zero det, just return a matrix wih Infinity values? (like octave)\r\n console.log(\"Cannot calculate inverse, determinant is zero\")\r\n return this\r\n }\r\n if (r != c) {\r\n let Ac = A.slice(c * rows, (c + 1) * rows)\r\n let Ar = A.slice(r * rows, (r + 1) * rows)\r\n A.set(Ar, c * rows)\r\n A.set(Ac, r * rows)\r\n let Bc = B.slice(c * rows, (c + 1) * rows)\r\n let Br = B.slice(r * rows, (r + 1) * rows)\r\n B.set(Br, c * rows)\r\n B.set(Bc, r * rows)\r\n }\r\n\r\n // eliminate non-zero values on the other rows at column c\r\n let Ac = A.slice(c * rows, (c + 1) * rows)\r\n let Bc = B.slice(c * rows, (c + 1) * rows)\r\n\r\n for (r = 0; r < rows; ++r) {\r\n let Ar = A.slice(r * rows, (r + 1) * rows)\r\n let Br = B.slice(r * rows, (r + 1) * rows)\r\n if(r != c) {\r\n\r\n // eliminate value at column c and row r\r\n if (Ar[c] != 0) {\r\n let f = -Ar[c] / Ac[c]\r\n\r\n // add (f * row c) to row r to eliminate the value\r\n // at column c\r\n for (let s = c; s < cols; ++s) {\r\n Ar[s] = Ar[s] + (f * Ac[s])\r\n }\r\n A.set(Ar, r * rows)\r\n for (let s = 0; s < cols; ++s) {\r\n Br[s] = Br[s] + (f * Bc[s])\r\n }\r\n B.set(Br, r * rows)\r\n }\r\n }\r\n else {\r\n\r\n // normalize value at Acc to 1,\r\n // divide each value on row r with the value at Acc\r\n let f = Ac[c]\r\n if (f == 0) {\r\n console.log(\"Cannot calculate inverse, determinant is zero\")\r\n return this\r\n }\r\n for (let s = c; s < cols; ++s) {\r\n Ar[s] = Ar[s] / f\r\n }\r\n A.set(Ar, r * rows)\r\n for (let s = 0; s < cols; ++s) {\r\n Br[s] = Br[s] / f\r\n }\r\n B.set(Br, r * rows)\r\n }\r\n }\r\n }\r\n return new Matrix4(B)\r\n }\r\n}\r\n","import {Vector3} from \"./Vector3\"\r\n\r\nexport class Color {\r\n private _buffer: Float32Array\r\n\r\n /**\r\n * create a color\r\n */\r\n constructor(red: number = 0.0,\r\n green: number = 0.0,\r\n blue: number = 0.0,\r\n public alpha: number = 1.0) {\r\n this._buffer = new Float32Array([red, green, blue])\r\n }\r\n\r\n /**\r\n * get the buffer\r\n */\r\n rgbBuffer(): Float32Array {\r\n return this._buffer\r\n }\r\n\r\n /**\r\n * get the buffer\r\n */\r\n buffer(): Float32Array {\r\n return new Float32Array([this.red, this.green, this.blue, this.alpha])\r\n }\r\n\r\n get red() {\r\n return this._buffer[0]\r\n }\r\n\r\n get green() {\r\n return this._buffer[1]\r\n }\r\n\r\n get blue() {\r\n return this._buffer[2]\r\n }\r\n\r\n /**\r\n * string style for canvas\r\n * @return {string}\r\n */\r\n get rgba() {\r\n return \"rgba(\" + this.red * 255 + \",\" + this.green * 255 + \",\" + this.blue * 255 + \",\" + this.alpha + \")\"\r\n }\r\n\r\n /**\r\n * create color from hex string\r\n */\r\n static fromHex(hexString = \"000000\") {\r\n if (hexString.length == 4 || hexString.length == 7 || hexString.length == 9) {\r\n hexString = hexString.substring(1, hexString.length)\r\n }\r\n if (hexString.length == 3) {\r\n hexString = hexString.split(\"\").map(x => x + x).join(\"\")\r\n }\r\n\r\n let colorCode = parseInt(hexString, 16)\r\n\r\n if (hexString.length == 6) {\r\n return new Color(\r\n (colorCode >> 16) / 255,\r\n ((colorCode >> 8) & 255) / 255,\r\n (colorCode & 255) / 255\r\n )\r\n }\r\n else {\r\n return new Color(\r\n ((colorCode >> 24) & 255) / 255,\r\n ((colorCode >> 16) & 255) / 255,\r\n ((colorCode >> 8) & 255) / 255,\r\n (colorCode & 255) / 255\r\n )\r\n }\r\n }\r\n\r\n static fromInt(colorCode = 0) {\r\n if (colorCode < 0) {\r\n colorCode = 0\r\n }\r\n return new Color(\r\n ((colorCode >> 16) & 255) / 255,\r\n ((colorCode >> 8) & 255) / 255,\r\n (colorCode & 255) / 255\r\n )\r\n }\r\n\r\n static fromVec3(color: Vector3) {\r\n return new Color(\r\n color.x,\r\n color.y,\r\n color.z\r\n )\r\n }\r\n\r\n static mix(a: Color, b: Color, factor: number) {\r\n return new Color(\r\n a.red * factor + b.red * (1 - factor),\r\n a.green* factor + b.green * (1 - factor),\r\n a.blue * factor + b.blue * (1 - factor),\r\n a.alpha * factor + b.alpha * (1 - factor)\r\n )\r\n }\r\n\r\n get code() {\r\n let float2hex = (f: number) => {\r\n let hex = Math.floor(f * 255).toString(16)\r\n hex = hex.length == 1 ? \"0\" + hex : hex\r\n hex = hex.length > 2 ? hex.substr(0, 2) : hex\r\n return hex\r\n }\r\n return \"#\" + float2hex(this.red) + float2hex(this.green) + float2hex(this.blue) + float2hex(this.alpha)\r\n }\r\n\r\n static isValid(colorString: string): boolean{\r\n return /^#?([0-9A-Fa-f]){6,8}$/i.test(colorString)\r\n }\r\n}\r\n","import { Matrix4 } from \"../engine/Matrix\"\r\nimport { Color } from \"../engine/Color\"\r\n\r\nexport class MapConstants {\r\n\r\n static none = -1.0\r\n\r\n static baseTileSize = 256\r\n\r\n static minLatitude = -85.051128779806604\r\n\r\n static maxLatitude = 85.051128779806604\r\n\r\n static maxLongitude = 180\r\n\r\n static minLongitude = -180\r\n\r\n static maxDegrees = 360\r\n\r\n static radiusEarthMeters = 6378137.0\r\n\r\n static halfEarthCircumFerenceInMeter = MapConstants.radiusEarthMeters * Math.PI\r\n\r\n static earthCircumFerenceInMeter = MapConstants.halfEarthCircumFerenceInMeter * 2\r\n\r\n static tileCacheSize = 512\r\n\r\n static baseMapLowestOrder = Number.MIN_SAFE_INTEGER\r\n\r\n static baseMapMiddleOrder = -1.0E6\r\n\r\n static buildingLayerOrder = 0\r\n\r\n static userPOILayerOrder = 1.0\r\n\r\n static pointGeoJsonWidth = 32\r\n\r\n static pointGeoJsonHeight = 32\r\n\r\n static placeSelectedIdPrefix = \"maplink-selected-place-\"\r\n\r\n static placeWidth = 26\r\n\r\n static placeHeight = 32\r\n\r\n static spritePadding = 2.\r\n\r\n static get placeFontSize() {\r\n return 12\r\n }\r\n\r\n static poiFontWeight = \"normal\"\r\n\r\n static poiMaxWidth = 120\r\n\r\n static poiNumLine = 2\r\n\r\n static poiDefaultColor = new Color(0.5, 0.6, 0.7)\r\n\r\n static pointGeoJsonAnchor = [0.5, 1.0]\r\n\r\n static infoWindowPadding = 2\r\n\r\n // pixels/s\r\n static flingMinVelocity = -10000.0\r\n\r\n // pixels/s\r\n static flingMaxVelocity = 10000.0\r\n\r\n static flingTimeConstant = 150.0\r\n\r\n static flingSpeedMultiply = 15\r\n\r\n static zoomSpeedMouseWheel = 15\r\n\r\n // milliseconds\r\n static minDurationFlyTo = 1000\r\n\r\n // milliseconds\r\n static maxDurationFlyTo = 13000\r\n\r\n static maxBearingAngle = 720\r\n\r\n static defaultMinZoom = 3\r\n\r\n static defaultMinZoom3d = 17\r\n\r\n static defaultMaxZoom = 22\r\n\r\n static defaultMaxNativeZoom = 19\r\n\r\n static geoJsonMinNativeZoom = 20\r\n\r\n static vectorBuildingsMinZoom = 17\r\n\r\n static tileExtend = 4096.0\r\n\r\n static defaultAnimationDuration = 300\r\n\r\n static defaultFlyZoom = 17.0\r\n\r\n static minTilt = 0.0\r\n\r\n static maxTilt2D = 40.0\r\n\r\n static maxTilt3D = 87.0\r\n\r\n static get maxTiltIntersectWithScreen() {\r\n return 90.0 - CameraConstants.fov * MathConstants.rad2Deg\r\n }\r\n\r\n static minTiltReduceFog = 75.0\r\n\r\n static minTimeMoving = 150.0\r\n\r\n static minTimeDoubleZoom = 500.0\r\n\r\n static minTimeSpanTo = 500.0\r\n\r\n static maxTimeSpanTo = 4000.0\r\n\r\n static skyboxMapBorderMinimum = 0.001\r\n\r\n static metersPerPixelAtLatitude = 0.0\r\n\r\n static mapBackgroundColor2D = Color.fromHex(\"#f2efe9\")\r\n\r\n static mapBackgroundColor3D = Color.fromHex(\"#e1e1e1\")\r\n\r\n static satellitePOIColor = new Color(1.0, 1.0, 1.0)\r\n\r\n static satellitePOIHalo = new Color(0.0, 0.0, 0.0)\r\n\r\n static mapBackgroundScaleRatio = 20000.0\r\n\r\n static clusterMaxPointCount = 1000000\r\n\r\n static biasMatrix = new Matrix4(new Float32Array([\r\n 0.5, 0.0, 0.0, 0.0,\r\n 0.0, 0.5, 0.0, 0.0,\r\n 0.0, 0.0, 0.5, 0.0,\r\n 0.5, 0.5, 0.5, 1.0\r\n ]))\r\n\r\n static FPS = 1000.0 / 15.0\r\n\r\n static buildingOverlayIdPrefix = \"_overlay\"\r\n\r\n static customBuildingType = \"custom_building\"\r\n\r\n static touchBoxSize = 8.0\r\n\r\n static zoomStep = 0.25\r\n\r\n static distanceRatioToForceMoveCamera = 3.0 /** ratio with screen size to force move camera when call flyTo() method **/\r\n\r\n static gridIndexExtent = 4096\r\n\r\n static gridIndexN = 4\r\n\r\n static gridIndexPadding = 0\r\n}\r\n\r\n\r\n\r\nexport class SymbolConstants {\r\n\r\n static defaultSymbol = \"markerDefault\"\r\n\r\n static geoJsonLayerId = \"geoJsonLayerId\"\r\n\r\n}\r\n\r\nexport class LayerConstants {\r\n\r\n /** Map layer */\r\n\r\n static readonly rasterLayerId = \"1.0.rasterLayer\"\r\n\r\n static readonly surfaceLayerId = \"1.1.vector.surfaces\"\r\n\r\n static readonly roadsLayerId = \"1.2.vector.roads\"\r\n\r\n static readonly boundaryLayerId = \"1.3.vector.boundaries\"\r\n\r\n static readonly labelLayerId = \"4.label.tile\"\r\n\r\n static readonly rasterOverlayLayerId = \"1.4.rasterOverlay\"\r\n\r\n static readonly imageOverlayLayerId = \"5.imageOverlay\"\r\n\r\n static readonly buildingOverlayLayerId = \"2.buildingOverlay\"\r\n\r\n static readonly pointLayerId = \"2.maplink.vector.tile.points\"\r\n\r\n static readonly pointOverlayLayerId = \"2.maplink.overlay.tile.points\"\r\n\r\n static readonly userPOILayerId = \"1.maplink.vector.tile.user.poi\"\r\n\r\n static readonly buildingLayerId = \"2.buildingLayer\"\r\n\r\n static readonly userBuildingLayerId = \"3.userBuilding.layer\"\r\n\r\n /** Tile layer */\r\n\r\n static readonly roadTileLayerId = \"roadTileLayer\"\r\n\r\n static readonly labelTileLayerId = \"labelTileLayer\"\r\n\r\n static readonly pointTileLayerId = \"pointTileLayer\"\r\n\r\n static readonly buildingTileLayerId = \"buildingTileLayer\"\r\n\r\n static readonly rasterTileLayerId = \"rasterTileLayer\"\r\n}\r\n\r\nexport class MathConstants {\r\n\r\n static rad2Deg = 180 / Math.PI\r\n\r\n static deg2Rad = Math.PI / 180.0\r\n\r\n static epsilon = 1e-6\r\n}\r\n\r\nexport class CameraConstants {\r\n\r\n static fov = 30 * MathConstants.deg2Rad\r\n\r\n static nearPlane = 0.1\r\n\r\n static farPlane = 1000\r\n\r\n static height = 15.5\r\n\r\n}\r\n\r\nexport class PolyConstants {\r\n\r\n static numTrianglesOnRoundCap = 6\r\n\r\n static numTrianglesOnRoundJoin = 5\r\n\r\n static numTrianglesPerCircle = 4\r\n}\r\n\r\nexport class ParticleConstants {\r\n\r\n static rainFrequency = 0.004\r\n\r\n static rainParticleRotation = -25\r\n\r\n static snowFrequency = 0.004\r\n\r\n}\r\n\r\nexport class WeatherConstants {\r\n\r\n static refreshTime = 60000 /** miliseconds */\r\n\r\n static refreshDistance = 10000 /** meter */\r\n\r\n}\r\n\r\nexport class ColorConstants {\r\n static skyColors = {\r\n \"Morning\": Color.fromHex(\"cdf9ff\"),\r\n \"Noon\": Color.fromHex(\"0783f4\"),\r\n \"AfterNoon\": Color.fromHex(\"243a8b\"),\r\n \"Evening\": Color.fromHex(\"182863\"),\r\n }\r\n\r\n static fogColors = {\r\n \"Morning\": Color.fromHex(\"FAD8C4\"),\r\n \"Noon\": Color.fromHex(\"FAFAFA\"),\r\n \"AfterNoon\": Color.fromHex(\"FAA899\"),\r\n \"Evening\": Color.fromHex(\"141c36\"),\r\n }\r\n\r\n static lightColors = {\r\n \"Morning\": Color.fromHex(\"#DE8989\"),\r\n \"Noon\": Color.fromHex(\"#F8F8F8\"),\r\n \"AfterNoon\": Color.fromHex(\"#BE321A\"),\r\n \"Evening\": Color.fromHex(\"#1E0032\")\r\n }\r\n\r\n static getSkyColor(name: string): Color {\r\n return ColorConstants.skyColors[name]\r\n }\r\n\r\n static getFogColor(name: string): Color {\r\n return ColorConstants.fogColors[name]\r\n }\r\n\r\n static getLightColor(name: string): Color {\r\n return ColorConstants.lightColors[name]\r\n }\r\n}\r\n\r\nexport class TimeConstants {\r\n\r\n static morningTime = 6.0\r\n\r\n static noonTime = 12.0\r\n\r\n static afterNoonTime = 16.0\r\n\r\n static eveningTime = 18.0\r\n\r\n}\r\n\r\nexport class FontConstant {\r\n\r\n static fontTextureWidth = 1000\r\n\r\n static fontTextureHeight = 400\r\n\r\n static get fontSize() {\r\n return 24\r\n }\r\n}\r\n\r\nexport class LabelConstant {\r\n /** Max angle (degree) of 2 segment on path that can create text data **/\r\n static maxCurvedTextAngle = 22\r\n}\r\n","export enum ClassType {\r\n //Annotation\r\n MARKER,\r\n CIRCLE,\r\n POLYLINE,\r\n POLYGON,\r\n POI,\r\n BUILDING,\r\n\r\n //UserLayer\r\n VECTOR_TILE_LAYER,\r\n\r\n //Query\r\n BUILDING_QUERY_RESULT,\r\n\r\n //AnnotationData\r\n POLYLINE_DATA,\r\n POLYGON_DATA,\r\n\r\n //Item\r\n ICON,\r\n LATLNG,\r\n POINT,\r\n CAMERA_POSITION,\r\n\r\n //Bounds\r\n LATLNG_BOUNDS,\r\n\r\n //Label\r\n MARKER_LABEL,\r\n\r\n //Feature\r\n FEATURE,\r\n TILE_FEATURE,\r\n VECTOR_TILE_FEATURE\r\n}\r\n\r\nexport class Map4dObject {\r\n private readonly classType: ClassType\r\n\r\n constructor(classType: ClassType) {\r\n this.classType = classType\r\n }\r\n\r\n /**\r\n * Check classType in mapObject\r\n * @param mapObject \r\n * @param classType \r\n * @returns \r\n */\r\n static isClassType(mapObject: any, classType: ClassType): boolean {\r\n let mfClassType = (mapObject || {}).classType\r\n return mfClassType == classType\r\n }\r\n}","import { ClassType, Map4dObject } from \"./Map4dObject\"\r\nimport { MapConstants, MathConstants } from './MapConstants';\r\n\r\n\r\nexport class LatLng extends Map4dObject {\r\n\r\n /** Latitude, in degrees. */\r\n lat: number\r\n\r\n /** Longitude, in degrees. */\r\n lng: number\r\n\r\n constructor(lat: number, lng: number) {\r\n super(ClassType.LATLNG)\r\n this.lat = lat\r\n this.lng = lng\r\n }\r\n\r\n /**\r\n * Comparison function.\r\n * @param other\r\n */\r\n equals(other: LatLng): boolean {\r\n return this.lat == other.lat && this.lng == other.lng\r\n }\r\n\r\n valid() {\r\n return isFinite(this.lat) && Math.abs(this.lat) <= 90\r\n //tile wrap\r\n }\r\n\r\n /**\r\n * Converts to string representation.\r\n */\r\n toString(): string {\r\n return \"(\" + this.lat + \", \" + this.lng + \")\"\r\n }\r\n\r\n static convert(input: ILatLng): LatLng {\r\n if(Map4dObject.isClassType(input, ClassType.LATLNG)) {\r\n return input as LatLng\r\n }\r\n if (Array.isArray(input) && (input.length === 2)) {\r\n return new LatLng(Number(input[1]), Number(input[0]))\r\n }\r\n if (!Array.isArray(input) && typeof input === \"object\" && input !== null && \"lat\" in input && \"lng\" in input) {\r\n return new LatLng(\r\n Number(input.lat),\r\n Number(input.lng))\r\n }\r\n throw new Error(\"`ILngLat` argument must be specified as a LngLat instance, an object \" +\r\n \"{lat: <lat>, lng: <lng>}, or an array of [<lng>, <lat>]\")\r\n }\r\n \r\n distanceTo(target: ILatLng): number {\r\n if (target == null) {\r\n return 0;\r\n }\r\n let desc = LatLng.convert(target)\r\n let latStartRadian = MathConstants.deg2Rad * this.lat\r\n let longStartRadian = MathConstants.deg2Rad * this.lng\r\n let latDescRadian = MathConstants.deg2Rad * desc.lat\r\n let longDescRadian = MathConstants.deg2Rad * desc.lng\r\n let u = Math.sin((latDescRadian - latStartRadian)/2)\r\n let v = Math.sin((longDescRadian - longStartRadian)/2)\r\n\r\n // Distance between two latLngs in meters\r\n return 2.0 * MapConstants.radiusEarthMeters *\r\n Math.asin(Math.sqrt(u * u + Math.cos(latStartRadian) * Math.cos(latDescRadian) * v * v))\r\n }\r\n\r\n normalize(): LatLng {\r\n let sign = this.lat > 0 ? -1 : 1\r\n let lat = (this.lat - sign * 90) % 180 + 90 * sign\r\n sign = this.lng > 0 ? -1 : 1\r\n let lng = (this.lng - sign * 180) % 380 + 180 * sign\r\n return new LatLng(lat, lng)\r\n }\r\n\r\n /**\r\n * add to another LatLng\r\n * @param a\r\n * @returns {LatLng}\r\n */\r\n add(a: LatLng) {\r\n return new LatLng(this.lat + a.lat, this.lng + a.lng).normalize()\r\n }\r\n\r\n /**\r\n * subtract with another LatLng\r\n * @param a\r\n * @returns {LatLng}\r\n */\r\n subtract(a: LatLng) {\r\n if (!a) {\r\n return this\r\n }\r\n return new LatLng(this.lat - a.lat, this.lng - a.lng).normalize()\r\n }\r\n}\r\n\r\nexport type ILatLng = LatLng | {lat: number, lng: number} | [number, number] | null\r\n","import {Vector2} from \"../engine/Vector2\"\r\nimport {MathUtils} from \"../engine/MathUtils\"\r\nimport { MapConstants, MathConstants } from \"../models/MapConstants\"\r\nimport { LatLng } from \"../models/LatLng\"\r\n\r\nexport class ProjectionMercator {\r\n\r\n /**\r\n * ok for test\r\n * @param latLng\r\n * @param worldSize\r\n */\r\n private static projectInternal(latLng: LatLng, worldSize: number) : Vector2 {\r\n let latitude = MathUtils.clamp(latLng.lat, MapConstants.minLatitude, MapConstants.maxLatitude)\r\n return new Vector2(\r\n MapConstants.maxLongitude + latLng.lng,\r\n MapConstants.maxLongitude - MathConstants.rad2Deg\r\n * Math.log(Math.tan(Math.PI / 4 + latitude * Math.PI / MapConstants.maxDegrees))\r\n ).multiply(worldSize / MapConstants.maxDegrees)\r\n }\r\n\r\n /**\r\n * ok for test\r\n * @param latLng\r\n */\r\n static convertToMeterFromLatLng(latLng: LatLng): Vector2 {\r\n let constrainedLatitude = MathUtils.clamp(latLng.lat, MapConstants.minLatitude, MapConstants.maxLatitude)\r\n let constrainedLongitude = latLng.lng\r\n let m = 1 - 1e-15\r\n let f = MathUtils.clamp(Math.sin(MathConstants.deg2Rad * constrainedLatitude), -m, m)\r\n let easting = MapConstants.radiusEarthMeters * constrainedLongitude * MathConstants.deg2Rad\r\n let northing = 0.5 * MapConstants.radiusEarthMeters * Math.log((1 + f) / (1 - f))\r\n return new Vector2(easting, northing)\r\n }\r\n\r\n /**\r\n * ok for test\r\n * @param meters\r\n */\r\n static convertToLatLngFromMeter(meters: Vector2): LatLng {\r\n let latitude = (2 * Math.atan(Math.exp(meters.y / MapConstants.radiusEarthMeters)) - (Math.PI / 2.0))\r\n * MathConstants.rad2Deg\r\n let longitude = meters.x * MathConstants.rad2Deg / MapConstants.radiusEarthMeters\r\n return new LatLng(latitude, longitude)\r\n }\r\n\r\n /**\r\n * ok for test\r\n * @param latLng\r\n * @param zoom\r\n */\r\n static projectZoom(latLng: LatLng, zoom: number): Vector2 {\r\n return this.projectInternal(latLng, 1 << zoom)\r\n }\r\n\r\n\r\n}\r\n","import { ProjectionMercator } from \"../map/ProjectionMercator\"\r\nimport { MathUtils } from \"../engine/MathUtils\"\r\nimport { Vector2 } from \"../engine/Vector2\"\r\nimport { ILatLng, LatLng } from \"../models/LatLng\"\r\n\r\nexport class CoordinateTransformer {\r\n\r\n private coordinates: LatLng[] = []\r\n\r\n constructor(coordinates: ILatLng[]) {\r\n this.coordinates = coordinates.map(coordinate => LatLng.convert(coordinate))\r\n }\r\n\r\n setCoordinates(coordinates: ILatLng[]): void {\r\n this.coordinates = coordinates.map(coordinate => LatLng.convert(coordinate))\r\n }\r\n\r\n addCoordinates(coordinates: ILatLng[]): void {\r\n coordinates.forEach(coordinate => this.coordinates.push(LatLng.convert(coordinate)))\r\n }\r\n\r\n rotate(degree: number, anchor: ILatLng = null): LatLng[] {\r\n if (this.coordinates.length <= 1) {\r\n return this.coordinates.slice()\r\n }\r\n let center = null\r\n if (anchor != null) {\r\n center = LatLng.convert(center)\r\n }\r\n else {\r\n center = this.center\r\n }\r\n let centerInMeters = ProjectionMercator.convertToMeterFromLatLng(center)\r\n let transformedCoordinates: LatLng[] = []\r\n let degreeInRadians = MathUtils.toRadians(degree)\r\n this.coordinates.forEach(coordinate => {\r\n let point = ProjectionMercator.convertToMeterFromLatLng(coordinate)\r\n point.x -= centerInMeters.x\r\n point.y -= centerInMeters.y\r\n\r\n let x = point.x\r\n let y = point.y\r\n point.x = (x * Math.cos(degreeInRadians) - y * Math.sin(degreeInRadians))\r\n point.y = (x * Math.sin(degreeInRadians) + y * Math.cos(degreeInRadians))\r\n\r\n transformedCoordinates.push(ProjectionMercator.convertToLatLngFromMeter(\r\n new Vector2(centerInMeters.x + point.x, centerInMeters.y + point.y)))\r\n })\r\n return transformedCoordinates\r\n }\r\n\r\n translate(target: ILatLng, anchor: ILatLng = null): LatLng[] {\r\n if (this.coordinates.length <= 0) {\r\n return []\r\n }\r\n let newCenter = LatLng.convert(target)\r\n let oldCenter = null\r\n if (anchor != null) {\r\n oldCenter = LatLng.convert(anchor)\r\n }\r\n else {\r\n oldCenter = this.center\r\n }\r\n\r\n let transformedCoordinates: LatLng[] = []\r\n let translateVectorX = newCenter.lng - oldCenter.lng\r\n let translateVectorY = newCenter.lat - oldCenter.lat\r\n this.coordinates.forEach(coordinate => {\r\n transformedCoordinates.push(new LatLng(coordinate.lat + translateVectorY,\r\n coordinate.lng + translateVectorX))\r\n })\r\n return transformedCoordinates\r\n }\r\n\r\n scale(scale: number, anchor: ILatLng = null): LatLng[] {\r\n if (this.coordinates.length <= 1) {\r\n return this.coordinates.slice()\r\n }\r\n let center = null\r\n if (anchor != null) {\r\n center = LatLng.convert(anchor)\r\n }\r\n else {\r\n center = this.center\r\n }\r\n\r\n let centerInMeters = ProjectionMercator.convertToMeterFromLatLng(center)\r\n let transformedCoordinates: LatLng[] = []\r\n this.coordinates.forEach(coordinate => {\r\n let point = ProjectionMercator.convertToMeterFromLatLng(coordinate)\r\n point.x -= centerInMeters.x\r\n point.y -= centerInMeters.y\r\n point.x *= scale\r\n point.y *= scale\r\n transformedCoordinates.push(ProjectionMercator.convertToLatLngFromMeter(\r\n new Vector2(centerInMeters.x + point.x, centerInMeters.y + point.y)))\r\n })\r\n return transformedCoordinates\r\n }\r\n\r\n get center(): LatLng {\r\n if (this.coordinates.length == 0) {\r\n return null as unknown as LatLng\r\n }\r\n let center = new LatLng(0, 0)\r\n for (let i = 0; i < this.coordinates.length; ++i) {\r\n center.lat += this.coordinates[i].lat\r\n center.lng += this.coordinates[i].lng\r\n }\r\n center.lat /= this.coordinates.length\r\n center.lng /= this.coordinates.length\r\n return center\r\n }\r\n}"]}