{"version":3,"sources":["projections/projections.tsx","projections/manager.tsx","../node_modules/web-ifc sync","engine-viewer.tsx","index.tsx","viewer/js/file-system-loader.ts","providers/auth-provider.tsx","providers/tools-provider.tsx","providers/viewer-provider.tsx","providers/task-queue-provider.tsx","providers/bookmarks-provider.tsx","hooks/use-dialog.tsx","hooks/use-task-queue.ts","hooks/use-viewer.ts","hooks/use-active-tool.ts","hooks/use-project-watcher.ts","hooks/use-popover.tsx","hooks/use-auth.ts","hooks/use-context-menu.ts","hooks/use-global-settings.ts","hooks/use-websockets.ts","hooks/use-bookmarks.ts","redux/assets-slice.ts","hooks/use-table-state.ts","viewer/js/projections.ts","redux/bookmarks-slice.ts","types/project.ts","classifications.ts","api/index.ts","api/folders.ts","api/tags.ts","api/bookmarks.ts","viewer/js/utilities/change-detection.ts","viewer/js/utilities/unit-converter.ts","viewer/js/utilities/misc-utils.ts","viewer/js/utilities/polygon.ts","viewer/js/utilities/parse.ts","viewer/js/utilities/mesh-utils.ts","viewer/js/utilities/image-utils.ts","types/controls.ts","redux/custom-links-slice.ts","viewer/js/worker-pool.ts","theme/colors.ts","theme/index.ts","types/measurements.ts","file-extensions.ts","components/buttons.tsx","components/dense-icon.tsx","components/dialogs.tsx","components/draggable-list.tsx","components/enhanced-table.tsx","components/menu-items.tsx","components/inputs.tsx","components/progress.tsx","components/tabs.tsx","components/toolbar.tsx","components/tooltips.tsx","components/memos.tsx","electron-menu.ts","components/language-switch/language-popover.tsx","components/language-switch/index.tsx","components/account-button/account-popover.tsx","components/account-button/index.tsx","components/toaster.tsx","components/links.tsx","components/color-picker.tsx","providers/global-settings-provider.tsx","providers/websocket-provider.tsx","utilities/dates.ts","viewer/textures/colormaps/classifications.png","redux/settings-slice.ts","urls.ts","redux/camera-slice.ts","executable.ts","move-settings.ts","electron-modules.ts","point-profile/point-profile.tsx","export/utils/misc.ts","localization/i18n.ts","localization/index.ts","redux/folders-slice.ts","viewer/js/measurements/land-xml-calculation.ts","viewer/textures/tag-icons/basic-pins/index.ts","viewer/textures/tag-icons/basic-pins/basic-pin-large-0.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-1.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-2.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-3.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-4.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-5.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-6.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-7.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-8.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-9.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-10.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-11.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-12.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-13.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-14.png","viewer/textures/tag-icons/basic-pins/basic-pin-large-15.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-0.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-1.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-2.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-3.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-4.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-5.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-6.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-7.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-8.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-9.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-10.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-11.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-12.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-13.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-14.png","viewer/textures/tag-icons/basic-pins/basic-pin-small-15.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-0.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-1.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-2.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-3.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-4.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-5.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-6.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-7.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-8.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-9.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-10.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-11.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-12.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-13.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-14.png","viewer/textures/tag-icons/basic-pins/basic-push-pin-15.png","viewer/textures/tag-icons/traffic-signs/index.ts","viewer/textures/tag-icons/traffic-signs/001-ahead only.png","viewer/textures/tag-icons/traffic-signs/002-crossroads.png","viewer/textures/tag-icons/traffic-signs/003-falling rocks.png","viewer/textures/tag-icons/traffic-signs/004-give way.png","viewer/textures/tag-icons/traffic-signs/005-hump.png","viewer/textures/tag-icons/traffic-signs/006-left turn.png","viewer/textures/tag-icons/traffic-signs/007-parking.png","viewer/textures/tag-icons/traffic-signs/008-level crossing.png","viewer/textures/tag-icons/traffic-signs/009-speed limit.png","viewer/textures/tag-icons/traffic-signs/010-narrow bridge.png","viewer/textures/tag-icons/traffic-signs/011-no bike.png","viewer/textures/tag-icons/traffic-signs/012-no trucks.png","viewer/textures/tag-icons/traffic-signs/013-no alarm.png","viewer/textures/tag-icons/traffic-signs/014-no turn left.png","viewer/textures/tag-icons/traffic-signs/015-no motorcycles.png","viewer/textures/tag-icons/traffic-signs/016-speed limit.png","viewer/textures/tag-icons/traffic-signs/017-no overtaking.png","viewer/textures/tag-icons/traffic-signs/018-pedestrian.png","viewer/textures/tag-icons/traffic-signs/019-no entry.png","viewer/textures/tag-icons/traffic-signs/020-u turn.png","viewer/textures/tag-icons/traffic-signs/021-Two way.png","viewer/textures/tag-icons/traffic-signs/022-pedestrian crossing.png","viewer/textures/tag-icons/traffic-signs/023-right turn.png","viewer/textures/tag-icons/traffic-signs/024-road work.png","viewer/textures/tag-icons/traffic-signs/025-roundabout.png","viewer/textures/tag-icons/traffic-signs/026-pedestrian crossing.png","viewer/textures/tag-icons/traffic-signs/027-Slippery road.png","viewer/textures/tag-icons/traffic-signs/028-traffic lights.png","viewer/textures/tag-icons/traffic-signs/029-turn left.png","viewer/textures/tag-icons/traffic-signs/030-turn right.png","viewer/textures/tag-icons/traffic-signs/031-uneven.png","viewer/textures/tag-icons/traffic-signs/032-maximum.png","viewer/textures/tag-icons/traffic-signs/033-wild animals.png","viewer/textures/tag-icons/uk-road-signs/index.ts","viewer/textures/tag-icons/uk-road-signs/001-narrow.png","viewer/textures/tag-icons/uk-road-signs/002-merge.png","viewer/textures/tag-icons/uk-road-signs/003-curve.png","viewer/textures/tag-icons/uk-road-signs/004-curve.png","viewer/textures/tag-icons/uk-road-signs/005-Junction.png","viewer/textures/tag-icons/uk-road-signs/006-curve.png","viewer/textures/tag-icons/uk-road-signs/007-crossroads.png","viewer/textures/tag-icons/uk-road-signs/008-hump.png","viewer/textures/tag-icons/uk-road-signs/009-uneven.png","viewer/textures/tag-icons/uk-road-signs/010-roundabout.png","viewer/textures/tag-icons/uk-road-signs/011-Two way.png","viewer/textures/tag-icons/uk-road-signs/012-Junction.png","viewer/textures/tag-icons/uk-road-signs/013-Junction.png","viewer/textures/tag-icons/uk-road-signs/014-Two way.png","viewer/textures/tag-icons/uk-road-signs/015-level.png","viewer/textures/tag-icons/uk-road-signs/016-warning.png","viewer/textures/tag-icons/uk-road-signs/017-hump.png","viewer/textures/tag-icons/uk-road-signs/018-dock.png","viewer/textures/tag-icons/uk-road-signs/019-merge.png","viewer/textures/tag-icons/uk-road-signs/020-falling rocks.png","viewer/textures/tag-icons/uk-road-signs/021-speed limit.png","viewer/textures/tag-icons/uk-road-signs/022-speed limit.png","viewer/textures/tag-icons/uk-road-signs/023-speed limit.png","viewer/textures/tag-icons/uk-road-signs/024-speed limit.png","viewer/textures/tag-icons/uk-road-signs/025-speed limit.png","viewer/textures/tag-icons/uk-road-signs/026-speed limit.png","viewer/textures/tag-icons/uk-road-signs/027-speed limit.png","viewer/textures/tag-icons/uk-road-signs/028-priority.png","viewer/textures/tag-icons/uk-road-signs/029-no overtaking.png","viewer/textures/tag-icons/uk-road-signs/030-no turn right.png","viewer/textures/tag-icons/uk-road-signs/031-u turn.png","viewer/textures/tag-icons/uk-road-signs/032-no stopping.png","viewer/textures/tag-icons/uk-road-signs/033-no waiting.png","viewer/textures/tag-icons/uk-road-signs/034-ahead.png","viewer/textures/tag-icons/uk-road-signs/035-turn left.png","viewer/textures/tag-icons/uk-road-signs/036-keep left.png","viewer/textures/tag-icons/uk-road-signs/037-direction.png","viewer/textures/tag-icons/uk-road-signs/038-turn left.png","viewer/textures/tag-icons/uk-road-signs/039-roundabout.png","viewer/textures/tag-icons/uk-road-signs/040-no entry.png","viewer/textures/tag-icons/uk-road-signs/041-parking.png","viewer/textures/tag-icons/uk-road-signs/042-priority.png","viewer/textures/tag-icons/uk-road-signs/043-cul de sac.png","viewer/textures/tag-icons/uk-road-signs/044-countdown.png","viewer/textures/tag-icons/uk-road-signs/045-countdown.png","viewer/textures/tag-icons/uk-road-signs/046-countdown.png","viewer/textures/tag-icons/uk-road-signs/047-hospital.png","viewer/textures/tag-icons/uk-road-signs/048-information.png","viewer/textures/tag-icons/uk-road-signs/049-speed camera.png","viewer/textures/tag-icons/uk-road-signs/050-lane.png","viewer/textures/tag-icons/uk-road-signs/051-end motorway.png","viewer/textures/tag-icons/uk-road-signs/052-motorway.png","viewer/textures/tag-icons/uk-road-signs/053-one way.png","viewer/textures/tag-icons/uk-road-signs/054-direction.png","viewer/textures/tag-icons/uk-road-signs/055-stop.png","viewer/textures/tag-icons/uk-road-signs/056-road.png","viewer/textures/tag-icons/uk-road-signs/057-emergency diversion.png","viewer/textures/tag-icons/uk-road-signs/058-emergency diversion.png","viewer/textures/tag-icons/uk-road-signs/059-emergency diversion.png","viewer/textures/tag-icons/uk-road-signs/060-emergency diversion.png","viewer/textures/tag-icons/package_objects/index.ts","viewer/textures/tag-icons/package_objects/construction--barrier--temporary.png","viewer/textures/tag-icons/package_objects/construction--flat--crosswalk-plain.png","viewer/textures/tag-icons/package_objects/construction--flat--driveway.png","viewer/textures/tag-icons/package_objects/construction--flat--flat-driveway.png","viewer/textures/tag-icons/package_objects/marking--discrete--arrow--left.png","viewer/textures/tag-icons/package_objects/marking--discrete--arrow--right.png","viewer/textures/tag-icons/package_objects/marking--discrete--arrow--split-left-or-straight.png","viewer/textures/tag-icons/package_objects/marking--discrete--arrow--split-right-or-straight.png","viewer/textures/tag-icons/package_objects/marking--discrete--arrow--straight.png","viewer/textures/tag-icons/package_objects/marking--discrete--crosswalk-zebra.png","viewer/textures/tag-icons/package_objects/marking--discrete--give-way-row.png","viewer/textures/tag-icons/package_objects/marking--discrete--give-way-single.png","viewer/textures/tag-icons/package_objects/marking--discrete--other-marking.png","viewer/textures/tag-icons/package_objects/marking--discrete--stop-line.png","viewer/textures/tag-icons/package_objects/marking--discrete--symbol--bicycle.png","viewer/textures/tag-icons/package_objects/marking--discrete--text.png","viewer/textures/tag-icons/package_objects/object--banner.png","viewer/textures/tag-icons/package_objects/object--bench.png","viewer/textures/tag-icons/package_objects/object--bike-rack.png","viewer/textures/tag-icons/package_objects/object--catch-basin.png","viewer/textures/tag-icons/package_objects/object--cctv-camera.png","viewer/textures/tag-icons/package_objects/object--fire-hydrant.png","viewer/textures/tag-icons/package_objects/object--junction-box.png","viewer/textures/tag-icons/package_objects/object--mailbox.png","viewer/textures/tag-icons/package_objects/object--manhole.png","viewer/textures/tag-icons/package_objects/object--parking-meter.png","viewer/textures/tag-icons/package_objects/object--phone-booth.png","viewer/textures/tag-icons/package_objects/object--sign--advertisement.png","viewer/textures/tag-icons/package_objects/object--sign--information.png","viewer/textures/tag-icons/package_objects/object--sign--store.png","viewer/textures/tag-icons/package_objects/object--street-light.png","viewer/textures/tag-icons/package_objects/object--support--pole.png","viewer/textures/tag-icons/package_objects/object--support--traffic-sign-frame.png","viewer/textures/tag-icons/package_objects/object--support--utility-pole.png","viewer/textures/tag-icons/package_objects/object--traffic-cone.png","viewer/textures/tag-icons/package_objects/object--traffic-light.png","viewer/textures/tag-icons/package_objects/object--trash-can.png","viewer/textures/tag-icons/package_objects/object--water-valve.png","viewer/textures/tag-icons/package_signs/complementary--accident-area--g1.png","viewer/textures/tag-icons/package_signs/complementary--accident-area--g2.png","viewer/textures/tag-icons/package_signs/complementary--accident-area--g3.png","viewer/textures/tag-icons/package_signs/complementary--accident-area--g4.png","viewer/textures/tag-icons/package_signs/complementary--advisory-exit-or-ramp-speed--g1.png","viewer/textures/tag-icons/package_signs/complementary--bicycles--g1.png","viewer/textures/tag-icons/package_signs/complementary--bicycles-and-pedestrians-detour--g1.png","viewer/textures/tag-icons/package_signs/complementary--bicycles-or-pedestrians-detour--g1.png","viewer/textures/tag-icons/package_signs/complementary--bicycles-turn-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--bike-route--g1.png","viewer/textures/tag-icons/package_signs/complementary--bike-route--g3.png","viewer/textures/tag-icons/package_signs/complementary--both-directions--g1.png","viewer/textures/tag-icons/package_signs/complementary--both-directions--g2.png","viewer/textures/tag-icons/package_signs/complementary--buses--g1.png","viewer/textures/tag-icons/package_signs/complementary--buses-and-trucks--g1.png","viewer/textures/tag-icons/package_signs/complementary--camera--g1.png","viewer/textures/tag-icons/package_signs/complementary--camera--g2.png","viewer/textures/tag-icons/package_signs/complementary--camera--g3.png","viewer/textures/tag-icons/package_signs/complementary--camera--g4.png","viewer/textures/tag-icons/package_signs/complementary--camera--g5.png","viewer/textures/tag-icons/package_signs/complementary--caravan-trailers--g2.png","viewer/textures/tag-icons/package_signs/complementary--caravan-trailers--g3.png","viewer/textures/tag-icons/package_signs/complementary--caravans--g2.png","viewer/textures/tag-icons/package_signs/complementary--carts--g1.png","viewer/textures/tag-icons/package_signs/complementary--chevron-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--chevron-left--g2.png","viewer/textures/tag-icons/package_signs/complementary--chevron-left--g3.png","viewer/textures/tag-icons/package_signs/complementary--chevron-left--g4.png","viewer/textures/tag-icons/package_signs/complementary--chevron-left--g5.png","viewer/textures/tag-icons/package_signs/complementary--chevron-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--chevron-right--g2.png","viewer/textures/tag-icons/package_signs/complementary--chevron-right--g3.png","viewer/textures/tag-icons/package_signs/complementary--chevron-right--g4.png","viewer/textures/tag-icons/package_signs/complementary--chevron-right--g5.png","viewer/textures/tag-icons/package_signs/complementary--dangerous-or-pollutant-good--g1.png","viewer/textures/tag-icons/package_signs/complementary--dead-end--g1.png","viewer/textures/tag-icons/package_signs/complementary--detour--g1.png","viewer/textures/tag-icons/package_signs/complementary--disabled-persons--g1.png","viewer/textures/tag-icons/package_signs/complementary--distance--g1.png","viewer/textures/tag-icons/package_signs/complementary--distance--g2.png","viewer/textures/tag-icons/package_signs/complementary--distance--g3.png","viewer/textures/tag-icons/package_signs/complementary--end-of-road-works--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-bicycles--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-bicycles--g2.png","viewer/textures/tag-icons/package_signs/complementary--except-buses--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-carts--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-motorcycles--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-motorcycles--g2.png","viewer/textures/tag-icons/package_signs/complementary--except-polluting-level-green--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-polluting-level-green-yellow--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-polluting-level-green-yellow-red--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-tractors--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-tractors--g2.png","viewer/textures/tag-icons/package_signs/complementary--except-trailers--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-trailers--g2.png","viewer/textures/tag-icons/package_signs/complementary--except-trains--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-trams--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-trucks--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-vehicles--g1.png","viewer/textures/tag-icons/package_signs/complementary--except-vehicles--g2.png","viewer/textures/tag-icons/package_signs/complementary--go-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--go-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--go-straight-or-turn-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--go-straight-or-turn-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--height-limit--g1.png","viewer/textures/tag-icons/package_signs/complementary--height-limit--g2.png","viewer/textures/tag-icons/package_signs/complementary--including-bicycles-and-motorcycles--g1.png","viewer/textures/tag-icons/package_signs/complementary--including-buses-vehicles--g1.png","viewer/textures/tag-icons/package_signs/complementary--keep-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--keep-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--lane-control--g1.png","viewer/textures/tag-icons/package_signs/complementary--lane-control--g2.png","viewer/textures/tag-icons/package_signs/complementary--lane-control--g3.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-10--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-15--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-20--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-25--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-30--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-35--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-40--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-45--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-50--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-55--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-60--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-65--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-70--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-75--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-80--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-85--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-90--g1.png","viewer/textures/tag-icons/package_signs/complementary--maximum-speed-limit-95--g1.png","viewer/textures/tag-icons/package_signs/complementary--motorcycles--g1.png","viewer/textures/tag-icons/package_signs/complementary--motorcycles--g2.png","viewer/textures/tag-icons/package_signs/complementary--motorcycles--g3.png","viewer/textures/tag-icons/package_signs/complementary--motorcycles--g4.png","viewer/textures/tag-icons/package_signs/complementary--obstacle-delineator--g1.png","viewer/textures/tag-icons/package_signs/complementary--obstacle-delineator--g2.png","viewer/textures/tag-icons/package_signs/complementary--obstacle-delineator--g3.png","viewer/textures/tag-icons/package_signs/complementary--one-direction-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--one-direction-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--pass-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--pass-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--pedestrians-and-bicycles--g1.png","viewer/textures/tag-icons/package_signs/complementary--pedestrians-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--pedestrians-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--photo-enforced--g1.png","viewer/textures/tag-icons/package_signs/complementary--playground--g1.png","viewer/textures/tag-icons/package_signs/complementary--priority-route-at-intersection--g1.png","viewer/textures/tag-icons/package_signs/complementary--priority-route-at-intersection--g2.png","viewer/textures/tag-icons/package_signs/complementary--priority-route-at-intersection--g3.png","viewer/textures/tag-icons/package_signs/complementary--priority-route-at-intersection--g4.png","viewer/textures/tag-icons/package_signs/complementary--priority-route-at-intersection--g5.png","viewer/textures/tag-icons/package_signs/complementary--priority-route-at-intersection--g6.png","viewer/textures/tag-icons/package_signs/complementary--railroad--g1.png","viewer/textures/tag-icons/package_signs/complementary--railroad--g2.png","viewer/textures/tag-icons/package_signs/complementary--railroad--g3.png","viewer/textures/tag-icons/package_signs/complementary--restriction-in-both-directions--g1.png","viewer/textures/tag-icons/package_signs/complementary--roundabout-go-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--roundabout-go-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--roundabout-go-straight--g1.png","viewer/textures/tag-icons/package_signs/complementary--slippery-for-caravan-trailers--g1.png","viewer/textures/tag-icons/package_signs/complementary--snow--g2.png","viewer/textures/tag-icons/package_signs/complementary--snow--g4.png","viewer/textures/tag-icons/package_signs/complementary--snow--g5.png","viewer/textures/tag-icons/package_signs/complementary--snowmobiles--g1.png","viewer/textures/tag-icons/package_signs/complementary--soft-shoulder--g1.png","viewer/textures/tag-icons/package_signs/complementary--soft-shoulder--g2.png","viewer/textures/tag-icons/package_signs/complementary--steep-ascent--g1.png","viewer/textures/tag-icons/package_signs/complementary--steep-descent--g1.png","viewer/textures/tag-icons/package_signs/complementary--time-restrictions--g1.png","viewer/textures/tag-icons/package_signs/complementary--time-restrictions--g3.png","viewer/textures/tag-icons/package_signs/complementary--tow-away-zone--g1.png","viewer/textures/tag-icons/package_signs/complementary--tow-away-zone--g3.png","viewer/textures/tag-icons/package_signs/complementary--tractors--g1.png","viewer/textures/tag-icons/package_signs/complementary--traffic-queues--g1.png","viewer/textures/tag-icons/package_signs/complementary--trailers--g1.png","viewer/textures/tag-icons/package_signs/complementary--trailers--g2.png","viewer/textures/tag-icons/package_signs/complementary--trailers--g3.png","viewer/textures/tag-icons/package_signs/complementary--trailers--g4.png","viewer/textures/tag-icons/package_signs/complementary--trains--g1.png","viewer/textures/tag-icons/package_signs/complementary--trams--g1.png","viewer/textures/tag-icons/package_signs/complementary--trees--g1.png","viewer/textures/tag-icons/package_signs/complementary--trucks--g1.png","viewer/textures/tag-icons/package_signs/complementary--trucks--g2.png","viewer/textures/tag-icons/package_signs/complementary--trucks--g3.png","viewer/textures/tag-icons/package_signs/complementary--trucks-and-trailers--g1.png","viewer/textures/tag-icons/package_signs/complementary--trucks-buses-trailers--g1.png","viewer/textures/tag-icons/package_signs/complementary--trucks-go-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--trucks-go-left-ahead--g1.png","viewer/textures/tag-icons/package_signs/complementary--trucks-go-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--trucks-go-right-ahead--g1.png","viewer/textures/tag-icons/package_signs/complementary--trucks-go-straight--g1.png","viewer/textures/tag-icons/package_signs/complementary--trucks-turn-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--trucks-turn-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--turn-left--g1.png","viewer/textures/tag-icons/package_signs/complementary--turn-left--g2.png","viewer/textures/tag-icons/package_signs/complementary--turn-right--g1.png","viewer/textures/tag-icons/package_signs/complementary--turn-right--g2.png","viewer/textures/tag-icons/package_signs/complementary--two-way-traffic--g1.png","viewer/textures/tag-icons/package_signs/complementary--two-way-traffic--g2.png","viewer/textures/tag-icons/package_signs/complementary--two-way-traffic--g3.png","viewer/textures/tag-icons/package_signs/complementary--two-way-traffic--g4.png","viewer/textures/tag-icons/package_signs/complementary--two-way-traffic--g5.png","viewer/textures/tag-icons/package_signs/complementary--vehicles--g1.png","viewer/textures/tag-icons/package_signs/complementary--vehicles--g2.png","viewer/textures/tag-icons/package_signs/complementary--vehicles-or-buses--g1.png","viewer/textures/tag-icons/package_signs/complementary--weekends-or-holidays--g1.png","viewer/textures/tag-icons/package_signs/complementary--weight-limit--g1.png","viewer/textures/tag-icons/package_signs/complementary--when-foggy--g1.png","viewer/textures/tag-icons/package_signs/complementary--when-rainy--g1.png","viewer/textures/tag-icons/package_signs/complementary--when-rainy--g2.png","viewer/textures/tag-icons/package_signs/complementary--when-rainy--g3.png","viewer/textures/tag-icons/package_signs/complementary--when-snowy--g1.png","viewer/textures/tag-icons/package_signs/complementary--when-snowy--g2.png","viewer/textures/tag-icons/package_signs/complementary--when-snowy-or-rainy--g1.png","viewer/textures/tag-icons/package_signs/complementary--when-snowy-or-rainy--g2.png","viewer/textures/tag-icons/package_signs/complementary--when-wet--g1.png","viewer/textures/tag-icons/package_signs/complementary--width-limit--g1.png","viewer/textures/tag-icons/package_signs/complementary--working-days--g1.png","viewer/textures/tag-icons/package_signs/information--airport--g1.png","viewer/textures/tag-icons/package_signs/information--airport--g2.png","viewer/textures/tag-icons/package_signs/information--bicycle-lane--g1.png","viewer/textures/tag-icons/package_signs/information--bicycles-both-ways--g1.png","viewer/textures/tag-icons/package_signs/information--bicycles-crossing--g1.png","viewer/textures/tag-icons/package_signs/information--bicycles-crossing--g2.png","viewer/textures/tag-icons/package_signs/information--bicycles-crossing--g3.png","viewer/textures/tag-icons/package_signs/information--bike-route--g1.png","viewer/textures/tag-icons/package_signs/information--bike-route--g2.png","viewer/textures/tag-icons/package_signs/information--built-up-area--g1.png","viewer/textures/tag-icons/package_signs/information--built-up-area--g2.png","viewer/textures/tag-icons/package_signs/information--bus-lane-straight--g1.png","viewer/textures/tag-icons/package_signs/information--bus-stop--g1.png","viewer/textures/tag-icons/package_signs/information--bus-stop--g2.png","viewer/textures/tag-icons/package_signs/information--camera--g1.png","viewer/textures/tag-icons/package_signs/information--camera--g2.png","viewer/textures/tag-icons/package_signs/information--camera--g3.png","viewer/textures/tag-icons/package_signs/information--camp--g1.png","viewer/textures/tag-icons/package_signs/information--camp--g2.png","viewer/textures/tag-icons/package_signs/information--car-pool-lane--g1.png","viewer/textures/tag-icons/package_signs/information--caravan-parking--g1.png","viewer/textures/tag-icons/package_signs/information--caravan-trailer-parking--g1.png","viewer/textures/tag-icons/package_signs/information--cargo-loading-zone--g1.png","viewer/textures/tag-icons/package_signs/information--central-lane--g1.png","viewer/textures/tag-icons/package_signs/information--charging-station--g1.png","viewer/textures/tag-icons/package_signs/information--children--g1.png","viewer/textures/tag-icons/package_signs/information--children--g2.png","viewer/textures/tag-icons/package_signs/information--children-crossing--g5.png","viewer/textures/tag-icons/package_signs/information--cycling-two-abreast-permitted--g1.png","viewer/textures/tag-icons/package_signs/information--dead-end--g1.png","viewer/textures/tag-icons/package_signs/information--dead-end--g2.png","viewer/textures/tag-icons/package_signs/information--dead-end--g3.png","viewer/textures/tag-icons/package_signs/information--dead-end--g4.png","viewer/textures/tag-icons/package_signs/information--dead-end-except-bicycles--g1.png","viewer/textures/tag-icons/package_signs/information--dead-end-except-bicycles-and-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/information--dead-end-except-bicycles-and-pedestrians--g2.png","viewer/textures/tag-icons/package_signs/information--dead-end-left--g1.png","viewer/textures/tag-icons/package_signs/information--dead-end-left--g2.png","viewer/textures/tag-icons/package_signs/information--dead-end-right--g1.png","viewer/textures/tag-icons/package_signs/information--dead-end-right--g2.png","viewer/textures/tag-icons/package_signs/information--dead-end-right--g3.png","viewer/textures/tag-icons/package_signs/information--directions--g1.png","viewer/textures/tag-icons/package_signs/information--disabled-persons--g1.png","viewer/textures/tag-icons/package_signs/information--disabled-persons--g2.png","viewer/textures/tag-icons/package_signs/information--disabled-persons--g3.png","viewer/textures/tag-icons/package_signs/information--emergency-facility--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-advisory-maximum-speed-limit-20--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-advisory-maximum-speed-limit-40--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-advisory-maximum-speed-limit-60--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-advisory-maximum-speed-limit-70--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-advisory-maximum-speed-limit-80--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-advisory-maximum-speed-limit-90--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-bicycle-lane--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-built-up-area--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-built-up-area--g2.png","viewer/textures/tag-icons/package_signs/information--end-of-built-up-area--g3.png","viewer/textures/tag-icons/package_signs/information--end-of-built-up-area--g4.png","viewer/textures/tag-icons/package_signs/information--end-of-car-pool-lane--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-limited-access-road--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-living-street--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-living-street--g2.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-10--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-20--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-25--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-30--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-35--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-40--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-50--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-60--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-70--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-75--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-80--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-90--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-100--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-110--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-120--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-minimum-speed-130--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-motorway--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-overtaking-permitted-heavy-good-vehicles--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-road-works--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-tunnel--g1.png","viewer/textures/tag-icons/package_signs/information--end-of-tunnel--g2.png","viewer/textures/tag-icons/package_signs/information--end-of-two-way-traffic--g1.png","viewer/textures/tag-icons/package_signs/information--equestrians-permitted--g1.png","viewer/textures/tag-icons/package_signs/information--exit-ahead--g1.png","viewer/textures/tag-icons/package_signs/information--exit-ahead--g2.png","viewer/textures/tag-icons/package_signs/information--exit-ahead--g3.png","viewer/textures/tag-icons/package_signs/information--flight-port--g1.png","viewer/textures/tag-icons/package_signs/information--food--g1.png","viewer/textures/tag-icons/package_signs/information--food--g2.png","viewer/textures/tag-icons/package_signs/information--gas-station--g1.png","viewer/textures/tag-icons/package_signs/information--gas-station--g2.png","viewer/textures/tag-icons/package_signs/information--gas-station--g3.png","viewer/textures/tag-icons/package_signs/information--general-speed-limit-at-city-border--g1.png","viewer/textures/tag-icons/package_signs/information--go-left--g1.png","viewer/textures/tag-icons/package_signs/information--go-right--g1.png","viewer/textures/tag-icons/package_signs/information--go-straight--g1.png","viewer/textures/tag-icons/package_signs/information--go-straight-or-left--g1.png","viewer/textures/tag-icons/package_signs/information--go-straight-or-right--g1.png","viewer/textures/tag-icons/package_signs/information--go-straight-or-turn-left--g1.png","viewer/textures/tag-icons/package_signs/information--go-straight-or-turn-right--g1.png","viewer/textures/tag-icons/package_signs/information--hazardous-goods-vehicles-lane--g1.png","viewer/textures/tag-icons/package_signs/information--height-limit--g1.png","viewer/textures/tag-icons/package_signs/information--height-limit--g2.png","viewer/textures/tag-icons/package_signs/information--highway-directions--g1.png","viewer/textures/tag-icons/package_signs/information--highway-exit--g1.png","viewer/textures/tag-icons/package_signs/information--highway-interchange--g1.png","viewer/textures/tag-icons/package_signs/information--highway-interstate-route--g1.png","viewer/textures/tag-icons/package_signs/information--highway-interstate-route--g2.png","viewer/textures/tag-icons/package_signs/information--highway-preferential-lane--g1.png","viewer/textures/tag-icons/package_signs/information--highway-preferential-lane--g2.png","viewer/textures/tag-icons/package_signs/information--highway-reference-location--g1.png","viewer/textures/tag-icons/package_signs/information--highway-reference-location--g2.png","viewer/textures/tag-icons/package_signs/information--hiking--g1.png","viewer/textures/tag-icons/package_signs/information--hospital--g1.png","viewer/textures/tag-icons/package_signs/information--hurricane-evacuation-route--g1.png","viewer/textures/tag-icons/package_signs/information--interstate-route--g1.png","viewer/textures/tag-icons/package_signs/information--lane-control-intersections--g1.png","viewer/textures/tag-icons/package_signs/information--lane-control-left-turn--g1.png","viewer/textures/tag-icons/package_signs/information--lane-control-multiple-lanes--g1.png","viewer/textures/tag-icons/package_signs/information--lane-control-multiple-lanes--g2.png","viewer/textures/tag-icons/package_signs/information--lane-control-right-turn--g1.png","viewer/textures/tag-icons/package_signs/information--limited-access-road--g1.png","viewer/textures/tag-icons/package_signs/information--litter-container--g1.png","viewer/textures/tag-icons/package_signs/information--living-street--g1.png","viewer/textures/tag-icons/package_signs/information--living-street--g2.png","viewer/textures/tag-icons/package_signs/information--living-street--g3.png","viewer/textures/tag-icons/package_signs/information--lodging--g1.png","viewer/textures/tag-icons/package_signs/information--lodging--g2.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-10--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-20--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-25--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-30--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-35--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-40--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-50--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-60--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-70--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-75--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-80--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-90--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-100--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-110--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-120--g1.png","viewer/textures/tag-icons/package_signs/information--minimum-speed-130--g1.png","viewer/textures/tag-icons/package_signs/information--motorway--g1.png","viewer/textures/tag-icons/package_signs/information--motorway-exit-ahead--g1.png","viewer/textures/tag-icons/package_signs/information--motorway-exit-ahead--g2.png","viewer/textures/tag-icons/package_signs/information--motorway-exit-ahead--g3.png","viewer/textures/tag-icons/package_signs/information--overtaking-allowed-heavy-good-vehicles--g1.png","viewer/textures/tag-icons/package_signs/information--parallel-parking--g1.png","viewer/textures/tag-icons/package_signs/information--park-and-ride--g1.png","viewer/textures/tag-icons/package_signs/information--park-and-ride--g2.png","viewer/textures/tag-icons/package_signs/information--parking--g1.png","viewer/textures/tag-icons/package_signs/information--parking--g2.png","viewer/textures/tag-icons/package_signs/information--parking--g3.png","viewer/textures/tag-icons/package_signs/information--parking--g4.png","viewer/textures/tag-icons/package_signs/information--parking--g5.png","viewer/textures/tag-icons/package_signs/information--parking--g6.png","viewer/textures/tag-icons/package_signs/information--parking-area--g1.png","viewer/textures/tag-icons/package_signs/information--parking-with-restrictions--g1.png","viewer/textures/tag-icons/package_signs/information--pass-on-either-side--g1.png","viewer/textures/tag-icons/package_signs/information--passenger-loading-zone--g1.png","viewer/textures/tag-icons/package_signs/information--pedestrians-crossing--g1.png","viewer/textures/tag-icons/package_signs/information--pedestrians-crossing--g2.png","viewer/textures/tag-icons/package_signs/information--pedestrians-crossing--g3.png","viewer/textures/tag-icons/package_signs/information--pedestrians-only--g4.png","viewer/textures/tag-icons/package_signs/information--pedestrians-permitted--g1.png","viewer/textures/tag-icons/package_signs/information--perpendicular-parking--g1.png","viewer/textures/tag-icons/package_signs/information--picnic-site--g1.png","viewer/textures/tag-icons/package_signs/information--playground--g1.png","viewer/textures/tag-icons/package_signs/information--recreational-vehicle-sanitary-station--g1.png","viewer/textures/tag-icons/package_signs/information--recycle-collection-center--g1.png","viewer/textures/tag-icons/package_signs/information--rest-area--g1.png","viewer/textures/tag-icons/package_signs/information--road-bump--g1.png","viewer/textures/tag-icons/package_signs/information--road-skating--g1.png","viewer/textures/tag-icons/package_signs/information--safety-zone--g1.png","viewer/textures/tag-icons/package_signs/information--safety-zone--g2.png","viewer/textures/tag-icons/package_signs/information--safety-zone--g3.png","viewer/textures/tag-icons/package_signs/information--shared-path-vehicles-and-motorcycles--g1.png","viewer/textures/tag-icons/package_signs/information--stairs--g1.png","viewer/textures/tag-icons/package_signs/information--stairs--g2.png","viewer/textures/tag-icons/package_signs/information--stairs--g3.png","viewer/textures/tag-icons/package_signs/information--stairs--g4.png","viewer/textures/tag-icons/package_signs/information--stop-line--g1.png","viewer/textures/tag-icons/package_signs/information--stop-permitted--g1.png","viewer/textures/tag-icons/package_signs/information--street-name-one-line--g1.png","viewer/textures/tag-icons/package_signs/information--street-name-three-lines--g1.png","viewer/textures/tag-icons/package_signs/information--street-name-two-lines--g1.png","viewer/textures/tag-icons/package_signs/information--subway--g1.png","viewer/textures/tag-icons/package_signs/information--telephone--g1.png","viewer/textures/tag-icons/package_signs/information--telephone--g2.png","viewer/textures/tag-icons/package_signs/information--telephone-device-for-the-deaf--g1.png","viewer/textures/tag-icons/package_signs/information--toll-station--g1.png","viewer/textures/tag-icons/package_signs/information--tourism-information--g1.png","viewer/textures/tag-icons/package_signs/information--tourist-attraction--g1.png","viewer/textures/tag-icons/package_signs/information--traffic-merges-left--g1.png","viewer/textures/tag-icons/package_signs/information--traffic-merges-right--g1.png","viewer/textures/tag-icons/package_signs/information--trail-crossing--g1.png","viewer/textures/tag-icons/package_signs/information--trail-crossing--g2.png","viewer/textures/tag-icons/package_signs/information--trail-crossing--g3.png","viewer/textures/tag-icons/package_signs/information--trailer-camping--g1.png","viewer/textures/tag-icons/package_signs/information--train-or-light-rail-station--g1.png","viewer/textures/tag-icons/package_signs/information--tram-bus-stop--g1.png","viewer/textures/tag-icons/package_signs/information--tram-bus-stop--g2.png","viewer/textures/tag-icons/package_signs/information--trams-crossing--g1.png","viewer/textures/tag-icons/package_signs/information--truck-lane-left--g1.png","viewer/textures/tag-icons/package_signs/information--truck-parking--g1.png","viewer/textures/tag-icons/package_signs/information--truck-trailer-lane-right--g1.png","viewer/textures/tag-icons/package_signs/information--truck-trailer-lane-straight--g1.png","viewer/textures/tag-icons/package_signs/information--trucks-both-ways--g1.png","viewer/textures/tag-icons/package_signs/information--trucks-only--g1.png","viewer/textures/tag-icons/package_signs/information--tsunami-evacuation_route--g1.png","viewer/textures/tag-icons/package_signs/information--tunnel--g1.png","viewer/textures/tag-icons/package_signs/information--tunnel--g2.png","viewer/textures/tag-icons/package_signs/information--tunnel--g3.png","viewer/textures/tag-icons/package_signs/information--tunnel-ahead--g1.png","viewer/textures/tag-icons/package_signs/information--turn-left--g1.png","viewer/textures/tag-icons/package_signs/information--turn-left-ahead--g1.png","viewer/textures/tag-icons/package_signs/information--turn-right--g1.png","viewer/textures/tag-icons/package_signs/information--turn-right-ahead--g1.png","viewer/textures/tag-icons/package_signs/information--urban-area--g1.png","viewer/textures/tag-icons/package_signs/information--vehicles-on-rails--g1.png","viewer/textures/tag-icons/package_signs/information--water-protection-zone--g1.png","viewer/textures/tag-icons/package_signs/information--weight-and-height-limit--g1.png","viewer/textures/tag-icons/package_signs/information--weight-limit--g1.png","viewer/textures/tag-icons/package_signs/information--wireless-internet--g1.png","viewer/textures/tag-icons/package_signs/regulatory--advisory-maximum-speed-limit--g1.png","viewer/textures/tag-icons/package_signs/regulatory--all-directions-permitted--g1.png","viewer/textures/tag-icons/package_signs/regulatory--all-way--g1.png","viewer/textures/tag-icons/package_signs/regulatory--atvs-permitted--g1.png","viewer/textures/tag-icons/package_signs/regulatory--axle-limit--g1.png","viewer/textures/tag-icons/package_signs/regulatory--axle-limit--g2.png","viewer/textures/tag-icons/package_signs/regulatory--bicycle-lane-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--bicycle-parking--g1.png","viewer/textures/tag-icons/package_signs/regulatory--bicycles-and-buses-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--bicycles-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--bicycles-only--g2.png","viewer/textures/tag-icons/package_signs/regulatory--bicycles-only--g3.png","viewer/textures/tag-icons/package_signs/regulatory--bicycles-only--g4.png","viewer/textures/tag-icons/package_signs/regulatory--bicycles-push-button--g1.png","viewer/textures/tag-icons/package_signs/regulatory--bicycles-push-button--g2.png","viewer/textures/tag-icons/package_signs/regulatory--bicycles-stop-on-red--g1.png","viewer/textures/tag-icons/package_signs/regulatory--bicycles-wrong-way--g1.png","viewer/textures/tag-icons/package_signs/regulatory--bicycles-yield-or-use-signal--g1.png","viewer/textures/tag-icons/package_signs/regulatory--bike-route--g1.png","viewer/textures/tag-icons/package_signs/regulatory--building-direction--g1.png","viewer/textures/tag-icons/package_signs/regulatory--bus-priority-lane--g1.png","viewer/textures/tag-icons/package_signs/regulatory--buses-and-taxi-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--buses-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--buses-only--g2.png","viewer/textures/tag-icons/package_signs/regulatory--circular-intersection--g1.png","viewer/textures/tag-icons/package_signs/regulatory--circular-intersection--g2.png","viewer/textures/tag-icons/package_signs/regulatory--circular-intersection--g3.png","viewer/textures/tag-icons/package_signs/regulatory--circular-intersection--g4.png","viewer/textures/tag-icons/package_signs/regulatory--cross-only-on-green--g1.png","viewer/textures/tag-icons/package_signs/regulatory--cross-only-on-pedestrian-signal--g1.png","viewer/textures/tag-icons/package_signs/regulatory--crosswalk-stop-on-red--g1.png","viewer/textures/tag-icons/package_signs/regulatory--cycling-restriction--g1.png","viewer/textures/tag-icons/package_signs/regulatory--cyclists-dismount-and-walk--g1.png","viewer/textures/tag-icons/package_signs/regulatory--detour-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--detour-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--divided-highway-crossing--g1.png","viewer/textures/tag-icons/package_signs/regulatory--divided-highway-ends--g1.png","viewer/textures/tag-icons/package_signs/regulatory--divided-highway-starts--g1.png","viewer/textures/tag-icons/package_signs/regulatory--do-not-block-intersection--g1.png","viewer/textures/tag-icons/package_signs/regulatory--do-not-pass--g1.png","viewer/textures/tag-icons/package_signs/regulatory--do-not-stop-on-tracks--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-lanes-all-directions-on-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-lanes-all-directions-on-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-lanes-bicyclists-and-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-lanes-go-left-or-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-lanes-go-straight-on-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-lanes-go-straight-on-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-lanes-turn-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-lanes-turn-left-no-u-turn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-lanes-turn-left-or-straight--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-lanes-turn-right-or-straight--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-path-bicycles-and-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-path-bicycles-and-pedestrians--g2.png","viewer/textures/tag-icons/package_signs/regulatory--dual-path-bicycles-and-pedestrians--g3.png","viewer/textures/tag-icons/package_signs/regulatory--dual-path-equestrians-and-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-path-equestrians-and-pedestrians-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-path-pedestrians-and-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-path-pedestrians-and-bicycles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--dual-path-pedestrians-and-equestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-path-pedestrians-bicycles-and-equestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-speed-limits--g1.png","viewer/textures/tag-icons/package_signs/regulatory--dual-speed-limits--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-bicycles-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-bicycles-only--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-bus-and-taxi-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-buses-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-buses-only--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-cycling-restriction--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-dual-path-bicycles-and-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-dual-path-pedestrians-and-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-equestrians-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-low-beam-headlights--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-10--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-10--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-20--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-20--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-25--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-25--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-30--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-30--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-35--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-35--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-40--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-40--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-50--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-50--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-60--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-60--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-65--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-65--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-70--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-70--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-75--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-75--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-80--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-80--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-90--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-90--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-100--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-100--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-110--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-110--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-120--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-120--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-130--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit-130--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-maximum-speed-limit--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-mopeds-and-bicycles-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-heavy-goods-vehicles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-horn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-overtaking--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-overtaking--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-overtaking--g3.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-overtaking--g4.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-overtaking--g5.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-overtaking-by-heavy-goods-vehicles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-overtaking-by-heavy-goods-vehicles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-overtaking-by-motorcycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-parking--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-parking--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-no-parking-or-stopping--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-one-way-straight--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-parking-zone--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-parking-zone--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-pedestrians-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-pedestrians-only--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-pedestrians-only--g3.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-pedestrians-only--g4.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-priority-road--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-prohibition--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-school-zone--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-shared-path-bicycles-and-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-shared-path-pedestrians-and-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-snow-chains--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-snow-chains--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-snowmobiles-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-speed-limit-zone--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-speed-limit-zone--g2.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-speed-limit-zone--g3.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-tractors-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-trams-and-buses-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-trams-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-trucks-and-buses-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-trucks-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--end-of-trucks-only--g2.png","viewer/textures/tag-icons/package_signs/regulatory--equestrians-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--except-railroad-crossing--g1.png","viewer/textures/tag-icons/package_signs/regulatory--fine-for-littering--g1.png","viewer/textures/tag-icons/package_signs/regulatory--give-way-to-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--give-way-to-oncoming-traffic--g1.png","viewer/textures/tag-icons/package_signs/regulatory--give-way-to-oncoming-traffic--g2.png","viewer/textures/tag-icons/package_signs/regulatory--go-left-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--go-right-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--go-straight--g1.png","viewer/textures/tag-icons/package_signs/regulatory--go-straight--g3.png","viewer/textures/tag-icons/package_signs/regulatory--go-straight-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--go-straight-or-turn-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--go-straight-or-turn-left--g2.png","viewer/textures/tag-icons/package_signs/regulatory--go-straight-or-turn-left--g3.png","viewer/textures/tag-icons/package_signs/regulatory--go-straight-or-turn-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--go-straight-or-turn-right--g2.png","viewer/textures/tag-icons/package_signs/regulatory--go-straight-or-turn-right--g3.png","viewer/textures/tag-icons/package_signs/regulatory--heavy-goods-vehicles-permitted--g1.png","viewer/textures/tag-icons/package_signs/regulatory--height-limit--g1.png","viewer/textures/tag-icons/package_signs/regulatory--high-beam-headlights--g1.png","viewer/textures/tag-icons/package_signs/regulatory--horn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--in-street-pedestrian-crossing--g1.png","viewer/textures/tag-icons/package_signs/regulatory--keep-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--keep-left--g2.png","viewer/textures/tag-icons/package_signs/regulatory--keep-left--g3.png","viewer/textures/tag-icons/package_signs/regulatory--keep-left--g4.png","viewer/textures/tag-icons/package_signs/regulatory--keep-left--g5.png","viewer/textures/tag-icons/package_signs/regulatory--keep-left--g6.png","viewer/textures/tag-icons/package_signs/regulatory--keep-left--g7.png","viewer/textures/tag-icons/package_signs/regulatory--keep-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--keep-right--g2.png","viewer/textures/tag-icons/package_signs/regulatory--keep-right--g3.png","viewer/textures/tag-icons/package_signs/regulatory--keep-right--g4.png","viewer/textures/tag-icons/package_signs/regulatory--keep-right--g5.png","viewer/textures/tag-icons/package_signs/regulatory--keep-right--g6.png","viewer/textures/tag-icons/package_signs/regulatory--keep-right--g7.png","viewer/textures/tag-icons/package_signs/regulatory--keep-right--g8.png","viewer/textures/tag-icons/package_signs/regulatory--keep-right--g9.png","viewer/textures/tag-icons/package_signs/regulatory--lane-control--g1.png","viewer/textures/tag-icons/package_signs/regulatory--left-turn-yield-on-green--g1.png","viewer/textures/tag-icons/package_signs/regulatory--length-limit--g1.png","viewer/textures/tag-icons/package_signs/regulatory--length-limit--g2.png","viewer/textures/tag-icons/package_signs/regulatory--light-rail-divided-highway--g1.png","viewer/textures/tag-icons/package_signs/regulatory--light-rail-do-not-pass--g1.png","viewer/textures/tag-icons/package_signs/regulatory--light-rail-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--look--g1.png","viewer/textures/tag-icons/package_signs/regulatory--low-beam-headlights--g1.png","viewer/textures/tag-icons/package_signs/regulatory--low-beam-headlights--g2.png","viewer/textures/tag-icons/package_signs/regulatory--low-beam-headlights--g3.png","viewer/textures/tag-icons/package_signs/regulatory--low-speed-vehicle-permitted--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-5--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-5--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-10--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-10--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-15--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-15--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-20--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-20--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-25--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-25--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-30--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-30--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-35--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-35--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-40--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-40--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-45--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-45--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-50--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-50--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-55--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-60--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-60--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-65--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-65--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-70--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-70--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-75--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-80--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-80--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-85--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-90--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-90--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-100--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-100--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-110--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-110--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-120--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-120--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-130--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-130--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-5--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-5--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-10--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-10--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-10--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-15--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-15--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-20--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-20--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-20--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-25--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-25--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-25--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-30--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-30--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-30--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-35--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-35--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-35--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-40--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-40--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-40--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-45--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-45--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-50--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-50--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-50--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-55--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-55--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-60--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-60--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-60--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-65--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-65--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-70--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-70--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-70--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-75--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-75--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-75--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-80--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-80--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-80--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-85--g2.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-85--g3.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-90--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-100--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-110--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-120--g1.png","viewer/textures/tag-icons/package_signs/regulatory--maximum-speed-limit-led-130--g1.png","viewer/textures/tag-icons/package_signs/regulatory--minimum-safe-distance--g1.png","viewer/textures/tag-icons/package_signs/regulatory--minimum-safe-distance--g2.png","viewer/textures/tag-icons/package_signs/regulatory--mopeds-and-bicycles-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--motorcycles-and-bicycles-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--motorcycles-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--motorcycles-only--g2.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-5--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-10--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-15--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-20--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-25--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-30--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-35--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-40--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-45--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-50--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-55--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-60--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-65--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-70--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-75--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-80--g1.png","viewer/textures/tag-icons/package_signs/regulatory--night-speed-limit-85--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-abnormal-vehicles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-atvs--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-bicycles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-bicycles--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-bicycles-carts-or-hand-carts--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-bicycles-mopeds-or-motorcycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-bicycles-mopeds-or-motorcycles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-bicycles-or-hand-carts--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-bicycles-or-motorcycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-bicycles-tractors-or-carts--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-buses--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-buses--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-buses--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-caravan-trailers--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-caravans--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-caravans-or-caravan-trailers--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-cargo-loading--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-carts--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-carts--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-carts--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-carts-or-tractors--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-construction-vehicles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-entry--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-equestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-go-straight-or-turn-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-go-straight-or-turn-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-good-trailers--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-goods-vehicle-trailers--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-hand-carts--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-hand-carts--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-hand-carts-or-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-hawkers--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-heavy-goods-vehicles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-heavy-goods-vehicles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-heavy-goods-vehicles--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-heavy-goods-vehicles--g4.png","viewer/textures/tag-icons/package_signs/regulatory--no-heavy-goods-vehicles--g5.png","viewer/textures/tag-icons/package_signs/regulatory--no-heavy-goods-vehicles-motorcycles-or-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-heavy-goods-vehicles-motorcycles-or-bicycles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-heavy-goods-vehicles-or-buses--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-heavy-goods-vehicles-or-tractors--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-heavy-goods-vehicles-or-trailers--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-horizontal-turn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-horn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-horn--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-lane-change-to-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-lane-change-to-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-learner-drivers--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-left-or-u-turn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-left-turn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-left-turn--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-left-turn--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-left-turn--g4.png","viewer/textures/tag-icons/package_signs/regulatory--no-left-turn--g5.png","viewer/textures/tag-icons/package_signs/regulatory--no-low-speed-vehicles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-mopeds-or-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicle-trailers--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles--g4.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles--g5.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles--g6.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles--g7.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles-except-motorcycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles-except-motorcycles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles-except-motorcycles--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles-or-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles-or-buses--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-motor-vehicles-or-carts--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-motorcycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-motorcycles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-overtaking--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-overtaking--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-overtaking--g4.png","viewer/textures/tag-icons/package_signs/regulatory--no-overtaking--g5.png","viewer/textures/tag-icons/package_signs/regulatory--no-overtaking--g6.png","viewer/textures/tag-icons/package_signs/regulatory--no-overtaking--g7.png","viewer/textures/tag-icons/package_signs/regulatory--no-overtaking-atvs--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-overtaking-by-heavy-goods-vehicles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking--g4.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking--g5.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking--g6.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking--g7.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking--g8.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking--g9.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking-bicycles-or-motorcycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking-bus-stop--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking-or-no-stopping--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking-or-no-stopping--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking-or-no-stopping--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking-or-no-stopping--g4.png","viewer/textures/tag-icons/package_signs/regulatory--no-parking-or-no-stopping--g5.png","viewer/textures/tag-icons/package_signs/regulatory--no-passenger-loading--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-pedestrians--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-pedestrians--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-pedestrians--g4.png","viewer/textures/tag-icons/package_signs/regulatory--no-pedestrians--g5.png","viewer/textures/tag-icons/package_signs/regulatory--no-pedestrians--g6.png","viewer/textures/tag-icons/package_signs/regulatory--no-pedestrians-bicycles-animals-or-hand-carts--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-pedestrians-or-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-pedestrians-or-bicycles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-pedestrians-or-bicycles--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-rickshaws--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-rickshaws--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-rickshaws--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-right-turn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-right-turn--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-right-turn--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-right-turn-on-red--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-skiing--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-snowmobiles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-snowmobiles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-snowmobiles-or-atvs--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-stopping--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-stopping--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-stopping--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-stopping--g5.png","viewer/textures/tag-icons/package_signs/regulatory--no-stopping--g6.png","viewer/textures/tag-icons/package_signs/regulatory--no-stopping--g7.png","viewer/textures/tag-icons/package_signs/regulatory--no-stopping-on-pavement--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-straight-through--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-straight-through--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-studded-snow-chains--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-through-trucks--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-tour-buses--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-tractors--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-tractors-mopeds-or-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-tractors-or-carts--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-trailers--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-tricycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-tricycles-or-hand-carts--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-turn-on-red--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-turn-on-red--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-turn-on-red--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-turns--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-turns--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-two-stage-right-turn-for-mopeds--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-u-turn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-u-turn--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-u-turn--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-vehicles-carrying-dangerous-goods--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-vehicles-carrying-dangerous-goods--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-vehicles-carrying-dangerous-goods--g3.png","viewer/textures/tag-icons/package_signs/regulatory--no-vehicles-carrying-dangerous-goods--g4.png","viewer/textures/tag-icons/package_signs/regulatory--no-vehicles-carrying-dangerous-water-pollutants--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-vehicles-carrying-dangerous-water-pollutants--g2.png","viewer/textures/tag-icons/package_signs/regulatory--no-vehicles-carrying-explosives--g1.png","viewer/textures/tag-icons/package_signs/regulatory--no-vehicles-carrying-explosives-or-dangerous-water-pollutants--g1.png","viewer/textures/tag-icons/package_signs/regulatory--one-way-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--one-way-left--g2.png","viewer/textures/tag-icons/package_signs/regulatory--one-way-left--g3.png","viewer/textures/tag-icons/package_signs/regulatory--one-way-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--one-way-right--g2.png","viewer/textures/tag-icons/package_signs/regulatory--one-way-right--g3.png","viewer/textures/tag-icons/package_signs/regulatory--one-way-straight--g1.png","viewer/textures/tag-icons/package_signs/regulatory--one-way-straight--g3.png","viewer/textures/tag-icons/package_signs/regulatory--parking-fee-station--g1.png","viewer/textures/tag-icons/package_signs/regulatory--parking-restrictions--g1.png","viewer/textures/tag-icons/package_signs/regulatory--parking-restrictions--g2.png","viewer/textures/tag-icons/package_signs/regulatory--parking-restrictions--g3.png","viewer/textures/tag-icons/package_signs/regulatory--pass-on-either-side--g1.png","viewer/textures/tag-icons/package_signs/regulatory--pass-on-either-side--g2.png","viewer/textures/tag-icons/package_signs/regulatory--pass-on-either-side--g3.png","viewer/textures/tag-icons/package_signs/regulatory--pass-with-care--g1.png","viewer/textures/tag-icons/package_signs/regulatory--passing-lane-ahead--g1.png","viewer/textures/tag-icons/package_signs/regulatory--pedestrians-bicycles-permitted--g1.png","viewer/textures/tag-icons/package_signs/regulatory--pedestrians-keep-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--pedestrians-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--pedestrians-only--g2.png","viewer/textures/tag-icons/package_signs/regulatory--pedestrians-only--g3.png","viewer/textures/tag-icons/package_signs/regulatory--pedestrians-priority-zone--g1.png","viewer/textures/tag-icons/package_signs/regulatory--pedestrians-push-button--g1.png","viewer/textures/tag-icons/package_signs/regulatory--pedestrians-push-button--g2.png","viewer/textures/tag-icons/package_signs/regulatory--priority-over-oncoming-vehicles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--priority-over-oncoming-vehicles--g2.png","viewer/textures/tag-icons/package_signs/regulatory--priority-road--g1.png","viewer/textures/tag-icons/package_signs/regulatory--priority-road--g2.png","viewer/textures/tag-icons/package_signs/regulatory--radar-enforced--g1.png","viewer/textures/tag-icons/package_signs/regulatory--reserved-parking--g1.png","viewer/textures/tag-icons/package_signs/regulatory--reversible-lanes--g1.png","viewer/textures/tag-icons/package_signs/regulatory--reversible-lanes--g2.png","viewer/textures/tag-icons/package_signs/regulatory--road-closed--g1.png","viewer/textures/tag-icons/package_signs/regulatory--road-closed--g2.png","viewer/textures/tag-icons/package_signs/regulatory--road-closed-to-vehicles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--road-closed-to-vehicles--g3.png","viewer/textures/tag-icons/package_signs/regulatory--roundabout--g1.png","viewer/textures/tag-icons/package_signs/regulatory--roundabout--g2.png","viewer/textures/tag-icons/package_signs/regulatory--roundabout--g3.png","viewer/textures/tag-icons/package_signs/regulatory--shared-path-bicycles-and-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--shared-path-pedestrians-and-bicycles--g1.png","viewer/textures/tag-icons/package_signs/regulatory--sidewalk-closed--g1.png","viewer/textures/tag-icons/package_signs/regulatory--slanted-parking--g1.png","viewer/textures/tag-icons/package_signs/regulatory--snow-chains--g1.png","viewer/textures/tag-icons/package_signs/regulatory--snow-chains--g2.png","viewer/textures/tag-icons/package_signs/regulatory--snow-chains--g3.png","viewer/textures/tag-icons/package_signs/regulatory--snowmobiles-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--snowmobiles-permitted--g1.png","viewer/textures/tag-icons/package_signs/regulatory--speed-limit-zone--g1.png","viewer/textures/tag-icons/package_signs/regulatory--speeding-fines-increased--g1.png","viewer/textures/tag-icons/package_signs/regulatory--state-route--g1.png","viewer/textures/tag-icons/package_signs/regulatory--stay-in-lane--g1.png","viewer/textures/tag-icons/package_signs/regulatory--stop--g1.png","viewer/textures/tag-icons/package_signs/regulatory--stop--g2.png","viewer/textures/tag-icons/package_signs/regulatory--stop--g3.png","viewer/textures/tag-icons/package_signs/regulatory--stop--g4.png","viewer/textures/tag-icons/package_signs/regulatory--stop--g5.png","viewer/textures/tag-icons/package_signs/regulatory--stop--g6.png","viewer/textures/tag-icons/package_signs/regulatory--stop--g7.png","viewer/textures/tag-icons/package_signs/regulatory--stop--g8.png","viewer/textures/tag-icons/package_signs/regulatory--stop--g9.png","viewer/textures/tag-icons/package_signs/regulatory--stop--g10.png","viewer/textures/tag-icons/package_signs/regulatory--stop-here-on-red-or-flashing-light--g1.png","viewer/textures/tag-icons/package_signs/regulatory--stop-here-on-red-or-flashing-light--g2.png","viewer/textures/tag-icons/package_signs/regulatory--stop-signals--g1.png","viewer/textures/tag-icons/package_signs/regulatory--stop-signals--g2.png","viewer/textures/tag-icons/package_signs/regulatory--tanks-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--taxi-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--text--g1.png","viewer/textures/tag-icons/package_signs/regulatory--text--g2.png","viewer/textures/tag-icons/package_signs/regulatory--toll-pass-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--tractors-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--traffic-signal-photo-enforced--g1.png","viewer/textures/tag-icons/package_signs/regulatory--trams-and-buses-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--trams-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--triple-lanes--g1.png","viewer/textures/tag-icons/package_signs/regulatory--triple-lanes-go-straight-center-lane--g1.png","viewer/textures/tag-icons/package_signs/regulatory--triple-lanes-turn-left-center-lane--g1.png","viewer/textures/tag-icons/package_signs/regulatory--triple-lanes-turn-right-center-lane--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-route--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-5--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-10--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-15--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-20--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-25--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-30--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-35--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-40--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-45--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-50--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-55--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-60--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-65--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-70--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-75--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-80--g1.png","viewer/textures/tag-icons/package_signs/regulatory--truck-speed-limit-85--g1.png","viewer/textures/tag-icons/package_signs/regulatory--trucks-and-buses-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--trucks-on-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--trucks-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--turn-left--g1.png","viewer/textures/tag-icons/package_signs/regulatory--turn-left--g2.png","viewer/textures/tag-icons/package_signs/regulatory--turn-left--g3.png","viewer/textures/tag-icons/package_signs/regulatory--turn-left-ahead--g1.png","viewer/textures/tag-icons/package_signs/regulatory--turn-left-ahead--g2.png","viewer/textures/tag-icons/package_signs/regulatory--turn-left-or-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--turn-left-or-right--g2.png","viewer/textures/tag-icons/package_signs/regulatory--turn-left-or-right--g3.png","viewer/textures/tag-icons/package_signs/regulatory--turn-left-or-u-turn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--turn-right--g1.png","viewer/textures/tag-icons/package_signs/regulatory--turn-right--g2.png","viewer/textures/tag-icons/package_signs/regulatory--turn-right--g3.png","viewer/textures/tag-icons/package_signs/regulatory--turn-right-ahead--g1.png","viewer/textures/tag-icons/package_signs/regulatory--turn-right-ahead--g2.png","viewer/textures/tag-icons/package_signs/regulatory--turning-vehicles-yield-to-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--two-stage-right-turn-for-mopeds--g1.png","viewer/textures/tag-icons/package_signs/regulatory--two-way--g1.png","viewer/textures/tag-icons/package_signs/regulatory--u-turn--g1.png","viewer/textures/tag-icons/package_signs/regulatory--u-turn--g2.png","viewer/textures/tag-icons/package_signs/regulatory--u-turn--g3.png","viewer/textures/tag-icons/package_signs/regulatory--use-crosswalk--g1.png","viewer/textures/tag-icons/package_signs/regulatory--vehicles-carrying-dangerous-goods-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--vehicles-carrying-dangerous-goods-permitted--g1.png","viewer/textures/tag-icons/package_signs/regulatory--vehicles-carrying-explosives-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--vehicles-carrying-hazardous-goods-permitted--g1.png","viewer/textures/tag-icons/package_signs/regulatory--vehicles-only--g1.png","viewer/textures/tag-icons/package_signs/regulatory--wear-seat-belt--g1.png","viewer/textures/tag-icons/package_signs/regulatory--wear-seat-belt--g2.png","viewer/textures/tag-icons/package_signs/regulatory--wear-seat-belt--g3.png","viewer/textures/tag-icons/package_signs/regulatory--weight-limit--g1.png","viewer/textures/tag-icons/package_signs/regulatory--weight-limit--g2.png","viewer/textures/tag-icons/package_signs/regulatory--weight-limit--g3.png","viewer/textures/tag-icons/package_signs/regulatory--weight-limit--g4.png","viewer/textures/tag-icons/package_signs/regulatory--weight-limit--g5.png","viewer/textures/tag-icons/package_signs/regulatory--weight-limit--g6.png","viewer/textures/tag-icons/package_signs/regulatory--weight-limit--g7.png","viewer/textures/tag-icons/package_signs/regulatory--weight-limit-per-axle--g1.png","viewer/textures/tag-icons/package_signs/regulatory--weight-limit-per-tandem-axle--g1.png","viewer/textures/tag-icons/package_signs/regulatory--weight-limit-with-trucks--g1.png","viewer/textures/tag-icons/package_signs/regulatory--width-limit--g1.png","viewer/textures/tag-icons/package_signs/regulatory--wrong-way--g1.png","viewer/textures/tag-icons/package_signs/regulatory--yield--g1.png","viewer/textures/tag-icons/package_signs/regulatory--yield-or-stop-for-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/regulatory--your-speed--g1.png","viewer/textures/tag-icons/package_signs/warning--accident-area--g1.png","viewer/textures/tag-icons/package_signs/warning--accident-area--g2.png","viewer/textures/tag-icons/package_signs/warning--accident-area--g3.png","viewer/textures/tag-icons/package_signs/warning--accident-area--g4.png","viewer/textures/tag-icons/package_signs/warning--accident-area--g5.png","viewer/textures/tag-icons/package_signs/warning--accident-area--g6.png","viewer/textures/tag-icons/package_signs/warning--accident-area--g7.png","viewer/textures/tag-icons/package_signs/warning--accident-area--g8.png","viewer/textures/tag-icons/package_signs/warning--added-lane-from-entering-roadway--g1.png","viewer/textures/tag-icons/package_signs/warning--added-lane-from-entering-roadway--g2.png","viewer/textures/tag-icons/package_signs/warning--added-lane-left--g1.png","viewer/textures/tag-icons/package_signs/warning--added-lane-right--g1.png","viewer/textures/tag-icons/package_signs/warning--animal-drawn-vehicles--g1.png","viewer/textures/tag-icons/package_signs/warning--arch-bridge--g1.png","viewer/textures/tag-icons/package_signs/warning--atv-and-snowmobiles--g1.png","viewer/textures/tag-icons/package_signs/warning--atv-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--atv-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--axle-restriction--g1.png","viewer/textures/tag-icons/package_signs/warning--bear-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--bear-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--bicycles-and-others--g1.png","viewer/textures/tag-icons/package_signs/warning--bicycles-caution-on-rail-tracks--g1.png","viewer/textures/tag-icons/package_signs/warning--bicycles-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--bicycles-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--bicycles-crossing--g3.png","viewer/textures/tag-icons/package_signs/warning--bicycles-crossing--g4.png","viewer/textures/tag-icons/package_signs/warning--bollard--g1.png","viewer/textures/tag-icons/package_signs/warning--bridge--g1.png","viewer/textures/tag-icons/package_signs/warning--bridge--g2.png","viewer/textures/tag-icons/package_signs/warning--bus-stop-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--bus-stop-ahead--g2.png","viewer/textures/tag-icons/package_signs/warning--bus-stop-ahead--g3.png","viewer/textures/tag-icons/package_signs/warning--camel-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--camel-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--camera--g1.png","viewer/textures/tag-icons/package_signs/warning--camera--g2.png","viewer/textures/tag-icons/package_signs/warning--carts--g1.png","viewer/textures/tag-icons/package_signs/warning--carts--g2.png","viewer/textures/tag-icons/package_signs/warning--checkpoint--g1.png","viewer/textures/tag-icons/package_signs/warning--children--g1.png","viewer/textures/tag-icons/package_signs/warning--children--g2.png","viewer/textures/tag-icons/package_signs/warning--children--g3.png","viewer/textures/tag-icons/package_signs/warning--children--g4.png","viewer/textures/tag-icons/package_signs/warning--children--g6.png","viewer/textures/tag-icons/package_signs/warning--cliff--g1.png","viewer/textures/tag-icons/package_signs/warning--cliff--g2.png","viewer/textures/tag-icons/package_signs/warning--closed-lane-in-triple-lanes--g1.png","viewer/textures/tag-icons/package_signs/warning--closed-lane-in-triple-lanes--g2.png","viewer/textures/tag-icons/package_signs/warning--construction-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--crossroads--g1.png","viewer/textures/tag-icons/package_signs/warning--crossroads--g2.png","viewer/textures/tag-icons/package_signs/warning--crossroads--g3.png","viewer/textures/tag-icons/package_signs/warning--crossroads--g4.png","viewer/textures/tag-icons/package_signs/warning--crossroads--g5.png","viewer/textures/tag-icons/package_signs/warning--crossroads--g6.png","viewer/textures/tag-icons/package_signs/warning--crossroads-with-priority-to-the-right--g1.png","viewer/textures/tag-icons/package_signs/warning--curve-left--g1.png","viewer/textures/tag-icons/package_signs/warning--curve-left--g2.png","viewer/textures/tag-icons/package_signs/warning--curve-left--g3.png","viewer/textures/tag-icons/package_signs/warning--curve-left-with-junction--g1.png","viewer/textures/tag-icons/package_signs/warning--curve-out-intersection-left--g1.png","viewer/textures/tag-icons/package_signs/warning--curve-out-intersection-right--g1.png","viewer/textures/tag-icons/package_signs/warning--curve-right--g1.png","viewer/textures/tag-icons/package_signs/warning--curve-right--g2.png","viewer/textures/tag-icons/package_signs/warning--curve-right--g3.png","viewer/textures/tag-icons/package_signs/warning--curve-right-with-junction--g1.png","viewer/textures/tag-icons/package_signs/warning--dangerous-crosswinds-left--g1.png","viewer/textures/tag-icons/package_signs/warning--dangerous-crosswinds-left--g2.png","viewer/textures/tag-icons/package_signs/warning--dangerous-crosswinds-left--g4.png","viewer/textures/tag-icons/package_signs/warning--dangerous-crosswinds-right--g1.png","viewer/textures/tag-icons/package_signs/warning--dangerous-crosswinds-right--g2.png","viewer/textures/tag-icons/package_signs/warning--dangerous-crosswinds-right--g3.png","viewer/textures/tag-icons/package_signs/warning--dangerous-crosswinds-right--g4.png","viewer/textures/tag-icons/package_signs/warning--dead-end--g1.png","viewer/textures/tag-icons/package_signs/warning--dead-end--g2.png","viewer/textures/tag-icons/package_signs/warning--dead-end--g3.png","viewer/textures/tag-icons/package_signs/warning--dead-end-go-left--g1.png","viewer/textures/tag-icons/package_signs/warning--dead-end-go-right--g1.png","viewer/textures/tag-icons/package_signs/warning--descent-or-climbing-lanes-in-triple-lanes--g1.png","viewer/textures/tag-icons/package_signs/warning--detour-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--detour-or-construction-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--dip--g1.png","viewer/textures/tag-icons/package_signs/warning--dip--g2.png","viewer/textures/tag-icons/package_signs/warning--disabled-persons-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--disabled-persons-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--divided-highway--g1.png","viewer/textures/tag-icons/package_signs/warning--divided-highway--g2.png","viewer/textures/tag-icons/package_signs/warning--divided-highway--g3.png","viewer/textures/tag-icons/package_signs/warning--divided-highway--g4.png","viewer/textures/tag-icons/package_signs/warning--divided-highway--g5.png","viewer/textures/tag-icons/package_signs/warning--divided-highway--g6.png","viewer/textures/tag-icons/package_signs/warning--divided-highway--g7.png","viewer/textures/tag-icons/package_signs/warning--divided-highway--g8.png","viewer/textures/tag-icons/package_signs/warning--divided-highway--g9.png","viewer/textures/tag-icons/package_signs/warning--divided-highway-ends--g1.png","viewer/textures/tag-icons/package_signs/warning--divided-highway-ends--g2.png","viewer/textures/tag-icons/package_signs/warning--divided-highway-ends--g3.png","viewer/textures/tag-icons/package_signs/warning--divided-highway-ends--g4.png","viewer/textures/tag-icons/package_signs/warning--divided-highway-on-left--g1.png","viewer/textures/tag-icons/package_signs/warning--divided-highway-on-left--g2.png","viewer/textures/tag-icons/package_signs/warning--divided-highway-on-right--g1.png","viewer/textures/tag-icons/package_signs/warning--divided-highway-on-right--g2.png","viewer/textures/tag-icons/package_signs/warning--divided-highway-to-left--g1.png","viewer/textures/tag-icons/package_signs/warning--divided-highway-to-right--g1.png","viewer/textures/tag-icons/package_signs/warning--domestic-animals--g1.png","viewer/textures/tag-icons/package_signs/warning--domestic-animals--g2.png","viewer/textures/tag-icons/package_signs/warning--domestic-animals--g3.png","viewer/textures/tag-icons/package_signs/warning--domestic-animals--g4.png","viewer/textures/tag-icons/package_signs/warning--domestic-animals--g5.png","viewer/textures/tag-icons/package_signs/warning--domestic-animals--g6.png","viewer/textures/tag-icons/package_signs/warning--domestic-animals--g7.png","viewer/textures/tag-icons/package_signs/warning--domestic-animals--g8.png","viewer/textures/tag-icons/package_signs/warning--double-curve-first-left--g1.png","viewer/textures/tag-icons/package_signs/warning--double-curve-first-left--g2.png","viewer/textures/tag-icons/package_signs/warning--double-curve-first-right--g1.png","viewer/textures/tag-icons/package_signs/warning--double-curve-first-right--g2.png","viewer/textures/tag-icons/package_signs/warning--double-descent--g1.png","viewer/textures/tag-icons/package_signs/warning--double-reverse-curve-left--g1.png","viewer/textures/tag-icons/package_signs/warning--double-reverse-curve-left--g2.png","viewer/textures/tag-icons/package_signs/warning--double-reverse-curve-right--g1.png","viewer/textures/tag-icons/package_signs/warning--double-reverse-curve-right--g2.png","viewer/textures/tag-icons/package_signs/warning--double-side-roads-left--g1.png","viewer/textures/tag-icons/package_signs/warning--double-side-roads-left--g3.png","viewer/textures/tag-icons/package_signs/warning--double-side-roads-right--g1.png","viewer/textures/tag-icons/package_signs/warning--double-side-roads-right--g3.png","viewer/textures/tag-icons/package_signs/warning--double-turn-first-left--g1.png","viewer/textures/tag-icons/package_signs/warning--double-turn-first-right--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-all-directions-on-left--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-all-directions-on-right--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-go-straight-or-turn-left--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-go-straight-or-turn-right--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-left-turn--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-left-turn-or-go-straight--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-right-turn--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-right-turn-or-go-straight--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-turn-left--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-turn-left-or-right--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-turn-left-or-right--g2.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-turn-left-or-right--g3.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-turn-left-or-right--g4.png","viewer/textures/tag-icons/package_signs/warning--dual-lanes-turn-right--g1.png","viewer/textures/tag-icons/package_signs/warning--dual-path-cyclists-and-pedestrians--g1.png","viewer/textures/tag-icons/package_signs/warning--electricity--g1.png","viewer/textures/tag-icons/package_signs/warning--electricity--g2.png","viewer/textures/tag-icons/package_signs/warning--elephant-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--emergency-vehicles--g1.png","viewer/textures/tag-icons/package_signs/warning--emu-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--emu-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--entering-roadway-merge--g1.png","viewer/textures/tag-icons/package_signs/warning--entering-roadway-merge--g2.png","viewer/textures/tag-icons/package_signs/warning--equestrians-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--equestrians-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--expressway--g1.png","viewer/textures/tag-icons/package_signs/warning--falling-rocks-or-debris-left--g1.png","viewer/textures/tag-icons/package_signs/warning--falling-rocks-or-debris-left--g2.png","viewer/textures/tag-icons/package_signs/warning--falling-rocks-or-debris-left--g3.png","viewer/textures/tag-icons/package_signs/warning--falling-rocks-or-debris-left--g4.png","viewer/textures/tag-icons/package_signs/warning--falling-rocks-or-debris-right--g1.png","viewer/textures/tag-icons/package_signs/warning--falling-rocks-or-debris-right--g2.png","viewer/textures/tag-icons/package_signs/warning--falling-rocks-or-debris-right--g3.png","viewer/textures/tag-icons/package_signs/warning--falling-rocks-or-debris-right--g4.png","viewer/textures/tag-icons/package_signs/warning--ferry--g1.png","viewer/textures/tag-icons/package_signs/warning--flaggers-in-road--g1.png","viewer/textures/tag-icons/package_signs/warning--flaggers-in-road--g2.png","viewer/textures/tag-icons/package_signs/warning--foggy-road--g1.png","viewer/textures/tag-icons/package_signs/warning--foggy-road--g2.png","viewer/textures/tag-icons/package_signs/warning--ford--g1.png","viewer/textures/tag-icons/package_signs/warning--forest--g1.png","viewer/textures/tag-icons/package_signs/warning--fresh-oil--g1.png","viewer/textures/tag-icons/package_signs/warning--frog-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--gate--g1.png","viewer/textures/tag-icons/package_signs/warning--gate--g2.png","viewer/textures/tag-icons/package_signs/warning--gate-left--g1.png","viewer/textures/tag-icons/package_signs/warning--gate-right--g1.png","viewer/textures/tag-icons/package_signs/warning--go-left--g1.png","viewer/textures/tag-icons/package_signs/warning--go-right--g1.png","viewer/textures/tag-icons/package_signs/warning--golf-carts-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--gravel-road-surface--g1.png","viewer/textures/tag-icons/package_signs/warning--hairpin-curve-left--g1.png","viewer/textures/tag-icons/package_signs/warning--hairpin-curve-left--g2.png","viewer/textures/tag-icons/package_signs/warning--hairpin-curve-left--g3.png","viewer/textures/tag-icons/package_signs/warning--hairpin-curve-right--g1.png","viewer/textures/tag-icons/package_signs/warning--hairpin-curve-right--g3.png","viewer/textures/tag-icons/package_signs/warning--height-restriction--g2.png","viewer/textures/tag-icons/package_signs/warning--height-restriction--g3.png","viewer/textures/tag-icons/package_signs/warning--height-restriction--g4.png","viewer/textures/tag-icons/package_signs/warning--height-restriction--g5.png","viewer/textures/tag-icons/package_signs/warning--horizontal-alignment-left--g1.png","viewer/textures/tag-icons/package_signs/warning--horizontal-alignment-left--g3.png","viewer/textures/tag-icons/package_signs/warning--horizontal-alignment-right--g1.png","viewer/textures/tag-icons/package_signs/warning--horizontal-alignment-right--g3.png","viewer/textures/tag-icons/package_signs/warning--horse-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--icy-road--g1.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-acute-left--g1.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-acute-left--g2.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-acute-right--g1.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-acute-right--g2.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-perpendicular-left--g1.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-perpendicular-left--g2.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-perpendicular-left--g3.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-perpendicular-left--g4.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-perpendicular-right--g1.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-perpendicular-right--g2.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-perpendicular-right--g3.png","viewer/textures/tag-icons/package_signs/warning--junction-with-a-side-road-perpendicular-right--g4.png","viewer/textures/tag-icons/package_signs/warning--junction-with-merge-from-left--g1.png","viewer/textures/tag-icons/package_signs/warning--junction-with-merge-from-right--g1.png","viewer/textures/tag-icons/package_signs/warning--junction-with-side-roads--g1.png","viewer/textures/tag-icons/package_signs/warning--kangaloo-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--keep-distance--g1.png","viewer/textures/tag-icons/package_signs/warning--keep-left--g1.png","viewer/textures/tag-icons/package_signs/warning--keep-right--g1.png","viewer/textures/tag-icons/package_signs/warning--kiwi-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--kiwi-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--koala-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--koala-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--koala-crossing--g3.png","viewer/textures/tag-icons/package_signs/warning--koala-crossing--g4.png","viewer/textures/tag-icons/package_signs/warning--lane-closed-in-dual-lanes-left--g1.png","viewer/textures/tag-icons/package_signs/warning--lane-closed-in-dual-lanes-left--g2.png","viewer/textures/tag-icons/package_signs/warning--lane-closed-in-dual-lanes-right--g1.png","viewer/textures/tag-icons/package_signs/warning--lane-closed-in-dual-lanes-right--g2.png","viewer/textures/tag-icons/package_signs/warning--length-restriction--g1.png","viewer/textures/tag-icons/package_signs/warning--length-restriction--g2.png","viewer/textures/tag-icons/package_signs/warning--light-rail-transit-vehicles--g1.png","viewer/textures/tag-icons/package_signs/warning--limited-lighting-under-trees--g1.png","viewer/textures/tag-icons/package_signs/warning--logging-vehicles--g1.png","viewer/textures/tag-icons/package_signs/warning--loop-270-degree--g1.png","viewer/textures/tag-icons/package_signs/warning--loop-pretzel--g1.png","viewer/textures/tag-icons/package_signs/warning--loose-road-surface--g1.png","viewer/textures/tag-icons/package_signs/warning--loose-road-surface--g2.png","viewer/textures/tag-icons/package_signs/warning--loose-road-surface--g3.png","viewer/textures/tag-icons/package_signs/warning--loose-road-surface--g4.png","viewer/textures/tag-icons/package_signs/warning--low-flying-aircraft--g1.png","viewer/textures/tag-icons/package_signs/warning--low-flying-aircraft--g2.png","viewer/textures/tag-icons/package_signs/warning--low-flying-aircraft--g3.png","viewer/textures/tag-icons/package_signs/warning--low-flying-aircraft--g4.png","viewer/textures/tag-icons/package_signs/warning--low-flying-aircraft--g5.png","viewer/textures/tag-icons/package_signs/warning--low-flying-aircraft--g6.png","viewer/textures/tag-icons/package_signs/warning--low-flying-aircraft--g7.png","viewer/textures/tag-icons/package_signs/warning--low-flying-aircraft--g8.png","viewer/textures/tag-icons/package_signs/warning--low-ground-clearance--g1.png","viewer/textures/tag-icons/package_signs/warning--low-ground-clearance--g2.png","viewer/textures/tag-icons/package_signs/warning--low-ground-clearance--g3.png","viewer/textures/tag-icons/package_signs/warning--monkey-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--motorcycles-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--narrow-bridge--g1.png","viewer/textures/tag-icons/package_signs/warning--narrow-bridge--g2.png","viewer/textures/tag-icons/package_signs/warning--narrow-bridge--g3.png","viewer/textures/tag-icons/package_signs/warning--no-passing-zone--g1.png","viewer/textures/tag-icons/package_signs/warning--no-passing-zone--g2.png","viewer/textures/tag-icons/package_signs/warning--occupied-lanes--g1.png","viewer/textures/tag-icons/package_signs/warning--offset-roads--g1.png","viewer/textures/tag-icons/package_signs/warning--offset-roads--g2.png","viewer/textures/tag-icons/package_signs/warning--offset-roads--g3.png","viewer/textures/tag-icons/package_signs/warning--offset-roads--g4.png","viewer/textures/tag-icons/package_signs/warning--opening-or-swing-bridge--g1.png","viewer/textures/tag-icons/package_signs/warning--opening-or-swing-bridge--g2.png","viewer/textures/tag-icons/package_signs/warning--other-danger--g1.png","viewer/textures/tag-icons/package_signs/warning--other-danger--g2.png","viewer/textures/tag-icons/package_signs/warning--other-danger--g3.png","viewer/textures/tag-icons/package_signs/warning--panda-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--pass-left-or-right--g1.png","viewer/textures/tag-icons/package_signs/warning--pass-left-or-right--g2.png","viewer/textures/tag-icons/package_signs/warning--pass-left-or-right--g3.png","viewer/textures/tag-icons/package_signs/warning--pavement-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--pavement-ends--g1.png","viewer/textures/tag-icons/package_signs/warning--pavement-ends--g2.png","viewer/textures/tag-icons/package_signs/warning--pavement-ends--g3.png","viewer/textures/tag-icons/package_signs/warning--pavement-ends--g4.png","viewer/textures/tag-icons/package_signs/warning--pavement-ends--g5.png","viewer/textures/tag-icons/package_signs/warning--pedestrians-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--pedestrians-crossing--g4.png","viewer/textures/tag-icons/package_signs/warning--pedestrians-crossing--g5.png","viewer/textures/tag-icons/package_signs/warning--pedestrians-crossing--g6.png","viewer/textures/tag-icons/package_signs/warning--pedestrians-crossing--g7.png","viewer/textures/tag-icons/package_signs/warning--pedestrians-crossing--g8.png","viewer/textures/tag-icons/package_signs/warning--pedestrians-crossing--g9.png","viewer/textures/tag-icons/package_signs/warning--pedestrians-crossing--g10.png","viewer/textures/tag-icons/package_signs/warning--pedestrians-crossing--g11.png","viewer/textures/tag-icons/package_signs/warning--pedestrians-crossing--g12.png","viewer/textures/tag-icons/package_signs/warning--playground--g1.png","viewer/textures/tag-icons/package_signs/warning--playground--g3.png","viewer/textures/tag-icons/package_signs/warning--polar-bear-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--quay-or-river-bank--g1.png","viewer/textures/tag-icons/package_signs/warning--quay-or-river-bank--g2.png","viewer/textures/tag-icons/package_signs/warning--quay-or-river-bank--g3.png","viewer/textures/tag-icons/package_signs/warning--quay-or-river-bank--g4.png","viewer/textures/tag-icons/package_signs/warning--rabbit-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--raccoon-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing--g3.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing--g4.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-with-barriers--g1.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-with-barriers--g2.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-with-barriers--g3.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-with-barriers--g4.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-with-barriers--g5.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-with-barriers--g6.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-with-barriers--g7.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-without-barriers--g1.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-without-barriers--g2.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-without-barriers--g3.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-without-barriers--g4.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-without-barriers--g5.png","viewer/textures/tag-icons/package_signs/warning--railroad-crossing-without-barriers--g6.png","viewer/textures/tag-icons/package_signs/warning--railroad-intersection--g1.png","viewer/textures/tag-icons/package_signs/warning--railroad-intersection--g2.png","viewer/textures/tag-icons/package_signs/warning--railroad-intersection--g3.png","viewer/textures/tag-icons/package_signs/warning--railroad-intersection--g4.png","viewer/textures/tag-icons/package_signs/warning--railroad-intersection--g5.png","viewer/textures/tag-icons/package_signs/warning--railroad-intersection--g6.png","viewer/textures/tag-icons/package_signs/warning--railroad-intersection--g7.png","viewer/textures/tag-icons/package_signs/warning--railroad-intersection--g8.png","viewer/textures/tag-icons/package_signs/warning--railroad-intersection--g9.png","viewer/textures/tag-icons/package_signs/warning--ramp-closed--g1.png","viewer/textures/tag-icons/package_signs/warning--reduced-maximum-speed-limit--g1.png","viewer/textures/tag-icons/package_signs/warning--reserved-lane--g1.png","viewer/textures/tag-icons/package_signs/warning--restricted-zone--g1.png","viewer/textures/tag-icons/package_signs/warning--reversible-lanes--g1.png","viewer/textures/tag-icons/package_signs/warning--reversible-lanes--g2.png","viewer/textures/tag-icons/package_signs/warning--rickshaws-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--road-blocks--g1.png","viewer/textures/tag-icons/package_signs/warning--road-bump--g1.png","viewer/textures/tag-icons/package_signs/warning--road-bump--g2.png","viewer/textures/tag-icons/package_signs/warning--road-bump--g3.png","viewer/textures/tag-icons/package_signs/warning--road-bump-with-speed-limit--g1.png","viewer/textures/tag-icons/package_signs/warning--road-closed--g3.png","viewer/textures/tag-icons/package_signs/warning--road-narrows--g1.png","viewer/textures/tag-icons/index.ts","viewer/textures/tag-icons/package_signs/index.ts","viewer/textures/tag-icons/package_signs/warning--road-narrows--g2.png","viewer/textures/tag-icons/package_signs/warning--road-narrows-left--g1.png","viewer/textures/tag-icons/package_signs/warning--road-narrows-left--g2.png","viewer/textures/tag-icons/package_signs/warning--road-narrows-left-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--road-narrows-right--g1.png","viewer/textures/tag-icons/package_signs/warning--road-narrows-right--g2.png","viewer/textures/tag-icons/package_signs/warning--road-narrows-right-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--road-toll-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--road-widens--g1.png","viewer/textures/tag-icons/package_signs/warning--road-widens-left--g1.png","viewer/textures/tag-icons/package_signs/warning--road-widens-right--g1.png","viewer/textures/tag-icons/package_signs/warning--roadworks--g1.png","viewer/textures/tag-icons/package_signs/warning--roadworks--g2.png","viewer/textures/tag-icons/package_signs/warning--roadworks--g3.png","viewer/textures/tag-icons/package_signs/warning--roadworks--g5.png","viewer/textures/tag-icons/package_signs/warning--roadworks--g6.png","viewer/textures/tag-icons/package_signs/warning--roadworks--g8.png","viewer/textures/tag-icons/package_signs/warning--roadworks--g9.png","viewer/textures/tag-icons/package_signs/warning--roadworks--g10.png","viewer/textures/tag-icons/package_signs/warning--roadworks--g11.png","viewer/textures/tag-icons/package_signs/warning--roadworks-go-left-or-straight--g1.png","viewer/textures/tag-icons/package_signs/warning--roadworks-go-right-or-straight--g1.png","viewer/textures/tag-icons/package_signs/warning--roundabout--g1.png","viewer/textures/tag-icons/package_signs/warning--roundabout--g2.png","viewer/textures/tag-icons/package_signs/warning--roundabout--g3.png","viewer/textures/tag-icons/package_signs/warning--roundabout--g4.png","viewer/textures/tag-icons/package_signs/warning--roundabout--g5.png","viewer/textures/tag-icons/package_signs/warning--roundabout--g6.png","viewer/textures/tag-icons/package_signs/warning--roundabout--g7.png","viewer/textures/tag-icons/package_signs/warning--ruts--g1.png","viewer/textures/tag-icons/package_signs/warning--sand--g1.png","viewer/textures/tag-icons/package_signs/warning--sand-drift--g1.png","viewer/textures/tag-icons/package_signs/warning--school-zone--g2.png","viewer/textures/tag-icons/package_signs/warning--severe-weather--g1.png","viewer/textures/tag-icons/package_signs/warning--shared-lane-motorcycles-bicycles--g1.png","viewer/textures/tag-icons/package_signs/warning--sharp-turn--g1.png","viewer/textures/tag-icons/package_signs/warning--single-reverse-curve--g1.png","viewer/textures/tag-icons/package_signs/warning--skewed-t-roads-left--g1.png","viewer/textures/tag-icons/package_signs/warning--skewed-t-roads-left--g2.png","viewer/textures/tag-icons/package_signs/warning--skewed-t-roads-left--g3.png","viewer/textures/tag-icons/package_signs/warning--skewed-t-roads-right--g1.png","viewer/textures/tag-icons/package_signs/warning--skewed-t-roads-right--g2.png","viewer/textures/tag-icons/package_signs/warning--skewed-t-roads-right--g3.png","viewer/textures/tag-icons/package_signs/warning--skiers--g1.png","viewer/textures/tag-icons/package_signs/warning--skiers--g2.png","viewer/textures/tag-icons/package_signs/warning--skiers--g3.png","viewer/textures/tag-icons/package_signs/warning--slippery-bicycles--g1.png","viewer/textures/tag-icons/package_signs/warning--slippery-motorcycles--g1.png","viewer/textures/tag-icons/package_signs/warning--slippery-motorcycles--g2.png","viewer/textures/tag-icons/package_signs/warning--slippery-road-surface--g1.png","viewer/textures/tag-icons/package_signs/warning--slippery-road-surface--g2.png","viewer/textures/tag-icons/package_signs/warning--slow--g1.png","viewer/textures/tag-icons/package_signs/warning--snow-tractors--g1.png","viewer/textures/tag-icons/package_signs/warning--snowmobiles--g1.png","viewer/textures/tag-icons/package_signs/warning--snowmobiles--g2.png","viewer/textures/tag-icons/package_signs/warning--snowmobiles--g3.png","viewer/textures/tag-icons/package_signs/warning--snowmobiles-and-others--g1.png","viewer/textures/tag-icons/package_signs/warning--soft-road-surface--g1.png","viewer/textures/tag-icons/package_signs/warning--soft-road-surface--g2.png","viewer/textures/tag-icons/package_signs/warning--soft-shoulder--g1.png","viewer/textures/tag-icons/package_signs/warning--soft-shoulder--g2.png","viewer/textures/tag-icons/package_signs/warning--soft-shoulder--g3.png","viewer/textures/tag-icons/package_signs/warning--soft-shoulder--g4.png","viewer/textures/tag-icons/package_signs/warning--speed-camera--g1.png","viewer/textures/tag-icons/package_signs/warning--steep-ascent--g1.png","viewer/textures/tag-icons/package_signs/warning--steep-ascent--g2.png","viewer/textures/tag-icons/package_signs/warning--steep-ascent--g3.png","viewer/textures/tag-icons/package_signs/warning--steep-ascent--g4.png","viewer/textures/tag-icons/package_signs/warning--steep-ascent-and-descent--g1.png","viewer/textures/tag-icons/package_signs/warning--steep-descent--g1.png","viewer/textures/tag-icons/package_signs/warning--steep-descent--g2.png","viewer/textures/tag-icons/package_signs/warning--steep-descent--g3.png","viewer/textures/tag-icons/package_signs/warning--steep-descent--g4.png","viewer/textures/tag-icons/package_signs/warning--steep-descent--g5.png","viewer/textures/tag-icons/package_signs/warning--steep-descent--g6.png","viewer/textures/tag-icons/package_signs/warning--stop-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--stop-ahead--g3.png","viewer/textures/tag-icons/package_signs/warning--stop-ahead--g4.png","viewer/textures/tag-icons/package_signs/warning--stop-ahead--g5.png","viewer/textures/tag-icons/package_signs/warning--stop-ahead--g6.png","viewer/textures/tag-icons/package_signs/warning--t-roads--g1.png","viewer/textures/tag-icons/package_signs/warning--t-roads--g2.png","viewer/textures/tag-icons/package_signs/warning--tanks-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--tanks-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--texts--g1.png","viewer/textures/tag-icons/package_signs/warning--texts--g2.png","viewer/textures/tag-icons/package_signs/warning--texts--g3.png","viewer/textures/tag-icons/package_signs/warning--towing--g1.png","viewer/textures/tag-icons/package_signs/warning--tractors--g1.png","viewer/textures/tag-icons/package_signs/warning--tractors--g2.png","viewer/textures/tag-icons/package_signs/warning--tractors--g3.png","viewer/textures/tag-icons/package_signs/warning--tractors--g4.png","viewer/textures/tag-icons/package_signs/warning--tractors--g5.png","viewer/textures/tag-icons/package_signs/warning--tractors--g6.png","viewer/textures/tag-icons/package_signs/warning--tractors--g7.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-at-signalized-intersections--g1.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-left--g1.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-left--g2.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-left--g3.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-left--g4.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-left-and-right--g1.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-left-buses--g1.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-right--g1.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-right--g2.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-right--g3.png","viewer/textures/tag-icons/package_signs/warning--traffic-merges-right-buses--g1.png","viewer/textures/tag-icons/package_signs/warning--traffic-queues-likely--g1.png","viewer/textures/tag-icons/package_signs/warning--traffic-queues-likely--g2.png","viewer/textures/tag-icons/package_signs/warning--traffic-queues-likely--g3.png","viewer/textures/tag-icons/package_signs/warning--traffic-queues-likely--g4.png","viewer/textures/tag-icons/package_signs/warning--traffic-queues-likely--g5.png","viewer/textures/tag-icons/package_signs/warning--traffic-signals--g1.png","viewer/textures/tag-icons/package_signs/warning--traffic-signals--g2.png","viewer/textures/tag-icons/package_signs/warning--traffic-signals--g3.png","viewer/textures/tag-icons/package_signs/warning--traffic-signals--g4.png","viewer/textures/tag-icons/package_signs/warning--traffic-signals--g5.png","viewer/textures/tag-icons/package_signs/warning--traffic-signals--g6.png","viewer/textures/tag-icons/package_signs/warning--traffic-slow--g1.png","viewer/textures/tag-icons/package_signs/warning--trail-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--trail-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--trail-crossing--g3.png","viewer/textures/tag-icons/package_signs/warning--trail-crossing--g4.png","viewer/textures/tag-icons/package_signs/warning--trail-crossing--g5.png","viewer/textures/tag-icons/package_signs/warning--trail-crossing--g6.png","viewer/textures/tag-icons/package_signs/warning--trams-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--trams-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--triple-curve-left--g1.png","viewer/textures/tag-icons/package_signs/warning--triple-curve-right--g1.png","viewer/textures/tag-icons/package_signs/warning--triple-lanes-left-turn--g1.png","viewer/textures/tag-icons/package_signs/warning--triple-lanes-left-turn-or-go-straight--g1.png","viewer/textures/tag-icons/package_signs/warning--triple-lanes-right-turn--g1.png","viewer/textures/tag-icons/package_signs/warning--triple-lanes-right-turn-or-go-straight--g1.png","viewer/textures/tag-icons/package_signs/warning--triple-lanes-with-directions--g1.png","viewer/textures/tag-icons/package_signs/warning--triple-reverse-curve-left--g1.png","viewer/textures/tag-icons/package_signs/warning--triple-reverse-curve-right--g1.png","viewer/textures/tag-icons/package_signs/warning--trucks-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--trucks-crossing--g2.png","viewer/textures/tag-icons/package_signs/warning--trucks-rollover--g1.png","viewer/textures/tag-icons/package_signs/warning--trucks-rollover--g2.png","viewer/textures/tag-icons/package_signs/warning--trucks-rollover--g3.png","viewer/textures/tag-icons/package_signs/warning--trucks-rollover--g4.png","viewer/textures/tag-icons/package_signs/warning--trucks-rollover--g5.png","viewer/textures/tag-icons/package_signs/warning--tunnel--g1.png","viewer/textures/tag-icons/package_signs/warning--tunnel--g2.png","viewer/textures/tag-icons/package_signs/warning--tunnel--g3.png","viewer/textures/tag-icons/package_signs/warning--tunnel--g4.png","viewer/textures/tag-icons/package_signs/warning--tunnel--g5.png","viewer/textures/tag-icons/package_signs/warning--tunnel--g6.png","viewer/textures/tag-icons/package_signs/warning--tunnel--g7.png","viewer/textures/tag-icons/package_signs/warning--turn-left--g1.png","viewer/textures/tag-icons/package_signs/warning--turn-left--g2.png","viewer/textures/tag-icons/package_signs/warning--turn-left--g3.png","viewer/textures/tag-icons/package_signs/warning--turn-left-or-right--g1.png","viewer/textures/tag-icons/package_signs/warning--turn-right--g1.png","viewer/textures/tag-icons/package_signs/warning--turn-right--g2.png","viewer/textures/tag-icons/package_signs/warning--turn-right--g3.png","viewer/textures/tag-icons/package_signs/warning--two-way-traffic--g1.png","viewer/textures/tag-icons/package_signs/warning--two-way-traffic--g2.png","viewer/textures/tag-icons/package_signs/warning--two-way-traffic--g3.png","viewer/textures/tag-icons/package_signs/warning--two-way-traffic--g4.png","viewer/textures/tag-icons/package_signs/warning--two-way-traffic--g5.png","viewer/textures/tag-icons/package_signs/warning--two-way-traffic--g6.png","viewer/textures/tag-icons/package_signs/warning--u-turn--g1.png","viewer/textures/tag-icons/package_signs/warning--u-turn--g2.png","viewer/textures/tag-icons/package_signs/warning--uneven-road--g1.png","viewer/textures/tag-icons/package_signs/warning--uneven-road--g2.png","viewer/textures/tag-icons/package_signs/warning--uneven-roads-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--vehicles-and-others--g1.png","viewer/textures/tag-icons/package_signs/warning--vehicles-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--village--g1.png","viewer/textures/tag-icons/package_signs/warning--weight-limit--g5.png","viewer/textures/tag-icons/package_signs/warning--weight-limit-per-tandem-axle--g1.png","viewer/textures/tag-icons/package_signs/warning--width-restriction--g1.png","viewer/textures/tag-icons/package_signs/warning--width-restriction--g2.png","viewer/textures/tag-icons/package_signs/warning--width-restriction--g3.png","viewer/textures/tag-icons/package_signs/warning--width-restriction--g4.png","viewer/textures/tag-icons/package_signs/warning--wild-animals--g1.png","viewer/textures/tag-icons/package_signs/warning--wild-animals--g2.png","viewer/textures/tag-icons/package_signs/warning--wild-animals--g3.png","viewer/textures/tag-icons/package_signs/warning--wild-animals--g4.png","viewer/textures/tag-icons/package_signs/warning--wild-animals--g5.png","viewer/textures/tag-icons/package_signs/warning--wild-animals--g6.png","viewer/textures/tag-icons/package_signs/warning--wild-animals--g7.png","viewer/textures/tag-icons/package_signs/warning--wild-animals--g8.png","viewer/textures/tag-icons/package_signs/warning--wind--g1.png","viewer/textures/tag-icons/package_signs/warning--winding-road--g1.png","viewer/textures/tag-icons/package_signs/warning--winding-road-first-left--g1.png","viewer/textures/tag-icons/package_signs/warning--winding-road-first-left--g2.png","viewer/textures/tag-icons/package_signs/warning--winding-road-first-left--g3.png","viewer/textures/tag-icons/package_signs/warning--winding-road-first-right--g1.png","viewer/textures/tag-icons/package_signs/warning--winding-road-first-right--g2.png","viewer/textures/tag-icons/package_signs/warning--winding-road-first-right--g3.png","viewer/textures/tag-icons/package_signs/warning--winding-road-first-right--g4.png","viewer/textures/tag-icons/package_signs/warning--winding-road-to-left--g1.png","viewer/textures/tag-icons/package_signs/warning--winding-road-to-right--g1.png","viewer/textures/tag-icons/package_signs/warning--wombat-crossing--g1.png","viewer/textures/tag-icons/package_signs/warning--y-roads--g1.png","viewer/textures/tag-icons/package_signs/warning--y-roads--g2.png","viewer/textures/tag-icons/package_signs/warning--yield-ahead--g1.png","viewer/textures/tag-icons/package_signs/warning--yield-ahead--g3.png","viewer/textures/tag-icons/allterra/index.ts","viewer/textures/tag-icons/allterra/beginn schiessuebungsraum.png","viewer/textures/tag-icons/allterra/beginn schiessuebungsstrecke.png","viewer/textures/tag-icons/allterra/doppelrhombus.png","viewer/textures/tag-icons/allterra/doppelwinkel.png","viewer/textures/tag-icons/allterra/ende schiessuebungsraum.png","viewer/textures/tag-icons/allterra/ende schiessuebungsstrecke.png","viewer/textures/tag-icons/allterra/rhombus.png","viewer/textures/tag-icons/allterra/stellung feuerhalt.png","viewer/textures/tag-icons/allterra/winkel.png","types/tags.ts","utilities/assets.ts","utilities/camera.ts","redux/config-upgrade.ts","utilities/project.ts","utilities/csv-writer.ts","utilities/index.ts","functions/definitions/blur_vehicles_people.tsx","functions/definitions/classify_export.tsx","functions/definitions/convert_units.tsx","functions/definitions/las_to_orthomosaic.tsx","functions/definitions/las_to_solv3d_streamable.tsx","functions/definitions/sampling.tsx","functions/definitions/thin_las.tsx","functions/functions.tsx","types/web-sources.ts","folder/asset.tsx","events.ts","folder/tags.tsx","folder/folder.tsx","folder/web-sources.tsx","folder/folder-list.tsx","folder/models.tsx","bookmarks/bookmark-list.tsx","bookmarks/bookmark.tsx","asset-drawer.tsx","settings/global-settings.tsx","viewer/textures/colormaps/awesome-green.png","viewer/textures/colormaps/black-orange.png","viewer/textures/colormaps/blue-hue.png","viewer/textures/colormaps/blue-orange.png","viewer/textures/colormaps/blue-red.png","viewer/textures/colormaps/grayscale.png","viewer/textures/colormaps/heat-map.png","viewer/textures/colormaps/jet.png","viewer/textures/colormaps/pastel-shades.png","viewer/textures/colormaps/index.ts","settings/settings-drawer.tsx","app-bar.tsx","viewer/js/classifications.ts","viewer/js/shaders/render_basic.frag","viewer/js/shaders/render_common.vert","viewer/js/shaders/index.ts","viewer/js/shaders/pointcloud.vert","viewer/js/shaders/pointcloud.frag","viewer/js/shaders/panoramic.vert","viewer/js/shaders/panoramic.frag","viewer/js/shaders/planar.vert","viewer/js/shaders/planar.frag","viewer/js/shaders/render_edl.frag","viewer/js/shaders/render_output.frag","viewer/js/shaders/markers.vert","viewer/js/shaders/markers.frag","viewer/js/shaders/utilities.vert","viewer/js/shaders/utilities.frag","viewer/js/shaders/picker_basic.vert","viewer/js/shaders/picker_basic.frag","viewer/js/shaders/gpu_picker.vert","viewer/js/shaders/gpu_picker.frag","viewer/js/shaders/texture_pack.vert","viewer/js/shaders/tags.vert","viewer/js/shaders/tags.frag","viewer/js/shaders/sprite.vert","viewer/js/shaders/sprite.frag","viewer/js/rendering/render-materials.ts","viewer/js/rendering/render-targets.ts","viewer/js/rendering/render-utils.ts","viewer/js/pointcloud/point-cloud.ts","viewer/js/binary-heap.ts","viewer/js/pointcloud/point-loader.ts","viewer/js/pointcloud/generic-pointcloud.ts","viewer/js/pointcloud/streamable-pointcloud.ts","viewer/js/pointcloud/encompass-pointcloud.ts","viewer/js/pointcloud/point-attributes.ts","viewer/js/pointcloud/potree-pointcloud.ts","viewer/js/controls/orbit-controls.ts","viewer/js/labelling/categories.ts","viewer/js/cameras/texture-cache.ts","viewer/js/cameras/camera-list.ts","viewer/textures/misc/no-image-panoramic.png","viewer/js/cameras/panoramic.ts","viewer/textures/misc/no-image-planar.png","viewer/js/cameras/planar.ts","viewer/js/cameras/aerial-controller.ts","viewer/textures/misc/arrow-standard.png","viewer/textures/misc/arrow-shadow.png","viewer/js/ray-caster.ts","viewer/js/cameras/scene-controller.ts","context-menu/context-menu.tsx","context-menu/custom-links.tsx","viewer/js/aerial/map.ts","viewer/js/aerial/orthos.ts","viewer/js/labelling/image-label.ts","viewer/js/labelling/ortho-label.ts","viewer/js/labelling/scene-label.ts","viewer/js/markup/clipping-box.ts","viewer/js/markup/point-markup.ts","viewer/js/controls/mobile-controls.ts","viewer/js/point-profile/point-profile.ts","viewer/js/controls/controls.ts","viewer/js/controls/compass.ts","viewer/js/controls/mouse-controls.ts","viewer/js/controls/multi-image.ts","viewer/js/measurements/measurement.ts","viewer/js/measurements/measurement-aerial-view.ts","viewer/js/measurements/measurement-constructor.ts","viewer/js/measurements/measurement-controller.ts","viewer/js/measurements/measurement-formatter.ts","viewer/js/measurements/measurement-group-exporter.ts","viewer/js/measurements/measurement-group.ts","viewer/js/measurements/measurement-scene-view.ts","viewer/js/gpu-picker.ts","stats.module.js","viewer/js/tags/tags.ts","viewer/textures/sprites/point.png","viewer/js/linework/cad.ts","viewer/js/linework/ifc.ts","viewer/js/linework/shp.ts","viewer/js/linework/dxf.ts","viewer/js/web-sources/loader.ts","viewer/js/web-sources/web-sources.ts","viewer/js/main.ts","viewer/textures/map-preview/index.ts","viewer/textures/map-preview/open-street-maps.png","viewer/textures/map-preview/arcgis-world.png","viewer/textures/map-preview/arcgis-street.png","viewer/layer-switcher.tsx","viewer/viewer.tsx","viewer/js/data-aligner/image-aligner-advanced.ts","viewer/js/data-aligner/image-aligner-basic.ts","viewer/js/data-aligner/observations.ts","viewer/js/data-aligner/local-projection.ts","alignment/observations.tsx","alignment/image-aligner-advanced.tsx","alignment/image-aligner-basic.tsx","alignment/local-projection.tsx","labelling/image-labelling.tsx","navigation/quick-nav.tsx","export/static/utils.ts","export/static/state.ts","export/static/exporter.ts","export/common.tsx","export/static/static-export.tsx","types/cloud-export.ts","export/cloud/exporter.ts","export/cloud/cloud-export.tsx","markup/point-markup.tsx","measurements/measurements.tsx","measurements/multi-image.tsx","viewer/textures/misc/about-icon.png","about.tsx","task-queue.tsx","hooks/use-item-search.ts","cloud-projects.tsx","app.tsx","redux/project-slice.ts","redux/store.ts","redux/projections-slice.ts"],"names":["unknownProjectionMeters","type","default","units","name","string","unknownProjectionFeet","defaultProjection","defaultTransform","origin","Array","fill","translation","rotation","scale","uniqueProjectionID","text","replace","userProjections","constructor","data","file","this","load","exists","map","x","includes","push","storage","setSync","isStaticSite","getSync","isArray","delete","index","indexOf","splice","update","save","useStyles","makeStyles","theme","createStyles","title","margin","padding","spacing","content","paddingTop","titleClose","color","marginTop","marginBottom","adornedEnd","paddingRight","utmParent","display","utmZone","flex","utmButton","marginLeft","button","dropdown","minWidth","formControl","width","buttonDiv","textAlign","tabsParent","tabsHeaders","UserProjectionPanel","props","loadProjectionToEdit","setActiveTab","tableState","t","useTranslation","deleteDialog","useDialog","columns","id","label","searchable","rows","option","custom","transform","disabled","LocalScene","isDataProjection","actions","icon","fontSize","onClick","row","handleOpen","deletePrompt","open","Fragment","length","Typography","variant","state","results","filter","projection","maxHeight","onCancel","handleClose","onSubmit","toast","error","onDelete","prompt","EditPanel","customProjection","updateEditableValues","hasTransform","setHasTransform","newProjection","existingName","classes","projString","translate","nameTrim","trim","stringTrim","originXError","originYError","originZError","translateXError","translateYError","translateZError","rotationError","scaleError","canSubmit","updateString","value","updateOrigin","event","parseFloat","target","isNaN","updateTranslation","Grid","container","item","xs","onChange","options","placeholder","multiline","FormControlLabel","className","control","Checkbox","checked","TextField","e","InputLabelProps","shrink","fullWidth","Button","JSON","parse","stringify","nameChanged","duplicateName","isValidProjection","success","SearchPanel","setType","useState","searchTerm","setSearchTerm","hemisphere","setHemisphere","searching","setSearching","searchResults","setSearchResults","handleString","getProjections","searchText","pageNumber","previousResults","maxPageNumber","fetch","then","response","json","parsed","forEach","result","code","proj4","combined","setTimeout","numeric","epsg","parseInt","InputLabel","Select","labelId","MenuItem","InputProps","startAdornment","InputAdornment","position","clsx","select","reset","StyledPanel","PanelProps","style","minHeight","children","ProjectionsManager","uniqueProjectID","useUniqueProjectID","projectionsDialog","userTableState","useTableState","defaultSort","searchTableState","setExistingName","setNewProjection","activeTab","setTabValue","setCustomProjection","clearProjectionValues","projectionData","dataCopy","hasOwnProperty","transformCopy","useEffect","registerEvent","Dialog","scroll","onClose","AppBar","Tabs","newactiveTab","Tab","TabProps","IconButton","aria-label","newValues","webpackEmptyContext","req","Error","keys","resolve","module","exports","createTheme","EngineViewer","store","ThemeProvider","ReactDOM","render","document","getElementById","readFileJSON","path","isCloudSite","isValidURL","readJsonFromURL","readJsonElectron","readFileText","readTextFromURL","readTextElectron","readFileBuffer","readBufferFromURL","readBufferElectron","async","headers","status","fse","readFile","byteRange","first","last","arrayBuffer","bytesRequested","byteLength","tmpBuffer","Buffer","alloc","buffer","bytesRead","read","close","originalFetch","asyncTimeout","ms","Promise","handler","locked","accessTokenKey","refreshTokenKey","localStorage","getItem","clearTokens","removeItem","checkForKey","tokenKey","has","token","get","setItem","updateTokens","input","init","others","accessToken","url","engineCloudURL","method","refreshToken","initialUserState","email","firstName","lastName","adminPermissions","AccessType","Admin","access","create","edit","emptyPermissions","ViewOnly","AuthContext","createContext","user","permissions","loggedIn","initialized","linkAccount","signOut","getAppCode","AuthProvider","i18n","websockets","useWebSockets","setState","activate","appCode","String","access_code","useAppCode","reject","retryAttempt","interval","setInterval","clearInterval","initialize","newState","isElectronApp","getUser","connect","window","location","pathname","getPermissions","Provider","getLocalizedURL","language","openExternalLink","stSignOut","redirectToLogin","disconnect","SuperTokens","appInfo","appName","apiDomain","apiBasePath","recipeList","Session","EmailPassword","customFetch","wait","initCustomFetch","ActiveToolContext","activeToolOpen","setActiveToolOpen","ActiveToolProvider","ViewerContext","viewer","setViewer","ViewerProvider","TaskStatus","TaskQueueContext","taskQueue","addRunningTask","commands","onFinish","stopRunningTask","task","clearTaskQueue","TaskQueueProvider","setTaskQueue","running","setRunning","runningTask","find","Running","exe","destroy","updateTaskStatus","taskID","tasks","availableTasks","Waiting","run","saveLogs","runAvailableTask","Finished","newTask","nanoid","PythonExecutable","BookmarksContext","bookmarks","loadBookmark","bookmarkID","deleteBookmarks","BookmarksProvider","useViewer","dispatch","useDispatch","assets","useSelector","selectAllAssets","selectAllBookmarks","visibleAssets","useMemo","getVisibleAssets","warning","bookmark","updateSettingsState","settings","applySavedAerialState","aerialState","visibleAssetIDs","asset","bookmarkAssetIDs","assetIDs","assetID","getValidAssetIDs","sort","isEqual","applySavedSceneState","sceneState","setInitialStateFlag","changeCameraState","setVisibleAssets","deleteBookmark","useCallback","useTaskQueue","useContext","useActiveTool","selectSessionID","usePopover","anchorRef","useRef","setOpen","handleToggle","prevState","useAuth","useContextMenu","anchorPosition","undefined","preventDefault","left","clientX","top","clientY","useGlobalSettings","GlobalSettingsContext","WebSocketContext","useBookmarks","AssetType","pointCloudType","ext","lasFileFormat","LAS","encompassFileFormat","Encompass","e57FileFormat","E57Points","potreeFileFormat","Potree","Unknown","getByID","getAssetByTagID","tagID","Tag","items","getAssetPayload","date","Date","toISOString","folderID","visible","saved","cloud","assetsSlice","createSlice","initialState","reducers","addAsset","action","payload","addAssets","updateAsset","updates","key","deleteAsset","toggleFolderVisibility","setVisibleFolder","setSavedState","updateModelLayer","layerID","DXF","SHP","getAssetByModelLayerID","layer","updateWebMapLayer","Webmap","layers","getAssetByWebMapLayerID","createTags","tags","api","deleteTag","updateTag","tag","wsCreateAsset","wsUpdateAsset","wsDeleteAsset","createAsset","getState","assetData","size","texture","slice","createCollection","deleteCollection","updateCollection","getModelAssets","IFC","getTagAssets","getPointCloudAssets","getCameraFileAssets","Panoramic","Planar","getOrthoAssets","OrthoMosaic","getLandXMLAssets","LandXML","getWebMapAssets","pageSize","query","setQuery","sortDir","setSortDir","sortBy","setSortBy","setPageNumber","rowsPerPage","setRowsPerPage","descendingComparator","a","b","compA","compB","toLowerCase","getComparator","handleSearchChange","debounce","handlePageNumberChange","handleRowsPerPageChange","handleRequestSort","handleSearch","queryParts","split","searchableColumns","column","valid","parts","handleSort","comparator","handlePages","transformCache","unitsToValue","latitudeLongitude","webMercator","workerPool","AsyncWorkerPool","verifyProjection","info","verifyProj4String","verifyTransformObject","estimateTransform","estimator","inputValues","outputValues","domain","y","range","console","errors","estimate","nudged","getScale","getRotation","getTranslation","transformed","point","transformMany","i","dX","dY","Math","sqrt","MathUtils","radToDeg","reprojectPoints","points","projectionFrom","projectionTo","values","positions","postMessage","reprojectPoint","isVector3","toArray","rotateAxis","Vector3","angle","degToRad","sub","applyAxisAngle","divide","add","heightScale","transformKey","projToMeters1","projectionToMeters","getTransform","forward","multiply","closestUtmZone","lonlat","ceil","Coordinate","z","super","clone","copy","SceneCoordinate","toAerial","_sceneToAerial","toLonLat","_sceneToLonLat","toGeocentric","LonLatCoordinate","toDataProjection","_sceneToData","DataProjectionCoordinate","toViewProjection","GeocentricCoordinate","toProjection","dataProjection","viewProjection","ViewProjectionCoordinate","toScene","_dataToScene","pow","ep","p","th","atan2","lon","lat","sin","cos","N","alt","PI","abs","ProjectedCoordinate","distanceTo","isLonLat1","isLonLatProjection","isLonLat2","haversineDistance","vector","SphericalPosition","radius","_theta","_phi","limits","round","precision","divisor","fromVectors","pivot","orbit","offset","theta","dist2d","phi","max","min","fromValues","toVector3","projectionString","getEulerInverse","euler","quaternion","Quaternion","setFromEuler","invert","Euler","setFromQuaternion","geometryToArray","geometry","polygon","coordinates","flatCoordinates","totalPoints","ecef","calculatePointsPCA","vertices","returnFlat","eigen","mean","vertex","divideScalar","executeWithoutLogging","PCA","getEigenVectors","calculateEigenVectors","matrix","Matrix4","makeBasis","fromArray","transpose","applyMatrix4","pointsFlat","projectionToUnits","proj","Proj","convert","P1","P2","diffLat","diffLng","arc","distance2d","height","distance","origin_east","origin_north","origin_elevation","translation_east","translation_north","translation_elevation","scale_factor_h","Object","assign","toUpperCase","join","_sceneShift","_sceneScale","_dataProjection","_viewProjection","dataToMeters","dataProjectionUnits","viewProjectionUnits","isLonLatProject","engineStyleProjection","proj4String","scale_factor_v","setDataProjection","resetSceneShift","setViewProjection","checkForOffset","dx","dy","offsetToScene","_dataToLonLat","_dataToAerial","lonLat","multiplyScalar","bookmarksSlice","createBookmark","attributes","updateBookmark","modified","wsCreateBookmark","wsUpdateBookmark","wsDeleteBookmark","ProjectType","numberOfClassifications","classifications","alias","from","getClassificationColors","image","Image","onload","canvas","createElement","context","getContext","drawImage","imageData","getImageData","colors","red","green","hexColor","toString","padStart","src","classificationsShader","folders","cloudProjectID","body","withOriginalID","folder","err","tagCollection","ChangeDetector","oldZoom","oldFov","oldLookatVector","oldCameraPosition","oldUpVector","oldCameraID","oldHeight","oldWidth","oldOrbitState","orbitChanged","cameraChanged","changed","fov","getAerialZoomLevel","lookatVector","upVector","getCurrentCameraName","orbitState","camera","lookatChanged","angleTo","newLookatVector","upChanged","newUpVector","positionChanged","newCameraPosition","fovChanged","newFov","zoomChanged","newZoom","newCameraID","heightChanged","newHeight","widthChanged","newWidth","newOrbitState","UnitConverter","metresToSurveyFeetRatio","metresToFeetRatio","allowedUnits","Set","fromUnits","toUnits","fixedLength","convertedValue","toFixed","isMobile","test","navigator","userAgent","isUrl","encodeURI","getProjFactor","screenHeight","projFactor","tan","getPointScale","mesh","meshPosition","getWorldPosition","innerHeight","toScreenPosition","set","project","eventToPixel","uv","offsetX","offsetY","layerX","layerY","randomHexColor","random","closestPowerOfTwo","power","log","roundDigit","num","digits","multiplyFactor","Number","EPSILON","callback","logger","windowSafeDateISO","chunkedArray","array","tmp","coordinatesToArray","numPoints","newPoints","interpolate1D","start","end","steps","linspace","toBoolean","mergeBoundingBoxes","boundingBoxes","bbox","allIndexOf","indices","simplepolygon","require","pointInPolygon","numberOfVertices","insidePolygon","j","verti","vertj","dy1","dy2","cond1","cond2","planeFromVectors","directions","normal","setLength","Plane","checkValidPolygon","shifted","features","parseURLParams","hash","URL","substring","urlParams","URLSearchParams","fromEntries","getModifiedAerialState","params","center","zoom","getModifiedSceneState","ox","oy","oz","px","py","pz","initialSceneState","lookat","cam","angles","mapBoundsStyle","Style","stroke","Stroke","boundsToMapLayer","boundingBox","polygonPoints","vectorsource","VectorSource","wrapX","Polygon","feature","Feature","addFeature","VectorLayer","zIndex","source","fetchImage","signal","blob","Blob","createImageBitmap","imageOrientation","colorSpaceConversion","resizeImage","resized","resizeWidth","resizeHeight","resizeQuality","warn","ControlType","ControlModes","0","ORBIT","MOUSE","LEFT","ZOOM","MIDDLE","PAN","RIGHT","1","2","customLinkSlice","createCustomLink","customURL","updateCustomLink","linkID","deleteCustomLink","selectAllCustomLinks","custom_links","fileName","numWorkers","workers","queue","initWorkers","filePath","worker","Worker","message","transfer","processQueue","shift","onmessage","corporate","blue","grey","createMuiTheme","appBar","modal","drawer","snackbar","tooltip","overrides","MuiPopover","root","MuiTooltip","backgroundColor","arrow","border","MuiDialogTitle","MuiDialogContent","MuiIconButton","palette","primary","main","light","lighten","dark","darken","secondary","mixins","toolbar","VolumeType","SamplingRate","MeasureType","AerialMeasureType","MeasureExportType","LocalizedFileFilter","extensions","getCombinedExtension","filters","pngFilter","pointCloudFileFormats","pointCloudFilter","configFileType","configFilter","customURLFilter","imageOrthoFormat","imageOrthoFilter","imageCSVFilter","projFileFormat","imagePlanarFormat","imagePlanarFilter","csvExportFilter","cameraMatrixFilter","measureDataFormat","measureDataFilter","measureCSVFilter","tagCSVFilter","DXFFileFormat","SHPFileFormat","IFCFileFormat","xmlFileFormat","drawingFilter","DXFModelFilter","SHPModelFilter","ZIPFileFilter","modelFileFilter","labelFilter","modelFilter","xmlFileFilter","lasFileFilter","olButtonParent","background","borderRadius","olButtonTopLeft","olButtonBottomLeft","bottom","olButton","outline","olButtonRotate","transition","EnhancedIconButton","tooltipText","tooltipTitle","isHtml","dangerouslySetInnerHTML","__html","ArrowTooltip","opacity","OpenLayersIcon","rotate","placement","DenseIcon","useTheme","centered","other","ListItemIcon","alignItems","draggableTitleClose","marginRight","draggableTitleMinimize","draggableContentStaticHeight","draggableContent","maxWidth","draggableMouseDown","draggableContentParent","flexDirection","overflow","resize","draggableResizeHandler","float","right","draggableTopDiv","draggableBackdropPaper","draggableBackdropRounded","draggableRoundCorner","draggableTitle","userSelect","cursor","draggableTitleDown","progressContent","progressNoTransition","dropdownGrid","justifyContent","dropdownSpacing","simpleDialogMain","simpleDialogHeader","simpleDialogTitle","simpleDialogEdit","simpleDialogClose","PromptDialog","DialogTitle","DialogContent","DialogContentText","DialogActions","AlertDialog","TextDialog","clear","setText","setDisabled","handleSubmit","trimmedText","onKeyDown","autoFocus","DropDownDialog","defaultValue","setValue","SimpleDialog","onEdit","canClose","DraggableDialog","initialHeight","initialWidth","initialPositionX","initialPositionY","headerHeight","paperPropID","resizeElementID","bounds","setBounds","mouseDown","setMouseDown","modifiedSize","setModifiedSize","setPosition","element","elementWidth","clientWidth","newModifiedSize","clientHeight","newBounds","innerWidth","getNewBoundary","newPosition","rightOutOfBounds","leftOutOfBounds","bottomOutOfBounds","topOutOfBounds","checkOutOfBounds","handle","onDrag","fullScreen","onFocus","parentElement","removeAttribute","aria-labelledby","paperFullScreen","scrollPaper","BackdropProps","PaperProps","onMouseDown","onMouseUp","ProgressDialog","percent","animated","LinearProgress","bar","LabelCategoryDialog","getSelectedLabels","selectedLabelIDs","highlightedLabels","getCategoryDropdown","allCategories","getAllCategories","highlightedCategories","labelID","getCategoryByLabelID","choosableCategories","category","dropDownList","labelIDs","transferLabel","draggingListItem","staticListItem","borderBottom","flexGrow","DraggableListItem","setData","inputName","listLength","useStaticListItem","draggableId","provided","snapshot","ListItem","ref","innerRef","draggableProps","dragHandleProps","isDragging","NumberField","step","DraggableList","memo","onDragEnd","droppableId","droppableProps","header","fontWeight","whiteSpace","densePadding","denseFooter","hiddenSort","clip","noSelect","rowDisabled","rowIcon","buttonCell","buttonHeader","tableRow","paddingLeft","EnhancedTableCheckboxHead","numVisible","indeterminate","stopPropagation","EnhancedTableHead","onRequestSort","dense","hasActions","TableHead","TableRow","sortable","TableCell","align","sortDirection","TableSortLabel","active","hideSortIcon","direction","property","EnhancedTableBody","setSelectedRow","handleContextMenu","TableBody","hover","tabIndex","EnhancedTableCell","isString","condition","toLocaleString","cellContent","wordBreak","forceOpacity","pointer","EnhancedTable","contextMenu","search","setSearch","selectedRow","tableRows","numberOfRows","Paper","Input","TableContainer","Table","stickyHeader","TablePagination","rowsPerPageOptions","component","count","labelRowsPerPage","labelDisplayedRows","page","to","backIconButtonText","nextIconButtonText","onChangePage","onChangeRowsPerPage","DenseMenu","subMenuRoot","subMenuLabel","NestedMenuItem","React","forwardRef","parentMenuOpen","rightIcon","tabIndexProp","ContainerProps","ContainerPropsProp","MenuItemProps","containerRefProp","menuItemRef","useImperativeHandle","current","containerRef","menuContainerRef","isSubMenuOpen","setIsSubMenuOpen","isSubmenuFocused","ownerDocument","activeElement","child","onMouseEnter","onMouseLeave","focus","firstChild","Menu","pointerEvents","anchorEl","anchorOrigin","vertical","horizontal","transformOrigin","MenuListProps","keepMounted","disableAutoFocus","disableEnforceFocus","NestedMenu","MenuDivider","Divider","enteringScreen","transitions","duration","transitionProps","timeout","enter","exit","anchorReference","TransitionComponent","Grow","TransitionProps","converter","flexibleHeight","fileButtonDiv","dropdownWithLabel","paddingBottom","inputParent","inputLabel","inputSwitch","inputFolder","NumberFieldWithUnits","NumberFieldNoUnits","NumberFieldWithLabel","adornment","helperText","endAdornment","inputProps","hasError","floatValue","convertedMin","setConvertedMin","convertedMax","setConvertedMax","convertedData","setConvertedData","convertNearestStep","roundFunc","numSteps","floor","DropdownWithLabel","seperator","menuOptions","hasSeperator","isLastItem","FolderWithLabel","dialog","showOpenDialog","properties","canceled","folderPath","slash","filePaths","FileWithLabel","optional","saveFile","handleChange","showSaveDialog","Delete","Save","AttachFile","InputWithLabel","required","touched","setTouched","onInputChange","onBlur","TextWithLabel","renderAsHTML","typography","body1","CheckboxWithLabel","onCheckboxChange","_","Switch","LinearProgressWithLabel","Box","mr","TabPanel","BoxProps","role","verticalDivider","icons","iconButton","iconSize","listIcon","DenseDivider","spacingDown","spacingUp","DividerWithText","Chip","IconToolBar","ToolBarDivider","FontAwesomeIcon","errorColor","Icon","colorPrimary","ToolBarButton","SlimScrollbar","scrollHeight","autoHide","autoHeight","autoHeightMin","autoHeightMax","autoHideTimeout","autoHideDuration","DynamicScrollbar","scrollPercent","setScroll","setMaxHeight","listElementID","checkScrollHeight","offsetHeight","percentHeight","getMaxHeight","addEventListener","removeEventListener","Tooltip","CursorTooltip","textLines","ignoreToggle","hideTooltips","setHideTooltips","modifiedLines","line","onMouseMove","pageX","pageY","onHotkey","HTMLInputElement","which","PopperProps","getBoundingClientRect","memoWithOpen","areEqual","prevProps","nextProps","menuStateCache","fileMenu","submenu","click","WorkflowExecutable","sendToMainWindow","app","helpMenu","isDevMode","accelerator","remote","getCurrentWindow","toggleDevTools","shell","openPath","logDirectoryPath","clearMlResources","openExternal","toolsMenu","enabled","debugMenu","reload","webContents","send","showMessageBox","noLink","setToolEnabled","toolName","getApplicationMenu","getMenuItemById","setMenuState","showStatus","onLine","jsonData","license_check","buildElectronMenu","isStandardProject","template","menu","buildFromTemplate","setApplicationMenu","checkAllowedMenuItems","LanguageOptions","LanguagePopover","selectProjectType","Standard","changeLanguage","updateCompass","setLocalizedURL","clearTimeout","Popover","disableScrollLock","ListItemText","LanguageSwitch","popover","textTransform","divider","buttonParent","AccountPopover","accountType","getAccountType","AccountButton","Toaster","toasts","useToasterStore","remove","toastOptions","backdropFilter","fade","common","white","boxShadow","shadows","typographyLink","textDecoration","textDecorationColor","TypographyLink","colorPicker","ColorPicker","setColor","disableUnderline","orthoQuality","orthoOpacity","controlType","openQuickNav","aerialMeasureType","Spherical","volumeType","MultiPlane","volumeSampleRate","Medium","viewerBackground","aerialBackground","GlobalSettingsProvider","loadFromStorage","cache","now","configURL","getGlobalSettingsFromStorage","saveToStorage","EventType","ObjectType","joinRoom","roomID","WebSocketProvider","socket","setSocket","currentRoomID","setCurrentRoomID","onCreate","Assets","Folders","wsCreateFolder","Bookmarks","onUpdate","wsUpdateFolder","objectID","wsDeleteFolder","register","on","CreateObject","UpdateObject","DeleteObject","extraHeaders","Authorization","io","addTrailingSlash","connected","emit","LeaveRoom","JoinRoom","getDateTimeFormat","memoizeFormatConstructor","Intl","DateTimeFormat","defaultOptions","timeStyle","dateStyle","createdAt","format","ColorType","MarkerNavType","defaultClassifications","classification","available","initialSettingsState","colorMap","colorType","Height","dynamicSize","circularPoints","arrowMarkers","Arrows","cloudMaxPoints","cloudDistance","cloudScale","cloudMinimum","tagDistance","switched","drawerOpen","heightClip","intensityClip","saveSettingsDefaults","cloneDeep","applySavedSettings","settingsSlice","applySavedDefaults","defaults","changeDefaultSettings","changeOpacity","changeTagDistance","changeCloudDistance","changeCloudMaxPoints","changeCloudScale","changeCloudMinimum","changeHeightClip","changeIntensityClip","changeColorMap","changeColorType","changeDynamicSize","changeCircularPoints","changeAvailableClassifications","availableClassifications","changeClassificationVisibility","changeAllClassificationVisibility","changeSwitched","changeSelectedTab","changeDrawerOpen","changeArrowMarkers","selectOpacity","selectTagDistance","selectCloudDistance","selectCloudMaxPoints","selectCloudScale","selectCloudMinimum","selectHeightClip","selectIntensityClip","selectColorMap","selectColorType","selectDynamicSize","selectCircularPoints","selectViewerSwitched","selectSelectedTab","selectDrawerOpen","selectArrowMarkers","selectClassifications","getAvailableClassifications","getClassificationVisibilities","engineCloudURLKey","setEngineCloudURL","force","currentEngineCloudURL","searchParams","returnTo","href","setAttribute","appendChild","removeChild","initialAerialState","basemap","cameraStateSlice","adjustments","forcedTagID","changeCameraTransform","changeCameraHeight","changeBasicAdjustments","changeSavedAerialState","selectCameraHeight","selectActiveCamera","selectCameraState","selectCameraTransform","selectBasicAdjustments","selectSavedAerialState","selectForcedTagID","devModeConfig","appPath","getAppPath","fs","readFileSync","testing","getDevModeConfig","Executable","exePath","exeName","developerKey","spawnDetached","logText","basePath","executablePath","dirname","statusMessage","pid","parseCommandsList","copyableCommands","onLogs","commandList","cwd","spawn","env","process","PYTHONUNBUFFERED","NODEJS","detached","copyPasteCommands","commandIndex","commandName","saveLogFile","stderr","parseLines","stdout","messageType","messageData","execSync","onbeforeunload","write","stdin","logPrefix","dateString","replaceAll","logPath","logs","writeFile","filenames","readdir","oldestFilePath","oldest","filename","stats","stat","birthtime","trackToolUsage","electron","ipcRenderer","glob","pattern","getCloudProjectID","checkForCloudSite","isPackaged","tempDirectoryPath","getPath","getTemporaryFile","suffix","eventName","removeAllListeners","existsSync","mkdirSync","numRemoved","birthtimeMs","clearTemporaryFiles","userSettings","storagePath","engineStoragePath","viewerStoragePath","settingName","oldName","newName","copyFileSync","setDataPath","engineProjectionExist","viewerProjectionExist","dataPath","engineProjections","finalData","projections","projectionsByName","changeDuplicateNames","setStoragePath","profileContainer","toolbarDropdown","profileChart","PointProfile","samplingType","setSamplingType","displayUnits","setDisplayUnits","savePointProfileImageBrowser","imageBase64","getPointProfileImage","projectName","savePointProfileImageElectron","defaultPath","imageBase64Data","imageBuffer","writeFileSync","encoding","catch","setPointProfileSampling","setPointProfileUnits","resetPointProfile","refreshPointProfile","resetPointProfileView","initProfileContainer","isModelFile","isStreamablePointsFile","isRawPointsFile","getModelLayers","originalId","getWebmapLayers","identifier","getBaseAsset","getTagsData","comment","roll","pitch","yaw","config","object","resources","en","de","fr","es","ja","supportedLngs","use","initReactI18next","LanguageDetector","detection","cookieMinutes","fallbackLng","interpolation","escapeValue","history","pushState","defaultFolderTitle","generateDefaultFolder","foldersSlice","createFolder","updateFolder","newDefaultFolder","deleteFolder","selectDefaultFolder","selectAllFolders","spiralIntersect","spiral","stepDist","sigDigs","spiralParams","spiType","RL","constant","reverseCurve","partial","radiusEnd","radiusStart","cw","rot","delta","L","dirEnd","dirStart","xStart","yStart","xEnd","yEnd","segmentMin","segmentMax","Start","c","End","d","xCorr","yCorr","deltaCorr","ls","le","distMin","endPointError","chosenDelta","deltaTrial","l","xRotated","yRotated","xDiff","yDiff","dist","spiralParamaters","spiralCoord","distAlong","distAcross","xAtLength","yAtLength","lengthLocal","distAcrossNew","sideOfLine","lineDist","textures","tagTextures","basicPins","trafficSigns","UKRoadSigns","packageObjects","icon0","icon1","icon2","icon3","icon4","icon5","icon6","icon7","icon8","icon9","icon10","icon11","icon12","icon13","icon14","icon15","icon16","icon17","icon18","icon19","icon20","icon21","icon22","icon23","icon24","icon25","icon26","icon27","icon28","icon29","icon30","icon31","icon32","icon33","icon34","icon35","icon36","icon37","icon38","icon39","icon40","icon41","icon42","icon43","icon44","icon45","icon46","icon47","icon48","icon49","icon50","icon51","icon52","icon53","icon54","icon55","icon56","icon57","icon58","icon59","icon60","icon61","icon62","icon63","icon64","icon65","icon66","icon67","icon68","icon69","icon70","icon71","icon72","icon73","icon74","icon75","icon76","icon77","icon78","icon79","icon80","icon81","icon82","icon83","icon84","icon85","icon86","icon87","icon88","icon89","icon90","icon91","icon92","icon93","icon94","icon95","icon96","icon97","icon98","icon99","icon100","icon101","icon102","icon103","icon104","icon105","icon106","icon107","icon108","icon109","icon110","icon111","icon112","icon113","icon114","icon115","icon116","icon117","icon118","icon119","icon120","icon121","icon122","icon123","icon124","icon125","icon126","icon127","icon128","icon129","icon130","icon131","icon132","icon133","icon134","icon135","icon136","icon137","icon138","icon139","icon140","icon141","icon142","icon143","icon144","icon145","icon146","icon147","icon148","icon149","icon150","icon151","icon152","icon153","icon154","icon155","icon156","icon157","icon158","icon159","icon160","icon161","icon162","icon163","icon164","icon165","icon166","icon167","icon168","icon169","icon170","icon171","icon172","icon173","icon174","icon175","icon176","icon177","icon178","icon179","icon180","icon181","icon182","icon183","icon184","icon185","icon186","icon187","icon188","icon189","icon190","icon191","icon192","icon193","icon194","icon195","icon196","icon197","icon198","icon199","icon200","icon201","icon202","icon203","icon204","icon205","icon206","icon207","icon208","icon209","icon210","icon211","icon212","icon213","icon214","icon215","icon216","icon217","icon218","icon219","icon220","icon221","icon222","icon223","icon224","icon225","icon226","icon227","icon228","icon229","icon230","icon231","icon232","icon233","icon234","icon235","icon236","icon237","icon238","icon239","icon240","icon241","icon242","icon243","icon244","icon245","icon246","icon247","icon248","icon249","icon250","icon251","icon252","icon253","icon254","icon255","icon256","icon257","icon258","icon259","icon260","icon261","icon262","icon263","icon264","icon265","icon266","icon267","icon268","icon269","icon270","icon271","icon272","icon273","icon274","icon275","icon276","icon277","icon278","icon279","icon280","icon281","icon282","icon283","icon284","icon285","icon286","icon287","icon288","icon289","icon290","icon291","icon292","icon293","icon294","icon295","icon296","icon297","icon298","icon299","icon300","icon301","icon302","icon303","icon304","icon305","icon306","icon307","icon308","icon309","icon310","icon311","icon312","icon313","icon314","icon315","icon316","icon317","icon318","icon319","icon320","icon321","icon322","icon323","icon324","icon325","icon326","icon327","icon328","icon329","icon330","icon331","icon332","icon333","icon334","icon335","icon336","icon337","icon338","icon339","icon340","icon341","icon342","icon343","icon344","icon345","icon346","icon347","icon348","icon349","icon350","icon351","icon352","icon353","icon354","icon355","icon356","icon357","icon358","icon359","icon360","icon361","icon362","icon363","icon364","icon365","icon366","icon367","icon368","icon369","icon370","icon371","icon372","icon373","icon374","icon375","icon376","icon377","icon378","icon379","icon380","icon381","icon382","icon383","icon384","icon385","icon386","icon387","icon388","icon389","icon390","icon391","icon392","icon393","icon394","icon395","icon396","icon397","icon398","icon399","icon400","icon401","icon402","icon403","icon404","icon405","icon406","icon407","icon408","icon409","icon410","icon411","icon412","icon413","icon414","icon415","icon416","icon417","icon418","icon419","icon420","icon421","icon422","icon423","icon424","icon425","icon426","icon427","icon428","icon429","icon430","icon431","icon432","icon433","icon434","icon435","icon436","icon437","icon438","icon439","icon440","icon441","icon442","icon443","icon444","icon445","icon446","icon447","icon448","icon449","icon450","icon451","icon452","icon453","icon454","icon455","icon456","icon457","icon458","icon459","icon460","icon461","icon462","icon463","icon464","icon465","icon466","icon467","icon468","icon469","icon470","icon471","icon472","icon473","icon474","icon475","icon476","icon477","icon478","icon479","icon480","icon481","icon482","icon483","icon484","icon485","icon486","icon487","icon488","icon489","icon490","icon491","icon492","icon493","icon494","icon495","icon496","icon497","icon498","icon499","icon500","icon501","icon502","icon503","icon504","icon505","icon506","icon507","icon508","icon509","icon510","icon511","icon512","icon513","icon514","icon515","icon516","icon517","icon518","icon519","icon520","icon521","icon522","icon523","icon524","icon525","icon526","icon527","icon528","icon529","icon530","icon531","icon532","icon533","icon534","icon535","icon536","icon537","icon538","icon539","icon540","icon541","icon542","icon543","icon544","icon545","icon546","icon547","icon548","icon549","icon550","icon551","icon552","icon553","icon554","icon555","icon556","icon557","icon558","icon559","icon560","icon561","icon562","icon563","icon564","icon565","icon566","icon567","icon568","icon569","icon570","icon571","icon572","icon573","icon574","icon575","icon576","icon577","icon578","icon579","icon580","icon581","icon582","icon583","icon584","icon585","icon586","icon587","icon588","icon589","icon590","icon591","icon592","icon593","icon594","icon595","icon596","icon597","icon598","icon599","icon600","icon601","icon602","icon603","icon604","icon605","icon606","icon607","icon608","icon609","icon610","icon611","icon612","icon613","icon614","icon615","icon616","icon617","icon618","icon619","icon620","icon621","icon622","icon623","icon624","icon625","icon626","icon627","icon628","icon629","icon630","icon631","icon632","icon633","icon634","icon635","icon636","icon637","icon638","icon639","icon640","icon641","icon642","icon643","icon644","icon645","icon646","icon647","icon648","icon649","icon650","icon651","icon652","icon653","icon654","icon655","icon656","icon657","icon658","icon659","icon660","icon661","icon662","icon663","icon664","icon665","icon666","icon667","icon668","icon669","icon670","icon671","icon672","icon673","icon674","icon675","icon676","icon677","icon678","icon679","icon680","icon681","icon682","icon683","icon684","icon685","icon686","icon687","icon688","icon689","icon690","icon691","icon692","icon693","icon694","icon695","icon696","icon697","icon698","icon699","icon700","icon701","icon702","icon703","icon704","icon705","icon706","icon707","icon708","icon709","icon710","icon711","icon712","icon713","icon714","icon715","icon716","icon717","icon718","icon719","icon720","icon721","icon722","icon723","icon724","icon725","icon726","icon727","icon728","icon729","icon730","icon731","icon732","icon733","icon734","icon735","icon736","icon737","icon738","icon739","icon740","icon741","icon742","icon743","icon744","icon745","icon746","icon747","icon748","icon749","icon750","icon751","icon752","icon753","icon754","icon755","icon756","icon757","icon758","icon759","icon760","icon761","icon762","icon763","icon764","icon765","icon766","icon767","icon768","icon769","icon770","icon771","icon772","icon773","icon774","icon775","icon776","icon777","icon778","icon779","icon780","icon781","icon782","icon783","icon784","icon785","icon786","icon787","icon788","icon789","icon790","icon791","icon792","icon793","icon794","icon795","icon796","icon797","icon798","icon799","icon800","icon801","icon802","icon803","icon804","icon805","icon806","icon807","icon808","icon809","icon810","icon811","icon812","icon813","icon814","icon815","icon816","icon817","icon818","icon819","icon820","icon821","icon822","icon823","icon824","icon825","icon826","icon827","icon828","icon829","icon830","icon831","icon832","icon833","icon834","icon835","icon836","icon837","icon838","icon839","icon840","icon841","icon842","icon843","icon844","icon845","icon846","icon847","icon848","icon849","icon850","icon851","icon852","icon853","icon854","icon855","icon856","icon857","icon858","icon859","icon860","icon861","icon862","icon863","icon864","icon865","icon866","icon867","icon868","icon869","icon870","icon871","icon872","icon873","icon874","icon875","icon876","icon877","icon878","icon879","icon880","icon881","icon882","icon883","icon884","icon885","icon886","icon887","icon888","icon889","icon890","icon891","icon892","icon893","icon894","icon895","icon896","icon897","icon898","icon899","icon900","icon901","icon902","icon903","icon904","icon905","icon906","icon907","icon908","icon909","icon910","icon911","icon912","icon913","icon914","icon915","icon916","icon917","icon918","icon919","icon920","icon921","icon922","icon923","icon924","icon925","icon926","icon927","icon928","icon929","icon930","icon931","icon932","icon933","icon934","icon935","icon936","icon937","icon938","icon939","icon940","icon941","icon942","icon943","icon944","icon945","icon946","icon947","icon948","icon949","icon950","icon951","icon952","icon953","icon954","icon955","icon956","icon957","icon958","icon959","icon960","icon961","icon962","icon963","icon964","icon965","icon966","icon967","icon968","icon969","icon970","icon971","icon972","icon973","icon974","icon975","icon976","icon977","icon978","icon979","icon980","icon981","icon982","icon983","icon984","icon985","icon986","icon987","icon988","icon989","icon990","icon991","icon992","icon993","icon994","icon995","icon996","icon997","icon998","icon999","icon1000","icon1001","icon1002","icon1003","icon1004","icon1005","icon1006","icon1007","icon1008","icon1009","icon1010","icon1011","icon1012","icon1013","icon1014","icon1015","icon1016","icon1017","icon1018","icon1019","icon1020","icon1021","icon1022","icon1023","icon1024","icon1025","icon1026","icon1027","icon1028","icon1029","icon1030","icon1031","icon1032","icon1033","icon1034","icon1035","icon1036","icon1037","icon1038","icon1039","icon1040","icon1041","icon1042","icon1043","icon1044","icon1045","icon1046","icon1047","icon1048","icon1049","icon1050","icon1051","icon1052","icon1053","icon1054","icon1055","icon1056","icon1057","icon1058","icon1059","icon1060","icon1061","icon1062","icon1063","icon1064","icon1065","icon1066","icon1067","icon1068","icon1069","icon1070","icon1071","icon1072","icon1073","icon1074","icon1075","icon1076","icon1077","icon1078","icon1079","icon1080","icon1081","icon1082","icon1083","icon1084","icon1085","icon1086","icon1087","icon1088","icon1089","icon1090","icon1091","icon1092","icon1093","icon1094","icon1095","icon1096","icon1097","icon1098","icon1099","icon1100","icon1101","icon1102","icon1103","icon1104","icon1105","icon1106","icon1107","icon1108","icon1109","icon1110","icon1111","icon1112","icon1113","icon1114","icon1115","icon1116","icon1117","icon1118","icon1119","icon1120","icon1121","icon1122","icon1123","icon1124","icon1125","icon1126","icon1127","icon1128","icon1129","icon1130","icon1131","icon1132","icon1133","icon1134","icon1135","icon1136","icon1137","icon1138","icon1139","icon1140","icon1141","icon1142","icon1143","icon1144","icon1145","icon1146","icon1147","icon1148","icon1149","icon1150","icon1151","icon1152","icon1153","icon1154","icon1155","icon1156","icon1157","icon1158","icon1159","icon1160","icon1161","icon1162","icon1163","icon1164","icon1165","icon1166","icon1167","icon1168","icon1169","icon1170","icon1171","icon1172","icon1173","icon1174","icon1175","icon1176","icon1177","icon1178","icon1179","icon1180","icon1181","icon1182","icon1183","icon1184","icon1185","icon1186","icon1187","icon1188","icon1189","icon1190","icon1191","icon1192","icon1193","icon1194","icon1195","icon1196","icon1197","icon1198","icon1199","icon1200","icon1201","icon1202","icon1203","icon1204","icon1205","icon1206","icon1207","icon1208","icon1209","icon1210","icon1211","icon1212","icon1213","icon1214","icon1215","icon1216","icon1217","icon1218","icon1219","icon1220","icon1221","icon1222","icon1223","icon1224","icon1225","icon1226","icon1227","icon1228","icon1229","icon1230","icon1231","icon1232","icon1233","icon1234","icon1235","icon1236","icon1237","icon1238","icon1239","icon1240","icon1241","icon1242","icon1243","icon1244","icon1245","icon1246","icon1247","icon1248","icon1249","icon1250","icon1251","icon1252","icon1253","icon1254","icon1255","icon1256","icon1257","icon1258","icon1259","icon1260","icon1261","icon1262","icon1263","icon1264","icon1265","icon1266","icon1267","icon1268","icon1269","icon1270","icon1271","icon1272","icon1273","icon1274","icon1275","icon1276","icon1277","icon1278","icon1279","icon1280","icon1281","icon1282","icon1283","icon1284","icon1285","icon1286","icon1287","icon1288","icon1289","icon1290","icon1291","icon1292","icon1293","icon1294","icon1295","icon1296","icon1297","icon1298","icon1299","icon1300","icon1301","icon1302","icon1303","icon1304","icon1305","icon1306","icon1307","icon1308","icon1309","icon1310","icon1311","icon1312","icon1313","icon1314","icon1315","icon1316","icon1317","icon1318","icon1319","icon1320","icon1321","icon1322","icon1323","icon1324","icon1325","icon1326","icon1327","icon1328","icon1329","icon1330","icon1331","icon1332","icon1333","icon1334","icon1335","icon1336","icon1337","icon1338","icon1339","icon1340","icon1341","icon1342","defaultTagTexture","getTagTexturePath","TagSize","useAssetTools","addAssetPaths","assetPaths","totalAssetsAdded","planarPaths","isPlanarFile","addPlanarFiles","panoramicPaths","isPanoramicFile","addPanoramicFiles","tagPaths","isTagFile","addTagCSVs","pointCloudPaths","isPointCloudFile","addPointCloudFiles","orthoPaths","isOrthomosaicFile","addOrthoFiles","modelPaths","addModelFiles","xmlPaths","isXmlFile","addXMLFiles","ifcPaths","isIFCFile","shpPaths","isSHPFile","dxfPaths","isDXFFile","modelsAdded","addIFCFiles","addSHPFiles","addDXFFiles","assetsList","pointPath","extension","extname","basename","showBackdrop","numAdded","addOrthoBatch","hideBackdrop","catchErrors","assetPath","addTagCSV","reason","missingHeaders","lineNumber","row_number","lineText","addPanoramicFile","pathError","addPlanarFile","addXMLFile","addFilePaths","configs","isConfigFile","isAssetFile","isProjectionFile","loadProjectFile","projectionPath","updateDataProjection","updateViewProjection","addWebSource","downloadFile","fileType","fileFilter","encodeURIComponent","savePath","getPathFromDialog","pathWithExtension","isCSVFile","isTXTFile","isRZMLFile","isODMFile","getDXFLayerNames","getSHPLayerNames","dbf","layerData","dbfPath","geotiff","file_path","corners","base64","base64_split","scale_x","scale_y","width_original","height_original","orthoData","imageBounds","imageDataSplit","imageSize","imageSizeOriginal","imagePath","scaleX","scaleY","cameras","decoded","numCameras","cameraNames","pathFound","imageExt","hasImageExt","detectImagePath","cameraData","buildFilePath","imageName","rowData","csv_data","estimatedPath","estimated_path","parser","Parser","explicitChildren","preserveChildrenOrder","xmlJSON","parseStringPromise","xmlData","$","Units","$$","alignments","enu","Alignments","Alignment","alignment","alignObject","staStart","about","desc","CoordGeom","geom","geometryElement","shapeType","dollarSignKeys","featureKeys","key$","aboutValue","fKey","splitCoordValue","tempValue","coordValue","coordValueCorrected","scv","overwriteLength","overwriteStaStart","calcAngle","acos","curveDist","valid_tags","invalid_rows","missing_headers","newTags","openDialogMulti","showErrorBox","openDialogFile","parseDirectory","entries","directoryPath","withFileTypes","files","entry","isFile","directories","isDirectory","directory","checkImagePath","searchDepth","duplicate","singleFolderSearch","dirSeperator","depth","paths","subset","globPath","sync","singleImageValid","multiImageValid","imageNames","testImageExt","showOpenDialogSync","manual","saveMatrixFile","cameraTransformPath","copyFile","readTransformFile","errorResponse","arr","cols","col","getMatrixValues","setFromMatrixPosition","setFromRotationMatrix","upgradeVersion321","oldVersion","semver","gt","getConfigVersion","upgradeVersion320","upgradeVersion319","links","upgradeVersion318","mappedCamerasIDs","upgradeVersion317","overrideSettings","fromJSON","upgradeVersion316","upgradeVersion315","newProject","uniqueSession","upgradeVersion314","isDefault","upgradeVersion313","upgradeVersion312","upgradeVersion311","cloudSize","upgradeVersion310","newVersion","configVersion","upgradeVersion39","extent","resolution","log2","upgradeVersion38","upgradeVersion37","upgradeVersion36","upgradeVersion35","upgradeVersion34","getLocalizedProjectName","defaultProjectTitle","getLocalizedFolderName","saveProjectAs","changePath","nameWithoutExt","updateProjectName","writeProject","saveProject","allowSaveAs","loadProjectJSON","projectJSON","parameters","version","clearWindowHash","lt","minimumConfigVersion","currentConfigVersion","loadProject","buttons","exitWithChanges","Cloud","hasChanged","originalState","modifiedState","defaultId","writeToString","delimiter","DetectionType","mixedDataWarning","BlurVehiclesPeople","outputPath","setOutputPath","detectionType","setDetectionType","VehiclesAndPeople","blurStrength","setBlurStrength","accuracy","setAccuracy","importResult","setImportResult","getCamerasByCSV","getCameraFolders","pathOverlap","tempImagePath","imagesCSVPath","pathsJSON","getCameraRowsCSV","Vehicles","People","multipleSelectWithLabel","OperationTypes","ClassifyExport","operationType","setOperationType","Include","classValues","setClassValues","classList","pointclouds","uniqueClassifications","formatClassValue","classValue","Exclude","multiple","renderValue","selected","renderedClasses","classVal","savedLocation","wordWrap","ConvertUnits","inputUnits","setInputUnits","outputUnits","setOutputUnits","nullUnits","sameUnits","pathNameNoExt","outputName","FormHelperText","ChannelType","ChannelSelector","Empty","Red","Green","Blue","Linearity","Planarity","Scattering","Normal","Intensity","NumReturns","ReturnNumber","Classification","LasToOrthomosaic","channelOne","setChannelOne","channelTwo","setChannelTwo","channelThree","setChannelThree","pixelSize","setPixelSize","emptyChannels","tifPath","LasToSolv3dStreamable","isSingleFile","setSingleFile","binPath","Sampling","defaultSamplingRateOptions","samplingRate","setSamplingRate","validSampling","decimalSamplingRate","ThinTechniques","ThinDimensions","invalidThinningError","ThinLas","defaultThinningOptions","thinTechnique","setThinTechnique","Lowest","thinDimension","setThinDimension","Two","thinning","setThinning","inValidThinningValue","Average","Highest","Three","generateFunctionData","FunctionsMenu","contextOpen","closeContextMenu","blurVehiclesPeopleDialog","lasToOrthomosaicDialog","lasToSolv3dStreamableDialog","thinLasDialog","samplingDialog","classifyExportDialog","convertUnitsDialog","LASFiles","cameraFiles","hasLASFiles","hasCameraFiles","handleBlurVehiclesPeople","handleLasToOrthomosaic","handleLasToSolv3dStreamable","handleThinLas","handleSampling","handleClassifyExport","handleConvertUnits","filtered","localeCompare","getMenuItems","ServerType","initialAssetState","assetPercent","assetError","assetIsLarge","floatRight","itemList","itemText","assetMargins","assetWarning","assetInfo","assetCheckbox","checkboxParent","percentLabel","fileInfoHeading","fileInfoText","tagAvatar","remoteAssetIcon","LasFileInfoDialog","hasVLRSData","vlrs_data","vlrsKeys","gutterBottom","x_min","x_max","y_min","y_max","z_min","z_max","record_id","has_time_stamp","has_rgb","has_intensity","AssetItem","setDraggingAsset","fileInfoDialog","detailsDialog","renameDialog","iconUpdateDialog","modelLayersDialog","webmapLayersDialog","landXMLDialog","fileInfo","setFileInfo","assetState","setAssetState","isPanoramic","isPlanar","isEncompassCloud","isPotreeCloud","isLASFile","isE57File","isOrtho","isTag","isIFC","isSHP","isDXF","isLandXML","isWebMap","isCamera","isPointCloud","canEditLayers","ArcGISImageServer","TileServer","updateAssetState","newAssetState","getCloudStatus","getModelStatus","submitTagIcon","isLargeCloud","showPercent","assetCount","getAssetCount","tagTexture","tagSize","getTagAttributes","isRemoteAsset","canDeleteAsset","canEditAsset","draggable","onContextMenu","onDragStart","snapToOrtho","snapToPointCloud","snapToImages","snapToModel","Avatar","secondaryTypographyProps","ListItemSecondaryAction","edge","handleImageCSVExport","getTagsByCSV","getTagRowsCSV","handleTagCSVExport","getLasFileInfo","TagIconDialog","currentTexture","currentSize","WebSourceLayerDialog","ModelLayerDialog","TagItemsDialog","sendCustomEvent","detail","CustomEvent","dispatchEvent","NEW_CSV_ID","NEW_FOLDER_ID","textField","selectDivider","asterisk","avatarParent","tagIconPagination","tagIconSearchParent","tagIconPageParent","tagIconParent","tagIconCheck","tagIconImage","setPage","setTagTexture","setTagSize","selectedPage","tagsPerPage","resetDefaults","searchTerms","matches","iconChanged","sizeChanged","tagIconsPerRow","numPages","texturesForPage","handleIconClick","XSmall","Small","Large","XLarge","getMeasurementFormatter","getVectorPrecision","showTagDetails","tagItems","zoomToTag","jumpToTag","copyPosition","copyTextToClipboard","coordinate","copyURL","deleteRow","editRow","isAerialTag","TagDeleteDialog","toDelete","numTagsToDelete","TagDetailsDialog","tagAssets","tagDetailsDialog","setTitle","setComment","tagToEdit","setTagToEdit","editing","setEditing","flat","canEdit","TagCreateDialog","useAppDispatch","collectionID","setCollectionID","collectionName","setCollectionName","setFolderID","hasExistingFolders","hasExistingCSVs","createNewFile","createNewFolder","titleMissing","nameMissing","folderOptions","newTag","tagFolderID","tagCollectionID","tagCSV","Collapse","in","localizedFolderName","assetFolderClass","AssetFolder","draggingAsset","expanded","setExpanded","dragDropHover","setDragDropHover","numHidden","onDragOver","onDragLeave","onDrop","dataTransfer","addAssetsToFolder","newVisibility","List","disablePadding","AddAssetList","WebSourceDialog","serverURL","setServerURL","serverName","setServerName","serverType","setServerType","ArcGISMapServer","submitting","setSubmitting","getMapLayers","baseURL","getMapServerLayers","ok","getImageServerLayers","ArcGISFeatureServer","getFeatureServerLayers","OGCWMS","WMSCapabilities","Capability","Layer","Name","Title","getWMSLayers","OGCWFS","XMLParser","FeatureTypeList","FeatureType","getWFSLayers","OGCWMTS","WMTSCapabilities","Contents","Identifier","getWMTSLayers","getTileServerLayers","isSecureURL","protocol","mapType","pop","hasX","hasY","hasZ","ArcGISOnline","warnings","showEsriWarning","webmapData","public","WebSourceLayerCheckbox","onVisibilityChange","visible_sortable","visible_checkbox","getRows","webmapDialog","handleAddWebMap","FolderList","newFolderDialog","defaultFolder","ModelLayerCheckbox","ModelLayerColor","color_picker","addItem","footerDiv","footerCheckbox","getStoredState","BookmarkList","bookmarkDialog","BookmarkItem","getCameraPosition","updateDialog","assetDrawerWidth","backdrop","inside","drawerPaper","tab","flexBasis","flexShrink","tabGrow","toggleDrawer","AssetDrawer","assetDrawerState","projectActiveTab","setSelectedTab","newAnnotations","annotation","addAnnotation","updateAnnotations","removeAnnotation","Drawer","anchor","transitionDuration","paper","sectionTitle","slider","checkBoxWithLabel","GlobalSettings","settingsDialog","globalSettings","setOpenQuickNav","setOrthoQuality","setOrthoOpacity","setControlType","setAerialMeasureType","setVolumeType","setVolumeSampleRate","setViewerBackground","setAerialBackground","globalEngineCloudURL","setGlobalEngineCloudURL","FormControl","Reverse","Autocad","LowestPlane","High","Low","SingleSlider","magnitude","ColorMap","colorMaps","heatMap","awesomeGreen","pastelShades","blueOrange","blackOrange","blueHue","blueRed","jet","grayScale","getColorMap","settingsDrawerWidth","drawerHeader","list","listItem","switch","colorPreview","img","objectFit","classificationPreview","borderColor","borderStyle","borderWidth","switchLabel","switchElement","inputText","inputPropDiv","sliderInputText","boldTitleTypography","rightInput","sliderInputParent","sliderInputToggle","InputSlider","labelFunction","isRangeType","labelFormat","marks","openState","sliderValue","setSliderValue","roundToStep","changeCallback","throttle","finishCallback","scaledValue","out","toInput","saveValue","fromInput","StyledSlider","valueLabelDisplay","valueLabelFormat","KeyboardArrowUp","KeyboardArrowDown","RangeInputProp","setValues","SingleInputProp","withStyles","rail","track","borderTopLeftRadius","borderBottomLeftRadius","thumb","valueLabel","borderTopColor","mark","markLabel","markLabelActive","Slider","inputValue","setInputValue","inputError","setInputError","InputField","minValue","setMinValue","maxValue","setMaxValue","minError","setMinError","maxError","setMaxError","RangeSlider","ClassificationList","classificationColors","setClassificationColors","updateColorsList","hasClassifications","SettingsDrawer","savedColorMap","savedColorType","savedDynamicSize","savedCircularPoints","savedArrowMarkers","pickerDebug","setPickerDebug","boundsVisible","setBoundsVisible","renderPaused","setRenderPaused","savedOpacity","savedTagDistance","savedCloudDistance","savedCloudScale","savedCloudMinimum","savedMaxPoints","savedHeightClip","savedIntensityClip","savedAvailableClassifications","savedClassificationVisibilities","newClasses","oldClasses","setPointCloudOpacity","setTagDistance","setPointCloudDistance","setPointCloudScale","setPointCloudMinimum","setPointCloudMaxPoints","setPointCloudHeightClip","setPointCloudIntensityClip","setVisibleClassifications","setPointCloudColorMap","setPointCloudColorType","setPointCloudDynamicSize","setPointCloudCircularPoints","setNavigationType","isIntensity","isHeightmap","colorMapRequired","togglePickerDebug","setPointsShouldUpdate","setPointBoundsVisible","Markers","None","subtitle2","every","menuButton","projectionText","footerCoords","textShadow","footerOffset","footer","slimButton","matrixValuesParent","matrixValues","matrixButtons","ProjectDetails","projectDialog","warnDialog","setName","setHeight","setProj","matchedProjection","setMatchedProjection","imported","setImported","setProjections","cameraTransform","setCameraTransform","setErrors","correction","selectProjectName","projectHeight","selectDataProjection","basicAdjustments","unknownTextMeters","unknownTextFeet","onCorrectionRemove","onMatrixChange","localizedProjectName","importedProjection","userProjection","handleImported","sortedProjections","name1","name2","selectedProjection","getNewProjection","toMeters","hasBasicAlignment","isDefaultProjection","localizedProjectionName","getLocalizedProjectionName","getTransformValues","hasUserProjections","noWrap","ListSubheader","disableSticky","conflict","resetBasicAlignerCamera","trimmedName","emptyName","emptyHeight","emptyProjection","heightInMeters","projectionName","MainAppBar","settingsDrawerState","setSettingsDrawerState","customURLDialogOpen","setCustomURLDialogOpen","measurementsDialogOpen","setMeasurementsDialogOpen","Toolbar","MainAppFooter","mouseCoords","setMouseCoords","coordData","setCoordData","formatter","setCoordinates","coords","disableGutters","classificationTexture","TextureLoader","minFilter","NearestFilter","magFilter","shaders","pointcloud","vert","frag","panoramic","planar","render_edl","commonRenderVertexShader","render_basic","render_transition","markers","utilities","basic_picker","gpu_picker","texture_packer","sprite","packedTextureScale","assignPackedData","xIndex","yIndex","valueInt","generateDataTexture","channels","Color","Uint8Array","r","g","RGBFormat","RGBAFormat","DataTexture","needsUpdate","BaseMaterial","ShaderMaterial","updateValues","initProperties","uniforms","defineProperty","PointCloudMaterial","gpuPicker","minSize","adaptiveSize","isOctreeCloud","currentCameraTarget","screenwidth","octreeSpacing","octreeSize","octreeCorner","intensityRange","rgbMax","heightRange","timeStamp","classificationVisible","visibleClassTexture","crossSectionWidth","crossSectionStart","crossSectionEnd","clipBoxTexture","areaTriangleTexture","visibleNodesTexture","numClippingBoxes","numAreaTriangles","loader","colorMapTexture","updateVisibleClassifications","Uniform","maxSize","Vector2","heightClamp","intensityClamp","classificationData","visibleNodes","areaTriangleData","clipPolygonData","defines","NUMBER_OF_CLASSIFICATIONS","CLIP_TEXTURE_WIDTH","CLIP_TEXTURE_HEIGHT","AREA_TEXTURE_WIDTH","AREA_TEXTURE_HEIGHT","VISIBLE_NODES_WIDTH","PACKED_TEXTURE_SCALE","fragmentShader","vertexShader","vertexColors","transparent","depthWrite","updateNumClippingBoxes","NUM_CLIP_BOXES","updateNumAreaTriangles","NUM_AREA_TRIANGLES","OutputRenderMaterial","tCurrent","tPrevious","progress","BasicRenderMaterial","tImage","tDepth","EDLRenderMaterial","near","far","pixelRatio","screenWidth","edlStrength","neighbours","Float32Array","neighbourCount","NEIGHBOUR_COUNT","TagMaterial","currentCameraPosition","currentCameraRotation","windowHeight","texturePath","textureData","uniform","imageTexture","side","DoubleSide","PanoramicImageMaterial","PlanarImageMaterial","imageWidth","imageHeight","fx","fy","cx","cy","MarkerMaterial","cameraHeight","currentIndex","orbitMode","CustomSpriteMaterial","BasicPickerMaterial","BasicRenderTarget","WebGLRenderTarget","LinearFilter","stencilBuffer","EDLRenderTarget","isWebGL2","generateMipmaps","depthBuffer","depthTexture","DepthTexture","FloatType","UnsignedIntType","RenderPass","screenScene","screenQuad","PlaneBufferGeometry","material","MeshBasicMaterial","depthTest","Scene","Mesh","Camera","renderer","setRenderTarget","RenderUtils","screenPass","targets","basicMaterial","basicRenderTarget","EDLMaterial","outputMaterial","outputRenderTarget","previousRenderTarget","initTargets","capabilities","maxVaryings","floatFragmentTextures","EDLSupport","renderSize","getSize","addTarget","updateEDLValues","resizeTextures","increaseProgress","renderTarget","setCamera","w","h","dispose","setSize","updateMaterial","textureFromImage","Texture","renderScene","scene","renderToTarget","withEDL","renderMaterial","renderToPrevious","renderToScreen","PointCloudNode","parent","pointsScene","pointsPicker","boundingBoxMesh","_bounding_sphere","_bounding_box","nodeCenter","density","loaded","loading","picker","Sphere","subScalar","addScalar","Box3","addToScene","addChildNode","node","clearChildNodes","removeChildNode","removeFromScene","disposeGeometry","setVisibility","boundingBoxVisibility","setGeometry","BufferGeometry","BufferAttribute","intensity","gpu_index","computeBoundingBox","addCloudData","PointCloud","rgbArray","maxColor","materialScene","materialPicker","materials","_tightBoundingBox","generateEdgeMesh","boxGeometry","BoxGeometry","edgeGeometry","EdgesGeometry","boxMaterial","LineBasicMaterial","LineSegments","materialDefaults","gpuPickers","updateMinimapExtent","setIdentifier","disposeNodes","getVisibleNodes","updateBoundingBox","updateIntensityRange","intensityMin","intensityMax","updateColorLimits","closestValue","arrMax","midpoint","updateClassifications","BinaryHeap","scoreFunction","bubbleUp","sinkDown","peek","n","score","parentN","elemScore","child2N","child1N","swap","child1","child1Score","child2","PointCloudManager","clouds","visiblePointsTarget","maxUnloadedNodes","unloadedGeometry","maxUnloadedClouds","maxloadedToGPUPerFrame","loadedToGPUThisFrame","nodeCacheSize","exeLaunchTimeout","lastExeLaunched","performance","numLoadedPoints","numVisiblePoints","numSceneNodesVisible","minPixelPercent","transparency","rawJsonResponse","shouldUpdate","initScene","cameraHandler","minimap","controls","tightBoundingBox","GenericPointCloud","StreamablePointCloud","reconcile","pointClouds","currentFiles","newFiles","filesToLoad","filesToDelete","pointCloudsAdded","pointCloudsRemoved","pointCloud","deletePointCloud","cloudDetails","newPointCloud","EncompassPointCloud","PotreePointCloud","toggleVisibility","AmbientLight","doesCloudExist","addPointCloud","updateMeasureList","measurements","refreshMeasurementList","updateClamping","setMaxDistance","removeLayer","combinedBoundingBox","addLayer","updateMaterialValues","getCameraTarget","updateCloudSampling","sampledPoints","setDrawRange","updateCrossSection","calculatePointsVisible","Points","drawRange","updateVisibilityTexture","nodes","nodeMap","Map","visibleNodeTextureOffsets","offsetsToChild","Infinity","nodeIndex","parentName","parentOffset","parentOffsetToChild","lodOffset","offsetUint8","updateClipBoxTexture","pointMarkup","clippingBoxes","numClipBoxes","clippingBox","hidePoints","updateClassification","newClassification","ignoredClassification","inverse","updateAreaTriangleTexture","areaGeometry","getAreaGeometry","triangleIndex","volumeStatus","vertex1","vertex2","vertex3","pointsInRadius","getX","getY","getZ","pointsInPolygon","getSampledPoints","highest","keyfunc","samples","dtmPoints","sampled","getCameraFrustum","updateProjectionMatrix","updateMatrixWorld","matrixWorldInverse","matrixWorld","cameraViewProjectionMatrix","multiplyMatrices","projectionMatrix","frustum","Frustum","setFromProjectionMatrix","manageNodeCache","stack","unusedNodes","streamingPointClouds","numberOfNodes","numberToDelete","reverse","launchNewExecutables","numLoading","cloudsToExecute","genericPointClouds","canReadData","exeRunning","timeNow","launchExecutable","loadUnloadedGeometry","updateGenericPointClouds","hideDescendants","waitForCameras","calculateGenericVisibility","updateStreamingPointClouds","calculateStreamingVisibility","newNodes","intersectsBox","isGeometryNode","isTreeNode","priorityQueue","weight","MAX_VALUE","maxAllowedPoints","maxNodeDistance","measurePoint","cameraPosition","minNodeSize","bounds2d","camera2d","childDistance","insideSphere","nodeScreenSize","updateMaterials","GenericPointCloudNode","_shift","loadFromData","num_points","bytes_path","xyz_min","xyz_max","rgb_max","intensity_min","intensity_max","updateRootNode","getGeometry","getBinaryData","GenericPointCloudRootNode","updateSizeInfo","workerExe","cancelled","loadStart","timeEnd","byteCutoffSize","pointsDataParsed","numSampledPoints","minPointSize","sceneOffset","apply","maxs","mins","file_info","number_of_bytes","fileLoadStart","updatePercent","fileLoadFinish","elapsed","fileLoadCancel","fileLoadProgress","points_to_process","fileLoadFinished","parseHeaderResponse","parsePointsResponse","isLargeFile","zoomToSceneExtent","estimatedBoundingBox","StreamablePointCloudNode","level","getChildOffset","getChildNode","childName","childSize","childLevel","childCenter","NodeConstructor","structure","metadata","metadataPath","decodeMetadata","EncompassPointCloudNode","hierarchy","nodePath","getDataPath","minCorner","corner","readNodeHierarchy","EncompassPointCloudNodeV0","args","childIndex","EncompassPointCloudNodeV1","EncompassPointCloudNodeV2","folderDepth","hrcPath","updateHierarchy","isFolderRoot","loadHierarchy","dataDir","match","RegExp","hierarchy_step_size","point_offset","box","tight_bounding_box","nodeSize","hasHierarchyV1","checkLegacyHierarchy","hasHierarchyV2","contains_hierarchy","RootNodeConstructor","rootNode","availableNodes","node_structure","PointAttributeTypes","DATA_TYPE_DOUBLE","ordinal","DATA_TYPE_FLOAT","DATA_TYPE_INT8","DATA_TYPE_UINT8","DATA_TYPE_INT16","DATA_TYPE_UINT16","DATA_TYPE_INT32","DATA_TYPE_UINT32","DATA_TYPE_INT64","DATA_TYPE_UINT64","typenameTypeattributeMap","obj","PointAttribute","numElements","byteSize","description","initialRange","POSITION_CARTESIAN","RGBA_PACKED","COLOR_PACKED","RGB_PACKED","NORMAL_FLOATS","INTENSITY","CLASSIFICATION","NORMAL_SPHEREMAPPED","NORMAL_OCT16","NORMAL","RETURN_NUMBER","NUMBER_OF_RETURNS","SOURCE_ID","INDICES","SPACING","GPS_TIME","PointAttributes","pointAttributes","vectors","pointAttributeName","pointAttribute","addVector","hasNormals","DataView64","DataView","getUint64","littleEndian","getBigUint64","getInt64","getBigInt64","PotreePointCloudNode","nodeType","hierarchyByteOffset","hierarchyByteSize","byteOffset","attemptNumber","maxAttempts","hierarchyPath","parseHierarchy","view","bytesPerNode","numNodes","nodePos","getUint8","childMask","getUint32","ArrayBuffer","octreePath","xyzScale","xyzCenter","xyzOffset","attributeBuffers","jsonAttributes","replacements","jsonAttribute","attribute","parseAttributes","bboxMin","bboxMax","xyzMin","xyzMax","firstChunkSize","CustomOrbitControls","domElement","keyPressed","walkMode","walkVelocity","walkRotation","maxWalkSpeed","walkIncrement","walkPercent","walkPercentMin","walkPercentMax","oldRadiusState","focused","minDistance","maxDistance","minZoom","maxZoom","minPolarAngle","maxPolarAngle","minAzimuthAngle","maxAzimuthAngle","enableDamping","dampingFactor","enableZoom","zoomSpeed","enableRotate","rotateSpeed","enablePan","panSpeed","panningMode","keyPanSpeed","autoRotate","autoRotateSpeed","enableKeys","UP","BOTTOM","SPACE","PLUS","MINUS","NUMPAD_PLUS","NUMPAD_MINUS","WALK_FORWARD","WALK_BACK","WALK_RIGHT","WALK_LEFT","WALK_UP","WALK_DOWN","mouseButtons","target0","position0","zoom0","setControls","getPolarAngle","spherical","getAzimuthalAngle","clearSphericalDelta","sphericalDelta","clearPanOffset","panOffset","saveState","scope","resetWalkValues","incrementWalkSpeed","static","decreaseWalkSpeed","setWalkMode","quat","setFromUnitVectors","up","applyQuaternion","setFromVector3","activePosition","activeTarget","applyWalkOffset","scaleFactor","changeEvent","STATE","NONE","quatInverse","lastPosition","lastQuaternion","lastUpdated","changeDetected","rotateLeft","makeSafe","lookAt","setFromSpherical","distanceToSquared","EPS","dot","moveStopEvent","onMouseWheel","onTouchStart","onTouchEnd","onTouchMove","onMouseFocus","onKeyUp","startEvent","endEvent","ROTATE","DOLLY","TOUCH_ROTATE","TOUCH_DOLLY","TOUCH_PAN","rotateStart","rotateEnd","rotateDelta","panStart","panEnd","panDelta","dollyStart","dollyEnd","dollyDelta","getZoomScale","rotateUp","panLeft","v","objectMatrix","setFromMatrixColumn","panUp","crossVectors","pan","deltaX","deltaY","isPerspectiveCamera","targetDistance","isOrthographicCamera","dollyIn","dollyScale","dollyOut","switchTo","shiftKey","handleMouseDownRotate","handleMouseDownDolly","handleMouseDownPan","subVectors","handleMouseMoveRotate","handleMouseMoveDolly","handleMouseMovePan","handleMouseWheel","keyCode","handleKeyDown","handleKeyUp","touches","handleTouchStartRotate","handleTouchStartDolly","handleTouchStartPan","handleTouchMoveRotate","handleTouchMoveDolly","handleTouchMovePan","prototype","EventDispatcher","parseHex","getClassFromAlias","classNum","getColorFromClassNum","hex","textToColor","rgbColor","textToColorArray","createHash","digest","s","TextureCache","maxCacheSize","isThumbnailCache","maxTextureSize","maxDeviceSize","setMaxTextureSize","textureSize","controller","manage","lastAccess","toRemove","closeImages","images","ImageBitmap","HTMLCanvasElement","missing","getImage","CanvasTexture","DOMException","ABORT_ERR","toKeep","maxEdgeLength","thumbnailCache","standardCache","ImagePosition","_scene","_aerial","_value","applyEuler","ImageRotation","_euler","setRotation","adjustment","rotationWithTransform","multiplyRotations","rotationWithAdjustment","CameraFeature","opts","CameraImage","cameraFile","missingTexture","setMatrix","setAdjustment","pixelToDirection","pixel","directionToPixel","getFeature","setCameraPosition","setCameraParameters","positionToCameraAngle","thumbnail","AbortController","textureCache","setObjectVisible","generateObject","loadThumbnail","loadFullImage","grabImageFromPath","applyTempRotation","angleEuler","tempRotation","abort","CameraFile","camerasByID","camerasByName","standardMaterial","standardMesh","pickingMaterial","pickingMesh","mapSource","mapLayerForeground","mapLayerBackground","minCameraRadius","maxCameraRadius","verticesPerCamera","uvs","getNewCamera","initSceneView","initAerialView","updateSceneView","updateAerialView","markerScene","cameraID","getByName","getByPickerID","pickerID","arrIndex","cameraIndex","camera_index","arrayLength","markerShape","Int32Array","cameraIndices","cameraShape","PlanarImage","numUvs","uvIndex","numVertices","WebGLPointsLayer","updateMatrix","updateAdjustments","numCorners","cornerIndex","setXYZ","updatePickers","addFeatures","setSelected","meshes","baseIndex","updateVisibility","setVisible","updatePicker","cameraLoading","initialCameraLoading","CameraHandler","cameraScene","sceneViewController","aerialController","aligned","newCameraLoading","cameraLoadedOnce","initScenes","SceneViewCameras","AerialCameras","renderInFront","addNewFile","PanoramicCameraFile","PlanarCameraFile","deleteFile","camerasFiles","cameraFilesAdded","cameraFilesRemoved","clearCurrentCamera","getFeatureForEvent","incrementCamera","setWaitForCameras","setNormalCamera","setOrbitValues","setOrbitCamera","setCameraHeight","setCurrentImage","cameraImage","getCameraByName","cameraName","getCameraByID","getCamerasByFolder","getRowsCSV","csvEncompassOut","degrees","centerOnImage","setCurrentCamera","cameraLoaded","updatePreviousImage","clearImages","updateArrowNavigation","clearArrowNavigation","currentCamera","setMeshVisible","increment","nextIndex","nextCamera","loadImage","setCameraAdjustments","newAdjustments","setCameraMatrix","elements","newMatrix","equals","resetCameraMatrix","resetTextureCache","loadSavedCameraState","savedCameraState","savedcameraID","activeCamera","savedLookat","closestCameraID","closestCameraToPosition","cameraLoadOptions","bestDistance","rotationA","rotationB","matrixA","makeRotationFromEuler","matrixB","cameraPos","sphere","missingImagePath","PanoramicFeature","PanoramicImage","aerial","Point","u","imageDirection","directionsToPlanar","planarSize","plane","projectPoint","allX","allY","xMin","xMax","yMin","yMax","interpolatePixels","interpolated","xyz","xyzTemp","xyz1","xyz2","_x","_y","_z","interpTemp","xyzNoDups","previous","mouseControls","PlanarFeature","normalize","getFeaturesAtPixel","layerFilter","RayCaster","raycaster","vectorFromEvent","defaultRaycaster","setPrecision","threshold","intersectPlane","intersect","ray","intersectObject","intersectTriangle","P3","intersectObjects","sortByRay","recursive","objects","distanceToRay","raycastDirection","unproject","Raycaster","arrowNavigation","markerNavigation","modifier","navigationType","MarkerNavigation","ArrowNavigation","initEvents","bind","removeEvents","mouseMoved","isLeftClick","updateNavigation","clearNavigation","isOrbitMode","isHidden","isMarkerMode","isArrowMode","setEnabled","sceneViewCameras","getPickerID","markCameraSelected","sections","numSections","defaultScale","zoomedScale","initTextures","initObject","arrowPathStandard","arrowPathShadow","Object3D","section","sectionToAngle","ArrowMarker","setScale","getIntersect","intersects","sectionID","userData","angleToSection","calculateCameras","tooClose","tooFar","cameraA","cameraB","addMesh","geometryStandard","PlaneGeometry","materialStandard","alphaTest","ContextMenu","newTagDialog","changeCategoryDialog","customLinks","modelProperties","setModelProperties","tagsToDelete","setTagsToDelete","tagCoordinate","setTagCoordinate","contextData","isAerial","labelData","selectedTags","modelData","sceneCoord","aerialCoord","multipleCategories","clearCadHighlight","listItemSeperator","menuEvent","numLabelsSelected","numLabelsHighlighted","profileActive","pointProfileActive","labelSelected","labelPointSelected","pointID","hasLabelCoord","numTagsSelected","hasModelData","enableChangeCategory","hasSceneCoord","hasAerialCoord","noTagSelected","oneTagSelected","pointProfileActions","pointProfileStart","pointProfileEnd","pointProfileCancel","tagActions","isImageOnly","getMultiImageCoordinate","orbitModeActions","toggleOrbitState","resetCamera","modelActions","labelActions","anyLabelSelected","deleteHighlighted","deleteLabelPoint","unHighlightAll","insertLabelPoint","editLabel","moveToLabel","customUserActions","showInAerial","showInScene","urlString","constructCustomURL","hasCustom","onEnter","clearTooltipText","ModelProperties","showContextMenu","card","cardHeader","cardButtons","alignSelf","headerTitle","cardContent","EditLinkDialog","setUrl","setTarget","setShowInScene","setShowInAerial","addNewLink","CustomLink","editDialog","Card","CardHeader","titleTypographyProps","subheader","subheaderTypographyProps","CardContent","CustomContextURL","newURLDialog","importURLData","BasemapLayer","Tile","TagFeature","ViewTriangle","generateSource","Fill","rotateViewMarker","ring","generateMarkerCoordinates","getTargetElement","coneAngle","axis","coneLength","getView","getResolution","v0","v1","v2","changeDetector","AerialMap","containerElement","orthoList","viewTriangle","maxLayerZoom","maxMapZoomLevel","maxCameraZoomLevel","markerRadius","observer","currentCameraFeature","currentCameraLayer","selectedCameraFeature","selectedCameraLayer","mapSystem","initMap","initResize","addCurrentLayer","addSelectedLayer","OrthoMosaicList","arcGISBase","OSM","XYZ","attributions","scrollWidth","uniqueIDs","basemapLayers","getLayers","getArray","basemapID","getVisible","activeBasemap","getCenter","getZoom","orthoLabels","imageLabels","localAligner","tagsHandler","resetView","setCenter","setZoom","setVisibleBasemap","attribution","Attribution","collapsible","defaultLayers","defaultControls","extend","View","onresize","handleWindowResize","onMapClick","onDoubleClick","updateSavedState","un","CircleStyle","aerialTags","hovering","currentView","maxZoomReached","selectedTagID","selectedCameraID","getCoordinates","boundingExtent","mapSize","fit","nearest","clearAerialTooltip","initialEvent","getCustomEvent","onAerialUp","isRightClick","openContextMenu","onMouseMoveAerial","dragging","onFeatureHover","selectedCamera","setAerialState","anyToolEnabled","tagIDs","mapCoordinate","getCoordinateFromPixel","updateSize","setDragState","getInteractions","interaction","DragPan","setActive","jumpToPosition","mapPosition","setMapExtent","hasPoints","cameraSelected","extentFromPoints","reproject","xPositions","yPositions","OrthoImageLayer","ImageLayer","orthosList","aerialBounds","splitData","cropBase64","cropCorners","calculateCroppedData","calculateExtent","calculateAerialPolygon","addMapLayer","aerialMap","dataProjectionName","x_scale","y_scale","x_offset","y_offset","x_skew","y_skew","originalSize","zoomToExtent","transformExtent","imagePixelsToAerial","cornerPixels","proj4Projection","index_start","index_end","width_start","width_end","height_start","height_end","extentWidth","extentHeight","subtileCorners","intersectAerialPoints","aerialPoints","turfIntersect","turfPolygon","aerialToPixels","aerialToImagePixels","coordinatesTransformed","coordTransformed","reverseTransform","allLayers","numSubtiles","Static","imageExtent","interpolate","imageLoadFunction","ortho","addImageChunk","LayerGroup","setOpacity","orthos","maxAsyncLoad","chunksLoading","chunksToLoad","orthoID","loadAvailableData","orthoFiles","currentOrthos","newOrthos","orthosToLoad","deleteOrtho","orthoInfo","addNewOrtho","loadable","toLoad","projected","ImageLabel","completed","drawable","highlighted","textScore","findText","duplicatePixelDistance","stateChanged","draw","unSelect","complete","setDrawable","setScore","setFindText","setHighlighted","highlight","insertPoint","createCoordData","coordArray","pointToScreen","duplicatePoint","oldPoint","newPoint","screenPosNew","screenPosOld","dU","dV","LabelCategory","listIdx","labels","invalidLabels","sorted","originalOrder","getLabelByID","visibility","addNewLabel","drawLabel","updateColor","idxCoord","minDistanceIdx","endIdx","createSegment","closestPointToPointParameter","deleteLabel","deleteLabels","unHighlight","updateName","completeLabel","hasEnoughPoints","unSelectAll","selectLabel","sortLabels","scoreThreshold","allLabels","order","undoSort","unsortedLabels","moveToLabelInList","ImageLabelTools","sceneLabels","activeLabeler","categories","currentCategory","allowUpdate","setCategoryList","setTrainingArea","AerialLabelTools","SceneLabelTools","setCategories","trainingArea","polygonScene","standardScene","numHighlighted","getIdxInList","validCategory","setUpdateState","categoryID","getCategoryByID","activeLabel","deletePoint","addLabel","setActiveLabelType","deleteAllCategories","activeImagePaths","activeImages","loadedImagePaths","checkIfSelected","checkUniqueName","chosenCategory","getCategoryByName","sortCategory","sortType","categoryToSort","drawAll","addCategory","getNewCategory","addTrainingArea","getNewTrainingArea","deleteCategory","editCategoryName","toggleCategoryVisibility","deleteTrainingArea","addTrainingAreaLabel","unSelectLabels","coord","clearTooltips","newCategoryID","newCategory","oldCategory","newLabel","addPoint","deleteSpecificPoint","zoomToLabel","isTrainingArea","resetTemporaryPoint","simplifyPolygon","tolerance","highQuality","simplePolygon","turfSimplify","mergeTrainingLabels","labelsToMerge","mergedLabels","firstLabel","isPlanarImage","isPanoramicImage","mergeLabel","points1","points2","point1","index1","matchFound","point2","index2","union","polygonPoints1","polygonPoints2","turfUnion","remainingLabels","simplifyPanoramicLabels","geometryWithBuffer","bufferSize","geomJSTS","GeoJSONReader","BufferOp","bufferOp","checkForImageOverlap","hasOverlap","visibleOrthos","polygonPointsOnly","importLabel","progressData","addedLabel","image_id","segmentation","minPoints","is_linestring","is_point","skippedLabels","lineGeom","turfLineString","buffer_size","pointGeom","turfPoint","linework_data","file_name","pointsToPixels","setKnownImageSize","labelTotal","labelIndex","mergeID","merge_id","checkLabelOverlap","checkOverlap","checkLabelInvalid","clearViewerTooltip","progressCallback","overwrite","annotations","hasTrainingArea","numLabelsTotal","trainingAreaCategory","addCategoryLabels","trainingAreas","mergeList","newLabels","category_id","categoryVisible","labelObject","supercategory","getLabelAnnotations","getTrainingAnnotations","jsonImageObj","sectionsFromIntersection","intersection","removeDuplicate","intersectPoints","annotationFromPolygon","imageID","segment","iscrowd","area","areaFromPolygon","contour","ShapeUtils","shortestDistance","closestPoint","idx","closestPointToPoint","startPoint","endPoint","Line3","LabelPoint","LabelPolygon","OrthoLabel","minCoordinates","styleCache","featuresLayer","getSource","editingLayer","getLayerFromCache","clearStyleCache","setFeatureStyle","setStyle","featureStyle","editingStyle","checkDefaultStyle","defaultStyleParams","styleKey","getLayerStyle","updatePoint","removePoint","removeSpecificPoint","getPixelFromCoordinate","checkDuplicate","newCoord","drawPoints","temporaryPoint","completedSource","editingSource","drawPolygon","validPolygon","sources","hasFeature","removeFeature","OrthoCategory","aerialTools","addMapLayers","darkenedColor","pointColor","categoryColor","TrainingAreaCategory","lineDash","VectorImageLayer","updateWhileInteracting","updateWhileAnimating","imageLabelTools","TrainingAreaLabel","polygonsInsideImage","polygonHover","pointHover","calculatePolygonPixels","pixelPolygon","pixelPoint","trainingLabels","trainingLabel","trainingLabelIndex","moreTooltip","pointCount","getFeaturesInExtent","isValid","markLastPointDraggable","updateDraggablePoint","pointFeatures","lastPoint","setPointHover","cancelLabel","setToolTipText","setPointGrabTooltip","canDrag","setPolygonHover","drawActiveLabel","checkFeatureHover","setPolygonHoverTooltip","drawing","onRightClick","oneHighlighted","noneHighlighted","ctrlKey","highlightLabel","MouseEvent","selectedPoint","getFeatureAtPixel","pointFeaturesForExtent","selectedPolygon","polygonFeaturesForExtent","mousePixel","mouseCoord","mouseBuffer","values_","pointExtent","getExtent","intersectsCoordinate","pointRadius","helpMsg","startTooltip","invalidTooltip","setAerialTooltip","dragTooltip","highlightTooltip","imageIndex","orthoName","boundsToCheck","boundsPolygon","labelPolygon","_direction","_position","SceneLabel","_imageWidth","_imageHeight","standardMeshes","polygonMeshes","sphereGeometry","SphereGeometry","sphereMaterial","lineGeometry","lineMaterial","lineDashedMaterial","polygonMaterial","polygonOpacity","minPoleAngle","standardColor","LineDashedMaterial","dashSize","gapSize","setPointScale","computeBoundingSphere","drawLines","setFromPoints","Line","computeLineDistances","drawPolygons","pixels","coordinates3d","oldState","coordinates2d","polygonAtPoles","coordinatesFlat","earcut","deviation","numTriangles","triangle","Triangle","getMidpoint","setIndex","pointsAtPole","minAngle","maxAngle","polyPointRing","booleanContains","getCameraBestFit","averageDirection","fovRequired","getCurrentCamera","SceneCategory","deleteUnfinishedLabel","numberOfLabels","visited","visibleCameras","getClickedDirection","getImagePixel","mouseClick","labelPoints","targetPoly","concat","polygons","setViewerTooltip","calculatePlanarSections","imageBorders","calculatePanoramicSections","horizontalShift","getHorizontalShift","imageBordersLeft","imageBordersRight","polygonLeft","polygonRight","intersectionLeft","intersectionRight","minSpread","widthCutoff","xValues","minX","maxX","shiftedMin","shiftedMax","spread","polygonInImage","getCameraSize","mergeIndex","polygonsInside","mergeable","ScaleHandle","drag","minusPoint","lineStart","lineEnd","camOnLine","setFromNormalAndCoplanarPoint","intersectOnLine","newScale","RotateHandle","ordering","zAxis","xAxis","newAxis","cross","PositionHandle","getPickerResults","ClippingBox","Group","operationID","wireframe","positionHandle","scaleHandles","rotateHandles","wireframeMaterialStandard","wireframeMaterialHover","addWireframe","addScaleHandles","addRotateHandles","addPositionHandle","setFromObject","setHover","wireframeMaterial","edgeMesh","xAxisMaterial","xAxisGeometry","yAxisMaterial","yAxisGeometry","yAxis","zAxisMaterial","zAxisGeometry","raycast","parentScale","objectScale","highlightScale","OperationType","ClippingGroup","markupList","Classify","Split","isDelete","isClassify","setNewClassification","setIgnoredClassification","axisOffset","smooth","resetRotation","dz","removeByID","PointMarkupList","mouseEvent","shiftDown","dragObject","clippingGroups","setMarkupGroups","activeGroup","clippingGroup","refreshMarkupList","group","addNewGroup","newGroup","enable","disable","removeClippingGroup","removeClippingBox","addNewBlock","cameraAngle","newBoxScale","setScalar","clearNewBlock","setDragObject","setMovementState","getDragObject","containsPoint","handleOverride","isPosition","isRotation","rotateTooltip","moveTooltip","scaleTooltip","standardTooltip","isFirstTouch","numTouching","pinchStart","pinchEnd","Chart","zoomPlugin","line2D","line3D","lineWidth","hoverColor","markerSize","ProfileChart","initSphere","clearScene","updateUniforms","hideSphere","selectStart","localPosition","selectEnd","setZ","updatePoints","resetZoom","selectCancel","linePoint","validWidth","distanceAlongLine","validDistance","show","drawSphere","distanceClamped","at","showSphere","updateUnits","updateSampling","getProfileImage","chartImageBase64","toBase64Image","pointProfile","sampleMinimum","sampleMaximum","chart","setPointProfileOpen","scales","ticks","plugins","caretPadding","displayColors","callbacks","dataIndex","raw","legend","mode","wheel","pinch","datasets","pointHoverBackgroundColor","pointHoverBorderColor","onHover","maintainAspectRatio","animation","animationDuration","responsive","responsiveAnimationDuration","updateChart","hide","getSampledData","needsSampling","chartTitle","PanoControls","cameraAlignerAdv","cameraAlignerBasic","hammer","flyControls","Hammer","OrbitController","FlyMoveControls","MouseControls","CameraAlignerAdv","CameraAlignerBasic","LocalAligner","cadHandler","compass","onMouseDoubleClick","touchHandler","touchEvent","changedPointers","bubbles","cancelable","screenX","screenY","altKey","metaKey","onDoubleTap","down","resetSceneView","updateFarPlane","newOrbit","newPivot","smoothTransition","rotateLength","setPositionValues","updateCamera","getClosestCoordinate","sceneTags","combinedBounds","orbitFromBounds","boxSize","boxMean","boundSize","orbitWithAngle","toggleCamera","scrolling","clearCoordinates","updateCoordinates","onMouseMoveScene","movement","updateRotation","measureGrabFinished","toggle","mouseClicked","onMouseScroll","currentOrbit","getProperties","getCameraDistance","orbitObject","pivotLength","getPrecision","approxDistance","defaultFarPlane","changedTouches","eventType","pinchMove","sign","touchToMouse","move","panoControls","numberOfSteps","getAngleDiff","sphereStart","sphereFinish","dRadius","dPhi","dTheta","currentPivot","dPivot","pivotOffset","getPositionValues","TextMaterial","MeshPhongMaterial","CompassControls","composer","antialias","sizeRatioLarge","sizeRatioSmall","lightPosition","cube","cubeSize","cubeColorStandard","cubeColorHover","cubeEdgeColor","cubeTextColor","cubeMaterials","donutSize","donutColor","donutTextColor","north","west","east","south","initAntiAliasing","addObjects","addLights","compassClassName","WebGLRenderer","alpha","setPixelRatio","PerspectiveCamera","cameraDistance","EffectComposer","ssaaRenderPass","SSAARenderPass","unbiased","sampleLevel","addPass","copyPass","ShaderPass","CopyShader","addRotationCube","addCompassRing","addCompassLetters","ambientLight","spotLight","SpotLight","castShadow","cubeGeometry","BoxBufferGeometry","getTextMaterial","donutGeometry","donutMaterial","getCircleMaterial","letters","letter","getDirectionMesh","canvasSize","maxLength","fontScale","cubeColor","fillStyle","fillRect","font","fillText","strokeStyle","strokeText","getLetterMaterial","beginPath","textHeight","geometryUpper","materialUpper","FrontSide","meshUpper","geometryLower","materialLower","BackSide","meshLower","checkMouseHover","getSelectedSide","togglePointer","offsetLeft","offsetTop","mouse","setFromCamera","setCubeMaterials","materialIndex","faceIndex","hoverIndex","rotateLetters","zenith","pointA","pointB","bearing","startLat","destLat","startLng","destLng","brng","updateOffset","ratio","setContainerCursor","calculateRotations","lookatLocal","lookatLonLat","yPosLocal","yPosLonLat","cameraLocal","cameraLatLon","groupYaw","groupPitch","cubeYaw","minimumFOV","maximumFOV","phiDelta","thetaDelta","wheelDelta","wheelTimeout","wheelDelay","endTimeout","endDelay","rotating","zooming","moveInterval","moveStart","moveEnd","moveDelta","moveDistance","lastMovement","maxPixelDistance","minFOV","maxFOV","invertX","invertY","updateCameraMatrix","newEvent","MultiImageWindow","objectScene","backgroundScene","renderUtils","tools","setMultiImageOpen","setMultiImageState","onComplete","onAddPoint","intersectResponse","minCameraDistance","canComplete","canAddMore","disablePreviousImage","disableNextImage","disableAddMore","disableComplete","initRenderer","initMouseEvents","MultipleCameraMeasurement","offsetWidth","updateIntersect","calculate","updateBackground","loadNextImage","loadCamera","loadPreviousImage","resetSecondObservation","resetObservations","autoClear","addSecondObservation","getClickedPoint","resetFirstObservation","getBestCamera","getCurrentCameraIndex","clickedPoint","nextPosition","addFirstObservation","aspect","renderSceneObjects","firstPoint","secondPoint","origin1","origin2","getEndpoint","getSphereMesh","rayA","rayB","sameCamera","getIntersection","setButtonDisabled","defaultResponse","distances","calculated","viewerScene","windowScene","updatePointScale","viewerCamera","windowCamera","Nv","Na","Nb","Da","Db","da","db","ptA","ptB","lineSegment","segmentLength","midPoint","d1n","d2n","a1","a2","Measurement","_header","_title","timeCreated","getTime","setController","setHeader","setTimestamp","isoTime","Measurement3D","maxVertexLength","minVertexRequired","Length","getLineDistance","lastIndex","NaN","atan","rise","distance2D","finished","addedPoint","added","getProjectedVertices","MeasurementArea","ignoreHeight","vertexA","vertexB","StationMeasurement","Station","stationStart","activeAlignment","getAlignmentByID","isBetween","curveIntersect","x1","x2","x3","y1","y2","y3","distEndsSquared","crossProduct","dotProduct","getClosestSegment","segments","minDist","chosenSegment","segmentTest","lineIntersect","checkOnly","intersectCoordinate","clickedCoordinate","startCoordinate","unshift","Center","pointVector","startVector","endVector","pointArc","distStartToArc","angleStart","angleEnd","angleLarge","angleSmall","angleSmallQuadrant","angleLargeQuadrant","angleQuadrant","angleReverse","spiralIntersection","clickPointInData","alignmentInfo","xmlAlignment","loadExistingStation","measurement","along","across","station","MeasurementLine","cancelMessage","MeasurementPoint","surfaceGenerator","Area","SurfaceGenerator","generateSurface","generate","MeasurementVolume","volumeHelper","Volume","calculatingVolume","sampleRate","setSampleRate","renderMeasurement","stopVolumeCalculation","stopCalculation","VolumeHelper","loadExistingVolume","setVolume","destroyWorker","HeightMeasurement","vertex0","SnapMeasurement","snapResult","snap","snapCoordinate","finalHeight","validHeights","pos","heights","SnapDownMeasurement","reduce","acc","curr","SnapUpMeasurement","AerialMeasurement","getAerialLength","loadFromCoordinates","AerialLengthMeasurement","LineString","AerialAreaMeasurement","getAerialArea","sigma","numNeighbours","initWebworker","rate","getCalculatedBounds","calculateVolume","zMin","zMax","terminate","drawMesh","triangles","getVolume","volume","tri","p1","p2","p3","signedTetrahedronVolume","generateTriangleArray","v3","final","removeInvalidTriangles","validTriangles","getDelaunayTriangles","reverseWinding","delaunay","Delaunator","denseBounds","getDensePolygon","removeOutliers","calculationFinished","webWorkerFinished","pointsArray","upperPoints","trianglesUpper","lowerPoints","trianglesCombined","changeRequired","renderInScene","removeMeshesFromScene","addMeshesToScene","generateMesh","calculateArea","getArea","optimize","triangleIndices","verticesModified","numIndices","triIndexA","triIndexB","triA","triB","vertSet","allVerts","sharedVerts","uniqueVerts","modTriA","modTriB","t1","t2","oldArea","t3","t4","newArea","triVertices","flatPoints","index0","getLength","densePolygonTemp","vectorLength","directionIncrement","densePolygon","old","MinimapMeasure","mapLayer","styleHover","styleDefault","drawStyle","measurementType","sketch","tempTooltips","addInteraction","mapElement","reloadInteraction","removeInteraction","tooltips","getTooltipsForGeometry","removeOverlay","removeAll","setMeasurementType","validMeasureType","getDistance","getAerialSegments","objectMessage","objectPosition","formatLength","addNewTooltip","innerHTML","getLastCoordinate","hasEnoughSegments","formatArea","getInteriorPoint","clearTempTooltips","cancelMeasurement","editable","listener","Draw","drawingType","originalEvent","unByKey","addAerialMeasurement","alternateColor","Overlay","positioning","addOverlay","MeasurementConstructor","measureType","isFinished","measureAssets","setBuilder","builderType","getEmptyMeasurement","SnapUp","SnapDown","getMeasurement","MeasurementController","measurementSceneView","measurementAerialView","measurementBuilder","measurementGroupExporter","measurementGroup","setMeasurements","MeasurementFormatter","MeasurementSceneView","MeasurementGroupExporter","MeasurementGroup","hoveredPoint","reconcileXMLs","xmlFiles","currentAssets","measurementAssets","newAssets","assetsToLoad","xml","assetToDelete","updateMeasureAssets","xmlFile","loadMeasureAsset","createNewMeasurementGroup","stopDrawingItems","closeMultiImageWindow","enableTimeout","removeIDs","deletable","setActiveAlignment","alignUnits","linearUnit","loadMeasurementData","loadMeasurements","returnCoordinate","getCoordinate","temporaryMeasurement","activeMeasurement","clickMultiImage","multiImage","multiImageWindow","isSinglePoint","onClickFinish","canFinish","clickStandard","addTemporaryPoint","updateMeasureText","addSceneMeasurement","measuring","resetDragObject","removeTemporaryObjects","measureEndpoints","MeasureEndpoint","measurementID","checkMorePoints","morepoints","setTooltipText","clearViews","export","exportCSV","exportDAT","exportLinework","setUnits","refreshVolume","emptyValue","metersCutoff","squareMetersCutoff","vectorPrecisionLonLat","vectorPrecisionStandard","TypeError","isMetric","finalValue","roundFloat","metresToFeet","isSurveyFeet","feet","metresToMiles","metresToKiloMetres","formatVolume","cubicMetresToCubicYards","squareMetresToSquareMiles","squareMetresToSquareFeet","squareMetresToSquareKilometres","formatAngle","nullValue","formatGrade","isFinite","formatStation","distanceAlong","lengthUnits","alongFinal","stationFinal","imperial","feetToMetres","stationTotal","stationNumber","stationAlong","formatOffset","distanceAcross","sideOfSegment","convertUnits","precisionX","precisionY","precisionZ","isSurveryFeet","metres","squareMetres","cubicMetres","metresToYards","getDataExport","temp3DMPath","pythonName","handleExport3D","handleExport2D","getExportRows2D","getExportRows3D","measurements2D","measurements3D","measurement_coordinates","vertextView","time_created","measureCsvOut","mapProjection","getHeaderValues2D","getHeaderValues3D","distance3D","grade","areaValue","volumeValue","invalidVolumeMessage","areaUnits","volumeUnits","measurementVertices","updateMeasurements","removeFromArray","measure3D","newMeasurement","measure2D","timestamp","getLineCoordinates","lines","names","getPointCoordinates","areaMeasurements","measureGeometry","surfaceVertices","surfaceIndices","alternateAnnotationColor","measurementVertex","boundingSphere","intersectsSphere","TemporaryEndpoint","sphereBuffer","sphereMaterialStandard","sphereMaterialHover","lineMaterialStandard","lineMaterialHeight","lineMaterialHover","temporaryEndpoints","temporaryLines","temporaryAnnotations","dragValid","checkEndpointSelected","addActiveEndpoint","updateMeasureEndpoint","vertexIndex","setRestrictedPointTooltip","restrictedTooltip","endTooltipCount","moreTooltipMulti","endTooltipMulti","endTooltip","startTooltipMulti","createTempEndpoint","removeObjects","removeAnnotations","drawAnnotations","createEndpoint","createLine","useAlternate","defaultMaterial","pointMaterial","posScene","firstPointHigher","line0","line1","totalLength","fromBufferAttribute","addVectors","isHeight","lastLines","annotationStyle","hasEnoughLines","oldMeasurement","removeMeasurement","geometryWithIndex","pickerGeometry","copyGeometryValues","pickerMesh","getBasicPicker","pickerMaterial","GPUPicker","debug","_needsUpdate","LinearEncoding","clearSections","tX","tY","sectionWidth","sectionHeight","sectionX","sectionY","sectionIndex","pixelIndex","timeStart","startX","startY","pixelBuffer","readRenderTargetPixels","time","mouseResult","updateBaseIDs","oldClearColor","newClearColor","oldRenderTarget","getRenderTarget","getClearColor","oldClearAlpha","getClearAlpha","setClearColor","setClearAlpha","currentBaseID","gpuIndex","getSelectedObject","getObjectPosition","minIndex","maxIndex","coordinateFromBuffer","coordinateFromMesh","coordinateFromLine","trianglesToCheck","faces","face","isFirstPoint","Stats","addPanel","panel","dom","showPanel","cssText","beginTime","prevTime","frames","fpsPanel","Panel","msPanel","self","memory","memPanel","REVISION","begin","usedJSHeapSize","jsHeapSizeLimit","setMode","fg","bg","PR","devicePixelRatio","WIDTH","HEIGHT","TEXT_X","TEXT_Y","GRAPH_X","GRAPH_Y","GRAPH_WIDTH","GRAPH_HEIGHT","textBaseline","globalAlpha","TagMesh","TagPosition","TagItem","csv","TagFile","visibleChanged","textureChanged","newTagIDs","currentTagIDs","tagsChanged","TagsHandler","tagState","updateTagData","SceneViewTags","AerialTags","boundingBoxForTags","allTags","getTooltipText","getTagByID","tagCsvOut","tagFiles","updated","tagController","pickingMeshes","selectedID","sceneViewTags","visibilities","gpuIndices","cornerNumber","tagIndex","tagMaterial","numberOfTags","tagFromPickerIndex","arrayIndex","markTagSelected","newSelectedID","Cluster","getClusterStyle","getFeatures","tagScale","texturePaths","mostFrequent","strokeColor","textColor","combinedStyles","anchorXUnits","anchorYUnits","Text","GeomType","validGeomTypes","pointTexture","spritePath","WebGLLayer","generateStyle","symbol","symbolType","createRenderer","WebGLVectorLayerRenderer","LineworkPoints","LineworkLine","LineworkText","LOD","lineThickness","borderThickness","SpriteMaterial","Sprite","addLevel","drawBackground","ctx","moveTo","lineTo","quadraticCurveTo","closePath","generateTexture","numLines","textWidth","measureText","xScale","textScale","flipY","updateTexture","LineworkLayer","mapLayers","getCoordinateArray","segmentInfo","geomType","addTextData","addSceneData","addAerialData","shpMesh","meshColor","reprojected","mapCoordinates","geometries","Polygons","polygonRings","numFaces","MultiPolygon","Lines","startIndex","endIndex","MultiLineString","setFeatureColor","bufferGeometry","getCustomSpritePicker","bufferIndices","getLineIndices","geomIndex","styleColor","withOpacity","LineworkFile","removeMapLayer","updateProperties","validBounds","LineworkHandler","FileConstructor","clearHighlight","modelFiles","ifc","updateMeshes","SHPFile","DXFFile","getCurrentLevel","loadNextfile","CADHandler","ifcHandler","shpHandler","dxfHandler","IFCHandler","SHPHandler","DXFHandler","handlers","numberOfFiles","ifcFiles","IFCFile","shpFiles","dxfFiles","colorWithOpacity","olColor","useWebWorkers","highlightMaterial","IFCLoader","ifcManager","manager","ifcAPI","initManager","parseFromBuffer","ifcWorker","handleResponse","modelID","coordinationMatrix","GetCoordinationMatrix","workerPath","wasmPath","setWasmPath","applyWebIfcConfig","COORDINATE_TO_ORIGIN","USE_FAST_BOOLS","setOnProgress","total","removeSubset","ifcMesh","attributesToProperties","expressID","getExpressId","getItemProperties","subsetMesh","createSubset","ids","removePrevious","selectedFile","SHPLayer","addLayers","shp","shpPath","layerNames","layerName","addNewGeometry","newLayer","DXFLayer","parseFromText","WebSourceHandler","webSources","currentSources","newSources","sourcesToLoad","webSource","deleteSource","addNewSource","getNewSource","newSource","WebSource","webmapHandler","clearable","removeOnClear","visibleIdentifier","setLayerVisible","newIdentifiers","clearLayers","generateLayers","identifiers","removeLayers","FeatureVectorSource","tileGrid","createXYZ","tileSize","strategy","getExtents","prevResolution","onResolutionChange","getZForResolution","fromUserResolution","tileRange","getTileRangeForExtentAndZ","fromUserExtent","extents","minY","maxY","tileCoord","getTileCoordExtent","toUserExtent","updateFeatures","newFeatures","featureID","getId","oldFeature","getFeatureById","FeatureWebSource","controllers","cancelRequests","clearLoadedExtents","loadedExtentsRtree_","TileArcGISRest","crossOrigin","LAYERS","featureCount","hasHeight","advancedQueryCapabilities","supportsPagination","supportsQueryWithResultType","supportsQuantization","supportsCoordinatesQuantization","spatialReference","wkid","xmin","ymin","xmax","ymax","esriResponse","getCapabilities","getNumberOfFeatures","vectorSource","getProjection","styleFunction","createStyleFunction","reconstructQuantizedGeometry","geometryType","rings","resultOffset","srid","getCode","projectionToEsriSRID","isComplexLayer","extendBounds","quantizationParameters","originPosition","fetchError","EsriJSON","readFeatures","featureProjection","exceededTransferLimit","newResultOffset","TileWMS","geomExtent","serverResponse","GeoJSON","optionsFromCapabilities","matrixSet","TileLayer","WMTS","Viewer","viewContainer","mapContainer","defaultNearPlane","updatePreviousTexture","updateMouseCoords","isEmpty","drawPickerScene","initialZoomApplied","initialStateApplied","timingDebug","estimateLocalTransform","getLocalProjection","clearLocalTransformErrors","resetErrorValues","getOrthoLabelPolygons","isAerialLabels","initGpuPickers","StatsPanel","addContainerElements","animate","hasCameras","removeContainerElements","customStyle","div","onclick","setProjectName","clamp","colorMapKey","setMeasurementUnits","setInitialZoomFlag","setCameraState","setOrbitState","hasModels","hasTags","setTagState","isBehindCamera","toggleLocalAligner","refreshLocalTransform","drawObservations","generateLocalAlignerRows","numRows","addNewObservations","setLocalAlignerActive","setActiveObservation","deleteLocalAlignment","pointMarkupActive","addPointMarkupOperation","updatePointMarkupName","setPointMarkupActive","pointMarkupToggle","clearPointMarkup","pointMarkupZoom","pointMarkupDeleteGroup","pointMarkupDeleteBox","pointMarkupNameExists","setPointMarkupNewClassification","setPointMarkupIgnoredClassification","resetPointMarkupRotation","setPointMarkupHover","initMultiImageContainer","toggleMultiImageWindow","multiImageNextImage","multiImagePreviousImage","multiImageOnComplete","multiImageOnAddPoint","multiImageOnClose","toggleMeasurements","updateVolumeType","updateAerialMeasureType","updateVolumeSampleRate","updateMeasurementType","updateMeasureHover","deleteMeasurement","renameMeasurement","exportMeasurements","activeImageLabelPaths","loadedImageLabelPaths","loadImageLabelData","labelHotkey","setLabelText","setLabelFindText","currentCategoryName","getIndexInList","checkCategoryUniqueness","categoryName","headerFileInfo","snapToFolder","tagFile","tagBBOX","toggleCameraAligner","resetCameraAligner","generateAdvancedAlignerRows","setErrorsCameraAligner","clearErrorsCameraAligner","clearErrors","deleteRowCameraAligner","setBasicAlignerState","getBasicAlignerValue","cameraAngles","flashObservations","setCurrentObservation","updateCompassOffset","getAllCameras","folderPaths","previousCSV","setEmptyProject","reconcileAssets","savedTagID","applySavedTagState","allCameras","numberOfCameras","numCamerasChanged","redrawImageObsMarkers","resetInitialFlag","resetDefaultAerialCamera","resetDefaultControlState","removeInteractions","logarithmicDepthBuffer","powerPreference","renderPickerScene","updateSceneElements","withTiming","scenePos","showCompassElement","requestAnimationFrame","nodesVisible","pointsVisible","childCount","getElementsByClassName","drawExpandedState","indexToShow","timeElapsed","preview","EmptyBasemapIcon","LayerPreviewIcon","previews","LayerSwitcher","setAnchorEl","Boolean","basemapIDs","currentTarget","containerLarge","offsetLarge","containerSmall","offsetSmall","borderTop","compassElement","ViewSwitcher","SceneViewer","setLocalObservations","setAlignerObservations","viewerRef","aerialRef","selectViewProjection","viewerSwitched","savedAerialState","viewerTooltipLines","setViewerTooltipLines","aerialTooltipLines","setAerialTooltipLines","cameraState","handleSwitched","addAllAssets","assetList","viewerAssets","handleHashUpdate","setWindowHash","onhashchange","modifiedSceneState","modifiedAerialState","handleHashChange","newURL","viewerProps","viewerObj","defs","changeMeasureUnits","cancel","viewerClasses","mapClasses","classLarge","classSmall","getClasses","observations","imageObsInterval","pointObsInterval","setObservations","imageSelected","pointSelected","observationType","refreshObservationList","observation","imageMesh","pointMesh","numObservations","imageObs","imageHidden","pointObs","pointHidden","imageIdentifier","pose","pointIdx","imageIdx","cancelAlignment","clickImage","currentRow","imageDir","addImageObservationMesh","clickScene","addPointObservationMesh","selecting","observationToAdd","resetSelectedState","updateAllMeshes","pointObsColor","PointObservation","imageObsColor","ImageObservation","flashObservation","defaultColor","numberOfFlashes","setHex","flashColor","clearFlashIntervals","obs","rotations","meshPos","inputInverted","currentID","updateAlignment","aerialObsColor","LocalObservationTypes","activeObservation","Aerial","filled","latlon","average","output","local","drawPointObservations","drawAerialObservations","isSceneObs","isAerialObs","clearActiveObservation","onSceneClick","sceneTooltip","aerialTooltip","aerialObservationSuccess","imageObservationSuccess","pointObservationSuccess","errorLow","errorMedium","errorHigh","PointObservationIcon","ObservationIcon","AerialObservationIcon","ImageObservationIcon","clicked","buttonColor","ObservationError","lowCutoff","highCutoff","minHeightContent","toggleOptionParent","toggleOptionCheckbox","toggleOptionFlex","userWarning","selectMargin","checkboxPadding","ResidualError","ImageAlignerAdvanced","alignerAdvDialog","removeDialog","calculating","setCalculating","alignerMatrixPath","setAlignerMatrixPath","closePrompt","setClosePrompt","alignPosition","setAlignPosition","alignRotation","setAlignRotation","newRotation","setNewRotation","newOffset","setNewOffset","parseResiduals","resArray","res","rounded","isTableEmpty","removed","noCameras","imageClicked","pointClicked","img_obs","pc_obs","hasAdvancedAlignment","hasAlignment","requiredRows","camID","tmpObservationPath","tmpEncompassPath","observationsCSV","encompassCSV","observationsCSVContent","encompassCSVContent","isConverted","largeResiduals","camPoseEntry","initialPath","correctionName","correctionPath","residualsTemp","titleTop","AlignerShortcuts","ImageAlignerBasic","alignerBasicDialog","singleAlignment","setSingleAlignment","hasActiveCamera","savedAngle","activeCameraName","isModified","epsilon","checkDataModified","transformInfo","transformValues","AlignmentError","lowCutoffWithUnits","highCutoffWithUnits","localAlignerDialog","setRotate","setUtmZone","savePrompt","setSavePrompt","oldProjection","setOldProjection","updateViewerProjection","deleteViewerProjection","aerialSelected","aerialClicked","aerialObs","map_obs","translateX","translateY","scaling","getEstimator","tempProjection","LabelImportType","geometryLimit","titleInfo","titleMin","listContent","folderList","labelFixedHeight","labelParent","labelTitleWarning","labelTitleError","classificationText","progressToolbar","toolbarLinear","toolbarProgressCenter","downloadMargin","downloadResourceDialog","tableDropdown","mappingMargin","checkBoxParent","captionPadding","paddingBottomAndTop","paddingBottomAndTopMinimal","outputFolder","infoLabel","flexPaper","Label","isScrolling","labelName","isSceneLabel","getInfo","setGetInfo","isTrainingLabel","scoreValidity","scoreClass","GetInfoWindow","CategoryContent","listRef","scrollingDivLength","useScrollingDiv","scrollingDivHeight","scrollToItem","useIsScrolling","itemCount","itemSize","CategoryExpand","TrainingArea","setDeletePrompt","addNewLabelDisabled","addNewlabelTooltip","disableTypography","Category","isValidCategory","labelDisabled","runTextDetection","editPrompt","setEditPrompt","sortPrompt","setSortPrompt","textDetectPrompt","setTextDetectPrompt","setSorted","labelsAdded","handleToggleVisibility","numLabelsTooltip","numLabelsAll","substr","ScoreSortingParameters","runSort","scoreValue","defaultScore","TextDetectionParameters","LabelIntersectDialog","forceInitialProgress","setTrainClassifyExe","setTrainClassifyProgress","resetExecutableValues","checkTrainingData","setProcessType","setMethod","LASfiles","minLasVersion","visibleClouds","cloudsAvailable","maxNumClasses","availableLasClasses","imageSamplingDistance","setImageSamplingDistance","intersectionAngle","setIntersectionAngle","minNumMatches","setMinNumMatches","positionConfidence","setPositionConfidence","maxDistanceFromCamera","setMaxDistanceFromCamera","closeLabelDist","setCloseLabelDist","setMinCameraDistance","maxCameraDistance","setMaxCameraDistance","maxIntersectDistance","setMaxIntersectDistance","clusterDistance","setClusterDistance","numMatchesRequired","setNumMatchesRequired","extractPoints","setExtractPoints","objSize","setObjSize","setOverwrite","collapse1","setCollapse1","collapse2","setCollapse2","categoryClasses","setCategoryClasses","ignoreClasses","setIgnoreClasses","getIgnoreClasses","ignoreTemp","classicationCheck","getNameFromClass","runIntersection","tempCocoPath","csvEncompassPath","useFunctionV1","useFunctionV2","classesToIgnore","ic","categoryClassesNames","categoryClassesNums","lasOutputPath","successEstimate","successLabelInPC","successCombine","successConvert","convertAttempted","successLasWritten","csvOutputPaths","position_estimate_progress","positions_found","csvs_written","labels_found_pointcloud","combine_las","combine_las_complete","las_to_3dp","las_to_3dp_success","writing_las","las_written","resetDefaultValues","categoriesTemp","lasClass","getCategoryClasses","destination","rowsTemp","ignoreClass","updateIgnoreClasses","ImportDialog","importData","setImportData","isOrthoLabel","categoryList","setLabelLoadProgress","importCategory","setImportCategory","importLarge","setImportLarge","importPoints","setImportPoints","importLines","setImportLines","setCheckOverlap","lineBuffer","setLineBuffer","pointBuffer","setPointBuffer","hasLines","hasLargeClasses","categoryNames","filterAnnotationTypes","validBufferSize","minIterations","maxIterations","getMappedCategory","createSelect","getLayerMenuItems","Ignore","numGeometry","Default","importCategories","newCategoryName","anno","ClassifyFromAerial","setProgress","setRows","sortedAlpha","setSortedAlpha","sortByNum","setSortByNum","overwriteFile","setOverwriteFile","preserveGround","setPreserveGround","newLasPath","setNewLasPath","mixedData","checkNamesForClass","classifyPointclouds","applicationOrder","lasClasses","inputPaths","overwriteGround","polygonData","class","tempTextPath","newCloudPaths","label_bounds_error","overwrite_failure","output_paths","sortButtonTitle","reverseSort","sortRowsByClassNum","sortRowsAlphabetically","sortReset","ClassificationParameters","runClassification","modelPath","setModelPath","runOnCPU","setRunOnCPU","TrainingParameters","runTraining","defaultIterations","pretrainedPath","setPretrainedPath","modelName","setModelName","imageTileSize","setImageTileSize","iterations","setIterations","numIterations","orignalText","txtList","newText","updateLabelText","classValid","classHighlight","txt","handleTextChange","spellcheck","setSpellcheck","setSortType","ImageLabelling","imageLabelDialog","labelType","setLabelType","setAddCategory","classifyLasPrompt","setClassifyLasPrompt","labelLoadProgress","classifyAerialProgress","setClassifyAerialProgress","trainClassifyProgress","updateTrainClassifyProgress","trainClassifyExe","processType","classifyImage","setClassifyImage","readingLabelFile","setReadingLabelFile","training","setTraining","trainingURL","setTrainingURL","downloadingResources","setDownloadingResources","downloadResourcesDialog","setDownloadResourcesDialog","trainingPrompt","setTrainingPrompt","classificationPrompt","setClassificationPrompt","labelExportOpen","setLabelExportOpen","textDetection","setTextDetection","pointCloudFiles","numPanoramics","numPlanars","canExportCSV","handleCancelProgress","handleCategoryChange","showTrainingWindow","canTrain","exportLabels3DL","exportToLinework","outputKey","importLabelsPTH","downloading_resources","extracting_resources","coco_data","importLabelData","importLabelsLinework","label_data","importLabels3DL","cudaErrorDialog","cudaError","selection","updateDownloadingResources","canRunClassification","imagePaths","canClassify","spellcheckCommand","labelJSON","imageJSON","exportDisabled","trainingLinkDisabled","sceneTrainingDisabled","categoryListDisabled","localizedProcessType","modalName","downloadTooltip","canRunAerialToLas","combinedExtension","CircularProgress","areas","pretrainedModelPath","gpu_memory_error","model_diverge_error","model_file_path","class_number_mismatch","old_classes","new_classes","borderRight","QuickNav","currentPosition","closestCamera","closestPosition","lookatScene","getBestSceneState","folderAssetIds","folderAsset","getFolderAssets","isSelected","folderAssets","numFolderAssets","numAssetsVisible","openNav","mkdirs","moveCameraData","imagesPath","imagesData","newImagePath","assetsFolder","getAssetIndex","moveAssetData","singleFileOutput","handleExportError","inputPath","moveStreamablePointsData","moveGenericPointCloud","onExportError","copyToFile","shpInput","shpOutput","dbfInput","dbfOutput","moveModelData","exporterOptsDefaults","onError","onProgress","getStaticExporter","buildPath","getBuildPath","cancelFlag","webOutputPath","rootOutputPath","assetIndex","finalPath","updateStreamablePointsState","updateRawPointsState","updateCameraDataState","updateModelDataState","matrixPath","updateCameraTransformPath","miniViewerPath","getMiniViewerPath","exeOutputPath","globalSettingsPath","globalSettingsOutput","projectJson","projectPath","BulletListItem","NewProjectInfo","landXMLFiles","webmapSources","numGenericPointCloud","numberOfImages","cameraAsset","tagAsset","exportText","contentCenter","cancelProgress","cancelContent","StaticExporter","exporterDialog","messageDialog","successDialog","cancelDialog","setSingleFileOutput","exportTopMessage","setExportTopMessage","exportBottomMessage","setExportBottomMessage","exportPercent","updateExportPercent","isExportRunning","setIsExportRunning","startExport","cancelExport","setExportPercent","canExport","onExportFinished","setExportMessage","exportToStatic","exportName","sanitizedName","sanitize","StatusCode","SHP_FILE_TYPES","POTREE_FILES","onStart","getUploadURL","projectID","getCloudExporter","statuses","panoramics","panoAsset","planars","pointCloudAsset","orthomosaics","orthoAsset","landxmls","landXMLAsset","ifcAsset","shpAsset","dxfAsset","webmapAsset","map_type","link","request","measurementUnits","measureUnits","createProject","uploadList","uploads","uploadId","processPoints","getAssetsToUpload","tempOutputPath","status_code","Errored","LinkedProjectInfo","AssetStatusText","Uploaded","Uploading","Preparing","Queued","getColor","getText","CloudExporter","selectProjectID","assetStatuses","updateAssetStatuses","isExportFinished","setIsExportFinished","projectExists","setProjectExists","hasErrors","setHasErrors","projectURL","setProjectURL","setAssetStatuses","exportToCloud","originalID","checkProject","uploadMessage","assetStatus","status_text","clippingBoxParent","clippingBoxButtons","operationList","overflowY","boxOrientation","dropdownRoot","dropdownSelect","PointMarkupBox","onMouseOver","PointMarkupGroup","operation","isSplit","newBoxDisabled","operationBoxes","defaultIgnoreValue","classOptions","displayName","DataExportSplit","markupGroups","exportPoints","setExportPoints","exportImages","setExportImages","inputFoldersPoints","inputFolderCameras","operationData","outputPaths","DataExportMarkup","PointMarkup","pointMarkupDialog","toolType","setToolType","exportPromptMarkup","setExportPromptMarkup","exportPromptSplit","setExportPromptSplit","newOperationPrompt","setNewOperationPrompt","newOutputPrompt","setNewOutputPrompt","conversionProgress","setConversionProgress","isPointMarkup","isFolderSplit","dialogTitle","copyClipboard","measurementUnitsParent","flexWrap","measurementUnitsRadio","imageOnlyInfoButton","marginside","expandText","bold","alignmentSelect","cell","tableCell","cellParent","measureTable","calculateButton","recalculate","recalculateButton","ExportDialog","exportType","setExportType","CSV","setOrdering","Shapefile","Data","MeasureTypeIcon","setMeasureType","ImportExportMeasureIcon","ClipboardCopy","MeasurementInfo3DLength","MeasurementInfoHeight","MeasurementInfo3DArea","isVolume","getVolumeComponent","MeasurementInfo2DArea","measureTypeText","MeasurementInfo2DLength","MeasurementInfoVolume","volumeMethodText","volumeRateText","MeasurementInfoStation","MeasurementCard","verticesReprojected","generateVertexPositions","is3DArea","is2DArea","is3DLength","is2DLength","isStationMeasurement","Measurements","exportDialog","xmlAssets","selectMeasureUnits","activeMeasurePrompt","setActiveMeasurePrompt","alignmentChoice","setAlignmentChoice","setMeasureUnits","loadImportData","encoded","decodeURIComponent","onModalClose","xmlAlignments","updateDefaultDropdown","reversed","iconProps","importDisabled","allowStationMeasurements","RadioGroup","Radio","fileDialog","accept","reader","FileReader","readAsText","buttonParentLeft","buttonParentRight","smallButton","buttonRight","multiImageHeader","fontFamily","WindowButton","hidden","MultiImageInfo","clampedColor","midValue","observationStyle1","observationStyle2","observationText1","observationText2","errorStyle","errorValue","errorElement","distanceStyle1","distanceValue1","distanceElement1","distanceStyle2","distanceValue2","distanceElement2","customPromptOpen","setCustomPromptOpen","customPromptState","setCustomPromptState","dependencies","dialogDiv","dialogContent","lineHeight","dialogPaper","divContent","indent","listItems","logoImage","support","titleParent","AboutDialog","helpDialog","javascriptDependencies","jquery","manifest","ol","react","three","typescript","devDependencies","pythonDependencies","numpy","scipy","matplotlib","pykml","lxml","miscDependancies","getDependencies","elevation","logoPath","underline","rel","consoleDialogHeader","consoleDialogTitle","consoleDialogClose","consoleHeight","consoleLine","TaskQueue","ConsoleWindow","selectedTaskID","lineData","setLineData","activeTask","scrollTop","ProjectListRow","accentColor","stc","cloudProject","borderLeft","CloudProjectList","userProjects","setUserProjects","itemsSearch","handleSortChange","sortByDate","dateA","dateB","nameParts","initialSort","nameA","nameB","sortByName","useItemsSearch","sortOptions","projects","isAdmin","getUserProjects","hasProjects","sortValue","debugStandard","debugShifted","DragDropLoader","closest","ProjectLoader","loadFromCompiledExe","rawArgs","argv","arg","getAllFileArgs","oncontextmenu","loadFromStaticSite","AppBackdrop","backdropOpen","setBackdropOpen","Backdrop","AppWithAuth","appAccess","setAppAccess","accessDialog","App","projectDrawerState","measurementsDialog","customURLDialog","setDrawerState","localObservations","alignerObservations","multiImageOpen","pointProfileOpen","multiImageState","handleLinkWithoutTargets","mainWindow","quit","hotToast","projectSlice","updateProjectID","updateSessionID","appReducer","combineReducers","projectReducer","cameraReducer","foldersReducer","projectionsReducer","settingsReducer","assetsReducer","bookmarksReducer","customLinksReducer","middleware","MiddlewareArray","thunk","configureStore","reducer","loadConfig","configInit","updateStateFromTag","updateStateFromBookmark","updateStateFromParameters","projectionsSlice"],"mappings":"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+CZ8DvC,qBa9Da,IAA0B,+Cb+DvC,qBc/Da,IAA0B,+CdgEvC,qBehEa,IAA0B,+CfiEvC,qBgBjEa,IAA0B,+ChBkEvC,oBiBlEa,IAA0B,8CjBmEvC,oBkBnEa,IAA0B,8ClBoEvC,oBmBpEa,IAA0B,8CnBqEvC,oBoBrEa,IAA0B,8CpBsEvC,oBqBtEa,IAA0B,8CrBuEvC,oBsBvEa,IAA0B,8CtBwEvC,oBuBxEa,IAA0B,8CvByEvC,oBwBzEa,IAA0B,8CxB0EvC,oByB1Ea,IAA0B,8CzB2EvC,oB0B3Ea,IAA0B,8C1B4EvC,qB2B5Ea,IAA0B,+C3B6EvC,qB4B7Ea,IAA0B,+C5B8EvC,qB6B9Ea,IAA0B,+C7B+EvC,qB8B/Ea,IAA0B,+C9BgFvC,qB+BhFa,IAA0B,+C/BiFvC,qBgCjFa,IAA0B,+ChCkFvC,mBiClFa,IAA0B,6CjCmFvC,mBkCnFa,IAA0B,6ClCoFvC,mBmCpFa,IAA0B,6CnCqFvC,mBoCrFa,IAA0B,6CpCsFvC,mBqCtFa,IAA0B,6CrCuFvC,mBsCvFa,IAA0B,6CtCwFvC,mBuCxFa,IAA0B,6CvCyFvC,mBwCzFa,IAA0B,6CxC0FvC,mByC1Fa,IAA0B,6CzC2FvC,mB0C3Fa,IAA0B,6C1C4FvC,oB2C5Fa,IAA0B,8C3C6FvC,oB4C7Fa,IAA0B,8C5C8FvC,oB6C9Fa,IAA0B,8C7C+FvC,oB8C/Fa,IAA0B,8C9CgGvC,oB+ChGa,IAA0B,8C/CiGvC,oBgDjGa,IAA0B,+CCsE1BA,OApCE,CACf,iBCnCa,IAA0B,2CDoCvC,iBEpCa,IAA0B,2CFqCvC,oBGrCa,IAA0B,8CHsCvC,eItCa,IAA0B,yCJuCvC,WKvCa,IAA0B,qCLwCvC,gBMxCa,IAA0B,0CNyCvC,cOzCa,IAA0B,wCP0CvC,qBQ1Ca,IAA0B,+CR2CvC,kBS3Ca,IAA0B,4CT4CvC,oBU5Ca,IAA0B,8CV6CvC,cW7Ca,IAA0B,wCX8CvC,gBY9Ca,IAA0B,0CZ+CvC,ea/Ca,IAA0B,yCbgDvC,mBchDa,IAA0B,6CdiDvC,qBejDa,IAA0B,+CfkDvC,kBgBlDa,IAA0B,4ChBmDvC,oBiBnDa,IAA0B,8CjBoDvC,iBkBpDa,IAA0B,2ClBqDvC,emBrDa,IAA0B,yCnBsDvC,aoBtDa,IAA0B,uCpBuDvC,cqBvDa,IAA0B,wCrBwDvC,0BsBxDa,IAA0B,oDtByDvC,iBuBzDa,IAA0B,2CvB0DvC,gBwB1Da,IAA0B,0CxB2DvC,iByB3Da,IAA0B,2CzB4DvC,0B0B5Da,IAA0B,oD1B6DvC,oB2B7Da,IAA0B,8C3B8DvC,qB4B9Da,IAA0B,+C5B+DvC,gB6B/Da,IAA0B,0C7BgEvC,iB8BhEa,IAA0B,2C9BiEvC,a+BjEa,IAA0B,uC/BkEvC,cgClEa,IAA0B,wChCmEvC,mBiCnEa,IAA0B,8CC4H1BA,OA/DE,CACf,aC9Da,IAA0B,uCD+DvC,YE/Da,IAA0B,sCFgEvC,YGhEa,IAA0B,sCHiEvC,YIjEa,IAA0B,sCJkEvC,eKlEa,IAA0B,yCLmEvC,YMnEa,IAA0B,sCNoEvC,iBOpEa,IAA0B,2CPqEvC,WQrEa,IAA0B,qCRsEvC,aStEa,IAA0B,uCTuEvC,iBUvEa,IAA0B,2CVwEvC,cWxEa,IAA0B,wCXyEvC,eYzEa,IAA0B,yCZ0EvC,ea1Ea,IAA0B,yCb2EvC,cc3Ea,IAA0B,wCd4EvC,Ye5Ea,IAA0B,sCf6EvC,cgB7Ea,IAA0B,wChB8EvC,WiB9Ea,IAA0B,qCjB+EvC,WkB/Ea,IAA0B,qClBgFvC,YmBhFa,IAA0B,sCnBiFvC,oBoBjFa,IAA0B,8CpBkFvC,kBqBlFa,IAA0B,4CrBmFvC,kBsBnFa,IAA0B,4CtBoFvC,kBuBpFa,IAA0B,4CvBqFvC,kBwBrFa,IAA0B,4CxBsFvC,kByBtFa,IAA0B,4CzBuFvC,kB0BvFa,IAA0B,4C1BwFvC,kB2BxFa,IAA0B,4C3ByFvC,e4BzFa,IAA0B,yC5B0FvC,oB6B1Fa,IAA0B,8C7B2FvC,oB8B3Fa,IAA0B,8C9B4FvC,a+B5Fa,IAA0B,uC/B6FvC,kBgC7Fa,IAA0B,4ChC8FvC,iBiC9Fa,IAA0B,2CjC+FvC,YkC/Fa,IAA0B,sClCgGvC,gBmChGa,IAA0B,0CnCiGvC,gBoCjGa,IAA0B,0CpCkGvC,gBqClGa,IAA0B,0CrCmGvC,gBsCnGa,IAA0B,0CtCoGvC,iBuCpGa,IAA0B,2CvCqGvC,ewCrGa,IAA0B,yCxCsGvC,cyCtGa,IAA0B,wCzCuGvC,e0CvGa,IAA0B,yC1CwGvC,iB2CxGa,IAA0B,2C3CyGvC,gB4CzGa,IAA0B,0C5C0GvC,gB6C1Ga,IAA0B,0C7C2GvC,gB8C3Ga,IAA0B,0C9C4GvC,e+C5Ga,IAA0B,yC/C6GvC,kBgD7Ga,IAA0B,4ChD8GvC,mBiD9Ga,IAA0B,6CjD+GvC,WkD/Ga,IAA0B,qClDgHvC,mBmDhHa,IAA0B,6CnDiHvC,eoDjHa,IAA0B,yCpDkHvC,cqDlHa,IAA0B,wCrDmHvC,gBsDnHa,IAA0B,0CtDoHvC,WuDpHa,IAA0B,qCvDqHvC,WwDrHa,IAA0B,qCxDsHvC,0ByDtHa,IAA0B,oDzDuHvC,0B0DvHa,IAA0B,oD1DwHvC,0B2DxHa,IAA0B,oD3DyHvC,0B4DzHa,IAA0B,qDCgF1BA,OAzCE,CACf,mCCxCa,IAA0B,6DDyCvC,sCEzCa,IAA0B,gEF0CvC,+BG1Ca,IAA0B,yDH2CvC,oCI3Ca,IAA0B,8DJ4CvC,iCK5Ca,IAA0B,2DL6CvC,kCM7Ca,IAA0B,4DN8CvC,mDO9Ca,IAA0B,6EP+CvC,oDQ/Ca,IAA0B,8ERgDvC,qCShDa,IAA0B,+DTiDvC,qCUjDa,IAA0B,+DVkDvC,kCWlDa,IAA0B,4DXmDvC,qCYnDa,IAA0B,+DZoDvC,mCapDa,IAA0B,6DbqDvC,+BcrDa,IAA0B,yDdsDvC,qCetDa,IAA0B,+DfuDvC,0BgBvDa,IAA0B,oDhBwDvC,iBiBxDa,IAA0B,2CjByDvC,gBkBzDa,IAA0B,0ClB0DvC,oBmB1Da,IAA0B,8CnB2DvC,sBoB3Da,IAA0B,gDpB4DvC,sBqB5Da,IAA0B,gDrB6DvC,uBsB7Da,IAA0B,iDtB8DvC,uBuB9Da,IAA0B,iDvB+DvC,kBwB/Da,IAA0B,4CxBgEvC,kByBhEa,IAA0B,4CzBiEvC,wB0BjEa,IAA0B,kD1BkEvC,sB2BlEa,IAA0B,gD3BmEvC,8B4BnEa,IAA0B,wD5BoEvC,4B6BpEa,IAA0B,sD7BqEvC,sB8BrEa,IAA0B,gD9BsEvC,uB+BtEa,IAA0B,iD/BuEvC,wBgCvEa,IAA0B,kDhCwEvC,sCiCxEa,IAA0B,gEjCyEvC,gCkCzEa,IAA0B,0DlC0EvC,uBmC1Ea,IAA0B,iDnC2EvC,wBoC3Ea,IAA0B,kDpC4EvC,oBqC5Ea,IAA0B,8CrC6EvC,sBsC7Ea,IAA0B,iDCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,2ECA1B,OAA0B,wDCA1B,OAA0B,+ECA1B,OAA0B,8ECA1B,OAA0B,mECA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,qDCA1B,OAA0B,gECA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,gECA1B,OAA0B,gECA1B,OAA0B,wDCA1B,OAA0B,qDCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,2ECA1B,OAA0B,wDCA1B,OAA0B,sDCA1B,OAA0B,gECA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,iECA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,4ECA1B,OAA0B,mFCA1B,OAA0B,uFCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,6DCA1B,OAA0B,4DCA1B,OAA0B,6DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,uDCA1B,OAA0B,wDCA1B,OAA0B,wECA1B,OAA0B,yECA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,kFCA1B,OAA0B,wECA1B,OAA0B,yDCA1B,OAA0B,0DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,kECA1B,OAA0B,mECA1B,OAA0B,yDCA1B,OAA0B,0DCA1B,OAA0B,wECA1B,OAA0B,gECA1B,OAA0B,iECA1B,OAA0B,8DCA1B,OAA0B,0DCA1B,OAA0B,8ECA1B,OAA0B,8ECA1B,OAA0B,8ECA1B,OAA0B,8ECA1B,OAA0B,8ECA1B,OAA0B,8ECA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,8ECA1B,OAA0B,kECA1B,OAA0B,mECA1B,OAA0B,sECA1B,OAA0B,6ECA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,2DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,4DCA1B,OAA0B,6DCA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,wDCA1B,OAA0B,8DCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,sDCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,mECA1B,OAA0B,qECA1B,OAA0B,8DCA1B,OAA0B,oECA1B,OAA0B,+DCA1B,OAA0B,qECA1B,OAA0B,kECA1B,OAA0B,gECA1B,OAA0B,iECA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,iECA1B,OAA0B,oECA1B,OAA0B,4DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,wDCA1B,OAA0B,2DCA1B,OAA0B,4DCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,0DCA1B,OAA0B,gECA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,+DCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,kDCA1B,OAA0B,kDCA1B,OAA0B,2DCA1B,OAA0B,6DCA1B,OAA0B,qECA1B,OAA0B,gECA1B,OAA0B,0DCA1B,OAA0B,8DCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,+DCA1B,OAA0B,2ECA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sECA1B,OAA0B,sFCA1B,OAA0B,sFCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,wDCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,gECA1B,OAA0B,oFCA1B,OAA0B,oFCA1B,OAA0B,oFCA1B,OAA0B,oFCA1B,OAA0B,oFCA1B,OAA0B,oFCA1B,OAA0B,iECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,wECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,6DCA1B,OAA0B,6FCA1B,OAA0B,+DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,oECA1B,OAA0B,mECA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,yDCA1B,OAA0B,kDCA1B,OAA0B,kDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,gFCA1B,OAA0B,qDCA1B,OAA0B,sDCA1B,OAA0B,yDCA1B,OAA0B,iECA1B,OAA0B,kECA1B,OAA0B,sECA1B,OAA0B,uECA1B,OAA0B,2ECA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,gECA1B,OAA0B,0DCA1B,OAA0B,iECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,wECA1B,OAA0B,wECA1B,OAA0B,oDCA1B,OAA0B,sDCA1B,OAA0B,wECA1B,OAA0B,8DCA1B,OAA0B,wECA1B,OAA0B,oECA1B,OAA0B,yECA1B,OAA0B,yECA1B,OAA0B,qECA1B,OAA0B,iECA1B,OAA0B,8DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,sDCA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,oFCA1B,OAA0B,8DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,0DCA1B,OAA0B,uECA1B,OAA0B,iECA1B,OAA0B,oECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,8DCA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,yDCA1B,OAA0B,wDCA1B,OAA0B,mFCA1B,OAA0B,uECA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,0DCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,kFCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,uDCA1B,OAA0B,4DCA1B,OAA0B,kECA1B,OAA0B,qECA1B,OAA0B,mECA1B,OAA0B,oDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,2ECA1B,OAA0B,0DCA1B,OAA0B,iECA1B,OAA0B,gECA1B,OAA0B,iECA1B,OAA0B,kECA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,6DCA1B,OAA0B,yECA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,4DCA1B,OAA0B,6DCA1B,OAA0B,2DCA1B,OAA0B,sECA1B,OAA0B,yECA1B,OAA0B,8DCA1B,OAA0B,yDCA1B,OAA0B,sECA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,0DCA1B,OAA0B,uDCA1B,OAA0B,6DCA1B,OAA0B,wDCA1B,OAA0B,8DCA1B,OAA0B,wDCA1B,OAA0B,+DCA1B,OAA0B,mECA1B,OAA0B,qECA1B,OAA0B,0DCA1B,OAA0B,+DCA1B,OAA0B,yECA1B,OAA0B,qECA1B,OAA0B,oDCA1B,OAA0B,2DCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,8DCA1B,OAA0B,4DCA1B,OAA0B,oECA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,+DCA1B,OAA0B,yECA1B,OAA0B,uDCA1B,OAA0B,+DCA1B,OAA0B,8DCA1B,OAA0B,gECA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,gECA1B,OAA0B,4ECA1B,OAA0B,kECA1B,OAA0B,gECA1B,OAA0B,uECA1B,OAA0B,wDCA1B,OAA0B,yDCA1B,OAA0B,qECA1B,OAA0B,iECA1B,OAA0B,mECA1B,OAA0B,sECA1B,OAA0B,wDCA1B,OAA0B,kECA1B,OAA0B,8ECA1B,OAA0B,+ECA1B,OAA0B,kFCA1B,OAA0B,wECA1B,OAA0B,2ECA1B,OAA0B,4ECA1B,OAA0B,iECA1B,OAA0B,2ECA1B,OAA0B,6ECA1B,OAA0B,8ECA1B,OAA0B,+ECA1B,OAA0B,+ECA1B,OAA0B,+ECA1B,OAA0B,kFCA1B,OAA0B,2FCA1B,OAA0B,+ECA1B,OAA0B,+ECA1B,OAA0B,kFCA1B,OAA0B,2FCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,qECA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,uECA1B,OAA0B,sFCA1B,OAA0B,sFCA1B,OAA0B,oECA1B,OAA0B,uECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,2ECA1B,OAA0B,2ECA1B,OAA0B,2ECA1B,OAA0B,2ECA1B,OAA0B,2ECA1B,OAA0B,2ECA1B,OAA0B,2ECA1B,OAA0B,2ECA1B,OAA0B,uECA1B,OAA0B,4ECA1B,OAA0B,2ECA1B,OAA0B,2DCA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,yFCA1B,OAA0B,yFCA1B,OAA0B,gFCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,0ECA1B,OAA0B,oECA1B,OAA0B,gECA1B,OAA0B,gECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,iECA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,wFCA1B,OAA0B,wFCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,iECA1B,OAA0B,wECA1B,OAA0B,8DCA1B,OAA0B,yECA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,6DCA1B,OAA0B,qECA1B,OAA0B,+DCA1B,OAA0B,iECA1B,OAA0B,yECA1B,OAA0B,yECA1B,OAA0B,6DCA1B,OAA0B,8DCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,iECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,2ECA1B,OAA0B,yDCA1B,OAA0B,iECA1B,OAA0B,iDCA1B,OAA0B,0ECA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,yDCA1B,OAA0B,qECA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,uECA1B,OAA0B,mECA1B,OAA0B,4DCA1B,OAA0B,iDCA1B,OAA0B,gECA1B,OAA0B,gECA1B,OAA0B,gECA1B,OAA0B,wECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,wECA1B,OAA0B,wECA1B,OAA0B,wECA1B,OAA0B,wECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,qECA1B,OAA0B,0ECA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,gECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,oDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,4ECA1B,OAA0B,8ECA1B,OAA0B,8ECA1B,OAA0B,sECA1B,OAA0B,uECA1B,OAA0B,0ECA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,gECA1B,OAA0B,wDCA1B,OAA0B,4ECA1B,OAA0B,6DCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,iECA1B,OAA0B,qECA1B,OAA0B,qDCA1B,OAA0B,2DCA1B,OAA0B,wECA1B,OAA0B,yECA1B,OAA0B,6DCA1B,OAA0B,sECA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,sECA1B,OAA0B,uDCA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,4FCA1B,OAA0B,4FCA1B,OAA0B,6ECA1B,OAA0B,gFCA1B,OAA0B,gFCA1B,OAA0B,+DCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,mECA1B,OAA0B,oECA1B,OAA0B,+DCA1B,OAA0B,8DCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,sECA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,iFCA1B,OAA0B,iFCA1B,OAA0B,iFCA1B,OAA0B,0ECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,+DCA1B,OAA0B,kFCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,+ECA1B,OAA0B,gECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,iECA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,0FCA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,iECA1B,OAA0B,sDCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,mECA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,oECA1B,OAA0B,gECA1B,OAA0B,gECA1B,OAA0B,mECA1B,OAA0B,8DCA1B,OAA0B,0DCA1B,OAA0B,wDCA1B,OAA0B,2ECA1B,OAA0B,iECA1B,OAA0B,wDCA1B,OAA0B,yDCA1B,OAA0B,uECA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,+ECA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,iFCA1B,OAA0B,iFCA1B,OAA0B,iFCA1B,OAA0B,iFCA1B,OAA0B,4FCA1B,OAA0B,4FCA1B,OAA0B,4ECA1B,OAA0B,0GCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,gECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,gECA1B,OAA0B,gECA1B,OAA0B,gECA1B,OAA0B,2DCA1B,OAA0B,+DCA1B,OAA0B,2ECA1B,OAA0B,kECA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,sECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,4ECA1B,OAA0B,4ECA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,2DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,iFCA1B,OAA0B,iFCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,6DCA1B,OAA0B,kECA1B,OAA0B,6DCA1B,OAA0B,qECA1B,OAA0B,wDCA1B,OAA0B,yDCA1B,OAA0B,iDCA1B,OAA0B,iDCA1B,OAA0B,iDCA1B,OAA0B,iDCA1B,OAA0B,iDCA1B,OAA0B,iDCA1B,OAA0B,iDCA1B,OAA0B,iDCA1B,OAA0B,iDCA1B,OAA0B,kDCA1B,OAA0B,+ECA1B,OAA0B,+ECA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,uDCA1B,OAA0B,sDCA1B,OAA0B,iDCA1B,OAA0B,iDCA1B,OAA0B,2DCA1B,OAA0B,0DCA1B,OAA0B,0ECA1B,OAA0B,iECA1B,OAA0B,uDCA1B,OAA0B,yDCA1B,OAA0B,iFCA1B,OAA0B,+ECA1B,OAA0B,gFCA1B,OAA0B,wDCA1B,OAA0B,gECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,kECA1B,OAA0B,4DCA1B,OAA0B,wDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,+DCA1B,OAA0B,gECA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,kFCA1B,OAA0B,4ECA1B,OAA0B,oDCA1B,OAA0B,mDCA1B,OAA0B,mDCA1B,OAA0B,mDCA1B,OAA0B,0DCA1B,OAA0B,mFCA1B,OAA0B,wFCA1B,OAA0B,8ECA1B,OAA0B,wFCA1B,OAA0B,0DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,kECA1B,OAA0B,yECA1B,OAA0B,qECA1B,OAA0B,wDCA1B,OAA0B,sDCA1B,OAA0B,kDCA1B,OAA0B,0ECA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,0ECA1B,OAA0B,0ECA1B,OAA0B,yDCA1B,OAA0B,0DCA1B,OAA0B,+DCA1B,OAA0B,qDCA1B,OAA0B,6DCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,0DCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,6DCA1B,OAA0B,yECA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,2DCA1B,OAA0B,iDCA1B,OAA0B,gDCA1B,OAA0B,gDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,gDCA1B,OAA0B,gDCA1B,OAA0B,+CCA1B,OAA0B,+CCA1B,OAA0B,oDCA1B,OAA0B,kDCA1B,OAA0B,kDCA1B,OAA0B,kDCA1B,OAA0B,kDCA1B,OAA0B,kDCA1B,OAA0B,+CCA1B,OAA0B,+CCA1B,OAA0B,qECA1B,OAA0B,qECA1B,OAA0B,4DCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,+ECA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,kECA1B,OAA0B,qECA1B,OAA0B,sECA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,kDCA1B,OAA0B,kDCA1B,OAA0B,kDCA1B,OAA0B,0DCA1B,OAA0B,2DCA1B,OAA0B,mFCA1B,OAA0B,sDCA1B,OAA0B,sECA1B,OAA0B,6CCA1B,OAA0B,6CCA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,iECA1B,OAA0B,kECA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,kECA1B,OAA0B,kECA1B,OAA0B,wDCA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,gECA1B,OAA0B,gECA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,gECA1B,OAA0B,iECA1B,OAA0B,2ECA1B,OAA0B,4ECA1B,OAA0B,6ECA1B,OAA0B,8ECA1B,OAA0B,8DCA1B,OAA0B,6ECA1B,OAA0B,+DCA1B,OAA0B,8ECA1B,OAA0B,8DCA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,+DCA1B,OAA0B,4ECA1B,OAA0B,qDCA1B,OAA0B,qDCA1B,OAA0B,2DCA1B,OAA0B,4DCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,gECA1B,OAA0B,gECA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,oDCA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,sECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,uECA1B,OAA0B,+CCA1B,OAA0B,0DCA1B,OAA0B,0DCA1B,OAA0B,oDCA1B,OAA0B,oDCA1B,OAA0B,8CCA1B,OAA0B,gDCA1B,OAA0B,mDCA1B,OAA0B,uDCA1B,OAA0B,8CCA1B,OAA0B,8CCA1B,OAA0B,mDCA1B,OAA0B,oDCA1B,OAA0B,iDCA1B,OAA0B,kDCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,mECA1B,OAA0B,mECA1B,OAA0B,oECA1B,OAA0B,oECA1B,OAA0B,wDCA1B,OAA0B,kDCA1B,OAA0B,8ECA1B,OAA0B,8ECA1B,OAA0B,+ECA1B,OAA0B,+ECA1B,OAA0B,sFCA1B,OAA0B,sFCA1B,OAA0B,sFCA1B,OAA0B,sFCA1B,OAA0B,uFCA1B,OAA0B,uFCA1B,OAA0B,uFCA1B,OAA0B,uFCA1B,OAA0B,uECA1B,OAA0B,wECA1B,OAA0B,kECA1B,OAA0B,2DCA1B,OAA0B,uDCA1B,OAA0B,mDCA1B,OAA0B,oDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wDCA1B,OAA0B,wECA1B,OAA0B,wECA1B,OAA0B,yECA1B,OAA0B,yECA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,qECA1B,OAA0B,sECA1B,OAA0B,0DCA1B,OAA0B,yDCA1B,OAA0B,sDCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,6DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,8DCA1B,OAA0B,yDCA1B,OAA0B,8DCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OAA0B,yDCA1B,OAA0B,yDCA1B,OAA0B,wDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,iECA1B,OAA0B,iECA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,sDCA1B,OAA0B,wDCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,4DCA1B,OAA0B,wDCA1B,OAA0B,uDCA1B,OAA0B,uDCA1B,OA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gCv2Fa,IAA0B,oDhCw2FvC,2BiCx2Fa,IAA0B,qDjCy2FvC,8BkCz2Fa,IAA0B,wDlC02FvC,gDmC12Fa,IAA0B,0EnC22FvC,0BoC32Fa,IAA0B,oDpC42FvC,oCqC52Fa,IAA0B,8DrC62FvC,mCsC72Fa,IAA0B,6DtC82FvC,mCuC92Fa,IAA0B,6DvC+2FvC,mCwC/2Fa,IAA0B,6DxCg3FvC,oCyCh3Fa,IAA0B,8DzCi3FvC,oC0Cj3Fa,IAA0B,8D1Ck3FvC,oC2Cl3Fa,IAA0B,8D3Cm3FvC,sB4Cn3Fa,IAA0B,gD5Co3FvC,sB6Cp3Fa,IAA0B,gD7Cq3FvC,sB8Cr3Fa,IAA0B,gD9Cs3FvC,iC+Ct3Fa,IAA0B,2D/Cu3FvC,oCgDv3Fa,IAA0B,8DhDw3FvC,oCiDx3Fa,IAA0B,8DjDy3FvC,qCkDz3Fa,IAA0B,+DlD03FvC,qCmD13Fa,IAA0B,+DnD23FvC,oBoD33Fa,IAA0B,8CpD43FvC,6BqD53Fa,IAA0B,uDrD63FvC,2BsD73Fa,IAA0B,qDtD83FvC,2BuD93Fa,IAA0B,qDvD+3FvC,2BwD/3Fa,IAA0B,qDxDg4FvC,sCyDh4Fa,IAA0B,gEzDi4FvC,iC0Dj4Fa,IAA0B,2D1Dk4FvC,iC2Dl4Fa,IAA0B,2D3Dm4FvC,6B4Dn4Fa,IAA0B,uD5Do4FvC,6B6Dp4Fa,IAA0B,uD7Dq4FvC,6B8Dr4Fa,IAA0B,uD9Ds4FvC,6B+Dt4Fa,IAA0B,uD/Du4FvC,4BgEv4Fa,IAA0B,sDhEw4FvC,4BiEx4Fa,IAA0B,sDjEy4FvC,4BkEz4Fa,IAA0B,sDlE04FvC,4BmE14Fa,IAA0B,sDnE24FvC,4BoE34Fa,IAA0B,sDpE44FvC,wCqE54Fa,IAA0B,kErE64FvC,6BsE74Fa,IAA0B,uDtE84FvC,6BuE94Fa,IAA0B,uDvE+4FvC,6BwE/4Fa,IAA0B,uDxEg5FvC,6ByEh5Fa,IAA0B,uDzEi5FvC,6B0Ej5Fa,IAA0B,uD1Ek5FvC,6B2El5Fa,IAA0B,uD3Em5FvC,0B4En5Fa,IAA0B,oD5Eo5FvC,0B6Ep5Fa,IAA0B,oD7Eq5FvC,0B8Er5Fa,IAA0B,oD9Es5FvC,0B+Et5Fa,IAA0B,oD/Eu5FvC,0BgFv5Fa,IAA0B,oDhFw5FvC,uBiFx5Fa,IAA0B,iDjFy5FvC,uBkFz5Fa,IAA0B,iDlF05FvC,8BmF15Fa,IAA0B,wDnF25FvC,8BoF35Fa,IAA0B,wDpF45FvC,qBqF55Fa,IAA0B,+CrF65FvC,qBsF75Fa,IAA0B,+CtF85FvC,qBuF95Fa,IAA0B,+CvF+5FvC,sBwF/5Fa,IAA0B,gDxFg6FvC,wByFh6Fa,IAA0B,kDzFi6FvC,wB0Fj6Fa,IAA0B,kD1Fk6FvC,wB2Fl6Fa,IAA0B,kD3Fm6FvC,wB4Fn6Fa,IAA0B,kD5Fo6FvC,wB6Fp6Fa,IAA0B,kD7Fq6FvC,wB8Fr6Fa,IAA0B,kD9Fs6FvC,wB+Ft6Fa,IAA0B,kD/Fu6FvC,0DgGv6Fa,IAA0B,oFhGw6FvC,mCiGx6Fa,IAA0B,6DjGy6FvC,mCkGz6Fa,IAA0B,6DlG06FvC,mCmG16Fa,IAA0B,6DnG26FvC,mCoG36Fa,IAA0B,6DpG46FvC,6CqG56Fa,IAA0B,uErG66FvC,yCsG76Fa,IAA0B,mEtG86FvC,oCuG96Fa,IAA0B,8DvG+6FvC,oCwG/6Fa,IAA0B,8DxGg7FvC,oCyGh7Fa,IAA0B,8DzGi7FvC,0C0Gj7Fa,IAA0B,oE1Gk7FvC,qC2Gl7Fa,IAA0B,+D3Gm7FvC,qC4Gn7Fa,IAA0B,+D5Go7FvC,qC6Gp7Fa,IAA0B,+D7Gq7FvC,qC8Gr7Fa,IAA0B,+D9Gs7FvC,qC+Gt7Fa,IAA0B,+D/Gu7FvC,+BgHv7Fa,IAA0B,yDhHw7FvC,+BiHx7Fa,IAA0B,yDjHy7FvC,+BkHz7Fa,IAA0B,yDlH07FvC,+BmH17Fa,IAA0B,yDnH27FvC,+BoH37Fa,IAA0B,yDpH47FvC,+BqH57Fa,IAA0B,yDrH67FvC,4BsH77Fa,IAA0B,sDtH87FvC,8BuH97Fa,IAA0B,wDvH+7FvC,8BwH/7Fa,IAA0B,wDxHg8FvC,8ByHh8Fa,IAA0B,wDzHi8FvC,8B0Hj8Fa,IAA0B,wD1Hk8FvC,8B2Hl8Fa,IAA0B,wD3Hm8FvC,8B4Hn8Fa,IAA0B,wD5Ho8FvC,8B6Hp8Fa,IAA0B,wD7Hq8FvC,8B8Hr8Fa,IAA0B,wD9Hs8FvC,iC+Ht8Fa,IAA0B,2D/Hu8FvC,kCgIv8Fa,IAA0B,4DhIw8FvC,sCiIx8Fa,IAA0B,gEjIy8FvC,qDkIz8Fa,IAA0B,+ElI08FvC,uCmI18Fa,IAA0B,iEnI28FvC,sDoI38Fa,IAA0B,gFpI48FvC,4CqI58Fa,IAA0B,sErI68FvC,yCsI78Fa,IAA0B,mEtI88FvC,0CuI98Fa,IAA0B,oEvI+8FvC,+BwI/8Fa,IAA0B,yDxIg9FvC,+ByIh9Fa,IAA0B,yDzIi9FvC,+B0Ij9Fa,IAA0B,yD1Ik9FvC,+B2Il9Fa,IAA0B,yD3Im9FvC,+B4In9Fa,IAA0B,yD5Io9FvC,+B6Ip9Fa,IAA0B,yD7Iq9FvC,+B8Ir9Fa,IAA0B,yD9Is9FvC,sB+It9Fa,IAA0B,gD/Iu9FvC,sBgJv9Fa,IAA0B,gDhJw9FvC,sBiJx9Fa,IAA0B,gDjJy9FvC,sBkJz9Fa,IAA0B,gDlJ09FvC,sBmJ19Fa,IAA0B,gDnJ29FvC,sBoJ39Fa,IAA0B,gDpJ49FvC,sBqJ59Fa,IAA0B,gDrJ69FvC,yBsJ79Fa,IAA0B,mDtJ89FvC,yBuJ99Fa,IAA0B,mDvJ+9FvC,yBwJ/9Fa,IAA0B,mDxJg+FvC,kCyJh+Fa,IAA0B,4DzJi+FvC,0B0Jj+Fa,IAA0B,oD1Jk+FvC,0B2Jl+Fa,IAA0B,oD3Jm+FvC,0B4Jn+Fa,IAA0B,oD5Jo+FvC,+B6Jp+Fa,IAA0B,yD7Jq+FvC,+B8Jr+Fa,IAA0B,yD9Js+FvC,+B+Jt+Fa,IAA0B,yD/Ju+FvC,+BgKv+Fa,IAA0B,yDhKw+FvC,+BiKx+Fa,IAA0B,yDjKy+FvC,+BkKz+Fa,IAA0B,yDlK0+FvC,sBmK1+Fa,IAA0B,gDnK2+FvC,sBoK3+Fa,IAA0B,gDpK4+FvC,2BqK5+Fa,IAA0B,qDrK6+FvC,2BsK7+Fa,IAA0B,qDtK8+FvC,kCuK9+Fa,IAA0B,4DvK++FvC,mCwK/+Fa,IAA0B,6DxKg/FvC,iCyKh/Fa,IAA0B,2DzKi/FvC,uB0Kj/Fa,IAA0B,iD1Kk/FvC,4B2Kl/Fa,IAA0B,sD3Km/FvC,4C4Kn/Fa,IAA0B,sE5Ko/FvC,iC6Kp/Fa,IAA0B,2D7Kq/FvC,iC8Kr/Fa,IAA0B,2D9Ks/FvC,iC+Kt/Fa,IAA0B,2D/Ku/FvC,iC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","file":"static/js/main.9aa64e7f.chunk.js","sourcesContent":["import {Projection, Transform} from '../redux/projections-slice';\r\nimport {isStaticSite, storage} from \"../electron-modules\";\r\n\r\nexport const unknownProjectionMeters = {\r\n type: 'proj4',\r\n default: true,\r\n units: \"m\",\r\n name: \"unknown-projection-m\",\r\n string: '+proj=utm +zone=10 +ellps=WGS84 +datum=WGS84 +units=m',\r\n} as Projection;\r\n\r\nexport const unknownProjectionFeet = {\r\n type: 'proj4',\r\n default: true,\r\n units: \"ft\",\r\n name: \"unknown-projection-ft\",\r\n string: '+proj=utm +zone=10 +ellps=WGS84 +datum=WGS84 +units=ft',\r\n};\r\n\r\nexport const defaultProjection = {\r\n type: 'proj4',\r\n name: '',\r\n string: ''\r\n} as Projection;\r\n\r\nexport const defaultTransform = {\r\n origin: Array(3).fill(0),\r\n translation: Array(3).fill(0),\r\n rotation: 0,\r\n scale: 1\r\n} as Transform;\r\n\r\nexport const uniqueProjectionID = (text) : string => {\r\n return text.replace(/\\s/g, '.');\r\n};\r\n\r\nclass UserProjections {\r\n public data: Projection[] = [];\r\n private readonly file: string;\r\n\r\n constructor() {\r\n this.file = 'user-projections';\r\n this.load();\r\n }\r\n\r\n exists(name: string) {\r\n const names = this.data.map(x => x.name);\r\n return names.includes(name);\r\n }\r\n\r\n async save(data: Projection) {\r\n if (this.exists(data.name)) return false;\r\n\r\n this.data.push(data);\r\n storage.setSync(this.file, this.data);\r\n\r\n this.load();\r\n return true;\r\n }\r\n\r\n load() {\r\n if (isStaticSite) return {};\r\n let data = storage.getSync(this.file);\r\n this.data = Array.isArray(data) ? data : [];\r\n }\r\n\r\n delete(name: string) {\r\n if (!this.exists(name)) return;\r\n\r\n const rows = this.data.map(x => x.name);\r\n const index = rows.indexOf(name);\r\n this.data.splice(index, 1);\r\n\r\n storage.setSync(this.file, this.data);\r\n this.load();\r\n }\r\n\r\n update(name: string, data: Projection) {\r\n if (!this.exists(name)) return false;\r\n this.delete(name);\r\n return this.save(data);\r\n }\r\n}\r\n\r\nexport const userProjections = new UserProjections();\r\n","import React, {useEffect} from 'react';\r\nimport clsx from 'clsx';\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport {createStyles, makeStyles, Theme} from \"@material-ui/core/styles\";\r\nimport {\r\n userProjections,\r\n defaultProjection,\r\n defaultTransform,\r\n uniqueProjectionID\r\n} from './projections';\r\nimport {useState} from 'react';\r\nimport {\r\n AppBar,\r\n Checkbox,\r\n FormControlLabel,\r\n Grid,\r\n InputAdornment,\r\n InputLabel,\r\n MenuItem,\r\n Select,\r\n Tab,\r\n Tabs,\r\n TextField,\r\n Typography\r\n} from '@material-ui/core';\r\nimport LocalScene, { isValidProjection } from '../viewer/js/projections';\r\nimport {\r\n DropdownWithLabel,\r\n EnhancedTable,\r\n InputWithLabel,\r\n PromptDialog,\r\n TabPanel,\r\n TabProps\r\n} from '../components';\r\nimport { toast } from '../app';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDialog, useUniqueProjectID } from '../hooks';\r\nimport { registerEvent } from '../electron-modules';\r\nimport { useTableState } from '../hooks/use-table-state';\r\nimport { EnhancedTableState } from '../types/enhanced-table';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n title: {\r\n margin: 0,\r\n padding: theme.spacing(1,2,1,2),\r\n },\r\n content: {\r\n padding: theme.spacing(0),\r\n paddingTop: \"0px !important\"\r\n },\r\n titleClose: {\r\n color: \"white\"\r\n },\r\n marginTop: {\r\n marginTop: theme.spacing(2)\r\n },\r\n marginBottom: {\r\n marginBottom: theme.spacing(2)\r\n },\r\n adornedEnd: {\r\n paddingRight: theme.spacing(0)\r\n },\r\n utmParent: {\r\n display: \"flex\"\r\n },\r\n utmZone: {\r\n flex: 2\r\n },\r\n utmButton: {\r\n flex: 1,\r\n marginLeft: theme.spacing(1)\r\n },\r\n button: {\r\n marginTop: theme.spacing(2),\r\n marginLeft: theme.spacing(1)\r\n },\r\n dropdown: {\r\n minWidth: 200,\r\n },\r\n formControl: {\r\n width: '100%'\r\n },\r\n buttonDiv: {\r\n textAlign: \"right\"\r\n },\r\n tabsParent: {\r\n display: \"flex\",\r\n padding: theme.spacing(0, 1)\r\n },\r\n tabsHeaders: {\r\n flex: 1\r\n }\r\n }),\r\n);\r\n\r\ninterface UserProjectionPanelProps {\r\n loadProjectionToEdit: (projectionData, newProjection) => void;\r\n setActiveTab: (value) => void;\r\n tableState: EnhancedTableState;\r\n}\r\n\r\nconst UserProjectionPanel = (props: UserProjectionPanelProps) => {\r\n const {loadProjectionToEdit, setActiveTab, tableState} = props;\r\n const {t} = useTranslation();\r\n\r\n const deleteDialog = useDialog();\r\n\r\n const columns = [\r\n {\r\n id: 'name',\r\n label: t('projections.projection-name'),\r\n searchable: true\r\n },\r\n {\r\n id: 'type',\r\n label: t('projections.projection-type')\r\n },\r\n {\r\n id: 'custom',\r\n label: t('projections.custom-parameters')\r\n },\r\n ];\r\n\r\n // Convert projections to data row\r\n const data = userProjections.data;\r\n\r\n const getRows = () => {\r\n return data.map(option => {\r\n return {\r\n id: uniqueProjectionID(option.name),\r\n name: option.name,\r\n custom: option.transform ? t('general.yes') : t('general.no'),\r\n type: option.type,\r\n disabled: LocalScene.isDataProjection(option.name)\r\n };\r\n });\r\n };\r\n\r\n const onClick = (row) => {\r\n const results = data.filter(x => x.name === row.name);\r\n if (results.length !== 1) {\r\n return;\r\n }\r\n\r\n const projection = results[0];\r\n loadProjectionToEdit(projection, false);\r\n setActiveTab(1);\r\n };\r\n\r\n const onDelete = (row) => {\r\n const results = data.filter(x => x.name === row.name);\r\n if (results.length !== 1) {\r\n return;\r\n }\r\n\r\n // Delete projection + force reload\r\n const projection = results[0];\r\n userProjections.delete(projection.name);\r\n toast.error(t(\"toast.projection-deleted\"));\r\n\r\n // Force projection list refresh\r\n setActiveTab(0);\r\n };\r\n\r\n const rows = getRows();\r\n\r\n const actions = [\r\n {\r\n title: t(\"buttons.delete\"),\r\n icon: ,\r\n onClick: (row) => {\r\n deleteDialog.handleOpen(row);\r\n }\r\n }\r\n ];\r\n\r\n let deletePrompt = \"\";\r\n if (deleteDialog.open) {\r\n deletePrompt = t('projections.do_you_want_to_delete_this_projection_row_name', {\r\n name: deleteDialog.data.name\r\n });\r\n }\r\n\r\n return (\r\n \r\n
\r\n {rows.length === 0 && (\r\n {t('projections.no-user-projections-have-been-added')}\r\n )}\r\n\r\n {(rows.length > 0) && ()}\r\n
\r\n\r\n {/* Delete Dialog */}\r\n {\r\n onDelete(deleteDialog.data);\r\n deleteDialog.handleClose();\r\n }}\r\n title={t(\"enhanced-table.prompt-delete-title\")}\r\n prompt={deletePrompt}\r\n button={t('buttons.delete')}\r\n />\r\n\r\n
\r\n );\r\n};\r\n\r\ninterface EditPanelProps {\r\n setActiveTab: (value) => void;\r\n customProjection: any;\r\n hasTransform: boolean;\r\n newProjection: boolean;\r\n existingName: string;\r\n updateEditableValues: (values) => void\r\n setHasTransform: React.Dispatch;\r\n}\r\n\r\nconst EditPanel = (props: EditPanelProps) => {\r\n const {customProjection, updateEditableValues,\r\n hasTransform, setHasTransform,\r\n newProjection, setActiveTab, existingName} = props;\r\n\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n\r\n const name = customProjection.name;\r\n const type = customProjection.type;\r\n const projString = customProjection.string;\r\n\r\n const transform = customProjection.transform;\r\n const origin = transform.origin;\r\n const translate = transform.translation;\r\n const rotation = transform.rotation;\r\n const scale = transform.scale;\r\n\r\n const handleChecked = (event) => {\r\n setHasTransform(event.target.checked);\r\n };\r\n\r\n const saveProjection = () => {\r\n // Create copy of our data\r\n let data = JSON.parse(JSON.stringify(customProjection));\r\n\r\n // Use trimmed versions of name and string\r\n data.name = nameTrim;\r\n data.string = stringTrim;\r\n\r\n if (!hasTransform) {\r\n delete data.transform;\r\n }\r\n\r\n const nameChanged = data.name !== existingName;\r\n const duplicateName = userProjections.exists(data.name);\r\n\r\n // Check for duplicates if our name has changed\r\n if (nameChanged && duplicateName) {\r\n toast.error(t(\"toast.projection-duplicate\"));\r\n return;\r\n }\r\n\r\n // Check for valid projection string\r\n let validProjection = isValidProjection(projString);\r\n if (!validProjection) {\r\n toast.error(t(\"toast.projection-invalid\"));\r\n return;\r\n }\r\n\r\n const success = newProjection\r\n ? userProjections.save(data)\r\n : userProjections.update(existingName, data);\r\n\r\n if (!success) return;\r\n\r\n if (newProjection) {\r\n toast.success(t(\"toast.projection-added\"));\r\n } else {\r\n toast.success(t(\"toast.projection-updated\"));\r\n }\r\n\r\n setActiveTab(0);\r\n };\r\n\r\n // Remove excess whitespace from name and string\r\n let nameTrim = name.trim();\r\n let stringTrim = projString.trim();\r\n\r\n let originXError = origin[0] === \"\";\r\n let originYError = origin[1] === \"\";\r\n let originZError = origin[2] === \"\";\r\n\r\n let translateXError = translate[0] === \"\";\r\n let translateYError = translate[1] === \"\";\r\n let translateZError = translate[2] === \"\";\r\n\r\n let rotationError = rotation === \"\";\r\n let scaleError = scale === \"\";\r\n\r\n let canSubmit = (nameTrim !== \"\")\r\n && stringTrim !== \"\";\r\n\r\n if (hasTransform) {\r\n canSubmit = canSubmit\r\n && !originXError\r\n && !originYError\r\n && !originZError\r\n && !translateXError\r\n && !translateYError\r\n && !translateZError\r\n && !rotationError\r\n && !scaleError;\r\n }\r\n\r\n const updateType = (value) => {\r\n // Update projection type and clear projection string\r\n updateEditableValues({\r\n 'type': value,\r\n 'string': \"\"\r\n });\r\n };\r\n\r\n const updateName = (value) => {\r\n updateEditableValues({\"name\": value});\r\n };\r\n\r\n const updateString = (value) => {\r\n let string = (customProjection['type'] === \"epsg\")\r\n ? `EPSG:${value}`\r\n : value;\r\n\r\n updateEditableValues({\"string\": string});\r\n };\r\n\r\n const updateOrigin = (event, index) => {\r\n const value = parseFloat(event.target.value);\r\n let transform = customProjection.transform;\r\n transform['origin'][index] = isNaN(value) ? \"\" : value;\r\n\r\n updateEditableValues({\r\n \"transform\":transform\r\n });\r\n };\r\n\r\n const updateTranslation = (event, index) => {\r\n const value = parseFloat(event.target.value);\r\n let transform = customProjection.transform;\r\n transform['translation'][index] = isNaN(value) ? \"\" : value;\r\n\r\n updateEditableValues({\r\n \"transform\":transform\r\n });\r\n };\r\n\r\n const updateScale = (event) => {\r\n const value = parseFloat(event.target.value);\r\n let transform = customProjection.transform;\r\n transform['scale'] = isNaN(value) ? \"\" : value;\r\n\r\n updateEditableValues({\r\n \"transform\":transform\r\n });\r\n };\r\n\r\n const updateRotation = (event) => {\r\n let value = parseFloat(event.target.value);\r\n let transform = customProjection.transform;\r\n transform['rotation'] = isNaN(value) ? \"\" : value;\r\n\r\n updateEditableValues({\r\n \"transform\":transform\r\n });\r\n };\r\n\r\n return (\r\n
\r\n\r\n \r\n\r\n {/** Projection Type */}\r\n \r\n \r\n \r\n\r\n {/** Projection Name */}\r\n \r\n \r\n \r\n\r\n {/** Projection string (proj4) */}\r\n {type===\"proj4\" && (\r\n \r\n )}\r\n\r\n {/** Projection string (WKT) */}\r\n {type===\"wkt\" && (\r\n \r\n )}\r\n\r\n \r\n\r\n \r\n }\r\n label={t('projections.additional-parameters')}\r\n />\r\n\r\n {hasTransform && (\r\n {/* Origin */}\r\n \r\n \r\n {\r\n updateOrigin(e, 0);\r\n }}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n error={originXError}\r\n />\r\n \r\n\r\n \r\n {\r\n updateOrigin(e, 1);\r\n }}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n error={originYError}\r\n />\r\n \r\n\r\n \r\n {\r\n updateOrigin(e, 2);\r\n }}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n error={originZError}\r\n />\r\n \r\n \r\n\r\n {/* Translation */}\r\n \r\n \r\n {\r\n updateTranslation(e, 0);\r\n }}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n error={translateXError}\r\n />\r\n \r\n\r\n \r\n {\r\n updateTranslation(e, 1);\r\n }}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n error={translateYError}\r\n />\r\n \r\n\r\n \r\n {\r\n updateTranslation(e, 2);\r\n }}\r\n InputLabelProps={{\r\n shrink: true,\r\n }}\r\n error={translateZError}\r\n />\r\n \r\n \r\n\r\n {/* Rotation and scaling */}\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n )}\r\n\r\n
\r\n {!newProjection && ( {\r\n setActiveTab(0);\r\n }}\r\n className={classes.button}\r\n >\r\n {t(\"buttons.cancel\")}\r\n )}\r\n\r\n \r\n {newProjection ? t('projections.add-projection') : t('projections.save-changes')}\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\ninterface SearchPanelProps {\r\n loadProjectionToEdit: (projectionData, newProjection) => void;\r\n setActiveTab: (value) => void;\r\n tableState: EnhancedTableState;\r\n}\r\n\r\nconst SearchPanel = (props: SearchPanelProps) => {\r\n const {tableState, setActiveTab, loadProjectionToEdit} = props;\r\n\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n\r\n const [type, setType] = useState(\"text\");\r\n const [searchTerm, setSearchTerm] = useState(\"\");\r\n const [hemisphere, setHemisphere] = useState(\"N\");\r\n const [searching, setSearching] = useState(false);\r\n const [searchResults, setSearchResults] = useState([]);\r\n\r\n const handleChange = (event) => {\r\n setType(event.target.value);\r\n };\r\n\r\n const handleHemisphere = (event) => {\r\n setHemisphere(event.target.value);\r\n };\r\n\r\n const handleString = (event) => {\r\n setSearchTerm(event.target.value);\r\n };\r\n\r\n const searchOnline = () => {\r\n if (searchTerm === \"\") {\r\n return;\r\n }\r\n\r\n let value = searchTerm;\r\n if (type === \"utm\") {\r\n value = `utm ${value}${hemisphere}`;\r\n }\r\n\r\n tableState.reset();\r\n getProjections(value);\r\n };\r\n\r\n const getProjections = (searchText, pageNumber = 1, previousResults = [], maxPageNumber = 10) => {\r\n if (pageNumber === 1) {\r\n setSearchResults([]);\r\n setSearching(true);\r\n }\r\n\r\n const text = type !== \"epsg\" ?\r\n `${searchText} kind:PROJCRS` :\r\n searchText;\r\n\r\n const url = \"https://epsg.io/?q=\" + text + \"&format=json&page=\" + pageNumber;\r\n\r\n fetch(url)\r\n .then(response => response.json())\r\n .then(data => {\r\n const results = data.results;\r\n const parsed = [];\r\n\r\n results.forEach(result => {\r\n if (type === \"epsg\") {\r\n if (result.code !== searchText) {\r\n return;\r\n }\r\n }\r\n\r\n if (result.proj4 === \"\") {\r\n return;\r\n }\r\n\r\n parsed.push(result);\r\n });\r\n\r\n const combined = [...previousResults, ...parsed];\r\n setSearchResults(combined);\r\n\r\n if ((results.length > 0) && (pageNumber < maxPageNumber)) {\r\n setTimeout(() =>{\r\n getProjections(searchText, pageNumber + 1, combined);\r\n }, 250);\r\n } else {\r\n setSearching(false);\r\n }\r\n });\r\n };\r\n\r\n const onClick = (row) => {\r\n loadProjectionToEdit({\r\n type: \"proj4\",\r\n name: row.name,\r\n string: row.proj4\r\n }, true);\r\n setActiveTab(1);\r\n };\r\n\r\n const getRows = () => {\r\n return searchResults.map(projection => {\r\n return {\r\n id: uniqueProjectionID(projection.name),\r\n name: projection.name as string,\r\n epsg: parseInt(projection.code),\r\n proj4: projection.proj4 as string,\r\n };\r\n });\r\n };\r\n\r\n const columns = [\r\n {\r\n id: 'name',\r\n label: t('projections.name')\r\n },\r\n {\r\n id: 'epsg',\r\n label: t('projections.epsg'),\r\n numeric: true\r\n },\r\n {\r\n id: 'proj4',\r\n label: t('projections.proj4-string')\r\n },\r\n ];\r\n\r\n const rows = getRows();\r\n\r\n return (\r\n
\r\n {/* Search Type */}\r\n
\r\n \r\n {t('projections.search-type')}\r\n \r\n \r\n {t('projections.text')}\r\n {t('projections.utm-zone')}\r\n {t('projections.epsg-code')}\r\n \r\n
\r\n\r\n {/* UTM Zone */}\r\n {type===\"utm\" && (
\r\n \r\n {t('projections.utm-zone')}\r\n \r\n }}\r\n className={clsx(classes.marginTop, classes.utmZone)}\r\n />\r\n\r\n \r\n {t('directions.north')}\r\n {t('directions.south')}\r\n \r\n\r\n
)}\r\n\r\n {/* EPSG Code */}\r\n {type===\"epsg\" && (EPSG:,\r\n }}\r\n className={classes.marginTop}\r\n />)}\r\n\r\n {/* Text Search */}\r\n {type===\"text\" && ()}\r\n\r\n {/* Search button */}\r\n
\r\n \r\n {searching ? t('projections.searching-epsg-io') : t('projections.search-online')}\r\n \r\n
\r\n\r\n {/* Results table */}\r\n {(rows.length > 0) && }\r\n
\r\n );\r\n};\r\n\r\ninterface StyledPanelProps {\r\n value: number;\r\n index: number;\r\n children: React.ReactNode;\r\n}\r\n\r\nconst StyledPanel = (props: StyledPanelProps) => {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport const ProjectionsManager = () => {\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n const uniqueProjectID = useUniqueProjectID();\r\n const projectionsDialog = useDialog();\r\n\r\n // Must be defined here to persist (dialog is not mounted)\r\n const userTableState = useTableState({defaultSort: \"name\"});\r\n const searchTableState = useTableState();\r\n\r\n const [existingName, setExistingName] = useState(\"\");\r\n const [newProjection, setNewProjection] = useState(false);\r\n const [activeTab, setTabValue] = useState(0);\r\n const [customProjection, setCustomProjection] = useState({});\r\n const [hasTransform, setHasTransform] = useState(false);\r\n\r\n const setActiveTab = (value) => {\r\n if (value === 0) {\r\n clearProjectionValues();\r\n }\r\n\r\n setTabValue(value);\r\n };\r\n\r\n const updateEditableValues = (newValues) => {\r\n const combined = {...customProjection, ...newValues};\r\n setCustomProjection(combined);\r\n };\r\n\r\n const clearProjectionValues = () => {\r\n loadProjectionToEdit(defaultProjection, true);\r\n };\r\n\r\n const loadProjectionToEdit = (projectionData, newProjection) => {\r\n const dataCopy = JSON.parse(JSON.stringify(projectionData));\r\n const hasTransform = dataCopy.hasOwnProperty(\"transform\");\r\n if (!hasTransform) {\r\n const transformCopy = JSON.parse(JSON.stringify(defaultTransform));\r\n dataCopy.transform = transformCopy;\r\n }\r\n\r\n setHasTransform(hasTransform);\r\n setCustomProjection({...dataCopy});\r\n setExistingName(dataCopy.name);\r\n setNewProjection(newProjection);\r\n };\r\n\r\n const handleChange = (event, newactiveTab) => {\r\n setActiveTab(newactiveTab);\r\n };\r\n\r\n useEffect(() => {\r\n /** Close dialog when new project is loaded */\r\n projectionsDialog.handleClose();\r\n }, [uniqueProjectID]);\r\n\r\n useEffect(() => {\r\n registerEvent(\"open-projection-manager\", () => {\r\n projectionsDialog.handleOpen();\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n clearProjectionValues();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!projectionsDialog.open) return;\r\n userProjections.load();\r\n }, [projectionsDialog.open]);\r\n\r\n return (\r\n
\r\n \r\n\r\n \r\n
\r\n \r\n \r\n {newProjection && ()}\r\n {!newProjection && ()}\r\n \r\n \r\n\r\n {/* Close button */}\r\n \r\n \r\n \r\n\r\n
\r\n
\r\n\r\n {/* Existing projections */}\r\n \r\n \r\n \r\n\r\n {/* Custom projections */}\r\n \r\n \r\n \r\n\r\n {/* Online projection search */}\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 1046;","import React from \"react\";\r\nimport {ThemeProvider} from \"@material-ui/core\";\r\nimport {AppWithAuth} from \"./app\";\r\nimport {store} from \"./redux/store\";\r\nimport {Provider} from \"react-redux\";\r\nimport './localization';\r\nimport {\r\n TaskQueueProvider,\r\n ViewerProvider,\r\n ActiveToolProvider,\r\n AuthProvider,\r\n BookmarksProvider\r\n} from \"./providers\";\r\nimport { createTheme } from \"./theme\";\r\nimport { GlobalSettingsProvider } from \"./providers/global-settings-provider\";\r\nimport { WebSocketProvider } from \"./providers/websocket-provider\";\r\n\r\nconst theme = createTheme();\r\n\r\nconst EngineViewer = () => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default EngineViewer;","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport EngineViewer from './engine-viewer';\r\n\r\nReactDOM.render(\r\n ,\r\n document.getElementById('root')\r\n);","import { fse, isCloudSite, isStaticSite } from '../../electron-modules';\r\nimport { isValidURL } from './utilities';\r\n\r\ninterface ByteRange {\r\n first: number\r\n last: number\r\n}\r\n\r\nexport const readFileJSON = (path: string): Promise => {\r\n if (isStaticSite || isCloudSite || isValidURL(path)) {\r\n return readJsonFromURL(path);\r\n } else {\r\n return readJsonElectron(path);\r\n }\r\n};\r\n\r\nexport const readFileText = (path: string): Promise => {\r\n if (isStaticSite || isCloudSite || isValidURL(path)) {\r\n return readTextFromURL(path);\r\n } else {\r\n return readTextElectron(path);\r\n }\r\n};\r\n\r\ninterface FileReadOptions {\r\n byteRange?: ByteRange;\r\n}\r\n\r\nexport const readFileBuffer = (path: string, options: FileReadOptions = {}) => {\r\n if (isStaticSite || isCloudSite || isValidURL(path)) {\r\n return readBufferFromURL(path, options);\r\n } else {\r\n return readBufferElectron(path, options);\r\n }\r\n};\r\n\r\nconst readJsonFromURL = async (path) => {\r\n let headers = {\r\n 'Content-Type': 'application/json'\r\n };\r\n\r\n const response = await fetch(path, {headers});\r\n\r\n if ((response.status === 404) || (response.status === 403)) {\r\n throw new Error(\"File Not Found\");\r\n }\r\n\r\n const data = await response.json();\r\n return data;\r\n};\r\n\r\nconst readJsonElectron = async (path) => {\r\n const data = await fse.readFile(path, 'utf-8');\r\n return JSON.parse(data);\r\n};\r\n\r\nconst readTextFromURL = async (path) => {\r\n let headers = {\r\n 'Content-Type': 'text/html; charset=utf-8'\r\n };\r\n\r\n const response = await fetch(path, {headers});\r\n\r\n if ((response.status === 404) || (response.status === 403)) {\r\n throw new Error(\"File Not Found\");\r\n }\r\n\r\n const data = await response.text();\r\n return data;\r\n};\r\n\r\nconst readTextElectron = async (path) => {\r\n return await fse.readFile(path, 'utf-8');\r\n};\r\n\r\nconst readBufferFromURL = async (path, options: FileReadOptions = {}) : Promise => {\r\n const {byteRange = null} = options;\r\n\r\n let headers = {};\r\n\r\n if (byteRange) {\r\n const first = byteRange.first;\r\n const last = byteRange.last - 1;\r\n headers['Content-Type'] = 'multipart/byteranges';\r\n headers['Range'] = `bytes=${first}-${last}`;\r\n }\r\n\r\n const response = await fetch(path, {headers});\r\n\r\n if ((response.status === 404) || (response.status === 403)) {\r\n throw new Error(\"File Not Found\");\r\n }\r\n\r\n const data = await response.arrayBuffer();\r\n\r\n if (byteRange) {\r\n const bytesRequested = byteRange.last - byteRange.first;\r\n if (data.byteLength !== bytesRequested) {\r\n throw new Error(\"Invalid number of bytes read\");\r\n }\r\n }\r\n\r\n if (data.byteLength === 0) {\r\n throw new Error(\"File Not Found\");\r\n }\r\n\r\n return data;\r\n};\r\n\r\nconst readBufferElectron = async (path, options: FileReadOptions = {}) : Promise => {\r\n const {byteRange = null} = options;\r\n\r\n if (byteRange) {\r\n const byteLength = byteRange.last - byteRange.first;\r\n const tmpBuffer = Buffer.alloc(byteLength);\r\n\r\n const file = await fse.open(path, \"r\");\r\n const {buffer, bytesRead} = await fse.read(\r\n file, tmpBuffer, 0, byteLength, byteRange.first);\r\n fse.close(file);\r\n\r\n if (bytesRead === 0) {\r\n throw new Error(\"No bytes read\");\r\n }\r\n\r\n return buffer.buffer;\r\n } else {\r\n const data = await fse.readFile(path);\r\n return data.buffer;\r\n }\r\n};\r\n","/* eslint-disable react-hooks/rules-of-hooks */\r\nimport React, { createContext, useEffect, useState } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { toast } from \"../app\";\r\nimport { isCloudSite, isElectronApp } from \"../electron-modules\";\r\nimport { getLocalizedURL } from \"../localization\";\r\nimport { engineCloudURL, openExternalLink, redirectToLogin } from \"../urls\";\r\nimport SuperTokens from \"supertokens-web-js\";\r\nimport { AccessType } from \"../types/project\";\r\nimport Session from \"supertokens-web-js/recipe/session\";\r\nimport EmailPassword from \"supertokens-web-js/recipe/emailpassword\";\r\nimport {signOut as stSignOut} from \"supertokens-web-js/lib/build/recipe/emailpassword\";\r\nimport { useWebSockets } from \"../hooks\";\r\nimport { ProviderProps } from \"./props\";\r\n\r\ninterface User {\r\n id: string;\r\n email: string;\r\n firstName: string;\r\n lastName: string;\r\n}\r\n\r\ninterface ProjectPermissions {\r\n type: AccessType;\r\n access: boolean;\r\n create: boolean;\r\n delete: boolean;\r\n edit: boolean;\r\n}\r\n\r\nconst appCodeRefreshRate = 2000;\r\nconst appCodeMaxAttempts = 100;\r\nconst originalFetch = fetch;\r\n\r\nexport const asyncTimeout = (ms) => {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n};\r\n\r\nclass AuthHandler {\r\n public locked = false;\r\n private accessTokenKey = \"st-access-token\"\r\n private refreshTokenKey = \"st-refresh-token\"\r\n\r\n get accessToken() {\r\n return localStorage.getItem(this.accessTokenKey);\r\n }\r\n\r\n get refreshToken() {\r\n return localStorage.getItem(this.refreshTokenKey);\r\n }\r\n\r\n clearTokens() {\r\n localStorage.removeItem(this.accessTokenKey);\r\n localStorage.removeItem(this.refreshTokenKey);\r\n }\r\n\r\n checkForKey(headers, tokenKey: string) {\r\n if (!headers.has(tokenKey)) return;\r\n const token = headers.get(tokenKey);\r\n localStorage.setItem(tokenKey, token);\r\n }\r\n\r\n updateTokens(headers) {\r\n this.checkForKey(headers, this.accessTokenKey);\r\n this.checkForKey(headers, this.refreshTokenKey);\r\n }\r\n\r\n async wait() {\r\n while (this.locked) {\r\n await asyncTimeout(100);\r\n }\r\n }\r\n\r\n async fetch(input: string, init: RequestInit) {\r\n const {headers = {}, ...others} = init;\r\n\r\n const response = await originalFetch(input, {\r\n headers: {\r\n 'Authorization': `Bearer ${this.accessToken}`,\r\n ...headers,\r\n },\r\n ...others\r\n });\r\n\r\n return response;\r\n }\r\n\r\n async update() {\r\n this.locked = true;\r\n\r\n const url = `${engineCloudURL}/auth/session/refresh`;\r\n\r\n const response = await originalFetch(url, {\r\n method: \"POST\",\r\n headers: {\r\n 'rid': 'session',\r\n 'Authorization': `Bearer ${this.refreshToken}`\r\n }\r\n });\r\n\r\n let success = response.status === 200;\r\n\r\n if (success) {\r\n this.updateTokens(response.headers);\r\n }\r\n\r\n this.locked = false;\r\n\r\n return success;\r\n }\r\n}\r\n\r\nconst handler = new AuthHandler();\r\n\r\nconst initCustomFetch = () => {\r\n const customFetch = async (input: string, init: RequestInit = {}) => {\r\n if (!input.includes(engineCloudURL)) {\r\n return originalFetch(input, init);\r\n }\r\n\r\n if (handler.locked) {\r\n await handler.wait();\r\n }\r\n\r\n const response = await handler.fetch(input, init);\r\n\r\n if (response.status !== 401) {\r\n return response;\r\n }\r\n\r\n if (handler.locked) {\r\n return customFetch(input, init);\r\n }\r\n\r\n const updated = await handler.update();\r\n\r\n if (updated) {\r\n return customFetch(input, init);\r\n } else {\r\n throw new Error(\"Unauthorized\");\r\n }\r\n };\r\n\r\n window['fetch'] = customFetch;\r\n};\r\n\r\nconst initSuperTokens = () => {\r\n SuperTokens.init({\r\n appInfo: {\r\n appName: \"Solv3D Engine Cloud\",\r\n apiDomain: window.location.origin,\r\n apiBasePath: \"/auth\"\r\n },\r\n recipeList: [\r\n Session.init(),\r\n EmailPassword.init(),\r\n ]\r\n });\r\n};\r\n\r\nconst initialUserState = {\r\n id: null,\r\n email: null,\r\n firstName: null,\r\n lastName: null\r\n} as User;\r\n\r\nconst adminPermissions = {\r\n type: AccessType.Admin,\r\n access: true,\r\n create: true,\r\n delete: true,\r\n edit: true\r\n} as ProjectPermissions;\r\n\r\nconst emptyPermissions = {\r\n type: AccessType.ViewOnly,\r\n access: false,\r\n create: false,\r\n delete: false,\r\n edit: false\r\n} as ProjectPermissions;\r\n\r\nexport const AuthContext = createContext({\r\n user: null as User,\r\n permissions: null as ProjectPermissions,\r\n loggedIn: false,\r\n initialized: false,\r\n linkAccount: async () => false,\r\n signOut: () => {},\r\n getAppCode: async (activate: boolean) => null as string,\r\n});\r\n\r\nexport const AuthProvider = (props: ProviderProps) => {\r\n const { i18n, t } = useTranslation();\r\n\r\n const websockets = useWebSockets();\r\n\r\n const [state, setState] = useState({\r\n user: {...initialUserState},\r\n permissions: null,\r\n initialized: false\r\n });\r\n\r\n const linkAccount = async () => {\r\n try {\r\n const appCode = await getAppCode();\r\n const url = getLocalizedURL(\r\n `${engineCloudURL}/link?code=${appCode}`,\r\n i18n.language\r\n );\r\n\r\n openExternalLink(url);\r\n return useAppCode(appCode);\r\n } catch {\r\n toast.error(t('user-account.error_linking_account'));\r\n return false;\r\n }\r\n };\r\n\r\n const signOut = async () => {\r\n if (isCloudSite) {\r\n await stSignOut();\r\n redirectToLogin();\r\n } else {\r\n setState({\r\n ...state,\r\n user: {...initialUserState}\r\n });\r\n\r\n handler.clearTokens();\r\n toast.success(t('user-account.account_unlinked'));\r\n }\r\n\r\n websockets.disconnect();\r\n };\r\n\r\n const getAppCode = async (activate=false) => {\r\n const url = `${engineCloudURL}/api/app_codes/request`;\r\n const response = await fetch(url);\r\n const data = await response.json();\r\n const appCode = String(data.access_code);\r\n\r\n if (activate) {\r\n const url = `${engineCloudURL}/api/app_codes/activate/${appCode}`;\r\n await fetch(url, {method: \"PUT\"});\r\n }\r\n\r\n return appCode;\r\n };\r\n\r\n /** Consume app code until it returns a success code */\r\n const useAppCode = async (appCode: string): Promise => {\r\n if (!appCode) return true;\r\n\r\n return new Promise((resolve, reject) => {\r\n let retryAttempt = 0;\r\n\r\n const interval = setInterval(async () => {\r\n if (retryAttempt >= appCodeMaxAttempts) {\r\n resolve(false);\r\n clearInterval(interval);\r\n toast.error(t('user-account.error_linking_account'));\r\n return;\r\n };\r\n\r\n const url = `${engineCloudURL}/api/app_codes/consume/${appCode}`;\r\n const response = await fetch(url);\r\n const success = response.status === 200;\r\n\r\n if (success) {\r\n handler.updateTokens(response.headers);\r\n await initialize();\r\n toast.success(t('user-account.account_linked'));\r\n clearInterval(interval);\r\n resolve(true);\r\n }\r\n\r\n retryAttempt += 1;\r\n }, appCodeRefreshRate);\r\n });\r\n };\r\n\r\n const getUser = async () : Promise => {\r\n try {\r\n const url = `${engineCloudURL}/api/users/me`;\r\n const response = await fetch(url);\r\n if (response.status !== 200) {\r\n return initialUserState;\r\n }\r\n\r\n const user = await response.json();\r\n return user;\r\n } catch {\r\n return initialUserState;\r\n }\r\n };\r\n\r\n const getPermissions = async () : Promise => {\r\n try {\r\n const url = `${window.location.pathname}/permissions`;\r\n const response = await fetch(url);\r\n if (response.status !== 200) {\r\n return emptyPermissions;\r\n }\r\n\r\n const permissions = await response.json();\r\n return permissions;\r\n } catch {\r\n return emptyPermissions;\r\n }\r\n };\r\n\r\n const initialize = async () => {\r\n const newState = {...state};\r\n\r\n if (isCloudSite || isElectronApp) {\r\n const user = await getUser();\r\n newState.user = {...user};\r\n\r\n await websockets.connect(handler.accessToken);\r\n\r\n if (!user.id) {\r\n handler.clearTokens();\r\n }\r\n }\r\n\r\n if (isCloudSite) {\r\n const permissions = await getPermissions();\r\n newState.permissions = {...permissions};\r\n } else if (isElectronApp) {\r\n newState.permissions = {...adminPermissions};\r\n } else {\r\n newState.permissions = {\r\n ...emptyPermissions,\r\n access: true\r\n };\r\n }\r\n\r\n setState({...newState, initialized: true});\r\n };\r\n\r\n /** Initialize on first load */\r\n useEffect(() => {\r\n initialize();\r\n }, []);\r\n\r\n const {user, permissions, initialized} = state;\r\n const loggedIn = !!user.id;\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\n\r\nif (isCloudSite) {\r\n // Cloud site uses cookie based auth. Fetch function\r\n // is automatically patched with supertokens-web-js\r\n initSuperTokens();\r\n} else if (isElectronApp) {\r\n // Initialize custom header based auth with localStorage.\r\n // Fetch function is patched with a custom implementation\r\n initCustomFetch();\r\n}","import React, { createContext, useState } from \"react\";\r\nimport { ProviderProps } from \"./props\";\r\n\r\nexport const ActiveToolContext = createContext({\r\n activeToolOpen: false,\r\n setActiveToolOpen: (state: boolean) => {}\r\n});\r\n\r\nexport const ActiveToolProvider = (props: ProviderProps) => {\r\n const [activeToolOpen, setActiveToolOpen] = useState(false);\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};","import React from \"react\";\r\nimport { createContext, useState } from \"react\";\r\nimport { Viewer } from \"../viewer/js/main\";\r\nimport { ProviderProps } from \"./props\";\r\n\r\nexport const ViewerContext = createContext({\r\n viewer: null as Viewer,\r\n setViewer: (value: any) => {}\r\n});\r\n\r\nexport const ViewerProvider = (props: ProviderProps) => {\r\n const [viewer, setViewer] = useState(null);\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};","import React, { createContext, useEffect, useState } from \"react\";\r\nimport { nanoid } from \"@reduxjs/toolkit\";\r\nimport { PythonExecutable } from \"../executable\";\r\nimport { useUniqueProjectID } from \"../hooks\";\r\nimport { ProviderProps } from \"./props\";\r\n\r\nexport enum TaskStatus {\r\n Waiting,\r\n Running,\r\n Finished\r\n}\r\n\r\ninterface ExecutableTask {\r\n id: string,\r\n commands: string[],\r\n status: TaskStatus,\r\n exe: PythonExecutable,\r\n onFinish: Function\r\n}\r\n\r\nexport const TaskQueueContext = createContext({\r\n taskQueue: [] as ExecutableTask[],\r\n addRunningTask: (commands: string[], onFinish: Function) => {},\r\n stopRunningTask: (task: string) => {},\r\n clearTaskQueue: () => {}\r\n});\r\n\r\nexport const TaskQueueProvider = (props: ProviderProps) => {\r\n const [taskQueue, setTaskQueue] = useState([]);\r\n const [running, setRunning] = useState(false);\r\n const uniqueProjectID = useUniqueProjectID();\r\n\r\n const runningTask = taskQueue.find(x => x.status === TaskStatus.Running);\r\n\r\n const addRunningTask = (commands: string[], onFinish: Function) => {\r\n const newTask = {\r\n id: nanoid(),\r\n onFinish,\r\n commands,\r\n exe: new PythonExecutable(),\r\n status: TaskStatus.Waiting\r\n } as ExecutableTask;\r\n\r\n setTaskQueue([...taskQueue, newTask]);\r\n };\r\n\r\n const clearTaskQueue = () => {\r\n runningTask?.exe.destroy();\r\n setTaskQueue([]);\r\n setRunning(false);\r\n };\r\n\r\n const stopRunningTask = (taskID: string) => {\r\n const task = taskQueue.find(x => x.id === taskID);\r\n if (!task) return;\r\n\r\n task.exe.destroy();\r\n setRunning(false);\r\n };\r\n\r\n const updateTaskStatus = (taskID, status) => {\r\n const tasks = taskQueue.map(task => {\r\n if (task.id === taskID) {\r\n return {...task, status: status};\r\n }\r\n\r\n return task;\r\n });\r\n\r\n setTaskQueue([...tasks]);\r\n };\r\n\r\n const runAvailableTask = () => {\r\n const availableTasks = taskQueue\r\n .filter(x => x.status === TaskStatus.Waiting);\r\n\r\n if ((availableTasks.length === 0) || runningTask) return;\r\n\r\n const task = availableTasks[0];\r\n setRunning(true);\r\n updateTaskStatus(task.id, TaskStatus.Running);\r\n\r\n task.exe.run({\r\n commands: task.commands,\r\n saveLogs: true,\r\n onClose: async (error) => {\r\n if (error) return;\r\n setRunning(false);\r\n await task.onFinish();\r\n }\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n /** Clear task queue when new project is loaded */\r\n clearTaskQueue();\r\n }, [uniqueProjectID]);\r\n\r\n useEffect(() => {\r\n runAvailableTask();\r\n }, [taskQueue]);\r\n\r\n useEffect(() => {\r\n if (running || !runningTask) return;\r\n updateTaskStatus(runningTask.id, TaskStatus.Finished);\r\n }, [running]);\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n","import React, { useMemo } from \"react\";\r\nimport { createContext } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { toast } from \"../app\";\r\nimport { useViewer } from \"../hooks\";\r\nimport { Bookmark, deleteBookmark, selectAllBookmarks } from \"../redux/bookmarks-slice\";\r\nimport LocalScene from \"../viewer/js/projections\";\r\nimport {isEqual} from 'lodash';\r\nimport { t } from \"i18next\";\r\nimport { selectAllAssets, getVisibleAssets, setVisibleAssets } from \"../redux/assets-slice\";\r\nimport { changeCameraState } from \"../redux/camera-slice\";\r\nimport { updateSettingsState } from \"../redux/settings-slice\";\r\nimport { ProviderProps } from \"./props\";\r\n\r\nexport const BookmarksContext = createContext({\r\n bookmarks: [] as Bookmark[],\r\n loadBookmark: (bookmarkID: string) : boolean => null,\r\n deleteBookmarks: () => {}\r\n});\r\n\r\nexport const BookmarksProvider = (props: ProviderProps) => {\r\n const {viewer} = useViewer();\r\n const dispatch = useDispatch();\r\n\r\n const assets = useSelector(selectAllAssets);\r\n const bookmarks = useSelector(selectAllBookmarks);\r\n\r\n const visibleAssets = useMemo(() => {\r\n return getVisibleAssets(assets);\r\n }, [assets]);\r\n\r\n /**\r\n * Get visible bookmark assets, ignoring assets that have\r\n * been removed from the project\r\n **/\r\n const getValidAssetIDs = (bookmark: Bookmark) => {\r\n const assetIDs = assets.map(asset => asset.id);\r\n return bookmark.visibleAssets.filter(assetID => {\r\n return assetIDs.includes(assetID);\r\n });\r\n };\r\n\r\n const loadBookmark = (bookmarkID: string) => {\r\n if (!viewer) return;\r\n\r\n if (!LocalScene.initialized) {\r\n toast.warning(t('bookmarks.invalid_position'));\r\n return;\r\n }\r\n\r\n const bookmark = bookmarks.find(x => x.id === bookmarkID);\r\n if (!bookmark) return;\r\n\r\n dispatch(updateSettingsState(bookmark.settings));\r\n\r\n viewer.applySavedAerialState(bookmark.aerialState);\r\n\r\n const visibleAssetIDs = visibleAssets.map(asset => asset.id);\r\n const bookmarkAssetIDs = getValidAssetIDs(bookmark);\r\n\r\n visibleAssetIDs.sort();\r\n bookmarkAssetIDs.sort();\r\n\r\n if (isEqual(visibleAssetIDs, bookmarkAssetIDs)) {\r\n // Apply scene state directly\r\n viewer.applySavedSceneState(bookmark.sceneState, true);\r\n } else {\r\n // Set saved scene state and apply new asset visibility\r\n viewer.setInitialStateFlag(false);\r\n dispatch(changeCameraState(bookmark.sceneState));\r\n dispatch(setVisibleAssets(bookmarkAssetIDs));\r\n }\r\n\r\n return true;\r\n };\r\n\r\n const deleteBookmarks = () => {\r\n for (let bookmark of bookmarks) {\r\n dispatch(deleteBookmark(bookmark.id));\r\n }\r\n };\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};","import { useCallback, useState } from 'react';\r\n\r\ninterface DialogController {\r\n open: boolean\r\n data?: any;\r\n handleClose: () => void;\r\n handleOpen: (data?: any) => void;\r\n}\r\n\r\ninterface DialogState {\r\n open: boolean;\r\n data: any;\r\n}\r\n\r\nexport const useDialog = (): DialogController => {\r\n const [state, setState] = useState({\r\n open: false,\r\n data: null\r\n });\r\n\r\n const handleOpen = useCallback((data = null): void => {\r\n setState({\r\n open: true,\r\n data\r\n });\r\n },[]);\r\n\r\n const handleClose = useCallback((): void => {\r\n setState({\r\n open: false,\r\n data: null\r\n });\r\n }, []);\r\n\r\n return {\r\n open: state.open,\r\n data: state.data,\r\n handleClose,\r\n handleOpen\r\n };\r\n};\r\n","import { useContext } from 'react';\r\nimport { TaskQueueContext } from '../providers';\r\n\r\nexport const useTaskQueue = () => useContext(TaskQueueContext);\r\n","import { useContext } from 'react';\r\nimport { ViewerContext } from '../providers';\r\n\r\nexport const useViewer = () => useContext(ViewerContext);\r\n","import { useContext } from 'react';\r\nimport { ActiveToolContext } from '../providers';\r\n\r\nexport const useActiveTool = () => useContext(ActiveToolContext);\r\n","import { useSelector } from \"react-redux\";\r\nimport { selectSessionID } from \"../redux/project-slice\";\r\n\r\n// eslint-disable-next-line react-hooks/rules-of-hooks\r\nexport const useUniqueProjectID = () => useSelector(selectSessionID);\r\n","import type { MutableRefObject } from 'react';\r\nimport { useCallback, useRef, useState } from 'react';\r\n\r\ninterface PopoverController {\r\n anchorRef: MutableRefObject;\r\n handleOpen: () => void;\r\n handleClose: () => void;\r\n handleToggle: () => void;\r\n open: boolean;\r\n}\r\n\r\nexport function usePopover(): PopoverController {\r\n const anchorRef = useRef(null);\r\n const [open, setOpen] = useState(false);\r\n\r\n const handleOpen = useCallback(\r\n (): void => {\r\n setOpen(true);\r\n },\r\n []\r\n );\r\n\r\n const handleClose = useCallback(\r\n (): void => {\r\n setOpen(false);\r\n },\r\n []\r\n );\r\n\r\n const handleToggle = useCallback(\r\n (): void => {\r\n setOpen((prevState) => !prevState);\r\n },\r\n []\r\n );\r\n\r\n return {\r\n anchorRef,\r\n handleClose,\r\n handleOpen,\r\n handleToggle,\r\n open\r\n };\r\n}\r\n","import { useContext } from 'react';\r\nimport { AuthContext } from '../providers';\r\n\r\nexport const useAuth = () => useContext(AuthContext);\r\n","import { useCallback, useState } from 'react';\r\n\r\ninterface ContextStateController {\r\n open: boolean;\r\n data?: any;\r\n anchorPosition: {left: number, top: number};\r\n handleClose(): void;\r\n handleOpen(event, data?): void;\r\n}\r\n\r\ninterface AnchorPosition {\r\n left: number | null;\r\n top: number | null;\r\n}\r\n\r\ninterface ContextState {\r\n open: boolean;\r\n data: any;\r\n anchorPosition: AnchorPosition;\r\n}\r\n\r\nexport const useContextMenu = (): ContextStateController => {\r\n const [state, setState] = useState({\r\n open: false,\r\n data: {},\r\n anchorPosition: undefined\r\n });\r\n\r\n const handleOpen = useCallback((event, data = {}) => {\r\n event.preventDefault();\r\n\r\n const anchorPosition = {\r\n left: event.clientX + 10,\r\n top: event.clientY - 20\r\n };\r\n\r\n setState({\r\n open: true,\r\n data,\r\n anchorPosition\r\n });\r\n },[]);\r\n\r\n const handleClose = useCallback((): void => {\r\n setState({\r\n open: false,\r\n data: {},\r\n anchorPosition: undefined\r\n });\r\n }, []);\r\n\r\n return {\r\n open: state.open,\r\n data: state.data,\r\n anchorPosition: state.anchorPosition,\r\n handleClose,\r\n handleOpen\r\n };\r\n};\r\n","import { useContext } from 'react';\r\nimport { GlobalSettingsContext } from '../providers';\r\n\r\nexport const useGlobalSettings = () => useContext(GlobalSettingsContext);\r\n","import { useContext } from 'react';\r\nimport { WebSocketContext } from '../providers';\r\n\r\nexport const useWebSockets = () => useContext(WebSocketContext);\r\n","import { useContext } from 'react';\r\nimport { BookmarksContext } from '../providers';\r\n\r\nexport const useBookmarks = () => useContext(BookmarksContext);\r\n","import {createSlice, nanoid, PayloadAction} from '@reduxjs/toolkit';\r\nimport api from '../api';\r\nimport {\r\n e57FileFormat,\r\n encompassFileFormat,\r\n potreeFileFormat,\r\n lasFileFormat\r\n} from '../file-extensions';\r\nimport { TagSize } from '../types/tags';\r\nimport { ServerType } from '../types/web-sources';\r\nimport { SceneCameraState } from './camera-slice';\r\n\r\nexport interface PlanarConfig {\r\n width: number;\r\n height: number;\r\n cx: number;\r\n cy: number;\r\n fx: number;\r\n fy: number;\r\n}\r\n\r\nexport interface CameraData {\r\n id: string;\r\n x: number;\r\n y: number;\r\n z: number;\r\n roll: number;\r\n pitch: number;\r\n yaw: number;\r\n path: string;\r\n name: string;\r\n config?: PlanarConfig;\r\n}\r\n\r\nexport interface OrthoData {\r\n imageBounds: [];\r\n imageDataSplit: [];\r\n imageData: string;\r\n imageSize: [number, number];\r\n imageSizeOriginal: [number, number];\r\n imagePath: string;\r\n scaleX: number;\r\n scaleY: number;\r\n}\r\n\r\nexport interface TagItemData {\r\n id: string;\r\n name: string;\r\n comment: string;\r\n date: string;\r\n x: number;\r\n y: number;\r\n z?: number;\r\n sceneState: SceneCameraState;\r\n}\r\n\r\nexport interface TagData {\r\n size: TagSize;\r\n texture: string;\r\n items: TagItemData[];\r\n}\r\n\r\nexport interface LineworkLayerData {\r\n id: string;\r\n name: string;\r\n visible: boolean;\r\n color: string;\r\n}\r\n\r\nexport interface WebMapData {\r\n url: string;\r\n type: ServerType;\r\n public: boolean;\r\n layers: WebMapLayerData[];\r\n}\r\n\r\nexport interface WebMapLayerData {\r\n id: string;\r\n name: string;\r\n visible: boolean;\r\n identifier: string;\r\n}\r\n\r\ninterface XMLAlignment {\r\n id: string;\r\n name: string;\r\n length: number;\r\n staStart: number;\r\n about: string;\r\n geometry: object[];\r\n}\r\n\r\nexport interface XMLData {\r\n info: object;\r\n units: object;\r\n alignments: XMLAlignment[];\r\n enu: boolean;\r\n}\r\n\r\ntype assetData = OrthoData | CameraData[] | TagData\r\n | LineworkLayerData[] | XMLData | WebMapData\r\n\r\n\r\nexport interface Asset {\r\n id: string;\r\n name: string;\r\n path: string;\r\n saved: boolean;\r\n cloud: boolean;\r\n date: string;\r\n visible: boolean;\r\n folderID: string;\r\n type: AssetType;\r\n data: assetData;\r\n}\r\n\r\nexport interface WebSourceAsset extends Asset {\r\n type: AssetType.Webmap;\r\n data: WebMapData;\r\n}\r\n\r\nexport interface AssetInfo {\r\n name: string;\r\n path: string;\r\n folderID: string;\r\n type: AssetType;\r\n data?: assetData;\r\n}\r\n\r\nexport enum AssetType {\r\n LAS = 0,\r\n Encompass = 1,\r\n Panoramic = 2,\r\n Unknown = 3,\r\n OrthoMosaic = 4,\r\n Planar = 5,\r\n E57Points = 6,\r\n Tag = 7,\r\n IFC = 8,\r\n Potree = 9,\r\n SHP = 10,\r\n DXF = 11,\r\n LandXML = 12,\r\n Webmap = 13\r\n}\r\n\r\nexport const pointCloudType = (ext: string): AssetType => {\r\n if (ext === lasFileFormat) {\r\n return AssetType.LAS;\r\n } else if (ext === encompassFileFormat) {\r\n return AssetType.Encompass;\r\n } else if (ext === e57FileFormat) {\r\n return AssetType.E57Points;\r\n } else if (ext === potreeFileFormat) {\r\n return AssetType.Potree;\r\n } else {\r\n return AssetType.Unknown;\r\n }\r\n};\r\n\r\nconst getByID = (state, assetID: string) => {\r\n return state.find(asset => asset.id === assetID);\r\n};\r\n\r\nconst getAssetByTagID = (state, tagID: string): Asset => {\r\n for (let asset of state) {\r\n if (asset.type !== AssetType.Tag) continue;\r\n\r\n const tags = (asset.data as TagData).items;\r\n const tagIDs = tags.map(x => x.id);\r\n if (tagIDs.includes(tagID)) return asset;\r\n }\r\n};\r\n\r\nconst getAssetByWebMapLayerID = (state, layerID: string): Asset => {\r\n for (let asset of state) {\r\n if (asset.type !== AssetType.Webmap) continue;\r\n\r\n const layers = (asset.data as WebMapData).layers;\r\n const layerIDs = layers.map(x => x.id);\r\n if (layerIDs.includes(layerID)) return asset;\r\n }\r\n};\r\n\r\nconst getAssetByModelLayerID = (state, layerID: string): Asset => {\r\n for (let asset of state) {\r\n const isModelWithLayers = (asset.type === AssetType.DXF)\r\n || (asset.type === AssetType.SHP);\r\n if (!isModelWithLayers) continue;\r\n\r\n const layers = asset.data as LineworkLayerData[];\r\n const layerIDs = layers.map(x => x.id);\r\n if (layerIDs.includes(layerID)) return asset;\r\n }\r\n};\r\n\r\nconst getAssetPayload = (item: AssetInfo): Asset => {\r\n return {\r\n id: nanoid(),\r\n name: item.name,\r\n path: item.path,\r\n date: new Date().toISOString(),\r\n type: item.type,\r\n folderID: item.folderID,\r\n visible: true,\r\n saved: false,\r\n cloud: false,\r\n data: item.data\r\n } as Asset;\r\n};\r\n\r\nexport const assetsSlice = createSlice({\r\n name: 'assets',\r\n initialState: [] as Asset[],\r\n reducers: {\r\n addAsset: (state, action: PayloadAction) => {\r\n const asset = getAssetPayload(action.payload);\r\n state.push(asset);\r\n },\r\n addAssets: (state, action: PayloadAction) => {\r\n action.payload.forEach(payload => {\r\n const asset = getAssetPayload(payload);\r\n state.push(asset);\r\n });\r\n },\r\n updateAsset: (state, action: PayloadAction<{\r\n assetID: string,\r\n folderID?: string,\r\n visible?: boolean,\r\n name?: string,\r\n size?: TagSize,\r\n texture?: string,\r\n enu?: boolean\r\n }>) => {\r\n const {assetID, ...updates} = action.payload;\r\n\r\n const asset = getByID(state, assetID);\r\n if (!asset) return;\r\n\r\n for (let key in updates) {\r\n // Generic asset values\r\n if (asset.hasOwnProperty(key)) {\r\n asset[key] = updates[key];\r\n };\r\n\r\n // Data specific values\r\n if (asset.data && asset.data.hasOwnProperty(key)) {\r\n asset.data[key] = updates[key];\r\n };\r\n };\r\n },\r\n deleteAsset: (state, action: PayloadAction) => {\r\n return state.filter(asset => asset.id !== action.payload);\r\n },\r\n\r\n toggleFolderVisibility: (state, action) => {\r\n const {folderID, visible} = action.payload;\r\n const assets = state.filter(asset => asset.folderID === folderID);\r\n\r\n assets.forEach(asset => {\r\n asset.visible = visible;\r\n });\r\n },\r\n setVisibleAssets: (state, action) => {\r\n const visibleAssets = action.payload;\r\n state.forEach(asset => {\r\n asset.visible = visibleAssets.includes(asset.id);\r\n });\r\n },\r\n setVisibleFolder: (state, action) => {\r\n const folderID = action.payload;\r\n state.forEach(asset => {\r\n asset.visible = asset.folderID === folderID;\r\n });\r\n },\r\n setSavedState: (state, action) => {\r\n state.forEach(asset => {\r\n asset.saved = true;\r\n });\r\n },\r\n\r\n /** Model files */\r\n updateModelLayer: (state, action: PayloadAction<{\r\n layerID: string,\r\n visible?: boolean,\r\n color?: string\r\n }>) => {\r\n const {layerID, color, visible} = action.payload;\r\n const asset = getAssetByModelLayerID(state, layerID);\r\n if (!asset) return;\r\n\r\n const layers = asset.data as LineworkLayerData[];\r\n const layer = layers.find(x => x.id === layerID);\r\n if (!layer) return;\r\n\r\n if (\"visible\" in action.payload) {\r\n layer.visible = visible;\r\n }\r\n\r\n if (\"color\" in action.payload) {\r\n layer.color = color;\r\n }\r\n },\r\n\r\n /** Web sources */\r\n updateWebMapLayer: (state, action: PayloadAction<{\r\n layerID: string,\r\n visible: boolean\r\n }>) => {\r\n const {layerID, visible} = action.payload;\r\n const asset = getAssetByWebMapLayerID(state, layerID);\r\n if (!asset) return;\r\n\r\n const layers = (asset.data as WebMapData).layers;\r\n const layer = layers.find(x => x.id === layerID);\r\n if (!layer) return;\r\n\r\n layer.visible = visible;\r\n },\r\n\r\n /** Tag Items */\r\n createTags: (state, action: PayloadAction<{\r\n assetID: string;\r\n tags: TagItemData[];\r\n }>) => {\r\n const {assetID, tags} = action.payload;\r\n\r\n const asset = getByID(state, assetID);\r\n if (!asset) return;\r\n\r\n const items = (asset.data as TagData).items;\r\n\r\n asset.data = {\r\n ...asset.data,\r\n items: [...items, ...tags]\r\n } as TagData;\r\n\r\n // Update cloud site\r\n api.tags.create(assetID, tags);\r\n },\r\n deleteTag: (state, action: PayloadAction) => {\r\n const tagID = action.payload;\r\n const asset = getAssetByTagID(state, tagID);\r\n if (!asset) return;\r\n\r\n const items = (asset.data as TagData).items\r\n .filter(x => x.id !== tagID);\r\n\r\n asset.data = {\r\n ...asset.data,\r\n items\r\n } as TagData;\r\n\r\n // Update cloud site\r\n api.tags.delete(tagID);\r\n },\r\n updateTag: (state, action: PayloadAction<{\r\n tagID: string,\r\n name?: string,\r\n comment?: string,\r\n sceneState?: SceneCameraState\r\n }>) => {\r\n const {tagID, ...updates} = action.payload;\r\n const asset = getAssetByTagID(state, tagID);\r\n if (!asset) return;\r\n\r\n const items = (asset.data as TagData).items;\r\n const tag = items.find(tag => tag.id === tagID);\r\n if (!tag) return;\r\n\r\n for (let key in updates) {\r\n if (tag.hasOwnProperty(key)) {\r\n tag[key] = updates[key];\r\n };\r\n };\r\n\r\n // Update modified date\r\n tag.date = new Date().toISOString();\r\n\r\n // Update cloud site\r\n api.tags.update(tagID, {...updates, date: tag.date});\r\n },\r\n\r\n /** Websocket specific */\r\n wsCreateAsset: (state, action: PayloadAction) => {\r\n const asset = action.payload;\r\n if (getByID(state, asset.id)) return;\r\n\r\n state.push(asset);\r\n },\r\n wsUpdateAsset: (state, action: PayloadAction) => {\r\n const {id, ...updates} = action.payload;\r\n let asset = getByID(state, id);\r\n if (!asset) return;\r\n\r\n for (let key in updates) {\r\n if (asset.hasOwnProperty(key)) {\r\n asset[key] = updates[key];\r\n };\r\n };\r\n },\r\n wsDeleteAsset: (state, action: PayloadAction) => {\r\n const assetID = action.payload;\r\n return state.filter(asset => asset.id !== assetID);\r\n },\r\n }\r\n});\r\n\r\n/** Create new asset */\r\nexport const createAsset = (options: {\r\n name: string;\r\n folderID: string;\r\n path?: string;\r\n type: AssetType;\r\n texture: string;\r\n size: TagSize;\r\n}) => {\r\n const {name, folderID, type, path=null} = options;\r\n\r\n return async (dispatch, getState) => {\r\n\r\n let assetData;\r\n\r\n if (type === AssetType.Tag) {\r\n assetData = {\r\n size: options.size,\r\n texture: options.texture,\r\n items: []\r\n } as TagData;\r\n }\r\n\r\n dispatch(assetsSlice.actions.addAsset({\r\n folderID,\r\n name,\r\n path,\r\n type,\r\n data: assetData\r\n }));\r\n\r\n const assets = getState().assets as Asset[];\r\n const [asset] = assets.slice(-1);\r\n\r\n if (type === AssetType.Tag) {\r\n await api.tags.createCollection(folderID, asset);\r\n }\r\n\r\n return asset;\r\n };\r\n};\r\n\r\n/** Delete asset */\r\nexport const deleteAsset = (assetID: string) => {\r\n return (dispatch, getState) => {\r\n const assets = getState().assets as Asset[];\r\n const asset = assets.find(asset => asset.id === assetID);\r\n if (!asset) return;\r\n\r\n dispatch(assetsSlice.actions.deleteAsset(assetID));\r\n\r\n if (asset.type === AssetType.Tag) {\r\n api.tags.deleteCollection(assetID);\r\n }\r\n };\r\n};\r\n\r\n/** Update asset values */\r\nexport const updateAsset = (options: {\r\n assetID: string,\r\n name?: string,\r\n visible?: boolean,\r\n folderID?: string,\r\n texture?: string,\r\n size?: TagSize,\r\n enu?: boolean\r\n}) => {\r\n const {assetID, ...updates} = options;\r\n\r\n return (dispatch, getState) => {\r\n const assets = getState().assets as Asset[];\r\n const asset = assets.find(asset => asset.id === assetID);\r\n if (!asset) return;\r\n\r\n dispatch(assetsSlice.actions.updateAsset(options));\r\n\r\n if (asset.type === AssetType.Tag) {\r\n api.tags.updateCollection(assetID, updates);\r\n }\r\n };\r\n};\r\n\r\nexport default assetsSlice.reducer;\r\n\r\nexport const {\r\n wsCreateAsset,\r\n wsUpdateAsset,\r\n wsDeleteAsset,\r\n addAsset,\r\n addAssets,\r\n createTags,\r\n setVisibleAssets,\r\n updateWebMapLayer,\r\n updateModelLayer,\r\n toggleFolderVisibility,\r\n updateTag,\r\n setVisibleFolder,\r\n setSavedState,\r\n deleteTag\r\n} = assetsSlice.actions;\r\n\r\nexport const selectAllAssets = state => {\r\n return state.assets as Asset[];\r\n};\r\n\r\nexport const getVisibleAssets = (assets: Asset[]) => {\r\n return assets.filter(asset => asset.visible);\r\n};\r\n\r\nexport const getModelAssets = (assets: Asset[]) => {\r\n return assets.filter(asset => {\r\n return (asset.type === AssetType.IFC)\r\n || (asset.type === AssetType.SHP)\r\n || (asset.type === AssetType.DXF);\r\n });\r\n};\r\n\r\nexport const getTagAssets = (assets: Asset[]) => {\r\n return assets.filter(asset => {\r\n return asset.type === AssetType.Tag;\r\n });\r\n};\r\n\r\nexport const getPointCloudAssets = (assets: Asset[]) => {\r\n return assets.filter(asset => {\r\n return (asset.type === AssetType.Encompass)\r\n || (asset.type === AssetType.LAS)\r\n || (asset.type === AssetType.E57Points)\r\n || (asset.type === AssetType.Potree);\r\n });\r\n};\r\n\r\nexport const getCameraFileAssets = (assets: Asset[]) => {\r\n return assets.filter(asset => {\r\n return asset.type === AssetType.Panoramic\r\n || asset.type === AssetType.Planar;\r\n });\r\n};\r\n\r\nexport const getOrthoAssets = (assets: Asset[]) => {\r\n return assets.filter(asset => {\r\n return asset.type === AssetType.OrthoMosaic;\r\n });\r\n};\r\n\r\nexport const getLandXMLAssets = (assets: Asset[]) => {\r\n return assets.filter(asset => {\r\n return asset.type === AssetType.LandXML;\r\n });\r\n};\r\n\r\nexport const getWebMapAssets = (assets: Asset[]) => {\r\n return assets.filter(asset => {\r\n return asset.type === AssetType.Webmap;\r\n });\r\n};\r\n\r\n","import { useCallback, useState } from \"react\";\r\nimport {\r\n EnhancedTableColumn,\r\n EnhancedTableRow,\r\n EnhancedTableState,\r\n TableSortDir\r\n} from \"../types/enhanced-table\";\r\nimport { debounce } from 'throttle-debounce';\r\n\r\ninterface TableStateProps {\r\n defaultSort?: string;\r\n pageSize?: number;\r\n}\r\n\r\nexport const useTableState = (props: TableStateProps = {}) : EnhancedTableState => {\r\n const {defaultSort, pageSize = 10} = props;\r\n\r\n const [query, setQuery] = useState(\"\");\r\n const [sortDir, setSortDir] = useState('asc');\r\n const [sortBy, setSortBy] = useState(defaultSort);\r\n const [pageNumber, setPageNumber] = useState(0);\r\n const [rowsPerPage, setRowsPerPage] = useState(pageSize);\r\n\r\n const reset = () => {\r\n setQuery(\"\");\r\n setSortDir(\"asc\");\r\n setSortBy(defaultSort);\r\n setPageNumber(0);\r\n setRowsPerPage(pageSize);\r\n };\r\n\r\n const descendingComparator = (a, b, sortBy) => {\r\n let compA = a[sortBy];\r\n let compB = b[sortBy];\r\n\r\n if (typeof compA === \"string\") {\r\n compA = compA.toLowerCase();\r\n }\r\n\r\n if (typeof compB === \"string\") {\r\n compB = compB.toLowerCase();\r\n }\r\n\r\n if (compB < compA) {\r\n return -1;\r\n } else if (compB > compA) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n };\r\n\r\n const getComparator = (sortDir, sortBy) => {\r\n return sortDir === 'desc'\r\n ? (a, b) => descendingComparator(a, b, sortBy)\r\n : (a, b) => -descendingComparator(a, b, sortBy);\r\n };\r\n\r\n const handlePageNumberChange = (event, value) => {\r\n setPageNumber(value);\r\n };\r\n\r\n const handleRowsPerPageChange = (event) => {\r\n const value = parseInt(event.target.value, 10);\r\n setRowsPerPage(value);\r\n setPageNumber(0);\r\n };\r\n\r\n const handleSearchChange = useCallback(debounce(200, (value) => {\r\n setQuery(value);\r\n setPageNumber(0);\r\n }), []);\r\n\r\n const handleRequestSort = (event, value) => {\r\n const ascending = sortBy === value && sortDir === 'asc';\r\n setSortDir(ascending ? 'desc' : 'asc');\r\n setSortBy(value);\r\n };\r\n\r\n const handleSearch = (columns: EnhancedTableColumn[], rows: EnhancedTableRow[]) => {\r\n if (!query) return rows;\r\n\r\n const queryParts = query\r\n .split(\" \")\r\n .map(x => x.toLowerCase());\r\n\r\n const searchableColumns = columns\r\n .filter(column => column.searchable)\r\n .map(column => column.id);\r\n\r\n return rows.filter(row => {\r\n let valid = false;\r\n\r\n searchableColumns.forEach(column => {\r\n if (valid) return;\r\n\r\n const parts = row[column]\r\n .split(\" \")\r\n .map(x => x.toLowerCase());\r\n\r\n valid = valid || queryParts.filter(text => {\r\n return parts.filter(x => x.includes(text)).length > 0;\r\n }).length === queryParts.length;\r\n });\r\n\r\n return valid;\r\n });\r\n };\r\n\r\n const handleSort = (columns: EnhancedTableColumn[], rows: EnhancedTableRow[]) => {\r\n const column = columns.find(column => column.id === sortBy);\r\n if (!column) return rows;\r\n\r\n const comparator = column.sortBy\r\n ? getComparator(sortDir, column.sortBy)\r\n : getComparator(sortDir, sortBy);\r\n\r\n rows.sort(comparator);\r\n return rows;\r\n };\r\n\r\n const handlePages = (rows: EnhancedTableRow[]) => {\r\n return rows.slice(\r\n pageNumber * rowsPerPage,\r\n pageNumber * rowsPerPage + rowsPerPage\r\n );\r\n };\r\n\r\n return {\r\n query,\r\n rowsPerPage,\r\n pageNumber,\r\n sortDir,\r\n sortBy,\r\n handlePageNumberChange,\r\n handleRowsPerPageChange,\r\n handleSearchChange,\r\n handleRequestSort,\r\n handleSearch,\r\n handleSort,\r\n handlePages,\r\n reset\r\n };\r\n};","import proj4 from \"proj4\";\r\nimport nudged from \"nudged\";\r\nimport {transform} from 'ol/proj';\r\nimport {Projection, Transform} from '../../redux/projections-slice';\r\nimport PCA from 'pca-js';\r\nimport { executeWithoutLogging } from \"./utilities\";\r\nimport {\r\n Euler,\r\n MathUtils,\r\n Matrix4,\r\n Quaternion,\r\n Vector3\r\n} from 'three';\r\nimport { AsyncWorkerPool } from \"./worker-pool\";\r\n\r\nconst transformCache = {};\r\n\r\nconst unitsToValue = {\r\n \"m\": 1.0,\r\n \"ft\": 0.3048,\r\n \"us-ft\": 1200.0 / 3937.0\r\n};\r\n\r\nexport const latitudeLongitude = {\r\n type: \"proj4\",\r\n name: \"latlong\",\r\n string: \"+proj=longlat +ellps=WGS84 +datum=NAD83 +no_defs\"\r\n} as Projection;\r\n\r\nexport const webMercator = {\r\n type: \"proj4\",\r\n name: \"web mercator\",\r\n string: \"+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\"\r\n} as Projection;\r\n\r\nconst workerPool = new AsyncWorkerPool(\"reproject-points.js\");\r\n\r\n/** @private */\r\nconst verifyProjection = (info) => {\r\n const data = {\r\n type: info.type,\r\n name: info.name,\r\n string: info.string,\r\n transform: info.transform\r\n } as Projection;\r\n\r\n if (data.type === \"proj4\") {\r\n data.string = verifyProj4String(data);\r\n }\r\n\r\n data.transform = verifyTransformObject(data);\r\n\r\n return data;\r\n};\r\n\r\ninterface TransformFunction {\r\n forward(coords: number[]): number[]\r\n inverse(coords: number[]): number[]\r\n}\r\n\r\n/** @private */\r\nconst getTransform = (projectionFrom: Projection, projectionTo: Projection) => {\r\n const transformKey = `${projectionFrom.string}-${projectionTo.string}`;\r\n\r\n let transform: TransformFunction;\r\n let heightScale: number;\r\n\r\n if (transformKey in transformCache) {\r\n transform = transformCache[transformKey].transform;\r\n heightScale = transformCache[transformKey].heightScale;\r\n } else {\r\n transform = proj4(projectionFrom.string, projectionTo.string);\r\n\r\n const projToMeters1 = projectionToMeters(projectionFrom);\r\n const projToMeters2 = projectionToMeters(projectionTo);\r\n heightScale = projToMeters2 / projToMeters1;\r\n\r\n transformCache[transformKey] = {transform, heightScale};\r\n }\r\n\r\n return {transform, heightScale};\r\n};\r\n\r\n/** Calculate transform paramters given local and transformed points */\r\nexport const estimateTransform = (estimator: string, inputValues, outputValues) => {\r\n const domain = inputValues.map(value => {\r\n return {x: value[0], y: value[1]};\r\n });\r\n\r\n const range = outputValues.map(value => {\r\n return {x: value[0], y: value[1]};\r\n });\r\n\r\n if (!estimator.includes(\"T\")) {\r\n console.error(\"Translation is required for estimator\");\r\n\r\n return {\r\n transform: null,\r\n errors: null\r\n };\r\n }\r\n\r\n const estimate = nudged.estimate({estimator, domain, range});\r\n const scale = nudged.transform.getScale(estimate);\r\n const rotation = nudged.transform.getRotation(estimate);\r\n const translation = nudged.transform.getTranslation(estimate);\r\n const transformed = nudged.point.transformMany(domain, estimate);\r\n\r\n // Calculate per-point difference\r\n const errors = [];\r\n for (let i=0; i => {\r\n return new Promise(async (resolve, reject) => {\r\n const values = {\r\n positions: points,\r\n projectionFrom,\r\n projectionTo\r\n };\r\n\r\n const {success, response} = await workerPool.postMessage(values);\r\n\r\n if (success) {\r\n resolve(response);\r\n } else {\r\n console.error(response);\r\n reject(response);\r\n }\r\n });\r\n};\r\n\r\n/** @private Reproject a single point. Internal use only */\r\nconst reprojectPoint = (position, projectionFrom: Projection, projectionTo: Projection): Vector3 => {\r\n position = position.isVector3\r\n ? position.toArray()\r\n : [...position];\r\n\r\n const rotateAxis = new Vector3(0, 0, 1);\r\n\r\n // Apply initial transformation\r\n if (projectionFrom.transform) {\r\n const {translation, rotation, scale, origin} = projectionFrom.transform;\r\n const angle = MathUtils.degToRad(rotation);\r\n\r\n position = new Vector3(...position)\r\n .sub(new Vector3(...translation))\r\n .applyAxisAngle(rotateAxis, -1 * angle)\r\n .divide(new Vector3(scale, scale, 1.0))\r\n .add(new Vector3(...origin))\r\n .toArray();\r\n }\r\n\r\n // Apply point reprojection\r\n if (projectionFrom.string !== projectionTo.string) {\r\n const {transform, heightScale} = getTransform(projectionFrom, projectionTo);\r\n position = transform.forward(position);\r\n\r\n // Height scaling is not applied by library\r\n position[2] /= heightScale;\r\n }\r\n\r\n // Apply secondary transformation\r\n if (projectionTo.transform) {\r\n const {translation, rotation, scale, origin} = projectionTo.transform;\r\n const angle = MathUtils.degToRad(rotation);\r\n\r\n position = new Vector3(...position)\r\n .sub(new Vector3(...origin))\r\n .multiply(new Vector3(scale, scale, 1.0))\r\n .applyAxisAngle(rotateAxis, angle)\r\n .add(new Vector3(...translation))\r\n .toArray();\r\n }\r\n\r\n return new Vector3(...position);\r\n};\r\n\r\nexport const closestUtmZone = (lonlat: Vector3, units: string) => {\r\n const utmZone = Math.ceil((180 + lonlat.x) / 6);\r\n\r\n const projection = {\r\n type: \"proj4\",\r\n name: `UTM ${utmZone}N (${units})`,\r\n string: `+proj=utm +zone=${utmZone} +ellps=WGS84 +datum=WGS84 +units=${units}`\r\n } as Projection;\r\n\r\n return {projection, utmZone};\r\n};\r\n\r\nclass ScenePointConverter {\r\n protected _sceneShift;\r\n protected _sceneScale;\r\n protected _dataProjection: Projection;\r\n protected _viewProjection: Projection;\r\n public dataToMeters;\r\n public dataProjectionUnits;\r\n public viewProjectionUnits;\r\n private isLonLatProject;\r\n public initialized = false;\r\n\r\n get dataProjection() {\r\n return this._dataProjection;\r\n }\r\n\r\n get viewProjection() {\r\n return this._viewProjection;\r\n }\r\n\r\n get dataProjectionName() {\r\n return this.dataProjection.name;\r\n }\r\n\r\n get viewProjectionName() {\r\n return this.viewProjection.name;\r\n }\r\n\r\n get sceneOffset() {\r\n return this._sceneShift;\r\n }\r\n\r\n get sceneScale() {\r\n return this._sceneScale;\r\n }\r\n\r\n engineStyleProjection(projection: Projection) {\r\n const proj4String = projection.string;\r\n const hasTransform = projection.transform ? true : false;\r\n\r\n let results;\r\n if (hasTransform === false) {\r\n // Standard projection\r\n results = proj4String;\r\n } else {\r\n // Projection with transform (engine style projections are saved differently)\r\n const data = projection.transform;\r\n const origin = data.origin;\r\n const translation = data.translation;\r\n const rotation = data.rotation;\r\n const scale = data.scale;\r\n\r\n const transform = {\r\n origin_east: origin[0],\r\n origin_north: origin[1],\r\n origin_elevation: origin[2],\r\n translation_east: translation[0],\r\n translation_north: translation[1],\r\n translation_elevation: translation[2],\r\n rotation: rotation,\r\n scale_factor_h: scale,\r\n scale_factor_v: 1.0,\r\n };\r\n\r\n results = [proj4String, transform];\r\n }\r\n\r\n const projectionString = JSON.stringify(results);\r\n return projectionString;\r\n }\r\n\r\n isDataProjection(name) {\r\n if (!this._dataProjection) return false;\r\n return (this._dataProjection.name === name) ||\r\n (this._viewProjection.name === name);\r\n }\r\n\r\n setDataProjection(info) {\r\n this._dataProjection = verifyProjection(info);\r\n this.dataToMeters = projectionToMeters(this._dataProjection);\r\n this.dataProjectionUnits = projectionToUnits(this._dataProjection);\r\n this.isLonLatProject = isLonLatProjection(this._dataProjection);\r\n this.resetSceneShift();\r\n }\r\n\r\n setViewProjection(info) {\r\n this._viewProjection = verifyProjection(info);\r\n this.viewProjectionUnits = projectionToUnits(this._viewProjection);\r\n }\r\n\r\n resetSceneShift() {\r\n this.initialized = false;\r\n this._sceneShift = null;\r\n this._sceneScale = new Vector3(1.0, 1.0, 1.0);\r\n }\r\n\r\n checkForOffset(offset: Vector3) {\r\n if (this._sceneShift) return;\r\n\r\n this.initialized = true;\r\n this._sceneShift = offset.clone();\r\n\r\n if (this.isLonLatProject) {\r\n // Create an approximate latlon --> meters mapping based on the\r\n // offset point. Be aware that the accuracy is worse the further\r\n // away from the central point that you go\r\n\r\n let dx = haversineDistance(\r\n new Vector3(offset.x, offset.y, 0),\r\n new Vector3(offset.x + 1, offset.y, 0)\r\n );\r\n\r\n let dy = haversineDistance(\r\n new Vector3(offset.x, offset.y, 0),\r\n new Vector3(offset.x, offset.y + 1, 0)\r\n );\r\n\r\n this._sceneScale = new Vector3(dx, dy, 1.0);\r\n } else {\r\n this._sceneScale = new Vector3(1.0, 1.0, 1.0);\r\n }\r\n }\r\n\r\n offsetToScene(offset) {\r\n this.checkForOffset(offset);\r\n let difference = new Vector3()\r\n .add(offset)\r\n .sub(this._sceneShift);\r\n\r\n return difference;\r\n }\r\n\r\n /** @private Convert from data projection to lonlat */\r\n _dataToLonLat(value) {\r\n return new ProjectedCoordinate(value, this._dataProjection).toLonLat();\r\n }\r\n\r\n /** @private Convert from data projection to aerial coordinates */\r\n _dataToAerial(value) {\r\n const lonLat = this._dataToLonLat(value);\r\n const mercator = reprojectPoint(lonLat, latitudeLongitude, webMercator);\r\n return mercator.toArray().slice(0,2);\r\n }\r\n\r\n /** @private Convert from scene coordinates (meters) to data projection */\r\n _sceneToData(value) {\r\n let position = new Vector3().copy(value);\r\n\r\n if (this.isLonLatProject) {\r\n position.divide(this._sceneScale);\r\n }\r\n\r\n position.add(this._sceneShift)\r\n .divideScalar(this.dataToMeters);\r\n\r\n return position;\r\n }\r\n\r\n /** @private Convert from data projection to scene coordinates (meters) */\r\n _dataToScene(value) {\r\n const position = new Vector3().copy(value)\r\n .multiplyScalar(this.dataToMeters);\r\n\r\n this.checkForOffset(position);\r\n position.sub(this._sceneShift);\r\n\r\n if (this.isLonLatProject) {\r\n position.multiply(this._sceneScale);\r\n }\r\n\r\n return new SceneCoordinate(position);\r\n }\r\n\r\n /** @private Convert from scene coordinates (meters) to web mercator */\r\n _sceneToAerial(value) {\r\n let dataProjection = this._sceneToData(value);\r\n return this._dataToAerial(dataProjection);\r\n }\r\n\r\n /** @private Convert from scene coordinates (meters) to lonlat */\r\n _sceneToLonLat(value) {\r\n let dataProjection = this._sceneToData(value);\r\n return this._dataToLonLat(dataProjection);\r\n }\r\n}\r\n\r\n/** Base Coordinate class is Vector3 with a few extras */\r\nclass Coordinate extends Vector3 {\r\n constructor(value = null) {\r\n let x = 0;\r\n let y = 0;\r\n let z = 0;\r\n\r\n if (value !== null) {\r\n if (value.isVector3 || (value instanceof Coordinate)) {\r\n x = value.x;\r\n y = value.y;\r\n z = value.z;\r\n } else {\r\n x = value[0];\r\n y = value[1];\r\n z = (value.length === 3) ? value[2] : 0;\r\n }\r\n }\r\n\r\n super(x,y,z);\r\n }\r\n\r\n get vector() {\r\n return new Vector3(this.x, this.y, this.z);\r\n }\r\n\r\n clone() {\r\n return new Vector3().copy(this);\r\n }\r\n}\r\n\r\n/** Coordinate in scene coordinates */\r\nexport class SceneCoordinate extends Coordinate {\r\n constructor(value = null) {\r\n super(value);\r\n }\r\n\r\n toAerial() {\r\n return LocalScene._sceneToAerial(this);\r\n }\r\n\r\n toLonLat() {\r\n return LocalScene._sceneToLonLat(this);\r\n }\r\n\r\n toGeocentric() {\r\n const lonlat = LocalScene._sceneToLonLat(this);\r\n return new LonLatCoordinate(lonlat).toGeocentric();\r\n }\r\n\r\n toDataProjection() {\r\n const value = LocalScene._sceneToData(this);\r\n return new DataProjectionCoordinate(value);\r\n }\r\n\r\n toViewProjection() {\r\n return this.toDataProjection().toViewProjection();\r\n }\r\n}\r\n\r\n/** Coordinate in geocentric */\r\nexport class GeocentricCoordinate extends Coordinate {\r\n constructor(value = null) {\r\n super(value);\r\n }\r\n\r\n toDataProjection() {\r\n const value = this.toProjection(LocalScene.dataProjection);\r\n return new DataProjectionCoordinate(value);\r\n }\r\n\r\n toViewProjection() {\r\n const value = this.toProjection(LocalScene.viewProjection);\r\n return new ViewProjectionCoordinate(value);\r\n }\r\n\r\n toScene() {\r\n const value = this.toProjection(LocalScene.dataProjection);\r\n return LocalScene._dataToScene(value);\r\n }\r\n\r\n toLonLat() {\r\n let x = this.x * 1.0;\r\n let y = this.y * 1.0;\r\n let z = this.z * 1.0;\r\n\r\n let a = 6378137; // wgs84\r\n let f = 1 / 298.257223563; // wgs84\r\n\r\n let b = a * (1 - f);\r\n let e = Math.sqrt((Math.pow(a, 2) - Math.pow(b, 2)) / Math.pow(a, 2));\r\n b = Math.sqrt(Math.pow(a, 2) * (1 - Math.pow(e, 2)));\r\n\r\n let ep = Math.sqrt((Math.pow(a, 2) - Math.pow(b, 2)) / Math.pow(b, 2));\r\n let p = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2));\r\n let th = Math.atan2(a * z, b * p);\r\n let lon = Math.atan2(y, x);\r\n let lat = Math.atan2((z + Math.pow(ep, 2) * b * Math.pow(Math.sin(th), 3)),\r\n (p - Math.pow(e, 2) * a * Math.pow(Math.cos(th), 3)));\r\n let N = a / (Math.sqrt(1 - Math.pow(e, 2) * Math.pow(Math.sin(lat), 2)));\r\n let alt = p / Math.cos(lat) - N;\r\n lon = lon % (2 * Math.PI);\r\n\r\n if (Math.abs(x) < 1.0 && Math.abs(y) < 1.0) {\r\n alt = Math.abs(z) - b;\r\n }\r\n\r\n lon = lon * 180.0 / Math.PI;\r\n lat = lat * 180.0 / Math.PI;\r\n\r\n return new Vector3(lon, lat, alt);\r\n }\r\n\r\n toProjection(projection: Projection) {\r\n const lonlat = this.toLonLat();\r\n const value = reprojectPoint(lonlat, latitudeLongitude, projection);\r\n return new ProjectedCoordinate(value, projection);\r\n }\r\n}\r\n\r\n/** Coordinate in generic projection */\r\nexport class ProjectedCoordinate extends Coordinate {\r\n public projection: Projection;\r\n\r\n constructor(value, projection) {\r\n super(value);\r\n this.projection = projection;\r\n }\r\n\r\n toGeocentric() {\r\n const lonlat = this.toLonLat();\r\n return new LonLatCoordinate(lonlat).toGeocentric();\r\n }\r\n\r\n toLonLat() {\r\n return this.toProjection(latitudeLongitude);\r\n }\r\n\r\n toAerial() {\r\n const mercator = this.toProjection(webMercator);\r\n return mercator.toArray().slice(0,2);\r\n }\r\n\r\n toScene() {\r\n const value = this.toProjection(LocalScene.dataProjection);\r\n return LocalScene._dataToScene(value);\r\n }\r\n\r\n toProjection(projection) {\r\n if (this.projection === projection) return this;\r\n\r\n const value = reprojectPoint(this, this.projection, projection);\r\n return new ProjectedCoordinate(value, projection);\r\n }\r\n\r\n toViewProjection() {\r\n const value = this.toProjection(LocalScene.viewProjection);\r\n return new ViewProjectionCoordinate(value);\r\n }\r\n\r\n toDataProjection() {\r\n const value = this.toProjection(LocalScene.dataProjection);\r\n return new DataProjectionCoordinate(value);\r\n }\r\n\r\n distanceTo(value) {\r\n if (value instanceof ProjectedCoordinate) {\r\n let isLonLat1 = isLonLatProjection(this.projection);\r\n let isLonLat2 = isLonLatProjection(value.projection);\r\n if (isLonLat1 && isLonLat2) {\r\n return haversineDistance(this, value);\r\n }\r\n\r\n return this.vector.distanceTo(value.vector);\r\n }\r\n\r\n return this.vector.distanceTo(value);\r\n }\r\n}\r\n\r\n/** Coordinate in web mercator projection */\r\nexport class AerialCoordinate extends ProjectedCoordinate {\r\n constructor(value) {\r\n super(value, webMercator);\r\n }\r\n}\r\n\r\n/** Coordinate in latitude longitude */\r\nexport class LonLatCoordinate extends Coordinate {\r\n constructor(value) {\r\n super(value);\r\n }\r\n\r\n toGeocentric() {\r\n let lon = this.x * Math.PI / 180.0;\r\n let lat = this.y * Math.PI / 180.0;\r\n let alt = this.z;\r\n\r\n let a = 6378137;\r\n let f = 1 / 298.257223563;\r\n\r\n let b = a * (1 - f);\r\n let e = Math.sqrt((Math.pow(a, 2) - Math.pow(b, 2)) / Math.pow(a, 2));\r\n\r\n let N = a / Math.sqrt(1 - Math.pow(e, 2) * Math.pow(Math.sin(lat), 2));\r\n let x = (N + alt) * Math.cos(lat) * Math.cos(lon);\r\n let y = (N + alt) * Math.cos(lat) * Math.sin(lon);\r\n let z = (N * (Math.pow(b, 2) / Math.pow(a, 2)) + alt) * Math.sin(lat);\r\n\r\n return new GeocentricCoordinate([x, y, z]);\r\n }\r\n\r\n toProjection(projection) {\r\n let ecef = this.toGeocentric();\r\n return ecef.toProjection(projection);\r\n }\r\n\r\n toDataProjection() {\r\n let ecef = this.toGeocentric();\r\n return ecef.toDataProjection();\r\n }\r\n}\r\n\r\n/** Coordinate in project data projection */\r\nexport class DataProjectionCoordinate extends ProjectedCoordinate {\r\n constructor(value = null) {\r\n super(value, LocalScene.dataProjection);\r\n }\r\n}\r\n\r\n/** Coordinate in project view projection */\r\nexport class ViewProjectionCoordinate extends ProjectedCoordinate {\r\n constructor(value = null) {\r\n super(value, LocalScene.viewProjection);\r\n }\r\n}\r\n\r\n/** Spherical position, with theta/phi in degrees */\r\nexport class SphericalPosition {\r\n public radius;\r\n private _theta;\r\n private _phi;\r\n private limits;\r\n\r\n constructor() {\r\n this.radius = 0;\r\n this._theta = 0;\r\n this._phi = 0;\r\n this.limits = [0.01, 179.9];\r\n }\r\n\r\n get theta() {\r\n return (this._theta + 360) % 360;\r\n }\r\n\r\n get phi() {\r\n return (this._phi + 360) % 360;\r\n }\r\n\r\n round(value, precision) {\r\n let divisor = Math.pow(10, precision);\r\n return Math.round(value * divisor) / divisor;\r\n }\r\n\r\n fromVectors(pivot, orbit) {\r\n let offset = new Vector3().add(orbit).sub(pivot);\r\n let radius = offset.length();\r\n\r\n let theta = Math.atan2(offset.y, offset.x);\r\n theta = MathUtils.radToDeg(theta);\r\n\r\n let dist2d = Math.sqrt(Math.pow(offset.x, 2) + Math.pow(offset.y, 2));\r\n let phi = Math.atan2(dist2d, offset.z);\r\n phi = MathUtils.radToDeg(phi);\r\n phi = Math.max(this.limits[0], phi);\r\n phi = Math.min(this.limits[1], phi);\r\n\r\n this._theta = this.round(theta, 3);\r\n this._phi = this.round(phi, 3);\r\n this.radius = this.round(radius, 3);\r\n\r\n return this;\r\n }\r\n\r\n fromValues(radius, theta, phi) {\r\n this.radius = radius;\r\n this._theta = theta;\r\n this._phi = phi;\r\n\r\n return this;\r\n }\r\n\r\n toVector3() {\r\n let theta = MathUtils.degToRad(this.theta);\r\n let phi = MathUtils.degToRad(this.phi);\r\n\r\n let x = this.radius * Math.cos(theta) * Math.sin(phi);\r\n let y = this.radius * Math.sin(theta) * Math.sin(phi);\r\n let z = this.radius * Math.cos(phi);\r\n\r\n return new Vector3(x, y, z);\r\n }\r\n}\r\n\r\n/* Utility functions */\r\nexport const isValidProjection = (projectionString) => {\r\n try {\r\n proj4(projectionString);\r\n return true;\r\n } catch {\r\n return false;\r\n }\r\n};\r\n\r\nexport const getEulerInverse = (euler: Euler) => {\r\n let quaternion = new Quaternion();\r\n quaternion.setFromEuler(euler).invert();\r\n return new Euler().setFromQuaternion(quaternion);\r\n};\r\n\r\nexport const geometryToArray = (geometry, projection = null) => {\r\n let polygon = [];\r\n let coordinates = geometry.flatCoordinates;\r\n let totalPoints = coordinates.length / 2.0;\r\n\r\n for (var i = 0; i < totalPoints; i++) {\r\n let x = coordinates[2 * i + 0];\r\n let y = coordinates[2 * i + 1];\r\n let lonlat = transform([x, y, 0], 'EPSG:3857', 'EPSG:4326');\r\n let ecef = new LonLatCoordinate(lonlat).toGeocentric();\r\n\r\n if (projection) {\r\n let point = ecef.toProjection(projection);\r\n polygon.push(point.toArray());\r\n } else {\r\n polygon.push(ecef.toArray());\r\n }\r\n }\r\n\r\n return polygon;\r\n};\r\n\r\nexport const calculateEigenVectors = (vertices) => {\r\n let mean = new Vector3();\r\n vertices.forEach(vertex => {\r\n mean.add(vertex);\r\n });\r\n mean.divideScalar(vertices.length);\r\n\r\n let points = vertices.map(vertex => {\r\n return new Vector3()\r\n .add(vertex)\r\n .sub(mean)\r\n .toArray();\r\n });\r\n\r\n let eigen = executeWithoutLogging(() => {\r\n return PCA.getEigenVectors(points);\r\n });\r\n\r\n return {eigen, mean, points};\r\n};\r\n\r\nexport const calculatePointsPCA = (vertices, returnFlat) => {\r\n let {eigen, points} = calculateEigenVectors(vertices);\r\n\r\n let matrix = new Matrix4();\r\n matrix.makeBasis(\r\n new Vector3().fromArray(eigen[0].vector),\r\n new Vector3().fromArray(eigen[1].vector),\r\n new Vector3().fromArray(eigen[2].vector)\r\n );\r\n matrix.transpose();\r\n\r\n points = points.map(point => {\r\n return new Vector3()\r\n .fromArray(point).applyMatrix4(matrix);\r\n });\r\n\r\n if (returnFlat) {\r\n let pointsFlat = [];\r\n points.forEach(point => {\r\n pointsFlat = [...pointsFlat, ...point.toArray()];\r\n });\r\n points = pointsFlat;\r\n }\r\n\r\n return points;\r\n};\r\n\r\nexport const projectionToUnits = (projection: Projection) => {\r\n const unitLength = projectionToMeters(projection);\r\n\r\n let units;\r\n switch (unitLength) {\r\n case unitsToValue['m']:\r\n units = \"m\";\r\n break;\r\n case unitsToValue['ft']:\r\n units = \"ft\";\r\n break;\r\n case unitsToValue['us-ft']:\r\n units = \"sft\";\r\n break;\r\n default:\r\n units = \"m\";\r\n break;\r\n }\r\n\r\n return units;\r\n};\r\n\r\nexport const projectionToMeters = (projection: Projection) => {\r\n if (!projection) return 1.0;\r\n\r\n const proj = proj4.Proj(projection.string);\r\n\r\n if (projection.type === \"wkt\") {\r\n return proj['UNIT'].convert;\r\n } else if (\"to_meter\" in proj) {\r\n return proj['to_meter'];\r\n } else if (\"units\" in proj) {\r\n const units = proj['units'] as string;\r\n return unitsToValue[units];\r\n }\r\n\r\n return 1.0;\r\n};\r\n\r\nexport const isLonLatProjection = (projection) => {\r\n const proj = proj4.Proj(projection.string);\r\n return proj['projName'] === \"longlat\";\r\n};\r\n\r\nconst haversineDistance = (P1: Vector3, P2: Vector3) => {\r\n let earthRadius = 6371000;\r\n\r\n let diffLat = (P2.y - P1.y) * Math.PI / 180;\r\n let diffLng = (P2.x - P1.x) * Math.PI / 180;\r\n\r\n let arc = Math.cos(P1.y * Math.PI / 180)\r\n * Math.cos(P2.y * Math.PI / 180)\r\n * Math.sin(diffLng / 2) * Math.sin(diffLng / 2)\r\n + Math.sin(diffLat / 2) * Math.sin(diffLat / 2);\r\n let line = 2 * Math.atan2(Math.sqrt(arc), Math.sqrt(1 - arc));\r\n\r\n let distance2d = earthRadius * line;\r\n let height = P2.z - P1.z;\r\n\r\n let distance = Math.pow(distance2d, 2) + Math.pow(height, 2);\r\n distance = Math.sqrt(distance);\r\n\r\n return distance;\r\n};\r\n\r\nconst verifyTransformObject = (data) => {\r\n let transform = data.transform;\r\n if (!transform) {\r\n return null;\r\n }\r\n\r\n if (transform.hasOwnProperty('translation_north')) {\r\n return {\r\n origin: [\r\n transform.origin_east,\r\n transform.origin_north,\r\n transform.origin_elevation ? transform.origin_elevation : 0\r\n ],\r\n translation: [\r\n transform.translation_east,\r\n transform.translation_north,\r\n transform.translation_elevation\r\n ],\r\n scale: transform.scale_factor_h,\r\n rotation: transform.rotation\r\n } as Transform;\r\n }\r\n\r\n return Object.assign({}, transform);\r\n};\r\n\r\nconst verifyProj4String = (projection) => {\r\n let string = projection.string;\r\n\r\n // longlat projection is returned directly\r\n if (isLonLatProjection(projection)) {\r\n return string;\r\n }\r\n\r\n // Return EPSG codes directly\r\n if (string.toUpperCase().indexOf(\"EPSG\") === 0) {\r\n return string;\r\n }\r\n\r\n // Add missing fields\r\n if (string.indexOf(\"y_0\") === -1) {\r\n string = string + \" +y_0=0\";\r\n }\r\n\r\n if (string.indexOf(\"x_0\") === -1) {\r\n string = string + \" +x_0=0\";\r\n }\r\n\r\n if (string.indexOf(\"lon_0\") === -1) {\r\n string = string + \" +lon_0=0\";\r\n }\r\n\r\n if (string.indexOf(\"lat_0\") === -1) {\r\n string = string + \" +lat_0=0\";\r\n }\r\n\r\n string = string.split(\" +\").join(\" \");\r\n string = string.split(\" \").join(\" +\");\r\n if (string[0] !== \"+\") {\r\n string = \"+\" + string;\r\n }\r\n\r\n return string;\r\n};\r\n\r\nconst LocalScene = new ScenePointConverter();\r\nexport default LocalScene;\r\n","import {createSlice, nanoid, PayloadAction} from '@reduxjs/toolkit';\r\nimport api from '../api';\r\nimport { AerialViewState, SceneCameraState } from './camera-slice';\r\nimport { SettingsState } from './settings-slice';\r\n\r\nexport interface Bookmark {\r\n id: string;\r\n name: string;\r\n date: string;\r\n position: number[];\r\n visible: boolean;\r\n visibleAssets: string[],\r\n settings: SettingsState;\r\n aerialState: AerialViewState;\r\n sceneState: SceneCameraState;\r\n}\r\n\r\nconst getByID = (state, bookmarkID: string) => {\r\n return state.find(bookmark => bookmark.id === bookmarkID);\r\n};\r\n\r\nexport const bookmarksSlice = createSlice({\r\n name: 'bookmarks',\r\n initialState: [] as Bookmark[],\r\n reducers: {\r\n createBookmark: (state, action: PayloadAction<{\r\n name: string,\r\n position: number[],\r\n visibleAssets: string[],\r\n settings: SettingsState,\r\n aerialState: AerialViewState,\r\n sceneState: SceneCameraState\r\n }>) => {\r\n const attributes = action.payload;\r\n\r\n const bookmark = {\r\n id: nanoid(),\r\n date: new Date().toISOString(),\r\n visible: true,\r\n ...attributes\r\n };\r\n\r\n state.push(bookmark);\r\n\r\n // Update cloud site\r\n api.bookmarks.create(bookmark);\r\n },\r\n updateBookmark: (state, action: PayloadAction<{\r\n bookmarkID: string,\r\n name?: string,\r\n position?: number[],\r\n visible?: boolean,\r\n visibleAssets?: string[],\r\n settings?: SettingsState,\r\n aerialState?: AerialViewState,\r\n sceneState?: SceneCameraState;\r\n }>) => {\r\n const {bookmarkID, ...updates} = action.payload;\r\n\r\n const bookmark = getByID(state, bookmarkID);\r\n if (!bookmark) return;\r\n\r\n for (let key in updates) {\r\n if (bookmark.hasOwnProperty(key)) {\r\n bookmark[key] = updates[key];\r\n };\r\n };\r\n\r\n // Update modified date\r\n bookmark.date = new Date().toISOString();\r\n\r\n // Update cloud site\r\n api.bookmarks.update(bookmarkID, {...updates, date: bookmark.date});\r\n },\r\n deleteBookmark: (state, action: PayloadAction) => {\r\n const bookmarkID = action.payload;\r\n const modified = state.filter(bookmark => bookmark.id !== bookmarkID);\r\n\r\n // Update cloud site\r\n api.bookmarks.delete(bookmarkID);\r\n\r\n return modified;\r\n },\r\n\r\n /** Websocket specific */\r\n wsCreateBookmark: (state, action: PayloadAction) => {\r\n const bookmark = action.payload;\r\n if (getByID(state, bookmark.id)) return;\r\n\r\n state.push(bookmark);\r\n },\r\n wsUpdateBookmark: (state, action: PayloadAction) => {\r\n const {id, ...updates} = action.payload;\r\n\r\n let bookmark = getByID(state, id);\r\n if (!bookmark) return;\r\n\r\n for (let key in updates) {\r\n if (bookmark.hasOwnProperty(key)) {\r\n bookmark[key] = updates[key];\r\n };\r\n };\r\n },\r\n wsDeleteBookmark: (state, action: PayloadAction) => {\r\n const bookmarkID = action.payload;\r\n return state.filter(bookmark => bookmark.id !== bookmarkID);\r\n },\r\n }\r\n});\r\n\r\nexport default bookmarksSlice.reducer;\r\n\r\nexport const {\r\n wsCreateBookmark,\r\n wsUpdateBookmark,\r\n wsDeleteBookmark,\r\n createBookmark,\r\n deleteBookmark,\r\n updateBookmark,\r\n} = bookmarksSlice.actions;\r\n\r\nexport const selectAllBookmarks = state => state.bookmarks as Bookmark[];\r\n","export enum ProjectType {\r\n Standard = 0,\r\n Static = 1,\r\n Cloud = 2\r\n}\r\n\r\nexport enum AccessType {\r\n ViewOnly = 0,\r\n Standard = 1,\r\n Admin = 2\r\n}\r\n","import classificationsShader from \"./viewer/textures/colormaps/classifications.png\";\r\n\r\nexport interface Classification {\r\n id: number;\r\n name: string;\r\n alias: Array<[]>;\r\n}\r\n\r\nconst numberOfDefinedClassifications = 19;\r\nexport const numberOfClassifications = 256;\r\n\r\nexport const classifications = [\r\n {\r\n id: 0,\r\n name: \"Never Classified\",\r\n alias: [\"never classified\", \"unclassified\"]\r\n },\r\n {\r\n id: 1,\r\n name: \"Unassigned\",\r\n alias: [\"unassigned\"]\r\n },\r\n {\r\n id: 2,\r\n name: \"Ground\",\r\n alias: ['ground', 'dtm', 'base', 'earth', 'dirt', 'land', 'd.t.m'],\r\n },\r\n {\r\n id: 3,\r\n name: \"Low Vegetation\",\r\n alias: ['low_vegetation','low vegetation', 'low_veg', 'low veg', 'lo veg','lo_veg'],\r\n\r\n },\r\n {\r\n id: 4,\r\n name: \"Medium Vegetation\",\r\n alias: ['vegetation', 'tree', 'trees', 'bushes', 'lawn', 'forest', 'garden',\r\n 'gardens', 'arbor', 'flora', 'crops', 'crop', 'green', 'greenery',\r\n 'medium_vegetation', 'medium vegetation', 'med_veg', 'med veg', 'medium veg',\r\n 'medium_veg']\r\n },\r\n {\r\n id: 5,\r\n name: \"High Vegetation\",\r\n alias: ['high_vegetation', 'high vegetation', 'high_veg', 'high veg', 'hi veg',\r\n 'hi veg', 'canopy']\r\n },\r\n {\r\n id: 6,\r\n name: \"Building\",\r\n alias: ['building', 'buildings', 'structures', 'built']\r\n },\r\n {\r\n id: 7,\r\n name: \"Noise\",\r\n alias: ['noise', 'errors', 'multipass']\r\n },\r\n {\r\n id: 8,\r\n name: 'Model Key/Reserved',\r\n alias: ['lightpole', 'light pole', 'pole', 'power pole', 'powerpole', 'lightpoles',\r\n 'light poles', 'light_poles', 'power_pole', 'power_poles', 'model key', 'reserved']\r\n },\r\n {\r\n id: 9,\r\n name: \"Water\",\r\n alias: ['water', 'river', 'stream', 'sea', 'ocean', 'lake', 'bay','lagoon','lakes',\r\n 'rivers', 'streams', 'lagoons', 'waterway', 'waterways']\r\n },\r\n {\r\n id: 10,\r\n name: \"Rail\",\r\n alias: ['rail', 'railroad', 'rail road', 'train', 'trains', 'rail-road', 'rail_road',\r\n 'railway', 'railways', 'railroads']\r\n },\r\n {\r\n id: 11,\r\n name: \"Road Surface\",\r\n alias: ['road', 'roads', 'streets', 'highway', 'highways', 'avenues', 'pavement',\r\n 'road surface', 'road_surface', 'road surfaces', 'road_surfaces']\r\n },\r\n {\r\n id: 12,\r\n name: 'Overlap/Reserved',\r\n alias: ['overlap', 'overlap reserved', 'overlap_reserved']\r\n },\r\n {\r\n id: 13,\r\n name: \"Wire - Guard\",\r\n alias: ['wire guard', 'wire-guard', 'wires - guard', 'wire_guard']\r\n },\r\n {\r\n id: 14,\r\n name: \"Wire - Conductor\",\r\n alias: ['wire conductor', 'wire-conductor', 'wires - conductor', 'wire_conductor']\r\n },\r\n {\r\n id: 15,\r\n name: \"Transmission Tower\",\r\n alias: ['transmission tower', 'transmission-tower', 'transmission_tower']\r\n },\r\n {\r\n id: 16,\r\n name: \"Wire - Connector\",\r\n alias: ['powerlines', 'power lines', 'powerline', 'power line', 'power_lines',\r\n 'power_line', 'wire', 'wires', 'connectors', 'wire_connector', 'wire connector',\r\n 'wire_connectors', 'wire connectors']\r\n },\r\n {\r\n id: 17,\r\n name: \"Bridge Deck\",\r\n alias: ['bridge', 'bridge deck', 'bridge-deck', 'bridge_deck', 'bridges', 'overpass',\r\n 'overpasses', 'fly over', 'fly-over', 'fly_over']\r\n },\r\n {\r\n id: 18,\r\n name: \"High Noise\",\r\n alias: ['high noise', 'high_noise', 'high-noise', 'highnoise']\r\n },\r\n ...Array.from(Array(numberOfClassifications - numberOfDefinedClassifications).keys()).map(key => ({id: key + numberOfDefinedClassifications, name: 'Reserved', alias:[]}))\r\n];\r\n\r\nexport const getClassificationColors = (): Promise => {\r\n return new Promise(resolve => {\r\n const image = new Image();\r\n\r\n image.onload = () => {\r\n const canvas = document.createElement('canvas');\r\n canvas.width = image.width;\r\n canvas.height = image.height;\r\n\r\n const context = canvas.getContext('2d');\r\n context.drawImage(image, 0, 0);\r\n\r\n const imageData = context.getImageData(0, 0, canvas.width, canvas.height);\r\n let colors = [];\r\n\r\n for (let i = 0; i < classifications.length; i++) {\r\n let index = i * 4;\r\n\r\n let red = imageData.data[index] << 16;\r\n let green = imageData.data[index + 1] << 8;\r\n let blue = imageData.data[index + 2];\r\n\r\n const hexColor = `#${(red + blue + green).toString(16).padStart(6, '0')}`;\r\n colors.push(hexColor);\r\n }\r\n\r\n resolve(colors);\r\n };\r\n\r\n image.src = classificationsShader;\r\n });\r\n};","import tagsActions from \"./tags\";\r\nimport bookmarkActions from \"./bookmarks\";\r\nimport foldersActions from \"./folders\";\r\n\r\nconst actions = {\r\n folders: foldersActions,\r\n tags: tagsActions,\r\n bookmarks: bookmarkActions\r\n};\r\n\r\nexport default actions;","import { isCloudSite, cloudProjectID } from \"../electron-modules\";\r\nimport { withOriginalID } from \"../export/utils/misc\";\r\nimport { Folder } from \"../redux/folders-slice\";\r\nimport { engineCloudURL } from \"../urls\";\r\n\r\nconst createFolder = async (folder: Folder) => {\r\n if (!isCloudSite) return;\r\n\r\n try {\r\n const url = `${engineCloudURL}/api/projects/${cloudProjectID}/folders`;\r\n await fetch(url, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(withOriginalID(folder))\r\n });\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n};\r\n\r\nconst actions = {\r\n create: createFolder\r\n};\r\n\r\nexport default actions;","import { isCloudSite } from \"../electron-modules\";\r\nimport { withOriginalID } from \"../export/utils/misc\";\r\nimport { Asset, TagData, TagItemData } from \"../redux/assets-slice\";\r\nimport { SceneCameraState } from \"../redux/camera-slice\";\r\nimport { TagSize } from \"../types/tags\";\r\nimport { engineCloudURL } from \"../urls\";\r\n\r\n\r\nconst createTagCollection = async (folderID: string, asset: Asset) => {\r\n if (!isCloudSite) return;\r\n\r\n const {texture, size} = asset.data as TagData;\r\n const tagCollection = {...asset, texture, size};\r\n delete tagCollection.data;\r\n\r\n try {\r\n const url = `${engineCloudURL}/api/folders/${folderID}/tag-collections`;\r\n await fetch(url, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(withOriginalID(tagCollection))\r\n });\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n};\r\n\r\nconst deleteTagCollection = async (assetID: string) => {\r\n if (!isCloudSite) return;\r\n\r\n try {\r\n const url = `${engineCloudURL}/api/tag-collections/${assetID}`;\r\n await fetch(url, {method: \"DELETE\"});\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n};\r\n\r\nconst updateTagCollection = async (assetID: string, options: {\r\n name?: string,\r\n visible?: boolean,\r\n size?: TagSize,\r\n texture?: string,\r\n}) => {\r\n if (!isCloudSite) return;\r\n\r\n try {\r\n const url = `${engineCloudURL}/api/tag-collections/${assetID}`;\r\n await fetch(url, {\r\n method: \"PUT\",\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(options)\r\n });\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n};\r\n\r\nconst createTags = async (assetID: string, tags: TagItemData[]) => {\r\n if (!isCloudSite) return;\r\n\r\n try {\r\n const url = `${engineCloudURL}/api/tag-collections/${assetID}/tags`;\r\n await fetch(url, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(tags.map(tag => withOriginalID(tag)))\r\n });\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n};\r\n\r\nconst updateTag = async (tagID: string, options: {\r\n name?: string,\r\n comment?: string,\r\n sceneState?: SceneCameraState,\r\n date?: string\r\n}) => {\r\n if (!isCloudSite) return;\r\n\r\n try {\r\n const url = `${engineCloudURL}/api/tags/${tagID}`;\r\n await fetch(url, {\r\n method: \"PUT\",\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(options)\r\n });\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n};\r\n\r\nconst deleteTag = async (tagID: string) => {\r\n if (!isCloudSite) return;\r\n\r\n try {\r\n const url = `${engineCloudURL}/api/tags/${tagID}`;\r\n await fetch(url, {method: \"DELETE\"});\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n};\r\n\r\nconst actions = {\r\n create: createTags,\r\n delete: deleteTag,\r\n update: updateTag,\r\n createCollection: createTagCollection,\r\n deleteCollection: deleteTagCollection,\r\n updateCollection: updateTagCollection\r\n};\r\n\r\nexport default actions;","import { cloudProjectID, isCloudSite } from \"../electron-modules\";\r\nimport { withOriginalID } from \"../export/utils/misc\";\r\nimport { Bookmark } from \"../redux/bookmarks-slice\";\r\nimport { AerialViewState, SceneCameraState } from \"../redux/camera-slice\";\r\nimport { SettingsState } from \"../redux/settings-slice\";\r\nimport { engineCloudURL } from \"../urls\";\r\n\r\nconst createBookmark = async (bookmark: Bookmark) => {\r\n if (!isCloudSite) return;\r\n\r\n try {\r\n const url = `${engineCloudURL}/api/projects/${cloudProjectID}/bookmarks`;\r\n await fetch(url, {\r\n method: \"POST\",\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(withOriginalID(bookmark))\r\n });\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n};\r\n\r\ninterface UpdateOptions {\r\n name?: string,\r\n date?: string,\r\n position?: number[],\r\n visible?: boolean,\r\n visibleAssets?: string[],\r\n settings?: SettingsState,\r\n aerialState?: AerialViewState,\r\n sceneState?: SceneCameraState;\r\n}\r\n\r\nconst updateBookmark = async (bookmarkID: string, options: UpdateOptions) => {\r\n if (!isCloudSite) return;\r\n\r\n try {\r\n const url = `${engineCloudURL}/api/bookmarks/${bookmarkID}`;\r\n await fetch(url, {\r\n method: \"PUT\",\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(options)\r\n });\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n};\r\n\r\nconst deleteBookmark = async (bookmarkID: string) => {\r\n if (!isCloudSite) return;\r\n\r\n try {\r\n const url = `${engineCloudURL}/api/bookmarks/${bookmarkID}`;\r\n await fetch(url, {method: \"DELETE\"});\r\n } catch(err) {\r\n console.error(err);\r\n }\r\n};\r\n\r\nconst actions = {\r\n create: createBookmark,\r\n delete: deleteBookmark,\r\n update: updateBookmark,\r\n};\r\n\r\nexport default actions;","import { Vector3 } from \"three\";\r\nimport { Viewer } from \"../main\";\r\n\r\nexport class ChangeDetector {\r\n private viewer: Viewer;\r\n\r\n private oldZoom = 0;\r\n private oldFov = 0;\r\n private oldLookatVector = new Vector3();\r\n private oldCameraPosition = new Vector3();\r\n private oldUpVector = new Vector3();\r\n private oldCameraID = null;\r\n private oldHeight = 0;\r\n private oldWidth = 0;\r\n private oldOrbitState = false;\r\n\r\n // Specific changes are exposed to the public\r\n public orbitChanged = false;\r\n public cameraChanged = false;\r\n public changed = false;\r\n\r\n constructor(viewer: Viewer) {\r\n this.viewer = viewer;\r\n }\r\n\r\n get newFov() {\r\n return this.viewer.fov;\r\n }\r\n\r\n get newZoom() {\r\n return this.viewer.getAerialZoomLevel();\r\n }\r\n\r\n get newLookatVector() {\r\n return this.viewer.lookatVector;\r\n }\r\n\r\n get newUpVector() {\r\n return this.viewer.upVector;\r\n }\r\n\r\n get newCameraID() {\r\n return this.viewer.getCurrentCameraName();\r\n }\r\n\r\n get newHeight() {\r\n return this.viewer.height;\r\n }\r\n\r\n get newWidth() {\r\n return this.viewer.width;\r\n }\r\n\r\n get newOrbitState() {\r\n return this.viewer.orbitState;\r\n }\r\n\r\n get newCameraPosition() {\r\n const camera = this.viewer.camera;\r\n return camera.position.clone();\r\n }\r\n\r\n update() {\r\n this.changed = false;\r\n\r\n try {\r\n let lookatChanged = this.oldLookatVector\r\n .angleTo(this.newLookatVector) > 1e-5;\r\n let upChanged = this.oldUpVector\r\n .angleTo(this.newUpVector) > 1e-5;\r\n let positionChanged = this.oldCameraPosition\r\n .distanceTo(this.newCameraPosition) > 1e-5;\r\n let fovChanged = this.oldFov !== this.newFov;\r\n let zoomChanged = this.oldZoom !== this.newZoom;\r\n let cameraChanged = this.oldCameraID !== this.newCameraID;\r\n let heightChanged = this.oldHeight !== this.newHeight;\r\n let widthChanged = this.oldWidth !== this.newWidth;\r\n let orbitChanged = this.oldOrbitState !== this.newOrbitState;\r\n\r\n this.oldZoom = this.newZoom;\r\n this.oldFov = this.newFov;\r\n this.oldLookatVector = this.newLookatVector;\r\n this.oldCameraPosition = this.newCameraPosition;\r\n this.oldUpVector = this.newUpVector;\r\n this.oldCameraID = this.newCameraID;\r\n this.oldHeight = this.newHeight;\r\n this.oldWidth = this.newWidth;\r\n this.oldOrbitState = this.newOrbitState;\r\n\r\n this.cameraChanged = cameraChanged;\r\n this.orbitChanged = orbitChanged;\r\n\r\n this.changed = lookatChanged || upChanged || fovChanged\r\n || zoomChanged || cameraChanged || heightChanged\r\n || widthChanged || orbitChanged || positionChanged;\r\n } catch {\r\n this.changed = false;\r\n }\r\n };\r\n}","export class UnitConverter {\r\n private metresToSurveyFeetRatio = 1200 / 3937;\r\n private metresToFeetRatio = 0.3048;\r\n private allowedUnits = new Set(['ft', 'sft', 'm']);\r\n\r\n public convert(value, fromUnits, toUnits, fixedLength=null) {\r\n if (!this.allowedUnits.has(fromUnits) || !this.allowedUnits.has(toUnits)) {\r\n throw new Error('Units must either be \"m\", \"sft\", or \"ft\"');\r\n }\r\n\r\n if (isNaN(value)) {\r\n throw new Error('Value must be a number');\r\n }\r\n\r\n let convertedValue = value;\r\n\r\n if (fromUnits !== toUnits) {\r\n if (fromUnits === 'ft' || fromUnits === 'sft') {\r\n convertedValue *= (fromUnits === 'ft' ? this.metresToFeetRatio : this.metresToSurveyFeetRatio);\r\n }\r\n\r\n if (toUnits === 'ft' || toUnits === 'sft') {\r\n convertedValue /= (toUnits === 'ft' ? this.metresToFeetRatio : this.metresToSurveyFeetRatio);\r\n }\r\n }\r\n\r\n if (fixedLength !== null) {\r\n convertedValue = parseFloat(convertedValue.toFixed(fixedLength));\r\n }\r\n\r\n return convertedValue;\r\n }\r\n}\r\n","import {\r\n Vector3,\r\n MathUtils,\r\n PerspectiveCamera,\r\n Object3D\r\n} from \"three\";\r\nimport linspace from \"exact-linspace\";\r\nimport isUrl from \"is-url\";\r\n\r\nexport const isMobile = /android|webos|iphone|ipad|ipod|blackberry|playbook|BB10|iemobile|opera mini/i.test(navigator.userAgent.toLowerCase());\r\n\r\nexport const isValidURL = (path: string) => {\r\n return isUrl(encodeURI(path));\r\n};\r\n\r\nexport const getProjFactor = (fov, distance, screenHeight) => {\r\n let projFactor = 1.0 / Math.tan(fov / 2);\r\n projFactor /= distance;\r\n projFactor *= screenHeight / 2;\r\n return projFactor;\r\n};\r\n\r\nexport const getPointScale = (camera: PerspectiveCamera, mesh: Object3D, size=50) => {\r\n const meshPosition = new Vector3();\r\n mesh.getWorldPosition(meshPosition);\r\n\r\n const fov = MathUtils.degToRad(Math.max(60, camera.fov));\r\n const distance = Math.max(1.0, meshPosition.distanceTo(camera.position));\r\n const projFactor = getProjFactor(fov, distance, window.innerHeight);\r\n return size / projFactor;\r\n};\r\n\r\nexport const toScreenPosition = (viewer, position, round) => {\r\n var vector = new Vector3();\r\n vector.set(position.x, position.y, position.z);\r\n vector.project(viewer.camera);\r\n\r\n vector.x = (vector.x + 1) * (viewer.width / 2);\r\n vector.y = (-vector.y + 1) * (viewer.height / 2);\r\n\r\n if (round) {\r\n vector.x = Math.round(vector.x);\r\n vector.y = Math.round(vector.y);\r\n }\r\n\r\n return [vector.x, vector.y];\r\n};\r\n\r\nexport const eventToPixel = (event) => {\r\n let uv = new Vector3();\r\n if (event.offsetX) {\r\n // chrome,ie,safari\r\n uv.x = event.offsetX;\r\n uv.y = event.offsetY;\r\n } else {\r\n // firefox\r\n uv.x = event.layerX;\r\n uv.y = event.layerY;\r\n }\r\n return uv;\r\n};\r\n\r\nexport const randomHexColor = () => {\r\n return \"#000000\".replace(/0/g, function() {\r\n return (~~(Math.random() * 16)).toString(16);\r\n });\r\n};\r\n\r\nexport const closestPowerOfTwo = value => {\r\n if (value === 0) {\r\n return 0;\r\n }\r\n\r\n let power = Math.ceil(Math.log(value) / Math.log(2));\r\n let result = Math.pow(2, power) - 1;\r\n return result;\r\n};\r\n\r\nexport const roundDigit = (num, digits) => {\r\n let multiplyFactor = Math.pow(10, digits);\r\n return Math.round( num * multiplyFactor + Number.EPSILON ) / multiplyFactor;\r\n};\r\n\r\nexport const executeWithoutLogging = callback => {\r\n const logger = console.log;\r\n console.log = function() {};\r\n let response = callback();\r\n console.log = logger;\r\n return response;\r\n};\r\n\r\nexport const windowSafeDateISO = () => {\r\n const date = new Date();\r\n return date.toISOString()\r\n .slice(0, 19)\r\n .replace('T', ' ')\r\n .replace(/:/g, \"-\");\r\n};\r\n\r\nexport const chunkedArray = (array, size) => {\r\n let tmp = [...array];\r\n let results = [];\r\n while (tmp.length) {\r\n results.push(tmp.splice(0, size));\r\n }\r\n return results;\r\n};\r\n\r\nexport const coordinatesToArray = (points) => {\r\n let numPoints = points.length / 2;\r\n let newPoints = [];\r\n for (let i=0;i {\r\n if (start === end) {\r\n return new Array(steps).fill(start);\r\n }\r\n\r\n return linspace(start, end, steps);\r\n};\r\n\r\nexport const toBoolean = (value: string | number) : boolean => {\r\n const integerValue = typeof value === \"number\"\r\n ? value\r\n : parseInt(value);\r\n\r\n return !!integerValue;\r\n};\r\n\r\ninterface BoundingBox {\r\n min: Vector3,\r\n max: Vector3\r\n}\r\n\r\nexport const mergeBoundingBoxes = (boundingBoxes: BoundingBox[]) => {\r\n let combined = null;\r\n\r\n boundingBoxes.forEach(bbox => {\r\n if (!bbox) return;\r\n\r\n if (combined === null) {\r\n combined = {\r\n min: bbox.min.clone(),\r\n max: bbox.max.clone()\r\n };\r\n } else {\r\n combined = {\r\n min: new Vector3(\r\n Math.min(combined.min.x, bbox.min.x),\r\n Math.min(combined.min.y, bbox.min.y),\r\n Math.min(combined.min.z, bbox.min.z)\r\n ),\r\n max: new Vector3(\r\n Math.max(combined.max.x, bbox.max.x),\r\n Math.max(combined.max.y, bbox.max.y),\r\n Math.max(combined.max.z, bbox.max.z)\r\n )\r\n };\r\n }\r\n });\r\n\r\n return combined;\r\n};\r\n\r\nexport const allIndexOf = (array, item) => {\r\n let index = array.indexOf(item);\r\n let indices = [];\r\n\r\n while (index !== -1) {\r\n indices.push(index);\r\n index = array.indexOf(item, ++index);\r\n }\r\n\r\n return indices;\r\n};\r\n","import { Plane, Vector3 } from \"three\";\r\n\r\nconst simplepolygon = require('simplepolygon');\r\n\r\nexport const pointInPolygon = (point, vertices) => {\r\n let numberOfVertices = vertices.length;\r\n let insidePolygon = false;\r\n\r\n let j = numberOfVertices - 1;\r\n for (var i = 0; i < numberOfVertices; i++) {\r\n let verti = vertices[i];\r\n let vertj = vertices[j];\r\n\r\n let dx = vertj.x - verti.x;\r\n let dy1 = point.y - verti.y;\r\n let dy2 = vertj.y - verti.y;\r\n\r\n let cond1 = (verti.y > point.y) !== (vertj.y > point.y);\r\n let cond2 = point.x < (dx * dy1 / dy2 + verti.x);\r\n\r\n // currently checks [boundMin, boundMax)\r\n\r\n if (cond1 && cond2) {\r\n insidePolygon = !insidePolygon;\r\n }\r\n j = i;\r\n }\r\n return insidePolygon;\r\n};\r\n\r\nexport const planeFromVectors = (directions) => {\r\n let normal = new Vector3();\r\n directions.forEach(vertex => {\r\n normal.add(vertex);\r\n });\r\n\r\n normal.divideScalar(directions.length);\r\n normal.setLength(1.0);\r\n\r\n return new Plane(normal);\r\n};\r\n\r\nexport const checkValidPolygon = (coordinates) => {\r\n try {\r\n // Unshifted points give false positives sometimes\r\n let origin = coordinates[0];\r\n let shifted = coordinates.map(x => {\r\n return [x[0]-origin[0], x[1]-origin[1]];\r\n });\r\n\r\n let poly = {\r\n type: \"Feature\",\r\n geometry: {\r\n type: \"Polygon\",\r\n coordinates: [shifted]\r\n }\r\n };\r\n\r\n let result = simplepolygon(poly);\r\n return result.features.length === 1;\r\n } catch {\r\n return false;\r\n }\r\n};\r\n","import { MathUtils } from 'three';\r\nimport { transform } from 'ol/proj';\r\nimport { toast } from '../../../app';\r\nimport {\r\n AerialViewState,\r\n initialSceneState,\r\n SceneCameraState\r\n} from '../../../redux/camera-slice';\r\nimport { t } from '../../../localization';\r\n\r\nexport const parseURLParams = (url: string) => {\r\n const hash = new URL(url).hash.substring(1);\r\n if (hash === \"\") return;\r\n\r\n const urlParams = new URLSearchParams(hash);\r\n const parameters = Object.fromEntries(urlParams);\r\n\r\n return parameters;\r\n};\r\n\r\nexport const getModifiedAerialState = (aerialState: AerialViewState, params) => {\r\n let modified = {...aerialState};\r\n\r\n if ((\"lon\" in params) && (\"lat\" in params)) {\r\n const lat = parseFloat(params.lat);\r\n const lon = parseFloat(params.lon);\r\n\r\n if (isNaN(lat) || isNaN(lon)) {\r\n toast.warning(t(\"toast.parse-error-lat-lon\"));\r\n } else {\r\n modified.center = transform([lon, lat], 'EPSG:4326', 'EPSG:3857');\r\n }\r\n }\r\n\r\n if (\"zoom\" in params) {\r\n const zoom = parseInt(params.zoom);\r\n\r\n if (isNaN(zoom)) {\r\n toast.warning(t(\"toast.parse-error-aerial-zoom\"));\r\n } else {\r\n modified.zoom = zoom;\r\n }\r\n }\r\n\r\n if (\"rotation\" in params) {\r\n const rotation = parseFloat(params.rotation);\r\n\r\n if (isNaN(rotation)) {\r\n toast.warning(t(\"toast.parse-error-aerial-rotate\"));\r\n } else {\r\n modified.rotation = MathUtils.degToRad(rotation);\r\n }\r\n }\r\n\r\n return modified;\r\n};\r\n\r\nexport const getModifiedSceneState = (sceneState: SceneCameraState, params) => {\r\n let modified = {...sceneState};\r\n\r\n if ((\"px\" in params) && (\"py\" in params) && (\"pz\" in params)) {\r\n if ((\"ox\" in params) && (\"oy\" in params) && (\"oz\" in params)) {\r\n const ox = parseFloat(params.ox);\r\n const oy = parseFloat(params.oy);\r\n const oz = parseFloat(params.oz);\r\n\r\n const px = parseFloat(params.px);\r\n const py = parseFloat(params.py);\r\n const pz = parseFloat(params.pz);\r\n\r\n const hasError = isNaN(ox)\r\n || isNaN(oy)\r\n || isNaN(oz)\r\n || isNaN(px)\r\n || isNaN(py)\r\n || isNaN(pz);\r\n\r\n if (hasError) {\r\n toast.warning(t(\"toast.parse-error-3d-mode\"));\r\n } else {\r\n return {\r\n ...initialSceneState,\r\n orbit: [ox, oy, oz],\r\n pivot: [px, py, pz]\r\n };\r\n }\r\n }\r\n }\r\n\r\n if ((\"x\" in params) && (\"y\" in params) && (\"z\" in params)) {\r\n const x = parseFloat(params.x);\r\n const y = parseFloat(params.y);\r\n const z = parseFloat(params.z);\r\n\r\n const hasError = isNaN(x)\r\n || isNaN(y)\r\n || isNaN(z);\r\n\r\n if (hasError) {\r\n toast.warning(t(\"toast.parse-error-xyz\"));\r\n } else {\r\n // Clear all values and update lookat\r\n modified = {\r\n ...initialSceneState,\r\n lookat: [x,y,z]\r\n };\r\n }\r\n }\r\n\r\n if (\"cam\" in params) {\r\n // Set camera and clear orbit values\r\n modified.camera = params.cam;\r\n modified.orbit = null;\r\n modified.pivot = null;\r\n }\r\n\r\n if ((\"theta\" in params) && (\"phi\" in params)) {\r\n const theta = parseFloat(params.theta);\r\n const phi = parseFloat(params.phi);\r\n\r\n if (isNaN(theta) || isNaN(phi)) {\r\n toast.warning(t(\"toast.parse-error-angle\"));\r\n } else {\r\n modified.angles = [\r\n MathUtils.degToRad(theta),\r\n MathUtils.degToRad(phi)\r\n ];\r\n }\r\n }\r\n\r\n if (\"fov\" in params) {\r\n const fov = parseFloat(params.fov);\r\n\r\n if (isNaN(fov)) {\r\n toast.warning(t(\"toast.parse-error-camera-fov\"));\r\n } else {\r\n modified.fov = fov;\r\n }\r\n }\r\n\r\n return modified;\r\n};\r\n","import {Vector as VectorSource} from \"ol/source\";\r\nimport {Vector as VectorLayer} from \"ol/layer\";\r\nimport {Polygon} from \"ol/geom\";\r\nimport {Feature} from \"ol\";\r\nimport { SceneCoordinate } from '../projections';\r\nimport { Stroke, Style } from \"ol/style\";\r\n\r\nconst mapBoundsStyle = new Style({\r\n stroke: new Stroke({\r\n color: 'rgba(0, 0, 0, 0.5)',\r\n width: 2\r\n }),\r\n});\r\n\r\nexport const boundsToMapLayer = (boundingBox) => {\r\n // Generate polygon layer from bounding box, based on scene coordinates\r\n let {min, max} = boundingBox;\r\n\r\n const polygonPoints = [\r\n new SceneCoordinate([min.x, min.y, 0]).toAerial(),\r\n new SceneCoordinate([min.x, max.y, 0]).toAerial(),\r\n new SceneCoordinate([max.x, max.y, 0]).toAerial(),\r\n new SceneCoordinate([max.x, min.y, 0]).toAerial(),\r\n new SceneCoordinate([min.x, min.y, 0]).toAerial()\r\n ];\r\n\r\n // Creating the minimap mesh layer\r\n let vectorsource = new VectorSource({\r\n wrapX: false\r\n });\r\n\r\n let geometry = new Polygon([polygonPoints], \"XY\");\r\n let feature = new Feature(geometry);\r\n vectorsource.addFeature(feature);\r\n\r\n let layer = new VectorLayer({\r\n zIndex: 1,\r\n source: vectorsource,\r\n style: mapBoundsStyle\r\n });\r\n\r\n return layer;\r\n};\r\n","import { fse, isCloudSite, isStaticSite } from \"../../../electron-modules\";\r\nimport { isValidURL } from \"./misc-utils\";\r\n\r\nexport const fetchImage = async (path: string, signal: AbortSignal = null) => {\r\n let blob;\r\n\r\n if (isStaticSite || isCloudSite || isValidURL(path)) {\r\n const response = await fetch(path, {signal});\r\n blob = await response.blob();\r\n } else {\r\n const file = await fse.readFile(path);\r\n blob = new Blob([file]);\r\n }\r\n\r\n const image = await createImageBitmap(blob, {\r\n imageOrientation: 'flipY',\r\n colorSpaceConversion: \"none\"\r\n });\r\n\r\n return image;\r\n};\r\n\r\nexport const resizeImage = async (image: ImageBitmap, width: number, height: number) => {\r\n const resized = await createImageBitmap(image, {\r\n resizeWidth: width,\r\n resizeHeight: height,\r\n resizeQuality: \"low\",\r\n colorSpaceConversion: \"none\"\r\n });\r\n\r\n console.warn(`Image has been resized from (${image.width}x${image.height}) to (${width}x${height})`);\r\n\r\n image.close();\r\n\r\n return resized;\r\n};\r\n","import {MOUSE} from \"three\";\r\n\r\nexport enum ControlType {\r\n Encompass,\r\n Reverse,\r\n Autocad\r\n}\r\n\r\nexport const ControlModes = {\r\n 0: { ORBIT: MOUSE.LEFT, ZOOM: MOUSE.MIDDLE, PAN: MOUSE.RIGHT },\r\n 1: { ORBIT: MOUSE.RIGHT, ZOOM: MOUSE.MIDDLE, PAN: MOUSE.LEFT },\r\n 2: { ORBIT: -1, ZOOM: -1, PAN: MOUSE.MIDDLE }\r\n};\r\n","import {createSlice, nanoid, PayloadAction} from '@reduxjs/toolkit';\r\n\r\nexport interface CustomURL {\r\n id: string;\r\n name: string;\r\n date: string;\r\n url: string;\r\n target: string;\r\n showInScene: boolean;\r\n showInAerial: boolean;\r\n }\r\n\r\nconst getByID = (state, linkID: string) => {\r\n return state.find(url => url.id === linkID);\r\n};\r\n\r\nexport const customLinkSlice = createSlice({\r\n name: 'custom_links',\r\n initialState: [] as CustomURL[],\r\n reducers: {\r\n createCustomLink: (state, action: PayloadAction<{\r\n name: string,\r\n url: string,\r\n target: string,\r\n showInScene: boolean,\r\n showInAerial: boolean\r\n }>) => {\r\n const attributes = action.payload;\r\n\r\n const customURL = {\r\n id: nanoid(),\r\n date: new Date().toISOString(),\r\n ...attributes\r\n };\r\n\r\n state.push(customURL);\r\n },\r\n updateCustomLink: (state, action: PayloadAction<{\r\n linkID: string,\r\n name?: string,\r\n url?: string,\r\n target?: string,\r\n showInScene?: boolean,\r\n showInAerial?: boolean\r\n }>) => {\r\n const {linkID, ...updates} = action.payload;\r\n\r\n const customURL = getByID(state, linkID);\r\n if (!customURL) return;\r\n\r\n for (let key in updates) {\r\n if (customURL.hasOwnProperty(key)) {\r\n customURL[key] = updates[key];\r\n };\r\n };\r\n\r\n // Update modified date\r\n customURL.date = new Date().toISOString();\r\n },\r\n deleteCustomLink: (state, action: PayloadAction) => {\r\n return state.filter(url => url.id !== action.payload);\r\n }\r\n }\r\n});\r\n\r\nexport default customLinkSlice.reducer;\r\n\r\nexport const {\r\n createCustomLink,\r\n updateCustomLink,\r\n deleteCustomLink\r\n} = customLinkSlice.actions;\r\n\r\nexport const selectAllCustomLinks = state => state.custom_links as CustomURL[];\r\n","export class AsyncWorkerPool {\r\n private fileName: string;\r\n private numWorkers = 1;\r\n private workers = [];\r\n private queue = [];\r\n\r\n constructor(fileName: string, numWorkers=2) {\r\n this.fileName = fileName;\r\n this.numWorkers = numWorkers;\r\n this.initWorkers();\r\n }\r\n\r\n initWorkers() {\r\n const filePath = `${process.env.PUBLIC_URL}/workers/${this.fileName}`;\r\n\r\n for (let i=0; i {\r\n return new Promise(resolve => {\r\n this.queue.push({message, transfer, resolve});\r\n this.processQueue();\r\n });\r\n }\r\n\r\n /** @private */\r\n processQueue() {\r\n if (this.workers.length === 0) return;\r\n if (this.queue.length === 0) return;\r\n\r\n const worker = this.workers.shift();\r\n const {message, transfer, resolve} = this.queue.shift();\r\n\r\n worker.onmessage = event => {\r\n resolve(event.data);\r\n\r\n // Return worker to array\r\n this.workers.push(worker);\r\n\r\n // Process next item in queue\r\n this.processQueue();\r\n };\r\n\r\n worker.postMessage(message, transfer);\r\n }\r\n}","export const corporate = {\r\n red: '#DD0C29',\r\n blue: '#162031',\r\n grey: '#A8AFBA'\r\n};\r\n","import { createMuiTheme, darken, lighten } from \"@material-ui/core\";\r\nimport { corporate } from \"./colors\";\r\n\r\nexport * from \"./colors\";\r\n\r\nconst themeSpacing = 8;\r\n\r\nexport const createTheme = () => {\r\n return createMuiTheme({\r\n spacing: themeSpacing,\r\n zIndex: {\r\n appBar: 1100,\r\n modal: 1250,\r\n drawer: 1200,\r\n snackbar: 1400,\r\n tooltip: 1500\r\n },\r\n overrides: {\r\n MuiPopover: {\r\n root: {\r\n \"z-index\": \"1300 !important\"\r\n }\r\n },\r\n MuiTooltip: {\r\n tooltip: {\r\n backgroundColor: \"rgba(0, 0, 0, 0.7)\",\r\n },\r\n arrow: {\r\n \"&::before\": {\r\n backgroundColor: \"rgba(0, 0, 0, 0.7)\",\r\n border: \"0px\"\r\n }\r\n },\r\n },\r\n MuiDialogTitle: {\r\n root: {\r\n padding: `${themeSpacing}px`,\r\n '& h2': {\r\n fontSize: \"1.0rem !important\"\r\n }\r\n }\r\n },\r\n MuiDialogContent: {\r\n root: {\r\n padding: `${2*themeSpacing}px`,\r\n }\r\n },\r\n MuiIconButton: {\r\n root: {\r\n padding: `${themeSpacing}px`\r\n }\r\n }\r\n },\r\n palette: {\r\n primary: {\r\n main: corporate.blue,\r\n light: lighten(corporate.blue, 0.25),\r\n dark: darken(corporate.blue, 0.25)\r\n },\r\n secondary: {\r\n main: corporate.red,\r\n light: lighten(corporate.red, 0.25),\r\n dark: darken(corporate.red, 0.25)\r\n }\r\n },\r\n mixins: {\r\n toolbar: {\r\n // override default\r\n }\r\n }\r\n });\r\n};\r\n","import { Coordinate } from \"ol/coordinate\";\r\n\r\nexport enum VolumeType {\r\n MultiPlane,\r\n LowestPlane\r\n}\r\n\r\nexport enum SamplingRate {\r\n High=0.25,\r\n Medium=0.5,\r\n Low=1.0\r\n}\r\n\r\nexport enum MeasureType {\r\n Length=\"length\",\r\n SnapUp=\"snap-up\",\r\n SnapDown=\"snap-down\",\r\n Height=\"height\",\r\n Point=\"point\",\r\n Area=\"area\",\r\n Volume=\"volume\",\r\n Station=\"station_measurement\"\r\n}\r\n\r\nexport enum AerialMeasureType {\r\n Spherical,\r\n Planar\r\n}\r\n\r\nexport interface AerialSegment {\r\n midpoint: Coordinate;\r\n length: number\r\n}\r\n\r\nexport enum MeasureExportType {\r\n Data=\"dat\",\r\n CSV=\"csv\",\r\n DXF=\"dxf\",\r\n Shapefile=\"shp\"\r\n}","import { t } from \"./localization\";\r\n\r\nexport const LocalizedFileFilter = (key: string, extensions: string[]) => {\r\n return [{\r\n get name() {\r\n return t(key);\r\n },\r\n extensions\r\n }];\r\n};\r\n\r\nexport const getCombinedExtension = (key, filters) => {\r\n let extensions = [];\r\n filters.forEach(filter => {\r\n if (!filter) return;\r\n filter.forEach(x => {\r\n extensions = [...extensions, ...x.extensions];\r\n });\r\n });\r\n\r\n return [{\r\n get name() {\r\n return t(key);\r\n },\r\n extensions\r\n }];\r\n};\r\n\r\nexport const lasFileFormat = \"las\";\r\nexport const encompassFileFormat = \"idx\";\r\nexport const e57FileFormat = \"e57\";\r\nexport const potreeFileFormat = \"bin\";\r\nexport const pngFileFormat = 'png';\r\n\r\nexport const pngFilter = LocalizedFileFilter(\r\n 'dialog.extension-image-files-png', [pngFileFormat]);\r\n\r\nexport const pointCloudFileFormats = [lasFileFormat,\r\n encompassFileFormat, e57FileFormat, potreeFileFormat];\r\n\r\nexport const pointCloudFilter = LocalizedFileFilter(\r\n \"dialog.extension-pointclouds\", pointCloudFileFormats);\r\n\r\nexport const configFileType = \"json\";\r\nexport const configFilter = LocalizedFileFilter(\r\n \"dialog.extension-project\", [configFileType]);\r\n\r\nexport const customURLFileType = \"json\";\r\nexport const customURLFilter = LocalizedFileFilter(\r\n \"dialog.custom-url\", [customURLFileType]);\r\n\r\nexport const imageOrthoFormat = ['tif', 'tiff'];\r\nexport const imageOrthoFilter = LocalizedFileFilter(\r\n \"dialog.extension-ortho\", imageOrthoFormat);\r\n\r\nexport const imageCSVFormat = ['csv', 'txt', 'rzml'];\r\nexport const imageCSVFilter = LocalizedFileFilter(\r\n \"dialog.extension-images\", imageCSVFormat);\r\n\r\nexport const projFileFormat = ['eprj'];\r\n\r\nexport const imagePlanarFormat = ['plnr'];\r\nexport const imagePlanarFilter = LocalizedFileFilter(\r\n \"dialog.extension-planar\", imagePlanarFormat);\r\n\r\nexport const csvExportFilter = LocalizedFileFilter(\r\n \"dialog.extension-csv\", [\"csv\"]);\r\n\r\nexport const cameraMatrixFilter = LocalizedFileFilter(\r\n \"dialog.extension-4x4\", [\"4x4\"]);\r\n\r\nexport const measureDataFormat = \"3dm\";\r\nexport const measureDataFilter = LocalizedFileFilter(\r\n \"dialog.measure-data\", [measureDataFormat]);\r\n\r\nexport const measureCSVFilter = LocalizedFileFilter(\r\n \"dialog.measure-csv\", ['csv']);\r\n\r\nexport const tagCSVFilter = LocalizedFileFilter(\r\n \"dialog.tag-csv\", ['csv']);\r\n\r\nexport const DXFFileFormat = \"dxf\";\r\nexport const SHPFileFormat = \"shp\";\r\nexport const IFCFileFormat = \"ifc\";\r\nexport const xmlFileFormat = \"xml\";\r\nconst zipExtension = \"zip\";\r\n\r\nconst drawingFormats = [DXFFileFormat, SHPFileFormat, zipExtension];\r\n\r\nexport const drawingFilter = LocalizedFileFilter(\r\n \"dialog.drawing-files\", drawingFormats);\r\n\r\nexport const IFCModelFilter = LocalizedFileFilter(\r\n \"dialog.extension-ifc\", [IFCFileFormat]);\r\n\r\nexport const DXFModelFilter = LocalizedFileFilter(\r\n \"dialog.extension-dxf\", [DXFFileFormat]);\r\n\r\nexport const SHPModelFilter = LocalizedFileFilter(\r\n \"dialog.extension-shp\", [SHPFileFormat]);\r\n\r\nexport const ZIPFileFilter = LocalizedFileFilter(\r\n \"dialog.extension-zip\", [zipExtension]);\r\n\r\nconst modelFormats = [DXFFileFormat, SHPFileFormat, IFCFileFormat];\r\n\r\nexport const modelFileFilter = LocalizedFileFilter(\r\n \"dialog.model-files\", modelFormats);\r\n\r\nconst labelExtension = \"3dl\";\r\nexport const labelFilter = LocalizedFileFilter(\r\n \"dialog.label-file\", [labelExtension]);\r\n\r\nconst modelExtension = \"pth\";\r\nexport const modelFilter = LocalizedFileFilter(\r\n \"dialog.model-file\", [modelExtension]);\r\n\r\nconst xmlExtension = \"xml\";\r\nexport const xmlFileFilter = LocalizedFileFilter(\r\n \"dialog.xml-file\", [xmlExtension]);\r\n\r\nexport const lasFileFilter = LocalizedFileFilter(\r\n \"dialog.extension-las\", [lasFileFormat]\r\n);\r\n","import React from \"react\";\r\nimport { Button, createStyles, IconButton, makeStyles, Theme } from \"@material-ui/core\";\r\nimport isHtml from 'is-html';\r\nimport { ArrowTooltip } from \".\";\r\nimport clsx from 'clsx';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n olButtonParent: {\r\n background: \"var(--ol-subtle-background-color)\",\r\n position: 'absolute',\r\n\r\n zIndex: 10,\r\n borderRadius: \"4px\"\r\n },\r\n olButtonTopLeft: {\r\n top: \"0.5em\",\r\n left: \"0.5em\",\r\n },\r\n olButtonBottomLeft: {\r\n bottom: \"0.5em\",\r\n left: \"0.5em\",\r\n },\r\n olButton: {\r\n padding: \"0px\",\r\n margin: \"1px\",\r\n borderRadius: \"2px\",\r\n backgroundColor: \"var(--ol-background-color) !important\",\r\n color: \"var(--ol-subtle-foreground-color)\",\r\n minWidth: \"22px\",\r\n \"&:hover\": {\r\n outline: \"1px solid var(--ol-subtle-foreground-color)\",\r\n color: \"var(--ol-foreground-color)\"\r\n },\r\n \"& svg\": {\r\n width: \"22px\",\r\n height: \"22px\"\r\n }\r\n },\r\n olButtonRotate: {\r\n \"-webkit-transition\": \"-webkit-transform .3s ease-in-out\",\r\n transition: \"transform .3s ease-in-out\",\r\n \"&:hover\": {\r\n \"-webkit-transform\": \"rotate(-180deg)\",\r\n transform: \"rotate(-180deg)\"\r\n }\r\n }\r\n }),\r\n);\r\n\r\nexport interface EnhancedIconButtonProps {\r\n title: string\r\n visible?: boolean\r\n onClick?(event?): void,\r\n disabled?: boolean\r\n children?: any\r\n}\r\n\r\nexport const EnhancedIconButton = (props: EnhancedIconButtonProps) => {\r\n const {title, visible=true, onClick, disabled=false, children} = props;\r\n\r\n let tooltipText = disabled\r\n ? `${title} (Disabled)`\r\n : title;\r\n\r\n let tooltipTitle = isHtml(tooltipText)\r\n ? (
)\r\n : tooltipText;\r\n\r\n return (\r\n \r\n {visible && (\r\n {\r\n if (disabled) return;\r\n if (!onClick) return;\r\n onClick(event);\r\n }}\r\n style={{\r\n ...(disabled && {opacity: 0.3}),\r\n }}\r\n >\r\n {children}\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\ninterface OpenLayersIconProps {\r\n rotate?: boolean;\r\n onClick(event): void;\r\n placement: \"top-left\" | \"bottom-left\";\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const OpenLayersIcon = (props: OpenLayersIconProps) => {\r\n const {rotate=false, placement, onClick} = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n \r\n {props.children}\r\n \r\n
\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { ListItemIcon, ListItemIconProps, useTheme } from \"@material-ui/core\";\r\n\r\ninterface DenseIconProps extends ListItemIconProps {\r\n centered?: boolean;\r\n}\r\n\r\nexport const DenseIcon = (props: DenseIconProps) => {\r\n const theme = useTheme();\r\n const {centered=false, children, ...other} = props;\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};","import {\r\n Button,\r\n createStyles,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n IconButton,\r\n LinearProgress,\r\n makeStyles,\r\n TextField,\r\n Theme,\r\n useTheme\r\n} from \"@material-ui/core\";\r\nimport clsx from 'clsx';\r\nimport React, {useEffect, useState} from \"react\";\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport ErrorOutlineIcon from '@material-ui/icons/ErrorOutline';\r\nimport CheckCircleOutlineIcon from '@material-ui/icons/CheckCircleOutline';\r\nimport Draggable from \"react-draggable\";\r\nimport {headerHeight} from \"../app\";\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Select from '@material-ui/core/Select';\r\nimport { nanoid } from \"@reduxjs/toolkit\";\r\nimport { isEqual } from 'lodash';\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useViewer } from \"../hooks\";\r\n\r\nexport interface DropDownInfo {\r\n value: string;\r\n title: string;\r\n entries: string[];\r\n text: string;\r\n}\r\n\r\nconst minDialogWidth = 300; // Used for prompt, dropdown, text... etc\r\n\r\ntype DialogWidth = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n draggableTitleClose: {\r\n color: theme.palette.grey[500],\r\n marginRight: theme.spacing(1)\r\n },\r\n draggableTitleMinimize: {\r\n color: theme.palette.grey[500],\r\n },\r\n draggableContentStaticHeight: {\r\n height: `min(75vh, 500px) !important`,\r\n },\r\n draggableContent: {\r\n padding: theme.spacing(0),\r\n paddingTop: \"0px !important\",\r\n height: \"fit-content\",\r\n width: \"fit-content\",\r\n maxWidth: 'none',\r\n maxHeight: 'none'\r\n },\r\n draggableMouseDown: {\r\n \"z-index\": `${theme.zIndex.modal + 1} !important`\r\n },\r\n draggableContentParent: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n minWidth: \"400px\",\r\n maxWidth: \"75vw\",\r\n minHeight: \"200px\",\r\n maxHeight: \"75vh\",\r\n overflow: \"hidden\",\r\n position: \"relative\",\r\n resize: \"both\",\r\n zIndex: 1 // Fixes slimscroll visual issues\r\n },\r\n draggableResizeHandler: {\r\n float: \"right\",\r\n position: \"absolute\",\r\n bottom: \"0px\",\r\n right: \"0px\"\r\n },\r\n draggableTopDiv: {\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n },\r\n draggableBackdropPaper: {\r\n height: \"inherit\"\r\n },\r\n draggableBackdropRounded: {\r\n borderRadius: theme.spacing(0.5),\r\n height: \"inherit\",\r\n },\r\n draggableRoundCorner: {\r\n backgroundColor: \"transparent\"\r\n },\r\n draggableTitle: {\r\n userSelect: \"none\",\r\n cursor: \"grab\",\r\n flex: \"1 !important\"\r\n },\r\n draggableTitleDown: {\r\n cursor: \"grabbing\"\r\n },\r\n progressContent: {\r\n padding: `${theme.spacing(3)}px !important`,\r\n },\r\n progressNoTransition: {\r\n transition: \"none\"\r\n },\r\n dropdownGrid: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"space-between\",\r\n \"& span\": {\r\n flex: 1\r\n }\r\n },\r\n dropdownSpacing: {\r\n marginBottom: theme.spacing(2)\r\n },\r\n simpleDialogMain: {\r\n \"z-index\": `${theme.zIndex.modal + 1} !important`\r\n },\r\n simpleDialogHeader: {\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n },\r\n simpleDialogTitle: {\r\n userSelect: \"none\",\r\n flex: 1\r\n },\r\n simpleDialogEdit: {\r\n color: theme.palette.grey[500],\r\n },\r\n simpleDialogClose: {\r\n color: theme.palette.grey[500],\r\n marginRight: theme.spacing(1)\r\n }\r\n }),\r\n);\r\n\r\ninterface PromptDialogProps {\r\n open: boolean;\r\n title: string;\r\n prompt: string;\r\n button: string;\r\n onCancel(): void;\r\n onSubmit(): void;\r\n}\r\n\r\nexport const PromptDialog = (props: PromptDialogProps) => {\r\n const {open, title, prompt, button, onCancel, onSubmit} = props;\r\n const {t} = useTranslation();\r\n\r\n return (\r\n \r\n \r\n {title}\r\n \r\n\r\n \r\n \r\n {prompt}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {button}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\ninterface AlertDialogProps {\r\n open: boolean;\r\n error?: boolean\r\n title: string;\r\n onClose(): void;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const AlertDialog = (props: AlertDialogProps) => {\r\n const {open, onClose, title, error=false} = props;\r\n\r\n const {t} = useTranslation();\r\n const theme = useTheme();\r\n\r\n return (\r\n \r\n
\r\n {error && }\r\n\r\n {!error && }\r\n\r\n \r\n {title}\r\n \r\n
\r\n\r\n \r\n {props.children}\r\n \r\n\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\ninterface TextDialogProps {\r\n open: boolean;\r\n title: string;\r\n label: string;\r\n prompt: string;\r\n placeholder?: string;\r\n onCancel(): void;\r\n onSubmit(value: string): void;\r\n clear?: boolean;\r\n}\r\n\r\nexport const TextDialog = (props: TextDialogProps) => {\r\n const {open, onSubmit, onCancel, label, prompt,\r\n placeholder=\"\", clear=false} = props;\r\n\r\n const [text, setText] = useState(\"\");\r\n const [disabled, setDisabled] = useState(true);\r\n const {t} = useTranslation();\r\n\r\n const handleTextChange = (event) => {\r\n setText(event.target.value);\r\n };\r\n\r\n useEffect(() => {\r\n if (text.trim() !== '') {\r\n setDisabled(false);\r\n } else {\r\n setDisabled(true);\r\n }\r\n }, [text]);\r\n\r\n useEffect(() => {\r\n setText(placeholder);\r\n }, [open]);\r\n\r\n const handleCancel = () => {\r\n onCancel();\r\n setText(placeholder);\r\n };\r\n\r\n const handleSubmit = () => {\r\n const trimmedText = text.trim();\r\n\r\n onSubmit(trimmedText);\r\n\r\n if (clear) {\r\n setText('');\r\n } else {\r\n setText(trimmedText);\r\n }\r\n };\r\n\r\n const handleKeyDown = (event) => {\r\n if (event.key === 'Enter') {\r\n if (text === '') {\r\n return;\r\n }\r\n\r\n handleSubmit();\r\n }\r\n };\r\n\r\n return (\r\n \r\n {props.title}\r\n \r\n \r\n {prompt}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\ninterface DropdownDialogProps {\r\n open: boolean;\r\n title: string;\r\n prompt: string;\r\n defaultValue: any;\r\n onCancel(): void;\r\n onSubmit(value: any): void;\r\n options: [value: any, text: string][];\r\n}\r\n\r\nexport const DropDownDialog = (props: DropdownDialogProps) => {\r\n const {open, defaultValue, title, prompt, options, onCancel, onSubmit} = props;\r\n\r\n const [value, setValue] = useState(defaultValue);\r\n const {t} = useTranslation();\r\n\r\n const resetDefaults = () => {\r\n setValue(defaultValue);\r\n };\r\n\r\n const handleSubmit = () => {\r\n onSubmit(value);\r\n };\r\n\r\n const handleChange = (event) => {\r\n setValue(event.target.value);\r\n };\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n resetDefaults();\r\n }, [open]);\r\n\r\n return (\r\n \r\n {title}\r\n \r\n \r\n {prompt}\r\n \r\n \r\n {options.map((option, index) => {\r\n const [value, text] = option;\r\n\r\n return (\r\n \r\n {text}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\ninterface SimpleDialogProps {\r\n open: boolean\r\n title: string\r\n button?: string\r\n onSubmit?(): void\r\n onClose(): void\r\n onEdit?(): void\r\n canSubmit?: boolean\r\n canClose?: boolean\r\n maxWidth?: DialogWidth\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const SimpleDialog = (props: SimpleDialogProps) => {\r\n const {title, button = \"Submit\", open, onSubmit, onClose, onEdit,\r\n canSubmit=true, canClose=true, children, maxWidth=\"sm\", ...other} = props;\r\n\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n\r\n return (\r\n \r\n
\r\n \r\n {title}\r\n \r\n\r\n {!!onEdit && (\r\n \r\n \r\n \r\n )}\r\n\r\n {/* Close button */}\r\n \r\n \r\n \r\n
\r\n\r\n \r\n {children}\r\n \r\n\r\n \r\n \r\n {t('buttons.cancel')}\r\n \r\n\r\n {!!onSubmit && (\r\n \r\n {button}\r\n \r\n )}\r\n \r\n\r\n \r\n );\r\n};\r\n\r\ninterface DraggableDialogProps {\r\n open: boolean\r\n title: string\r\n onClose?(): void\r\n initialHeight?: number | string\r\n initialWidth?: number | string\r\n resize?: boolean\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const DraggableDialog = (props: DraggableDialogProps) => {\r\n const {open, title, initialHeight, initialWidth, onClose} = props;\r\n\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n\r\n const initialPositionX = theme.spacing(2);\r\n const initialPositionY = headerHeight + theme.spacing(2);\r\n\r\n const paperPropID = useState(nanoid())[0];\r\n const resizeElementID = useState(nanoid())[0];\r\n const [bounds, setBounds] = useState(null);\r\n const [mouseDown, setMouseDown] = useState(false);\r\n\r\n const [modifiedSize, setModifiedSize] = useState({\r\n x: initialWidth ? initialWidth : \"450px\",\r\n y: initialHeight ? initialHeight : \"fit-content\"\r\n });\r\n\r\n const [position, setPosition] = useState({\r\n x: initialPositionX,\r\n y: initialPositionY\r\n });\r\n\r\n const onDragMouseDown = () => {\r\n setMouseDown(true);\r\n };\r\n\r\n const onDragMouseUp = () => {\r\n setMouseDown(false);\r\n };\r\n\r\n const getNewBoundary = (elementWidth) => {\r\n let newBounds = {\r\n right : window.innerWidth - elementWidth,\r\n left : 0,\r\n bottom : window.innerHeight - 40,\r\n top : headerHeight\r\n };\r\n\r\n if (newBounds.right - newBounds.left < elementWidth) {\r\n newBounds.right = window.innerWidth - elementWidth;\r\n newBounds.left = 0;\r\n }\r\n\r\n // Add bounds padding\r\n const boundsPadding = 10;\r\n newBounds.right -= boundsPadding;\r\n newBounds.left += boundsPadding;\r\n newBounds.top += boundsPadding;\r\n\r\n return newBounds;\r\n };\r\n\r\n const checkOutOfBounds = (position, newBounds) => {\r\n let x = position.x;\r\n let y = position.y;\r\n\r\n const rightOutOfBounds = (x > newBounds.right);\r\n const leftOutOfBounds = (x < newBounds.left);\r\n const bottomOutOfBounds = (y > newBounds.bottom);\r\n const topOutOfBounds = (y < newBounds.top);\r\n\r\n if (rightOutOfBounds) {\r\n x = Math.min(x, newBounds.right);\r\n }\r\n\r\n if (leftOutOfBounds) {\r\n x = Math.max(newBounds.left, x);\r\n }\r\n\r\n if (bottomOutOfBounds) {\r\n y = Math.min(y, newBounds.bottom);\r\n }\r\n\r\n if (topOutOfBounds) {\r\n y = Math.max(y, newBounds.top);\r\n }\r\n\r\n return {x, y};\r\n };\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n\r\n const interval = setInterval(() => {\r\n let element = document.getElementById(resizeElementID);\r\n if (!element) return;\r\n\r\n // Remember our resized width and height so it can be applied\r\n // the next time that the dialog is opened\r\n const elementWidth = element.clientWidth;\r\n const elementHeight = element.clientHeight;\r\n\r\n const newModifiedSize = {\r\n x: `${elementWidth}px`,\r\n y: `${elementHeight}px`\r\n };\r\n\r\n // Calculate new boundary values\r\n const newBounds = getNewBoundary(elementWidth);\r\n\r\n // Move dialog if we are out of bounds\r\n const newPosition = checkOutOfBounds(position, newBounds);\r\n\r\n /** NOTE: React is bad with object equality, so lodash is used */\r\n\r\n if (!isEqual(modifiedSize, newModifiedSize)) {\r\n setModifiedSize(newModifiedSize);\r\n }\r\n\r\n if (!isEqual(bounds, newBounds)) {\r\n setBounds(newBounds);\r\n }\r\n\r\n if (!isEqual(position, newPosition)) {\r\n setPosition(newPosition);\r\n }\r\n }, 100);\r\n\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n }, [open, bounds, position, modifiedSize]);\r\n\r\n return (\r\n {\r\n const {x,y} = data;\r\n setPosition({x, y});\r\n }}\r\n >\r\n {\r\n /** Remove tabindex from paper to stop drag/drop issues */\r\n let element = document.getElementById(paperPropID);\r\n element?.parentElement.removeAttribute(\"tabindex\");\r\n }}\r\n aria-labelledby=\"draggable-dialog-title\"\r\n className={clsx(classes.draggableContent, {\r\n [classes.draggableMouseDown]: mouseDown\r\n })}\r\n classes={{\r\n paperFullScreen: classes.draggableBackdropRounded,\r\n scrollPaper: classes.draggableBackdropPaper\r\n }}\r\n BackdropProps={{\r\n className: classes.draggableRoundCorner\r\n }}\r\n PaperProps={{\r\n id: paperPropID\r\n }}\r\n >\r\n \r\n {/* Draggable title */}\r\n \r\n {title}\r\n \r\n\r\n {/* Close button */}\r\n \r\n \r\n \r\n
\r\n\r\n \r\n {props.children}\r\n \r\n\r\n \r\n \r\n );\r\n};\r\n\r\ninterface ProgressDialogProps {\r\n open: boolean;\r\n text: string;\r\n percent: number;\r\n animated?: boolean\r\n}\r\n\r\nexport const ProgressDialog = (props: ProgressDialogProps) => {\r\n const {open, text, percent, animated=false} = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n {text} {percent.toFixed(2)}%\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\ninterface LabelCategoryDialogProps {\r\n open: boolean;\r\n onClose(): void\r\n id?: string\r\n}\r\n\r\nexport const LabelCategoryDialog = (props) => {\r\n const {open, onClose, id} = props as LabelCategoryDialogProps;\r\n const {viewer} = useViewer();\r\n const {t} = useTranslation();\r\n\r\n const getSelectedLabels = () => {\r\n const selectedLabelIDs = viewer?.highlightedLabels().map(label => label.id);\r\n const nonSelected = selectedLabelIDs ? (selectedLabelIDs.length === 0) : true;\r\n const idSelected = (id !== undefined);\r\n return (nonSelected || idSelected) ? [id] : selectedLabelIDs;\r\n };\r\n\r\n const getCategoryDropdown = () => {\r\n let allCategories = viewer?.getAllCategories();\r\n const highlightedCategories = getSelectedLabels().map(labelID => viewer?.getCategoryByLabelID(labelID));\r\n const choosableCategories = allCategories?.filter(category => !highlightedCategories.includes(category));\r\n const dropDownList: [value: any, text: string][] = choosableCategories ? choosableCategories.map(category => {\r\n return [category.id, category.name];}) : [[0, '']];\r\n return dropDownList;\r\n };\r\n\r\n const getDefaultValue = () => {\r\n const dropDownList = getCategoryDropdown();\r\n if (dropDownList.length === 0) {\r\n return null;\r\n } else {\r\n return dropDownList[0][0];\r\n }\r\n };\r\n\r\n const handleChangeCategory = (value: any) => {\r\n const labelIDs = getSelectedLabels();\r\n viewer.transferLabel(labelIDs, value);\r\n onClose();\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\n","import React, {memo} from \"react\";\r\nimport {\r\n createStyles,\r\n Grid,\r\n InputLabel,\r\n makeStyles,\r\n Theme,\r\n Typography\r\n} from \"@material-ui/core\";\r\nimport { Draggable } from 'react-beautiful-dnd';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport {\r\n DragDropContext,\r\n Droppable,\r\n OnDragEndResponder\r\n} from 'react-beautiful-dnd';\r\nimport { NumberField } from \".\";\r\nimport {t} from \"../localization\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n draggingListItem: {\r\n background: 'rgb(235,235,235)'\r\n },\r\n staticListItem: {\r\n borderBottom: \"2px dashed lightgray\"\r\n },\r\n flexGrow: {\r\n flexGrow: 1\r\n }\r\n })\r\n);\r\n\r\ninterface DraggableItemProps {\r\n id: string;\r\n primary: string;\r\n secondary: number;\r\n error?: boolean;\r\n index: number;\r\n min?: number,\r\n max?: number,\r\n step?: number\r\n};\r\n\r\ninterface DraggableListItemProps {\r\n item: DraggableItemProps;\r\n index: number;\r\n setData: React.Dispatch;\r\n inputName: string;\r\n listLength: number;\r\n}\r\n\r\nconst DraggableListItem = (props: DraggableListItemProps) => {\r\n const {item, index, setData, inputName, listLength} = props;\r\n const classes = useStyles();\r\n const useStaticListItem = (index === listLength-1) ? '' : classes.staticListItem;\r\n\r\n return (\r\n \r\n {(provided, snapshot) => (\r\n \r\n
\r\n \r\n \r\n {t(\"labels.category-name\")}\r\n \r\n \r\n {inputName}\r\n \r\n \r\n \r\n \r\n {item.primary}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\ninterface DraggableListProps {\r\n items: DraggableItemProps[];\r\n onDragEnd: OnDragEndResponder;\r\n setData: any;\r\n inputName: string;\r\n};\r\n\r\nexport const DraggableList = memo((props: DraggableListProps) => {\r\n const {items, onDragEnd, setData, inputName} = props;\r\n\r\n return (\r\n \r\n \r\n {provided => (\r\n
\r\n {items.map((item, index) => (\r\n \r\n ))}\r\n {provided.placeholder}\r\n
\r\n )}\r\n
\r\n
\r\n );\r\n});\r\n","import React, { useEffect, useState } from 'react';\r\nimport {\r\n Checkbox,\r\n createStyles,\r\n Input,\r\n makeStyles,\r\n MenuItem,\r\n Paper,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableContainer,\r\n TableHead,\r\n TablePagination,\r\n TableRow,\r\n TableSortLabel,\r\n Theme,\r\n Typography,\r\n useTheme\r\n} from '@material-ui/core';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\nimport MoreHorizIcon from '@material-ui/icons/MoreHoriz';\r\nimport clsx from 'clsx';\r\nimport {\r\n ArrowTooltip,\r\n DenseIcon,\r\n DenseMenu,\r\n EnhancedIconButton\r\n} from '.';\r\nimport { useTranslation } from 'react-i18next';\r\nimport isHtml from 'is-html';\r\nimport {\r\n EnhancedTableBodyProps,\r\n EnhancedTableCellProps,\r\n EnhancedTableCheckboxHeadProps,\r\n EnhancedTableHeadProps,\r\n EnhancedTableProps\r\n} from '../types/enhanced-table';\r\nimport { toLocaleString } from '../utilities/dates';\r\nimport { useContextMenu } from '../hooks';\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n header: {\r\n fontWeight: \"bold\",\r\n userSelect: \"none\",\r\n whiteSpace: \"nowrap\"\r\n },\r\n densePadding: {\r\n padding: `${theme.spacing(0.5)}px ${theme.spacing(1.0)}px !important`,\r\n },\r\n denseFooter: {\r\n height: theme.spacing(4),\r\n minHeight: \"0px\",\r\n overflow: \"hidden\"\r\n },\r\n hiddenSort: {\r\n border: 0,\r\n clip: 'rect(0 0 0 0)',\r\n height: 1,\r\n margin: -1,\r\n overflow: 'hidden',\r\n padding: 0,\r\n position: 'absolute',\r\n top: 20,\r\n width: 1,\r\n },\r\n noSelect: {\r\n userSelect: \"none\"\r\n },\r\n rowDisabled: {\r\n \"& th\": {\r\n opacity: 0.3\r\n },\r\n \"& td\": {\r\n opacity: 0.3\r\n }\r\n },\r\n rowIcon: {\r\n fontSize: \"1em\"\r\n },\r\n buttonCell: {\r\n width: \"1%\",\r\n whiteSpace: \"nowrap\",\r\n padding: \"0px !important\"\r\n },\r\n buttonHeader: {\r\n padding: \"0px !important\"\r\n },\r\n tableRow: {\r\n \"& td:last-child\": {\r\n paddingRight: `${theme.spacing(1.5)}px !important`\r\n },\r\n \"& td:first-child\": {\r\n paddingLeft: `${theme.spacing(1.5)}px !important`\r\n },\r\n \"& th:last-child\": {\r\n paddingRight: `${theme.spacing(1.5)}px !important`\r\n },\r\n \"& th:first-child\": {\r\n paddingLeft: `${theme.spacing(1.5)}px !important`\r\n }\r\n }\r\n }),\r\n);\r\n\r\n/** Column header with label and checkbox */\r\nexport const EnhancedTableCheckboxHead = (props: EnhancedTableCheckboxHeadProps) => {\r\n const {label, values, onChange} = props;\r\n\r\n const numVisible = values.filter(x => x === true).length;\r\n const checked = numVisible > 0;\r\n const indeterminate = checked && (values.length !== numVisible);\r\n\r\n return (\r\n \r\n {\r\n // Stop click event from triggering sort function\r\n event.stopPropagation();\r\n }}\r\n onChange={(event) => {\r\n onChange(indeterminate || event.target.checked);\r\n }}\r\n />\r\n\r\n {label}\r\n \r\n );\r\n};\r\n\r\nconst EnhancedTableHead = (props: EnhancedTableHeadProps) => {\r\n const {sortDir, sortBy, onRequestSort, columns, actions, dense} = props;\r\n\r\n const classes = useStyles();\r\n\r\n const createSortHandler = (property) => (event) => {\r\n onRequestSort(event, property);\r\n };\r\n\r\n const hasActions = actions.length > 0;\r\n\r\n return (\r\n \r\n \r\n {columns.map(column => {\r\n\r\n const {id, label, center, sortable=true} = column;\r\n\r\n return (\r\n \r\n {/* Non-sortable column header */}\r\n {!sortable && \r\n {label}\r\n }\r\n\r\n {/* Sortable column header */}\r\n {sortable && \r\n {label}\r\n {sortBy === id ? (\r\n \r\n {sortDir === 'desc' ? 'sorted descending' : 'sorted ascending'}\r\n \r\n ) : null}\r\n }\r\n \r\n );\r\n })}\r\n\r\n {/** Custom actions */}\r\n {hasActions && }\r\n\r\n \r\n \r\n );\r\n};\r\n\r\nconst EnhancedTableBody = (props: EnhancedTableBodyProps) => {\r\n const {rows, actions, columns, onClick, dense,\r\n setSelectedRow, handleContextMenu} = props;\r\n\r\n const classes = useStyles();\r\n const hasActions = actions.length > 0;\r\n\r\n return (\r\n \r\n {rows.map(row =>\r\n \r\n {columns.map((column, index) =>\r\n \r\n )}\r\n\r\n {/** Custom actions */}\r\n {hasActions && \r\n {\r\n setSelectedRow(row);\r\n handleContextMenu(event);\r\n }}\r\n >\r\n \r\n \r\n }\r\n\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst EnhancedTableCell = (props: EnhancedTableCellProps) => {\r\n const {row, column, dense, index, onClick} = props;\r\n\r\n const theme = useTheme();\r\n const {i18n} = useTranslation();\r\n\r\n const key = `${row.id}_${column.id}`;\r\n const text = row[column.id] as any;\r\n const isString = typeof(text) === \"string\";\r\n const condition = (column.numeric || text.length <= 100);\r\n\r\n const cellContent = (column, content, condition) => {\r\n if (column.date) {\r\n const dateString = toLocaleString(content, i18n.language);\r\n return dateString;\r\n }\r\n\r\n const renderAsHTML = isString\r\n ? isHtml(content)\r\n : false;\r\n\r\n if (renderAsHTML) {\r\n if (column.tooltip) {\r\n return (\r\n \r\n
\r\n \r\n );\r\n } else {\r\n return (\r\n
\r\n );\r\n }\r\n }\r\n\r\n if (isString) {\r\n content = condition ? content : `${content.slice(0,100)}...`;\r\n }\r\n\r\n if (column.tooltip) {\r\n return (\r\n \r\n
\r\n {content}\r\n
\r\n
\r\n );\r\n }\r\n\r\n return content;\r\n };\r\n\r\n const title = isString ? text : \"\";\r\n const content = cellContent(column, text, condition);\r\n\r\n return (\r\n {\r\n if (row.disabled || !onClick) return;\r\n onClick(row, index);\r\n }}\r\n style={{\r\n ...(column.wordBreak && {\r\n wordBreak: \"break-all\"\r\n }),\r\n ...(column.forceOpacity && {\r\n opacity: 1.0\r\n }),\r\n ...(column.pointer && {\r\n cursor: \"pointer\"\r\n }),\r\n ...(column.center && {\r\n textAlign: \"center\"\r\n }),\r\n ...(dense && {\r\n padding: `${theme.spacing(0.5)}px ${theme.spacing(1.0)}px`\r\n })\r\n }}\r\n title={title}\r\n >\r\n {content}\r\n \r\n );\r\n};\r\n\r\nexport const EnhancedTable = (props: EnhancedTableProps) => {\r\n const {state, columns, rows, actions=[], onClick,\r\n dense = true, maxHeight} = props;\r\n\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const {t} = useTranslation();\r\n\r\n const contextMenu = useContextMenu();\r\n\r\n const [search, setSearch] = useState(\"\");\r\n const [selectedRow, setSelectedRow] = useState(null);\r\n\r\n const onSearch = (event) => {\r\n const value = event.target.value;\r\n state.handleSearchChange(value);\r\n setSearch(value);\r\n };\r\n\r\n useEffect(() => {\r\n // Restore previously saved search terms\r\n //setSearch(state.query);\r\n\r\n // Reset the search string\r\n setSearch(\"\");\r\n state.handleSearchChange(\"\");\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (state.pageNumber <= maxPageNumber) return;\r\n state.handlePageNumberChange(null, maxPageNumber);\r\n }, [state.pageNumber, rows]);\r\n\r\n let tableRows = state.handleSearch(columns, [...rows]);\r\n\r\n // Number of rows must be calculated after\r\n // search and before pagination\r\n const numberOfRows = tableRows.length;\r\n\r\n tableRows = state.handleSort(columns, tableRows);\r\n tableRows = state.handlePages(tableRows);\r\n\r\n // Make sure our max page is valid\r\n const maxPageNumber = Math.max(\r\n 0, Math.ceil(numberOfRows / state.rowsPerPage) - 1);\r\n const pageNumber = Math.min(state.pageNumber, maxPageNumber);\r\n\r\n const searchable = columns.filter(\r\n column => column.searchable).length > 0;\r\n\r\n return (\r\n \r\n
\r\n \r\n\r\n {/** Search bar */}\r\n {searchable && }\r\n />}\r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n `${page.from}–${page.to} ${t(\"enhanced-table.displayed-rows-of\")} ${page.count !== -1 ?\r\n page.count : `${t(\"enhanced-table.displayed-rows-more-than\")} ${page.to}`}`\r\n }\r\n backIconButtonText={t(\"enhanced-table.prev-page\")}\r\n nextIconButtonText={t(\"enhanced-table.next-page\")}\r\n page={pageNumber}\r\n classes={{\r\n toolbar: dense ? classes.denseFooter : \"\"\r\n }}\r\n onChangePage={state.handlePageNumberChange}\r\n onChangeRowsPerPage={state.handleRowsPerPageChange}\r\n />\r\n\r\n \r\n
\r\n\r\n {/** Context menu */}\r\n \r\n {actions.map((action, index) =>\r\n {\r\n if (!selectedRow) return;\r\n action.onClick(selectedRow);\r\n contextMenu.handleClose();\r\n }}\r\n >\r\n \r\n {action.icon}\r\n \r\n\r\n \r\n {action.title}\r\n \r\n \r\n )}\r\n \r\n\r\n
\r\n );\r\n};\r\n","import React, { useEffect, useImperativeHandle, useRef, useState } from \"react\";\r\nimport { DenseIcon } from \"./dense-icon\";\r\nimport { Divider, Grow, makeStyles, Menu, MenuItem, MenuItemProps, Typography, useTheme } from \"@material-ui/core\";\r\nimport ArrowRight from '@material-ui/icons/ArrowRight';\r\nimport clsx from 'clsx';\r\nimport { DividerProps } from \"@material-ui/core/Divider/Divider\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n subMenuRoot: (props: {open: boolean}) => ({\r\n justifyContent: \"space-between\",\r\n backgroundColor: props.open\r\n ? theme.palette.action.hover\r\n : 'rgba(0,0,0,0)'\r\n }),\r\n subMenuLabel: {\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n }\r\n}));\r\n\r\ninterface NestedMenuItemProps extends Omit {\r\n parentMenuOpen: boolean\r\n label?: React.ReactNode\r\n rightIcon?: React.ReactNode\r\n dense: boolean,\r\n ContainerProps?: React.HTMLAttributes & React.RefAttributes\r\n button?: true | undefined\r\n}\r\n\r\n/**\r\n * https://github.com/azmenak/material-ui-nested-menu-item\r\n * Modifications have been made to close submenu when open is false.\r\n * This is required because we use keepMounted on all of our menus. Also\r\n * modified the right arrow to be better aligned\r\n**/\r\nconst NestedMenuItem = React.forwardRef((props: NestedMenuItemProps, ref) => {\r\n const {\r\n parentMenuOpen,\r\n label,\r\n rightIcon = ,\r\n dense = false,\r\n children,\r\n className,\r\n tabIndex: tabIndexProp,\r\n ContainerProps: ContainerPropsProp = {},\r\n ...MenuItemProps\r\n } = props;\r\n\r\n const {ref: containerRefProp, ...ContainerProps} = ContainerPropsProp;\r\n\r\n const menuItemRef = useRef(null);\r\n useImperativeHandle(ref, () => menuItemRef.current);\r\n\r\n const containerRef = useRef(null);\r\n useImperativeHandle(containerRefProp, () => containerRef.current);\r\n\r\n const menuContainerRef = useRef(null);\r\n\r\n const [isSubMenuOpen, setIsSubMenuOpen] = useState(false);\r\n\r\n const handleMouseEnter = (event: React.MouseEvent) => {\r\n setIsSubMenuOpen(true);\r\n\r\n if (ContainerProps?.onMouseEnter) {\r\n ContainerProps.onMouseEnter(event);\r\n }\r\n };\r\n\r\n const handleMouseLeave = (event: React.MouseEvent) => {\r\n setIsSubMenuOpen(false);\r\n\r\n if (ContainerProps?.onMouseLeave) {\r\n ContainerProps.onMouseLeave(event);\r\n }\r\n };\r\n\r\n // Check if any immediate children are active\r\n const isSubmenuFocused = () => {\r\n const active = containerRef.current?.ownerDocument?.activeElement;\r\n for (const child of menuContainerRef.current?.children ?? []) {\r\n if (child === active) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n const handleFocus = (event: React.FocusEvent) => {\r\n if (event.target === containerRef.current) {\r\n setIsSubMenuOpen(true);\r\n }\r\n\r\n if (ContainerProps?.onFocus) {\r\n ContainerProps.onFocus(event);\r\n }\r\n };\r\n\r\n const handleKeyDown = (event: React.KeyboardEvent) => {\r\n if (event.key === 'Escape') {\r\n return;\r\n }\r\n\r\n if (isSubmenuFocused()) {\r\n event.stopPropagation();\r\n }\r\n\r\n const active = containerRef.current?.ownerDocument?.activeElement;\r\n\r\n if (event.key === 'ArrowLeft' && isSubmenuFocused()) {\r\n containerRef.current?.focus();\r\n }\r\n\r\n if (\r\n event.key === 'ArrowRight' &&\r\n event.target === containerRef.current &&\r\n event.target === active\r\n ) {\r\n const firstChild = menuContainerRef.current?.children[0] as\r\n | HTMLElement\r\n | undefined;\r\n firstChild?.focus();\r\n }\r\n };\r\n\r\n /** Custom Code */\r\n useEffect(() => {\r\n setIsSubMenuOpen(false);\r\n }, [parentMenuOpen]);\r\n\r\n const open = isSubMenuOpen && parentMenuOpen;\r\n const classes = useStyles({open});\r\n\r\n // Root element must have a `tabIndex` attribute for keyboard navigation\r\n let tabIndex;\r\n if (!props.disabled) {\r\n tabIndex = tabIndexProp !== undefined ? tabIndexProp : -1;\r\n }\r\n\r\n return (\r\n \r\n \r\n {/** Custom Code */}\r\n
{label}
\r\n
{rightIcon}
\r\n \r\n\r\n {\r\n setIsSubMenuOpen(false);\r\n }}\r\n >\r\n
\r\n {children}\r\n
\r\n \r\n
\r\n );\r\n});\r\n\r\ninterface NestedMenuProps {\r\n parentMenuOpen: boolean;\r\n text: string;\r\n ref?: any;\r\n icon: any;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const NestedMenu = React.forwardRef((props: NestedMenuProps, ref) => {\r\n const {parentMenuOpen, text, icon} = props;\r\n\r\n return (\r\n \r\n {icon}\r\n {text}\r\n \r\n }\r\n ref={ref}\r\n parentMenuOpen={parentMenuOpen}\r\n >\r\n {props.children}\r\n \r\n );\r\n});\r\n\r\nexport const MenuDivider = React.forwardRef((props: DividerProps, ref) => {\r\n return (\r\n \r\n );\r\n});\r\n\r\ninterface DenseMenuProps {\r\n open: boolean;\r\n onClose(): void;\r\n onEnter?(): void;\r\n anchorPosition: {left: number, top: number};\r\n keepMounted?: boolean;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const DenseMenu = React.forwardRef((props: DenseMenuProps, ref) => {\r\n const {keepMounted=true, children, ...other} = props;\r\n\r\n const theme = useTheme();\r\n\r\n const {enteringScreen} = theme.transitions.duration;\r\n\r\n const transitionProps = {\r\n timeout: {\r\n enter: enteringScreen,\r\n exit: 0\r\n }\r\n };\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n\r\n","import React, {\r\n useCallback,\r\n useEffect,\r\n useState,\r\n} from \"react\";\r\nimport {\r\n createStyles,\r\n InputAdornment,\r\n InputLabel,\r\n makeStyles,\r\n MenuItem,\r\n Select,\r\n Switch,\r\n TextField,\r\n Theme,\r\n Typography,\r\n IconButton,\r\n Input,\r\n useTheme\r\n} from \"@material-ui/core\";\r\nimport clsx from 'clsx';\r\nimport slash from 'slash';\r\nimport { dialog } from \"../electron-modules\";\r\nimport LocalScene from \"../viewer/js/projections\";\r\nimport { UnitConverter } from \"../viewer/js/utilities\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport FolderIcon from \"@material-ui/icons/Folder\";\r\nimport {AttachFile, Delete, Save} from \"@material-ui/icons\";\r\nimport { MenuDivider } from \"./menu-items\";\r\nimport isHtml from 'is-html';\r\n\r\nconst converter = new UnitConverter();\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n flexibleHeight: {\r\n height: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"space-between\",\r\n \"& span\": {\r\n flex: 1\r\n }\r\n },\r\n filePath: {\r\n wordBreak: \"break-word\"\r\n },\r\n fileButtonDiv: {\r\n paddingTop: theme.spacing(1),\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\"\r\n },\r\n dropdownWithLabel: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"space-between\",\r\n \"& span\": {\r\n flex: 1\r\n }\r\n },\r\n paddingBottom: {\r\n paddingBottom: `${theme.spacing(1)}px !important`,\r\n },\r\n inputParent: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n minHeight: theme.spacing(3),\r\n paddingBottom: theme.spacing(0.5)\r\n },\r\n inputLabel: {\r\n height: \"fit-content\"\r\n },\r\n inputSwitch: {\r\n marginTop: \"-0.25rem\"\r\n },\r\n inputFolder: {\r\n padding: theme.spacing(0.5),\r\n marginBottom: theme.spacing(-0.5)\r\n },\r\n error: {\r\n color: theme.palette.error.main\r\n },\r\n warning: {\r\n color: theme.palette.warning.main\r\n },\r\n })\r\n);\r\n\r\ninterface NumberData {\r\n value: number | string;\r\n error: boolean;\r\n index?: number;\r\n}\r\n\r\ninterface NumberFieldProps {\r\n data: NumberData;\r\n setData: React.Dispatch>;\r\n min: number;\r\n max: number;\r\n step?: number;\r\n adornment?: string;\r\n index?: number;\r\n units?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport const NumberField = (props: NumberFieldProps) => {\r\n const {units=false, ...other} = props;\r\n\r\n return units\r\n ? \r\n : ;\r\n};\r\n\r\ninterface NumberFieldWithLabelProps extends NumberFieldProps {\r\n title: string;\r\n label?: string;\r\n}\r\n\r\nexport const NumberFieldWithLabel = (props: NumberFieldWithLabelProps) => {\r\n const {title, label, ...other} = props;\r\n\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n
\r\n {title}\r\n
\r\n\r\n \r\n {label}\r\n \r\n\r\n \r\n
\r\n );\r\n};\r\n\r\nconst NumberFieldNoUnits = (props: NumberFieldProps) => {\r\n const {data, setData, min, max, adornment, step=1.0, index=0, ...other} = props;\r\n\r\n const {t} = useTranslation();\r\n\r\n // NOTE: Space character is required for even positioning in UI\r\n const helperText = data.error\r\n ? t('dialog.accepted-range-is-min-max', {min, max})\r\n : undefined;\r\n\r\n const endAdornment = adornment\r\n ? {adornment}\r\n : null;\r\n\r\n return (\r\n {\r\n let hasError = false;\r\n\r\n let floatValue = parseFloat(event.target.value);\r\n if (isNaN(floatValue)) {\r\n hasError = true;\r\n }\r\n\r\n if (floatValue > max) {\r\n hasError = true;\r\n } else if (floatValue < min) {\r\n hasError = true;\r\n }\r\n\r\n setData({\r\n value: event.target.value,\r\n error: hasError,\r\n index: index\r\n });\r\n }}\r\n />\r\n );\r\n};\r\n\r\nconst NumberFieldWithUnits = (props: NumberFieldProps) => {\r\n const {data, min, max, setData, step=1.0, ...other} = props;\r\n const units = LocalScene.viewProjectionUnits;\r\n\r\n const [convertedMin, setConvertedMin] = useState(0);\r\n const [convertedMax, setConvertedMax] = useState(0);\r\n const [convertedData, setConvertedData] = useState({\r\n value: 0,\r\n error: false\r\n });\r\n\r\n const convertNearestStep = (value, roundFunc) => {\r\n if (units === \"m\") {\r\n return value;\r\n };\r\n\r\n const converted = converter.convert(value, \"m\", units, 2);\r\n let numSteps = roundFunc(converted / step);\r\n return parseFloat((numSteps * step).toFixed(2));\r\n };\r\n\r\n useEffect(() => {\r\n // Initial conversion from meters to new units\r\n setConvertedMin(convertNearestStep(min, Math.floor));\r\n setConvertedMax(convertNearestStep(max, Math.ceil));\r\n setConvertedData({\r\n value: convertNearestStep(data.value, Math.floor),\r\n error: data.error\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n // Update the original state\r\n setData({...convertedData});\r\n }, [convertedData]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\ninterface DropdownWithLabelProps {\r\n title: string;\r\n label?: string;\r\n value: string | number;\r\n onChange: (value) => void;\r\n disabled?: boolean;\r\n seperator?: number[]\r\n options: [value: any, text: string][];\r\n}\r\n\r\nexport const DropdownWithLabel = (props: DropdownWithLabelProps) => {\r\n const {title, label, value, onChange, disabled=false,\r\n seperator, options} = props;\r\n\r\n const classes = useStyles();\r\n\r\n let menuOptions = [];\r\n\r\n options.forEach((data, index) => {\r\n const [value, text] = data;\r\n\r\n menuOptions.push((\r\n \r\n {text}\r\n \r\n ));\r\n\r\n const hasSeperator = seperator && seperator.includes(index);\r\n const isLastItem = index === options.length - 1;\r\n\r\n if (hasSeperator && !isLastItem) {\r\n menuOptions.push((\r\n \r\n ));\r\n }\r\n });\r\n\r\n return (\r\n
\r\n
\r\n \r\n {title}\r\n \r\n
\r\n\r\n {label && \r\n {label}\r\n }\r\n\r\n {\r\n onChange(event.target.value);\r\n }}\r\n >\r\n {menuOptions}\r\n \r\n
\r\n );\r\n};\r\n\r\ninterface FolderWithLabelProps {\r\n title: string;\r\n label?: string;\r\n value: string | number;\r\n onChange: (value) => void;\r\n}\r\n\r\nexport const FolderWithLabel = (props: FolderWithLabelProps) => {\r\n const {title, label, value, onChange} = props;\r\n const classes = useStyles();\r\n\r\n const handleFolderChange = async () => {\r\n const result = await dialog.showOpenDialog({\r\n properties: ['openDirectory']\r\n });\r\n\r\n if (result.canceled) return;\r\n let folderPath = slash(result.filePaths[0]);\r\n onChange(folderPath);\r\n };\r\n\r\n return (\r\n
\r\n
\r\n \r\n {title}\r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n \r\n {value ? value : label}\r\n \r\n
\r\n );\r\n};\r\n\r\ninterface FileWithLabelProps {\r\n title: string;\r\n label?: string;\r\n filter: {name: string; extensions: string[]}[]\r\n value: string | number;\r\n onChange: (value) => void;\r\n optional?: boolean;\r\n saveFile?: boolean;\r\n}\r\n\r\nexport const FileWithLabel = (props: FileWithLabelProps) => {\r\n const {title, label, filter, value, onChange,\r\n optional=false, saveFile=false} = props;\r\n\r\n const classes = useStyles();\r\n\r\n const handleFileChange = () => {\r\n dialog.showOpenDialog({\r\n title: title,\r\n properties: ['openFile'],\r\n filters: filter\r\n }).then(result => {\r\n if (result.canceled) {\r\n return;\r\n }\r\n\r\n let folderPath = slash(result.filePaths[0]);\r\n onChange(folderPath);\r\n });\r\n };\r\n\r\n const handleSaveFileChange = () => {\r\n dialog.showSaveDialog({\r\n title: title,\r\n filters: filter\r\n }).then(result => {\r\n if (result.canceled) {\r\n return;\r\n }\r\n onChange(result.filePath);\r\n });\r\n };\r\n\r\n const handleChange = saveFile\r\n ? handleSaveFileChange\r\n : handleFileChange;\r\n\r\n return (\r\n
\r\n
\r\n \r\n {title}\r\n \r\n\r\n
\r\n {value && optional && ( {\r\n onChange(null);\r\n }}\r\n >\r\n \r\n )}\r\n\r\n \r\n {saveFile ? \r\n : }\r\n \r\n
\r\n\r\n
\r\n\r\n \r\n {value ? value : label}\r\n \r\n
\r\n );\r\n};\r\n\r\ninterface InputWithLabelProps {\r\n title: string;\r\n label?: string | JSX.Element;\r\n value: string | number;\r\n onChange: (value) => void;\r\n required?: boolean;\r\n disabled?: boolean;\r\n error?: boolean;\r\n multiline?: boolean;\r\n placeholder?: string;\r\n}\r\n\r\nexport const InputWithLabel = (props: InputWithLabelProps) => {\r\n const classes = useStyles();\r\n const {value, title, onChange, label, required=true,\r\n disabled=false, error=false, ...other} = props;\r\n\r\n const [touched, setTouched] = useState(false);\r\n\r\n const onInputChange = useCallback((event) => {\r\n onChange(event.target.value);\r\n }, [onChange]);\r\n\r\n const onBlur = useCallback(() => {\r\n setTouched(true);\r\n }, []);\r\n\r\n return (\r\n
\r\n
\r\n {title}\r\n
\r\n\r\n \r\n\r\n \r\n {label}\r\n \r\n
\r\n );\r\n};\r\n\r\ninterface TextWithLabelProps {\r\n title: string\r\n value?: string\r\n label?: string | JSX.Element\r\n}\r\n\r\nexport const TextWithLabel = (props: TextWithLabelProps) => {\r\n const {title, label, value} = props;\r\n\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const renderAsHTML = (typeof value === \"string\") ? isHtml(value) : false;\r\n\r\n return (\r\n
\r\n
\r\n {title}\r\n
\r\n\r\n {value && \r\n {renderAsHTML && }\r\n\r\n {!renderAsHTML && \r\n {value}\r\n }\r\n }\r\n\r\n {label && \r\n {label}\r\n }\r\n
\r\n );\r\n};\r\n\r\ninterface CheckboxWithLabelProps {\r\n title: string;\r\n label?: string;\r\n value: boolean;\r\n onChange: (value) => void;\r\n}\r\n\r\nexport const CheckboxWithLabel = (props: CheckboxWithLabelProps) => {\r\n const {title, label, value, onChange} = props;\r\n\r\n const classes = useStyles();\r\n\r\n const onCheckboxChange = useCallback((_, checked) => {\r\n onChange(checked);\r\n }, [onChange]);\r\n\r\n return (\r\n
\r\n
\r\n \r\n {title}\r\n \r\n\r\n \r\n
\r\n\r\n \r\n {label}\r\n \r\n
\r\n );\r\n};","import React from 'react';\r\nimport {\r\n Box,\r\n LinearProgress,\r\n LinearProgressProps,\r\n Typography\r\n} from '@material-ui/core';\r\nimport { roundDigit } from '../viewer/js/utilities';\r\n\r\n// TODO: replace other linear progress with label with this (might need extra customization)\r\n\r\nexport const LinearProgressWithLabel = (props: LinearProgressProps & { value: number }) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {`${roundDigit(props.value, 2)}%`}\r\n \r\n \r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport {Box} from '@material-ui/core';\r\n\r\ninterface TabPanelProps {\r\n value: number;\r\n index: number;\r\n PanelProps?: object;\r\n BoxProps?: object;\r\n children: React.ReactNode\r\n}\r\n\r\nexport const TabPanel = (props: TabPanelProps) => {\r\n const {PanelProps={}, BoxProps={}, value, index} = props;\r\n\r\n const visible = value === index;\r\n\r\n return (\r\n \r\n {visible && \r\n \r\n {props.children}\r\n \r\n
}\r\n \r\n );\r\n};\r\n\r\nexport const TabProps = (index) => {\r\n return {\r\n id: `tab-${index}`,\r\n 'aria-controls': `tabpanel-${index}`,\r\n };\r\n};","import {\r\n Button,\r\n Chip,\r\n createStyles,\r\n Divider,\r\n Icon,\r\n makeStyles,\r\n PropTypes,\r\n Theme,\r\n Typography,\r\n useTheme\r\n} from \"@material-ui/core\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport clsx from 'clsx';\r\nimport { ArrowTooltip } from \".\";\r\nimport { Scrollbars } from 'react-custom-scrollbars';\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { nanoid } from \"@reduxjs/toolkit\";\r\nimport { DividerProps } from \"@material-ui/core/Divider\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n verticalDivider: {\r\n padding: theme.spacing(0.5, 0.25),\r\n display: \"flex\",\r\n alignItems: \"center\"\r\n },\r\n icons: {\r\n '& > .fa': {\r\n margin: theme.spacing(2),\r\n },\r\n display: \"flex\",\r\n padding: theme.spacing(0.5),\r\n },\r\n iconButton: {\r\n minWidth: \"0px !important\",\r\n flex: 1\r\n },\r\n iconSize: {\r\n fontSize: \"1.0em\",\r\n width: \"auto\"\r\n },\r\n success: {\r\n color: theme.palette.success.main\r\n },\r\n error: {\r\n color: theme.palette.error.main\r\n },\r\n disabled: {\r\n opacity: 0.3\r\n },\r\n listIcon: {\r\n color: \"rgba(0, 0, 0, 0.54)\",\r\n fontSize: \"20px\"\r\n }\r\n })\r\n);\r\n\r\ninterface DenseDividerProps extends DividerProps {\r\n spacing?: number[] | number;\r\n}\r\n\r\nexport const DenseDivider = (props: DenseDividerProps) => {\r\n const {spacing, ...other} = props;\r\n\r\n let spacingDown;\r\n let spacingUp;\r\n\r\n if (typeof(spacing) == \"number\") {\r\n spacingDown = spacing;\r\n spacingUp = spacing;\r\n } else if (typeof(spacing) == \"object\") {\r\n spacingUp = spacing[0];\r\n spacingDown = spacing[1];\r\n } else {\r\n spacingUp = 20;\r\n spacingDown = 20;\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\ninterface DividerWithTextProps {\r\n label: string;\r\n paddingTop?: number;\r\n paddingBottom?: number;\r\n}\r\n\r\n/**\r\n * Creates a divider with a chip element in the middle. Something\r\n * similar exists in the new material ui (5.x and up), but not in\r\n * our version (4.x), so we make our own instead.\r\n */\r\nexport const DividerWithText = (props: DividerWithTextProps) => {\r\n const theme = useTheme();\r\n\r\n const {label, paddingTop=32, paddingBottom=0} = props;\r\n\r\n return (\r\n
\r\n
\r\n\r\n \r\n \r\n \r\n\r\n
\r\n
\r\n );\r\n};\r\n\r\ninterface IconToolBarProps {\r\n margin?: number;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const IconToolBar = (props: IconToolBarProps) => {\r\n const {children, margin=0} = props;\r\n\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n};\r\n\r\nexport const ToolBarDivider = () => {\r\n const classes = useStyles();\r\n\r\n return (\r\n {\"|\"}\r\n );\r\n};\r\n\r\ninterface FontAwesomeIconProps {\r\n icon: string;\r\n success?: boolean;\r\n error?: boolean;\r\n disabled?: boolean;\r\n listIcon?: boolean;\r\n color?: PropTypes.Color | \"disabled\" | \"error\" | \"action\";\r\n}\r\n\r\nexport const FontAwesomeIcon = (props: FontAwesomeIconProps) => {\r\n const {icon, color, success, error, disabled, listIcon} = props;\r\n\r\n const classes = useStyles();\r\n const errorColor = error ? classes.error : \"\";\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\ninterface ToolBarButtonProps {\r\n icon: string;\r\n title: string;\r\n onClick: (event?) => void;\r\n visible?: boolean;\r\n success?: boolean;\r\n error?: boolean;\r\n disabled?: boolean;\r\n color?: PropTypes.Color | \"disabled\" | \"error\" | \"action\";\r\n}\r\n\r\nexport const ToolBarButton = (props: ToolBarButtonProps) => {\r\n const {icon, visible=true, title, onClick, color, success,\r\n error, disabled, ...other} = props;\r\n\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n\r\n const tooltipText = disabled\r\n ? `${title} (${t('toolbar.button-disabled')})`\r\n : title;\r\n\r\n return (\r\n \r\n {visible && (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\ninterface SlimScrollbarProps {\r\n scrollHeight?: number;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const SlimScrollbar = (props: SlimScrollbarProps) => {\r\n const {scrollHeight, children} = props;\r\n\r\n return (\r\n \r\n {/** Use scroll height that was passed in */}\r\n {scrollHeight && (\r\n {children}\r\n )}\r\n\r\n {/** No scroll height was provided */}\r\n {!scrollHeight && (\r\n {children}\r\n )}\r\n \r\n );\r\n};\r\n\r\ninterface DynamicScrollbarProps {\r\n scrollHeight: number;\r\n scrollPercent: number;\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const DynamicScrollbar = (props: DynamicScrollbarProps) => {\r\n const {scrollHeight, scrollPercent, children} = props;\r\n\r\n const [scroll, setScroll] = useState(false);\r\n const [maxHeight, setMaxHeight] = useState(0);\r\n const listElementID = useState(nanoid())[0];\r\n\r\n const getMaxHeight = () => {\r\n const percentHeight = (scrollPercent/100) * window.innerHeight;\r\n return Math.min(scrollHeight, percentHeight);\r\n };\r\n\r\n const checkScrollHeight = () => {\r\n let element = document.getElementById(listElementID);\r\n if (!element) return;\r\n\r\n const height = element.offsetHeight;\r\n const maxHeight = getMaxHeight();\r\n\r\n setScroll(height > maxHeight);\r\n setMaxHeight(maxHeight);\r\n };\r\n\r\n useEffect(() => {\r\n checkScrollHeight();\r\n window.addEventListener('resize', checkScrollHeight);\r\n\r\n return () => {\r\n window.removeEventListener('resize', checkScrollHeight);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n checkScrollHeight();\r\n }, [children, window.innerHeight]);\r\n\r\n return (\r\n \r\n {(!scroll) && (\r\n
\r\n {children}\r\n
\r\n )}\r\n\r\n {(scroll) && (\r\n \r\n
\r\n {children}\r\n
\r\n
\r\n )}\r\n
\r\n );\r\n};","\r\nimport React, {\r\n memo,\r\n ReactElement,\r\n useCallback,\r\n useMemo,\r\n useState,\r\n useEffect\r\n} from \"react\";\r\nimport {\r\n Grow,\r\n Tooltip,\r\n TooltipProps,\r\n useTheme\r\n} from \"@material-ui/core\";\r\nimport {useTranslation} from \"react-i18next\";\r\n\r\ntype TooltipPosition = {\r\n x: number;\r\n y: number;\r\n}\r\n\r\nexport const ArrowTooltip = (props: TooltipProps) => {\r\n return (\r\n \r\n {props.children as any}\r\n \r\n );\r\n};\r\n\r\ninterface CursorTooltipProps {\r\n textLines: string[]\r\n children: ReactElement,\r\n ignoreToggle?: boolean\r\n}\r\n\r\nexport const CursorTooltip = memo((props: CursorTooltipProps) => {\r\n const {textLines, children, ignoreToggle} = props;\r\n\r\n const theme = useTheme();\r\n const {t} = useTranslation();\r\n\r\n const [hideTooltips, setHideTooltips] = useState(false);\r\n const [position, setPosition] = useState({\r\n x: undefined,\r\n y: undefined\r\n });\r\n\r\n const title = useMemo(() => {\r\n const modifiedLines = [...textLines];\r\n if ((textLines.length > 0) && !ignoreToggle) {\r\n modifiedLines.push(t('tooltip.toggle-tooltip'));\r\n }\r\n\r\n return modifiedLines.map((line, index) => (\r\n \r\n {(index !== 0) && (
)}\r\n {line}\r\n
\r\n ));\r\n }, [textLines]);\r\n\r\n const onClose = useCallback(() => {\r\n setPosition({\r\n x: undefined,\r\n y: undefined\r\n });\r\n setHideTooltips(false);\r\n }, []);\r\n\r\n const onMouseMove = useCallback((event) => {\r\n setPosition({\r\n x: event.pageX,\r\n y: event.pageY\r\n });\r\n }, []);\r\n\r\n const {enteringScreen} = theme.transitions.duration;\r\n\r\n const transitionProps = {\r\n timeout: {\r\n enter: enteringScreen,\r\n exit: 0\r\n }\r\n };\r\n\r\n /** Tooltip toggle hotkey event listener */\r\n useEffect(() => {\r\n if (!ignoreToggle) {\r\n if (textLines.length === 0) {\r\n setHideTooltips(false);\r\n return;\r\n }\r\n const onHotkey = (event => {\r\n if (event.target instanceof HTMLInputElement) {\r\n return;\r\n }\r\n if (event.which === 192) {\r\n setHideTooltips(!hideTooltips);\r\n }\r\n });\r\n\r\n window.addEventListener('keydown', onHotkey, false);\r\n return () => {\r\n window.removeEventListener('keydown', onHotkey, false);\r\n };\r\n }\r\n }, [textLines, hideTooltips]);\r\n\r\n const visible = (textLines.length > 0)\r\n && (position.x !== undefined) && (!hideTooltips);\r\n\r\n return (\r\n ({\r\n top: position.y,\r\n left: position.x,\r\n right: position.x,\r\n bottom: position.y,\r\n width: 0,\r\n height: 0\r\n } as any)\r\n }\r\n }}\r\n >\r\n {children}\r\n \r\n );\r\n});","import { memo } from \"react\";\r\n\r\n/** Component that only gets evaluated when the open state is modified */\r\nexport const memoWithOpen = (component) => {\r\n const areEqual = (prevProps, nextProps) => {\r\n return prevProps.open === nextProps.open;\r\n };\r\n\r\n return memo(component, areEqual);\r\n};","import {\r\n dialog,\r\n getCurrentWindow,\r\n Menu,\r\n isDevMode,\r\n remote,\r\n shell,\r\n logDirectoryPath,\r\n app\r\n} from './electron-modules';\r\nimport {\r\n WorkflowExecutable,\r\n PythonExecutable\r\n} from \"./executable\";\r\nimport {t} from './localization';\r\n\r\nconst menuStateCache = {} as any;\r\n\r\nconst fileMenu = {\r\n get label() {\r\n return t(\"electron-menu.file.header\");\r\n },\r\n submenu: [\r\n {\r\n get label() {\r\n return t(\"electron-menu.file.open-workflow\");\r\n },\r\n click: async () => {\r\n new WorkflowExecutable().run({\r\n commands: []\r\n });\r\n }\r\n },\r\n {\r\n get label() {\r\n return t(\"electron-menu.file.global-settings\");\r\n },\r\n click: async () => {\r\n sendToMainWindow('open-global-settings');\r\n }\r\n },\r\n {\r\n type: 'separator'\r\n },\r\n {\r\n get label() {\r\n return t(\"electron-menu.file.new-project\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"new-project\");\r\n }\r\n },\r\n {\r\n get label() {\r\n return t(\"electron-menu.file.open-project\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"load-project\");\r\n }\r\n },\r\n {\r\n get label() {\r\n return t(\"electron-menu.file.open-project-cloud\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"open-cloud-projects\");\r\n }\r\n },\r\n {\r\n id: \"save-project\",\r\n get label() {\r\n return t(\"electron-menu.file.save-project\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"save-project\");\r\n }\r\n },\r\n {\r\n id: \"save-project-as\",\r\n get label() {\r\n return t(\"electron-menu.file.save-as\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"save-project-as\");\r\n }\r\n },\r\n {\r\n type: 'separator'\r\n },\r\n {\r\n get label() {\r\n return t(\"electron-menu.file.exit-without-saving\");\r\n },\r\n click: async () => {\r\n app.exit();\r\n }\r\n },\r\n ]\r\n};\r\n\r\nconst helpMenu = {\r\n get label() {\r\n return t(\"electron-menu.help.header\");\r\n },\r\n submenu: [\r\n {\r\n get label() {\r\n return t(\"electron-menu.help.about\");\r\n },\r\n click: async () => {\r\n sendToMainWindow('open-about');\r\n },\r\n },\r\n {\r\n visible: isDevMode,\r\n accelerator: 'Shift+F12',\r\n get label() {\r\n return t(\"electron-menu.help.dev-tools\");\r\n },\r\n click: () => {\r\n const mainWindow = remote.getCurrentWindow();\r\n mainWindow.toggleDevTools();\r\n },\r\n },\r\n {\r\n get label() {\r\n return t(\"electron-menu.help.open-logs\");\r\n },\r\n click: async () => {\r\n shell.openPath(logDirectoryPath);\r\n }\r\n },\r\n {\r\n get label() {\r\n return t(\"electron-menu.help.clear-cache\");\r\n },\r\n click: async () => {\r\n clearMlResources();\r\n }\r\n },\r\n {\r\n get label() {\r\n return t(\"electron-menu.help.support\");\r\n },\r\n click: async () => {\r\n shell.openExternal('https://solv3d.com/support/');\r\n }\r\n },\r\n ]\r\n};\r\n\r\nconst toolsMenu = {\r\n id: 'tools',\r\n get label() {\r\n return t(\"electron-menu.tools.header\");\r\n },\r\n submenu: [\r\n {\r\n id: 'projections',\r\n get label() {\r\n return t(\"electron-menu.tools.projections.header\");\r\n },\r\n submenu: [\r\n {\r\n id: 'projection-manager',\r\n get label() {\r\n return t(\"electron-menu.tools.projections.manager\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"open-projection-manager\");\r\n }\r\n },\r\n {\r\n id: 'local-projections',\r\n get label() {\r\n return t(\"electron-menu.tools.projections.local\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"open-local-projection\");\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n id: \"aligner-menu\",\r\n get label() {\r\n return t(\"electron-menu.tools.data-aligner.header\");\r\n },\r\n submenu: [\r\n {\r\n id: 'aligner-advanced-menu',\r\n enabled: false,\r\n get label() {\r\n return t(\"electron-menu.tools.data-aligner.advanced\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"open-image-aligner-adv\");\r\n }\r\n },\r\n {\r\n id: 'aligner-basic-menu',\r\n enabled: false,\r\n get label() {\r\n return t(\"electron-menu.tools.data-aligner.basic\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"open-image-aligner-basic\");\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n id: \"training-menu\",\r\n get label() {\r\n return t(\"electron-menu.tools.training.header\");\r\n },\r\n submenu: [\r\n {\r\n id: 'label-ortho-menu',\r\n enabled: false,\r\n get label() {\r\n return t(\"electron-menu.tools.training.ortho\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"open-label-ortho\");\r\n }\r\n },\r\n {\r\n id: 'label-scene-menu',\r\n get label() {\r\n return t(\"electron-menu.tools.training.scene\");\r\n },\r\n enabled: false,\r\n click: async () => {\r\n sendToMainWindow(\"open-label-scene\");\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n id: 'point-markup-menu',\r\n get label() {\r\n return t(\"electron-menu.tools.markup.header\");\r\n },\r\n submenu: [\r\n {\r\n id: \"point-markup\",\r\n get label() {\r\n return t(\"electron-menu.tools.markup.modify\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"open-point-markup\");\r\n }\r\n },\r\n {\r\n id: \"data-splitting\",\r\n get label() {\r\n return t(\"electron-menu.tools.markup.split\");\r\n },\r\n click: async () => {\r\n sendToMainWindow(\"open-data-splitting\");\r\n }\r\n },\r\n ]\r\n },\r\n {\r\n id: 'exporter-menu',\r\n get label() {\r\n return t(\"electron-menu.tools.export.header\");\r\n },\r\n submenu: [\r\n {\r\n id: \"static-exporter-menu\",\r\n get label() {\r\n return t(\"electron-menu.tools.export.local\");\r\n },\r\n enabled: false,\r\n click: async () => {\r\n sendToMainWindow(\"open-static-export\");\r\n }\r\n },\r\n {\r\n id: \"cloud-exporter-menu\",\r\n get label() {\r\n return t(\"electron-menu.tools.export.cloud\");\r\n },\r\n enabled: false,\r\n click: async () => {\r\n sendToMainWindow(\"open-cloud-export\");\r\n }\r\n }\r\n ]\r\n }\r\n ]\r\n};\r\n\r\nconst debugMenu = {\r\n get label() {\r\n return t(\"electron-menu.debug.refresh\");\r\n },\r\n click: () => {\r\n getCurrentWindow().reload();\r\n }\r\n};\r\n\r\nconst sendToMainWindow = (message, payload=null) => {\r\n const mainWindow = remote.getCurrentWindow();\r\n mainWindow.webContents.send(message, payload);\r\n};\r\n\r\nconst clearMlResources = () => {\r\n let exe = new PythonExecutable();\r\n let commands = [\r\n \"-p\", \"remove_ml_resources\",\r\n \"--remove\", true\r\n ];\r\n\r\n exe.run({\r\n commands,\r\n saveLogs: true,\r\n onClose: () => {\r\n dialog.showMessageBox({\r\n type: 'info',\r\n title: t(\"dialog.clear-cache-title\"),\r\n message: t(\"dialog.clear-cache-message\"),\r\n noLink: true\r\n });\r\n }\r\n });\r\n};\r\n\r\nconst setToolEnabled = (toolName, state) => {\r\n const menu = Menu.getApplicationMenu();\r\n const element = menu.getMenuItemById(toolName);\r\n if (!element) return;\r\n element.enabled = state;\r\n};\r\n\r\nconst setMenuState = async toolName => {\r\n if (isDevMode) {\r\n setToolEnabled(toolName, true);\r\n return;\r\n }\r\n\r\n if (toolName in menuStateCache) {\r\n const {running, state} = menuStateCache[toolName];\r\n if (running) return;\r\n\r\n // Apply saved menu state\r\n setToolEnabled(toolName, state);\r\n return;\r\n }\r\n\r\n // Insert default cache values\r\n menuStateCache[toolName] = {\r\n running: true,\r\n state: null\r\n };\r\n\r\n const exe = new PythonExecutable();\r\n\r\n exe.run({\r\n commands: ['--check-tool', toolName],\r\n showStatus: false,\r\n onLine: jsonData => {\r\n if (!jsonData.license_check) return;\r\n let {valid} = jsonData.license_check;\r\n\r\n // Update cache values\r\n menuStateCache[toolName] = {\r\n running: false,\r\n state: valid\r\n };\r\n\r\n setToolEnabled(toolName, valid);\r\n }\r\n });\r\n};\r\n\r\nconst checkAllowedMenuItems = async (isStandardProject: boolean) => {\r\n if (isStandardProject) {\r\n setMenuState('aligner-advanced-menu');\r\n setMenuState('static-exporter-menu');\r\n setMenuState('label-ortho-menu');\r\n setMenuState('label-scene-menu');\r\n } else {\r\n setToolEnabled('aligner-advanced-menu', false);\r\n setToolEnabled('training-menu', false);\r\n setToolEnabled('point-markup-menu', false);\r\n setToolEnabled('static-exporter-menu', false);\r\n setToolEnabled('save-project', false);\r\n setToolEnabled('save-project-as', false);\r\n }\r\n\r\n setMenuState('aligner-basic-menu');\r\n setMenuState('cloud-exporter-menu');\r\n};\r\n\r\nexport const buildElectronMenu = (isStandardProject: boolean) => {\r\n if (!Menu) return;\r\n\r\n const template = isDevMode\r\n ? [fileMenu, toolsMenu, helpMenu, debugMenu]\r\n : [fileMenu, toolsMenu, helpMenu];\r\n\r\n const menu = Menu.buildFromTemplate(template);\r\n Menu.setApplicationMenu(menu);\r\n checkAllowedMenuItems(isStandardProject);\r\n};\r\n","import React, { useEffect } from 'react';\r\nimport { useCallback } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { toast } from '../../app';\r\nimport { setLocalizedURL } from '../../localization';\r\nimport { ListItemText, MenuItem, Popover, Typography } from '@material-ui/core';\r\nimport { buildElectronMenu } from '../../electron-menu';\r\nimport { useViewer } from '../../hooks';\r\nimport { useSelector } from 'react-redux';\r\nimport { selectProjectType } from '../../redux/project-slice';\r\nimport { ProjectType } from '../../types/project';\r\n\r\nexport type Language = 'en' | 'de' | 'es' | 'fr' | 'ja';\r\n\r\nexport enum LanguageOptions {\r\n en = 'English',\r\n de = 'Deutsch',\r\n fr = 'Français',\r\n es = 'Español',\r\n ja = '日本語<'\r\n};\r\n\r\ninterface LanguagePopoverProps {\r\n anchorEl: null | Element;\r\n onClose?: () => void;\r\n open?: boolean;\r\n}\r\n\r\nexport const LanguagePopover = (props: LanguagePopoverProps) => {\r\n const { anchorEl, onClose, open = false, ...other } = props;\r\n const { i18n, t } = useTranslation();\r\n const {viewer} = useViewer();\r\n\r\n const projectType = useSelector(selectProjectType);\r\n const isStandardProject = projectType === ProjectType.Standard;\r\n\r\n const handleChange = useCallback(async (language: Language): Promise => {\r\n onClose?.();\r\n await i18n.changeLanguage(language);\r\n const message = t('language-picker.language_changed');\r\n toast.success(message);\r\n }, [onClose, t, i18n]);\r\n\r\n useEffect(() => {\r\n buildElectronMenu(isStandardProject);\r\n viewer?.updateCompass();\r\n\r\n // Update language option in url. A small timeout is required\r\n const timeout = setTimeout(() => {\r\n setLocalizedURL(i18n.language);\r\n }, 500);\r\n\r\n return () => {\r\n clearTimeout(timeout);\r\n };\r\n }, [i18n.language, isStandardProject]);\r\n\r\n return (\r\n \r\n {(Object.keys(LanguageOptions) as Language[]).map((language) => {\r\n const text = LanguageOptions[language];\r\n\r\n return (\r\n handleChange(language)}\r\n key={language}\r\n >\r\n \r\n {text}\r\n \r\n )}\r\n />\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { Button, Typography } from '@material-ui/core';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { usePopover } from '../../hooks';\r\nimport { Language, LanguageOptions, LanguagePopover } from './language-popover';\r\nimport { ArrowTooltip } from '../tooltips';\r\n\r\nexport const LanguageSwitch = () => {\r\n const { i18n, t } = useTranslation();\r\n const popover = usePopover();\r\n let text = LanguageOptions[i18n.language as Language];\r\n\r\n return (\r\n <>\r\n \r\n \r\n {\r\n text ? text : \"Unknown\"\r\n }\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { Box, Button, Divider, Popover, Typography } from '@material-ui/core';\r\nimport { createStyles, makeStyles, Theme, useTheme } from \"@material-ui/core/styles\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useAuth } from '../../hooks';\r\nimport { isCloudSite } from '../../electron-modules';\r\nimport { AccessType } from '../../types/project';\r\n\r\ninterface AccountPopoverProps {\r\n anchorEl: null | Element;\r\n onClose?: () => void;\r\n open?: boolean;\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n divider: {\r\n margin: theme.spacing(0, 1.5)\r\n },\r\n buttonParent: {\r\n display: \"flex\",\r\n padding: theme.spacing(0.5),\r\n justifyContent: \"center\"\r\n }\r\n })\r\n);\r\n\r\nexport const AccountPopover = (props: AccountPopoverProps) => {\r\n const { anchorEl, onClose, open = false } = props;\r\n\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const { t } = useTranslation();\r\n\r\n const {linkAccount, signOut, loggedIn, user, permissions} = useAuth();\r\n\r\n const getAccountType = () => {\r\n switch (permissions.type) {\r\n case AccessType.ViewOnly:\r\n return t('user-account.view_only');\r\n case AccessType.Standard:\r\n return t('user-account.standard_user');\r\n case AccessType.Admin:\r\n return t('user-account.administrator');\r\n default:\r\n return t('user-account.unknown_user_type');\r\n }\r\n };\r\n\r\n const accountType = getAccountType();\r\n\r\n return (\r\n \r\n {/** Standard user profile */}\r\n {loggedIn && \r\n \r\n {(user?.firstName || user?.lastName) && \r\n {`${user.firstName} ${user.lastName}`}\r\n }\r\n\r\n {isCloudSite && \r\n {`(${accountType})`}\r\n }\r\n\r\n {user?.email && \r\n {user.email}\r\n }\r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n {t(\"user-account.logout_engine_cloud\")}\r\n \r\n \r\n }\r\n\r\n {/** Anonymous view only */}\r\n {!loggedIn && isCloudSite && \r\n \r\n \r\n {t('user-account.accessing_the_project_as_an_anonymous')}\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n {t(\"user-account.login_engine_cloud\")}\r\n \r\n \r\n }\r\n\r\n {/** Unlinked account */}\r\n {!loggedIn && !isCloudSite && \r\n \r\n \r\n {t('user-account.an_linked_engine_cloud_account_is_required')}\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n {t(\"user-account.login_engine_cloud\")}\r\n \r\n \r\n }\r\n\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport AccountCircleIcon from '@material-ui/icons/AccountCircle';\r\nimport { ArrowTooltip } from '../tooltips';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { usePopover } from '../../hooks';\r\nimport { IconButton } from '@material-ui/core';\r\nimport { AccountPopover } from './account-popover';\r\n\r\nexport const AccountButton = () => {\r\n const { t } = useTranslation();\r\n const popover = usePopover();\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n );\r\n};","import React, { useEffect } from \"react\";\r\nimport { toast, Toaster as HotToaster, useToasterStore } from 'react-hot-toast';\r\nimport { useTheme, fade } from \"@material-ui/core\";\r\nimport { corporate } from \"../theme\";\r\n\r\nexport const Toaster = () => {\r\n const theme = useTheme();\r\n const { toasts } = useToasterStore();\r\n\r\n const maxNumberToasts = 3;\r\n\r\n useEffect(() => {\r\n toasts\r\n .filter((t) => t.visible)\r\n .filter((_, i) => i >= maxNumberToasts)\r\n .forEach((t) => toast.remove(t.id));\r\n }, [toasts]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n","import React, { useCallback } from \"react\";\r\nimport { makeStyles, Theme, createStyles } from \"@material-ui/core\";\r\nimport Typography, { TypographyProps } from \"@material-ui/core/Typography\";\r\nimport { openExternalLink } from \"../urls\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n typographyLink: {\r\n display: \"inline\",\r\n fontWeight: \"bold\",\r\n color: \"rgb(25, 118, 210)\",\r\n cursor: \"pointer\",\r\n \"&:hover\": {\r\n textDecoration: \"underline\",\r\n textDecorationColor: \"rgb(25, 118, 210, 0.4)\",\r\n }\r\n }\r\n }),\r\n);\r\n\r\ninterface TypographyLinkProps extends TypographyProps {\r\n text: string\r\n url: string\r\n}\r\n\r\nexport const TypographyLink = (props: TypographyLinkProps) => {\r\n const classes = useStyles();\r\n const {text, url, ...other} = props;\r\n\r\n const onClick = useCallback(() => {\r\n openExternalLink(url);\r\n }, [url]);\r\n\r\n return (\r\n \r\n {text}\r\n \r\n );\r\n};\r\n","import { makeStyles, Theme, createStyles, Input } from \"@material-ui/core\";\r\nimport React from \"react\";\r\nimport { useState, useEffect, useCallback } from \"react\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n colorPicker: {\r\n width: \"3.5em\",\r\n height: \"1.25em\",\r\n padding: \"0px\",\r\n border: \"1px solid darkgray\",\r\n borderRadius: \"2px\",\r\n \"&:hover\": {\r\n border: \"1px solid black\"\r\n }\r\n }\r\n })\r\n);\r\n\r\ninterface ColorPickerProps {\r\n value: string;\r\n onSubmit(value): void;\r\n}\r\n\r\nexport const ColorPicker = (props: ColorPickerProps) => {\r\n const {value, onSubmit} = props;\r\n\r\n const classes = useStyles();\r\n const [color, setColor] = useState(\"#000000\");\r\n\r\n useEffect(() => {\r\n setColor(value);\r\n }, [value]);\r\n\r\n const onChange = useCallback((event) => {\r\n setColor(event.target.value);\r\n }, []);\r\n\r\n return (\r\n {\r\n onSubmit(color);\r\n }}\r\n disableUnderline={true}\r\n classes={{\r\n input: classes.colorPicker\r\n }}\r\n type=\"color\"\r\n />\r\n );\r\n};","import React, { useEffect } from \"react\";\r\nimport { createContext, useState } from \"react\";\r\nimport { isStaticSite, isCloudSite, storage, isElectronApp } from \"../electron-modules\";\r\nimport { useAuth } from \"../hooks\";\r\nimport { ControlType } from \"../types/controls\";\r\nimport { VolumeType, SamplingRate, AerialMeasureType } from \"../types/measurements\";\r\nimport { ProviderProps } from \"./props\";\r\n\r\ninterface GlobalSettingsState {\r\n orthoQuality: number;\r\n orthoOpacity: number;\r\n controlType: ControlType;\r\n openQuickNav: boolean;\r\n aerialMeasureType: AerialMeasureType;\r\n volumeType: VolumeType;\r\n volumeSampleRate: SamplingRate;\r\n viewerBackground: string;\r\n aerialBackground: string;\r\n}\r\n\r\nexport const initialState = {\r\n orthoQuality: 0.75,\r\n orthoOpacity: 1,\r\n controlType: ControlType.Encompass,\r\n openQuickNav: true,\r\n aerialMeasureType: AerialMeasureType.Spherical,\r\n volumeType: VolumeType.MultiPlane,\r\n volumeSampleRate: SamplingRate.Medium,\r\n viewerBackground: \"#e2d1c3\",\r\n aerialBackground: \"#444444\"\r\n} as GlobalSettingsState;\r\n\r\nexport const GlobalSettingsContext = createContext({\r\n ...initialState,\r\n update: (values: GlobalSettingsState) => {}\r\n});\r\n\r\nexport const getGlobalSettingsFromStorage = async () => {\r\n if (isElectronApp) {\r\n return storage.getSync(\"global-settings\");\r\n }\r\n\r\n const cache = Date.now();\r\n const root = isCloudSite ? window.location.pathname : \".\";\r\n const configURL = `${root}/global-settings.json?cache=${cache}`;\r\n\r\n const response = await fetch(configURL);\r\n return await response.json();\r\n};\r\n\r\nexport const GlobalSettingsProvider = (props: ProviderProps) => {\r\n const [state, setState] = useState({...initialState});\r\n const { initialized } = useAuth();\r\n\r\n const loadFromStorage = async () => {\r\n try {\r\n const settings = await getGlobalSettingsFromStorage();\r\n const newState = {...state, ...settings};\r\n\r\n setState(newState);\r\n } catch {\r\n console.error(\"Error reading global settings\");\r\n }\r\n };\r\n\r\n const saveToStorage = (values: GlobalSettingsState) => {\r\n if (isStaticSite) return;\r\n storage.setSync(\"global-settings\", values);\r\n };\r\n\r\n const onUpdate = (values: GlobalSettingsState) => {\r\n setState({...values});\r\n saveToStorage(values);\r\n };\r\n\r\n useEffect(() => {\r\n if (!initialized) return;\r\n\r\n loadFromStorage();\r\n }, [initialized]);\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};","import React, { createContext, useState } from \"react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { engineCloudURL } from \"../urls\";\r\nimport { io, Socket } from \"socket.io-client\";\r\nimport { isElectronApp } from \"../electron-modules\";\r\nimport {\r\n wsCreateFolder,\r\n wsDeleteFolder,\r\n wsUpdateFolder,\r\n} from \"../redux/folders-slice\";\r\nimport {\r\n wsCreateAsset,\r\n wsDeleteAsset,\r\n wsUpdateAsset,\r\n} from \"../redux/assets-slice\";\r\nimport {\r\n wsCreateBookmark,\r\n wsDeleteBookmark,\r\n wsUpdateBookmark,\r\n} from \"../redux/bookmarks-slice\";\r\nimport { ProviderProps } from \"./props\";\r\n\r\nenum EventType {\r\n JoinRoom = \"join_room\",\r\n LeaveRoom = \"leave_room\",\r\n CreateObject = \"create_asset\",\r\n DeleteObject = \"delete_asset\",\r\n UpdateObject = \"update_asset\",\r\n}\r\n\r\nenum ObjectType {\r\n Assets = \"assets\",\r\n Folders = \"folders\",\r\n Bookmarks = \"bookmarks\"\r\n}\r\n\r\nexport const WebSocketContext = createContext({\r\n connect: (accessToken: string) => {},\r\n disconnect: () => {},\r\n joinRoom: (roomID: string) => {}\r\n});\r\n\r\nexport const WebSocketProvider = (props: ProviderProps) => {\r\n const dispatch = useDispatch();\r\n\r\n const [socket, setSocket] = useState(null);\r\n const [currentRoomID, setCurrentRoomID] = useState(null);\r\n\r\n const connect = (accessToken: string) => {\r\n let extraHeaders = {};\r\n\r\n if (isElectronApp) {\r\n extraHeaders = {\r\n Authorization: `Bearer ${accessToken}`\r\n };\r\n }\r\n\r\n return new Promise(resolve => {\r\n const socket = io(engineCloudURL, {\r\n addTrailingSlash: false,\r\n extraHeaders\r\n });\r\n\r\n setSocket(socket);\r\n\r\n socket.on(\"connect\", () => {\r\n register(socket);\r\n resolve(true);\r\n });\r\n\r\n socket.on(\"connect_error\", () => {\r\n socket.disconnect();\r\n resolve(false);\r\n });\r\n });\r\n };\r\n\r\n const disconnect = () => {\r\n if (!socket?.connected) return;\r\n\r\n socket.disconnect();\r\n setSocket(null);\r\n };\r\n\r\n const onCreate = (message) => {\r\n const {type, data} = message;\r\n\r\n if (type === ObjectType.Assets) {\r\n dispatch(wsCreateAsset(data));\r\n } else if (type === ObjectType.Folders) {\r\n dispatch(wsCreateFolder(data));\r\n } else if (type === ObjectType.Bookmarks) {\r\n dispatch(wsCreateBookmark(data));\r\n }\r\n };\r\n\r\n const onUpdate = (message) => {\r\n const {type, data} = message;\r\n\r\n if (type === ObjectType.Assets) {\r\n dispatch(wsUpdateAsset(data));\r\n } else if (type === ObjectType.Folders) {\r\n dispatch(wsUpdateFolder(data));\r\n } else if (type === ObjectType.Bookmarks) {\r\n dispatch(wsUpdateBookmark(data));\r\n }\r\n };\r\n\r\n const onDelete = (message) => {\r\n const {type, objectID} = message;\r\n\r\n if (type === ObjectType.Assets) {\r\n dispatch(wsDeleteAsset(objectID));\r\n } else if (type === ObjectType.Folders) {\r\n dispatch(wsDeleteFolder(objectID));\r\n } else if (type === ObjectType.Bookmarks) {\r\n dispatch(wsDeleteBookmark(objectID));\r\n }\r\n };\r\n\r\n const register = (socket: Socket) => {\r\n socket.on(EventType.CreateObject, onCreate);\r\n socket.on(EventType.UpdateObject, onUpdate);\r\n socket.on(EventType.DeleteObject, onDelete);\r\n };\r\n\r\n const joinRoom = (roomID: string) => {\r\n if (!socket?.connected) return;\r\n\r\n if (currentRoomID) {\r\n // Leave previously joined room\r\n socket.emit(EventType.LeaveRoom, currentRoomID);\r\n }\r\n\r\n socket.emit(EventType.JoinRoom, roomID);\r\n setCurrentRoomID(roomID);\r\n };\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};","import memoizeFormatConstructor from 'intl-format-cache';\r\n\r\nconst getDateTimeFormat = memoizeFormatConstructor(Intl.DateTimeFormat);\r\n\r\nconst defaultOptions = {\r\n timeStyle: \"short\",\r\n dateStyle: \"short\"\r\n} as Intl.DateTimeFormatOptions;\r\n\r\n/**\r\n * Convert date to locale string using cached formatter.\r\n * This is much faster than Date.toLocaleString\r\n * */\r\nexport const toLocaleString = (text: string, language: string, options = defaultOptions): string => {\r\n const createdAt = new Date(text);\r\n const formatter = getDateTimeFormat(language, options);\r\n return formatter.format(createdAt);\r\n};","export default __webpack_public_path__ + \"static/media/classifications.24975ac9.png\";","import {createSlice, PayloadAction} from '@reduxjs/toolkit';\r\nimport {Classification, classifications} from \"../classifications\";\r\nimport {isStaticSite, storage} from \"../electron-modules\";\r\nimport {cloneDeep} from 'lodash';\r\nimport { isMobile } from '../viewer/js/utilities';\r\n\r\nexport interface Clamp {\r\n min: number;\r\n max: number;\r\n}\r\n\r\nexport type ColorMapKey = 'heat-map' | 'awesome-green' | 'pastel-shades' | 'blue-orange' |\r\n 'black-orange' | 'blue-hue' | 'blue-red' | 'jet' | 'grayscale';\r\n\r\nexport enum ColorType {\r\n Intensity,\r\n RGB,\r\n Height,\r\n Classification\r\n}\r\n\r\nexport enum MarkerNavType {\r\n Arrows,\r\n Markers,\r\n None\r\n}\r\n\r\nexport interface ClassificationSetting extends Classification {\r\n visible: boolean;\r\n available: boolean;\r\n}\r\n\r\nexport interface SettingsState {\r\n colorMap: ColorMapKey;\r\n colorType: ColorType;\r\n dynamicSize: boolean;\r\n circularPoints: boolean;\r\n arrowMarkers: MarkerNavType;\r\n drawerOpen: boolean;\r\n activeTab: number;\r\n opacity: number;\r\n heightClip: Clamp;\r\n intensityClip: Clamp;\r\n cloudScale: number;\r\n cloudMinimum: number;\r\n cloudMaxPoints: number;\r\n cloudDistance: number;\r\n tagDistance: number;\r\n classifications: ClassificationSetting[];\r\n switched: boolean;\r\n}\r\n\r\nconst defaultIntensityClip = {\r\n min: 0,\r\n max: 1\r\n};\r\n\r\nconst defaultHeightClip = {\r\n min: 0,\r\n max: 1\r\n};\r\n\r\nconst defaultClassifications = classifications.map(classification => ({\r\n visible: true,\r\n available: false,\r\n ...classification\r\n}));\r\n\r\nexport const initialSettingsState = {\r\n colorMap: 'jet',\r\n colorType: ColorType.Height,\r\n dynamicSize: true,\r\n circularPoints: true,\r\n arrowMarkers: MarkerNavType.Arrows,\r\n activeTab: 0,\r\n opacity: 0.5,\r\n cloudMaxPoints: 5,\r\n cloudDistance: 1000,\r\n cloudScale: 1.0,\r\n cloudMinimum: 2.0,\r\n tagDistance: 1000,\r\n switched: false,\r\n drawerOpen: !isMobile,\r\n heightClip: defaultHeightClip,\r\n intensityClip: defaultIntensityClip,\r\n classifications: defaultClassifications,\r\n} as SettingsState;\r\n\r\nconst loadSavedDefaults = () => {\r\n if (isStaticSite) return {};\r\n\r\n return storage.getSync(\"default-settings\");\r\n};\r\n\r\nconst saveSettingsDefaults = (state) => {\r\n if (isStaticSite) return;\r\n\r\n const copy = cloneDeep(state);\r\n\r\n // Remove anything that doesn't need defaults\r\n delete copy.classifications;\r\n delete copy.activeTab;\r\n delete copy.opacity;\r\n delete copy.cloudDistance;\r\n delete copy.heightClip;\r\n delete copy.intensityClip;\r\n\r\n storage.setSync(\"default-settings\", copy);\r\n};\r\n\r\nconst applySavedSettings = (state, settings) => {\r\n const keys = Object.keys(settings);\r\n keys.forEach(key => {\r\n if (state.hasOwnProperty(key)) {\r\n state[key] = settings[key];\r\n }\r\n });\r\n};\r\n\r\nexport const settingsSlice = createSlice({\r\n name: 'settings',\r\n initialState: initialSettingsState,\r\n reducers: {\r\n updateSettingsState: (state, action) => {\r\n applySavedSettings(state, action.payload);\r\n },\r\n applySavedDefaults: (state, action) => {\r\n // Apply any forced defaults\r\n state.activeTab = 0;\r\n\r\n // Apply saved defaults\r\n const defaults = loadSavedDefaults();\r\n applySavedSettings(state, defaults);\r\n },\r\n changeDefaultSettings: (state, action) => {\r\n saveSettingsDefaults(state);\r\n },\r\n changeOpacity: (state, action: PayloadAction) => {\r\n state.opacity = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeTagDistance: (state, action: PayloadAction) => {\r\n state.tagDistance = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeCloudDistance: (state, action: PayloadAction) => {\r\n state.cloudDistance = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeCloudMaxPoints: (state, action: PayloadAction) => {\r\n state.cloudMaxPoints = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeCloudScale: (state, action: PayloadAction) => {\r\n state.cloudScale = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeCloudMinimum: (state, action: PayloadAction) => {\r\n state.cloudMinimum = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeHeightClip: (state, action: PayloadAction) => {\r\n state.heightClip = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeIntensityClip: (state, action: PayloadAction) => {\r\n state.intensityClip = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeColorMap: (state, action: PayloadAction) => {\r\n state.colorMap = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeColorType: (state, action: PayloadAction) => {\r\n state.colorType = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeDynamicSize: (state, action: PayloadAction) => {\r\n state.dynamicSize = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeCircularPoints: (state, action: PayloadAction) => {\r\n state.circularPoints = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeAvailableClassifications: (state, action: PayloadAction) => {\r\n const availableClassifications = new Set(action.payload);\r\n state.classifications = state.classifications\r\n .map(classification => ({...classification, available: availableClassifications.has(classification.id)}));\r\n },\r\n changeClassificationVisibility: (state, action) => {\r\n const classification = state.classifications.find(classification => classification.id === action.payload);\r\n\r\n if (classification) {\r\n classification.visible = !classification.visible;\r\n }\r\n },\r\n changeAllClassificationVisibility: (state, action) => {\r\n state.classifications = state.classifications.map(classification => ({...classification, visible: action.payload}));\r\n },\r\n changeSwitched: (state, action: PayloadAction) => {\r\n state.switched = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeSelectedTab: (state, action: PayloadAction) => {\r\n state.activeTab = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeDrawerOpen: (state, action: PayloadAction) => {\r\n state.drawerOpen = action.payload;\r\n saveSettingsDefaults(state);\r\n },\r\n changeArrowMarkers: (state, action: PayloadAction) => {\r\n state.arrowMarkers = action.payload;\r\n saveSettingsDefaults(state);\r\n }\r\n }\r\n});\r\n\r\nexport const {\r\n changeOpacity,\r\n changeTagDistance,\r\n changeCloudDistance,\r\n changeCloudMaxPoints,\r\n changeCloudScale,\r\n changeCloudMinimum,\r\n changeHeightClip,\r\n changeIntensityClip,\r\n changeColorMap,\r\n changeColorType,\r\n changeDynamicSize,\r\n changeCircularPoints,\r\n changeAvailableClassifications,\r\n changeClassificationVisibility,\r\n changeAllClassificationVisibility,\r\n changeSwitched,\r\n changeSelectedTab,\r\n changeDrawerOpen,\r\n changeArrowMarkers,\r\n updateSettingsState\r\n} = settingsSlice.actions;\r\n\r\nexport default settingsSlice.reducer;\r\n\r\nexport const selectOpacity = state => state.settings.opacity;\r\nexport const selectTagDistance = state => state.settings.tagDistance;\r\nexport const selectCloudDistance = state => state.settings.cloudDistance;\r\nexport const selectCloudMaxPoints = state => state.settings.cloudMaxPoints;\r\nexport const selectCloudScale = state => state.settings.cloudScale;\r\nexport const selectCloudMinimum = state => state.settings.cloudMinimum;\r\nexport const selectHeightClip = state => state.settings.heightClip;\r\nexport const selectIntensityClip = state => state.settings.intensityClip;\r\nexport const selectColorMap = state => state.settings.colorMap;\r\nexport const selectColorType = state => state.settings.colorType;\r\nexport const selectDynamicSize = state => state.settings.dynamicSize;\r\nexport const selectCircularPoints = state => state.settings.circularPoints;\r\nexport const selectViewerSwitched = state => state.settings.switched;\r\nexport const selectSelectedTab = state => state.settings.activeTab;\r\nexport const selectDrawerOpen = state => state.settings.drawerOpen;\r\nexport const selectArrowMarkers = state => state.settings.arrowMarkers;\r\n\r\nexport const selectClassifications = state => state.settings.classifications;\r\n\r\nexport const getAvailableClassifications = classifications =>\r\n classifications.filter(classification => classification.available);\r\n\r\nexport const getClassificationVisibilities = classifications =>\r\n classifications.map(classification => ({\r\n visible: classification.visible,\r\n id: classification.id\r\n }));\r\n","import {isDevMode, isElectronApp} from \"./electron-modules\";\r\n\r\ninterface LinkOptions {\r\n target?: string;\r\n name?: string;\r\n}\r\n\r\nconst engineCloudURLKey = \"engineCloudURL\";\r\n\r\nexport const setEngineCloudURL = (url: string, force: boolean = false): boolean => {\r\n if (!isElectronApp) {\r\n return false;\r\n }\r\n\r\n const currentEngineCloudURL = localStorage.getItem(engineCloudURLKey);\r\n\r\n if (currentEngineCloudURL && !force) {\r\n return false;\r\n }\r\n\r\n if (currentEngineCloudURL === url) {\r\n return false;\r\n }\r\n\r\n localStorage.setItem(engineCloudURLKey, url);\r\n engineCloudURL = url;\r\n\r\n return true;\r\n};\r\n\r\nexport let engineCloudURL = (() => {\r\n if (!isElectronApp) {\r\n return window.location.origin;\r\n }\r\n\r\n const engineCloudURL = localStorage.getItem(engineCloudURLKey);\r\n\r\n if (!engineCloudURL) {\r\n return isDevMode\r\n ? \"http://127.0.0.1:3001\"\r\n : \"https://engine.solv3d.com\";\r\n }\r\n\r\n return engineCloudURL;\r\n})();\r\n\r\nexport const redirectToLogin = () => {\r\n const searchParams = new URLSearchParams({\r\n returnTo: window.location.href\r\n }).toString();\r\n\r\n window.location.href = `/login?${searchParams}`;\r\n};\r\n\r\nexport const openExternalLink = (href: string, options: LinkOptions = {}) => {\r\n let element = document.createElement('a');\r\n\r\n element.setAttribute(\"href\", href);\r\n\r\n if (options.target) {\r\n element.setAttribute(\"target\", options.target);\r\n } else {\r\n element.setAttribute(\"target\", \"_blank\");\r\n }\r\n\r\n if (options.name) {\r\n element.setAttribute('download', options.name);\r\n }\r\n\r\n element.style.display = 'none';\r\n document.body.appendChild(element);\r\n element.click();\r\n document.body.removeChild(element);\r\n};","import {createSlice} from '@reduxjs/toolkit';\r\n\r\nexport interface AerialViewState {\r\n center: number[];\r\n zoom: number;\r\n rotation: number;\r\n basemap: string;\r\n}\r\n\r\nexport interface SceneCameraState {\r\n camera: string;\r\n fov: number;\r\n angles: number[];\r\n lookat: number[];\r\n orbit: number[];\r\n pivot: number[];\r\n}\r\n\r\ninterface CameraState {\r\n transform: string;\r\n adjustments: object,\r\n height: number;\r\n aerialState: AerialViewState;\r\n sceneState: SceneCameraState;\r\n forcedTagID: string;\r\n}\r\n\r\nexport const initialAerialState = {\r\n center: [0, 0],\r\n zoom: 0,\r\n rotation: 0,\r\n basemap: \"open-street-maps\"\r\n} as AerialViewState;\r\n\r\nexport const initialSceneState = {\r\n camera: null,\r\n fov: null,\r\n angles: null,\r\n lookat: null,\r\n orbit: null,\r\n pivot: null\r\n} as SceneCameraState;\r\n\r\nexport const cameraStateSlice = createSlice({\r\n name: 'camera',\r\n initialState: {\r\n transform: null,\r\n adjustments: {},\r\n height: 3.0,\r\n aerialState: initialAerialState,\r\n sceneState: initialSceneState,\r\n forcedTagID: null\r\n } as CameraState,\r\n reducers: {\r\n changeCameraTransform: (state, action) => {\r\n state.transform = action.payload;\r\n },\r\n changeCameraState: (state, action) => {\r\n state.sceneState = action.payload;\r\n },\r\n changeCameraHeight: (state, action) => {\r\n state.height = action.payload;\r\n },\r\n changeBasicAdjustments: (state, action) => {\r\n state.adjustments = action.payload;\r\n },\r\n changeSavedAerialState: (state, action) => {\r\n state.aerialState = action.payload;\r\n },\r\n }\r\n});\r\n\r\nexport const {\r\n changeCameraState,\r\n changeCameraTransform,\r\n changeCameraHeight,\r\n changeBasicAdjustments,\r\n changeSavedAerialState\r\n} = cameraStateSlice.actions;\r\n\r\nexport default cameraStateSlice.reducer;\r\n\r\nexport const selectCameraHeight = state => state.camera.height;\r\nexport const selectActiveCamera = state => state.camera.sceneState.camera;\r\nexport const selectCameraState = state => state.camera.sceneState;\r\nexport const selectCameraTransform = state => state.camera.transform;\r\nexport const selectBasicAdjustments = state => state.camera.adjustments;\r\nexport const selectSavedAerialState = state => state.camera.aerialState;\r\nexport const selectForcedTagID = state => state.camera.forcedTagID;","import {\r\n isDevMode,\r\n app,\r\n fs,\r\n fse,\r\n child,\r\n process,\r\n logDirectoryPath\r\n} from \"./electron-modules\";\r\nimport path from \"path\";\r\nimport slash from \"slash\";\r\n\r\nconst engineMessageTypeJSON = \"NODEJSJSONDATA\";\r\n\r\ninterface ExeRunOptions {\r\n commands: any[];\r\n showStatus?: boolean;\r\n saveLogs?: boolean;\r\n onLine?: (data) => void;\r\n onLogs?: (message: string) => void;\r\n onClose?: (error: boolean) => void;\r\n}\r\n\r\nconst getDevModeConfig = () => {\r\n if (!isDevMode) {\r\n return false;\r\n }\r\n\r\n const appPath = slash(app.getAppPath());\r\n const text = fs.readFileSync(`${appPath}/develop.env`);\r\n const data = JSON.parse(text);\r\n\r\n if (data.testing) {\r\n console.warn(\"Running executable in dev mode\");\r\n }\r\n\r\n return data;\r\n};\r\n\r\nconst devModeConfig = getDevModeConfig();\r\n\r\nclass Executable {\r\n public exePath: string;\r\n public exeName: string;\r\n public running: boolean;\r\n private error = false;\r\n public child;\r\n public developerKey: string;\r\n public spawnDetached: boolean;\r\n public logText = [];\r\n private showStatus = true;\r\n\r\n constructor(exePath, exeName) {\r\n this.exePath = exePath;\r\n this.exeName = exeName;\r\n this.running = false;\r\n this.error = false;\r\n this.child = null;\r\n this.spawnDetached = false;\r\n }\r\n\r\n get path() {\r\n let basePath;\r\n let appPath = slash(app.getAppPath());\r\n let executablePath;\r\n\r\n if (devModeConfig) {\r\n if (devModeConfig.testing && this instanceof PythonExecutable) {\r\n executablePath = devModeConfig['testing-python'];\r\n } else {\r\n executablePath = devModeConfig[this.developerKey];\r\n }\r\n } else {\r\n // Calculate path using root + folder and name\r\n basePath = path.dirname(appPath);\r\n basePath = path.dirname(basePath);\r\n basePath = path.dirname(basePath);\r\n executablePath = path.join(basePath, this.exePath, this.exeName);\r\n }\r\n\r\n return executablePath;\r\n }\r\n\r\n statusMessage(message) {\r\n if (!this.showStatus) return;\r\n console.log(`[pid = ${this.child.pid}]: ${message}`);\r\n }\r\n\r\n parseCommandsList(commands) {\r\n // Convert objects to modified json\r\n for (let i=0;i {\r\n return ((index % 2) === 0)\r\n ? text\r\n : `\"${text}\"`;\r\n }).join(\" \");\r\n }\r\n\r\n run(options: ExeRunOptions) {\r\n if (this.running) {\r\n console.log(\"Cannot launch multiple instances\");\r\n return;\r\n }\r\n\r\n const {\r\n showStatus = true,\r\n saveLogs = false,\r\n commands = [],\r\n onClose,\r\n onLine,\r\n onLogs\r\n } = options;\r\n\r\n this.running = true;\r\n this.error = false;\r\n this.logText = [];\r\n this.showStatus = showStatus;\r\n\r\n let commandList = this.parseCommandsList(commands);\r\n let executablePath = this.path;\r\n\r\n let cwd = path.dirname(executablePath);\r\n this.child = child.spawn(executablePath, commandList, {\r\n cwd: cwd,\r\n env: {\r\n ...process.env,\r\n PYTHONUNBUFFERED: true,\r\n NODEJS: true\r\n },\r\n detached: this.spawnDetached\r\n });\r\n\r\n if (!this.child.pid) {\r\n console.error(`Error launching ${this.exeName} exe`);\r\n if (onClose) {\r\n onClose(true);\r\n }\r\n\r\n return;\r\n }\r\n\r\n let copyPasteCommands = this.copyableCommands(commandList);\r\n this.statusMessage(`${this.path} ${copyPasteCommands}`);\r\n\r\n this.child.on('close', () => {\r\n this.statusMessage(`close`);\r\n\r\n if (saveLogs) {\r\n let commandIndex = commandList.indexOf(\"-p\") + 1;\r\n if (commandIndex > 0) {\r\n let commandName = commandList[commandIndex];\r\n saveLogFile(commandName, this.logText);\r\n }\r\n }\r\n\r\n if (onClose) {\r\n onClose(this.error);\r\n }\r\n\r\n this.error = false;\r\n this.running = false;\r\n this.child = null;\r\n });\r\n\r\n if (onLine || onLogs || saveLogs) {\r\n this.child.stderr.on('data', (data) => {\r\n this.parseLines(data, onLine, onLogs);\r\n });\r\n\r\n this.child.stdout.on('data', (data) => {\r\n this.parseLines(data, onLine, onLogs);\r\n });\r\n }\r\n\r\n return this.child;\r\n }\r\n\r\n /** @private */\r\n parseLines(data, onLine: (data) => void, onLogs: (message: string) => void) {\r\n let dataString = data.toString();\r\n let lines = dataString.split(\"\\n\");\r\n\r\n lines.forEach(line => {\r\n line = line.trim();\r\n if (line === \"\") {\r\n return;\r\n }\r\n\r\n // Parse our response and only keep engine json response\r\n let split = line.split(\":\");\r\n let messageType = split[0].trim();\r\n let messageData = split.slice(1).join(\":\").trim();\r\n\r\n if (messageType === engineMessageTypeJSON) {\r\n try {\r\n let jsonData = JSON.parse(messageData);\r\n if (onLine) {\r\n onLine(jsonData);\r\n }\r\n } catch(err) {\r\n if (onLine) {\r\n onLine({});\r\n }\r\n }\r\n } else {\r\n if (onLogs) {\r\n onLogs(line);\r\n }\r\n this.logText.push(line);\r\n }\r\n });\r\n }\r\n\r\n destroy() {\r\n if (!this.running) {\r\n return;\r\n }\r\n\r\n this.running = false;\r\n this.error = true;\r\n\r\n try {\r\n child.execSync(\r\n `(Get-WmiObject -Class Win32_Process -Filter \"ProcessId = ${this.child.pid} OR ParentProcessId = ${this.child.pid}\").Terminate()`,\r\n {shell: \"powershell.exe\"}\r\n );\r\n } catch {\r\n // Do nothing\r\n }\r\n }\r\n}\r\n\r\nexport class PythonExecutable extends Executable {\r\n constructor() {\r\n super(\"exe-engine\", \"engine.exe\");\r\n this.developerKey = \"exe-python\";\r\n window.onbeforeunload = () => {\r\n this.destroy();\r\n };\r\n }\r\n\r\n write(text) {\r\n if (!this.running) {\r\n return;\r\n }\r\n\r\n this.child.stdin.write(text);\r\n }\r\n}\r\n\r\nexport class WorkflowExecutable extends Executable {\r\n constructor() {\r\n super(\"../\", \"SOLV3D engine.exe\");\r\n this.developerKey = \"exe-main\";\r\n this.spawnDetached = true;\r\n }\r\n}\r\n\r\nconst saveLogFile = async (logPrefix, logText) => {\r\n const maxLogFiles = 50;\r\n\r\n const dateString = new Date()\r\n .toISOString()\r\n .replaceAll(\":\", \"-\");\r\n\r\n const logPath = path.join(\r\n logDirectoryPath,\r\n `${logPrefix} ${dateString}.txt`\r\n );\r\n\r\n const logs = logText.join(\"\\n\");\r\n await fse.writeFile(logPath, logs);\r\n\r\n const filenames = await fse.readdir(logDirectoryPath);\r\n if (filenames.length <= maxLogFiles) {\r\n return;\r\n }\r\n\r\n let oldest = new Date();\r\n let oldestFilePath;\r\n\r\n for (let filename of filenames) {\r\n const filePath = path.join(logDirectoryPath, filename);\r\n const stats = await fse.stat(filePath);\r\n\r\n if (stats.birthtime < oldest) {\r\n oldest = stats.birthtime;\r\n oldestFilePath = filePath;\r\n }\r\n }\r\n\r\n try {\r\n await fse.remove(oldestFilePath);\r\n } catch {\r\n // Nothing\r\n }\r\n};\r\n\r\nexport const trackToolUsage = (toolName: string) => {\r\n if (isDevMode) return;\r\n\r\n (async () => {\r\n new PythonExecutable().run({\r\n commands: ['--check-tool', toolName]\r\n });\r\n })();\r\n};","import path from \"path\";\r\nimport {app, storage, fs} from \"./electron-modules\";\r\n\r\nconst changeDuplicateNames = (projections) => {\r\n const projectionsByName = {};\r\n\r\n projections.forEach((projection) => {\r\n if (!projectionsByName[projection.name]) {\r\n projectionsByName[projection.name] = 2;\r\n } else {\r\n const newName = `${projection.name} (${projectionsByName[projection.name]})`;\r\n projectionsByName[projection.name]++;\r\n projection.name = newName;\r\n }\r\n });\r\n};\r\n\r\nexport const setStoragePath = (userSettings, isStaticSite) => {\r\n if (isStaticSite) return;\r\n const storagePath = path.join(app.getPath('appData'), 'SOLV3D Data');\r\n\r\n if (!fs.existsSync(storagePath)) {\r\n fs.mkdirSync(storagePath);\r\n }\r\n\r\n const engineStoragePath = path.join(app.getPath('appData'), 'SOLV3D engine/storage');\r\n const viewerStoragePath = path.join(app.getPath('appData'), 'SOLV3D engine viewer/storage');\r\n\r\n for (const settingName of userSettings) {\r\n let oldName = path.join(viewerStoragePath, `${settingName}.json`);\r\n let newName = path.join(storagePath, `${settingName}.json`);\r\n if (fs.existsSync(oldName) && !fs.existsSync(newName)) {\r\n fs.copyFileSync(oldName, newName);\r\n }\r\n }\r\n if (fs.existsSync(path.join(storagePath, 'user-projections.json'))) {\r\n storage.setDataPath(storagePath);\r\n return;\r\n }\r\n\r\n const engineProjectionExist = fs.existsSync(path.join(engineStoragePath, 'user-projections.json'));\r\n const viewerProjectionExist = fs.existsSync(path.join(viewerStoragePath, 'projection.json'));\r\n\r\n let projectionData = [];\r\n if (viewerProjectionExist) {\r\n projectionData = [\r\n ...projectionData,\r\n ...storage.getSync('projection', {dataPath: viewerStoragePath})];\r\n }\r\n if (engineProjectionExist) {\r\n let engineProjections = storage.getSync('user-projections', {dataPath: engineStoragePath});\r\n Object.keys(engineProjections).forEach((key) => {\r\n let data = engineProjections[key];\r\n if ('transform' in data) {\r\n data.transform = {\r\n origin: data.transform.origin,\r\n translation: data.transform.translation,\r\n rotation: data.transform.rotation,\r\n scale: data.transform.scale\r\n };\r\n }\r\n let finalData = {type: 'proj4', name: key, ...data};\r\n projectionData.push(finalData);\r\n });\r\n }\r\n if (viewerProjectionExist && engineProjectionExist) {\r\n changeDuplicateNames(projectionData);\r\n }\r\n storage.setDataPath(storagePath);\r\n storage.setSync('user-projections', projectionData);\r\n};\r\n","import { nanoid } from '@reduxjs/toolkit';\r\nimport path from 'path';\r\nimport {setStoragePath} from \"./move-settings\";\r\n\r\n/** Electron specific modules that will fail for static html site */\r\n\r\nconst getCloudProjectID = () : string => {\r\n const pattern = /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i;\r\n const url = new URL(window.location.href);\r\n const parts = url.pathname.split(\"/\");\r\n return parts.find(x => pattern.test(x));\r\n};\r\n\r\nconst checkForCloudSite = (cloudProjectID) => {\r\n const url = new URL(window.location.href);\r\n const parts = url.pathname.split(\"/\");\r\n const hasViewer = parts.includes(\"viewer\");\r\n return hasViewer && !!cloudProjectID;\r\n};\r\n\r\nexport const electron = window.require\r\n ? window.require(\"electron\")\r\n : null;\r\n\r\nexport const child = electron\r\n ? window.require(\"child_process\")\r\n : null;\r\n\r\nexport const process = electron\r\n ? window.require(\"process\")\r\n : null;\r\n\r\nexport const remote = electron?.remote;\r\nexport const shell = electron?.shell;\r\nexport const ipcRenderer = electron?.ipcRenderer;\r\nexport const dialog = remote?.dialog;\r\nexport const app = remote?.app;\r\nexport const getCurrentWindow = remote?.getCurrentWindow;\r\nexport const Menu = remote?.Menu;\r\nexport const fs = remote?.require('fs');\r\nexport const fse = remote?.require('fs-extra');\r\nexport const glob = remote?.require('glob');\r\n\r\nexport const cloudProjectID = getCloudProjectID();\r\nexport const isStaticSite = !electron;\r\nexport const isElectronApp = !!electron;\r\nexport const isCloudSite = checkForCloudSite(cloudProjectID);\r\n\r\nexport const storage = electron\r\n ? remote.require('electron-json-storage')\r\n : null;\r\n\r\nexport const isDevMode = remote\r\n ? (app.isPackaged === false)\r\n : false;\r\n\r\nexport const tempDirectoryPath = app\r\n ? path.join(app.getPath('userData'), \"temp\")\r\n : null;\r\n\r\nexport const logDirectoryPath = app\r\n ? path.join(app.getPath('userData'), \"logs\")\r\n : null;\r\n\r\nexport const getTemporaryFile = (suffix) => {\r\n return path.join(tempDirectoryPath, `${nanoid()}.${suffix}`);\r\n};\r\n\r\nconst clearTemporaryFiles = async () => {\r\n if (isStaticSite) return;\r\n\r\n let numRemoved = 0;\r\n const maxTimeElapsedSeconds = 3600; // One hour\r\n const filenames = await fse.readdir(tempDirectoryPath);\r\n\r\n for (let filename of filenames) {\r\n const filePath = path.join(tempDirectoryPath, filename);\r\n const stats = await fse.stat(filePath);\r\n const currentDate = Date.now();\r\n const timeElapsed = (currentDate - stats.birthtimeMs)/1000;\r\n\r\n if (timeElapsed > maxTimeElapsedSeconds) {\r\n fse.remove(filePath);\r\n numRemoved += 1;\r\n }\r\n }\r\n\r\n if (numRemoved === 0) return;\r\n console.log(`Deleted ${numRemoved} temporary files`);\r\n};\r\n\r\nconst createInitialFolders = () => {\r\n if (isStaticSite) return;\r\n\r\n if (!fs.existsSync(tempDirectoryPath)) {\r\n console.log(\"Creating temporary file folder...\");\r\n fs.mkdirSync(tempDirectoryPath);\r\n }\r\n\r\n if (!fs.existsSync(logDirectoryPath)) {\r\n console.log(\"Creating log output folder...\");\r\n fs.mkdirSync(logDirectoryPath);\r\n }\r\n};\r\n\r\nexport const registerEvent = (eventName, callback) => {\r\n if(!ipcRenderer) return;\r\n ipcRenderer.removeAllListeners(eventName);\r\n ipcRenderer.on(eventName, callback);\r\n};\r\n\r\ncreateInitialFolders();\r\nclearTemporaryFiles();\r\n\r\nconst userSettings = ['default-settings', 'global-settings'];\r\nsetStoragePath(userSettings, isStaticSite);","import React, {useEffect, useState, memo} from \"react\";\r\nimport {createStyles, makeStyles} from \"@material-ui/core/styles\";\r\nimport {fs, isStaticSite} from '../electron-modules';\r\nimport {DraggableDialog, IconToolBar, ToolBarButton, ToolBarDivider} from \"../components\";\r\nimport {\r\n FormHelperText,\r\n MenuItem,\r\n Select\r\n} from \"@material-ui/core\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport {dialog} from \"../electron-modules\";\r\nimport {\r\n pngFilter\r\n} from \"../file-extensions\";\r\nimport slash from \"slash\";\r\nimport { useViewer } from \"../hooks\";\r\nimport { openExternalLink } from \"../urls\";\r\n\r\nconst useStyles = makeStyles((theme) =>\r\n createStyles({\r\n profileContainer: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n height: \"100%\"\r\n },\r\n toolbarDropdown: {\r\n flex: 1,\r\n paddingLeft: theme.spacing(1),\r\n paddingRight: theme.spacing(1)\r\n },\r\n profileChart: {\r\n flex: 1,\r\n overflow: \"hidden\",\r\n padding: theme.spacing(2)\r\n }\r\n })\r\n);\r\n\r\ninterface PointProfileProps {\r\n open: boolean;\r\n setOpen: (state: boolean) => void;\r\n}\r\n\r\nexport const PointProfile = memo((props: PointProfileProps) => {\r\n const {open, setOpen} = props;\r\n\r\n const classes = useStyles();\r\n const {viewer} = useViewer();\r\n const {t} = useTranslation();\r\n\r\n const [samplingType, setSamplingType] = useState('lowest');\r\n const [displayUnits, setDisplayUnits] = useState('m');\r\n\r\n const onRefModified = (container) => {\r\n if (!container) return;\r\n viewer.initProfileContainer(samplingType, displayUnits);\r\n };\r\n\r\n const reloadPointsProfile = () => {\r\n viewer.refreshPointProfile();\r\n };\r\n\r\n const resetPointsProfileView = () => {\r\n viewer.resetPointProfileView();\r\n };\r\n\r\n const savePointProfileImage = () => {\r\n if (isStaticSite) {\r\n savePointProfileImageBrowser();\r\n } else {\r\n savePointProfileImageElectron();\r\n }\r\n };\r\n\r\n const savePointProfileImageBrowser = () => {\r\n const imageBase64 = viewer.getPointProfileImage();\r\n const name = `${viewer.projectName}.png`;\r\n openExternalLink(imageBase64, {name});\r\n };\r\n\r\n const savePointProfileImageElectron = () => {\r\n dialog.showSaveDialog({\r\n defaultPath: viewer.projectName,\r\n filters: [...pngFilter],\r\n }).then(result => {\r\n if (result.canceled) {\r\n return;\r\n }\r\n\r\n if (result.filePath) {\r\n const filePath = slash(result.filePath);\r\n const imageBase64 = viewer.getPointProfileImage();\r\n let imageBase64Data = imageBase64.replace(/^data:image\\/\\w+;base64,/, '');\r\n\r\n const imageBuffer = Buffer.from(imageBase64Data, 'base64');\r\n fs.writeFileSync(filePath, imageBuffer, {encoding: \"base64\"});\r\n console.log(`Point Profile Image saved to ${filePath}`);\r\n }\r\n }).catch(error => {\r\n console.log(error);\r\n });\r\n return;\r\n };\r\n\r\n const updateUnits = (event) => {\r\n setDisplayUnits(event.target.value);\r\n };\r\n\r\n const updateSamplingType = (event) => {\r\n setSamplingType(event.target.value);\r\n };\r\n\r\n const onClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n useEffect(() => {\r\n viewer?.setPointProfileSampling(samplingType);\r\n }, [viewer, samplingType]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointProfileUnits(displayUnits);\r\n }, [viewer, displayUnits]);\r\n\r\n useEffect(() => {\r\n if (open) return;\r\n viewer?.resetPointProfile();\r\n }, [viewer, open]);\r\n\r\n return (\r\n \r\n \r\n
\r\n\r\n \r\n\r\n
\r\n \r\n {t('units.meters')}\r\n {t('units.feet')}\r\n {t('units.survey-feet')}\r\n \r\n {t('profile.profile-units')}\r\n
\r\n\r\n
\r\n \r\n {t('profile.highest')}\r\n {t('profile.lowest')}\r\n {t('profile.all-points')}\r\n \r\n {t('profile.profile-type')}\r\n
\r\n\r\n \r\n\r\n {/* Refresh points base on view */}\r\n \r\n\r\n {/* Reset zoom and position */}\r\n \r\n\r\n {/* Download profile */}\r\n \r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n );\r\n});","import { AssetType, WebSourceAsset } from \"../../redux/assets-slice\";\r\n\r\nexport const isModelFile = (asset) => {\r\n return (asset.type === AssetType.IFC)\r\n || (asset.type === AssetType.DXF)\r\n || (asset.type === AssetType.SHP);\r\n};\r\n\r\nexport const isStreamablePointsFile = (asset) => {\r\n return (asset.type === AssetType.Encompass)\r\n || (asset.type === AssetType.Potree);\r\n};\r\n\r\nexport const isRawPointsFile = (asset) => {\r\n return (asset.type === AssetType.LAS)\r\n || (asset.type === AssetType.E57Points);\r\n};\r\n\r\nexport const getModelLayers = (asset) => {\r\n return asset.data.map(layer => ({\r\n name: layer.name,\r\n originalId: layer.id,\r\n visible: layer.visible,\r\n color: layer.color\r\n }));\r\n};\r\n\r\nexport const getWebmapLayers = (asset: WebSourceAsset) => {\r\n return asset.data.layers.map(layer => ({\r\n originalId: layer.id,\r\n visible: layer.visible,\r\n identifier: String(layer.identifier),\r\n name: String(layer.name)\r\n }));\r\n};\r\n\r\nexport const getBaseAsset = (asset) => {\r\n return {\r\n name: asset.name,\r\n visible: asset.visible,\r\n originalId: asset.id,\r\n type: asset.type,\r\n };\r\n};\r\n\r\nexport const getTagsData = (asset) => {\r\n return asset.data.items.map(tag => {\r\n const values = {\r\n originalId: tag.id,\r\n name: tag.name,\r\n comment: tag.comment,\r\n date: tag.date,\r\n x: tag.x,\r\n y: tag.y,\r\n } as any;\r\n\r\n if (\"z\" in tag) {\r\n values.z = tag.z;\r\n }\r\n\r\n if (\"sceneState\" in tag) {\r\n values.sceneState = tag.sceneState;\r\n }\r\n\r\n return values;\r\n });\r\n};\r\n\r\nexport const getImageData = (asset) => {\r\n return asset.data.map(image => {\r\n const values = {\r\n originalId: image.id,\r\n filename: image.name,\r\n x: image.x,\r\n y: image.y,\r\n z: image.z,\r\n roll: image.roll,\r\n pitch: image.pitch,\r\n yaw: image.yaw\r\n };\r\n\r\n /** Planar images have additional information */\r\n if (asset.type === AssetType.Planar) {\r\n return {\r\n ...values,\r\n config: image.config\r\n };\r\n }\r\n\r\n return values;\r\n });\r\n};\r\n\r\ninterface ObjectProps {\r\n id: string;\r\n [key: string]: any;\r\n}\r\n\r\nexport const withOriginalID = (object: ObjectProps) => {\r\n const {id, ...other} = object;\r\n return {originalId: id, ...other};\r\n};","/* eslint-disable import/no-webpack-loader-syntax */\r\nimport i18n from \"i18next\";\r\nimport { initReactI18next } from \"react-i18next\";\r\nimport LanguageDetector from \"i18next-browser-languagedetector\";\r\n\r\nimport en from \"./translations/en.json\";\r\nimport de from \"./translations/de.json\";\r\nimport fr from \"./translations/fr.json\";\r\nimport es from \"./translations/es.json\";\r\nimport ja from \"./translations/ja.json\";\r\n\r\nconst resources = {\r\n en: {translation: en},\r\n de: {translation: de},\r\n fr: {translation: fr},\r\n es: {translation: es},\r\n ja: {translation: ja}\r\n};\r\n\r\n/** Makes sure that unsupported languages are ignored */\r\nconst supportedLngs = Object.keys(resources);\r\n\r\ni18n\r\n .use(initReactI18next)\r\n .use(LanguageDetector)\r\n .init({\r\n resources,\r\n detection: {\r\n cookieMinutes: 365*24*60 // one year\r\n },\r\n supportedLngs,\r\n fallbackLng: \"en\",\r\n interpolation: {\r\n escapeValue: false\r\n }\r\n });\r\n\r\nexport default i18n;\r\nexport const t = i18n.t;","export * from \"./i18n\";\r\n\r\n/** Add the language flag to the specified url */\r\nexport const getLocalizedURL = (url: string, language: string) => {\r\n return url.includes(\"?\")\r\n ? `${url}&lng=${language}`\r\n : `${url}?lng=${language}`;\r\n};\r\n\r\n/** Update the window url to include the language flag */\r\nexport const setLocalizedURL = (language: string) => {\r\n const url = new URL(window.location as any);\r\n url.searchParams.set('lng', language);\r\n window.history.pushState({}, '', url as any);\r\n};\r\n","import {nanoid, createSlice, PayloadAction} from '@reduxjs/toolkit';\r\nimport api from '../api';\r\n\r\nexport interface Folder {\r\n name: string;\r\n id: string;\r\n date: string;\r\n default?: boolean;\r\n}\r\n\r\nexport const defaultFolderTitle = 'folder.default-folder';\r\n\r\nconst getByID = (state, folderID: string) => {\r\n return state.find(folder => folder.id === folderID);\r\n};\r\n\r\nconst generateDefaultFolder = () => {\r\n return {\r\n id: nanoid(),\r\n name: defaultFolderTitle,\r\n date: new Date().toISOString(),\r\n default: true\r\n } as Folder;\r\n};\r\n\r\nexport const foldersSlice = createSlice({\r\n name: 'folders',\r\n initialState: [\r\n generateDefaultFolder()\r\n ],\r\n reducers: {\r\n createFolder: (state, action: PayloadAction) => {\r\n const name = action.payload;\r\n\r\n const folder = {\r\n id: nanoid(),\r\n name,\r\n date: new Date().toISOString(),\r\n default: false\r\n } as Folder;\r\n\r\n state.push(folder);\r\n },\r\n updateFolder: (state, action: PayloadAction<{\r\n folderID: string,\r\n name?: string\r\n }>) => {\r\n const {folderID, ...updates} = action.payload;\r\n\r\n const folder = getByID(state, folderID);\r\n if (!folder) return;\r\n\r\n for (let key in updates) {\r\n if (folder.hasOwnProperty(key)) {\r\n folder[key] = updates[key];\r\n };\r\n };\r\n\r\n if (!folder.default) return;\r\n\r\n // Add new default folder\r\n const newDefaultFolder = generateDefaultFolder();\r\n state.push(newDefaultFolder);\r\n\r\n // Set the current folder to custom\r\n folder.default = false;\r\n },\r\n deleteFolder: (state, action: PayloadAction) => {\r\n const folderID = action.payload;\r\n\r\n return state.filter(folder => {\r\n return folder.default || (folder.id !== folderID);\r\n });\r\n },\r\n\r\n /** Websocket specific */\r\n wsCreateFolder: (state, action: PayloadAction) => {\r\n const folder = action.payload;\r\n if (getByID(state, folder.id)) return;\r\n\r\n state.push(folder);\r\n },\r\n wsUpdateFolder: (state, action: PayloadAction) => {\r\n const {id, ...updates} = action.payload;\r\n\r\n let folder = getByID(state, id);\r\n if (!folder) return;\r\n\r\n for (let key in updates) {\r\n if (folder.hasOwnProperty(key)) {\r\n folder[key] = updates[key];\r\n };\r\n };\r\n },\r\n wsDeleteFolder: (state, action: PayloadAction) => {\r\n const folderID = action.payload;\r\n\r\n return state.filter(folder => {\r\n return folder.default || (folder.id !== folderID);\r\n });\r\n },\r\n }\r\n});\r\n\r\n/** Create a new folder and return the new folderID */\r\nexport const createFolder = (name = defaultFolderTitle) => {\r\n return async (dispatch, getState) => {\r\n // Create new folder\r\n dispatch(foldersSlice.actions.createFolder(name));\r\n\r\n const folders = getState().folders as Folder[];\r\n const [folder] = folders.slice(-1);\r\n\r\n // Update cloud site\r\n await api.folders.create(folder);\r\n\r\n return folder;\r\n };\r\n};\r\n\r\nexport const {\r\n wsCreateFolder,\r\n wsUpdateFolder,\r\n wsDeleteFolder,\r\n deleteFolder,\r\n updateFolder\r\n} = foldersSlice.actions;\r\n\r\nexport default foldersSlice.reducer;\r\n\r\nexport const selectDefaultFolder = state =>\r\n state.folders.find(folder => folder.default);\r\n\r\nexport const selectAllFolders = state => state.folders;\r\n","\r\nconst spiralParamaters = (spiral, stepDist, sigDigs) => {\r\n\r\n if (spiral.spiType !== \"clothoid\") {\r\n console.error(`Unsupported Spiral Type: ${spiral.spiType}. Only clothoid spirals detected.`);\r\n return false;\r\n }\r\n\r\n const RL = Math.pow(parseFloat(spiral.constant), 2);\r\n let reverseCurve;\r\n let partial = false;\r\n\r\n if (spiral.radiusEnd === 'INF') {\r\n reverseCurve = true;\r\n } else if (spiral.radiusStart === 'INF'){\r\n reverseCurve = false;\r\n } else {\r\n reverseCurve = (spiral.radiusEnd > spiral.radiusStart);\r\n partial = true;\r\n }\r\n\r\n const cw = spiral.rot === \"cw\";\r\n let L = spiral.length;\r\n\r\n let delta;\r\n if (cw) {//cw\r\n if (reverseCurve){ // cw reverse curve\r\n delta = spiral.dirEnd;\r\n } else { // cw forward curve\r\n delta = -spiral.dirStart;\r\n }\r\n } else {// ccw\r\n if (reverseCurve) {// ccw reverse curve\r\n delta = -spiral.dirEnd;\r\n } else {// ccw forward curve\r\n delta = spiral.dirStart;\r\n }\r\n }\r\n\r\n let a = spiral.Start[0];\r\n let b = spiral.Start[1];\r\n let c = spiral.End[0];\r\n let d = spiral.End[1];\r\n\r\n let xStart;\r\n let yStart;\r\n\r\n let xEnd;\r\n let yEnd;\r\n\r\n let xCorr=0.0;\r\n let yCorr=0.0;\r\n let deltaCorr = 0.0;\r\n\r\n let segmentMin;\r\n let segmentMax;\r\n\r\n if (partial && !reverseCurve) { //partial forward curve\r\n let ls = RL / spiral.radiusStart;\r\n L += ls;\r\n segmentMin = parseInt((ls * sigDigs).toString());\r\n segmentMax = parseInt((L * sigDigs).toString());\r\n\r\n xCorr = ls - (Math.pow(ls, 5) / (40.0 * RL * RL)) +\r\n (Math.pow(ls, 9) / (3456.0 * Math.pow(RL, 4))) -\r\n (Math.pow(ls, 13) / (599040.0 * Math.pow(RL, 6)));\r\n yCorr = (Math.pow(ls, 3) / (6 * RL)) -\r\n (Math.pow(ls, 7) / (336.0 * Math.pow(RL, 3))) +\r\n (Math.pow(ls, 11) / (42240.0 * Math.pow(RL, 5))) -\r\n (Math.pow(ls, 15) / (9676800.0 * Math.pow(RL, 7)));\r\n deltaCorr = Math.pow(ls, 2) / (2 * RL);\r\n } else if (partial && reverseCurve){\r\n let le = RL / spiral.radiusEnd;\r\n let ls = RL / spiral.radiusStart;\r\n\r\n deltaCorr = Math.pow(le, 2) / (2 * RL);\r\n xCorr = le - (Math.pow(le, 5) / (40.0 * RL * RL)) +\r\n (Math.pow(le, 9) / (3456.0 * Math.pow(RL, 4))) -\r\n (Math.pow(le, 13) / (599040.0 * Math.pow(RL, 6)));\r\n yCorr = (Math.pow(le, 3) / (6 * RL)) -\r\n (Math.pow(le, 7) / (336.0 * Math.pow(RL, 3))) +\r\n (Math.pow(le, 11) / (42240.0 * Math.pow(RL, 5))) -\r\n (Math.pow(le, 15) / (9676800.0 * Math.pow(RL, 7)));\r\n\r\n segmentMin = parseInt((le * sigDigs).toString());\r\n segmentMax = parseInt((ls * sigDigs).toString());\r\n\r\n } else{\r\n segmentMin = 0;\r\n segmentMax = parseInt((L * sigDigs).toString());\r\n }\r\n\r\n let distMin = 1000000;\r\n let deltas = [\r\n delta, delta+deltaCorr, delta-deltaCorr,\r\n -1*(delta)-deltaCorr, -1*(delta)+deltaCorr, -delta];\r\n\r\n let endPointError = true;\r\n let chosenDelta = delta;\r\n\r\n deltas.forEach(deltaTrial => {\r\n let l = segmentMax / sigDigs;\r\n let x = l - (Math.pow(l, 5) / (40.0*RL*RL)) +\r\n (Math.pow(l,9) / (3456.0 * Math.pow(RL,4))) -\r\n (Math.pow(l,13) / (599040.0*Math.pow(RL,6)));\r\n\r\n let y = (Math.pow(l, 3) / (6*RL)) -\r\n (Math.pow(l,7) / (336.0*Math.pow(RL,3))) +\r\n (Math.pow(l, 11) / (42240.0*Math.pow(RL,5))) -\r\n (Math.pow(l, 15) / (9676800.0*Math.pow(RL, 7)));\r\n\r\n x -= xCorr;\r\n y -= yCorr;\r\n\r\n let xDiff = (x * Math.cos(deltaTrial) - y * Math.sin(deltaTrial));\r\n let yDiff = (x * Math.sin(deltaTrial) + y * Math.cos(deltaTrial));\r\n\r\n // console.log(`diffs x: ${xDiff} | y: ${yDiff}`);\r\n\r\n let xRotated;\r\n let yRotated;\r\n if (!reverseCurve) {//forward curve\r\n xRotated = a + xDiff;\r\n if (!cw) {//ccw forward\r\n yRotated = b - yDiff;\r\n } else {//cw forward\r\n yRotated = b + yDiff;\r\n }\r\n let dist = Math.sqrt(Math.pow(xRotated - c, 2)\r\n + Math.pow(yRotated - d, 2));\r\n if (dist < distMin) {\r\n distMin = dist;\r\n xEnd = xRotated;\r\n yEnd = yRotated;\r\n xStart = a;\r\n yStart = b;\r\n chosenDelta = deltaTrial;\r\n }\r\n if (dist <= Math.sqrt(2)*stepDist) {\r\n endPointError = false;\r\n }\r\n } else {//reverse curve\r\n xRotated = c - xDiff;\r\n if (!cw) {//ccw reverse\r\n yRotated = d - yDiff;\r\n } else {//cw reverse\r\n yRotated = d + yDiff;\r\n }\r\n\r\n let dist = Math.sqrt(Math.pow(xRotated - a, 2)\r\n + Math.pow(yRotated - b, 2));\r\n\r\n if (dist < distMin) {\r\n distMin = dist;\r\n xEnd = c;\r\n yEnd = d;\r\n xStart = xRotated;\r\n yStart = yRotated;\r\n chosenDelta = deltaTrial;\r\n }\r\n if (dist <= Math.sqrt(2)*stepDist) {\r\n endPointError = false;\r\n }\r\n }\r\n });\r\n if (endPointError) {\r\n console.error('Error in endpoint calculation');\r\n console.log(`Datum correct data: xDiff: ${a-c} | yDiff: ${b-d}`);\r\n console.log(`${xStart} | ${yStart} | at length ${segmentMin / sigDigs} | 0`);\r\n console.log(`${xEnd} | ${yEnd} | at length ${segmentMax / sigDigs} | ${spiral.length}`);\r\n console.log(`${xStart - a} | ${yStart - b} | at length ${segmentMin / sigDigs} | ${spiral.length}`);\r\n console.log(`${xEnd - c} | ${yEnd - d} | at length ${segmentMax / sigDigs} | ${spiral.length}`);\r\n }\r\n\r\n return {chosenDelta: chosenDelta, xStart: xStart, xEnd: xEnd, yStart: yStart,\r\n yEnd: yEnd, xCorr: xCorr, yCorr:yCorr, reverseCurve: reverseCurve, partial: partial,\r\n segmentMin: segmentMin, segmentMax:segmentMax, RL:RL, cw:cw, a:a, b:b, c:c, d:d\r\n };\r\n};\r\n\r\nexport const spiralIntersect = (spiral, point) => {\r\n const stepDist = 0.01;\r\n const sigDigs = 1000000;\r\n const spiralParams = spiralParamaters(spiral, stepDist, sigDigs);\r\n if (typeof spiralParams === \"boolean\") {\r\n return false;\r\n }\r\n let segmentMin = spiralParams.segmentMin;\r\n let segmentMax = spiralParams.segmentMax;\r\n\r\n // Now that the correct rotation and position corrections have been calculated\r\n // the entire spiral can be calculated, and the closest point to the clicked point can\r\n // be estimated.\r\n let spiralCoord=null;\r\n let distAlong=null;\r\n let distAcross = null;\r\n\r\n for (;segmentMin<=segmentMax;segmentMin+=stepDist*sigDigs) {\r\n if ((segmentMin+=stepDist*sigDigs) > segmentMax){\r\n segmentMin = segmentMax;\r\n }\r\n let l = segmentMin / sigDigs;\r\n\r\n let x = l - (Math.pow(l, 5) / (40.0*spiralParams.RL*spiralParams.RL)) +\r\n (Math.pow(l,9) / (3456.0 * Math.pow(spiralParams.RL,4))) -\r\n (Math.pow(l,13) / (599040.0*Math.pow(spiralParams.RL,6)));\r\n\r\n let y = (Math.pow(l, 3) / (6*spiralParams.RL)) -\r\n (Math.pow(l,7) / (336.0*Math.pow(spiralParams.RL,3))) +\r\n (Math.pow(l, 11) / (42240.0*Math.pow(spiralParams.RL,5))) -\r\n (Math.pow(l, 15) / (9676800.0*Math.pow(spiralParams.RL, 7)));\r\n\r\n x -= spiralParams.xCorr;\r\n y -= spiralParams.yCorr;\r\n\r\n let xDiff = (x * Math.cos(spiralParams.chosenDelta)\r\n - y * Math.sin(spiralParams.chosenDelta));\r\n let yDiff = (x * Math.sin(spiralParams.chosenDelta)\r\n + y * Math.cos(spiralParams.chosenDelta));\r\n let xAtLength, yAtLength, lengthLocal;\r\n if (spiralParams.partial) {\r\n lengthLocal = l - (segmentMin/sigDigs);\r\n } else {\r\n lengthLocal = l;\r\n }\r\n\r\n if (spiralParams.reverseCurve) {\r\n lengthLocal = spiral.length - lengthLocal;\r\n }\r\n\r\n if (!spiralParams.reverseCurve) {//forward curve\r\n xAtLength = spiralParams.a + xDiff;\r\n if (!spiralParams.cw) {//ccw forward\r\n yAtLength = spiralParams.b - yDiff;\r\n } else {//cw forward\r\n yAtLength = spiralParams.b + yDiff;\r\n }\r\n } else {//reverse curve\r\n xAtLength = spiralParams.c - xDiff;\r\n if (!spiralParams.cw) {//ccw reverse\r\n yAtLength = spiralParams.d - yDiff;\r\n } else {//cw reverse\r\n yAtLength = spiralParams.d + yDiff;\r\n }\r\n }\r\n\r\n const distAcrossNew = Math.sqrt(Math.pow(point[0] - xAtLength, 2)\r\n + Math.pow(point[1] - yAtLength, 2));\r\n // console.log(distAcrossNew)\r\n if (distAcross !== null) {\r\n const update = (distAcrossNew 0 ? 'L':'R';\r\n\r\n // console.log(`across: ${distAcross} | along: ${distAlong} | side: ${sideOfLine}`);\r\n\r\n return {distAcross: distAcross, distAlong: distAlong,\r\n sideOfLine:sideOfLine, coordinates:spiralCoord};\r\n};\r\n\r\nexport const lineDist = (geometry) => {\r\n const dist = Math.sqrt(Math.pow(geometry.Start[0] - geometry.End[0], 2) +\r\n Math.pow(geometry.Start[1] - geometry.End[1], 2));\r\n return dist;\r\n};\r\n\r\nexport const curveDist = (geometry) => {\r\n const dist = lineDist(geometry);\r\n const calcAngle = Math.acos(1 - (dist * dist) /\r\n (2 * geometry.radius * geometry.radius));\r\n return geometry.radius * calcAngle;\r\n};","import icon0 from './basic-pin-large-0.png';\r\nimport icon1 from './basic-pin-large-1.png';\r\nimport icon2 from './basic-pin-large-2.png';\r\nimport icon3 from './basic-pin-large-3.png';\r\nimport icon4 from './basic-pin-large-4.png';\r\nimport icon5 from './basic-pin-large-5.png';\r\nimport icon6 from './basic-pin-large-6.png';\r\nimport icon7 from './basic-pin-large-7.png';\r\nimport icon8 from './basic-pin-large-8.png';\r\nimport icon9 from './basic-pin-large-9.png';\r\nimport icon10 from './basic-pin-large-10.png';\r\nimport icon11 from './basic-pin-large-11.png';\r\nimport icon12 from './basic-pin-large-12.png';\r\nimport icon13 from './basic-pin-large-13.png';\r\nimport icon14 from './basic-pin-large-14.png';\r\nimport icon15 from './basic-pin-large-15.png';\r\nimport icon16 from './basic-pin-small-0.png';\r\nimport icon17 from './basic-pin-small-1.png';\r\nimport icon18 from './basic-pin-small-2.png';\r\nimport icon19 from './basic-pin-small-3.png';\r\nimport icon20 from './basic-pin-small-4.png';\r\nimport icon21 from './basic-pin-small-5.png';\r\nimport icon22 from './basic-pin-small-6.png';\r\nimport icon23 from './basic-pin-small-7.png';\r\nimport icon24 from './basic-pin-small-8.png';\r\nimport icon25 from './basic-pin-small-9.png';\r\nimport icon26 from './basic-pin-small-10.png';\r\nimport icon27 from './basic-pin-small-11.png';\r\nimport icon28 from './basic-pin-small-12.png';\r\nimport icon29 from './basic-pin-small-13.png';\r\nimport icon30 from './basic-pin-small-14.png';\r\nimport icon31 from './basic-pin-small-15.png';\r\nimport icon32 from './basic-push-pin-0.png';\r\nimport icon33 from './basic-push-pin-1.png';\r\nimport icon34 from './basic-push-pin-2.png';\r\nimport icon35 from './basic-push-pin-3.png';\r\nimport icon36 from './basic-push-pin-4.png';\r\nimport icon37 from './basic-push-pin-5.png';\r\nimport icon38 from './basic-push-pin-6.png';\r\nimport icon39 from './basic-push-pin-7.png';\r\nimport icon40 from './basic-push-pin-8.png';\r\nimport icon41 from './basic-push-pin-9.png';\r\nimport icon42 from './basic-push-pin-10.png';\r\nimport icon43 from './basic-push-pin-11.png';\r\nimport icon44 from './basic-push-pin-12.png';\r\nimport icon45 from './basic-push-pin-13.png';\r\nimport icon46 from './basic-push-pin-14.png';\r\nimport icon47 from './basic-push-pin-15.png';\r\n\r\nconst textures = {\r\n 'basic-pin-large-0': icon0,\r\n 'basic-pin-large-1': icon1,\r\n 'basic-pin-large-2': icon2,\r\n 'basic-pin-large-3': icon3,\r\n 'basic-pin-large-4': icon4,\r\n 'basic-pin-large-5': icon5,\r\n 'basic-pin-large-6': icon6,\r\n 'basic-pin-large-7': icon7,\r\n 'basic-pin-large-8': icon8,\r\n 'basic-pin-large-9': icon9,\r\n 'basic-pin-large-10': icon10,\r\n 'basic-pin-large-11': icon11,\r\n 'basic-pin-large-12': icon12,\r\n 'basic-pin-large-13': icon13,\r\n 'basic-pin-large-14': icon14,\r\n 'basic-pin-large-15': icon15,\r\n 'basic-pin-small-0': icon16,\r\n 'basic-pin-small-1': icon17,\r\n 'basic-pin-small-2': icon18,\r\n 'basic-pin-small-3': icon19,\r\n 'basic-pin-small-4': icon20,\r\n 'basic-pin-small-5': icon21,\r\n 'basic-pin-small-6': icon22,\r\n 'basic-pin-small-7': icon23,\r\n 'basic-pin-small-8': icon24,\r\n 'basic-pin-small-9': icon25,\r\n 'basic-pin-small-10': icon26,\r\n 'basic-pin-small-11': icon27,\r\n 'basic-pin-small-12': icon28,\r\n 'basic-pin-small-13': icon29,\r\n 'basic-pin-small-14': icon30,\r\n 'basic-pin-small-15': icon31,\r\n 'basic-push-pin-0': icon32,\r\n 'basic-push-pin-1': icon33,\r\n 'basic-push-pin-2': icon34,\r\n 'basic-push-pin-3': icon35,\r\n 'basic-push-pin-4': icon36,\r\n 'basic-push-pin-5': icon37,\r\n 'basic-push-pin-6': icon38,\r\n 'basic-push-pin-7': icon39,\r\n 'basic-push-pin-8': icon40,\r\n 'basic-push-pin-9': icon41,\r\n 'basic-push-pin-10': icon42,\r\n 'basic-push-pin-11': icon43,\r\n 'basic-push-pin-12': icon44,\r\n 'basic-push-pin-13': icon45,\r\n 'basic-push-pin-14': icon46,\r\n 'basic-push-pin-15': icon47,\r\n};\r\n\r\nexport default textures;","export default __webpack_public_path__ + \"static/media/basic-pin-large-0.75ec4490.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-1.de25c04d.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-2.23fb938d.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-3.65851ce1.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-4.9966d8be.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-5.790dd84e.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-6.a68198e2.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-7.4c3698cb.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-8.f7c1d345.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-9.a396cd2e.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-10.99e3c8ff.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-11.b8422548.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-12.d24a3926.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-13.fcd61555.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-14.6f043dcd.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-large-15.7f4dcc36.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-0.ac50d9dd.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-1.d45746d2.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-2.02ae7f5d.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-3.7751012c.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-4.edcfac5a.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-5.42c12183.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-6.542950ea.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-7.bdbb489b.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-8.dd94c859.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-9.78cbab57.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-10.1798390a.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-11.f6c044f3.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-12.5e716d0a.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-13.dca970d3.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-14.1c33bb37.png\";","export default __webpack_public_path__ + \"static/media/basic-pin-small-15.96c7fac3.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-0.959c4b2f.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-1.a4c240b1.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-2.61523e37.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-3.53684cd6.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-4.626c530e.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-5.493e3493.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-6.9025f632.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-7.be74b86d.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-8.662983fe.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-9.e8c0afd3.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-10.3c7e3c46.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-11.b0a43ba2.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-12.104ba8ac.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-13.30dbf535.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-14.e8adad8f.png\";","export default __webpack_public_path__ + \"static/media/basic-push-pin-15.1cd5a458.png\";","import icon0 from './001-ahead only.png';\r\nimport icon1 from './002-crossroads.png';\r\nimport icon2 from './003-falling rocks.png';\r\nimport icon3 from './004-give way.png';\r\nimport icon4 from './005-hump.png';\r\nimport icon5 from './006-left turn.png';\r\nimport icon6 from './007-parking.png';\r\nimport icon7 from './008-level crossing.png';\r\nimport icon8 from './009-speed limit.png';\r\nimport icon9 from './010-narrow bridge.png';\r\nimport icon10 from './011-no bike.png';\r\nimport icon11 from './012-no trucks.png';\r\nimport icon12 from './013-no alarm.png';\r\nimport icon13 from './014-no turn left.png';\r\nimport icon14 from './015-no motorcycles.png';\r\nimport icon15 from './016-speed limit.png';\r\nimport icon16 from './017-no overtaking.png';\r\nimport icon17 from './018-pedestrian.png';\r\nimport icon18 from './019-no entry.png';\r\nimport icon19 from './020-u turn.png';\r\nimport icon20 from './021-Two way.png';\r\nimport icon21 from './022-pedestrian crossing.png';\r\nimport icon22 from './023-right turn.png';\r\nimport icon23 from './024-road work.png';\r\nimport icon24 from './025-roundabout.png';\r\nimport icon25 from './026-pedestrian crossing.png';\r\nimport icon26 from './027-Slippery road.png';\r\nimport icon27 from './028-traffic lights.png';\r\nimport icon28 from './029-turn left.png';\r\nimport icon29 from './030-turn right.png';\r\nimport icon30 from './031-uneven.png';\r\nimport icon31 from './032-maximum.png';\r\nimport icon32 from './033-wild animals.png';\r\n\r\nconst textures = {\r\n '001-ahead only': icon0,\r\n '002-crossroads': icon1,\r\n '003-falling rocks': icon2,\r\n '004-give way': icon3,\r\n '005-hump': icon4,\r\n '006-left turn': icon5,\r\n '007-parking': icon6,\r\n '008-level crossing': icon7,\r\n '009-speed limit': icon8,\r\n '010-narrow bridge': icon9,\r\n '011-no bike': icon10,\r\n '012-no trucks': icon11,\r\n '013-no alarm': icon12,\r\n '014-no turn left': icon13,\r\n '015-no motorcycles': icon14,\r\n '016-speed limit': icon15,\r\n '017-no overtaking': icon16,\r\n '018-pedestrian': icon17,\r\n '019-no entry': icon18,\r\n '020-u turn': icon19,\r\n '021-Two way': icon20,\r\n '022-pedestrian crossing': icon21,\r\n '023-right turn': icon22,\r\n '024-road work': icon23,\r\n '025-roundabout': icon24,\r\n '026-pedestrian crossing': icon25,\r\n '027-Slippery road': icon26,\r\n '028-traffic lights': icon27,\r\n '029-turn left': icon28,\r\n '030-turn right': icon29,\r\n '031-uneven': icon30,\r\n '032-maximum': icon31,\r\n '033-wild animals': icon32,\r\n};\r\n\r\nexport default textures;","export default __webpack_public_path__ + \"static/media/001-ahead only.b36dbabc.png\";","export default __webpack_public_path__ + \"static/media/002-crossroads.abff42d3.png\";","export default __webpack_public_path__ + \"static/media/003-falling rocks.daff62e3.png\";","export default __webpack_public_path__ + \"static/media/004-give way.e8421679.png\";","export default __webpack_public_path__ + \"static/media/005-hump.b663a44b.png\";","export default __webpack_public_path__ + \"static/media/006-left turn.e8bd0364.png\";","export default __webpack_public_path__ + \"static/media/007-parking.c84744cd.png\";","export default __webpack_public_path__ + \"static/media/008-level crossing.053e35fb.png\";","export default __webpack_public_path__ + \"static/media/009-speed limit.825c6624.png\";","export default __webpack_public_path__ + \"static/media/010-narrow bridge.f8bce357.png\";","export default __webpack_public_path__ + \"static/media/011-no bike.6c786d64.png\";","export default __webpack_public_path__ + \"static/media/012-no trucks.bf3b4ed9.png\";","export default __webpack_public_path__ + \"static/media/013-no alarm.c6732ce5.png\";","export default __webpack_public_path__ + \"static/media/014-no turn left.7a57b70b.png\";","export default __webpack_public_path__ + \"static/media/015-no motorcycles.e72e07b7.png\";","export default __webpack_public_path__ + \"static/media/016-speed limit.96587810.png\";","export default __webpack_public_path__ + \"static/media/017-no overtaking.e093fefa.png\";","export default __webpack_public_path__ + \"static/media/018-pedestrian.49dc27d1.png\";","export default __webpack_public_path__ + \"static/media/019-no entry.31309892.png\";","export default __webpack_public_path__ + \"static/media/020-u turn.cc1171e5.png\";","export default __webpack_public_path__ + \"static/media/021-Two way.dad656b4.png\";","export default __webpack_public_path__ + \"static/media/022-pedestrian crossing.10e3b5d0.png\";","export default __webpack_public_path__ + \"static/media/023-right turn.01949354.png\";","export default __webpack_public_path__ + \"static/media/024-road work.b9ef5c5c.png\";","export default __webpack_public_path__ + \"static/media/025-roundabout.9ba22352.png\";","export default __webpack_public_path__ + \"static/media/026-pedestrian crossing.21ccb02a.png\";","export default __webpack_public_path__ + \"static/media/027-Slippery road.cb01f1f4.png\";","export default __webpack_public_path__ + \"static/media/028-traffic lights.195911bc.png\";","export default __webpack_public_path__ + \"static/media/029-turn left.ebfb7602.png\";","export default __webpack_public_path__ + \"static/media/030-turn right.c33332ed.png\";","export default __webpack_public_path__ + \"static/media/031-uneven.b33d0f06.png\";","export default __webpack_public_path__ + \"static/media/032-maximum.b544a731.png\";","export default __webpack_public_path__ + \"static/media/033-wild animals.96a2df8b.png\";","import icon0 from './001-narrow.png';\r\nimport icon1 from './002-merge.png';\r\nimport icon2 from './003-curve.png';\r\nimport icon3 from './004-curve.png';\r\nimport icon4 from './005-Junction.png';\r\nimport icon5 from './006-curve.png';\r\nimport icon6 from './007-crossroads.png';\r\nimport icon7 from './008-hump.png';\r\nimport icon8 from './009-uneven.png';\r\nimport icon9 from './010-roundabout.png';\r\nimport icon10 from './011-Two way.png';\r\nimport icon11 from './012-Junction.png';\r\nimport icon12 from './013-Junction.png';\r\nimport icon13 from './014-Two way.png';\r\nimport icon14 from './015-level.png';\r\nimport icon15 from './016-warning.png';\r\nimport icon16 from './017-hump.png';\r\nimport icon17 from './018-dock.png';\r\nimport icon18 from './019-merge.png';\r\nimport icon19 from './020-falling rocks.png';\r\nimport icon20 from './021-speed limit.png';\r\nimport icon21 from './022-speed limit.png';\r\nimport icon22 from './023-speed limit.png';\r\nimport icon23 from './024-speed limit.png';\r\nimport icon24 from './025-speed limit.png';\r\nimport icon25 from './026-speed limit.png';\r\nimport icon26 from './027-speed limit.png';\r\nimport icon27 from './028-priority.png';\r\nimport icon28 from './029-no overtaking.png';\r\nimport icon29 from './030-no turn right.png';\r\nimport icon30 from './031-u turn.png';\r\nimport icon31 from './032-no stopping.png';\r\nimport icon32 from './033-no waiting.png';\r\nimport icon33 from './034-ahead.png';\r\nimport icon34 from './035-turn left.png';\r\nimport icon35 from './036-keep left.png';\r\nimport icon36 from './037-direction.png';\r\nimport icon37 from './038-turn left.png';\r\nimport icon38 from './039-roundabout.png';\r\nimport icon39 from './040-no entry.png';\r\nimport icon40 from './041-parking.png';\r\nimport icon41 from './042-priority.png';\r\nimport icon42 from './043-cul de sac.png';\r\nimport icon43 from './044-countdown.png';\r\nimport icon44 from './045-countdown.png';\r\nimport icon45 from './046-countdown.png';\r\nimport icon46 from './047-hospital.png';\r\nimport icon47 from './048-information.png';\r\nimport icon48 from './049-speed camera.png';\r\nimport icon49 from './050-lane.png';\r\nimport icon50 from './051-end motorway.png';\r\nimport icon51 from './052-motorway.png';\r\nimport icon52 from './053-one way.png';\r\nimport icon53 from './054-direction.png';\r\nimport icon54 from './055-stop.png';\r\nimport icon55 from './056-road.png';\r\nimport icon56 from './057-emergency diversion.png';\r\nimport icon57 from './058-emergency diversion.png';\r\nimport icon58 from './059-emergency diversion.png';\r\nimport icon59 from './060-emergency diversion.png';\r\n\r\nconst textures = {\r\n '001-narrow': icon0,\r\n '002-merge': icon1,\r\n '003-curve': icon2,\r\n '004-curve': icon3,\r\n '005-Junction': icon4,\r\n '006-curve': icon5,\r\n '007-crossroads': icon6,\r\n '008-hump': icon7,\r\n '009-uneven': icon8,\r\n '010-roundabout': icon9,\r\n '011-Two way': icon10,\r\n '012-Junction': icon11,\r\n '013-Junction': icon12,\r\n '014-Two way': icon13,\r\n '015-level': icon14,\r\n '016-warning': icon15,\r\n '017-hump': icon16,\r\n '018-dock': icon17,\r\n '019-merge': icon18,\r\n '020-falling rocks': icon19,\r\n '021-speed limit': icon20,\r\n '022-speed limit': icon21,\r\n '023-speed limit': icon22,\r\n '024-speed limit': icon23,\r\n '025-speed limit': icon24,\r\n '026-speed limit': icon25,\r\n '027-speed limit': icon26,\r\n '028-priority': icon27,\r\n '029-no overtaking': icon28,\r\n '030-no turn right': icon29,\r\n '031-u turn': icon30,\r\n '032-no stopping': icon31,\r\n '033-no waiting': icon32,\r\n '034-ahead': icon33,\r\n '035-turn left': icon34,\r\n '036-keep left': icon35,\r\n '037-direction': icon36,\r\n '038-turn left': icon37,\r\n '039-roundabout': icon38,\r\n '040-no entry': icon39,\r\n '041-parking': icon40,\r\n '042-priority': icon41,\r\n '043-cul de sac': icon42,\r\n '044-countdown': icon43,\r\n '045-countdown': icon44,\r\n '046-countdown': icon45,\r\n '047-hospital': icon46,\r\n '048-information': icon47,\r\n '049-speed camera': icon48,\r\n '050-lane': icon49,\r\n '051-end motorway': icon50,\r\n '052-motorway': icon51,\r\n '053-one way': icon52,\r\n '054-direction': icon53,\r\n '055-stop': icon54,\r\n '056-road': icon55,\r\n '057-emergency diversion': icon56,\r\n '058-emergency diversion': icon57,\r\n '059-emergency diversion': icon58,\r\n '060-emergency diversion': icon59,\r\n};\r\n\r\nexport default textures;","export default __webpack_public_path__ + \"static/media/001-narrow.df856ac0.png\";","export default __webpack_public_path__ + \"static/media/002-merge.a4a30488.png\";","export default __webpack_public_path__ + \"static/media/003-curve.05546df5.png\";","export default __webpack_public_path__ + \"static/media/004-curve.8f7cd063.png\";","export default __webpack_public_path__ + \"static/media/005-Junction.4dffa6c5.png\";","export default __webpack_public_path__ + \"static/media/006-curve.e74f68f4.png\";","export default __webpack_public_path__ + \"static/media/007-crossroads.b4aeab6d.png\";","export default __webpack_public_path__ + \"static/media/008-hump.f5b1cab9.png\";","export default __webpack_public_path__ + \"static/media/009-uneven.397db48f.png\";","export default __webpack_public_path__ + \"static/media/010-roundabout.68d0ffbd.png\";","export default __webpack_public_path__ + \"static/media/011-Two way.d51a58d8.png\";","export default __webpack_public_path__ + \"static/media/012-Junction.bd60896e.png\";","export default __webpack_public_path__ + \"static/media/013-Junction.78c13ca2.png\";","export default __webpack_public_path__ + \"static/media/014-Two way.b345b22a.png\";","export default __webpack_public_path__ + \"static/media/015-level.f8296ff7.png\";","export default __webpack_public_path__ + \"static/media/016-warning.0019e601.png\";","export default __webpack_public_path__ + \"static/media/017-hump.30a7ba8f.png\";","export default __webpack_public_path__ + \"static/media/018-dock.fdf0064a.png\";","export default __webpack_public_path__ + \"static/media/019-merge.2190995c.png\";","export default __webpack_public_path__ + \"static/media/020-falling rocks.9f4df857.png\";","export default __webpack_public_path__ + \"static/media/021-speed limit.d6845db0.png\";","export default __webpack_public_path__ + \"static/media/022-speed limit.8064e31b.png\";","export default __webpack_public_path__ + \"static/media/023-speed limit.aed48e6f.png\";","export default __webpack_public_path__ + \"static/media/024-speed limit.1e362fee.png\";","export default __webpack_public_path__ + \"static/media/025-speed limit.347d7255.png\";","export default __webpack_public_path__ + \"static/media/026-speed limit.45d92974.png\";","export default __webpack_public_path__ + \"static/media/027-speed limit.980a6068.png\";","export default __webpack_public_path__ + \"static/media/028-priority.fc44147f.png\";","export default __webpack_public_path__ + \"static/media/029-no overtaking.58426286.png\";","export default __webpack_public_path__ + \"static/media/030-no turn right.acbc461d.png\";","export default __webpack_public_path__ + \"static/media/031-u turn.08809920.png\";","export default __webpack_public_path__ + \"static/media/032-no stopping.d7c7b42a.png\";","export default __webpack_public_path__ + \"static/media/033-no waiting.4e5fe72f.png\";","export default __webpack_public_path__ + \"static/media/034-ahead.58e48a36.png\";","export default __webpack_public_path__ + \"static/media/035-turn left.f545eb0c.png\";","export default __webpack_public_path__ + \"static/media/036-keep left.536a6a5c.png\";","export default __webpack_public_path__ + \"static/media/037-direction.d6d26740.png\";","export default __webpack_public_path__ + \"static/media/038-turn left.3517acec.png\";","export default __webpack_public_path__ + \"static/media/039-roundabout.e35a3904.png\";","export default __webpack_public_path__ + \"static/media/040-no entry.606b7596.png\";","export default __webpack_public_path__ + \"static/media/041-parking.2c36baed.png\";","export default __webpack_public_path__ + \"static/media/042-priority.8f2995ce.png\";","export default __webpack_public_path__ + \"static/media/043-cul de sac.1eda70a7.png\";","export default __webpack_public_path__ + \"static/media/044-countdown.cd86cb1a.png\";","export default __webpack_public_path__ + \"static/media/045-countdown.64bef15d.png\";","export default __webpack_public_path__ + \"static/media/046-countdown.7ede0d8c.png\";","export default __webpack_public_path__ + \"static/media/047-hospital.e4c63624.png\";","export default __webpack_public_path__ + \"static/media/048-information.803f80de.png\";","export default __webpack_public_path__ + \"static/media/049-speed camera.11651251.png\";","export default __webpack_public_path__ + \"static/media/050-lane.e8790c18.png\";","export default __webpack_public_path__ + \"static/media/051-end motorway.06ef8c65.png\";","export default __webpack_public_path__ + \"static/media/052-motorway.84800887.png\";","export default __webpack_public_path__ + \"static/media/053-one way.1028aeeb.png\";","export default __webpack_public_path__ + \"static/media/054-direction.ef3625e0.png\";","export default __webpack_public_path__ + \"static/media/055-stop.c8013090.png\";","export default __webpack_public_path__ + \"static/media/056-road.ae8fd707.png\";","export default __webpack_public_path__ + \"static/media/057-emergency diversion.e4fc4c07.png\";","export default __webpack_public_path__ + \"static/media/058-emergency diversion.cf3519dd.png\";","export default __webpack_public_path__ + \"static/media/059-emergency diversion.286133f6.png\";","export default __webpack_public_path__ + \"static/media/060-emergency diversion.8a4411bc.png\";","import icon0 from './construction--barrier--temporary.png';\r\nimport icon1 from './construction--flat--crosswalk-plain.png';\r\nimport icon2 from './construction--flat--driveway.png';\r\nimport icon3 from './construction--flat--flat-driveway.png';\r\nimport icon4 from './marking--discrete--arrow--left.png';\r\nimport icon5 from './marking--discrete--arrow--right.png';\r\nimport icon6 from './marking--discrete--arrow--split-left-or-straight.png';\r\nimport icon7 from './marking--discrete--arrow--split-right-or-straight.png';\r\nimport icon8 from './marking--discrete--arrow--straight.png';\r\nimport icon9 from './marking--discrete--crosswalk-zebra.png';\r\nimport icon10 from './marking--discrete--give-way-row.png';\r\nimport icon11 from './marking--discrete--give-way-single.png';\r\nimport icon12 from './marking--discrete--other-marking.png';\r\nimport icon13 from './marking--discrete--stop-line.png';\r\nimport icon14 from './marking--discrete--symbol--bicycle.png';\r\nimport icon15 from './marking--discrete--text.png';\r\nimport icon16 from './object--banner.png';\r\nimport icon17 from './object--bench.png';\r\nimport icon18 from './object--bike-rack.png';\r\nimport icon19 from './object--catch-basin.png';\r\nimport icon20 from './object--cctv-camera.png';\r\nimport icon21 from './object--fire-hydrant.png';\r\nimport icon22 from './object--junction-box.png';\r\nimport icon23 from './object--mailbox.png';\r\nimport icon24 from './object--manhole.png';\r\nimport icon25 from './object--parking-meter.png';\r\nimport icon26 from './object--phone-booth.png';\r\nimport icon27 from './object--sign--advertisement.png';\r\nimport icon28 from './object--sign--information.png';\r\nimport icon29 from './object--sign--store.png';\r\nimport icon30 from './object--street-light.png';\r\nimport icon31 from './object--support--pole.png';\r\nimport icon32 from './object--support--traffic-sign-frame.png';\r\nimport icon33 from './object--support--utility-pole.png';\r\nimport icon34 from './object--traffic-cone.png';\r\nimport icon35 from './object--traffic-light.png';\r\nimport icon36 from './object--trash-can.png';\r\nimport icon37 from './object--water-valve.png';\r\n\r\nconst textures = {\r\n 'construction--barrier--temporary': icon0,\r\n 'construction--flat--crosswalk-plain': icon1,\r\n 'construction--flat--driveway': icon2,\r\n 'construction--flat--flat-driveway': icon3,\r\n 'marking--discrete--arrow--left': icon4,\r\n 'marking--discrete--arrow--right': icon5,\r\n 'marking--discrete--arrow--split-left-or-straight': icon6,\r\n 'marking--discrete--arrow--split-right-or-straight': icon7,\r\n 'marking--discrete--arrow--straight': icon8,\r\n 'marking--discrete--crosswalk-zebra': icon9,\r\n 'marking--discrete--give-way-row': icon10,\r\n 'marking--discrete--give-way-single': icon11,\r\n 'marking--discrete--other-marking': icon12,\r\n 'marking--discrete--stop-line': icon13,\r\n 'marking--discrete--symbol--bicycle': icon14,\r\n 'marking--discrete--text': icon15,\r\n 'object--banner': icon16,\r\n 'object--bench': icon17,\r\n 'object--bike-rack': icon18,\r\n 'object--catch-basin': icon19,\r\n 'object--cctv-camera': icon20,\r\n 'object--fire-hydrant': icon21,\r\n 'object--junction-box': icon22,\r\n 'object--mailbox': icon23,\r\n 'object--manhole': icon24,\r\n 'object--parking-meter': icon25,\r\n 'object--phone-booth': icon26,\r\n 'object--sign--advertisement': icon27,\r\n 'object--sign--information': icon28,\r\n 'object--sign--store': icon29,\r\n 'object--street-light': icon30,\r\n 'object--support--pole': icon31,\r\n 'object--support--traffic-sign-frame': icon32,\r\n 'object--support--utility-pole': icon33,\r\n 'object--traffic-cone': icon34,\r\n 'object--traffic-light': icon35,\r\n 'object--trash-can': icon36,\r\n 'object--water-valve': icon37,\r\n};\r\n\r\nexport default textures;","export default __webpack_public_path__ + \"static/media/construction--barrier--temporary.c295cec2.png\";","export default __webpack_public_path__ + \"static/media/construction--flat--crosswalk-plain.3d80b1ca.png\";","export default __webpack_public_path__ + \"static/media/construction--flat--driveway.9fd50f90.png\";","export default __webpack_public_path__ + \"static/media/construction--flat--flat-driveway.dbed896e.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--arrow--left.5a8ed6fe.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--arrow--right.0c25ddcb.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--arrow--split-left-or-straight.26ea6315.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--arrow--split-right-or-straight.19848277.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--arrow--straight.c32e8693.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--crosswalk-zebra.41655dfd.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--give-way-row.d469bc27.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--give-way-single.88347f54.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--other-marking.0b3d3063.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--stop-line.926dabb3.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--symbol--bicycle.b160ff92.png\";","export default __webpack_public_path__ + \"static/media/marking--discrete--text.a473cb73.png\";","export default __webpack_public_path__ + \"static/media/object--banner.4261826e.png\";","export default __webpack_public_path__ + \"static/media/object--bench.de45c74e.png\";","export default __webpack_public_path__ + \"static/media/object--bike-rack.2d333cd5.png\";","export default __webpack_public_path__ + \"static/media/object--catch-basin.6c8a4f84.png\";","export default __webpack_public_path__ + \"static/media/object--cctv-camera.2eea74b0.png\";","export default __webpack_public_path__ + \"static/media/object--fire-hydrant.d91d17bd.png\";","export default __webpack_public_path__ + \"static/media/object--junction-box.75aae919.png\";","export default __webpack_public_path__ + \"static/media/object--mailbox.6bae4b92.png\";","export default __webpack_public_path__ + \"static/media/object--manhole.049795d8.png\";","export default __webpack_public_path__ + \"static/media/object--parking-meter.0c26ccb0.png\";","export default __webpack_public_path__ + \"static/media/object--phone-booth.b2671fc0.png\";","export default __webpack_public_path__ + \"static/media/object--sign--advertisement.1d13d128.png\";","export default __webpack_public_path__ + \"static/media/object--sign--information.88add084.png\";","export default __webpack_public_path__ + \"static/media/object--sign--store.6da73474.png\";","export default __webpack_public_path__ + \"static/media/object--street-light.99b39470.png\";","export default __webpack_public_path__ + \"static/media/object--support--pole.36dfcf46.png\";","export default __webpack_public_path__ + \"static/media/object--support--traffic-sign-frame.7bae73cd.png\";","export default __webpack_public_path__ + \"static/media/object--support--utility-pole.71ce4ba5.png\";","export default __webpack_public_path__ + \"static/media/object--traffic-cone.b0f05e52.png\";","export default __webpack_public_path__ + \"static/media/object--traffic-light.6dd482e0.png\";","export default __webpack_public_path__ + \"static/media/object--trash-can.4ba13bc2.png\";","export default __webpack_public_path__ + \"static/media/object--water-valve.848a98d0.png\";","export default __webpack_public_path__ + \"static/media/complementary--accident-area--g1.d5411006.png\";","export default __webpack_public_path__ + \"static/media/complementary--accident-area--g2.6b892819.png\";","export default __webpack_public_path__ + \"static/media/complementary--accident-area--g3.39c5aa2d.png\";","export default __webpack_public_path__ + \"static/media/complementary--accident-area--g4.c8960430.png\";","export default __webpack_public_path__ + \"static/media/complementary--advisory-exit-or-ramp-speed--g1.d5aa6bd3.png\";","export default __webpack_public_path__ + \"static/media/complementary--bicycles--g1.e8a92988.png\";","export default __webpack_public_path__ + \"static/media/complementary--bicycles-and-pedestrians-detour--g1.dcab8b13.png\";","export default __webpack_public_path__ + \"static/media/complementary--bicycles-or-pedestrians-detour--g1.e5138d21.png\";","export default __webpack_public_path__ + \"static/media/complementary--bicycles-turn-right--g1.b50cdd8a.png\";","export default __webpack_public_path__ + \"static/media/complementary--bike-route--g1.ad85731c.png\";","export default __webpack_public_path__ + \"static/media/complementary--bike-route--g3.1a874469.png\";","export default __webpack_public_path__ + \"static/media/complementary--both-directions--g1.1eaa27e4.png\";","export default __webpack_public_path__ + \"static/media/complementary--both-directions--g2.ab7a5976.png\";","export default __webpack_public_path__ + \"static/media/complementary--buses--g1.faffc898.png\";","export default __webpack_public_path__ + \"static/media/complementary--buses-and-trucks--g1.d1b0d33f.png\";","export default __webpack_public_path__ + \"static/media/complementary--camera--g1.41a87e99.png\";","export default __webpack_public_path__ + \"static/media/complementary--camera--g2.307561d6.png\";","export default __webpack_public_path__ + \"static/media/complementary--camera--g3.859735f8.png\";","export default __webpack_public_path__ + \"static/media/complementary--camera--g4.5bcf9af2.png\";","export default __webpack_public_path__ + \"static/media/complementary--camera--g5.811530fb.png\";","export default __webpack_public_path__ + \"static/media/complementary--caravan-trailers--g2.a2b733be.png\";","export default __webpack_public_path__ + \"static/media/complementary--caravan-trailers--g3.1ed469ef.png\";","export default __webpack_public_path__ + \"static/media/complementary--caravans--g2.ce71e539.png\";","export default __webpack_public_path__ + \"static/media/complementary--carts--g1.fea12c17.png\";","export default __webpack_public_path__ + \"static/media/complementary--chevron-left--g1.57ac3093.png\";","export default __webpack_public_path__ + \"static/media/complementary--chevron-left--g2.6443d98c.png\";","export default __webpack_public_path__ + \"static/media/complementary--chevron-left--g3.a6c83c95.png\";","export default __webpack_public_path__ + \"static/media/complementary--chevron-left--g4.77777d15.png\";","export default __webpack_public_path__ + \"static/media/complementary--chevron-left--g5.2f7987c9.png\";","export default __webpack_public_path__ + \"static/media/complementary--chevron-right--g1.f22f39f2.png\";","export default __webpack_public_path__ + \"static/media/complementary--chevron-right--g2.71ba8ac6.png\";","export default __webpack_public_path__ + \"static/media/complementary--chevron-right--g3.1dd25331.png\";","export default __webpack_public_path__ + \"static/media/complementary--chevron-right--g4.651efd19.png\";","export default __webpack_public_path__ + \"static/media/complementary--chevron-right--g5.7734c675.png\";","export default __webpack_public_path__ + \"static/media/complementary--dangerous-or-pollutant-good--g1.3bf88255.png\";","export default __webpack_public_path__ + \"static/media/complementary--dead-end--g1.1e58d714.png\";","export default __webpack_public_path__ + \"static/media/complementary--detour--g1.227caa6a.png\";","export default __webpack_public_path__ + \"static/media/complementary--disabled-persons--g1.359b3b95.png\";","export default __webpack_public_path__ + \"static/media/complementary--distance--g1.108230dd.png\";","export default __webpack_public_path__ + \"static/media/complementary--distance--g2.f24fae54.png\";","export default __webpack_public_path__ + \"static/media/complementary--distance--g3.2d9b5876.png\";","export default __webpack_public_path__ + \"static/media/complementary--end-of-road-works--g1.92d44f56.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-bicycles--g1.a9f8a4b1.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-bicycles--g2.64490d3f.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-buses--g1.1ba43e99.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-carts--g1.68857953.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-motorcycles--g1.1c4d4f08.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-motorcycles--g2.f66bc691.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-polluting-level-green--g1.a4a5c035.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-polluting-level-green-yellow--g1.b02fc562.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-polluting-level-green-yellow-red--g1.36e116eb.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-tractors--g1.5fffbc13.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-tractors--g2.b5eb0923.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-trailers--g1.fb401260.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-trailers--g2.915ae4eb.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-trains--g1.969b8921.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-trams--g1.68209674.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-trucks--g1.e68b7c31.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-vehicles--g1.89da1dbd.png\";","export default __webpack_public_path__ + \"static/media/complementary--except-vehicles--g2.a39aee57.png\";","export default __webpack_public_path__ + \"static/media/complementary--go-left--g1.c3874410.png\";","export default __webpack_public_path__ + \"static/media/complementary--go-right--g1.f0fa8d37.png\";","export default __webpack_public_path__ + \"static/media/complementary--go-straight-or-turn-left--g1.0a66ac06.png\";","export default __webpack_public_path__ + \"static/media/complementary--go-straight-or-turn-right--g1.bf518ff3.png\";","export default __webpack_public_path__ + \"static/media/complementary--height-limit--g1.66143aeb.png\";","export default __webpack_public_path__ + \"static/media/complementary--height-limit--g2.5f8c440f.png\";","export default __webpack_public_path__ + \"static/media/complementary--including-bicycles-and-motorcycles--g1.ee870326.png\";","export default __webpack_public_path__ + \"static/media/complementary--including-buses-vehicles--g1.03851082.png\";","export default __webpack_public_path__ + \"static/media/complementary--keep-left--g1.9f4023c8.png\";","export default __webpack_public_path__ + \"static/media/complementary--keep-right--g1.4194a29d.png\";","export default __webpack_public_path__ + \"static/media/complementary--lane-control--g1.82117f8e.png\";","export default __webpack_public_path__ + \"static/media/complementary--lane-control--g2.c5f7c989.png\";","export default __webpack_public_path__ + \"static/media/complementary--lane-control--g3.ade4dcda.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-10--g1.53abf612.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-15--g1.c67ac701.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-20--g1.d2e11200.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-25--g1.ecdfffb1.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-30--g1.df513571.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-35--g1.bf20adba.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-40--g1.8969e2c1.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-45--g1.cdce0b1d.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-50--g1.6b808783.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-55--g1.be855ff8.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-60--g1.23136090.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-65--g1.058ac585.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-70--g1.361e8a6e.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-75--g1.3fd589fc.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-80--g1.4a213736.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-85--g1.ba8d0d8b.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-90--g1.c363995e.png\";","export default __webpack_public_path__ + \"static/media/complementary--maximum-speed-limit-95--g1.a5f29207.png\";","export default __webpack_public_path__ + \"static/media/complementary--motorcycles--g1.511b5604.png\";","export default __webpack_public_path__ + \"static/media/complementary--motorcycles--g2.593b05ac.png\";","export default __webpack_public_path__ + \"static/media/complementary--motorcycles--g3.1c3e0e2b.png\";","export default __webpack_public_path__ + \"static/media/complementary--motorcycles--g4.b3d432a8.png\";","export default __webpack_public_path__ + \"static/media/complementary--obstacle-delineator--g1.2be98597.png\";","export default __webpack_public_path__ + \"static/media/complementary--obstacle-delineator--g2.1e86ca50.png\";","export default __webpack_public_path__ + \"static/media/complementary--obstacle-delineator--g3.2445aeb2.png\";","export default __webpack_public_path__ + \"static/media/complementary--one-direction-left--g1.72b7311e.png\";","export default __webpack_public_path__ + \"static/media/complementary--one-direction-right--g1.ef8aa050.png\";","export default __webpack_public_path__ + \"static/media/complementary--pass-left--g1.e63e20d4.png\";","export default __webpack_public_path__ + \"static/media/complementary--pass-right--g1.8143583a.png\";","export default __webpack_public_path__ + \"static/media/complementary--pedestrians-and-bicycles--g1.46b1b0b1.png\";","export default __webpack_public_path__ + \"static/media/complementary--pedestrians-left--g1.b56a5492.png\";","export default __webpack_public_path__ + \"static/media/complementary--pedestrians-right--g1.01475b36.png\";","export default __webpack_public_path__ + \"static/media/complementary--photo-enforced--g1.7f00dc63.png\";","export default __webpack_public_path__ + \"static/media/complementary--playground--g1.7cc32db1.png\";","export default __webpack_public_path__ + \"static/media/complementary--priority-route-at-intersection--g1.339b5f15.png\";","export default __webpack_public_path__ + \"static/media/complementary--priority-route-at-intersection--g2.0f1e5df5.png\";","export default __webpack_public_path__ + \"static/media/complementary--priority-route-at-intersection--g3.a266b74b.png\";","export default __webpack_public_path__ + \"static/media/complementary--priority-route-at-intersection--g4.fc911c8e.png\";","export default __webpack_public_path__ + \"static/media/complementary--priority-route-at-intersection--g5.472959d3.png\";","export default __webpack_public_path__ + \"static/media/complementary--priority-route-at-intersection--g6.9b72a153.png\";","export default __webpack_public_path__ + \"static/media/complementary--railroad--g1.ac072e7a.png\";","export default __webpack_public_path__ + \"static/media/complementary--railroad--g2.7ae94b03.png\";","export default __webpack_public_path__ + \"static/media/complementary--railroad--g3.3ee9fe34.png\";","export default __webpack_public_path__ + \"static/media/complementary--restriction-in-both-directions--g1.076c822f.png\";","export default __webpack_public_path__ + \"static/media/complementary--roundabout-go-left--g1.4b39fec6.png\";","export default __webpack_public_path__ + \"static/media/complementary--roundabout-go-right--g1.c4bcfb99.png\";","export default __webpack_public_path__ + \"static/media/complementary--roundabout-go-straight--g1.8374e8e8.png\";","export default __webpack_public_path__ + \"static/media/complementary--slippery-for-caravan-trailers--g1.22bf4483.png\";","export default __webpack_public_path__ + \"static/media/complementary--snow--g2.d69deef2.png\";","export default __webpack_public_path__ + \"static/media/complementary--snow--g4.767b8bcc.png\";","export default __webpack_public_path__ + \"static/media/complementary--snow--g5.9cab1800.png\";","export default __webpack_public_path__ + \"static/media/complementary--snowmobiles--g1.040ef047.png\";","export default __webpack_public_path__ + \"static/media/complementary--soft-shoulder--g1.69316d35.png\";","export default __webpack_public_path__ + \"static/media/complementary--soft-shoulder--g2.7ca975f6.png\";","export default __webpack_public_path__ + \"static/media/complementary--steep-ascent--g1.530757ce.png\";","export default __webpack_public_path__ + \"static/media/complementary--steep-descent--g1.8c7f6ee5.png\";","export default __webpack_public_path__ + \"static/media/complementary--time-restrictions--g1.26eaeae5.png\";","export default __webpack_public_path__ + \"static/media/complementary--time-restrictions--g3.4c6120b8.png\";","export default __webpack_public_path__ + \"static/media/complementary--tow-away-zone--g1.8e752887.png\";","export default __webpack_public_path__ + \"static/media/complementary--tow-away-zone--g3.22f7f3eb.png\";","export default __webpack_public_path__ + \"static/media/complementary--tractors--g1.e217db9e.png\";","export default __webpack_public_path__ + \"static/media/complementary--traffic-queues--g1.798af17a.png\";","export default __webpack_public_path__ + \"static/media/complementary--trailers--g1.f2bf02fe.png\";","export default __webpack_public_path__ + \"static/media/complementary--trailers--g2.bbd07d83.png\";","export default __webpack_public_path__ + \"static/media/complementary--trailers--g3.e99a3109.png\";","export default __webpack_public_path__ + \"static/media/complementary--trailers--g4.b351db3d.png\";","export default __webpack_public_path__ + \"static/media/complementary--trains--g1.006bb9eb.png\";","export default __webpack_public_path__ + \"static/media/complementary--trams--g1.3bfc644b.png\";","export default __webpack_public_path__ + \"static/media/complementary--trees--g1.26a10d2b.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks--g1.679a2a43.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks--g2.930ba842.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks--g3.41659ea2.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks-and-trailers--g1.67787aa2.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks-buses-trailers--g1.af473f66.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks-go-left--g1.2884aa5c.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks-go-left-ahead--g1.abe94d9d.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks-go-right--g1.82ab3332.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks-go-right-ahead--g1.b575da79.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks-go-straight--g1.76cd0c33.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks-turn-left--g1.d2ead92b.png\";","export default __webpack_public_path__ + \"static/media/complementary--trucks-turn-right--g1.f2a4dae6.png\";","export default __webpack_public_path__ + \"static/media/complementary--turn-left--g1.6d813807.png\";","export default __webpack_public_path__ + \"static/media/complementary--turn-left--g2.6fd51622.png\";","export default __webpack_public_path__ + \"static/media/complementary--turn-right--g1.88241ef1.png\";","export default __webpack_public_path__ + \"static/media/complementary--turn-right--g2.4b154bb3.png\";","export default __webpack_public_path__ + \"static/media/complementary--two-way-traffic--g1.ecba5f2b.png\";","export default __webpack_public_path__ + \"static/media/complementary--two-way-traffic--g2.45a6a7c7.png\";","export default __webpack_public_path__ + \"static/media/complementary--two-way-traffic--g3.46b191f8.png\";","export default __webpack_public_path__ + \"static/media/complementary--two-way-traffic--g4.05df5af7.png\";","export default __webpack_public_path__ + \"static/media/complementary--two-way-traffic--g5.23d82cc1.png\";","export default __webpack_public_path__ + \"static/media/complementary--vehicles--g1.3e0f8a88.png\";","export default __webpack_public_path__ + \"static/media/complementary--vehicles--g2.546a3e5a.png\";","export default __webpack_public_path__ + \"static/media/complementary--vehicles-or-buses--g1.28a800fd.png\";","export default __webpack_public_path__ + \"static/media/complementary--weekends-or-holidays--g1.75bb96df.png\";","export default __webpack_public_path__ + \"static/media/complementary--weight-limit--g1.bdc6c055.png\";","export default __webpack_public_path__ + \"static/media/complementary--when-foggy--g1.ce7480ff.png\";","export default __webpack_public_path__ + \"static/media/complementary--when-rainy--g1.3e9a4e29.png\";","export default __webpack_public_path__ + \"static/media/complementary--when-rainy--g2.5743ee89.png\";","export default __webpack_public_path__ + \"static/media/complementary--when-rainy--g3.0b5ed3f3.png\";","export default __webpack_public_path__ + \"static/media/complementary--when-snowy--g1.eb82e32c.png\";","export default __webpack_public_path__ + \"static/media/complementary--when-snowy--g2.b221027b.png\";","export default __webpack_public_path__ + \"static/media/complementary--when-snowy-or-rainy--g1.af3f362e.png\";","export default __webpack_public_path__ + \"static/media/complementary--when-snowy-or-rainy--g2.bf4655ce.png\";","export default __webpack_public_path__ + \"static/media/complementary--when-wet--g1.11ed4478.png\";","export default __webpack_public_path__ + \"static/media/complementary--width-limit--g1.cef661be.png\";","export default __webpack_public_path__ + \"static/media/complementary--working-days--g1.313bbb27.png\";","export default __webpack_public_path__ + \"static/media/information--airport--g1.73af71fe.png\";","export default __webpack_public_path__ + \"static/media/information--airport--g2.81208f16.png\";","export default __webpack_public_path__ + \"static/media/information--bicycle-lane--g1.504421c1.png\";","export default __webpack_public_path__ + \"static/media/information--bicycles-both-ways--g1.c95bbe04.png\";","export default __webpack_public_path__ + \"static/media/information--bicycles-crossing--g1.f4c114cf.png\";","export default __webpack_public_path__ + \"static/media/information--bicycles-crossing--g2.bf76e715.png\";","export default __webpack_public_path__ + \"static/media/information--bicycles-crossing--g3.6a7abeba.png\";","export default __webpack_public_path__ + \"static/media/information--bike-route--g1.62a47331.png\";","export default __webpack_public_path__ + \"static/media/information--bike-route--g2.97104997.png\";","export default __webpack_public_path__ + \"static/media/information--built-up-area--g1.ac4f16b0.png\";","export default __webpack_public_path__ + \"static/media/information--built-up-area--g2.11ebb081.png\";","export default __webpack_public_path__ + \"static/media/information--bus-lane-straight--g1.4a1a0ce3.png\";","export default __webpack_public_path__ + \"static/media/information--bus-stop--g1.a7ecbcd5.png\";","export default __webpack_public_path__ + \"static/media/information--bus-stop--g2.81775f9e.png\";","export default __webpack_public_path__ + \"static/media/information--camera--g1.a402e59a.png\";","export default __webpack_public_path__ + \"static/media/information--camera--g2.d5adb6c7.png\";","export default __webpack_public_path__ + \"static/media/information--camera--g3.44300682.png\";","export default __webpack_public_path__ + \"static/media/information--camp--g1.84c6b6d9.png\";","export default __webpack_public_path__ + \"static/media/information--camp--g2.b85f120d.png\";","export default __webpack_public_path__ + \"static/media/information--car-pool-lane--g1.2eade6ef.png\";","export default __webpack_public_path__ + \"static/media/information--caravan-parking--g1.18735370.png\";","export default __webpack_public_path__ + \"static/media/information--caravan-trailer-parking--g1.71f0f60c.png\";","export default __webpack_public_path__ + \"static/media/information--cargo-loading-zone--g1.e90c9dac.png\";","export default __webpack_public_path__ + \"static/media/information--central-lane--g1.fe7e0080.png\";","export default __webpack_public_path__ + \"static/media/information--charging-station--g1.38a12cae.png\";","export default __webpack_public_path__ + \"static/media/information--children--g1.84e33dd2.png\";","export default __webpack_public_path__ + \"static/media/information--children--g2.aede4dee.png\";","export default __webpack_public_path__ + \"static/media/information--children-crossing--g5.829b1301.png\";","export default __webpack_public_path__ + \"static/media/information--cycling-two-abreast-permitted--g1.f7b5c1af.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end--g1.337632a7.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end--g2.313e9231.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end--g3.0f065135.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end--g4.50b3a50f.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end-except-bicycles--g1.00a6125f.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end-except-bicycles-and-pedestrians--g1.872ecfb2.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end-except-bicycles-and-pedestrians--g2.403f04e3.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end-left--g1.81116d41.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end-left--g2.369ad9b4.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end-right--g1.b3196029.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end-right--g2.92903f2b.png\";","export default __webpack_public_path__ + \"static/media/information--dead-end-right--g3.00e4000a.png\";","export default __webpack_public_path__ + \"static/media/information--directions--g1.5b231c54.png\";","export default __webpack_public_path__ + \"static/media/information--disabled-persons--g1.4bcf3f61.png\";","export default __webpack_public_path__ + \"static/media/information--disabled-persons--g2.43579fe3.png\";","export default __webpack_public_path__ + \"static/media/information--disabled-persons--g3.312f93f3.png\";","export default __webpack_public_path__ + \"static/media/information--emergency-facility--g1.5f24e4fe.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-advisory-maximum-speed-limit-20--g1.83f3bca3.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-advisory-maximum-speed-limit-40--g1.d09cf637.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-advisory-maximum-speed-limit-60--g1.cbd3a657.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-advisory-maximum-speed-limit-70--g1.a14754dc.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-advisory-maximum-speed-limit-80--g1.20280fbf.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-advisory-maximum-speed-limit-90--g1.84ad37e8.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-bicycle-lane--g1.d2b5baa9.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-built-up-area--g1.d3c1e825.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-built-up-area--g2.c2932636.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-built-up-area--g3.d59cc0fb.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-built-up-area--g4.88e9bd6b.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-car-pool-lane--g1.83bbacf0.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-limited-access-road--g1.4d253455.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-living-street--g1.b9ad088e.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-living-street--g2.edcc67c9.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-10--g1.ca614575.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-20--g1.abe33ebd.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-25--g1.43799527.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-30--g1.779efce2.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-35--g1.674a262a.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-40--g1.baa5bd2c.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-50--g1.20353c86.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-60--g1.461328dc.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-70--g1.2e31daaf.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-75--g1.4bc31e63.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-80--g1.e2f688b1.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-90--g1.49bdceb5.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-100--g1.e83e0d13.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-110--g1.719ac78c.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-120--g1.57a848ce.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-minimum-speed-130--g1.58da3ff2.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-motorway--g1.645f1476.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-overtaking-permitted-heavy-good-vehicles--g1.b36d111d.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-road-works--g1.5b7f3560.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-tunnel--g1.90fc460c.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-tunnel--g2.7ac93cff.png\";","export default __webpack_public_path__ + \"static/media/information--end-of-two-way-traffic--g1.88eeaba6.png\";","export default __webpack_public_path__ + \"static/media/information--equestrians-permitted--g1.a22f8bf3.png\";","export default __webpack_public_path__ + \"static/media/information--exit-ahead--g1.95953c4c.png\";","export default __webpack_public_path__ + \"static/media/information--exit-ahead--g2.d7e0a668.png\";","export default __webpack_public_path__ + \"static/media/information--exit-ahead--g3.36f7fe6b.png\";","export default __webpack_public_path__ + \"static/media/information--flight-port--g1.6ffedaed.png\";","export default __webpack_public_path__ + \"static/media/information--food--g1.c3a95157.png\";","export default __webpack_public_path__ + \"static/media/information--food--g2.a19e0e4d.png\";","export default __webpack_public_path__ + \"static/media/information--gas-station--g1.835ad032.png\";","export default __webpack_public_path__ + \"static/media/information--gas-station--g2.397a57fc.png\";","export default __webpack_public_path__ + \"static/media/information--gas-station--g3.d417b630.png\";","export default __webpack_public_path__ + \"static/media/information--general-speed-limit-at-city-border--g1.162d9f16.png\";","export default __webpack_public_path__ + \"static/media/information--go-left--g1.b4653a1a.png\";","export default __webpack_public_path__ + \"static/media/information--go-right--g1.fb259e79.png\";","export default __webpack_public_path__ + \"static/media/information--go-straight--g1.2b4c9d90.png\";","export default __webpack_public_path__ + \"static/media/information--go-straight-or-left--g1.61f62586.png\";","export default __webpack_public_path__ + \"static/media/information--go-straight-or-right--g1.74189079.png\";","export default __webpack_public_path__ + \"static/media/information--go-straight-or-turn-left--g1.fe58d18a.png\";","export default __webpack_public_path__ + \"static/media/information--go-straight-or-turn-right--g1.01ba2725.png\";","export default __webpack_public_path__ + \"static/media/information--hazardous-goods-vehicles-lane--g1.5d266d26.png\";","export default __webpack_public_path__ + \"static/media/information--height-limit--g1.55576056.png\";","export default __webpack_public_path__ + \"static/media/information--height-limit--g2.28706fba.png\";","export default __webpack_public_path__ + \"static/media/information--highway-directions--g1.6ab6f919.png\";","export default __webpack_public_path__ + \"static/media/information--highway-exit--g1.8693888b.png\";","export default __webpack_public_path__ + \"static/media/information--highway-interchange--g1.247302e7.png\";","export default __webpack_public_path__ + \"static/media/information--highway-interstate-route--g1.692a691b.png\";","export default __webpack_public_path__ + \"static/media/information--highway-interstate-route--g2.accf6f1f.png\";","export default __webpack_public_path__ + \"static/media/information--highway-preferential-lane--g1.46a6e511.png\";","export default __webpack_public_path__ + \"static/media/information--highway-preferential-lane--g2.00aa828a.png\";","export default __webpack_public_path__ + \"static/media/information--highway-reference-location--g1.fd97a9dc.png\";","export default __webpack_public_path__ + \"static/media/information--highway-reference-location--g2.8a376ffd.png\";","export default __webpack_public_path__ + \"static/media/information--hiking--g1.e7ebd601.png\";","export default __webpack_public_path__ + \"static/media/information--hospital--g1.df445bc6.png\";","export default __webpack_public_path__ + \"static/media/information--hurricane-evacuation-route--g1.51f3af3c.png\";","export default __webpack_public_path__ + \"static/media/information--interstate-route--g1.970c0135.png\";","export default __webpack_public_path__ + \"static/media/information--lane-control-intersections--g1.7a491f54.png\";","export default __webpack_public_path__ + \"static/media/information--lane-control-left-turn--g1.b9518417.png\";","export default __webpack_public_path__ + \"static/media/information--lane-control-multiple-lanes--g1.ea69ae2c.png\";","export default __webpack_public_path__ + \"static/media/information--lane-control-multiple-lanes--g2.c56d8bde.png\";","export default __webpack_public_path__ + \"static/media/information--lane-control-right-turn--g1.5fa2157c.png\";","export default __webpack_public_path__ + \"static/media/information--limited-access-road--g1.10cc71f3.png\";","export default __webpack_public_path__ + \"static/media/information--litter-container--g1.08c4ff13.png\";","export default __webpack_public_path__ + \"static/media/information--living-street--g1.2147c93f.png\";","export default __webpack_public_path__ + \"static/media/information--living-street--g2.9e441868.png\";","export default __webpack_public_path__ + \"static/media/information--living-street--g3.25c4364f.png\";","export default __webpack_public_path__ + \"static/media/information--lodging--g1.b607f4af.png\";","export default __webpack_public_path__ + \"static/media/information--lodging--g2.22045613.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-10--g1.3b83bdd9.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-20--g1.b0190c7b.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-25--g1.4db75e5c.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-30--g1.23729b05.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-35--g1.6e07ff1c.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-40--g1.3414f977.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-50--g1.76ed27c6.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-60--g1.212570f9.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-70--g1.c8d65d5e.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-75--g1.4939a840.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-80--g1.a7714163.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-90--g1.0b274895.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-100--g1.7102a855.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-110--g1.633ec596.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-120--g1.bce2e4ca.png\";","export default __webpack_public_path__ + \"static/media/information--minimum-speed-130--g1.c5a36eb0.png\";","export default __webpack_public_path__ + \"static/media/information--motorway--g1.a94a8e76.png\";","export default __webpack_public_path__ + \"static/media/information--motorway-exit-ahead--g1.0691dc2f.png\";","export default __webpack_public_path__ + \"static/media/information--motorway-exit-ahead--g2.b8daa7b6.png\";","export default __webpack_public_path__ + \"static/media/information--motorway-exit-ahead--g3.8af9ebcc.png\";","export default __webpack_public_path__ + \"static/media/information--overtaking-allowed-heavy-good-vehicles--g1.39e05fa4.png\";","export default __webpack_public_path__ + \"static/media/information--parallel-parking--g1.c0d4c10a.png\";","export default __webpack_public_path__ + \"static/media/information--park-and-ride--g1.b750a298.png\";","export default __webpack_public_path__ + \"static/media/information--park-and-ride--g2.c953d0be.png\";","export default __webpack_public_path__ + \"static/media/information--parking--g1.df52d553.png\";","export default __webpack_public_path__ + \"static/media/information--parking--g2.87609a48.png\";","export default __webpack_public_path__ + \"static/media/information--parking--g3.7fd2c641.png\";","export default __webpack_public_path__ + \"static/media/information--parking--g4.09eab1e8.png\";","export default __webpack_public_path__ + \"static/media/information--parking--g5.37047c3d.png\";","export default __webpack_public_path__ + \"static/media/information--parking--g6.8b6482a2.png\";","export default __webpack_public_path__ + \"static/media/information--parking-area--g1.a2bc1b0f.png\";","export default __webpack_public_path__ + \"static/media/information--parking-with-restrictions--g1.55284b47.png\";","export default __webpack_public_path__ + \"static/media/information--pass-on-either-side--g1.5bd589b7.png\";","export default __webpack_public_path__ + \"static/media/information--passenger-loading-zone--g1.ab94bd58.png\";","export default __webpack_public_path__ + \"static/media/information--pedestrians-crossing--g1.c953e4e9.png\";","export default __webpack_public_path__ + \"static/media/information--pedestrians-crossing--g2.183ef6cc.png\";","export default __webpack_public_path__ + \"static/media/information--pedestrians-crossing--g3.39fc0c2e.png\";","export default __webpack_public_path__ + \"static/media/information--pedestrians-only--g4.6947b95d.png\";","export default __webpack_public_path__ + \"static/media/information--pedestrians-permitted--g1.5f6c67bf.png\";","export default __webpack_public_path__ + \"static/media/information--perpendicular-parking--g1.5c9b6826.png\";","export default __webpack_public_path__ + \"static/media/information--picnic-site--g1.6194592a.png\";","export default __webpack_public_path__ + \"static/media/information--playground--g1.300b5c9c.png\";","export default __webpack_public_path__ + \"static/media/information--recreational-vehicle-sanitary-station--g1.e0780834.png\";","export default __webpack_public_path__ + \"static/media/information--recycle-collection-center--g1.8a0f22c1.png\";","export default __webpack_public_path__ + \"static/media/information--rest-area--g1.23aa47b9.png\";","export default __webpack_public_path__ + \"static/media/information--road-bump--g1.59ac514a.png\";","export default __webpack_public_path__ + \"static/media/information--road-skating--g1.dbd17d5a.png\";","export default __webpack_public_path__ + \"static/media/information--safety-zone--g1.8bc0bf83.png\";","export default __webpack_public_path__ + \"static/media/information--safety-zone--g2.106d3366.png\";","export default __webpack_public_path__ + \"static/media/information--safety-zone--g3.82f31562.png\";","export default __webpack_public_path__ + \"static/media/information--shared-path-vehicles-and-motorcycles--g1.50a9ff18.png\";","export default __webpack_public_path__ + \"static/media/information--stairs--g1.71f0a107.png\";","export default __webpack_public_path__ + \"static/media/information--stairs--g2.17a18300.png\";","export default __webpack_public_path__ + \"static/media/information--stairs--g3.af1160fa.png\";","export default __webpack_public_path__ + \"static/media/information--stairs--g4.64156853.png\";","export default __webpack_public_path__ + \"static/media/information--stop-line--g1.e9808c91.png\";","export default __webpack_public_path__ + \"static/media/information--stop-permitted--g1.686135de.png\";","export default __webpack_public_path__ + \"static/media/information--street-name-one-line--g1.94494101.png\";","export default __webpack_public_path__ + \"static/media/information--street-name-three-lines--g1.80615ed6.png\";","export default __webpack_public_path__ + \"static/media/information--street-name-two-lines--g1.9fdf4282.png\";","export default __webpack_public_path__ + \"static/media/information--subway--g1.11a232ac.png\";","export default __webpack_public_path__ + \"static/media/information--telephone--g1.f3e76f2a.png\";","export default __webpack_public_path__ + \"static/media/information--telephone--g2.e30d7202.png\";","export default __webpack_public_path__ + \"static/media/information--telephone-device-for-the-deaf--g1.3dd43d70.png\";","export default __webpack_public_path__ + \"static/media/information--toll-station--g1.b1ef927a.png\";","export default __webpack_public_path__ + \"static/media/information--tourism-information--g1.e4c2c0fd.png\";","export default __webpack_public_path__ + \"static/media/information--tourist-attraction--g1.9aad0dc2.png\";","export default __webpack_public_path__ + \"static/media/information--traffic-merges-left--g1.3bc6a9de.png\";","export default __webpack_public_path__ + \"static/media/information--traffic-merges-right--g1.53636e9b.png\";","export default __webpack_public_path__ + \"static/media/information--trail-crossing--g1.65ee67cc.png\";","export default __webpack_public_path__ + \"static/media/information--trail-crossing--g2.9e0a8068.png\";","export default __webpack_public_path__ + \"static/media/information--trail-crossing--g3.9ee9d069.png\";","export default __webpack_public_path__ + \"static/media/information--trailer-camping--g1.742fd848.png\";","export default __webpack_public_path__ + \"static/media/information--train-or-light-rail-station--g1.1137babb.png\";","export default __webpack_public_path__ + \"static/media/information--tram-bus-stop--g1.840fc7f4.png\";","export default __webpack_public_path__ + \"static/media/information--tram-bus-stop--g2.742fb913.png\";","export default __webpack_public_path__ + \"static/media/information--trams-crossing--g1.a0f36a2d.png\";","export default __webpack_public_path__ + \"static/media/information--truck-lane-left--g1.c1c84eec.png\";","export default __webpack_public_path__ + \"static/media/information--truck-parking--g1.344e6e89.png\";","export default __webpack_public_path__ + \"static/media/information--truck-trailer-lane-right--g1.78d4967c.png\";","export default __webpack_public_path__ + \"static/media/information--truck-trailer-lane-straight--g1.5347b556.png\";","export default __webpack_public_path__ + \"static/media/information--trucks-both-ways--g1.e3ecbd84.png\";","export default __webpack_public_path__ + \"static/media/information--trucks-only--g1.979028f2.png\";","export default __webpack_public_path__ + \"static/media/information--tsunami-evacuation_route--g1.7ae34865.png\";","export default __webpack_public_path__ + \"static/media/information--tunnel--g1.03be4883.png\";","export default __webpack_public_path__ + \"static/media/information--tunnel--g2.7b559e17.png\";","export default __webpack_public_path__ + \"static/media/information--tunnel--g3.d2ceeebb.png\";","export default __webpack_public_path__ + \"static/media/information--tunnel-ahead--g1.546aa975.png\";","export default __webpack_public_path__ + \"static/media/information--turn-left--g1.f8929d0b.png\";","export default __webpack_public_path__ + \"static/media/information--turn-left-ahead--g1.1f03050a.png\";","export default __webpack_public_path__ + \"static/media/information--turn-right--g1.eb673195.png\";","export default __webpack_public_path__ + \"static/media/information--turn-right-ahead--g1.35a96c2a.png\";","export default __webpack_public_path__ + \"static/media/information--urban-area--g1.6b606baf.png\";","export default __webpack_public_path__ + \"static/media/information--vehicles-on-rails--g1.4a371ce8.png\";","export default __webpack_public_path__ + \"static/media/information--water-protection-zone--g1.44b0f53a.png\";","export default __webpack_public_path__ + \"static/media/information--weight-and-height-limit--g1.bc56d483.png\";","export default __webpack_public_path__ + \"static/media/information--weight-limit--g1.20f54728.png\";","export default __webpack_public_path__ + \"static/media/information--wireless-internet--g1.75122a71.png\";","export default __webpack_public_path__ + \"static/media/regulatory--advisory-maximum-speed-limit--g1.86b85613.png\";","export default __webpack_public_path__ + \"static/media/regulatory--all-directions-permitted--g1.e567ddaa.png\";","export default __webpack_public_path__ + \"static/media/regulatory--all-way--g1.1a3b2b2a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--atvs-permitted--g1.d5fe6ec3.png\";","export default __webpack_public_path__ + \"static/media/regulatory--axle-limit--g1.8eb43884.png\";","export default __webpack_public_path__ + \"static/media/regulatory--axle-limit--g2.3974d220.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycle-lane-left--g1.4ca4b400.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycle-parking--g1.16ba1f72.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycles-and-buses-only--g1.148faf66.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycles-only--g1.440e2032.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycles-only--g2.1e88f01e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycles-only--g3.bcfb72cc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycles-only--g4.0de1b0cb.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycles-push-button--g1.1364f84e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycles-push-button--g2.e86fdf7f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycles-stop-on-red--g1.1cda5add.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycles-wrong-way--g1.135ae71c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bicycles-yield-or-use-signal--g1.1f65e157.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bike-route--g1.10d044ee.png\";","export default __webpack_public_path__ + \"static/media/regulatory--building-direction--g1.fc70d3c5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--bus-priority-lane--g1.2ae10a51.png\";","export default __webpack_public_path__ + \"static/media/regulatory--buses-and-taxi-only--g1.b3d80414.png\";","export default __webpack_public_path__ + \"static/media/regulatory--buses-only--g1.5305590b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--buses-only--g2.38b5f21e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--circular-intersection--g1.e8f98101.png\";","export default __webpack_public_path__ + \"static/media/regulatory--circular-intersection--g2.364f2ae2.png\";","export default __webpack_public_path__ + \"static/media/regulatory--circular-intersection--g3.08fdea2e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--circular-intersection--g4.daf2c245.png\";","export default __webpack_public_path__ + \"static/media/regulatory--cross-only-on-green--g1.1f626d4e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--cross-only-on-pedestrian-signal--g1.a36a6a28.png\";","export default __webpack_public_path__ + \"static/media/regulatory--crosswalk-stop-on-red--g1.39942771.png\";","export default __webpack_public_path__ + \"static/media/regulatory--cycling-restriction--g1.1b19c2a9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--cyclists-dismount-and-walk--g1.85523214.png\";","export default __webpack_public_path__ + \"static/media/regulatory--detour-left--g1.65da6dd7.png\";","export default __webpack_public_path__ + \"static/media/regulatory--detour-right--g1.ad60dd21.png\";","export default __webpack_public_path__ + \"static/media/regulatory--divided-highway-crossing--g1.f45cc71a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--divided-highway-ends--g1.c6006e84.png\";","export default __webpack_public_path__ + \"static/media/regulatory--divided-highway-starts--g1.846d4a16.png\";","export default __webpack_public_path__ + \"static/media/regulatory--do-not-block-intersection--g1.18bccc47.png\";","export default __webpack_public_path__ + \"static/media/regulatory--do-not-pass--g1.7f484967.png\";","export default __webpack_public_path__ + \"static/media/regulatory--do-not-stop-on-tracks--g1.f252110f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-lanes-all-directions-on-left--g1.39024df2.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-lanes-all-directions-on-right--g1.25fcfc3e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-lanes-bicyclists-and-pedestrians--g1.b3dad17b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-lanes-go-left-or-right--g1.20dace34.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-lanes-go-straight-on-left--g1.644f5631.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-lanes-go-straight-on-right--g1.a4728fe2.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-lanes-turn-left--g1.27ff5c95.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-lanes-turn-left-no-u-turn--g1.e566a2e4.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-lanes-turn-left-or-straight--g1.042176f8.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-lanes-turn-right-or-straight--g1.bb64e50c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-path-bicycles-and-pedestrians--g1.02ec2d5e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-path-bicycles-and-pedestrians--g2.5c75e267.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-path-bicycles-and-pedestrians--g3.4194fc44.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-path-equestrians-and-pedestrians--g1.5c1b32ad.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-path-equestrians-and-pedestrians-bicycles--g1.2c4013b0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-path-pedestrians-and-bicycles--g1.4dad084e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-path-pedestrians-and-bicycles--g2.5ffa4776.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-path-pedestrians-and-equestrians--g1.02f7d7a1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-path-pedestrians-bicycles-and-equestrians--g1.44369e6c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-speed-limits--g1.6752afbb.png\";","export default __webpack_public_path__ + \"static/media/regulatory--dual-speed-limits--g2.4ac2d6f3.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-bicycles-only--g1.afcf1e7b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-bicycles-only--g2.097b77a9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-bus-and-taxi-only--g1.95ed8ca1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-buses-only--g1.0201ae54.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-buses-only--g2.5f50ea96.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-cycling-restriction--g1.7b7df3dd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-dual-path-bicycles-and-pedestrians--g1.26b235af.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-dual-path-pedestrians-and-bicycles--g1.23e796cf.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-equestrians-only--g1.0a1542f3.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-low-beam-headlights--g1.91c69fc1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-10--g1.5ac21e5b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-10--g2.8db154ac.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-20--g1.7024c379.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-20--g2.ff6c8dc5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-25--g1.75e6cd18.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-25--g2.3fc08b6f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-30--g1.eb45f997.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-30--g2.bb4809fd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-35--g1.5f8ce558.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-35--g2.8d261d69.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-40--g1.85c54762.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-40--g2.c378a358.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-50--g1.8a58a37b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-50--g2.32f875a5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-60--g1.2f34a92d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-60--g2.0632d23d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-65--g1.b14098fd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-65--g2.a5254cbb.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-70--g1.9fb8a3e9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-70--g2.a93c14f1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-75--g1.9d1b9782.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-75--g2.a0124c7a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-80--g1.8e331512.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-80--g2.e45f6301.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-90--g1.f7dbc484.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-90--g2.8c5d1def.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-100--g1.10cc7dd9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-100--g2.d22c2e70.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-110--g1.7c47334c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-110--g2.3a94b5b1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-120--g1.47e0a468.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-120--g2.ba84c756.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-130--g1.3edebaf2.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit-130--g2.28b38021.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-maximum-speed-limit--g1.008d8f7c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-mopeds-and-bicycles-only--g1.b669ee49.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-heavy-goods-vehicles--g1.11347c2b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-horn--g1.38488514.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-overtaking--g1.f711db78.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-overtaking--g2.da883c93.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-overtaking--g3.66135c03.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-overtaking--g4.11329ed0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-overtaking--g5.4aa03694.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-overtaking-by-heavy-goods-vehicles--g1.ff79e44a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-overtaking-by-heavy-goods-vehicles--g2.16e2a814.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-overtaking-by-motorcycles--g1.a23aae0c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-parking--g1.c771dc80.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-parking--g2.8c4dba58.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-no-parking-or-stopping--g1.9448279b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-one-way-straight--g1.2ed363d3.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-parking-zone--g1.cfb44d95.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-parking-zone--g2.96af1a66.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-pedestrians-only--g1.3091680c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-pedestrians-only--g2.55157960.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-pedestrians-only--g3.afe96de1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-pedestrians-only--g4.74b84e48.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-priority-road--g1.12c706be.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-prohibition--g1.24827b34.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-school-zone--g1.f865537a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-shared-path-bicycles-and-pedestrians--g1.f9807b65.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-shared-path-pedestrians-and-bicycles--g1.04370a0f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-snow-chains--g1.5a7931f2.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-snow-chains--g2.7382850a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-snowmobiles-only--g1.d682bc63.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-speed-limit-zone--g1.15e8b883.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-speed-limit-zone--g2.300add15.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-speed-limit-zone--g3.a50f1e4d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-tractors-only--g1.bbb8849f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-trams-and-buses-only--g1.25dd9871.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-trams-only--g1.85ec27f9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-trucks-and-buses-only--g1.8a6ab26d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-trucks-only--g1.3dcb28f4.png\";","export default __webpack_public_path__ + \"static/media/regulatory--end-of-trucks-only--g2.4e55b939.png\";","export default __webpack_public_path__ + \"static/media/regulatory--equestrians-only--g1.d64c6020.png\";","export default __webpack_public_path__ + \"static/media/regulatory--except-railroad-crossing--g1.eacd41fa.png\";","export default __webpack_public_path__ + \"static/media/regulatory--fine-for-littering--g1.dfa21d74.png\";","export default __webpack_public_path__ + \"static/media/regulatory--give-way-to-bicycles--g1.c339dedb.png\";","export default __webpack_public_path__ + \"static/media/regulatory--give-way-to-oncoming-traffic--g1.d53ac85f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--give-way-to-oncoming-traffic--g2.51aed85b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-left-bicycles--g1.912457bf.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-right-bicycles--g1.51e745f5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-straight--g1.ed3c15a6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-straight--g3.478e2d96.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-straight-bicycles--g1.d41deae5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-straight-or-turn-left--g1.78963e27.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-straight-or-turn-left--g2.ad96042c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-straight-or-turn-left--g3.5536a26a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-straight-or-turn-right--g1.f11738ef.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-straight-or-turn-right--g2.75a12caf.png\";","export default __webpack_public_path__ + \"static/media/regulatory--go-straight-or-turn-right--g3.dcac6907.png\";","export default __webpack_public_path__ + \"static/media/regulatory--heavy-goods-vehicles-permitted--g1.9cdb128c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--height-limit--g1.98af1a7f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--high-beam-headlights--g1.e09c5b20.png\";","export default __webpack_public_path__ + \"static/media/regulatory--horn--g1.77ed51fc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--in-street-pedestrian-crossing--g1.e30c31dd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-left--g1.679b6bd3.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-left--g2.c7dbfe8e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-left--g3.8d435d1e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-left--g4.0a18f6ba.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-left--g5.83797d4a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-left--g6.7c4481c4.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-left--g7.8a94453c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-right--g1.0a5be37f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-right--g2.26ef1c48.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-right--g3.0bf791e6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-right--g4.cac2f808.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-right--g5.f2e202d8.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-right--g6.3f2cfd3a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-right--g7.102f84fe.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-right--g8.2f374fc8.png\";","export default __webpack_public_path__ + \"static/media/regulatory--keep-right--g9.19cca104.png\";","export default __webpack_public_path__ + \"static/media/regulatory--lane-control--g1.ebf113b6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--left-turn-yield-on-green--g1.103fabdc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--length-limit--g1.e26aac53.png\";","export default __webpack_public_path__ + \"static/media/regulatory--length-limit--g2.8ef7d18d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--light-rail-divided-highway--g1.db3927c2.png\";","export default __webpack_public_path__ + \"static/media/regulatory--light-rail-do-not-pass--g1.a6efedce.png\";","export default __webpack_public_path__ + \"static/media/regulatory--light-rail-only--g1.254cad9a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--look--g1.25116d7f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--low-beam-headlights--g1.f0dfd718.png\";","export default __webpack_public_path__ + \"static/media/regulatory--low-beam-headlights--g2.d3ac6fa0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--low-beam-headlights--g3.27cdd23a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--low-speed-vehicle-permitted--g1.30c92b2d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-5--g1.12cfb1dc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-5--g3.206e7744.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-10--g1.f5f022da.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-10--g3.483cdc98.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-15--g1.c0560e73.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-15--g3.c766b7e0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-20--g1.3fb8b849.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-20--g3.f2750244.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-25--g1.00b372a9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-25--g2.3651694f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-30--g1.957a1971.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-30--g3.f035f7be.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-35--g1.176ca1fe.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-35--g2.bb66847f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-40--g1.44aeea27.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-40--g3.96779eaf.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-45--g1.908b0551.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-45--g3.aafdb64d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-50--g1.265cb52e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-50--g3.f7bdf367.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-55--g2.112a3663.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-60--g1.ea23c09b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-60--g3.a3ea0058.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-65--g1.3903f621.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-65--g2.bb77e2c1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-70--g1.1896271e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-70--g3.b28c86fe.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-75--g2.1b34ed25.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-80--g1.a5644650.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-80--g3.026ebd10.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-85--g2.8c86c640.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-90--g1.bd9729a9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-90--g3.0b6fd891.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-100--g1.eeb7acc1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-100--g3.cdf80f0f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-110--g1.09c32e32.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-110--g3.bad7b480.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-120--g1.343b1010.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-120--g3.546873db.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-130--g1.7ffeb59e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-130--g3.bf38e05c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-5--g2.ebce1f01.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-5--g3.3af8efb4.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-10--g1.8a5c0115.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-10--g2.ad5f7d90.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-10--g3.a82bcf90.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-15--g2.aca06df6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-15--g3.53994d0a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-20--g1.af9e4293.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-20--g2.9e88edec.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-20--g3.11d7d1c0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-25--g1.cc37b6a2.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-25--g2.9a69ae6f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-25--g3.f1b81b62.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-30--g1.bba5d38c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-30--g2.24d963f4.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-30--g3.62f401a5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-35--g1.45228792.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-35--g2.95331a23.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-35--g3.ad302825.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-40--g1.580d8dba.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-40--g2.ef8144ed.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-40--g3.40ecba48.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-45--g2.f41b3db9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-45--g3.62b6fde1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-50--g1.4657ea06.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-50--g2.b09b7508.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-50--g3.0aa73207.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-55--g2.7d194fac.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-55--g3.ed0a2e22.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-60--g1.58e5908a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-60--g2.aed4f160.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-60--g3.ea9c8fdb.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-65--g2.54e6c1f0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-65--g3.4792115d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-70--g1.aa082679.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-70--g2.84465687.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-70--g3.ff4bfb81.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-75--g1.96dc879a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-75--g2.62c37706.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-75--g3.77267ab5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-80--g1.49dbc461.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-80--g2.7377246c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-80--g3.b35b5a61.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-85--g2.6c4b570d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-85--g3.d67b71de.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-90--g1.be1d5ec8.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-100--g1.208820d6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-110--g1.2a1a5bb0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-120--g1.f5162198.png\";","export default __webpack_public_path__ + \"static/media/regulatory--maximum-speed-limit-led-130--g1.ab836ce5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--minimum-safe-distance--g1.e2f1a969.png\";","export default __webpack_public_path__ + \"static/media/regulatory--minimum-safe-distance--g2.f81b7cf1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--mopeds-and-bicycles-only--g1.6a32c318.png\";","export default __webpack_public_path__ + \"static/media/regulatory--motorcycles-and-bicycles-only--g1.5be11f05.png\";","export default __webpack_public_path__ + \"static/media/regulatory--motorcycles-only--g1.3599617f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--motorcycles-only--g2.1e5763c9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-5--g1.2d471622.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-10--g1.e49f6633.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-15--g1.74d7f0eb.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-20--g1.e923f062.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-25--g1.1eee3953.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-30--g1.de686fba.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-35--g1.3a039535.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-40--g1.ed13d478.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-45--g1.13e9c312.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-50--g1.f36e3f30.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-55--g1.eda1a245.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-60--g1.d401082f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-65--g1.b036b665.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-70--g1.5dbee8eb.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-75--g1.02809bff.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-80--g1.60f65bd6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--night-speed-limit-85--g1.bfca22ba.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-abnormal-vehicles--g1.9a1ba76a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-atvs--g1.351b1213.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-bicycles--g1.fbfdb4d6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-bicycles--g2.10ba3fba.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-bicycles--g3.aef27aee.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-bicycles-carts-or-hand-carts--g1.0980edb5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-bicycles-mopeds-or-motorcycles--g1.6deac529.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-bicycles-mopeds-or-motorcycles--g2.47379579.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-bicycles-or-hand-carts--g1.b307cb32.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-bicycles-or-motorcycles--g1.115b2e72.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-bicycles-tractors-or-carts--g1.c9248372.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-buses--g1.67236178.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-buses--g2.579a2458.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-buses--g3.6b590d19.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-caravan-trailers--g1.f42a260f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-caravans--g1.941fa0cc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-caravans-or-caravan-trailers--g1.ee733d20.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-cargo-loading--g1.1b0eeb2b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-carts--g1.928af1c6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-carts--g2.b6f19e6f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-carts--g3.74460970.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-carts-or-tractors--g1.9d3bbf40.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-construction-vehicles--g1.28ffa65d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-entry--g1.c657fa8f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-equestrians--g1.81627a3a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-go-straight-or-turn-left--g1.ba71ea9f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-go-straight-or-turn-right--g1.bf8a6fa3.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-good-trailers--g2.bad20402.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-goods-vehicle-trailers--g1.764e3efc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-hand-carts--g1.7e3449ab.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-hand-carts--g2.19c3e969.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-hand-carts-or-bicycles--g1.0279d73d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-hawkers--g1.1e14d7e1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-heavy-goods-vehicles--g1.8a560f33.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-heavy-goods-vehicles--g2.9fff7565.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-heavy-goods-vehicles--g3.91da44ae.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-heavy-goods-vehicles--g4.216491f1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-heavy-goods-vehicles--g5.959f1c6d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-heavy-goods-vehicles-motorcycles-or-bicycles--g1.37078248.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-heavy-goods-vehicles-motorcycles-or-bicycles--g2.2e3a18ee.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-heavy-goods-vehicles-or-buses--g1.05787c73.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-heavy-goods-vehicles-or-tractors--g1.a3d74207.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-heavy-goods-vehicles-or-trailers--g1.0e4821b9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-horizontal-turn--g1.ab7eda4b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-horn--g1.2695a31e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-horn--g2.5841efbd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-lane-change-to-left--g1.c3b5e313.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-lane-change-to-right--g1.65211254.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-learner-drivers--g1.3ebd3c5a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-left-or-u-turn--g1.b309afb9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-left-turn--g1.b330753f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-left-turn--g2.3a06039e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-left-turn--g3.34218609.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-left-turn--g4.f2416352.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-left-turn--g5.c53c6486.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-low-speed-vehicles--g1.4b08326a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-mopeds-or-bicycles--g1.72ce756c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicle-trailers--g1.db1f891e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles--g1.2bd757f6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles--g3.b3120ac6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles--g4.5e81bd00.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles--g5.d88792f9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles--g6.44fb91e7.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles--g7.2c8ec64f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles-except-motorcycles--g1.5af55863.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles-except-motorcycles--g2.7d175930.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles-except-motorcycles--g3.a4448c41.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles-or-bicycles--g1.317ebe25.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles-or-buses--g1.8e58f8bf.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motor-vehicles-or-carts--g1.39349e1f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motorcycles--g1.f9dc81e3.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-motorcycles--g2.65414d33.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-overtaking--g1.d876c125.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-overtaking--g2.2b83574c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-overtaking--g4.22b05cd4.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-overtaking--g5.6b8e21fc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-overtaking--g6.dc77c0cd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-overtaking--g7.30b8ee6b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-overtaking-atvs--g1.6dd58589.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-overtaking-by-heavy-goods-vehicles--g1.f97c589c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking--g1.4ca5a89f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking--g2.a3c63e81.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking--g3.ced5e03c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking--g4.4c779b9c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking--g5.48af12a8.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking--g6.6db7b740.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking--g7.da720b8d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking--g8.8a640aed.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking--g9.b969233b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking-bicycles-or-motorcycles--g1.932ed75c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking-bus-stop--g1.d790c322.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking-or-no-stopping--g1.32cc0e7c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking-or-no-stopping--g2.cbe40936.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking-or-no-stopping--g3.f817e11a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking-or-no-stopping--g4.8a3143db.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-parking-or-no-stopping--g5.c5a471d8.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-passenger-loading--g1.9272ff3b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-pedestrians--g1.654534fc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-pedestrians--g2.c1cbab61.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-pedestrians--g3.db9ef7ad.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-pedestrians--g4.7f4a3d27.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-pedestrians--g5.02c0c663.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-pedestrians--g6.4d3714e7.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-pedestrians-bicycles-animals-or-hand-carts--g1.e4fc9208.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-pedestrians-or-bicycles--g1.4a8441a7.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-pedestrians-or-bicycles--g2.0366930c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-pedestrians-or-bicycles--g3.426675bf.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-rickshaws--g1.fc782f2c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-rickshaws--g2.61c13947.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-rickshaws--g3.ac5bec9d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-right-turn--g1.6e467745.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-right-turn--g2.97edc91d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-right-turn--g3.63dc1b44.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-right-turn-on-red--g1.f6ea7f5c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-skiing--g1.655b7641.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-snowmobiles--g1.cfa8001f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-snowmobiles--g2.2e3d9be1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-snowmobiles-or-atvs--g1.1bf91012.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-stopping--g1.4fd0a542.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-stopping--g2.22eabfcc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-stopping--g3.60647b5f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-stopping--g5.9c7f0f1e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-stopping--g6.a5c23b68.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-stopping--g7.349246a0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-stopping-on-pavement--g1.4ad4966b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-straight-through--g1.6fe4bf6d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-straight-through--g2.9e890383.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-studded-snow-chains--g1.788d151e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-through-trucks--g1.bad0c928.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-tour-buses--g1.fa7322d5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-tractors--g1.a2437580.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-tractors-mopeds-or-bicycles--g1.102563a8.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-tractors-or-carts--g1.3829cc65.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-trailers--g1.309aba75.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-tricycles--g1.fa034d03.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-tricycles-or-hand-carts--g1.eafc4e68.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-turn-on-red--g1.d126fe1a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-turn-on-red--g2.b82499bd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-turn-on-red--g3.9040df5f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-turns--g1.32fc69c3.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-turns--g2.0414b2fe.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-two-stage-right-turn-for-mopeds--g1.6b816a0e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-u-turn--g1.18b5ecf1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-u-turn--g2.7911ab30.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-u-turn--g3.d7392ba4.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-vehicles-carrying-dangerous-goods--g1.794908c9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-vehicles-carrying-dangerous-goods--g2.b8c733f6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-vehicles-carrying-dangerous-goods--g3.eed2c264.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-vehicles-carrying-dangerous-goods--g4.5511e61f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-vehicles-carrying-dangerous-water-pollutants--g1.988e8514.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-vehicles-carrying-dangerous-water-pollutants--g2.93eebcbf.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-vehicles-carrying-explosives--g1.0565ddd2.png\";","export default __webpack_public_path__ + \"static/media/regulatory--no-vehicles-carrying-explosives-or-dangerous-water-pollutants--g1.7a3c82c6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--one-way-left--g1.b090ec6f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--one-way-left--g2.50ea813a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--one-way-left--g3.0113405a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--one-way-right--g1.791c0a85.png\";","export default __webpack_public_path__ + \"static/media/regulatory--one-way-right--g2.8585b78c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--one-way-right--g3.9cdca710.png\";","export default __webpack_public_path__ + \"static/media/regulatory--one-way-straight--g1.47ea933f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--one-way-straight--g3.01f68d4b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--parking-fee-station--g1.70710155.png\";","export default __webpack_public_path__ + \"static/media/regulatory--parking-restrictions--g1.2b92b8a8.png\";","export default __webpack_public_path__ + \"static/media/regulatory--parking-restrictions--g2.231db037.png\";","export default __webpack_public_path__ + \"static/media/regulatory--parking-restrictions--g3.4e6ef760.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pass-on-either-side--g1.ff7956d3.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pass-on-either-side--g2.9dec1fee.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pass-on-either-side--g3.d1ffedcd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pass-with-care--g1.75f3b466.png\";","export default __webpack_public_path__ + \"static/media/regulatory--passing-lane-ahead--g1.f3e273fd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pedestrians-bicycles-permitted--g1.3d105bf0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pedestrians-keep-left--g1.674c2d80.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pedestrians-only--g1.1fc71024.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pedestrians-only--g2.4bfe3f3f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pedestrians-only--g3.76d6977a.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pedestrians-priority-zone--g1.a5b6727e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pedestrians-push-button--g1.4e8319dc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--pedestrians-push-button--g2.fcfd976d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--priority-over-oncoming-vehicles--g1.db6faf10.png\";","export default __webpack_public_path__ + \"static/media/regulatory--priority-over-oncoming-vehicles--g2.7de31d11.png\";","export default __webpack_public_path__ + \"static/media/regulatory--priority-road--g1.a9c3ba8b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--priority-road--g2.922fe884.png\";","export default __webpack_public_path__ + \"static/media/regulatory--radar-enforced--g1.d785a081.png\";","export default __webpack_public_path__ + \"static/media/regulatory--reserved-parking--g1.3ad03559.png\";","export default __webpack_public_path__ + \"static/media/regulatory--reversible-lanes--g1.9fb06219.png\";","export default __webpack_public_path__ + \"static/media/regulatory--reversible-lanes--g2.969c0d44.png\";","export default __webpack_public_path__ + \"static/media/regulatory--road-closed--g1.9e903e6d.png\";","export default __webpack_public_path__ + \"static/media/regulatory--road-closed--g2.dda11416.png\";","export default __webpack_public_path__ + \"static/media/regulatory--road-closed-to-vehicles--g1.dca51279.png\";","export default __webpack_public_path__ + \"static/media/regulatory--road-closed-to-vehicles--g3.b3970891.png\";","export default __webpack_public_path__ + \"static/media/regulatory--roundabout--g1.8433aefc.png\";","export default __webpack_public_path__ + \"static/media/regulatory--roundabout--g2.50727331.png\";","export default __webpack_public_path__ + \"static/media/regulatory--roundabout--g3.2d0882dd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--shared-path-bicycles-and-pedestrians--g1.72464b6b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--shared-path-pedestrians-and-bicycles--g1.bf20db10.png\";","export default __webpack_public_path__ + \"static/media/regulatory--sidewalk-closed--g1.e4dd968e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--slanted-parking--g1.2c69ce1c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--snow-chains--g1.a656672c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--snow-chains--g2.84dc0228.png\";","export default __webpack_public_path__ + \"static/media/regulatory--snow-chains--g3.a156dd58.png\";","export default __webpack_public_path__ + \"static/media/regulatory--snowmobiles-only--g1.1dde78d9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--snowmobiles-permitted--g1.27015a7f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--speed-limit-zone--g1.981aeede.png\";","export default __webpack_public_path__ + \"static/media/regulatory--speeding-fines-increased--g1.31b9fc1b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--state-route--g1.721042d7.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stay-in-lane--g1.56d686b0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop--g1.7d97baab.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop--g2.483334d1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop--g3.4d1e72e1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop--g4.ee770dce.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop--g5.2a819d8f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop--g6.de739f11.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop--g7.9490caa4.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop--g8.722f4b38.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop--g9.06825e07.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop--g10.505ed820.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop-here-on-red-or-flashing-light--g1.2e18bf3f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop-here-on-red-or-flashing-light--g2.1407c908.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop-signals--g1.9b8c0d01.png\";","export default __webpack_public_path__ + \"static/media/regulatory--stop-signals--g2.7cea9e75.png\";","export default __webpack_public_path__ + \"static/media/regulatory--tanks-only--g1.46e2c223.png\";","export default __webpack_public_path__ + \"static/media/regulatory--taxi-only--g1.77097a52.png\";","export default __webpack_public_path__ + \"static/media/regulatory--text--g1.14bfe577.png\";","export default __webpack_public_path__ + \"static/media/regulatory--text--g2.12b5de42.png\";","export default __webpack_public_path__ + \"static/media/regulatory--toll-pass-only--g1.971da401.png\";","export default __webpack_public_path__ + \"static/media/regulatory--tractors-only--g1.ea2f343e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--traffic-signal-photo-enforced--g1.f6a31551.png\";","export default __webpack_public_path__ + \"static/media/regulatory--trams-and-buses-only--g1.9d082cd5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--trams-only--g1.5a5684c6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--triple-lanes--g1.5f11c2cf.png\";","export default __webpack_public_path__ + \"static/media/regulatory--triple-lanes-go-straight-center-lane--g1.e11d6237.png\";","export default __webpack_public_path__ + \"static/media/regulatory--triple-lanes-turn-left-center-lane--g1.e4a2f108.png\";","export default __webpack_public_path__ + \"static/media/regulatory--triple-lanes-turn-right-center-lane--g1.d4df745b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-route--g1.630b0b24.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-5--g1.29df11b6.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-10--g1.e7d67cd1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-15--g1.f67bb65f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-20--g1.d81afa41.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-25--g1.96be34eb.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-30--g1.9df85672.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-35--g1.9a883455.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-40--g1.9800dbf8.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-45--g1.69fdca3f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-50--g1.70f43e41.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-55--g1.1656c6f2.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-60--g1.d6cf88aa.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-65--g1.b46b4bbd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-70--g1.b20a87d2.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-75--g1.d658980b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-80--g1.c243996e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--truck-speed-limit-85--g1.6125756c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--trucks-and-buses-only--g1.a55e77aa.png\";","export default __webpack_public_path__ + \"static/media/regulatory--trucks-on-right--g1.5ad11e57.png\";","export default __webpack_public_path__ + \"static/media/regulatory--trucks-only--g1.2caa4b16.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-left--g1.12ef941b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-left--g2.01af6a90.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-left--g3.7a1a0373.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-left-ahead--g1.35b3766c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-left-ahead--g2.fd4eb44f.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-left-or-right--g1.89ad6968.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-left-or-right--g2.6eca1c7b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-left-or-right--g3.0bee4d0c.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-left-or-u-turn--g1.8f5028c9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-right--g1.8b3bf63e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-right--g2.bfc39dfd.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-right--g3.1d726512.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-right-ahead--g1.76f304e8.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turn-right-ahead--g2.7774ded9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--turning-vehicles-yield-to-pedestrians--g1.99692a47.png\";","export default __webpack_public_path__ + \"static/media/regulatory--two-stage-right-turn-for-mopeds--g1.8d55bffb.png\";","export default __webpack_public_path__ + \"static/media/regulatory--two-way--g1.b64bf0c5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--u-turn--g1.c3a04a95.png\";","export default __webpack_public_path__ + \"static/media/regulatory--u-turn--g2.4e33c845.png\";","export default __webpack_public_path__ + \"static/media/regulatory--u-turn--g3.9d07cd2e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--use-crosswalk--g1.4941d3c3.png\";","export default __webpack_public_path__ + \"static/media/regulatory--vehicles-carrying-dangerous-goods-only--g1.3a569021.png\";","export default __webpack_public_path__ + \"static/media/regulatory--vehicles-carrying-dangerous-goods-permitted--g1.41785cc4.png\";","export default __webpack_public_path__ + \"static/media/regulatory--vehicles-carrying-explosives-only--g1.1ecbe4c0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--vehicles-carrying-hazardous-goods-permitted--g1.e45be8b9.png\";","export default __webpack_public_path__ + \"static/media/regulatory--vehicles-only--g1.de6ad106.png\";","export default __webpack_public_path__ + \"static/media/regulatory--wear-seat-belt--g1.f47a44cf.png\";","export default __webpack_public_path__ + \"static/media/regulatory--wear-seat-belt--g2.f386bc69.png\";","export default __webpack_public_path__ + \"static/media/regulatory--wear-seat-belt--g3.4cdb1888.png\";","export default __webpack_public_path__ + \"static/media/regulatory--weight-limit--g1.817038a1.png\";","export default __webpack_public_path__ + \"static/media/regulatory--weight-limit--g2.e1500a68.png\";","export default __webpack_public_path__ + \"static/media/regulatory--weight-limit--g3.19d1b90e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--weight-limit--g4.0d1fcb42.png\";","export default __webpack_public_path__ + \"static/media/regulatory--weight-limit--g5.71d3ad85.png\";","export default __webpack_public_path__ + \"static/media/regulatory--weight-limit--g6.c9ce9e57.png\";","export default __webpack_public_path__ + \"static/media/regulatory--weight-limit--g7.11b45bd0.png\";","export default __webpack_public_path__ + \"static/media/regulatory--weight-limit-per-axle--g1.d05b072b.png\";","export default __webpack_public_path__ + \"static/media/regulatory--weight-limit-per-tandem-axle--g1.e1fb3ce7.png\";","export default __webpack_public_path__ + \"static/media/regulatory--weight-limit-with-trucks--g1.c0fc507e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--width-limit--g1.e94fb0a5.png\";","export default __webpack_public_path__ + \"static/media/regulatory--wrong-way--g1.4c1aec61.png\";","export default __webpack_public_path__ + \"static/media/regulatory--yield--g1.00724e2e.png\";","export default __webpack_public_path__ + \"static/media/regulatory--yield-or-stop-for-pedestrians--g1.bf8555de.png\";","export default __webpack_public_path__ + \"static/media/regulatory--your-speed--g1.354c97cb.png\";","export default __webpack_public_path__ + \"static/media/warning--accident-area--g1.a6065411.png\";","export default __webpack_public_path__ + \"static/media/warning--accident-area--g2.20400c8d.png\";","export default __webpack_public_path__ + \"static/media/warning--accident-area--g3.8f08b131.png\";","export default __webpack_public_path__ + \"static/media/warning--accident-area--g4.e39b418a.png\";","export default __webpack_public_path__ + \"static/media/warning--accident-area--g5.78034bb3.png\";","export default __webpack_public_path__ + \"static/media/warning--accident-area--g6.271d6630.png\";","export default __webpack_public_path__ + \"static/media/warning--accident-area--g7.7f6c0b7f.png\";","export default __webpack_public_path__ + \"static/media/warning--accident-area--g8.a06f3807.png\";","export default __webpack_public_path__ + \"static/media/warning--added-lane-from-entering-roadway--g1.bbd50002.png\";","export default __webpack_public_path__ + \"static/media/warning--added-lane-from-entering-roadway--g2.6c2e69cb.png\";","export default __webpack_public_path__ + \"static/media/warning--added-lane-left--g1.a8c7833e.png\";","export default __webpack_public_path__ + \"static/media/warning--added-lane-right--g1.d5032345.png\";","export default __webpack_public_path__ + \"static/media/warning--animal-drawn-vehicles--g1.38f47feb.png\";","export default __webpack_public_path__ + \"static/media/warning--arch-bridge--g1.5cc463ff.png\";","export default __webpack_public_path__ + \"static/media/warning--atv-and-snowmobiles--g1.6e6cfa37.png\";","export default __webpack_public_path__ + \"static/media/warning--atv-crossing--g1.627f932d.png\";","export default __webpack_public_path__ + \"static/media/warning--atv-crossing--g2.4048703b.png\";","export default __webpack_public_path__ + \"static/media/warning--axle-restriction--g1.37ac1b3c.png\";","export default __webpack_public_path__ + \"static/media/warning--bear-crossing--g1.5e1d24c8.png\";","export default __webpack_public_path__ + \"static/media/warning--bear-crossing--g2.cddc2568.png\";","export default __webpack_public_path__ + \"static/media/warning--bicycles-and-others--g1.64fe6c90.png\";","export default __webpack_public_path__ + \"static/media/warning--bicycles-caution-on-rail-tracks--g1.24127b37.png\";","export default __webpack_public_path__ + \"static/media/warning--bicycles-crossing--g1.742a95b5.png\";","export default __webpack_public_path__ + \"static/media/warning--bicycles-crossing--g2.aef0fc8a.png\";","export default __webpack_public_path__ + \"static/media/warning--bicycles-crossing--g3.6f7cbdff.png\";","export default __webpack_public_path__ + \"static/media/warning--bicycles-crossing--g4.bc459af3.png\";","export default __webpack_public_path__ + \"static/media/warning--bollard--g1.92dd9345.png\";","export default __webpack_public_path__ + \"static/media/warning--bridge--g1.5beed47f.png\";","export default __webpack_public_path__ + \"static/media/warning--bridge--g2.be0cc144.png\";","export default __webpack_public_path__ + \"static/media/warning--bus-stop-ahead--g1.d2042d63.png\";","export default __webpack_public_path__ + \"static/media/warning--bus-stop-ahead--g2.7fa78816.png\";","export default __webpack_public_path__ + \"static/media/warning--bus-stop-ahead--g3.0a2abcae.png\";","export default __webpack_public_path__ + \"static/media/warning--camel-crossing--g1.0fc63ebb.png\";","export default __webpack_public_path__ + \"static/media/warning--camel-crossing--g2.fe1abca3.png\";","export default __webpack_public_path__ + \"static/media/warning--camera--g1.97e5cab0.png\";","export default __webpack_public_path__ + \"static/media/warning--camera--g2.bf3bf685.png\";","export default __webpack_public_path__ + \"static/media/warning--carts--g1.2088f796.png\";","export default __webpack_public_path__ + \"static/media/warning--carts--g2.0188153d.png\";","export default __webpack_public_path__ + \"static/media/warning--checkpoint--g1.ee5447d8.png\";","export default __webpack_public_path__ + \"static/media/warning--children--g1.be722cbc.png\";","export default __webpack_public_path__ + \"static/media/warning--children--g2.802736a3.png\";","export default __webpack_public_path__ + \"static/media/warning--children--g3.7d28f751.png\";","export default __webpack_public_path__ + \"static/media/warning--children--g4.1e204dc8.png\";","export default __webpack_public_path__ + \"static/media/warning--children--g6.52ca9670.png\";","export default __webpack_public_path__ + \"static/media/warning--cliff--g1.a5923913.png\";","export default __webpack_public_path__ + \"static/media/warning--cliff--g2.b11bf115.png\";","export default __webpack_public_path__ + \"static/media/warning--closed-lane-in-triple-lanes--g1.5e11cdf9.png\";","export default __webpack_public_path__ + \"static/media/warning--closed-lane-in-triple-lanes--g2.478e5f17.png\";","export default __webpack_public_path__ + \"static/media/warning--construction-ahead--g1.c57e1e5e.png\";","export default __webpack_public_path__ + \"static/media/warning--crossroads--g1.14d61769.png\";","export default __webpack_public_path__ + \"static/media/warning--crossroads--g2.d93cf962.png\";","export default __webpack_public_path__ + \"static/media/warning--crossroads--g3.522ca193.png\";","export default __webpack_public_path__ + \"static/media/warning--crossroads--g4.1280a5a4.png\";","export default __webpack_public_path__ + \"static/media/warning--crossroads--g5.0af73743.png\";","export default __webpack_public_path__ + \"static/media/warning--crossroads--g6.50b62775.png\";","export default __webpack_public_path__ + \"static/media/warning--crossroads-with-priority-to-the-right--g1.7597a71a.png\";","export default __webpack_public_path__ + \"static/media/warning--curve-left--g1.fc958342.png\";","export default __webpack_public_path__ + \"static/media/warning--curve-left--g2.1b916c62.png\";","export default __webpack_public_path__ + \"static/media/warning--curve-left--g3.a2b64322.png\";","export default __webpack_public_path__ + \"static/media/warning--curve-left-with-junction--g1.0bd6a7a9.png\";","export default __webpack_public_path__ + \"static/media/warning--curve-out-intersection-left--g1.e1afa97c.png\";","export default __webpack_public_path__ + \"static/media/warning--curve-out-intersection-right--g1.b5a17894.png\";","export default __webpack_public_path__ + \"static/media/warning--curve-right--g1.e03eb082.png\";","export default __webpack_public_path__ + \"static/media/warning--curve-right--g2.b7f5e2a8.png\";","export default __webpack_public_path__ + \"static/media/warning--curve-right--g3.9f2c56e1.png\";","export default __webpack_public_path__ + \"static/media/warning--curve-right-with-junction--g1.a3d85594.png\";","export default __webpack_public_path__ + \"static/media/warning--dangerous-crosswinds-left--g1.4728c562.png\";","export default __webpack_public_path__ + \"static/media/warning--dangerous-crosswinds-left--g2.c8bf2f3a.png\";","export default __webpack_public_path__ + \"static/media/warning--dangerous-crosswinds-left--g4.69cf0606.png\";","export default __webpack_public_path__ + \"static/media/warning--dangerous-crosswinds-right--g1.ab4c438d.png\";","export default __webpack_public_path__ + \"static/media/warning--dangerous-crosswinds-right--g2.040eb808.png\";","export default __webpack_public_path__ + \"static/media/warning--dangerous-crosswinds-right--g3.74a9268a.png\";","export default __webpack_public_path__ + \"static/media/warning--dangerous-crosswinds-right--g4.140e8377.png\";","export default __webpack_public_path__ + \"static/media/warning--dead-end--g1.822dc654.png\";","export default __webpack_public_path__ + \"static/media/warning--dead-end--g2.c8837f3e.png\";","export default __webpack_public_path__ + \"static/media/warning--dead-end--g3.b4178c04.png\";","export default __webpack_public_path__ + \"static/media/warning--dead-end-go-left--g1.e34e1902.png\";","export default __webpack_public_path__ + \"static/media/warning--dead-end-go-right--g1.b71f819e.png\";","export default __webpack_public_path__ + \"static/media/warning--descent-or-climbing-lanes-in-triple-lanes--g1.f42d15ba.png\";","export default __webpack_public_path__ + \"static/media/warning--detour-ahead--g1.62e99e19.png\";","export default __webpack_public_path__ + \"static/media/warning--detour-or-construction-ahead--g1.0dad4882.png\";","export default __webpack_public_path__ + \"static/media/warning--dip--g1.066fd9ff.png\";","export default __webpack_public_path__ + \"static/media/warning--dip--g2.149643b1.png\";","export default __webpack_public_path__ + \"static/media/warning--disabled-persons-crossing--g1.501e3c12.png\";","export default __webpack_public_path__ + \"static/media/warning--disabled-persons-crossing--g2.1097238b.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway--g1.4e234f74.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway--g2.c8b40ab4.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway--g3.3669f7f2.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway--g4.88ebcd8f.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway--g5.f5e120c6.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway--g6.dea45011.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway--g7.0a7f27b4.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway--g8.c97f56db.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway--g9.27d2fae7.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway-ends--g1.236372f1.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway-ends--g2.d64d1f97.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway-ends--g3.6ae2c6c2.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway-ends--g4.3c3eab12.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway-on-left--g1.b83e1490.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway-on-left--g2.a464ead0.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway-on-right--g1.38f23cbf.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway-on-right--g2.67b00901.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway-to-left--g1.789096ef.png\";","export default __webpack_public_path__ + \"static/media/warning--divided-highway-to-right--g1.b48c54ce.png\";","export default __webpack_public_path__ + \"static/media/warning--domestic-animals--g1.b5ee6b47.png\";","export default __webpack_public_path__ + \"static/media/warning--domestic-animals--g2.1c50b229.png\";","export default __webpack_public_path__ + \"static/media/warning--domestic-animals--g3.ff1fdd4d.png\";","export default __webpack_public_path__ + \"static/media/warning--domestic-animals--g4.b8240120.png\";","export default __webpack_public_path__ + \"static/media/warning--domestic-animals--g5.59bfd681.png\";","export default __webpack_public_path__ + \"static/media/warning--domestic-animals--g6.d8382f60.png\";","export default __webpack_public_path__ + \"static/media/warning--domestic-animals--g7.e8a76726.png\";","export default __webpack_public_path__ + \"static/media/warning--domestic-animals--g8.3a90a31b.png\";","export default __webpack_public_path__ + \"static/media/warning--double-curve-first-left--g1.6eb7ea5d.png\";","export default __webpack_public_path__ + \"static/media/warning--double-curve-first-left--g2.f33a8be0.png\";","export default __webpack_public_path__ + \"static/media/warning--double-curve-first-right--g1.a3423d11.png\";","export default __webpack_public_path__ + \"static/media/warning--double-curve-first-right--g2.0c1c9b73.png\";","export default __webpack_public_path__ + \"static/media/warning--double-descent--g1.4470eef4.png\";","export default __webpack_public_path__ + \"static/media/warning--double-reverse-curve-left--g1.404c39b1.png\";","export default __webpack_public_path__ + \"static/media/warning--double-reverse-curve-left--g2.9913da77.png\";","export default __webpack_public_path__ + \"static/media/warning--double-reverse-curve-right--g1.ce6cc21b.png\";","export default __webpack_public_path__ + \"static/media/warning--double-reverse-curve-right--g2.220ae800.png\";","export default __webpack_public_path__ + \"static/media/warning--double-side-roads-left--g1.25faddb2.png\";","export default __webpack_public_path__ + \"static/media/warning--double-side-roads-left--g3.90e3a23d.png\";","export default __webpack_public_path__ + \"static/media/warning--double-side-roads-right--g1.d5e87954.png\";","export default __webpack_public_path__ + \"static/media/warning--double-side-roads-right--g3.f828d2c5.png\";","export default __webpack_public_path__ + \"static/media/warning--double-turn-first-left--g1.be7aa3be.png\";","export default __webpack_public_path__ + \"static/media/warning--double-turn-first-right--g1.98471837.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-all-directions-on-left--g1.c3148502.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-all-directions-on-right--g1.e1524300.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-go-straight-or-turn-left--g1.72412f1e.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-go-straight-or-turn-right--g1.2b80e972.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-left-turn--g1.a0868b18.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-left-turn-or-go-straight--g1.35661ca4.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-right-turn--g1.6eb106ff.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-right-turn-or-go-straight--g1.d9341e1a.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-turn-left--g1.bf236e41.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-turn-left-or-right--g1.920cce95.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-turn-left-or-right--g2.f9d846fa.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-turn-left-or-right--g3.bf437251.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-turn-left-or-right--g4.15fdd3ad.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-lanes-turn-right--g1.24e2dfad.png\";","export default __webpack_public_path__ + \"static/media/warning--dual-path-cyclists-and-pedestrians--g1.c641917c.png\";","export default __webpack_public_path__ + \"static/media/warning--electricity--g1.e43834b5.png\";","export default __webpack_public_path__ + \"static/media/warning--electricity--g2.f309d9d6.png\";","export default __webpack_public_path__ + \"static/media/warning--elephant-crossing--g1.1d0a5289.png\";","export default __webpack_public_path__ + \"static/media/warning--emergency-vehicles--g1.11cfb237.png\";","export default __webpack_public_path__ + \"static/media/warning--emu-crossing--g1.52d9cf04.png\";","export default __webpack_public_path__ + \"static/media/warning--emu-crossing--g2.fee7dc08.png\";","export default __webpack_public_path__ + \"static/media/warning--entering-roadway-merge--g1.332dc1ff.png\";","export default __webpack_public_path__ + \"static/media/warning--entering-roadway-merge--g2.86b6aca3.png\";","export default __webpack_public_path__ + \"static/media/warning--equestrians-crossing--g1.19b9300d.png\";","export default __webpack_public_path__ + \"static/media/warning--equestrians-crossing--g2.d8fe8c9d.png\";","export default __webpack_public_path__ + \"static/media/warning--expressway--g1.5cdf1e31.png\";","export default __webpack_public_path__ + \"static/media/warning--falling-rocks-or-debris-left--g1.ba33de2a.png\";","export default __webpack_public_path__ + \"static/media/warning--falling-rocks-or-debris-left--g2.3de84b6f.png\";","export default __webpack_public_path__ + \"static/media/warning--falling-rocks-or-debris-left--g3.092e6480.png\";","export default __webpack_public_path__ + \"static/media/warning--falling-rocks-or-debris-left--g4.21007872.png\";","export default __webpack_public_path__ + \"static/media/warning--falling-rocks-or-debris-right--g1.e3a61a97.png\";","export default __webpack_public_path__ + \"static/media/warning--falling-rocks-or-debris-right--g2.d134cc6d.png\";","export default __webpack_public_path__ + \"static/media/warning--falling-rocks-or-debris-right--g3.159ce905.png\";","export default __webpack_public_path__ + \"static/media/warning--falling-rocks-or-debris-right--g4.84a6e30d.png\";","export default __webpack_public_path__ + \"static/media/warning--ferry--g1.0879199d.png\";","export default __webpack_public_path__ + \"static/media/warning--flaggers-in-road--g1.46677e39.png\";","export default __webpack_public_path__ + \"static/media/warning--flaggers-in-road--g2.4b786672.png\";","export default __webpack_public_path__ + \"static/media/warning--foggy-road--g1.b2ea0888.png\";","export default __webpack_public_path__ + \"static/media/warning--foggy-road--g2.4e58a69c.png\";","export default __webpack_public_path__ + \"static/media/warning--ford--g1.a4e7c139.png\";","export default __webpack_public_path__ + \"static/media/warning--forest--g1.e558de15.png\";","export default __webpack_public_path__ + \"static/media/warning--fresh-oil--g1.2aa89129.png\";","export default __webpack_public_path__ + \"static/media/warning--frog-crossing--g1.cc552a98.png\";","export default __webpack_public_path__ + \"static/media/warning--gate--g1.ef474cd4.png\";","export default __webpack_public_path__ + \"static/media/warning--gate--g2.7393d775.png\";","export default __webpack_public_path__ + \"static/media/warning--gate-left--g1.060d16fa.png\";","export default __webpack_public_path__ + \"static/media/warning--gate-right--g1.a3c3be2f.png\";","export default __webpack_public_path__ + \"static/media/warning--go-left--g1.f419ee5e.png\";","export default __webpack_public_path__ + \"static/media/warning--go-right--g1.39eb9a50.png\";","export default __webpack_public_path__ + \"static/media/warning--golf-carts-crossing--g1.6d3a5336.png\";","export default __webpack_public_path__ + \"static/media/warning--gravel-road-surface--g1.53217d4e.png\";","export default __webpack_public_path__ + \"static/media/warning--hairpin-curve-left--g1.edb73aef.png\";","export default __webpack_public_path__ + \"static/media/warning--hairpin-curve-left--g2.afaea372.png\";","export default __webpack_public_path__ + \"static/media/warning--hairpin-curve-left--g3.6f0b4e07.png\";","export default __webpack_public_path__ + \"static/media/warning--hairpin-curve-right--g1.7379cbcd.png\";","export default __webpack_public_path__ + \"static/media/warning--hairpin-curve-right--g3.193a361e.png\";","export default __webpack_public_path__ + \"static/media/warning--height-restriction--g2.338e63be.png\";","export default __webpack_public_path__ + \"static/media/warning--height-restriction--g3.71fa9500.png\";","export default __webpack_public_path__ + \"static/media/warning--height-restriction--g4.32ae1bcd.png\";","export default __webpack_public_path__ + \"static/media/warning--height-restriction--g5.079c301b.png\";","export default __webpack_public_path__ + \"static/media/warning--horizontal-alignment-left--g1.5f4578ae.png\";","export default __webpack_public_path__ + \"static/media/warning--horizontal-alignment-left--g3.fa116178.png\";","export default __webpack_public_path__ + \"static/media/warning--horizontal-alignment-right--g1.e52240f3.png\";","export default __webpack_public_path__ + \"static/media/warning--horizontal-alignment-right--g3.4a7db298.png\";","export default __webpack_public_path__ + \"static/media/warning--horse-crossing--g1.d3216891.png\";","export default __webpack_public_path__ + \"static/media/warning--icy-road--g1.c497dd9c.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-acute-left--g1.701ef67e.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-acute-left--g2.aed0430a.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-acute-right--g1.97f3099c.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-acute-right--g2.868e5834.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-perpendicular-left--g1.9d8f0946.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-perpendicular-left--g2.4142c0b3.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-perpendicular-left--g3.ac6cedd7.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-perpendicular-left--g4.64bbd277.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-perpendicular-right--g1.c806e5b6.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-perpendicular-right--g2.42f22c1e.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-perpendicular-right--g3.928aa62d.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-a-side-road-perpendicular-right--g4.956d6e55.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-merge-from-left--g1.bf9a8c4e.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-merge-from-right--g1.9d27fd5a.png\";","export default __webpack_public_path__ + \"static/media/warning--junction-with-side-roads--g1.266339ad.png\";","export default __webpack_public_path__ + \"static/media/warning--kangaloo-crossing--g1.f937c5b4.png\";","export default __webpack_public_path__ + \"static/media/warning--keep-distance--g1.18012af6.png\";","export default __webpack_public_path__ + \"static/media/warning--keep-left--g1.b5f34133.png\";","export default __webpack_public_path__ + \"static/media/warning--keep-right--g1.9eb6188b.png\";","export default __webpack_public_path__ + \"static/media/warning--kiwi-crossing--g1.1d1fffc2.png\";","export default __webpack_public_path__ + \"static/media/warning--kiwi-crossing--g2.31b4982f.png\";","export default __webpack_public_path__ + \"static/media/warning--koala-crossing--g1.c49ced4a.png\";","export default __webpack_public_path__ + \"static/media/warning--koala-crossing--g2.89b90763.png\";","export default __webpack_public_path__ + \"static/media/warning--koala-crossing--g3.31ba34fb.png\";","export default __webpack_public_path__ + \"static/media/warning--koala-crossing--g4.f4a67cc8.png\";","export default __webpack_public_path__ + \"static/media/warning--lane-closed-in-dual-lanes-left--g1.7624de03.png\";","export default __webpack_public_path__ + \"static/media/warning--lane-closed-in-dual-lanes-left--g2.3509b0fc.png\";","export default __webpack_public_path__ + \"static/media/warning--lane-closed-in-dual-lanes-right--g1.2df26f89.png\";","export default __webpack_public_path__ + \"static/media/warning--lane-closed-in-dual-lanes-right--g2.7bbfbdf6.png\";","export default __webpack_public_path__ + \"static/media/warning--length-restriction--g1.883f897f.png\";","export default __webpack_public_path__ + \"static/media/warning--length-restriction--g2.82aa1857.png\";","export default __webpack_public_path__ + \"static/media/warning--light-rail-transit-vehicles--g1.18a56f76.png\";","export default __webpack_public_path__ + \"static/media/warning--limited-lighting-under-trees--g1.12866256.png\";","export default __webpack_public_path__ + \"static/media/warning--logging-vehicles--g1.78031a98.png\";","export default __webpack_public_path__ + \"static/media/warning--loop-270-degree--g1.2e953561.png\";","export default __webpack_public_path__ + \"static/media/warning--loop-pretzel--g1.ec181bb6.png\";","export default __webpack_public_path__ + \"static/media/warning--loose-road-surface--g1.9cae8688.png\";","export default __webpack_public_path__ + \"static/media/warning--loose-road-surface--g2.1f8298ec.png\";","export default __webpack_public_path__ + \"static/media/warning--loose-road-surface--g3.aa246e46.png\";","export default __webpack_public_path__ + \"static/media/warning--loose-road-surface--g4.5d211f2c.png\";","export default __webpack_public_path__ + \"static/media/warning--low-flying-aircraft--g1.28089b2a.png\";","export default __webpack_public_path__ + \"static/media/warning--low-flying-aircraft--g2.5cf5bdc9.png\";","export default __webpack_public_path__ + \"static/media/warning--low-flying-aircraft--g3.dd69f808.png\";","export default __webpack_public_path__ + \"static/media/warning--low-flying-aircraft--g4.fc3dd88f.png\";","export default __webpack_public_path__ + \"static/media/warning--low-flying-aircraft--g5.1f6f2725.png\";","export default __webpack_public_path__ + \"static/media/warning--low-flying-aircraft--g6.7aba7310.png\";","export default __webpack_public_path__ + \"static/media/warning--low-flying-aircraft--g7.0ae82c4d.png\";","export default __webpack_public_path__ + \"static/media/warning--low-flying-aircraft--g8.15694dc5.png\";","export default __webpack_public_path__ + \"static/media/warning--low-ground-clearance--g1.ffa6da01.png\";","export default __webpack_public_path__ + \"static/media/warning--low-ground-clearance--g2.3e54bb51.png\";","export default __webpack_public_path__ + \"static/media/warning--low-ground-clearance--g3.ce30c364.png\";","export default __webpack_public_path__ + \"static/media/warning--monkey-crossing--g1.f226862a.png\";","export default __webpack_public_path__ + \"static/media/warning--motorcycles-crossing--g1.afd3f593.png\";","export default __webpack_public_path__ + \"static/media/warning--narrow-bridge--g1.e80d13e1.png\";","export default __webpack_public_path__ + \"static/media/warning--narrow-bridge--g2.eb66e49c.png\";","export default __webpack_public_path__ + \"static/media/warning--narrow-bridge--g3.2ba8e460.png\";","export default __webpack_public_path__ + \"static/media/warning--no-passing-zone--g1.4c1a1d05.png\";","export default __webpack_public_path__ + \"static/media/warning--no-passing-zone--g2.d2c6f7ce.png\";","export default __webpack_public_path__ + \"static/media/warning--occupied-lanes--g1.a3fb4526.png\";","export default __webpack_public_path__ + \"static/media/warning--offset-roads--g1.b417a496.png\";","export default __webpack_public_path__ + \"static/media/warning--offset-roads--g2.935e20ba.png\";","export default __webpack_public_path__ + \"static/media/warning--offset-roads--g3.faa03178.png\";","export default __webpack_public_path__ + \"static/media/warning--offset-roads--g4.353ab25e.png\";","export default __webpack_public_path__ + \"static/media/warning--opening-or-swing-bridge--g1.1fb27ae9.png\";","export default __webpack_public_path__ + \"static/media/warning--opening-or-swing-bridge--g2.1a1a0f21.png\";","export default __webpack_public_path__ + \"static/media/warning--other-danger--g1.3188ed01.png\";","export default __webpack_public_path__ + \"static/media/warning--other-danger--g2.7e8cac18.png\";","export default __webpack_public_path__ + \"static/media/warning--other-danger--g3.1ee8a971.png\";","export default __webpack_public_path__ + \"static/media/warning--panda-crossing--g1.e2bdb7b5.png\";","export default __webpack_public_path__ + \"static/media/warning--pass-left-or-right--g1.7d7f601f.png\";","export default __webpack_public_path__ + \"static/media/warning--pass-left-or-right--g2.b55dff44.png\";","export default __webpack_public_path__ + \"static/media/warning--pass-left-or-right--g3.f01eab62.png\";","export default __webpack_public_path__ + \"static/media/warning--pavement-ahead--g1.7a325168.png\";","export default __webpack_public_path__ + \"static/media/warning--pavement-ends--g1.150a9eb6.png\";","export default __webpack_public_path__ + \"static/media/warning--pavement-ends--g2.4aa4c794.png\";","export default __webpack_public_path__ + \"static/media/warning--pavement-ends--g3.95da7c5c.png\";","export default __webpack_public_path__ + \"static/media/warning--pavement-ends--g4.2a4100fb.png\";","export default __webpack_public_path__ + \"static/media/warning--pavement-ends--g5.3aa58447.png\";","export default __webpack_public_path__ + \"static/media/warning--pedestrians-crossing--g1.3b874634.png\";","export default __webpack_public_path__ + \"static/media/warning--pedestrians-crossing--g4.5c84a724.png\";","export default __webpack_public_path__ + \"static/media/warning--pedestrians-crossing--g5.b0b6f57d.png\";","export default __webpack_public_path__ + \"static/media/warning--pedestrians-crossing--g6.116c592a.png\";","export default __webpack_public_path__ + \"static/media/warning--pedestrians-crossing--g7.9ef22005.png\";","export default __webpack_public_path__ + \"static/media/warning--pedestrians-crossing--g8.04317383.png\";","export default __webpack_public_path__ + \"static/media/warning--pedestrians-crossing--g9.8def020a.png\";","export default __webpack_public_path__ + \"static/media/warning--pedestrians-crossing--g10.f15c17b4.png\";","export default __webpack_public_path__ + \"static/media/warning--pedestrians-crossing--g11.d4d8802a.png\";","export default __webpack_public_path__ + \"static/media/warning--pedestrians-crossing--g12.d6a9a05d.png\";","export default __webpack_public_path__ + \"static/media/warning--playground--g1.d27fa8a1.png\";","export default __webpack_public_path__ + \"static/media/warning--playground--g3.030a0910.png\";","export default __webpack_public_path__ + \"static/media/warning--polar-bear-crossing--g1.83f48f13.png\";","export default __webpack_public_path__ + \"static/media/warning--quay-or-river-bank--g1.06042e51.png\";","export default __webpack_public_path__ + \"static/media/warning--quay-or-river-bank--g2.f72ff26e.png\";","export default __webpack_public_path__ + \"static/media/warning--quay-or-river-bank--g3.115341dd.png\";","export default __webpack_public_path__ + \"static/media/warning--quay-or-river-bank--g4.ddcd4717.png\";","export default __webpack_public_path__ + \"static/media/warning--rabbit-crossing--g1.078f403a.png\";","export default __webpack_public_path__ + \"static/media/warning--raccoon-crossing--g1.1668b542.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing--g1.e669ea31.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing--g2.02fde72b.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing--g3.8750f7fe.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing--g4.7ca3c9a3.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-with-barriers--g1.10b1d9f7.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-with-barriers--g2.1e0850d8.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-with-barriers--g3.6e3df1bf.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-with-barriers--g4.ee65577f.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-with-barriers--g5.489d5280.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-with-barriers--g6.692ef82e.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-with-barriers--g7.a1fba766.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-without-barriers--g1.56e6bc9c.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-without-barriers--g2.4806262d.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-without-barriers--g3.0a195b24.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-without-barriers--g4.2ef1f5ca.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-without-barriers--g5.26a5cfe8.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-crossing-without-barriers--g6.cc1a10b5.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-intersection--g1.e91d23c6.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-intersection--g2.4e7c41ae.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-intersection--g3.025e4551.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-intersection--g4.7f8bcdfd.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-intersection--g5.ff21b221.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-intersection--g6.3e6b2b59.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-intersection--g7.0191ef0a.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-intersection--g8.0b49d7a0.png\";","export default __webpack_public_path__ + \"static/media/warning--railroad-intersection--g9.e91cfdd5.png\";","export default __webpack_public_path__ + \"static/media/warning--ramp-closed--g1.b7091862.png\";","export default __webpack_public_path__ + \"static/media/warning--reduced-maximum-speed-limit--g1.e37bae32.png\";","export default __webpack_public_path__ + \"static/media/warning--reserved-lane--g1.8d676894.png\";","export default __webpack_public_path__ + \"static/media/warning--restricted-zone--g1.4c3bdaf7.png\";","export default __webpack_public_path__ + \"static/media/warning--reversible-lanes--g1.1aa1f3d9.png\";","export default __webpack_public_path__ + \"static/media/warning--reversible-lanes--g2.8e1063e0.png\";","export default __webpack_public_path__ + \"static/media/warning--rickshaws-crossing--g1.57f86968.png\";","export default __webpack_public_path__ + \"static/media/warning--road-blocks--g1.b88715e8.png\";","export default __webpack_public_path__ + \"static/media/warning--road-bump--g1.33610537.png\";","export default __webpack_public_path__ + \"static/media/warning--road-bump--g2.82cf40b3.png\";","export default __webpack_public_path__ + \"static/media/warning--road-bump--g3.a44b2601.png\";","export default __webpack_public_path__ + \"static/media/warning--road-bump-with-speed-limit--g1.7be1fee6.png\";","export default __webpack_public_path__ + \"static/media/warning--road-closed--g3.c3c7cc6d.png\";","export default __webpack_public_path__ + \"static/media/warning--road-narrows--g1.77f6e5cb.png\";","import basicPins from './basic-pins';\r\nimport trafficSigns from './traffic-signs';\r\nimport UKRoadSigns from './uk-road-signs';\r\nimport packageObjects from './package_objects';\r\nimport packageSigns from './package_signs';\r\nimport allterra from './allterra';\r\n\r\nconst tagTextures = {\r\n ...basicPins,\r\n ...trafficSigns,\r\n ...UKRoadSigns,\r\n ...packageObjects,\r\n ...packageSigns,\r\n ...allterra\r\n};\r\n\r\nexport const defaultTagTexture = Object.keys(tagTextures)[0];\r\n\r\nexport const getTagTexturePath = (key) => {\r\n return tagTextures[key];\r\n};\r\n\r\nexport default tagTextures;\r\n","import icon0 from './complementary--accident-area--g1.png';\r\nimport icon1 from './complementary--accident-area--g2.png';\r\nimport icon2 from './complementary--accident-area--g3.png';\r\nimport icon3 from './complementary--accident-area--g4.png';\r\nimport icon4 from './complementary--advisory-exit-or-ramp-speed--g1.png';\r\nimport icon5 from './complementary--bicycles--g1.png';\r\nimport icon6 from './complementary--bicycles-and-pedestrians-detour--g1.png';\r\nimport icon7 from './complementary--bicycles-or-pedestrians-detour--g1.png';\r\nimport icon8 from './complementary--bicycles-turn-right--g1.png';\r\nimport icon9 from './complementary--bike-route--g1.png';\r\nimport icon10 from './complementary--bike-route--g3.png';\r\nimport icon11 from './complementary--both-directions--g1.png';\r\nimport icon12 from './complementary--both-directions--g2.png';\r\nimport icon13 from './complementary--buses--g1.png';\r\nimport icon14 from './complementary--buses-and-trucks--g1.png';\r\nimport icon15 from './complementary--camera--g1.png';\r\nimport icon16 from './complementary--camera--g2.png';\r\nimport icon17 from './complementary--camera--g3.png';\r\nimport icon18 from './complementary--camera--g4.png';\r\nimport icon19 from './complementary--camera--g5.png';\r\nimport icon20 from './complementary--caravan-trailers--g2.png';\r\nimport icon21 from './complementary--caravan-trailers--g3.png';\r\nimport icon22 from './complementary--caravans--g2.png';\r\nimport icon23 from './complementary--carts--g1.png';\r\nimport icon24 from './complementary--chevron-left--g1.png';\r\nimport icon25 from './complementary--chevron-left--g2.png';\r\nimport icon26 from './complementary--chevron-left--g3.png';\r\nimport icon27 from './complementary--chevron-left--g4.png';\r\nimport icon28 from './complementary--chevron-left--g5.png';\r\nimport icon29 from './complementary--chevron-right--g1.png';\r\nimport icon30 from './complementary--chevron-right--g2.png';\r\nimport icon31 from './complementary--chevron-right--g3.png';\r\nimport icon32 from './complementary--chevron-right--g4.png';\r\nimport icon33 from './complementary--chevron-right--g5.png';\r\nimport icon34 from './complementary--dangerous-or-pollutant-good--g1.png';\r\nimport icon35 from './complementary--dead-end--g1.png';\r\nimport icon36 from './complementary--detour--g1.png';\r\nimport icon37 from './complementary--disabled-persons--g1.png';\r\nimport icon38 from './complementary--distance--g1.png';\r\nimport icon39 from './complementary--distance--g2.png';\r\nimport icon40 from './complementary--distance--g3.png';\r\nimport icon41 from './complementary--end-of-road-works--g1.png';\r\nimport icon42 from './complementary--except-bicycles--g1.png';\r\nimport icon43 from './complementary--except-bicycles--g2.png';\r\nimport icon44 from './complementary--except-buses--g1.png';\r\nimport icon45 from './complementary--except-carts--g1.png';\r\nimport icon46 from './complementary--except-motorcycles--g1.png';\r\nimport icon47 from './complementary--except-motorcycles--g2.png';\r\nimport icon48 from './complementary--except-polluting-level-green--g1.png';\r\nimport icon49 from './complementary--except-polluting-level-green-yellow--g1.png';\r\nimport icon50 from './complementary--except-polluting-level-green-yellow-red--g1.png';\r\nimport icon51 from './complementary--except-tractors--g1.png';\r\nimport icon52 from './complementary--except-tractors--g2.png';\r\nimport icon53 from './complementary--except-trailers--g1.png';\r\nimport icon54 from './complementary--except-trailers--g2.png';\r\nimport icon55 from './complementary--except-trains--g1.png';\r\nimport icon56 from './complementary--except-trams--g1.png';\r\nimport icon57 from './complementary--except-trucks--g1.png';\r\nimport icon58 from './complementary--except-vehicles--g1.png';\r\nimport icon59 from './complementary--except-vehicles--g2.png';\r\nimport icon60 from './complementary--go-left--g1.png';\r\nimport icon61 from './complementary--go-right--g1.png';\r\nimport icon62 from './complementary--go-straight-or-turn-left--g1.png';\r\nimport icon63 from './complementary--go-straight-or-turn-right--g1.png';\r\nimport icon64 from './complementary--height-limit--g1.png';\r\nimport icon65 from './complementary--height-limit--g2.png';\r\nimport icon66 from './complementary--including-bicycles-and-motorcycles--g1.png';\r\nimport icon67 from './complementary--including-buses-vehicles--g1.png';\r\nimport icon68 from './complementary--keep-left--g1.png';\r\nimport icon69 from './complementary--keep-right--g1.png';\r\nimport icon70 from './complementary--lane-control--g1.png';\r\nimport icon71 from './complementary--lane-control--g2.png';\r\nimport icon72 from './complementary--lane-control--g3.png';\r\nimport icon73 from './complementary--maximum-speed-limit-10--g1.png';\r\nimport icon74 from './complementary--maximum-speed-limit-15--g1.png';\r\nimport icon75 from './complementary--maximum-speed-limit-20--g1.png';\r\nimport icon76 from './complementary--maximum-speed-limit-25--g1.png';\r\nimport icon77 from './complementary--maximum-speed-limit-30--g1.png';\r\nimport icon78 from './complementary--maximum-speed-limit-35--g1.png';\r\nimport icon79 from './complementary--maximum-speed-limit-40--g1.png';\r\nimport icon80 from './complementary--maximum-speed-limit-45--g1.png';\r\nimport icon81 from './complementary--maximum-speed-limit-50--g1.png';\r\nimport icon82 from './complementary--maximum-speed-limit-55--g1.png';\r\nimport icon83 from './complementary--maximum-speed-limit-60--g1.png';\r\nimport icon84 from './complementary--maximum-speed-limit-65--g1.png';\r\nimport icon85 from './complementary--maximum-speed-limit-70--g1.png';\r\nimport icon86 from './complementary--maximum-speed-limit-75--g1.png';\r\nimport icon87 from './complementary--maximum-speed-limit-80--g1.png';\r\nimport icon88 from './complementary--maximum-speed-limit-85--g1.png';\r\nimport icon89 from './complementary--maximum-speed-limit-90--g1.png';\r\nimport icon90 from './complementary--maximum-speed-limit-95--g1.png';\r\nimport icon91 from './complementary--motorcycles--g1.png';\r\nimport icon92 from './complementary--motorcycles--g2.png';\r\nimport icon93 from './complementary--motorcycles--g3.png';\r\nimport icon94 from './complementary--motorcycles--g4.png';\r\nimport icon95 from './complementary--obstacle-delineator--g1.png';\r\nimport icon96 from './complementary--obstacle-delineator--g2.png';\r\nimport icon97 from './complementary--obstacle-delineator--g3.png';\r\nimport icon98 from './complementary--one-direction-left--g1.png';\r\nimport icon99 from './complementary--one-direction-right--g1.png';\r\nimport icon100 from './complementary--pass-left--g1.png';\r\nimport icon101 from './complementary--pass-right--g1.png';\r\nimport icon102 from './complementary--pedestrians-and-bicycles--g1.png';\r\nimport icon103 from './complementary--pedestrians-left--g1.png';\r\nimport icon104 from './complementary--pedestrians-right--g1.png';\r\nimport icon105 from './complementary--photo-enforced--g1.png';\r\nimport icon106 from './complementary--playground--g1.png';\r\nimport icon107 from './complementary--priority-route-at-intersection--g1.png';\r\nimport icon108 from './complementary--priority-route-at-intersection--g2.png';\r\nimport icon109 from './complementary--priority-route-at-intersection--g3.png';\r\nimport icon110 from './complementary--priority-route-at-intersection--g4.png';\r\nimport icon111 from './complementary--priority-route-at-intersection--g5.png';\r\nimport icon112 from './complementary--priority-route-at-intersection--g6.png';\r\nimport icon113 from './complementary--railroad--g1.png';\r\nimport icon114 from './complementary--railroad--g2.png';\r\nimport icon115 from './complementary--railroad--g3.png';\r\nimport icon116 from './complementary--restriction-in-both-directions--g1.png';\r\nimport icon117 from './complementary--roundabout-go-left--g1.png';\r\nimport icon118 from './complementary--roundabout-go-right--g1.png';\r\nimport icon119 from './complementary--roundabout-go-straight--g1.png';\r\nimport icon120 from './complementary--slippery-for-caravan-trailers--g1.png';\r\nimport icon121 from './complementary--snow--g2.png';\r\nimport icon122 from './complementary--snow--g4.png';\r\nimport icon123 from './complementary--snow--g5.png';\r\nimport icon124 from './complementary--snowmobiles--g1.png';\r\nimport icon125 from './complementary--soft-shoulder--g1.png';\r\nimport icon126 from './complementary--soft-shoulder--g2.png';\r\nimport icon127 from './complementary--steep-ascent--g1.png';\r\nimport icon128 from './complementary--steep-descent--g1.png';\r\nimport icon129 from './complementary--time-restrictions--g1.png';\r\nimport icon130 from './complementary--time-restrictions--g3.png';\r\nimport icon131 from './complementary--tow-away-zone--g1.png';\r\nimport icon132 from './complementary--tow-away-zone--g3.png';\r\nimport icon133 from './complementary--tractors--g1.png';\r\nimport icon134 from './complementary--traffic-queues--g1.png';\r\nimport icon135 from './complementary--trailers--g1.png';\r\nimport icon136 from './complementary--trailers--g2.png';\r\nimport icon137 from './complementary--trailers--g3.png';\r\nimport icon138 from './complementary--trailers--g4.png';\r\nimport icon139 from './complementary--trains--g1.png';\r\nimport icon140 from './complementary--trams--g1.png';\r\nimport icon141 from './complementary--trees--g1.png';\r\nimport icon142 from './complementary--trucks--g1.png';\r\nimport icon143 from './complementary--trucks--g2.png';\r\nimport icon144 from './complementary--trucks--g3.png';\r\nimport icon145 from './complementary--trucks-and-trailers--g1.png';\r\nimport icon146 from './complementary--trucks-buses-trailers--g1.png';\r\nimport icon147 from './complementary--trucks-go-left--g1.png';\r\nimport icon148 from './complementary--trucks-go-left-ahead--g1.png';\r\nimport icon149 from './complementary--trucks-go-right--g1.png';\r\nimport icon150 from './complementary--trucks-go-right-ahead--g1.png';\r\nimport icon151 from './complementary--trucks-go-straight--g1.png';\r\nimport icon152 from './complementary--trucks-turn-left--g1.png';\r\nimport icon153 from './complementary--trucks-turn-right--g1.png';\r\nimport icon154 from './complementary--turn-left--g1.png';\r\nimport icon155 from './complementary--turn-left--g2.png';\r\nimport icon156 from './complementary--turn-right--g1.png';\r\nimport icon157 from './complementary--turn-right--g2.png';\r\nimport icon158 from './complementary--two-way-traffic--g1.png';\r\nimport icon159 from './complementary--two-way-traffic--g2.png';\r\nimport icon160 from './complementary--two-way-traffic--g3.png';\r\nimport icon161 from './complementary--two-way-traffic--g4.png';\r\nimport icon162 from './complementary--two-way-traffic--g5.png';\r\nimport icon163 from './complementary--vehicles--g1.png';\r\nimport icon164 from './complementary--vehicles--g2.png';\r\nimport icon165 from './complementary--vehicles-or-buses--g1.png';\r\nimport icon166 from './complementary--weekends-or-holidays--g1.png';\r\nimport icon167 from './complementary--weight-limit--g1.png';\r\nimport icon168 from './complementary--when-foggy--g1.png';\r\nimport icon169 from './complementary--when-rainy--g1.png';\r\nimport icon170 from './complementary--when-rainy--g2.png';\r\nimport icon171 from './complementary--when-rainy--g3.png';\r\nimport icon172 from './complementary--when-snowy--g1.png';\r\nimport icon173 from './complementary--when-snowy--g2.png';\r\nimport icon174 from './complementary--when-snowy-or-rainy--g1.png';\r\nimport icon175 from './complementary--when-snowy-or-rainy--g2.png';\r\nimport icon176 from './complementary--when-wet--g1.png';\r\nimport icon177 from './complementary--width-limit--g1.png';\r\nimport icon178 from './complementary--working-days--g1.png';\r\nimport icon179 from './information--airport--g1.png';\r\nimport icon180 from './information--airport--g2.png';\r\nimport icon181 from './information--bicycle-lane--g1.png';\r\nimport icon182 from './information--bicycles-both-ways--g1.png';\r\nimport icon183 from './information--bicycles-crossing--g1.png';\r\nimport icon184 from './information--bicycles-crossing--g2.png';\r\nimport icon185 from './information--bicycles-crossing--g3.png';\r\nimport icon186 from './information--bike-route--g1.png';\r\nimport icon187 from './information--bike-route--g2.png';\r\nimport icon188 from './information--built-up-area--g1.png';\r\nimport icon189 from './information--built-up-area--g2.png';\r\nimport icon190 from './information--bus-lane-straight--g1.png';\r\nimport icon191 from './information--bus-stop--g1.png';\r\nimport icon192 from './information--bus-stop--g2.png';\r\nimport icon193 from './information--camera--g1.png';\r\nimport icon194 from './information--camera--g2.png';\r\nimport icon195 from './information--camera--g3.png';\r\nimport icon196 from './information--camp--g1.png';\r\nimport icon197 from './information--camp--g2.png';\r\nimport icon198 from './information--car-pool-lane--g1.png';\r\nimport icon199 from './information--caravan-parking--g1.png';\r\nimport icon200 from './information--caravan-trailer-parking--g1.png';\r\nimport icon201 from './information--cargo-loading-zone--g1.png';\r\nimport icon202 from './information--central-lane--g1.png';\r\nimport icon203 from './information--charging-station--g1.png';\r\nimport icon204 from './information--children--g1.png';\r\nimport icon205 from './information--children--g2.png';\r\nimport icon206 from './information--children-crossing--g5.png';\r\nimport icon207 from './information--cycling-two-abreast-permitted--g1.png';\r\nimport icon208 from './information--dead-end--g1.png';\r\nimport icon209 from './information--dead-end--g2.png';\r\nimport icon210 from './information--dead-end--g3.png';\r\nimport icon211 from './information--dead-end--g4.png';\r\nimport icon212 from './information--dead-end-except-bicycles--g1.png';\r\nimport icon213 from './information--dead-end-except-bicycles-and-pedestrians--g1.png';\r\nimport icon214 from './information--dead-end-except-bicycles-and-pedestrians--g2.png';\r\nimport icon215 from './information--dead-end-left--g1.png';\r\nimport icon216 from './information--dead-end-left--g2.png';\r\nimport icon217 from './information--dead-end-right--g1.png';\r\nimport icon218 from './information--dead-end-right--g2.png';\r\nimport icon219 from './information--dead-end-right--g3.png';\r\nimport icon220 from './information--directions--g1.png';\r\nimport icon221 from './information--disabled-persons--g1.png';\r\nimport icon222 from './information--disabled-persons--g2.png';\r\nimport icon223 from './information--disabled-persons--g3.png';\r\nimport icon224 from './information--emergency-facility--g1.png';\r\nimport icon225 from './information--end-of-advisory-maximum-speed-limit-20--g1.png';\r\nimport icon226 from './information--end-of-advisory-maximum-speed-limit-40--g1.png';\r\nimport icon227 from './information--end-of-advisory-maximum-speed-limit-60--g1.png';\r\nimport icon228 from './information--end-of-advisory-maximum-speed-limit-70--g1.png';\r\nimport icon229 from './information--end-of-advisory-maximum-speed-limit-80--g1.png';\r\nimport icon230 from './information--end-of-advisory-maximum-speed-limit-90--g1.png';\r\nimport icon231 from './information--end-of-bicycle-lane--g1.png';\r\nimport icon232 from './information--end-of-built-up-area--g1.png';\r\nimport icon233 from './information--end-of-built-up-area--g2.png';\r\nimport icon234 from './information--end-of-built-up-area--g3.png';\r\nimport icon235 from './information--end-of-built-up-area--g4.png';\r\nimport icon236 from './information--end-of-car-pool-lane--g1.png';\r\nimport icon237 from './information--end-of-limited-access-road--g1.png';\r\nimport icon238 from './information--end-of-living-street--g1.png';\r\nimport icon239 from './information--end-of-living-street--g2.png';\r\nimport icon240 from './information--end-of-minimum-speed-10--g1.png';\r\nimport icon241 from './information--end-of-minimum-speed-20--g1.png';\r\nimport icon242 from './information--end-of-minimum-speed-25--g1.png';\r\nimport icon243 from './information--end-of-minimum-speed-30--g1.png';\r\nimport icon244 from './information--end-of-minimum-speed-35--g1.png';\r\nimport icon245 from './information--end-of-minimum-speed-40--g1.png';\r\nimport icon246 from './information--end-of-minimum-speed-50--g1.png';\r\nimport icon247 from './information--end-of-minimum-speed-60--g1.png';\r\nimport icon248 from './information--end-of-minimum-speed-70--g1.png';\r\nimport icon249 from './information--end-of-minimum-speed-75--g1.png';\r\nimport icon250 from './information--end-of-minimum-speed-80--g1.png';\r\nimport icon251 from './information--end-of-minimum-speed-90--g1.png';\r\nimport icon252 from './information--end-of-minimum-speed-100--g1.png';\r\nimport icon253 from './information--end-of-minimum-speed-110--g1.png';\r\nimport icon254 from './information--end-of-minimum-speed-120--g1.png';\r\nimport icon255 from './information--end-of-minimum-speed-130--g1.png';\r\nimport icon256 from './information--end-of-motorway--g1.png';\r\nimport icon257 from './information--end-of-overtaking-permitted-heavy-good-vehicles--g1.png';\r\nimport icon258 from './information--end-of-road-works--g1.png';\r\nimport icon259 from './information--end-of-tunnel--g1.png';\r\nimport icon260 from './information--end-of-tunnel--g2.png';\r\nimport icon261 from './information--end-of-two-way-traffic--g1.png';\r\nimport icon262 from './information--equestrians-permitted--g1.png';\r\nimport icon263 from './information--exit-ahead--g1.png';\r\nimport icon264 from './information--exit-ahead--g2.png';\r\nimport icon265 from './information--exit-ahead--g3.png';\r\nimport icon266 from './information--flight-port--g1.png';\r\nimport icon267 from './information--food--g1.png';\r\nimport icon268 from './information--food--g2.png';\r\nimport icon269 from './information--gas-station--g1.png';\r\nimport icon270 from './information--gas-station--g2.png';\r\nimport icon271 from './information--gas-station--g3.png';\r\nimport icon272 from './information--general-speed-limit-at-city-border--g1.png';\r\nimport icon273 from './information--go-left--g1.png';\r\nimport icon274 from './information--go-right--g1.png';\r\nimport icon275 from './information--go-straight--g1.png';\r\nimport icon276 from './information--go-straight-or-left--g1.png';\r\nimport icon277 from './information--go-straight-or-right--g1.png';\r\nimport icon278 from './information--go-straight-or-turn-left--g1.png';\r\nimport icon279 from './information--go-straight-or-turn-right--g1.png';\r\nimport icon280 from './information--hazardous-goods-vehicles-lane--g1.png';\r\nimport icon281 from './information--height-limit--g1.png';\r\nimport icon282 from './information--height-limit--g2.png';\r\nimport icon283 from './information--highway-directions--g1.png';\r\nimport icon284 from './information--highway-exit--g1.png';\r\nimport icon285 from './information--highway-interchange--g1.png';\r\nimport icon286 from './information--highway-interstate-route--g1.png';\r\nimport icon287 from './information--highway-interstate-route--g2.png';\r\nimport icon288 from './information--highway-preferential-lane--g1.png';\r\nimport icon289 from './information--highway-preferential-lane--g2.png';\r\nimport icon290 from './information--highway-reference-location--g1.png';\r\nimport icon291 from './information--highway-reference-location--g2.png';\r\nimport icon292 from './information--hiking--g1.png';\r\nimport icon293 from './information--hospital--g1.png';\r\nimport icon294 from './information--hurricane-evacuation-route--g1.png';\r\nimport icon295 from './information--interstate-route--g1.png';\r\nimport icon296 from './information--lane-control-intersections--g1.png';\r\nimport icon297 from './information--lane-control-left-turn--g1.png';\r\nimport icon298 from './information--lane-control-multiple-lanes--g1.png';\r\nimport icon299 from './information--lane-control-multiple-lanes--g2.png';\r\nimport icon300 from './information--lane-control-right-turn--g1.png';\r\nimport icon301 from './information--limited-access-road--g1.png';\r\nimport icon302 from './information--litter-container--g1.png';\r\nimport icon303 from './information--living-street--g1.png';\r\nimport icon304 from './information--living-street--g2.png';\r\nimport icon305 from './information--living-street--g3.png';\r\nimport icon306 from './information--lodging--g1.png';\r\nimport icon307 from './information--lodging--g2.png';\r\nimport icon308 from './information--minimum-speed-10--g1.png';\r\nimport icon309 from './information--minimum-speed-20--g1.png';\r\nimport icon310 from './information--minimum-speed-25--g1.png';\r\nimport icon311 from './information--minimum-speed-30--g1.png';\r\nimport icon312 from './information--minimum-speed-35--g1.png';\r\nimport icon313 from './information--minimum-speed-40--g1.png';\r\nimport icon314 from './information--minimum-speed-50--g1.png';\r\nimport icon315 from './information--minimum-speed-60--g1.png';\r\nimport icon316 from './information--minimum-speed-70--g1.png';\r\nimport icon317 from './information--minimum-speed-75--g1.png';\r\nimport icon318 from './information--minimum-speed-80--g1.png';\r\nimport icon319 from './information--minimum-speed-90--g1.png';\r\nimport icon320 from './information--minimum-speed-100--g1.png';\r\nimport icon321 from './information--minimum-speed-110--g1.png';\r\nimport icon322 from './information--minimum-speed-120--g1.png';\r\nimport icon323 from './information--minimum-speed-130--g1.png';\r\nimport icon324 from './information--motorway--g1.png';\r\nimport icon325 from './information--motorway-exit-ahead--g1.png';\r\nimport icon326 from './information--motorway-exit-ahead--g2.png';\r\nimport icon327 from './information--motorway-exit-ahead--g3.png';\r\nimport icon328 from './information--overtaking-allowed-heavy-good-vehicles--g1.png';\r\nimport icon329 from './information--parallel-parking--g1.png';\r\nimport icon330 from './information--park-and-ride--g1.png';\r\nimport icon331 from './information--park-and-ride--g2.png';\r\nimport icon332 from './information--parking--g1.png';\r\nimport icon333 from './information--parking--g2.png';\r\nimport icon334 from './information--parking--g3.png';\r\nimport icon335 from './information--parking--g4.png';\r\nimport icon336 from './information--parking--g5.png';\r\nimport icon337 from './information--parking--g6.png';\r\nimport icon338 from './information--parking-area--g1.png';\r\nimport icon339 from './information--parking-with-restrictions--g1.png';\r\nimport icon340 from './information--pass-on-either-side--g1.png';\r\nimport icon341 from './information--passenger-loading-zone--g1.png';\r\nimport icon342 from './information--pedestrians-crossing--g1.png';\r\nimport icon343 from './information--pedestrians-crossing--g2.png';\r\nimport icon344 from './information--pedestrians-crossing--g3.png';\r\nimport icon345 from './information--pedestrians-only--g4.png';\r\nimport icon346 from './information--pedestrians-permitted--g1.png';\r\nimport icon347 from './information--perpendicular-parking--g1.png';\r\nimport icon348 from './information--picnic-site--g1.png';\r\nimport icon349 from './information--playground--g1.png';\r\nimport icon350 from './information--recreational-vehicle-sanitary-station--g1.png';\r\nimport icon351 from './information--recycle-collection-center--g1.png';\r\nimport icon352 from './information--rest-area--g1.png';\r\nimport icon353 from './information--road-bump--g1.png';\r\nimport icon354 from './information--road-skating--g1.png';\r\nimport icon355 from './information--safety-zone--g1.png';\r\nimport icon356 from './information--safety-zone--g2.png';\r\nimport icon357 from './information--safety-zone--g3.png';\r\nimport icon358 from './information--shared-path-vehicles-and-motorcycles--g1.png';\r\nimport icon359 from './information--stairs--g1.png';\r\nimport icon360 from './information--stairs--g2.png';\r\nimport icon361 from './information--stairs--g3.png';\r\nimport icon362 from './information--stairs--g4.png';\r\nimport icon363 from './information--stop-line--g1.png';\r\nimport icon364 from './information--stop-permitted--g1.png';\r\nimport icon365 from './information--street-name-one-line--g1.png';\r\nimport icon366 from './information--street-name-three-lines--g1.png';\r\nimport icon367 from './information--street-name-two-lines--g1.png';\r\nimport icon368 from './information--subway--g1.png';\r\nimport icon369 from './information--telephone--g1.png';\r\nimport icon370 from './information--telephone--g2.png';\r\nimport icon371 from './information--telephone-device-for-the-deaf--g1.png';\r\nimport icon372 from './information--toll-station--g1.png';\r\nimport icon373 from './information--tourism-information--g1.png';\r\nimport icon374 from './information--tourist-attraction--g1.png';\r\nimport icon375 from './information--traffic-merges-left--g1.png';\r\nimport icon376 from './information--traffic-merges-right--g1.png';\r\nimport icon377 from './information--trail-crossing--g1.png';\r\nimport icon378 from './information--trail-crossing--g2.png';\r\nimport icon379 from './information--trail-crossing--g3.png';\r\nimport icon380 from './information--trailer-camping--g1.png';\r\nimport icon381 from './information--train-or-light-rail-station--g1.png';\r\nimport icon382 from './information--tram-bus-stop--g1.png';\r\nimport icon383 from './information--tram-bus-stop--g2.png';\r\nimport icon384 from './information--trams-crossing--g1.png';\r\nimport icon385 from './information--truck-lane-left--g1.png';\r\nimport icon386 from './information--truck-parking--g1.png';\r\nimport icon387 from './information--truck-trailer-lane-right--g1.png';\r\nimport icon388 from './information--truck-trailer-lane-straight--g1.png';\r\nimport icon389 from './information--trucks-both-ways--g1.png';\r\nimport icon390 from './information--trucks-only--g1.png';\r\nimport icon391 from './information--tsunami-evacuation_route--g1.png';\r\nimport icon392 from './information--tunnel--g1.png';\r\nimport icon393 from './information--tunnel--g2.png';\r\nimport icon394 from './information--tunnel--g3.png';\r\nimport icon395 from './information--tunnel-ahead--g1.png';\r\nimport icon396 from './information--turn-left--g1.png';\r\nimport icon397 from './information--turn-left-ahead--g1.png';\r\nimport icon398 from './information--turn-right--g1.png';\r\nimport icon399 from './information--turn-right-ahead--g1.png';\r\nimport icon400 from './information--urban-area--g1.png';\r\nimport icon401 from './information--vehicles-on-rails--g1.png';\r\nimport icon402 from './information--water-protection-zone--g1.png';\r\nimport icon403 from './information--weight-and-height-limit--g1.png';\r\nimport icon404 from './information--weight-limit--g1.png';\r\nimport icon405 from './information--wireless-internet--g1.png';\r\nimport icon406 from './regulatory--advisory-maximum-speed-limit--g1.png';\r\nimport icon407 from './regulatory--all-directions-permitted--g1.png';\r\nimport icon408 from './regulatory--all-way--g1.png';\r\nimport icon409 from './regulatory--atvs-permitted--g1.png';\r\nimport icon410 from './regulatory--axle-limit--g1.png';\r\nimport icon411 from './regulatory--axle-limit--g2.png';\r\nimport icon412 from './regulatory--bicycle-lane-left--g1.png';\r\nimport icon413 from './regulatory--bicycle-parking--g1.png';\r\nimport icon414 from './regulatory--bicycles-and-buses-only--g1.png';\r\nimport icon415 from './regulatory--bicycles-only--g1.png';\r\nimport icon416 from './regulatory--bicycles-only--g2.png';\r\nimport icon417 from './regulatory--bicycles-only--g3.png';\r\nimport icon418 from './regulatory--bicycles-only--g4.png';\r\nimport icon419 from './regulatory--bicycles-push-button--g1.png';\r\nimport icon420 from './regulatory--bicycles-push-button--g2.png';\r\nimport icon421 from './regulatory--bicycles-stop-on-red--g1.png';\r\nimport icon422 from './regulatory--bicycles-wrong-way--g1.png';\r\nimport icon423 from './regulatory--bicycles-yield-or-use-signal--g1.png';\r\nimport icon424 from './regulatory--bike-route--g1.png';\r\nimport icon425 from './regulatory--building-direction--g1.png';\r\nimport icon426 from './regulatory--bus-priority-lane--g1.png';\r\nimport icon427 from './regulatory--buses-and-taxi-only--g1.png';\r\nimport icon428 from './regulatory--buses-only--g1.png';\r\nimport icon429 from './regulatory--buses-only--g2.png';\r\nimport icon430 from './regulatory--circular-intersection--g1.png';\r\nimport icon431 from './regulatory--circular-intersection--g2.png';\r\nimport icon432 from './regulatory--circular-intersection--g3.png';\r\nimport icon433 from './regulatory--circular-intersection--g4.png';\r\nimport icon434 from './regulatory--cross-only-on-green--g1.png';\r\nimport icon435 from './regulatory--cross-only-on-pedestrian-signal--g1.png';\r\nimport icon436 from './regulatory--crosswalk-stop-on-red--g1.png';\r\nimport icon437 from './regulatory--cycling-restriction--g1.png';\r\nimport icon438 from './regulatory--cyclists-dismount-and-walk--g1.png';\r\nimport icon439 from './regulatory--detour-left--g1.png';\r\nimport icon440 from './regulatory--detour-right--g1.png';\r\nimport icon441 from './regulatory--divided-highway-crossing--g1.png';\r\nimport icon442 from './regulatory--divided-highway-ends--g1.png';\r\nimport icon443 from './regulatory--divided-highway-starts--g1.png';\r\nimport icon444 from './regulatory--do-not-block-intersection--g1.png';\r\nimport icon445 from './regulatory--do-not-pass--g1.png';\r\nimport icon446 from './regulatory--do-not-stop-on-tracks--g1.png';\r\nimport icon447 from './regulatory--dual-lanes-all-directions-on-left--g1.png';\r\nimport icon448 from './regulatory--dual-lanes-all-directions-on-right--g1.png';\r\nimport icon449 from './regulatory--dual-lanes-bicyclists-and-pedestrians--g1.png';\r\nimport icon450 from './regulatory--dual-lanes-go-left-or-right--g1.png';\r\nimport icon451 from './regulatory--dual-lanes-go-straight-on-left--g1.png';\r\nimport icon452 from './regulatory--dual-lanes-go-straight-on-right--g1.png';\r\nimport icon453 from './regulatory--dual-lanes-turn-left--g1.png';\r\nimport icon454 from './regulatory--dual-lanes-turn-left-no-u-turn--g1.png';\r\nimport icon455 from './regulatory--dual-lanes-turn-left-or-straight--g1.png';\r\nimport icon456 from './regulatory--dual-lanes-turn-right-or-straight--g1.png';\r\nimport icon457 from './regulatory--dual-path-bicycles-and-pedestrians--g1.png';\r\nimport icon458 from './regulatory--dual-path-bicycles-and-pedestrians--g2.png';\r\nimport icon459 from './regulatory--dual-path-bicycles-and-pedestrians--g3.png';\r\nimport icon460 from './regulatory--dual-path-equestrians-and-pedestrians--g1.png';\r\nimport icon461 from './regulatory--dual-path-equestrians-and-pedestrians-bicycles--g1.png';\r\nimport icon462 from './regulatory--dual-path-pedestrians-and-bicycles--g1.png';\r\nimport icon463 from './regulatory--dual-path-pedestrians-and-bicycles--g2.png';\r\nimport icon464 from './regulatory--dual-path-pedestrians-and-equestrians--g1.png';\r\nimport icon465 from './regulatory--dual-path-pedestrians-bicycles-and-equestrians--g1.png';\r\nimport icon466 from './regulatory--dual-speed-limits--g1.png';\r\nimport icon467 from './regulatory--dual-speed-limits--g2.png';\r\nimport icon468 from './regulatory--end-of-bicycles-only--g1.png';\r\nimport icon469 from './regulatory--end-of-bicycles-only--g2.png';\r\nimport icon470 from './regulatory--end-of-bus-and-taxi-only--g1.png';\r\nimport icon471 from './regulatory--end-of-buses-only--g1.png';\r\nimport icon472 from './regulatory--end-of-buses-only--g2.png';\r\nimport icon473 from './regulatory--end-of-cycling-restriction--g1.png';\r\nimport icon474 from './regulatory--end-of-dual-path-bicycles-and-pedestrians--g1.png';\r\nimport icon475 from './regulatory--end-of-dual-path-pedestrians-and-bicycles--g1.png';\r\nimport icon476 from './regulatory--end-of-equestrians-only--g1.png';\r\nimport icon477 from './regulatory--end-of-low-beam-headlights--g1.png';\r\nimport icon478 from './regulatory--end-of-maximum-speed-limit-10--g1.png';\r\nimport icon479 from './regulatory--end-of-maximum-speed-limit-10--g2.png';\r\nimport icon480 from './regulatory--end-of-maximum-speed-limit-20--g1.png';\r\nimport icon481 from './regulatory--end-of-maximum-speed-limit-20--g2.png';\r\nimport icon482 from './regulatory--end-of-maximum-speed-limit-25--g1.png';\r\nimport icon483 from './regulatory--end-of-maximum-speed-limit-25--g2.png';\r\nimport icon484 from './regulatory--end-of-maximum-speed-limit-30--g1.png';\r\nimport icon485 from './regulatory--end-of-maximum-speed-limit-30--g2.png';\r\nimport icon486 from './regulatory--end-of-maximum-speed-limit-35--g1.png';\r\nimport icon487 from './regulatory--end-of-maximum-speed-limit-35--g2.png';\r\nimport icon488 from './regulatory--end-of-maximum-speed-limit-40--g1.png';\r\nimport icon489 from './regulatory--end-of-maximum-speed-limit-40--g2.png';\r\nimport icon490 from './regulatory--end-of-maximum-speed-limit-50--g1.png';\r\nimport icon491 from './regulatory--end-of-maximum-speed-limit-50--g2.png';\r\nimport icon492 from './regulatory--end-of-maximum-speed-limit-60--g1.png';\r\nimport icon493 from './regulatory--end-of-maximum-speed-limit-60--g2.png';\r\nimport icon494 from './regulatory--end-of-maximum-speed-limit-65--g1.png';\r\nimport icon495 from './regulatory--end-of-maximum-speed-limit-65--g2.png';\r\nimport icon496 from './regulatory--end-of-maximum-speed-limit-70--g1.png';\r\nimport icon497 from './regulatory--end-of-maximum-speed-limit-70--g2.png';\r\nimport icon498 from './regulatory--end-of-maximum-speed-limit-75--g1.png';\r\nimport icon499 from './regulatory--end-of-maximum-speed-limit-75--g2.png';\r\nimport icon500 from './regulatory--end-of-maximum-speed-limit-80--g1.png';\r\nimport icon501 from './regulatory--end-of-maximum-speed-limit-80--g2.png';\r\nimport icon502 from './regulatory--end-of-maximum-speed-limit-90--g1.png';\r\nimport icon503 from './regulatory--end-of-maximum-speed-limit-90--g2.png';\r\nimport icon504 from './regulatory--end-of-maximum-speed-limit-100--g1.png';\r\nimport icon505 from './regulatory--end-of-maximum-speed-limit-100--g2.png';\r\nimport icon506 from './regulatory--end-of-maximum-speed-limit-110--g1.png';\r\nimport icon507 from './regulatory--end-of-maximum-speed-limit-110--g2.png';\r\nimport icon508 from './regulatory--end-of-maximum-speed-limit-120--g1.png';\r\nimport icon509 from './regulatory--end-of-maximum-speed-limit-120--g2.png';\r\nimport icon510 from './regulatory--end-of-maximum-speed-limit-130--g1.png';\r\nimport icon511 from './regulatory--end-of-maximum-speed-limit-130--g2.png';\r\nimport icon512 from './regulatory--end-of-maximum-speed-limit--g1.png';\r\nimport icon513 from './regulatory--end-of-mopeds-and-bicycles-only--g1.png';\r\nimport icon514 from './regulatory--end-of-no-heavy-goods-vehicles--g1.png';\r\nimport icon515 from './regulatory--end-of-no-horn--g1.png';\r\nimport icon516 from './regulatory--end-of-no-overtaking--g1.png';\r\nimport icon517 from './regulatory--end-of-no-overtaking--g2.png';\r\nimport icon518 from './regulatory--end-of-no-overtaking--g3.png';\r\nimport icon519 from './regulatory--end-of-no-overtaking--g4.png';\r\nimport icon520 from './regulatory--end-of-no-overtaking--g5.png';\r\nimport icon521 from './regulatory--end-of-no-overtaking-by-heavy-goods-vehicles--g1.png';\r\nimport icon522 from './regulatory--end-of-no-overtaking-by-heavy-goods-vehicles--g2.png';\r\nimport icon523 from './regulatory--end-of-no-overtaking-by-motorcycles--g1.png';\r\nimport icon524 from './regulatory--end-of-no-parking--g1.png';\r\nimport icon525 from './regulatory--end-of-no-parking--g2.png';\r\nimport icon526 from './regulatory--end-of-no-parking-or-stopping--g1.png';\r\nimport icon527 from './regulatory--end-of-one-way-straight--g1.png';\r\nimport icon528 from './regulatory--end-of-parking-zone--g1.png';\r\nimport icon529 from './regulatory--end-of-parking-zone--g2.png';\r\nimport icon530 from './regulatory--end-of-pedestrians-only--g1.png';\r\nimport icon531 from './regulatory--end-of-pedestrians-only--g2.png';\r\nimport icon532 from './regulatory--end-of-pedestrians-only--g3.png';\r\nimport icon533 from './regulatory--end-of-pedestrians-only--g4.png';\r\nimport icon534 from './regulatory--end-of-priority-road--g1.png';\r\nimport icon535 from './regulatory--end-of-prohibition--g1.png';\r\nimport icon536 from './regulatory--end-of-school-zone--g1.png';\r\nimport icon537 from './regulatory--end-of-shared-path-bicycles-and-pedestrians--g1.png';\r\nimport icon538 from './regulatory--end-of-shared-path-pedestrians-and-bicycles--g1.png';\r\nimport icon539 from './regulatory--end-of-snow-chains--g1.png';\r\nimport icon540 from './regulatory--end-of-snow-chains--g2.png';\r\nimport icon541 from './regulatory--end-of-snowmobiles-only--g1.png';\r\nimport icon542 from './regulatory--end-of-speed-limit-zone--g1.png';\r\nimport icon543 from './regulatory--end-of-speed-limit-zone--g2.png';\r\nimport icon544 from './regulatory--end-of-speed-limit-zone--g3.png';\r\nimport icon545 from './regulatory--end-of-tractors-only--g1.png';\r\nimport icon546 from './regulatory--end-of-trams-and-buses-only--g1.png';\r\nimport icon547 from './regulatory--end-of-trams-only--g1.png';\r\nimport icon548 from './regulatory--end-of-trucks-and-buses-only--g1.png';\r\nimport icon549 from './regulatory--end-of-trucks-only--g1.png';\r\nimport icon550 from './regulatory--end-of-trucks-only--g2.png';\r\nimport icon551 from './regulatory--equestrians-only--g1.png';\r\nimport icon552 from './regulatory--except-railroad-crossing--g1.png';\r\nimport icon553 from './regulatory--fine-for-littering--g1.png';\r\nimport icon554 from './regulatory--give-way-to-bicycles--g1.png';\r\nimport icon555 from './regulatory--give-way-to-oncoming-traffic--g1.png';\r\nimport icon556 from './regulatory--give-way-to-oncoming-traffic--g2.png';\r\nimport icon557 from './regulatory--go-left-bicycles--g1.png';\r\nimport icon558 from './regulatory--go-right-bicycles--g1.png';\r\nimport icon559 from './regulatory--go-straight--g1.png';\r\nimport icon560 from './regulatory--go-straight--g3.png';\r\nimport icon561 from './regulatory--go-straight-bicycles--g1.png';\r\nimport icon562 from './regulatory--go-straight-or-turn-left--g1.png';\r\nimport icon563 from './regulatory--go-straight-or-turn-left--g2.png';\r\nimport icon564 from './regulatory--go-straight-or-turn-left--g3.png';\r\nimport icon565 from './regulatory--go-straight-or-turn-right--g1.png';\r\nimport icon566 from './regulatory--go-straight-or-turn-right--g2.png';\r\nimport icon567 from './regulatory--go-straight-or-turn-right--g3.png';\r\nimport icon568 from './regulatory--heavy-goods-vehicles-permitted--g1.png';\r\nimport icon569 from './regulatory--height-limit--g1.png';\r\nimport icon570 from './regulatory--high-beam-headlights--g1.png';\r\nimport icon571 from './regulatory--horn--g1.png';\r\nimport icon572 from './regulatory--in-street-pedestrian-crossing--g1.png';\r\nimport icon573 from './regulatory--keep-left--g1.png';\r\nimport icon574 from './regulatory--keep-left--g2.png';\r\nimport icon575 from './regulatory--keep-left--g3.png';\r\nimport icon576 from './regulatory--keep-left--g4.png';\r\nimport icon577 from './regulatory--keep-left--g5.png';\r\nimport icon578 from './regulatory--keep-left--g6.png';\r\nimport icon579 from './regulatory--keep-left--g7.png';\r\nimport icon580 from './regulatory--keep-right--g1.png';\r\nimport icon581 from './regulatory--keep-right--g2.png';\r\nimport icon582 from './regulatory--keep-right--g3.png';\r\nimport icon583 from './regulatory--keep-right--g4.png';\r\nimport icon584 from './regulatory--keep-right--g5.png';\r\nimport icon585 from './regulatory--keep-right--g6.png';\r\nimport icon586 from './regulatory--keep-right--g7.png';\r\nimport icon587 from './regulatory--keep-right--g8.png';\r\nimport icon588 from './regulatory--keep-right--g9.png';\r\nimport icon589 from './regulatory--lane-control--g1.png';\r\nimport icon590 from './regulatory--left-turn-yield-on-green--g1.png';\r\nimport icon591 from './regulatory--length-limit--g1.png';\r\nimport icon592 from './regulatory--length-limit--g2.png';\r\nimport icon593 from './regulatory--light-rail-divided-highway--g1.png';\r\nimport icon594 from './regulatory--light-rail-do-not-pass--g1.png';\r\nimport icon595 from './regulatory--light-rail-only--g1.png';\r\nimport icon596 from './regulatory--look--g1.png';\r\nimport icon597 from './regulatory--low-beam-headlights--g1.png';\r\nimport icon598 from './regulatory--low-beam-headlights--g2.png';\r\nimport icon599 from './regulatory--low-beam-headlights--g3.png';\r\nimport icon600 from './regulatory--low-speed-vehicle-permitted--g1.png';\r\nimport icon601 from './regulatory--maximum-speed-limit-5--g1.png';\r\nimport icon602 from './regulatory--maximum-speed-limit-5--g3.png';\r\nimport icon603 from './regulatory--maximum-speed-limit-10--g1.png';\r\nimport icon604 from './regulatory--maximum-speed-limit-10--g3.png';\r\nimport icon605 from './regulatory--maximum-speed-limit-15--g1.png';\r\nimport icon606 from './regulatory--maximum-speed-limit-15--g3.png';\r\nimport icon607 from './regulatory--maximum-speed-limit-20--g1.png';\r\nimport icon608 from './regulatory--maximum-speed-limit-20--g3.png';\r\nimport icon609 from './regulatory--maximum-speed-limit-25--g1.png';\r\nimport icon610 from './regulatory--maximum-speed-limit-25--g2.png';\r\nimport icon611 from './regulatory--maximum-speed-limit-30--g1.png';\r\nimport icon612 from './regulatory--maximum-speed-limit-30--g3.png';\r\nimport icon613 from './regulatory--maximum-speed-limit-35--g1.png';\r\nimport icon614 from './regulatory--maximum-speed-limit-35--g2.png';\r\nimport icon615 from './regulatory--maximum-speed-limit-40--g1.png';\r\nimport icon616 from './regulatory--maximum-speed-limit-40--g3.png';\r\nimport icon617 from './regulatory--maximum-speed-limit-45--g1.png';\r\nimport icon618 from './regulatory--maximum-speed-limit-45--g3.png';\r\nimport icon619 from './regulatory--maximum-speed-limit-50--g1.png';\r\nimport icon620 from './regulatory--maximum-speed-limit-50--g3.png';\r\nimport icon621 from './regulatory--maximum-speed-limit-55--g2.png';\r\nimport icon622 from './regulatory--maximum-speed-limit-60--g1.png';\r\nimport icon623 from './regulatory--maximum-speed-limit-60--g3.png';\r\nimport icon624 from './regulatory--maximum-speed-limit-65--g1.png';\r\nimport icon625 from './regulatory--maximum-speed-limit-65--g2.png';\r\nimport icon626 from './regulatory--maximum-speed-limit-70--g1.png';\r\nimport icon627 from './regulatory--maximum-speed-limit-70--g3.png';\r\nimport icon628 from './regulatory--maximum-speed-limit-75--g2.png';\r\nimport icon629 from './regulatory--maximum-speed-limit-80--g1.png';\r\nimport icon630 from './regulatory--maximum-speed-limit-80--g3.png';\r\nimport icon631 from './regulatory--maximum-speed-limit-85--g2.png';\r\nimport icon632 from './regulatory--maximum-speed-limit-90--g1.png';\r\nimport icon633 from './regulatory--maximum-speed-limit-90--g3.png';\r\nimport icon634 from './regulatory--maximum-speed-limit-100--g1.png';\r\nimport icon635 from './regulatory--maximum-speed-limit-100--g3.png';\r\nimport icon636 from './regulatory--maximum-speed-limit-110--g1.png';\r\nimport icon637 from './regulatory--maximum-speed-limit-110--g3.png';\r\nimport icon638 from './regulatory--maximum-speed-limit-120--g1.png';\r\nimport icon639 from './regulatory--maximum-speed-limit-120--g3.png';\r\nimport icon640 from './regulatory--maximum-speed-limit-130--g1.png';\r\nimport icon641 from './regulatory--maximum-speed-limit-130--g3.png';\r\nimport icon642 from './regulatory--maximum-speed-limit-led-5--g2.png';\r\nimport icon643 from './regulatory--maximum-speed-limit-led-5--g3.png';\r\nimport icon644 from './regulatory--maximum-speed-limit-led-10--g1.png';\r\nimport icon645 from './regulatory--maximum-speed-limit-led-10--g2.png';\r\nimport icon646 from './regulatory--maximum-speed-limit-led-10--g3.png';\r\nimport icon647 from './regulatory--maximum-speed-limit-led-15--g2.png';\r\nimport icon648 from './regulatory--maximum-speed-limit-led-15--g3.png';\r\nimport icon649 from './regulatory--maximum-speed-limit-led-20--g1.png';\r\nimport icon650 from './regulatory--maximum-speed-limit-led-20--g2.png';\r\nimport icon651 from './regulatory--maximum-speed-limit-led-20--g3.png';\r\nimport icon652 from './regulatory--maximum-speed-limit-led-25--g1.png';\r\nimport icon653 from './regulatory--maximum-speed-limit-led-25--g2.png';\r\nimport icon654 from './regulatory--maximum-speed-limit-led-25--g3.png';\r\nimport icon655 from './regulatory--maximum-speed-limit-led-30--g1.png';\r\nimport icon656 from './regulatory--maximum-speed-limit-led-30--g2.png';\r\nimport icon657 from './regulatory--maximum-speed-limit-led-30--g3.png';\r\nimport icon658 from './regulatory--maximum-speed-limit-led-35--g1.png';\r\nimport icon659 from './regulatory--maximum-speed-limit-led-35--g2.png';\r\nimport icon660 from './regulatory--maximum-speed-limit-led-35--g3.png';\r\nimport icon661 from './regulatory--maximum-speed-limit-led-40--g1.png';\r\nimport icon662 from './regulatory--maximum-speed-limit-led-40--g2.png';\r\nimport icon663 from './regulatory--maximum-speed-limit-led-40--g3.png';\r\nimport icon664 from './regulatory--maximum-speed-limit-led-45--g2.png';\r\nimport icon665 from './regulatory--maximum-speed-limit-led-45--g3.png';\r\nimport icon666 from './regulatory--maximum-speed-limit-led-50--g1.png';\r\nimport icon667 from './regulatory--maximum-speed-limit-led-50--g2.png';\r\nimport icon668 from './regulatory--maximum-speed-limit-led-50--g3.png';\r\nimport icon669 from './regulatory--maximum-speed-limit-led-55--g2.png';\r\nimport icon670 from './regulatory--maximum-speed-limit-led-55--g3.png';\r\nimport icon671 from './regulatory--maximum-speed-limit-led-60--g1.png';\r\nimport icon672 from './regulatory--maximum-speed-limit-led-60--g2.png';\r\nimport icon673 from './regulatory--maximum-speed-limit-led-60--g3.png';\r\nimport icon674 from './regulatory--maximum-speed-limit-led-65--g2.png';\r\nimport icon675 from './regulatory--maximum-speed-limit-led-65--g3.png';\r\nimport icon676 from './regulatory--maximum-speed-limit-led-70--g1.png';\r\nimport icon677 from './regulatory--maximum-speed-limit-led-70--g2.png';\r\nimport icon678 from './regulatory--maximum-speed-limit-led-70--g3.png';\r\nimport icon679 from './regulatory--maximum-speed-limit-led-75--g1.png';\r\nimport icon680 from './regulatory--maximum-speed-limit-led-75--g2.png';\r\nimport icon681 from './regulatory--maximum-speed-limit-led-75--g3.png';\r\nimport icon682 from './regulatory--maximum-speed-limit-led-80--g1.png';\r\nimport icon683 from './regulatory--maximum-speed-limit-led-80--g2.png';\r\nimport icon684 from './regulatory--maximum-speed-limit-led-80--g3.png';\r\nimport icon685 from './regulatory--maximum-speed-limit-led-85--g2.png';\r\nimport icon686 from './regulatory--maximum-speed-limit-led-85--g3.png';\r\nimport icon687 from './regulatory--maximum-speed-limit-led-90--g1.png';\r\nimport icon688 from './regulatory--maximum-speed-limit-led-100--g1.png';\r\nimport icon689 from './regulatory--maximum-speed-limit-led-110--g1.png';\r\nimport icon690 from './regulatory--maximum-speed-limit-led-120--g1.png';\r\nimport icon691 from './regulatory--maximum-speed-limit-led-130--g1.png';\r\nimport icon692 from './regulatory--minimum-safe-distance--g1.png';\r\nimport icon693 from './regulatory--minimum-safe-distance--g2.png';\r\nimport icon694 from './regulatory--mopeds-and-bicycles-only--g1.png';\r\nimport icon695 from './regulatory--motorcycles-and-bicycles-only--g1.png';\r\nimport icon696 from './regulatory--motorcycles-only--g1.png';\r\nimport icon697 from './regulatory--motorcycles-only--g2.png';\r\nimport icon698 from './regulatory--night-speed-limit-5--g1.png';\r\nimport icon699 from './regulatory--night-speed-limit-10--g1.png';\r\nimport icon700 from './regulatory--night-speed-limit-15--g1.png';\r\nimport icon701 from './regulatory--night-speed-limit-20--g1.png';\r\nimport icon702 from './regulatory--night-speed-limit-25--g1.png';\r\nimport icon703 from './regulatory--night-speed-limit-30--g1.png';\r\nimport icon704 from './regulatory--night-speed-limit-35--g1.png';\r\nimport icon705 from './regulatory--night-speed-limit-40--g1.png';\r\nimport icon706 from './regulatory--night-speed-limit-45--g1.png';\r\nimport icon707 from './regulatory--night-speed-limit-50--g1.png';\r\nimport icon708 from './regulatory--night-speed-limit-55--g1.png';\r\nimport icon709 from './regulatory--night-speed-limit-60--g1.png';\r\nimport icon710 from './regulatory--night-speed-limit-65--g1.png';\r\nimport icon711 from './regulatory--night-speed-limit-70--g1.png';\r\nimport icon712 from './regulatory--night-speed-limit-75--g1.png';\r\nimport icon713 from './regulatory--night-speed-limit-80--g1.png';\r\nimport icon714 from './regulatory--night-speed-limit-85--g1.png';\r\nimport icon715 from './regulatory--no-abnormal-vehicles--g1.png';\r\nimport icon716 from './regulatory--no-atvs--g1.png';\r\nimport icon717 from './regulatory--no-bicycles--g1.png';\r\nimport icon718 from './regulatory--no-bicycles--g2.png';\r\nimport icon719 from './regulatory--no-bicycles--g3.png';\r\nimport icon720 from './regulatory--no-bicycles-carts-or-hand-carts--g1.png';\r\nimport icon721 from './regulatory--no-bicycles-mopeds-or-motorcycles--g1.png';\r\nimport icon722 from './regulatory--no-bicycles-mopeds-or-motorcycles--g2.png';\r\nimport icon723 from './regulatory--no-bicycles-or-hand-carts--g1.png';\r\nimport icon724 from './regulatory--no-bicycles-or-motorcycles--g1.png';\r\nimport icon725 from './regulatory--no-bicycles-tractors-or-carts--g1.png';\r\nimport icon726 from './regulatory--no-buses--g1.png';\r\nimport icon727 from './regulatory--no-buses--g2.png';\r\nimport icon728 from './regulatory--no-buses--g3.png';\r\nimport icon729 from './regulatory--no-caravan-trailers--g1.png';\r\nimport icon730 from './regulatory--no-caravans--g1.png';\r\nimport icon731 from './regulatory--no-caravans-or-caravan-trailers--g1.png';\r\nimport icon732 from './regulatory--no-cargo-loading--g1.png';\r\nimport icon733 from './regulatory--no-carts--g1.png';\r\nimport icon734 from './regulatory--no-carts--g2.png';\r\nimport icon735 from './regulatory--no-carts--g3.png';\r\nimport icon736 from './regulatory--no-carts-or-tractors--g1.png';\r\nimport icon737 from './regulatory--no-construction-vehicles--g1.png';\r\nimport icon738 from './regulatory--no-entry--g1.png';\r\nimport icon739 from './regulatory--no-equestrians--g1.png';\r\nimport icon740 from './regulatory--no-go-straight-or-turn-left--g1.png';\r\nimport icon741 from './regulatory--no-go-straight-or-turn-right--g1.png';\r\nimport icon742 from './regulatory--no-good-trailers--g2.png';\r\nimport icon743 from './regulatory--no-goods-vehicle-trailers--g1.png';\r\nimport icon744 from './regulatory--no-hand-carts--g1.png';\r\nimport icon745 from './regulatory--no-hand-carts--g2.png';\r\nimport icon746 from './regulatory--no-hand-carts-or-bicycles--g1.png';\r\nimport icon747 from './regulatory--no-hawkers--g1.png';\r\nimport icon748 from './regulatory--no-heavy-goods-vehicles--g1.png';\r\nimport icon749 from './regulatory--no-heavy-goods-vehicles--g2.png';\r\nimport icon750 from './regulatory--no-heavy-goods-vehicles--g3.png';\r\nimport icon751 from './regulatory--no-heavy-goods-vehicles--g4.png';\r\nimport icon752 from './regulatory--no-heavy-goods-vehicles--g5.png';\r\nimport icon753 from './regulatory--no-heavy-goods-vehicles-motorcycles-or-bicycles--g1.png';\r\nimport icon754 from './regulatory--no-heavy-goods-vehicles-motorcycles-or-bicycles--g2.png';\r\nimport icon755 from './regulatory--no-heavy-goods-vehicles-or-buses--g1.png';\r\nimport icon756 from './regulatory--no-heavy-goods-vehicles-or-tractors--g1.png';\r\nimport icon757 from './regulatory--no-heavy-goods-vehicles-or-trailers--g1.png';\r\nimport icon758 from './regulatory--no-horizontal-turn--g1.png';\r\nimport icon759 from './regulatory--no-horn--g1.png';\r\nimport icon760 from './regulatory--no-horn--g2.png';\r\nimport icon761 from './regulatory--no-lane-change-to-left--g1.png';\r\nimport icon762 from './regulatory--no-lane-change-to-right--g1.png';\r\nimport icon763 from './regulatory--no-learner-drivers--g1.png';\r\nimport icon764 from './regulatory--no-left-or-u-turn--g1.png';\r\nimport icon765 from './regulatory--no-left-turn--g1.png';\r\nimport icon766 from './regulatory--no-left-turn--g2.png';\r\nimport icon767 from './regulatory--no-left-turn--g3.png';\r\nimport icon768 from './regulatory--no-left-turn--g4.png';\r\nimport icon769 from './regulatory--no-left-turn--g5.png';\r\nimport icon770 from './regulatory--no-low-speed-vehicles--g1.png';\r\nimport icon771 from './regulatory--no-mopeds-or-bicycles--g1.png';\r\nimport icon772 from './regulatory--no-motor-vehicle-trailers--g1.png';\r\nimport icon773 from './regulatory--no-motor-vehicles--g1.png';\r\nimport icon774 from './regulatory--no-motor-vehicles--g3.png';\r\nimport icon775 from './regulatory--no-motor-vehicles--g4.png';\r\nimport icon776 from './regulatory--no-motor-vehicles--g5.png';\r\nimport icon777 from './regulatory--no-motor-vehicles--g6.png';\r\nimport icon778 from './regulatory--no-motor-vehicles--g7.png';\r\nimport icon779 from './regulatory--no-motor-vehicles-except-motorcycles--g1.png';\r\nimport icon780 from './regulatory--no-motor-vehicles-except-motorcycles--g2.png';\r\nimport icon781 from './regulatory--no-motor-vehicles-except-motorcycles--g3.png';\r\nimport icon782 from './regulatory--no-motor-vehicles-or-bicycles--g1.png';\r\nimport icon783 from './regulatory--no-motor-vehicles-or-buses--g1.png';\r\nimport icon784 from './regulatory--no-motor-vehicles-or-carts--g1.png';\r\nimport icon785 from './regulatory--no-motorcycles--g1.png';\r\nimport icon786 from './regulatory--no-motorcycles--g2.png';\r\nimport icon787 from './regulatory--no-overtaking--g1.png';\r\nimport icon788 from './regulatory--no-overtaking--g2.png';\r\nimport icon789 from './regulatory--no-overtaking--g4.png';\r\nimport icon790 from './regulatory--no-overtaking--g5.png';\r\nimport icon791 from './regulatory--no-overtaking--g6.png';\r\nimport icon792 from './regulatory--no-overtaking--g7.png';\r\nimport icon793 from './regulatory--no-overtaking-atvs--g1.png';\r\nimport icon794 from './regulatory--no-overtaking-by-heavy-goods-vehicles--g1.png';\r\nimport icon795 from './regulatory--no-parking--g1.png';\r\nimport icon796 from './regulatory--no-parking--g2.png';\r\nimport icon797 from './regulatory--no-parking--g3.png';\r\nimport icon798 from './regulatory--no-parking--g4.png';\r\nimport icon799 from './regulatory--no-parking--g5.png';\r\nimport icon800 from './regulatory--no-parking--g6.png';\r\nimport icon801 from './regulatory--no-parking--g7.png';\r\nimport icon802 from './regulatory--no-parking--g8.png';\r\nimport icon803 from './regulatory--no-parking--g9.png';\r\nimport icon804 from './regulatory--no-parking-bicycles-or-motorcycles--g1.png';\r\nimport icon805 from './regulatory--no-parking-bus-stop--g1.png';\r\nimport icon806 from './regulatory--no-parking-or-no-stopping--g1.png';\r\nimport icon807 from './regulatory--no-parking-or-no-stopping--g2.png';\r\nimport icon808 from './regulatory--no-parking-or-no-stopping--g3.png';\r\nimport icon809 from './regulatory--no-parking-or-no-stopping--g4.png';\r\nimport icon810 from './regulatory--no-parking-or-no-stopping--g5.png';\r\nimport icon811 from './regulatory--no-passenger-loading--g1.png';\r\nimport icon812 from './regulatory--no-pedestrians--g1.png';\r\nimport icon813 from './regulatory--no-pedestrians--g2.png';\r\nimport icon814 from './regulatory--no-pedestrians--g3.png';\r\nimport icon815 from './regulatory--no-pedestrians--g4.png';\r\nimport icon816 from './regulatory--no-pedestrians--g5.png';\r\nimport icon817 from './regulatory--no-pedestrians--g6.png';\r\nimport icon818 from './regulatory--no-pedestrians-bicycles-animals-or-hand-carts--g1.png';\r\nimport icon819 from './regulatory--no-pedestrians-or-bicycles--g1.png';\r\nimport icon820 from './regulatory--no-pedestrians-or-bicycles--g2.png';\r\nimport icon821 from './regulatory--no-pedestrians-or-bicycles--g3.png';\r\nimport icon822 from './regulatory--no-rickshaws--g1.png';\r\nimport icon823 from './regulatory--no-rickshaws--g2.png';\r\nimport icon824 from './regulatory--no-rickshaws--g3.png';\r\nimport icon825 from './regulatory--no-right-turn--g1.png';\r\nimport icon826 from './regulatory--no-right-turn--g2.png';\r\nimport icon827 from './regulatory--no-right-turn--g3.png';\r\nimport icon828 from './regulatory--no-right-turn-on-red--g1.png';\r\nimport icon829 from './regulatory--no-skiing--g1.png';\r\nimport icon830 from './regulatory--no-snowmobiles--g1.png';\r\nimport icon831 from './regulatory--no-snowmobiles--g2.png';\r\nimport icon832 from './regulatory--no-snowmobiles-or-atvs--g1.png';\r\nimport icon833 from './regulatory--no-stopping--g1.png';\r\nimport icon834 from './regulatory--no-stopping--g2.png';\r\nimport icon835 from './regulatory--no-stopping--g3.png';\r\nimport icon836 from './regulatory--no-stopping--g5.png';\r\nimport icon837 from './regulatory--no-stopping--g6.png';\r\nimport icon838 from './regulatory--no-stopping--g7.png';\r\nimport icon839 from './regulatory--no-stopping-on-pavement--g1.png';\r\nimport icon840 from './regulatory--no-straight-through--g1.png';\r\nimport icon841 from './regulatory--no-straight-through--g2.png';\r\nimport icon842 from './regulatory--no-studded-snow-chains--g1.png';\r\nimport icon843 from './regulatory--no-through-trucks--g1.png';\r\nimport icon844 from './regulatory--no-tour-buses--g1.png';\r\nimport icon845 from './regulatory--no-tractors--g1.png';\r\nimport icon846 from './regulatory--no-tractors-mopeds-or-bicycles--g1.png';\r\nimport icon847 from './regulatory--no-tractors-or-carts--g1.png';\r\nimport icon848 from './regulatory--no-trailers--g1.png';\r\nimport icon849 from './regulatory--no-tricycles--g1.png';\r\nimport icon850 from './regulatory--no-tricycles-or-hand-carts--g1.png';\r\nimport icon851 from './regulatory--no-turn-on-red--g1.png';\r\nimport icon852 from './regulatory--no-turn-on-red--g2.png';\r\nimport icon853 from './regulatory--no-turn-on-red--g3.png';\r\nimport icon854 from './regulatory--no-turns--g1.png';\r\nimport icon855 from './regulatory--no-turns--g2.png';\r\nimport icon856 from './regulatory--no-two-stage-right-turn-for-mopeds--g1.png';\r\nimport icon857 from './regulatory--no-u-turn--g1.png';\r\nimport icon858 from './regulatory--no-u-turn--g2.png';\r\nimport icon859 from './regulatory--no-u-turn--g3.png';\r\nimport icon860 from './regulatory--no-vehicles-carrying-dangerous-goods--g1.png';\r\nimport icon861 from './regulatory--no-vehicles-carrying-dangerous-goods--g2.png';\r\nimport icon862 from './regulatory--no-vehicles-carrying-dangerous-goods--g3.png';\r\nimport icon863 from './regulatory--no-vehicles-carrying-dangerous-goods--g4.png';\r\nimport icon864 from './regulatory--no-vehicles-carrying-dangerous-water-pollutants--g1.png';\r\nimport icon865 from './regulatory--no-vehicles-carrying-dangerous-water-pollutants--g2.png';\r\nimport icon866 from './regulatory--no-vehicles-carrying-explosives--g1.png';\r\nimport icon867 from './regulatory--no-vehicles-carrying-explosives-or-dangerous-water-pollutants--g1.png';\r\nimport icon868 from './regulatory--one-way-left--g1.png';\r\nimport icon869 from './regulatory--one-way-left--g2.png';\r\nimport icon870 from './regulatory--one-way-left--g3.png';\r\nimport icon871 from './regulatory--one-way-right--g1.png';\r\nimport icon872 from './regulatory--one-way-right--g2.png';\r\nimport icon873 from './regulatory--one-way-right--g3.png';\r\nimport icon874 from './regulatory--one-way-straight--g1.png';\r\nimport icon875 from './regulatory--one-way-straight--g3.png';\r\nimport icon876 from './regulatory--parking-fee-station--g1.png';\r\nimport icon877 from './regulatory--parking-restrictions--g1.png';\r\nimport icon878 from './regulatory--parking-restrictions--g2.png';\r\nimport icon879 from './regulatory--parking-restrictions--g3.png';\r\nimport icon880 from './regulatory--pass-on-either-side--g1.png';\r\nimport icon881 from './regulatory--pass-on-either-side--g2.png';\r\nimport icon882 from './regulatory--pass-on-either-side--g3.png';\r\nimport icon883 from './regulatory--pass-with-care--g1.png';\r\nimport icon884 from './regulatory--passing-lane-ahead--g1.png';\r\nimport icon885 from './regulatory--pedestrians-bicycles-permitted--g1.png';\r\nimport icon886 from './regulatory--pedestrians-keep-left--g1.png';\r\nimport icon887 from './regulatory--pedestrians-only--g1.png';\r\nimport icon888 from './regulatory--pedestrians-only--g2.png';\r\nimport icon889 from './regulatory--pedestrians-only--g3.png';\r\nimport icon890 from './regulatory--pedestrians-priority-zone--g1.png';\r\nimport icon891 from './regulatory--pedestrians-push-button--g1.png';\r\nimport icon892 from './regulatory--pedestrians-push-button--g2.png';\r\nimport icon893 from './regulatory--priority-over-oncoming-vehicles--g1.png';\r\nimport icon894 from './regulatory--priority-over-oncoming-vehicles--g2.png';\r\nimport icon895 from './regulatory--priority-road--g1.png';\r\nimport icon896 from './regulatory--priority-road--g2.png';\r\nimport icon897 from './regulatory--radar-enforced--g1.png';\r\nimport icon898 from './regulatory--reserved-parking--g1.png';\r\nimport icon899 from './regulatory--reversible-lanes--g1.png';\r\nimport icon900 from './regulatory--reversible-lanes--g2.png';\r\nimport icon901 from './regulatory--road-closed--g1.png';\r\nimport icon902 from './regulatory--road-closed--g2.png';\r\nimport icon903 from './regulatory--road-closed-to-vehicles--g1.png';\r\nimport icon904 from './regulatory--road-closed-to-vehicles--g3.png';\r\nimport icon905 from './regulatory--roundabout--g1.png';\r\nimport icon906 from './regulatory--roundabout--g2.png';\r\nimport icon907 from './regulatory--roundabout--g3.png';\r\nimport icon908 from './regulatory--shared-path-bicycles-and-pedestrians--g1.png';\r\nimport icon909 from './regulatory--shared-path-pedestrians-and-bicycles--g1.png';\r\nimport icon910 from './regulatory--sidewalk-closed--g1.png';\r\nimport icon911 from './regulatory--slanted-parking--g1.png';\r\nimport icon912 from './regulatory--snow-chains--g1.png';\r\nimport icon913 from './regulatory--snow-chains--g2.png';\r\nimport icon914 from './regulatory--snow-chains--g3.png';\r\nimport icon915 from './regulatory--snowmobiles-only--g1.png';\r\nimport icon916 from './regulatory--snowmobiles-permitted--g1.png';\r\nimport icon917 from './regulatory--speed-limit-zone--g1.png';\r\nimport icon918 from './regulatory--speeding-fines-increased--g1.png';\r\nimport icon919 from './regulatory--state-route--g1.png';\r\nimport icon920 from './regulatory--stay-in-lane--g1.png';\r\nimport icon921 from './regulatory--stop--g1.png';\r\nimport icon922 from './regulatory--stop--g2.png';\r\nimport icon923 from './regulatory--stop--g3.png';\r\nimport icon924 from './regulatory--stop--g4.png';\r\nimport icon925 from './regulatory--stop--g5.png';\r\nimport icon926 from './regulatory--stop--g6.png';\r\nimport icon927 from './regulatory--stop--g7.png';\r\nimport icon928 from './regulatory--stop--g8.png';\r\nimport icon929 from './regulatory--stop--g9.png';\r\nimport icon930 from './regulatory--stop--g10.png';\r\nimport icon931 from './regulatory--stop-here-on-red-or-flashing-light--g1.png';\r\nimport icon932 from './regulatory--stop-here-on-red-or-flashing-light--g2.png';\r\nimport icon933 from './regulatory--stop-signals--g1.png';\r\nimport icon934 from './regulatory--stop-signals--g2.png';\r\nimport icon935 from './regulatory--tanks-only--g1.png';\r\nimport icon936 from './regulatory--taxi-only--g1.png';\r\nimport icon937 from './regulatory--text--g1.png';\r\nimport icon938 from './regulatory--text--g2.png';\r\nimport icon939 from './regulatory--toll-pass-only--g1.png';\r\nimport icon940 from './regulatory--tractors-only--g1.png';\r\nimport icon941 from './regulatory--traffic-signal-photo-enforced--g1.png';\r\nimport icon942 from './regulatory--trams-and-buses-only--g1.png';\r\nimport icon943 from './regulatory--trams-only--g1.png';\r\nimport icon944 from './regulatory--triple-lanes--g1.png';\r\nimport icon945 from './regulatory--triple-lanes-go-straight-center-lane--g1.png';\r\nimport icon946 from './regulatory--triple-lanes-turn-left-center-lane--g1.png';\r\nimport icon947 from './regulatory--triple-lanes-turn-right-center-lane--g1.png';\r\nimport icon948 from './regulatory--truck-route--g1.png';\r\nimport icon949 from './regulatory--truck-speed-limit-5--g1.png';\r\nimport icon950 from './regulatory--truck-speed-limit-10--g1.png';\r\nimport icon951 from './regulatory--truck-speed-limit-15--g1.png';\r\nimport icon952 from './regulatory--truck-speed-limit-20--g1.png';\r\nimport icon953 from './regulatory--truck-speed-limit-25--g1.png';\r\nimport icon954 from './regulatory--truck-speed-limit-30--g1.png';\r\nimport icon955 from './regulatory--truck-speed-limit-35--g1.png';\r\nimport icon956 from './regulatory--truck-speed-limit-40--g1.png';\r\nimport icon957 from './regulatory--truck-speed-limit-45--g1.png';\r\nimport icon958 from './regulatory--truck-speed-limit-50--g1.png';\r\nimport icon959 from './regulatory--truck-speed-limit-55--g1.png';\r\nimport icon960 from './regulatory--truck-speed-limit-60--g1.png';\r\nimport icon961 from './regulatory--truck-speed-limit-65--g1.png';\r\nimport icon962 from './regulatory--truck-speed-limit-70--g1.png';\r\nimport icon963 from './regulatory--truck-speed-limit-75--g1.png';\r\nimport icon964 from './regulatory--truck-speed-limit-80--g1.png';\r\nimport icon965 from './regulatory--truck-speed-limit-85--g1.png';\r\nimport icon966 from './regulatory--trucks-and-buses-only--g1.png';\r\nimport icon967 from './regulatory--trucks-on-right--g1.png';\r\nimport icon968 from './regulatory--trucks-only--g1.png';\r\nimport icon969 from './regulatory--turn-left--g1.png';\r\nimport icon970 from './regulatory--turn-left--g2.png';\r\nimport icon971 from './regulatory--turn-left--g3.png';\r\nimport icon972 from './regulatory--turn-left-ahead--g1.png';\r\nimport icon973 from './regulatory--turn-left-ahead--g2.png';\r\nimport icon974 from './regulatory--turn-left-or-right--g1.png';\r\nimport icon975 from './regulatory--turn-left-or-right--g2.png';\r\nimport icon976 from './regulatory--turn-left-or-right--g3.png';\r\nimport icon977 from './regulatory--turn-left-or-u-turn--g1.png';\r\nimport icon978 from './regulatory--turn-right--g1.png';\r\nimport icon979 from './regulatory--turn-right--g2.png';\r\nimport icon980 from './regulatory--turn-right--g3.png';\r\nimport icon981 from './regulatory--turn-right-ahead--g1.png';\r\nimport icon982 from './regulatory--turn-right-ahead--g2.png';\r\nimport icon983 from './regulatory--turning-vehicles-yield-to-pedestrians--g1.png';\r\nimport icon984 from './regulatory--two-stage-right-turn-for-mopeds--g1.png';\r\nimport icon985 from './regulatory--two-way--g1.png';\r\nimport icon986 from './regulatory--u-turn--g1.png';\r\nimport icon987 from './regulatory--u-turn--g2.png';\r\nimport icon988 from './regulatory--u-turn--g3.png';\r\nimport icon989 from './regulatory--use-crosswalk--g1.png';\r\nimport icon990 from './regulatory--vehicles-carrying-dangerous-goods-only--g1.png';\r\nimport icon991 from './regulatory--vehicles-carrying-dangerous-goods-permitted--g1.png';\r\nimport icon992 from './regulatory--vehicles-carrying-explosives-only--g1.png';\r\nimport icon993 from './regulatory--vehicles-carrying-hazardous-goods-permitted--g1.png';\r\nimport icon994 from './regulatory--vehicles-only--g1.png';\r\nimport icon995 from './regulatory--wear-seat-belt--g1.png';\r\nimport icon996 from './regulatory--wear-seat-belt--g2.png';\r\nimport icon997 from './regulatory--wear-seat-belt--g3.png';\r\nimport icon998 from './regulatory--weight-limit--g1.png';\r\nimport icon999 from './regulatory--weight-limit--g2.png';\r\nimport icon1000 from './regulatory--weight-limit--g3.png';\r\nimport icon1001 from './regulatory--weight-limit--g4.png';\r\nimport icon1002 from './regulatory--weight-limit--g5.png';\r\nimport icon1003 from './regulatory--weight-limit--g6.png';\r\nimport icon1004 from './regulatory--weight-limit--g7.png';\r\nimport icon1005 from './regulatory--weight-limit-per-axle--g1.png';\r\nimport icon1006 from './regulatory--weight-limit-per-tandem-axle--g1.png';\r\nimport icon1007 from './regulatory--weight-limit-with-trucks--g1.png';\r\nimport icon1008 from './regulatory--width-limit--g1.png';\r\nimport icon1009 from './regulatory--wrong-way--g1.png';\r\nimport icon1010 from './regulatory--yield--g1.png';\r\nimport icon1011 from './regulatory--yield-or-stop-for-pedestrians--g1.png';\r\nimport icon1012 from './regulatory--your-speed--g1.png';\r\nimport icon1013 from './warning--accident-area--g1.png';\r\nimport icon1014 from './warning--accident-area--g2.png';\r\nimport icon1015 from './warning--accident-area--g3.png';\r\nimport icon1016 from './warning--accident-area--g4.png';\r\nimport icon1017 from './warning--accident-area--g5.png';\r\nimport icon1018 from './warning--accident-area--g6.png';\r\nimport icon1019 from './warning--accident-area--g7.png';\r\nimport icon1020 from './warning--accident-area--g8.png';\r\nimport icon1021 from './warning--added-lane-from-entering-roadway--g1.png';\r\nimport icon1022 from './warning--added-lane-from-entering-roadway--g2.png';\r\nimport icon1023 from './warning--added-lane-left--g1.png';\r\nimport icon1024 from './warning--added-lane-right--g1.png';\r\nimport icon1025 from './warning--animal-drawn-vehicles--g1.png';\r\nimport icon1026 from './warning--arch-bridge--g1.png';\r\nimport icon1027 from './warning--atv-and-snowmobiles--g1.png';\r\nimport icon1028 from './warning--atv-crossing--g1.png';\r\nimport icon1029 from './warning--atv-crossing--g2.png';\r\nimport icon1030 from './warning--axle-restriction--g1.png';\r\nimport icon1031 from './warning--bear-crossing--g1.png';\r\nimport icon1032 from './warning--bear-crossing--g2.png';\r\nimport icon1033 from './warning--bicycles-and-others--g1.png';\r\nimport icon1034 from './warning--bicycles-caution-on-rail-tracks--g1.png';\r\nimport icon1035 from './warning--bicycles-crossing--g1.png';\r\nimport icon1036 from './warning--bicycles-crossing--g2.png';\r\nimport icon1037 from './warning--bicycles-crossing--g3.png';\r\nimport icon1038 from './warning--bicycles-crossing--g4.png';\r\nimport icon1039 from './warning--bollard--g1.png';\r\nimport icon1040 from './warning--bridge--g1.png';\r\nimport icon1041 from './warning--bridge--g2.png';\r\nimport icon1042 from './warning--bus-stop-ahead--g1.png';\r\nimport icon1043 from './warning--bus-stop-ahead--g2.png';\r\nimport icon1044 from './warning--bus-stop-ahead--g3.png';\r\nimport icon1045 from './warning--camel-crossing--g1.png';\r\nimport icon1046 from './warning--camel-crossing--g2.png';\r\nimport icon1047 from './warning--camera--g1.png';\r\nimport icon1048 from './warning--camera--g2.png';\r\nimport icon1049 from './warning--carts--g1.png';\r\nimport icon1050 from './warning--carts--g2.png';\r\nimport icon1051 from './warning--checkpoint--g1.png';\r\nimport icon1052 from './warning--children--g1.png';\r\nimport icon1053 from './warning--children--g2.png';\r\nimport icon1054 from './warning--children--g3.png';\r\nimport icon1055 from './warning--children--g4.png';\r\nimport icon1056 from './warning--children--g6.png';\r\nimport icon1057 from './warning--cliff--g1.png';\r\nimport icon1058 from './warning--cliff--g2.png';\r\nimport icon1059 from './warning--closed-lane-in-triple-lanes--g1.png';\r\nimport icon1060 from './warning--closed-lane-in-triple-lanes--g2.png';\r\nimport icon1061 from './warning--construction-ahead--g1.png';\r\nimport icon1062 from './warning--crossroads--g1.png';\r\nimport icon1063 from './warning--crossroads--g2.png';\r\nimport icon1064 from './warning--crossroads--g3.png';\r\nimport icon1065 from './warning--crossroads--g4.png';\r\nimport icon1066 from './warning--crossroads--g5.png';\r\nimport icon1067 from './warning--crossroads--g6.png';\r\nimport icon1068 from './warning--crossroads-with-priority-to-the-right--g1.png';\r\nimport icon1069 from './warning--curve-left--g1.png';\r\nimport icon1070 from './warning--curve-left--g2.png';\r\nimport icon1071 from './warning--curve-left--g3.png';\r\nimport icon1072 from './warning--curve-left-with-junction--g1.png';\r\nimport icon1073 from './warning--curve-out-intersection-left--g1.png';\r\nimport icon1074 from './warning--curve-out-intersection-right--g1.png';\r\nimport icon1075 from './warning--curve-right--g1.png';\r\nimport icon1076 from './warning--curve-right--g2.png';\r\nimport icon1077 from './warning--curve-right--g3.png';\r\nimport icon1078 from './warning--curve-right-with-junction--g1.png';\r\nimport icon1079 from './warning--dangerous-crosswinds-left--g1.png';\r\nimport icon1080 from './warning--dangerous-crosswinds-left--g2.png';\r\nimport icon1081 from './warning--dangerous-crosswinds-left--g4.png';\r\nimport icon1082 from './warning--dangerous-crosswinds-right--g1.png';\r\nimport icon1083 from './warning--dangerous-crosswinds-right--g2.png';\r\nimport icon1084 from './warning--dangerous-crosswinds-right--g3.png';\r\nimport icon1085 from './warning--dangerous-crosswinds-right--g4.png';\r\nimport icon1086 from './warning--dead-end--g1.png';\r\nimport icon1087 from './warning--dead-end--g2.png';\r\nimport icon1088 from './warning--dead-end--g3.png';\r\nimport icon1089 from './warning--dead-end-go-left--g1.png';\r\nimport icon1090 from './warning--dead-end-go-right--g1.png';\r\nimport icon1091 from './warning--descent-or-climbing-lanes-in-triple-lanes--g1.png';\r\nimport icon1092 from './warning--detour-ahead--g1.png';\r\nimport icon1093 from './warning--detour-or-construction-ahead--g1.png';\r\nimport icon1094 from './warning--dip--g1.png';\r\nimport icon1095 from './warning--dip--g2.png';\r\nimport icon1096 from './warning--disabled-persons-crossing--g1.png';\r\nimport icon1097 from './warning--disabled-persons-crossing--g2.png';\r\nimport icon1098 from './warning--divided-highway--g1.png';\r\nimport icon1099 from './warning--divided-highway--g2.png';\r\nimport icon1100 from './warning--divided-highway--g3.png';\r\nimport icon1101 from './warning--divided-highway--g4.png';\r\nimport icon1102 from './warning--divided-highway--g5.png';\r\nimport icon1103 from './warning--divided-highway--g6.png';\r\nimport icon1104 from './warning--divided-highway--g7.png';\r\nimport icon1105 from './warning--divided-highway--g8.png';\r\nimport icon1106 from './warning--divided-highway--g9.png';\r\nimport icon1107 from './warning--divided-highway-ends--g1.png';\r\nimport icon1108 from './warning--divided-highway-ends--g2.png';\r\nimport icon1109 from './warning--divided-highway-ends--g3.png';\r\nimport icon1110 from './warning--divided-highway-ends--g4.png';\r\nimport icon1111 from './warning--divided-highway-on-left--g1.png';\r\nimport icon1112 from './warning--divided-highway-on-left--g2.png';\r\nimport icon1113 from './warning--divided-highway-on-right--g1.png';\r\nimport icon1114 from './warning--divided-highway-on-right--g2.png';\r\nimport icon1115 from './warning--divided-highway-to-left--g1.png';\r\nimport icon1116 from './warning--divided-highway-to-right--g1.png';\r\nimport icon1117 from './warning--domestic-animals--g1.png';\r\nimport icon1118 from './warning--domestic-animals--g2.png';\r\nimport icon1119 from './warning--domestic-animals--g3.png';\r\nimport icon1120 from './warning--domestic-animals--g4.png';\r\nimport icon1121 from './warning--domestic-animals--g5.png';\r\nimport icon1122 from './warning--domestic-animals--g6.png';\r\nimport icon1123 from './warning--domestic-animals--g7.png';\r\nimport icon1124 from './warning--domestic-animals--g8.png';\r\nimport icon1125 from './warning--double-curve-first-left--g1.png';\r\nimport icon1126 from './warning--double-curve-first-left--g2.png';\r\nimport icon1127 from './warning--double-curve-first-right--g1.png';\r\nimport icon1128 from './warning--double-curve-first-right--g2.png';\r\nimport icon1129 from './warning--double-descent--g1.png';\r\nimport icon1130 from './warning--double-reverse-curve-left--g1.png';\r\nimport icon1131 from './warning--double-reverse-curve-left--g2.png';\r\nimport icon1132 from './warning--double-reverse-curve-right--g1.png';\r\nimport icon1133 from './warning--double-reverse-curve-right--g2.png';\r\nimport icon1134 from './warning--double-side-roads-left--g1.png';\r\nimport icon1135 from './warning--double-side-roads-left--g3.png';\r\nimport icon1136 from './warning--double-side-roads-right--g1.png';\r\nimport icon1137 from './warning--double-side-roads-right--g3.png';\r\nimport icon1138 from './warning--double-turn-first-left--g1.png';\r\nimport icon1139 from './warning--double-turn-first-right--g1.png';\r\nimport icon1140 from './warning--dual-lanes-all-directions-on-left--g1.png';\r\nimport icon1141 from './warning--dual-lanes-all-directions-on-right--g1.png';\r\nimport icon1142 from './warning--dual-lanes-go-straight-or-turn-left--g1.png';\r\nimport icon1143 from './warning--dual-lanes-go-straight-or-turn-right--g1.png';\r\nimport icon1144 from './warning--dual-lanes-left-turn--g1.png';\r\nimport icon1145 from './warning--dual-lanes-left-turn-or-go-straight--g1.png';\r\nimport icon1146 from './warning--dual-lanes-right-turn--g1.png';\r\nimport icon1147 from './warning--dual-lanes-right-turn-or-go-straight--g1.png';\r\nimport icon1148 from './warning--dual-lanes-turn-left--g1.png';\r\nimport icon1149 from './warning--dual-lanes-turn-left-or-right--g1.png';\r\nimport icon1150 from './warning--dual-lanes-turn-left-or-right--g2.png';\r\nimport icon1151 from './warning--dual-lanes-turn-left-or-right--g3.png';\r\nimport icon1152 from './warning--dual-lanes-turn-left-or-right--g4.png';\r\nimport icon1153 from './warning--dual-lanes-turn-right--g1.png';\r\nimport icon1154 from './warning--dual-path-cyclists-and-pedestrians--g1.png';\r\nimport icon1155 from './warning--electricity--g1.png';\r\nimport icon1156 from './warning--electricity--g2.png';\r\nimport icon1157 from './warning--elephant-crossing--g1.png';\r\nimport icon1158 from './warning--emergency-vehicles--g1.png';\r\nimport icon1159 from './warning--emu-crossing--g1.png';\r\nimport icon1160 from './warning--emu-crossing--g2.png';\r\nimport icon1161 from './warning--entering-roadway-merge--g1.png';\r\nimport icon1162 from './warning--entering-roadway-merge--g2.png';\r\nimport icon1163 from './warning--equestrians-crossing--g1.png';\r\nimport icon1164 from './warning--equestrians-crossing--g2.png';\r\nimport icon1165 from './warning--expressway--g1.png';\r\nimport icon1166 from './warning--falling-rocks-or-debris-left--g1.png';\r\nimport icon1167 from './warning--falling-rocks-or-debris-left--g2.png';\r\nimport icon1168 from './warning--falling-rocks-or-debris-left--g3.png';\r\nimport icon1169 from './warning--falling-rocks-or-debris-left--g4.png';\r\nimport icon1170 from './warning--falling-rocks-or-debris-right--g1.png';\r\nimport icon1171 from './warning--falling-rocks-or-debris-right--g2.png';\r\nimport icon1172 from './warning--falling-rocks-or-debris-right--g3.png';\r\nimport icon1173 from './warning--falling-rocks-or-debris-right--g4.png';\r\nimport icon1174 from './warning--ferry--g1.png';\r\nimport icon1175 from './warning--flaggers-in-road--g1.png';\r\nimport icon1176 from './warning--flaggers-in-road--g2.png';\r\nimport icon1177 from './warning--foggy-road--g1.png';\r\nimport icon1178 from './warning--foggy-road--g2.png';\r\nimport icon1179 from './warning--ford--g1.png';\r\nimport icon1180 from './warning--forest--g1.png';\r\nimport icon1181 from './warning--fresh-oil--g1.png';\r\nimport icon1182 from './warning--frog-crossing--g1.png';\r\nimport icon1183 from './warning--gate--g1.png';\r\nimport icon1184 from './warning--gate--g2.png';\r\nimport icon1185 from './warning--gate-left--g1.png';\r\nimport icon1186 from './warning--gate-right--g1.png';\r\nimport icon1187 from './warning--go-left--g1.png';\r\nimport icon1188 from './warning--go-right--g1.png';\r\nimport icon1189 from './warning--golf-carts-crossing--g1.png';\r\nimport icon1190 from './warning--gravel-road-surface--g1.png';\r\nimport icon1191 from './warning--hairpin-curve-left--g1.png';\r\nimport icon1192 from './warning--hairpin-curve-left--g2.png';\r\nimport icon1193 from './warning--hairpin-curve-left--g3.png';\r\nimport icon1194 from './warning--hairpin-curve-right--g1.png';\r\nimport icon1195 from './warning--hairpin-curve-right--g3.png';\r\nimport icon1196 from './warning--height-restriction--g2.png';\r\nimport icon1197 from './warning--height-restriction--g3.png';\r\nimport icon1198 from './warning--height-restriction--g4.png';\r\nimport icon1199 from './warning--height-restriction--g5.png';\r\nimport icon1200 from './warning--horizontal-alignment-left--g1.png';\r\nimport icon1201 from './warning--horizontal-alignment-left--g3.png';\r\nimport icon1202 from './warning--horizontal-alignment-right--g1.png';\r\nimport icon1203 from './warning--horizontal-alignment-right--g3.png';\r\nimport icon1204 from './warning--horse-crossing--g1.png';\r\nimport icon1205 from './warning--icy-road--g1.png';\r\nimport icon1206 from './warning--junction-with-a-side-road-acute-left--g1.png';\r\nimport icon1207 from './warning--junction-with-a-side-road-acute-left--g2.png';\r\nimport icon1208 from './warning--junction-with-a-side-road-acute-right--g1.png';\r\nimport icon1209 from './warning--junction-with-a-side-road-acute-right--g2.png';\r\nimport icon1210 from './warning--junction-with-a-side-road-perpendicular-left--g1.png';\r\nimport icon1211 from './warning--junction-with-a-side-road-perpendicular-left--g2.png';\r\nimport icon1212 from './warning--junction-with-a-side-road-perpendicular-left--g3.png';\r\nimport icon1213 from './warning--junction-with-a-side-road-perpendicular-left--g4.png';\r\nimport icon1214 from './warning--junction-with-a-side-road-perpendicular-right--g1.png';\r\nimport icon1215 from './warning--junction-with-a-side-road-perpendicular-right--g2.png';\r\nimport icon1216 from './warning--junction-with-a-side-road-perpendicular-right--g3.png';\r\nimport icon1217 from './warning--junction-with-a-side-road-perpendicular-right--g4.png';\r\nimport icon1218 from './warning--junction-with-merge-from-left--g1.png';\r\nimport icon1219 from './warning--junction-with-merge-from-right--g1.png';\r\nimport icon1220 from './warning--junction-with-side-roads--g1.png';\r\nimport icon1221 from './warning--kangaloo-crossing--g1.png';\r\nimport icon1222 from './warning--keep-distance--g1.png';\r\nimport icon1223 from './warning--keep-left--g1.png';\r\nimport icon1224 from './warning--keep-right--g1.png';\r\nimport icon1225 from './warning--kiwi-crossing--g1.png';\r\nimport icon1226 from './warning--kiwi-crossing--g2.png';\r\nimport icon1227 from './warning--koala-crossing--g1.png';\r\nimport icon1228 from './warning--koala-crossing--g2.png';\r\nimport icon1229 from './warning--koala-crossing--g3.png';\r\nimport icon1230 from './warning--koala-crossing--g4.png';\r\nimport icon1231 from './warning--lane-closed-in-dual-lanes-left--g1.png';\r\nimport icon1232 from './warning--lane-closed-in-dual-lanes-left--g2.png';\r\nimport icon1233 from './warning--lane-closed-in-dual-lanes-right--g1.png';\r\nimport icon1234 from './warning--lane-closed-in-dual-lanes-right--g2.png';\r\nimport icon1235 from './warning--length-restriction--g1.png';\r\nimport icon1236 from './warning--length-restriction--g2.png';\r\nimport icon1237 from './warning--light-rail-transit-vehicles--g1.png';\r\nimport icon1238 from './warning--limited-lighting-under-trees--g1.png';\r\nimport icon1239 from './warning--logging-vehicles--g1.png';\r\nimport icon1240 from './warning--loop-270-degree--g1.png';\r\nimport icon1241 from './warning--loop-pretzel--g1.png';\r\nimport icon1242 from './warning--loose-road-surface--g1.png';\r\nimport icon1243 from './warning--loose-road-surface--g2.png';\r\nimport icon1244 from './warning--loose-road-surface--g3.png';\r\nimport icon1245 from './warning--loose-road-surface--g4.png';\r\nimport icon1246 from './warning--low-flying-aircraft--g1.png';\r\nimport icon1247 from './warning--low-flying-aircraft--g2.png';\r\nimport icon1248 from './warning--low-flying-aircraft--g3.png';\r\nimport icon1249 from './warning--low-flying-aircraft--g4.png';\r\nimport icon1250 from './warning--low-flying-aircraft--g5.png';\r\nimport icon1251 from './warning--low-flying-aircraft--g6.png';\r\nimport icon1252 from './warning--low-flying-aircraft--g7.png';\r\nimport icon1253 from './warning--low-flying-aircraft--g8.png';\r\nimport icon1254 from './warning--low-ground-clearance--g1.png';\r\nimport icon1255 from './warning--low-ground-clearance--g2.png';\r\nimport icon1256 from './warning--low-ground-clearance--g3.png';\r\nimport icon1257 from './warning--monkey-crossing--g1.png';\r\nimport icon1258 from './warning--motorcycles-crossing--g1.png';\r\nimport icon1259 from './warning--narrow-bridge--g1.png';\r\nimport icon1260 from './warning--narrow-bridge--g2.png';\r\nimport icon1261 from './warning--narrow-bridge--g3.png';\r\nimport icon1262 from './warning--no-passing-zone--g1.png';\r\nimport icon1263 from './warning--no-passing-zone--g2.png';\r\nimport icon1264 from './warning--occupied-lanes--g1.png';\r\nimport icon1265 from './warning--offset-roads--g1.png';\r\nimport icon1266 from './warning--offset-roads--g2.png';\r\nimport icon1267 from './warning--offset-roads--g3.png';\r\nimport icon1268 from './warning--offset-roads--g4.png';\r\nimport icon1269 from './warning--opening-or-swing-bridge--g1.png';\r\nimport icon1270 from './warning--opening-or-swing-bridge--g2.png';\r\nimport icon1271 from './warning--other-danger--g1.png';\r\nimport icon1272 from './warning--other-danger--g2.png';\r\nimport icon1273 from './warning--other-danger--g3.png';\r\nimport icon1274 from './warning--panda-crossing--g1.png';\r\nimport icon1275 from './warning--pass-left-or-right--g1.png';\r\nimport icon1276 from './warning--pass-left-or-right--g2.png';\r\nimport icon1277 from './warning--pass-left-or-right--g3.png';\r\nimport icon1278 from './warning--pavement-ahead--g1.png';\r\nimport icon1279 from './warning--pavement-ends--g1.png';\r\nimport icon1280 from './warning--pavement-ends--g2.png';\r\nimport icon1281 from './warning--pavement-ends--g3.png';\r\nimport icon1282 from './warning--pavement-ends--g4.png';\r\nimport icon1283 from './warning--pavement-ends--g5.png';\r\nimport icon1284 from './warning--pedestrians-crossing--g1.png';\r\nimport icon1285 from './warning--pedestrians-crossing--g4.png';\r\nimport icon1286 from './warning--pedestrians-crossing--g5.png';\r\nimport icon1287 from './warning--pedestrians-crossing--g6.png';\r\nimport icon1288 from './warning--pedestrians-crossing--g7.png';\r\nimport icon1289 from './warning--pedestrians-crossing--g8.png';\r\nimport icon1290 from './warning--pedestrians-crossing--g9.png';\r\nimport icon1291 from './warning--pedestrians-crossing--g10.png';\r\nimport icon1292 from './warning--pedestrians-crossing--g11.png';\r\nimport icon1293 from './warning--pedestrians-crossing--g12.png';\r\nimport icon1294 from './warning--playground--g1.png';\r\nimport icon1295 from './warning--playground--g3.png';\r\nimport icon1296 from './warning--polar-bear-crossing--g1.png';\r\nimport icon1297 from './warning--quay-or-river-bank--g1.png';\r\nimport icon1298 from './warning--quay-or-river-bank--g2.png';\r\nimport icon1299 from './warning--quay-or-river-bank--g3.png';\r\nimport icon1300 from './warning--quay-or-river-bank--g4.png';\r\nimport icon1301 from './warning--rabbit-crossing--g1.png';\r\nimport icon1302 from './warning--raccoon-crossing--g1.png';\r\nimport icon1303 from './warning--railroad-crossing--g1.png';\r\nimport icon1304 from './warning--railroad-crossing--g2.png';\r\nimport icon1305 from './warning--railroad-crossing--g3.png';\r\nimport icon1306 from './warning--railroad-crossing--g4.png';\r\nimport icon1307 from './warning--railroad-crossing-with-barriers--g1.png';\r\nimport icon1308 from './warning--railroad-crossing-with-barriers--g2.png';\r\nimport icon1309 from './warning--railroad-crossing-with-barriers--g3.png';\r\nimport icon1310 from './warning--railroad-crossing-with-barriers--g4.png';\r\nimport icon1311 from './warning--railroad-crossing-with-barriers--g5.png';\r\nimport icon1312 from './warning--railroad-crossing-with-barriers--g6.png';\r\nimport icon1313 from './warning--railroad-crossing-with-barriers--g7.png';\r\nimport icon1314 from './warning--railroad-crossing-without-barriers--g1.png';\r\nimport icon1315 from './warning--railroad-crossing-without-barriers--g2.png';\r\nimport icon1316 from './warning--railroad-crossing-without-barriers--g3.png';\r\nimport icon1317 from './warning--railroad-crossing-without-barriers--g4.png';\r\nimport icon1318 from './warning--railroad-crossing-without-barriers--g5.png';\r\nimport icon1319 from './warning--railroad-crossing-without-barriers--g6.png';\r\nimport icon1320 from './warning--railroad-intersection--g1.png';\r\nimport icon1321 from './warning--railroad-intersection--g2.png';\r\nimport icon1322 from './warning--railroad-intersection--g3.png';\r\nimport icon1323 from './warning--railroad-intersection--g4.png';\r\nimport icon1324 from './warning--railroad-intersection--g5.png';\r\nimport icon1325 from './warning--railroad-intersection--g6.png';\r\nimport icon1326 from './warning--railroad-intersection--g7.png';\r\nimport icon1327 from './warning--railroad-intersection--g8.png';\r\nimport icon1328 from './warning--railroad-intersection--g9.png';\r\nimport icon1329 from './warning--ramp-closed--g1.png';\r\nimport icon1330 from './warning--reduced-maximum-speed-limit--g1.png';\r\nimport icon1331 from './warning--reserved-lane--g1.png';\r\nimport icon1332 from './warning--restricted-zone--g1.png';\r\nimport icon1333 from './warning--reversible-lanes--g1.png';\r\nimport icon1334 from './warning--reversible-lanes--g2.png';\r\nimport icon1335 from './warning--rickshaws-crossing--g1.png';\r\nimport icon1336 from './warning--road-blocks--g1.png';\r\nimport icon1337 from './warning--road-bump--g1.png';\r\nimport icon1338 from './warning--road-bump--g2.png';\r\nimport icon1339 from './warning--road-bump--g3.png';\r\nimport icon1340 from './warning--road-bump-with-speed-limit--g1.png';\r\nimport icon1341 from './warning--road-closed--g3.png';\r\nimport icon1342 from './warning--road-narrows--g1.png';\r\nimport icon1343 from './warning--road-narrows--g2.png';\r\nimport icon1344 from './warning--road-narrows-left--g1.png';\r\nimport icon1345 from './warning--road-narrows-left--g2.png';\r\nimport icon1346 from './warning--road-narrows-left-ahead--g1.png';\r\nimport icon1347 from './warning--road-narrows-right--g1.png';\r\nimport icon1348 from './warning--road-narrows-right--g2.png';\r\nimport icon1349 from './warning--road-narrows-right-ahead--g1.png';\r\nimport icon1350 from './warning--road-toll-ahead--g1.png';\r\nimport icon1351 from './warning--road-widens--g1.png';\r\nimport icon1352 from './warning--road-widens-left--g1.png';\r\nimport icon1353 from './warning--road-widens-right--g1.png';\r\nimport icon1354 from './warning--roadworks--g1.png';\r\nimport icon1355 from './warning--roadworks--g2.png';\r\nimport icon1356 from './warning--roadworks--g3.png';\r\nimport icon1357 from './warning--roadworks--g5.png';\r\nimport icon1358 from './warning--roadworks--g6.png';\r\nimport icon1359 from './warning--roadworks--g8.png';\r\nimport icon1360 from './warning--roadworks--g9.png';\r\nimport icon1361 from './warning--roadworks--g10.png';\r\nimport icon1362 from './warning--roadworks--g11.png';\r\nimport icon1363 from './warning--roadworks-go-left-or-straight--g1.png';\r\nimport icon1364 from './warning--roadworks-go-right-or-straight--g1.png';\r\nimport icon1365 from './warning--roundabout--g1.png';\r\nimport icon1366 from './warning--roundabout--g2.png';\r\nimport icon1367 from './warning--roundabout--g3.png';\r\nimport icon1368 from './warning--roundabout--g4.png';\r\nimport icon1369 from './warning--roundabout--g5.png';\r\nimport icon1370 from './warning--roundabout--g6.png';\r\nimport icon1371 from './warning--roundabout--g7.png';\r\nimport icon1372 from './warning--ruts--g1.png';\r\nimport icon1373 from './warning--sand--g1.png';\r\nimport icon1374 from './warning--sand-drift--g1.png';\r\nimport icon1375 from './warning--school-zone--g2.png';\r\nimport icon1376 from './warning--severe-weather--g1.png';\r\nimport icon1377 from './warning--shared-lane-motorcycles-bicycles--g1.png';\r\nimport icon1378 from './warning--sharp-turn--g1.png';\r\nimport icon1379 from './warning--single-reverse-curve--g1.png';\r\nimport icon1380 from './warning--skewed-t-roads-left--g1.png';\r\nimport icon1381 from './warning--skewed-t-roads-left--g2.png';\r\nimport icon1382 from './warning--skewed-t-roads-left--g3.png';\r\nimport icon1383 from './warning--skewed-t-roads-right--g1.png';\r\nimport icon1384 from './warning--skewed-t-roads-right--g2.png';\r\nimport icon1385 from './warning--skewed-t-roads-right--g3.png';\r\nimport icon1386 from './warning--skiers--g1.png';\r\nimport icon1387 from './warning--skiers--g2.png';\r\nimport icon1388 from './warning--skiers--g3.png';\r\nimport icon1389 from './warning--slippery-bicycles--g1.png';\r\nimport icon1390 from './warning--slippery-motorcycles--g1.png';\r\nimport icon1391 from './warning--slippery-motorcycles--g2.png';\r\nimport icon1392 from './warning--slippery-road-surface--g1.png';\r\nimport icon1393 from './warning--slippery-road-surface--g2.png';\r\nimport icon1394 from './warning--slow--g1.png';\r\nimport icon1395 from './warning--snow-tractors--g1.png';\r\nimport icon1396 from './warning--snowmobiles--g1.png';\r\nimport icon1397 from './warning--snowmobiles--g2.png';\r\nimport icon1398 from './warning--snowmobiles--g3.png';\r\nimport icon1399 from './warning--snowmobiles-and-others--g1.png';\r\nimport icon1400 from './warning--soft-road-surface--g1.png';\r\nimport icon1401 from './warning--soft-road-surface--g2.png';\r\nimport icon1402 from './warning--soft-shoulder--g1.png';\r\nimport icon1403 from './warning--soft-shoulder--g2.png';\r\nimport icon1404 from './warning--soft-shoulder--g3.png';\r\nimport icon1405 from './warning--soft-shoulder--g4.png';\r\nimport icon1406 from './warning--speed-camera--g1.png';\r\nimport icon1407 from './warning--steep-ascent--g1.png';\r\nimport icon1408 from './warning--steep-ascent--g2.png';\r\nimport icon1409 from './warning--steep-ascent--g3.png';\r\nimport icon1410 from './warning--steep-ascent--g4.png';\r\nimport icon1411 from './warning--steep-ascent-and-descent--g1.png';\r\nimport icon1412 from './warning--steep-descent--g1.png';\r\nimport icon1413 from './warning--steep-descent--g2.png';\r\nimport icon1414 from './warning--steep-descent--g3.png';\r\nimport icon1415 from './warning--steep-descent--g4.png';\r\nimport icon1416 from './warning--steep-descent--g5.png';\r\nimport icon1417 from './warning--steep-descent--g6.png';\r\nimport icon1418 from './warning--stop-ahead--g1.png';\r\nimport icon1419 from './warning--stop-ahead--g3.png';\r\nimport icon1420 from './warning--stop-ahead--g4.png';\r\nimport icon1421 from './warning--stop-ahead--g5.png';\r\nimport icon1422 from './warning--stop-ahead--g6.png';\r\nimport icon1423 from './warning--t-roads--g1.png';\r\nimport icon1424 from './warning--t-roads--g2.png';\r\nimport icon1425 from './warning--tanks-crossing--g1.png';\r\nimport icon1426 from './warning--tanks-crossing--g2.png';\r\nimport icon1427 from './warning--texts--g1.png';\r\nimport icon1428 from './warning--texts--g2.png';\r\nimport icon1429 from './warning--texts--g3.png';\r\nimport icon1430 from './warning--towing--g1.png';\r\nimport icon1431 from './warning--tractors--g1.png';\r\nimport icon1432 from './warning--tractors--g2.png';\r\nimport icon1433 from './warning--tractors--g3.png';\r\nimport icon1434 from './warning--tractors--g4.png';\r\nimport icon1435 from './warning--tractors--g5.png';\r\nimport icon1436 from './warning--tractors--g6.png';\r\nimport icon1437 from './warning--tractors--g7.png';\r\nimport icon1438 from './warning--traffic-merges-at-signalized-intersections--g1.png';\r\nimport icon1439 from './warning--traffic-merges-left--g1.png';\r\nimport icon1440 from './warning--traffic-merges-left--g2.png';\r\nimport icon1441 from './warning--traffic-merges-left--g3.png';\r\nimport icon1442 from './warning--traffic-merges-left--g4.png';\r\nimport icon1443 from './warning--traffic-merges-left-and-right--g1.png';\r\nimport icon1444 from './warning--traffic-merges-left-buses--g1.png';\r\nimport icon1445 from './warning--traffic-merges-right--g1.png';\r\nimport icon1446 from './warning--traffic-merges-right--g2.png';\r\nimport icon1447 from './warning--traffic-merges-right--g3.png';\r\nimport icon1448 from './warning--traffic-merges-right-buses--g1.png';\r\nimport icon1449 from './warning--traffic-queues-likely--g1.png';\r\nimport icon1450 from './warning--traffic-queues-likely--g2.png';\r\nimport icon1451 from './warning--traffic-queues-likely--g3.png';\r\nimport icon1452 from './warning--traffic-queues-likely--g4.png';\r\nimport icon1453 from './warning--traffic-queues-likely--g5.png';\r\nimport icon1454 from './warning--traffic-signals--g1.png';\r\nimport icon1455 from './warning--traffic-signals--g2.png';\r\nimport icon1456 from './warning--traffic-signals--g3.png';\r\nimport icon1457 from './warning--traffic-signals--g4.png';\r\nimport icon1458 from './warning--traffic-signals--g5.png';\r\nimport icon1459 from './warning--traffic-signals--g6.png';\r\nimport icon1460 from './warning--traffic-slow--g1.png';\r\nimport icon1461 from './warning--trail-crossing--g1.png';\r\nimport icon1462 from './warning--trail-crossing--g2.png';\r\nimport icon1463 from './warning--trail-crossing--g3.png';\r\nimport icon1464 from './warning--trail-crossing--g4.png';\r\nimport icon1465 from './warning--trail-crossing--g5.png';\r\nimport icon1466 from './warning--trail-crossing--g6.png';\r\nimport icon1467 from './warning--trams-crossing--g1.png';\r\nimport icon1468 from './warning--trams-crossing--g2.png';\r\nimport icon1469 from './warning--triple-curve-left--g1.png';\r\nimport icon1470 from './warning--triple-curve-right--g1.png';\r\nimport icon1471 from './warning--triple-lanes-left-turn--g1.png';\r\nimport icon1472 from './warning--triple-lanes-left-turn-or-go-straight--g1.png';\r\nimport icon1473 from './warning--triple-lanes-right-turn--g1.png';\r\nimport icon1474 from './warning--triple-lanes-right-turn-or-go-straight--g1.png';\r\nimport icon1475 from './warning--triple-lanes-with-directions--g1.png';\r\nimport icon1476 from './warning--triple-reverse-curve-left--g1.png';\r\nimport icon1477 from './warning--triple-reverse-curve-right--g1.png';\r\nimport icon1478 from './warning--trucks-crossing--g1.png';\r\nimport icon1479 from './warning--trucks-crossing--g2.png';\r\nimport icon1480 from './warning--trucks-rollover--g1.png';\r\nimport icon1481 from './warning--trucks-rollover--g2.png';\r\nimport icon1482 from './warning--trucks-rollover--g3.png';\r\nimport icon1483 from './warning--trucks-rollover--g4.png';\r\nimport icon1484 from './warning--trucks-rollover--g5.png';\r\nimport icon1485 from './warning--tunnel--g1.png';\r\nimport icon1486 from './warning--tunnel--g2.png';\r\nimport icon1487 from './warning--tunnel--g3.png';\r\nimport icon1488 from './warning--tunnel--g4.png';\r\nimport icon1489 from './warning--tunnel--g5.png';\r\nimport icon1490 from './warning--tunnel--g6.png';\r\nimport icon1491 from './warning--tunnel--g7.png';\r\nimport icon1492 from './warning--turn-left--g1.png';\r\nimport icon1493 from './warning--turn-left--g2.png';\r\nimport icon1494 from './warning--turn-left--g3.png';\r\nimport icon1495 from './warning--turn-left-or-right--g1.png';\r\nimport icon1496 from './warning--turn-right--g1.png';\r\nimport icon1497 from './warning--turn-right--g2.png';\r\nimport icon1498 from './warning--turn-right--g3.png';\r\nimport icon1499 from './warning--two-way-traffic--g1.png';\r\nimport icon1500 from './warning--two-way-traffic--g2.png';\r\nimport icon1501 from './warning--two-way-traffic--g3.png';\r\nimport icon1502 from './warning--two-way-traffic--g4.png';\r\nimport icon1503 from './warning--two-way-traffic--g5.png';\r\nimport icon1504 from './warning--two-way-traffic--g6.png';\r\nimport icon1505 from './warning--u-turn--g1.png';\r\nimport icon1506 from './warning--u-turn--g2.png';\r\nimport icon1507 from './warning--uneven-road--g1.png';\r\nimport icon1508 from './warning--uneven-road--g2.png';\r\nimport icon1509 from './warning--uneven-roads-ahead--g1.png';\r\nimport icon1510 from './warning--vehicles-and-others--g1.png';\r\nimport icon1511 from './warning--vehicles-crossing--g1.png';\r\nimport icon1512 from './warning--village--g1.png';\r\nimport icon1513 from './warning--weight-limit--g5.png';\r\nimport icon1514 from './warning--weight-limit-per-tandem-axle--g1.png';\r\nimport icon1515 from './warning--width-restriction--g1.png';\r\nimport icon1516 from './warning--width-restriction--g2.png';\r\nimport icon1517 from './warning--width-restriction--g3.png';\r\nimport icon1518 from './warning--width-restriction--g4.png';\r\nimport icon1519 from './warning--wild-animals--g1.png';\r\nimport icon1520 from './warning--wild-animals--g2.png';\r\nimport icon1521 from './warning--wild-animals--g3.png';\r\nimport icon1522 from './warning--wild-animals--g4.png';\r\nimport icon1523 from './warning--wild-animals--g5.png';\r\nimport icon1524 from './warning--wild-animals--g6.png';\r\nimport icon1525 from './warning--wild-animals--g7.png';\r\nimport icon1526 from './warning--wild-animals--g8.png';\r\nimport icon1527 from './warning--wind--g1.png';\r\nimport icon1528 from './warning--winding-road--g1.png';\r\nimport icon1529 from './warning--winding-road-first-left--g1.png';\r\nimport icon1530 from './warning--winding-road-first-left--g2.png';\r\nimport icon1531 from './warning--winding-road-first-left--g3.png';\r\nimport icon1532 from './warning--winding-road-first-right--g1.png';\r\nimport icon1533 from './warning--winding-road-first-right--g2.png';\r\nimport icon1534 from './warning--winding-road-first-right--g3.png';\r\nimport icon1535 from './warning--winding-road-first-right--g4.png';\r\nimport icon1536 from './warning--winding-road-to-left--g1.png';\r\nimport icon1537 from './warning--winding-road-to-right--g1.png';\r\nimport icon1538 from './warning--wombat-crossing--g1.png';\r\nimport icon1539 from './warning--y-roads--g1.png';\r\nimport icon1540 from './warning--y-roads--g2.png';\r\nimport icon1541 from './warning--yield-ahead--g1.png';\r\nimport icon1542 from './warning--yield-ahead--g3.png';\r\n\r\nconst textures = {\r\n 'complementary--accident-area--g1': icon0,\r\n 'complementary--accident-area--g2': icon1,\r\n 'complementary--accident-area--g3': icon2,\r\n 'complementary--accident-area--g4': icon3,\r\n 'complementary--advisory-exit-or-ramp-speed--g1': icon4,\r\n 'complementary--bicycles--g1': icon5,\r\n 'complementary--bicycles-and-pedestrians-detour--g1': icon6,\r\n 'complementary--bicycles-or-pedestrians-detour--g1': icon7,\r\n 'complementary--bicycles-turn-right--g1': icon8,\r\n 'complementary--bike-route--g1': icon9,\r\n 'complementary--bike-route--g3': icon10,\r\n 'complementary--both-directions--g1': icon11,\r\n 'complementary--both-directions--g2': icon12,\r\n 'complementary--buses--g1': icon13,\r\n 'complementary--buses-and-trucks--g1': icon14,\r\n 'complementary--camera--g1': icon15,\r\n 'complementary--camera--g2': icon16,\r\n 'complementary--camera--g3': icon17,\r\n 'complementary--camera--g4': icon18,\r\n 'complementary--camera--g5': icon19,\r\n 'complementary--caravan-trailers--g2': icon20,\r\n 'complementary--caravan-trailers--g3': icon21,\r\n 'complementary--caravans--g2': icon22,\r\n 'complementary--carts--g1': icon23,\r\n 'complementary--chevron-left--g1': icon24,\r\n 'complementary--chevron-left--g2': icon25,\r\n 'complementary--chevron-left--g3': icon26,\r\n 'complementary--chevron-left--g4': icon27,\r\n 'complementary--chevron-left--g5': icon28,\r\n 'complementary--chevron-right--g1': icon29,\r\n 'complementary--chevron-right--g2': icon30,\r\n 'complementary--chevron-right--g3': icon31,\r\n 'complementary--chevron-right--g4': icon32,\r\n 'complementary--chevron-right--g5': icon33,\r\n 'complementary--dangerous-or-pollutant-good--g1': icon34,\r\n 'complementary--dead-end--g1': icon35,\r\n 'complementary--detour--g1': icon36,\r\n 'complementary--disabled-persons--g1': icon37,\r\n 'complementary--distance--g1': icon38,\r\n 'complementary--distance--g2': icon39,\r\n 'complementary--distance--g3': icon40,\r\n 'complementary--end-of-road-works--g1': icon41,\r\n 'complementary--except-bicycles--g1': icon42,\r\n 'complementary--except-bicycles--g2': icon43,\r\n 'complementary--except-buses--g1': icon44,\r\n 'complementary--except-carts--g1': icon45,\r\n 'complementary--except-motorcycles--g1': icon46,\r\n 'complementary--except-motorcycles--g2': icon47,\r\n 'complementary--except-polluting-level-green--g1': icon48,\r\n 'complementary--except-polluting-level-green-yellow--g1': icon49,\r\n 'complementary--except-polluting-level-green-yellow-red--g1': icon50,\r\n 'complementary--except-tractors--g1': icon51,\r\n 'complementary--except-tractors--g2': icon52,\r\n 'complementary--except-trailers--g1': icon53,\r\n 'complementary--except-trailers--g2': icon54,\r\n 'complementary--except-trains--g1': icon55,\r\n 'complementary--except-trams--g1': icon56,\r\n 'complementary--except-trucks--g1': icon57,\r\n 'complementary--except-vehicles--g1': icon58,\r\n 'complementary--except-vehicles--g2': icon59,\r\n 'complementary--go-left--g1': icon60,\r\n 'complementary--go-right--g1': icon61,\r\n 'complementary--go-straight-or-turn-left--g1': icon62,\r\n 'complementary--go-straight-or-turn-right--g1': icon63,\r\n 'complementary--height-limit--g1': icon64,\r\n 'complementary--height-limit--g2': icon65,\r\n 'complementary--including-bicycles-and-motorcycles--g1': icon66,\r\n 'complementary--including-buses-vehicles--g1': icon67,\r\n 'complementary--keep-left--g1': icon68,\r\n 'complementary--keep-right--g1': icon69,\r\n 'complementary--lane-control--g1': icon70,\r\n 'complementary--lane-control--g2': icon71,\r\n 'complementary--lane-control--g3': icon72,\r\n 'complementary--maximum-speed-limit-10--g1': icon73,\r\n 'complementary--maximum-speed-limit-15--g1': icon74,\r\n 'complementary--maximum-speed-limit-20--g1': icon75,\r\n 'complementary--maximum-speed-limit-25--g1': icon76,\r\n 'complementary--maximum-speed-limit-30--g1': icon77,\r\n 'complementary--maximum-speed-limit-35--g1': icon78,\r\n 'complementary--maximum-speed-limit-40--g1': icon79,\r\n 'complementary--maximum-speed-limit-45--g1': icon80,\r\n 'complementary--maximum-speed-limit-50--g1': icon81,\r\n 'complementary--maximum-speed-limit-55--g1': icon82,\r\n 'complementary--maximum-speed-limit-60--g1': icon83,\r\n 'complementary--maximum-speed-limit-65--g1': icon84,\r\n 'complementary--maximum-speed-limit-70--g1': icon85,\r\n 'complementary--maximum-speed-limit-75--g1': icon86,\r\n 'complementary--maximum-speed-limit-80--g1': icon87,\r\n 'complementary--maximum-speed-limit-85--g1': icon88,\r\n 'complementary--maximum-speed-limit-90--g1': icon89,\r\n 'complementary--maximum-speed-limit-95--g1': icon90,\r\n 'complementary--motorcycles--g1': icon91,\r\n 'complementary--motorcycles--g2': icon92,\r\n 'complementary--motorcycles--g3': icon93,\r\n 'complementary--motorcycles--g4': icon94,\r\n 'complementary--obstacle-delineator--g1': icon95,\r\n 'complementary--obstacle-delineator--g2': icon96,\r\n 'complementary--obstacle-delineator--g3': icon97,\r\n 'complementary--one-direction-left--g1': icon98,\r\n 'complementary--one-direction-right--g1': icon99,\r\n 'complementary--pass-left--g1': icon100,\r\n 'complementary--pass-right--g1': icon101,\r\n 'complementary--pedestrians-and-bicycles--g1': icon102,\r\n 'complementary--pedestrians-left--g1': icon103,\r\n 'complementary--pedestrians-right--g1': icon104,\r\n 'complementary--photo-enforced--g1': icon105,\r\n 'complementary--playground--g1': icon106,\r\n 'complementary--priority-route-at-intersection--g1': icon107,\r\n 'complementary--priority-route-at-intersection--g2': icon108,\r\n 'complementary--priority-route-at-intersection--g3': icon109,\r\n 'complementary--priority-route-at-intersection--g4': icon110,\r\n 'complementary--priority-route-at-intersection--g5': icon111,\r\n 'complementary--priority-route-at-intersection--g6': icon112,\r\n 'complementary--railroad--g1': icon113,\r\n 'complementary--railroad--g2': icon114,\r\n 'complementary--railroad--g3': icon115,\r\n 'complementary--restriction-in-both-directions--g1': icon116,\r\n 'complementary--roundabout-go-left--g1': icon117,\r\n 'complementary--roundabout-go-right--g1': icon118,\r\n 'complementary--roundabout-go-straight--g1': icon119,\r\n 'complementary--slippery-for-caravan-trailers--g1': icon120,\r\n 'complementary--snow--g2': icon121,\r\n 'complementary--snow--g4': icon122,\r\n 'complementary--snow--g5': icon123,\r\n 'complementary--snowmobiles--g1': icon124,\r\n 'complementary--soft-shoulder--g1': icon125,\r\n 'complementary--soft-shoulder--g2': icon126,\r\n 'complementary--steep-ascent--g1': icon127,\r\n 'complementary--steep-descent--g1': icon128,\r\n 'complementary--time-restrictions--g1': icon129,\r\n 'complementary--time-restrictions--g3': icon130,\r\n 'complementary--tow-away-zone--g1': icon131,\r\n 'complementary--tow-away-zone--g3': icon132,\r\n 'complementary--tractors--g1': icon133,\r\n 'complementary--traffic-queues--g1': icon134,\r\n 'complementary--trailers--g1': icon135,\r\n 'complementary--trailers--g2': icon136,\r\n 'complementary--trailers--g3': icon137,\r\n 'complementary--trailers--g4': icon138,\r\n 'complementary--trains--g1': icon139,\r\n 'complementary--trams--g1': icon140,\r\n 'complementary--trees--g1': icon141,\r\n 'complementary--trucks--g1': icon142,\r\n 'complementary--trucks--g2': icon143,\r\n 'complementary--trucks--g3': icon144,\r\n 'complementary--trucks-and-trailers--g1': icon145,\r\n 'complementary--trucks-buses-trailers--g1': icon146,\r\n 'complementary--trucks-go-left--g1': icon147,\r\n 'complementary--trucks-go-left-ahead--g1': icon148,\r\n 'complementary--trucks-go-right--g1': icon149,\r\n 'complementary--trucks-go-right-ahead--g1': icon150,\r\n 'complementary--trucks-go-straight--g1': icon151,\r\n 'complementary--trucks-turn-left--g1': icon152,\r\n 'complementary--trucks-turn-right--g1': icon153,\r\n 'complementary--turn-left--g1': icon154,\r\n 'complementary--turn-left--g2': icon155,\r\n 'complementary--turn-right--g1': icon156,\r\n 'complementary--turn-right--g2': icon157,\r\n 'complementary--two-way-traffic--g1': icon158,\r\n 'complementary--two-way-traffic--g2': icon159,\r\n 'complementary--two-way-traffic--g3': icon160,\r\n 'complementary--two-way-traffic--g4': icon161,\r\n 'complementary--two-way-traffic--g5': icon162,\r\n 'complementary--vehicles--g1': icon163,\r\n 'complementary--vehicles--g2': icon164,\r\n 'complementary--vehicles-or-buses--g1': icon165,\r\n 'complementary--weekends-or-holidays--g1': icon166,\r\n 'complementary--weight-limit--g1': icon167,\r\n 'complementary--when-foggy--g1': icon168,\r\n 'complementary--when-rainy--g1': icon169,\r\n 'complementary--when-rainy--g2': icon170,\r\n 'complementary--when-rainy--g3': icon171,\r\n 'complementary--when-snowy--g1': icon172,\r\n 'complementary--when-snowy--g2': icon173,\r\n 'complementary--when-snowy-or-rainy--g1': icon174,\r\n 'complementary--when-snowy-or-rainy--g2': icon175,\r\n 'complementary--when-wet--g1': icon176,\r\n 'complementary--width-limit--g1': icon177,\r\n 'complementary--working-days--g1': icon178,\r\n 'information--airport--g1': icon179,\r\n 'information--airport--g2': icon180,\r\n 'information--bicycle-lane--g1': icon181,\r\n 'information--bicycles-both-ways--g1': icon182,\r\n 'information--bicycles-crossing--g1': icon183,\r\n 'information--bicycles-crossing--g2': icon184,\r\n 'information--bicycles-crossing--g3': icon185,\r\n 'information--bike-route--g1': icon186,\r\n 'information--bike-route--g2': icon187,\r\n 'information--built-up-area--g1': icon188,\r\n 'information--built-up-area--g2': icon189,\r\n 'information--bus-lane-straight--g1': icon190,\r\n 'information--bus-stop--g1': icon191,\r\n 'information--bus-stop--g2': icon192,\r\n 'information--camera--g1': icon193,\r\n 'information--camera--g2': icon194,\r\n 'information--camera--g3': icon195,\r\n 'information--camp--g1': icon196,\r\n 'information--camp--g2': icon197,\r\n 'information--car-pool-lane--g1': icon198,\r\n 'information--caravan-parking--g1': icon199,\r\n 'information--caravan-trailer-parking--g1': icon200,\r\n 'information--cargo-loading-zone--g1': icon201,\r\n 'information--central-lane--g1': icon202,\r\n 'information--charging-station--g1': icon203,\r\n 'information--children--g1': icon204,\r\n 'information--children--g2': icon205,\r\n 'information--children-crossing--g5': icon206,\r\n 'information--cycling-two-abreast-permitted--g1': icon207,\r\n 'information--dead-end--g1': icon208,\r\n 'information--dead-end--g2': icon209,\r\n 'information--dead-end--g3': icon210,\r\n 'information--dead-end--g4': icon211,\r\n 'information--dead-end-except-bicycles--g1': icon212,\r\n 'information--dead-end-except-bicycles-and-pedestrians--g1': icon213,\r\n 'information--dead-end-except-bicycles-and-pedestrians--g2': icon214,\r\n 'information--dead-end-left--g1': icon215,\r\n 'information--dead-end-left--g2': icon216,\r\n 'information--dead-end-right--g1': icon217,\r\n 'information--dead-end-right--g2': icon218,\r\n 'information--dead-end-right--g3': icon219,\r\n 'information--directions--g1': icon220,\r\n 'information--disabled-persons--g1': icon221,\r\n 'information--disabled-persons--g2': icon222,\r\n 'information--disabled-persons--g3': icon223,\r\n 'information--emergency-facility--g1': icon224,\r\n 'information--end-of-advisory-maximum-speed-limit-20--g1': icon225,\r\n 'information--end-of-advisory-maximum-speed-limit-40--g1': icon226,\r\n 'information--end-of-advisory-maximum-speed-limit-60--g1': icon227,\r\n 'information--end-of-advisory-maximum-speed-limit-70--g1': icon228,\r\n 'information--end-of-advisory-maximum-speed-limit-80--g1': icon229,\r\n 'information--end-of-advisory-maximum-speed-limit-90--g1': icon230,\r\n 'information--end-of-bicycle-lane--g1': icon231,\r\n 'information--end-of-built-up-area--g1': icon232,\r\n 'information--end-of-built-up-area--g2': icon233,\r\n 'information--end-of-built-up-area--g3': icon234,\r\n 'information--end-of-built-up-area--g4': icon235,\r\n 'information--end-of-car-pool-lane--g1': icon236,\r\n 'information--end-of-limited-access-road--g1': icon237,\r\n 'information--end-of-living-street--g1': icon238,\r\n 'information--end-of-living-street--g2': icon239,\r\n 'information--end-of-minimum-speed-10--g1': icon240,\r\n 'information--end-of-minimum-speed-20--g1': icon241,\r\n 'information--end-of-minimum-speed-25--g1': icon242,\r\n 'information--end-of-minimum-speed-30--g1': icon243,\r\n 'information--end-of-minimum-speed-35--g1': icon244,\r\n 'information--end-of-minimum-speed-40--g1': icon245,\r\n 'information--end-of-minimum-speed-50--g1': icon246,\r\n 'information--end-of-minimum-speed-60--g1': icon247,\r\n 'information--end-of-minimum-speed-70--g1': icon248,\r\n 'information--end-of-minimum-speed-75--g1': icon249,\r\n 'information--end-of-minimum-speed-80--g1': icon250,\r\n 'information--end-of-minimum-speed-90--g1': icon251,\r\n 'information--end-of-minimum-speed-100--g1': icon252,\r\n 'information--end-of-minimum-speed-110--g1': icon253,\r\n 'information--end-of-minimum-speed-120--g1': icon254,\r\n 'information--end-of-minimum-speed-130--g1': icon255,\r\n 'information--end-of-motorway--g1': icon256,\r\n 'information--end-of-overtaking-permitted-heavy-good-vehicles--g1': icon257,\r\n 'information--end-of-road-works--g1': icon258,\r\n 'information--end-of-tunnel--g1': icon259,\r\n 'information--end-of-tunnel--g2': icon260,\r\n 'information--end-of-two-way-traffic--g1': icon261,\r\n 'information--equestrians-permitted--g1': icon262,\r\n 'information--exit-ahead--g1': icon263,\r\n 'information--exit-ahead--g2': icon264,\r\n 'information--exit-ahead--g3': icon265,\r\n 'information--flight-port--g1': icon266,\r\n 'information--food--g1': icon267,\r\n 'information--food--g2': icon268,\r\n 'information--gas-station--g1': icon269,\r\n 'information--gas-station--g2': icon270,\r\n 'information--gas-station--g3': icon271,\r\n 'information--general-speed-limit-at-city-border--g1': icon272,\r\n 'information--go-left--g1': icon273,\r\n 'information--go-right--g1': icon274,\r\n 'information--go-straight--g1': icon275,\r\n 'information--go-straight-or-left--g1': icon276,\r\n 'information--go-straight-or-right--g1': icon277,\r\n 'information--go-straight-or-turn-left--g1': icon278,\r\n 'information--go-straight-or-turn-right--g1': icon279,\r\n 'information--hazardous-goods-vehicles-lane--g1': icon280,\r\n 'information--height-limit--g1': icon281,\r\n 'information--height-limit--g2': icon282,\r\n 'information--highway-directions--g1': icon283,\r\n 'information--highway-exit--g1': icon284,\r\n 'information--highway-interchange--g1': icon285,\r\n 'information--highway-interstate-route--g1': icon286,\r\n 'information--highway-interstate-route--g2': icon287,\r\n 'information--highway-preferential-lane--g1': icon288,\r\n 'information--highway-preferential-lane--g2': icon289,\r\n 'information--highway-reference-location--g1': icon290,\r\n 'information--highway-reference-location--g2': icon291,\r\n 'information--hiking--g1': icon292,\r\n 'information--hospital--g1': icon293,\r\n 'information--hurricane-evacuation-route--g1': icon294,\r\n 'information--interstate-route--g1': icon295,\r\n 'information--lane-control-intersections--g1': icon296,\r\n 'information--lane-control-left-turn--g1': icon297,\r\n 'information--lane-control-multiple-lanes--g1': icon298,\r\n 'information--lane-control-multiple-lanes--g2': icon299,\r\n 'information--lane-control-right-turn--g1': icon300,\r\n 'information--limited-access-road--g1': icon301,\r\n 'information--litter-container--g1': icon302,\r\n 'information--living-street--g1': icon303,\r\n 'information--living-street--g2': icon304,\r\n 'information--living-street--g3': icon305,\r\n 'information--lodging--g1': icon306,\r\n 'information--lodging--g2': icon307,\r\n 'information--minimum-speed-10--g1': icon308,\r\n 'information--minimum-speed-20--g1': icon309,\r\n 'information--minimum-speed-25--g1': icon310,\r\n 'information--minimum-speed-30--g1': icon311,\r\n 'information--minimum-speed-35--g1': icon312,\r\n 'information--minimum-speed-40--g1': icon313,\r\n 'information--minimum-speed-50--g1': icon314,\r\n 'information--minimum-speed-60--g1': icon315,\r\n 'information--minimum-speed-70--g1': icon316,\r\n 'information--minimum-speed-75--g1': icon317,\r\n 'information--minimum-speed-80--g1': icon318,\r\n 'information--minimum-speed-90--g1': icon319,\r\n 'information--minimum-speed-100--g1': icon320,\r\n 'information--minimum-speed-110--g1': icon321,\r\n 'information--minimum-speed-120--g1': icon322,\r\n 'information--minimum-speed-130--g1': icon323,\r\n 'information--motorway--g1': icon324,\r\n 'information--motorway-exit-ahead--g1': icon325,\r\n 'information--motorway-exit-ahead--g2': icon326,\r\n 'information--motorway-exit-ahead--g3': icon327,\r\n 'information--overtaking-allowed-heavy-good-vehicles--g1': icon328,\r\n 'information--parallel-parking--g1': icon329,\r\n 'information--park-and-ride--g1': icon330,\r\n 'information--park-and-ride--g2': icon331,\r\n 'information--parking--g1': icon332,\r\n 'information--parking--g2': icon333,\r\n 'information--parking--g3': icon334,\r\n 'information--parking--g4': icon335,\r\n 'information--parking--g5': icon336,\r\n 'information--parking--g6': icon337,\r\n 'information--parking-area--g1': icon338,\r\n 'information--parking-with-restrictions--g1': icon339,\r\n 'information--pass-on-either-side--g1': icon340,\r\n 'information--passenger-loading-zone--g1': icon341,\r\n 'information--pedestrians-crossing--g1': icon342,\r\n 'information--pedestrians-crossing--g2': icon343,\r\n 'information--pedestrians-crossing--g3': icon344,\r\n 'information--pedestrians-only--g4': icon345,\r\n 'information--pedestrians-permitted--g1': icon346,\r\n 'information--perpendicular-parking--g1': icon347,\r\n 'information--picnic-site--g1': icon348,\r\n 'information--playground--g1': icon349,\r\n 'information--recreational-vehicle-sanitary-station--g1': icon350,\r\n 'information--recycle-collection-center--g1': icon351,\r\n 'information--rest-area--g1': icon352,\r\n 'information--road-bump--g1': icon353,\r\n 'information--road-skating--g1': icon354,\r\n 'information--safety-zone--g1': icon355,\r\n 'information--safety-zone--g2': icon356,\r\n 'information--safety-zone--g3': icon357,\r\n 'information--shared-path-vehicles-and-motorcycles--g1': icon358,\r\n 'information--stairs--g1': icon359,\r\n 'information--stairs--g2': icon360,\r\n 'information--stairs--g3': icon361,\r\n 'information--stairs--g4': icon362,\r\n 'information--stop-line--g1': icon363,\r\n 'information--stop-permitted--g1': icon364,\r\n 'information--street-name-one-line--g1': icon365,\r\n 'information--street-name-three-lines--g1': icon366,\r\n 'information--street-name-two-lines--g1': icon367,\r\n 'information--subway--g1': icon368,\r\n 'information--telephone--g1': icon369,\r\n 'information--telephone--g2': icon370,\r\n 'information--telephone-device-for-the-deaf--g1': icon371,\r\n 'information--toll-station--g1': icon372,\r\n 'information--tourism-information--g1': icon373,\r\n 'information--tourist-attraction--g1': icon374,\r\n 'information--traffic-merges-left--g1': icon375,\r\n 'information--traffic-merges-right--g1': icon376,\r\n 'information--trail-crossing--g1': icon377,\r\n 'information--trail-crossing--g2': icon378,\r\n 'information--trail-crossing--g3': icon379,\r\n 'information--trailer-camping--g1': icon380,\r\n 'information--train-or-light-rail-station--g1': icon381,\r\n 'information--tram-bus-stop--g1': icon382,\r\n 'information--tram-bus-stop--g2': icon383,\r\n 'information--trams-crossing--g1': icon384,\r\n 'information--truck-lane-left--g1': icon385,\r\n 'information--truck-parking--g1': icon386,\r\n 'information--truck-trailer-lane-right--g1': icon387,\r\n 'information--truck-trailer-lane-straight--g1': icon388,\r\n 'information--trucks-both-ways--g1': icon389,\r\n 'information--trucks-only--g1': icon390,\r\n 'information--tsunami-evacuation_route--g1': icon391,\r\n 'information--tunnel--g1': icon392,\r\n 'information--tunnel--g2': icon393,\r\n 'information--tunnel--g3': icon394,\r\n 'information--tunnel-ahead--g1': icon395,\r\n 'information--turn-left--g1': icon396,\r\n 'information--turn-left-ahead--g1': icon397,\r\n 'information--turn-right--g1': icon398,\r\n 'information--turn-right-ahead--g1': icon399,\r\n 'information--urban-area--g1': icon400,\r\n 'information--vehicles-on-rails--g1': icon401,\r\n 'information--water-protection-zone--g1': icon402,\r\n 'information--weight-and-height-limit--g1': icon403,\r\n 'information--weight-limit--g1': icon404,\r\n 'information--wireless-internet--g1': icon405,\r\n 'regulatory--advisory-maximum-speed-limit--g1': icon406,\r\n 'regulatory--all-directions-permitted--g1': icon407,\r\n 'regulatory--all-way--g1': icon408,\r\n 'regulatory--atvs-permitted--g1': icon409,\r\n 'regulatory--axle-limit--g1': icon410,\r\n 'regulatory--axle-limit--g2': icon411,\r\n 'regulatory--bicycle-lane-left--g1': icon412,\r\n 'regulatory--bicycle-parking--g1': icon413,\r\n 'regulatory--bicycles-and-buses-only--g1': icon414,\r\n 'regulatory--bicycles-only--g1': icon415,\r\n 'regulatory--bicycles-only--g2': icon416,\r\n 'regulatory--bicycles-only--g3': icon417,\r\n 'regulatory--bicycles-only--g4': icon418,\r\n 'regulatory--bicycles-push-button--g1': icon419,\r\n 'regulatory--bicycles-push-button--g2': icon420,\r\n 'regulatory--bicycles-stop-on-red--g1': icon421,\r\n 'regulatory--bicycles-wrong-way--g1': icon422,\r\n 'regulatory--bicycles-yield-or-use-signal--g1': icon423,\r\n 'regulatory--bike-route--g1': icon424,\r\n 'regulatory--building-direction--g1': icon425,\r\n 'regulatory--bus-priority-lane--g1': icon426,\r\n 'regulatory--buses-and-taxi-only--g1': icon427,\r\n 'regulatory--buses-only--g1': icon428,\r\n 'regulatory--buses-only--g2': icon429,\r\n 'regulatory--circular-intersection--g1': icon430,\r\n 'regulatory--circular-intersection--g2': icon431,\r\n 'regulatory--circular-intersection--g3': icon432,\r\n 'regulatory--circular-intersection--g4': icon433,\r\n 'regulatory--cross-only-on-green--g1': icon434,\r\n 'regulatory--cross-only-on-pedestrian-signal--g1': icon435,\r\n 'regulatory--crosswalk-stop-on-red--g1': icon436,\r\n 'regulatory--cycling-restriction--g1': icon437,\r\n 'regulatory--cyclists-dismount-and-walk--g1': icon438,\r\n 'regulatory--detour-left--g1': icon439,\r\n 'regulatory--detour-right--g1': icon440,\r\n 'regulatory--divided-highway-crossing--g1': icon441,\r\n 'regulatory--divided-highway-ends--g1': icon442,\r\n 'regulatory--divided-highway-starts--g1': icon443,\r\n 'regulatory--do-not-block-intersection--g1': icon444,\r\n 'regulatory--do-not-pass--g1': icon445,\r\n 'regulatory--do-not-stop-on-tracks--g1': icon446,\r\n 'regulatory--dual-lanes-all-directions-on-left--g1': icon447,\r\n 'regulatory--dual-lanes-all-directions-on-right--g1': icon448,\r\n 'regulatory--dual-lanes-bicyclists-and-pedestrians--g1': icon449,\r\n 'regulatory--dual-lanes-go-left-or-right--g1': icon450,\r\n 'regulatory--dual-lanes-go-straight-on-left--g1': icon451,\r\n 'regulatory--dual-lanes-go-straight-on-right--g1': icon452,\r\n 'regulatory--dual-lanes-turn-left--g1': icon453,\r\n 'regulatory--dual-lanes-turn-left-no-u-turn--g1': icon454,\r\n 'regulatory--dual-lanes-turn-left-or-straight--g1': icon455,\r\n 'regulatory--dual-lanes-turn-right-or-straight--g1': icon456,\r\n 'regulatory--dual-path-bicycles-and-pedestrians--g1': icon457,\r\n 'regulatory--dual-path-bicycles-and-pedestrians--g2': icon458,\r\n 'regulatory--dual-path-bicycles-and-pedestrians--g3': icon459,\r\n 'regulatory--dual-path-equestrians-and-pedestrians--g1': icon460,\r\n 'regulatory--dual-path-equestrians-and-pedestrians-bicycles--g1': icon461,\r\n 'regulatory--dual-path-pedestrians-and-bicycles--g1': icon462,\r\n 'regulatory--dual-path-pedestrians-and-bicycles--g2': icon463,\r\n 'regulatory--dual-path-pedestrians-and-equestrians--g1': icon464,\r\n 'regulatory--dual-path-pedestrians-bicycles-and-equestrians--g1': icon465,\r\n 'regulatory--dual-speed-limits--g1': icon466,\r\n 'regulatory--dual-speed-limits--g2': icon467,\r\n 'regulatory--end-of-bicycles-only--g1': icon468,\r\n 'regulatory--end-of-bicycles-only--g2': icon469,\r\n 'regulatory--end-of-bus-and-taxi-only--g1': icon470,\r\n 'regulatory--end-of-buses-only--g1': icon471,\r\n 'regulatory--end-of-buses-only--g2': icon472,\r\n 'regulatory--end-of-cycling-restriction--g1': icon473,\r\n 'regulatory--end-of-dual-path-bicycles-and-pedestrians--g1': icon474,\r\n 'regulatory--end-of-dual-path-pedestrians-and-bicycles--g1': icon475,\r\n 'regulatory--end-of-equestrians-only--g1': icon476,\r\n 'regulatory--end-of-low-beam-headlights--g1': icon477,\r\n 'regulatory--end-of-maximum-speed-limit-10--g1': icon478,\r\n 'regulatory--end-of-maximum-speed-limit-10--g2': icon479,\r\n 'regulatory--end-of-maximum-speed-limit-20--g1': icon480,\r\n 'regulatory--end-of-maximum-speed-limit-20--g2': icon481,\r\n 'regulatory--end-of-maximum-speed-limit-25--g1': icon482,\r\n 'regulatory--end-of-maximum-speed-limit-25--g2': icon483,\r\n 'regulatory--end-of-maximum-speed-limit-30--g1': icon484,\r\n 'regulatory--end-of-maximum-speed-limit-30--g2': icon485,\r\n 'regulatory--end-of-maximum-speed-limit-35--g1': icon486,\r\n 'regulatory--end-of-maximum-speed-limit-35--g2': icon487,\r\n 'regulatory--end-of-maximum-speed-limit-40--g1': icon488,\r\n 'regulatory--end-of-maximum-speed-limit-40--g2': icon489,\r\n 'regulatory--end-of-maximum-speed-limit-50--g1': icon490,\r\n 'regulatory--end-of-maximum-speed-limit-50--g2': icon491,\r\n 'regulatory--end-of-maximum-speed-limit-60--g1': icon492,\r\n 'regulatory--end-of-maximum-speed-limit-60--g2': icon493,\r\n 'regulatory--end-of-maximum-speed-limit-65--g1': icon494,\r\n 'regulatory--end-of-maximum-speed-limit-65--g2': icon495,\r\n 'regulatory--end-of-maximum-speed-limit-70--g1': icon496,\r\n 'regulatory--end-of-maximum-speed-limit-70--g2': icon497,\r\n 'regulatory--end-of-maximum-speed-limit-75--g1': icon498,\r\n 'regulatory--end-of-maximum-speed-limit-75--g2': icon499,\r\n 'regulatory--end-of-maximum-speed-limit-80--g1': icon500,\r\n 'regulatory--end-of-maximum-speed-limit-80--g2': icon501,\r\n 'regulatory--end-of-maximum-speed-limit-90--g1': icon502,\r\n 'regulatory--end-of-maximum-speed-limit-90--g2': icon503,\r\n 'regulatory--end-of-maximum-speed-limit-100--g1': icon504,\r\n 'regulatory--end-of-maximum-speed-limit-100--g2': icon505,\r\n 'regulatory--end-of-maximum-speed-limit-110--g1': icon506,\r\n 'regulatory--end-of-maximum-speed-limit-110--g2': icon507,\r\n 'regulatory--end-of-maximum-speed-limit-120--g1': icon508,\r\n 'regulatory--end-of-maximum-speed-limit-120--g2': icon509,\r\n 'regulatory--end-of-maximum-speed-limit-130--g1': icon510,\r\n 'regulatory--end-of-maximum-speed-limit-130--g2': icon511,\r\n 'regulatory--end-of-maximum-speed-limit--g1': icon512,\r\n 'regulatory--end-of-mopeds-and-bicycles-only--g1': icon513,\r\n 'regulatory--end-of-no-heavy-goods-vehicles--g1': icon514,\r\n 'regulatory--end-of-no-horn--g1': icon515,\r\n 'regulatory--end-of-no-overtaking--g1': icon516,\r\n 'regulatory--end-of-no-overtaking--g2': icon517,\r\n 'regulatory--end-of-no-overtaking--g3': icon518,\r\n 'regulatory--end-of-no-overtaking--g4': icon519,\r\n 'regulatory--end-of-no-overtaking--g5': icon520,\r\n 'regulatory--end-of-no-overtaking-by-heavy-goods-vehicles--g1': icon521,\r\n 'regulatory--end-of-no-overtaking-by-heavy-goods-vehicles--g2': icon522,\r\n 'regulatory--end-of-no-overtaking-by-motorcycles--g1': icon523,\r\n 'regulatory--end-of-no-parking--g1': icon524,\r\n 'regulatory--end-of-no-parking--g2': icon525,\r\n 'regulatory--end-of-no-parking-or-stopping--g1': icon526,\r\n 'regulatory--end-of-one-way-straight--g1': icon527,\r\n 'regulatory--end-of-parking-zone--g1': icon528,\r\n 'regulatory--end-of-parking-zone--g2': icon529,\r\n 'regulatory--end-of-pedestrians-only--g1': icon530,\r\n 'regulatory--end-of-pedestrians-only--g2': icon531,\r\n 'regulatory--end-of-pedestrians-only--g3': icon532,\r\n 'regulatory--end-of-pedestrians-only--g4': icon533,\r\n 'regulatory--end-of-priority-road--g1': icon534,\r\n 'regulatory--end-of-prohibition--g1': icon535,\r\n 'regulatory--end-of-school-zone--g1': icon536,\r\n 'regulatory--end-of-shared-path-bicycles-and-pedestrians--g1': icon537,\r\n 'regulatory--end-of-shared-path-pedestrians-and-bicycles--g1': icon538,\r\n 'regulatory--end-of-snow-chains--g1': icon539,\r\n 'regulatory--end-of-snow-chains--g2': icon540,\r\n 'regulatory--end-of-snowmobiles-only--g1': icon541,\r\n 'regulatory--end-of-speed-limit-zone--g1': icon542,\r\n 'regulatory--end-of-speed-limit-zone--g2': icon543,\r\n 'regulatory--end-of-speed-limit-zone--g3': icon544,\r\n 'regulatory--end-of-tractors-only--g1': icon545,\r\n 'regulatory--end-of-trams-and-buses-only--g1': icon546,\r\n 'regulatory--end-of-trams-only--g1': icon547,\r\n 'regulatory--end-of-trucks-and-buses-only--g1': icon548,\r\n 'regulatory--end-of-trucks-only--g1': icon549,\r\n 'regulatory--end-of-trucks-only--g2': icon550,\r\n 'regulatory--equestrians-only--g1': icon551,\r\n 'regulatory--except-railroad-crossing--g1': icon552,\r\n 'regulatory--fine-for-littering--g1': icon553,\r\n 'regulatory--give-way-to-bicycles--g1': icon554,\r\n 'regulatory--give-way-to-oncoming-traffic--g1': icon555,\r\n 'regulatory--give-way-to-oncoming-traffic--g2': icon556,\r\n 'regulatory--go-left-bicycles--g1': icon557,\r\n 'regulatory--go-right-bicycles--g1': icon558,\r\n 'regulatory--go-straight--g1': icon559,\r\n 'regulatory--go-straight--g3': icon560,\r\n 'regulatory--go-straight-bicycles--g1': icon561,\r\n 'regulatory--go-straight-or-turn-left--g1': icon562,\r\n 'regulatory--go-straight-or-turn-left--g2': icon563,\r\n 'regulatory--go-straight-or-turn-left--g3': icon564,\r\n 'regulatory--go-straight-or-turn-right--g1': icon565,\r\n 'regulatory--go-straight-or-turn-right--g2': icon566,\r\n 'regulatory--go-straight-or-turn-right--g3': icon567,\r\n 'regulatory--heavy-goods-vehicles-permitted--g1': icon568,\r\n 'regulatory--height-limit--g1': icon569,\r\n 'regulatory--high-beam-headlights--g1': icon570,\r\n 'regulatory--horn--g1': icon571,\r\n 'regulatory--in-street-pedestrian-crossing--g1': icon572,\r\n 'regulatory--keep-left--g1': icon573,\r\n 'regulatory--keep-left--g2': icon574,\r\n 'regulatory--keep-left--g3': icon575,\r\n 'regulatory--keep-left--g4': icon576,\r\n 'regulatory--keep-left--g5': icon577,\r\n 'regulatory--keep-left--g6': icon578,\r\n 'regulatory--keep-left--g7': icon579,\r\n 'regulatory--keep-right--g1': icon580,\r\n 'regulatory--keep-right--g2': icon581,\r\n 'regulatory--keep-right--g3': icon582,\r\n 'regulatory--keep-right--g4': icon583,\r\n 'regulatory--keep-right--g5': icon584,\r\n 'regulatory--keep-right--g6': icon585,\r\n 'regulatory--keep-right--g7': icon586,\r\n 'regulatory--keep-right--g8': icon587,\r\n 'regulatory--keep-right--g9': icon588,\r\n 'regulatory--lane-control--g1': icon589,\r\n 'regulatory--left-turn-yield-on-green--g1': icon590,\r\n 'regulatory--length-limit--g1': icon591,\r\n 'regulatory--length-limit--g2': icon592,\r\n 'regulatory--light-rail-divided-highway--g1': icon593,\r\n 'regulatory--light-rail-do-not-pass--g1': icon594,\r\n 'regulatory--light-rail-only--g1': icon595,\r\n 'regulatory--look--g1': icon596,\r\n 'regulatory--low-beam-headlights--g1': icon597,\r\n 'regulatory--low-beam-headlights--g2': icon598,\r\n 'regulatory--low-beam-headlights--g3': icon599,\r\n 'regulatory--low-speed-vehicle-permitted--g1': icon600,\r\n 'regulatory--maximum-speed-limit-5--g1': icon601,\r\n 'regulatory--maximum-speed-limit-5--g3': icon602,\r\n 'regulatory--maximum-speed-limit-10--g1': icon603,\r\n 'regulatory--maximum-speed-limit-10--g3': icon604,\r\n 'regulatory--maximum-speed-limit-15--g1': icon605,\r\n 'regulatory--maximum-speed-limit-15--g3': icon606,\r\n 'regulatory--maximum-speed-limit-20--g1': icon607,\r\n 'regulatory--maximum-speed-limit-20--g3': icon608,\r\n 'regulatory--maximum-speed-limit-25--g1': icon609,\r\n 'regulatory--maximum-speed-limit-25--g2': icon610,\r\n 'regulatory--maximum-speed-limit-30--g1': icon611,\r\n 'regulatory--maximum-speed-limit-30--g3': icon612,\r\n 'regulatory--maximum-speed-limit-35--g1': icon613,\r\n 'regulatory--maximum-speed-limit-35--g2': icon614,\r\n 'regulatory--maximum-speed-limit-40--g1': icon615,\r\n 'regulatory--maximum-speed-limit-40--g3': icon616,\r\n 'regulatory--maximum-speed-limit-45--g1': icon617,\r\n 'regulatory--maximum-speed-limit-45--g3': icon618,\r\n 'regulatory--maximum-speed-limit-50--g1': icon619,\r\n 'regulatory--maximum-speed-limit-50--g3': icon620,\r\n 'regulatory--maximum-speed-limit-55--g2': icon621,\r\n 'regulatory--maximum-speed-limit-60--g1': icon622,\r\n 'regulatory--maximum-speed-limit-60--g3': icon623,\r\n 'regulatory--maximum-speed-limit-65--g1': icon624,\r\n 'regulatory--maximum-speed-limit-65--g2': icon625,\r\n 'regulatory--maximum-speed-limit-70--g1': icon626,\r\n 'regulatory--maximum-speed-limit-70--g3': icon627,\r\n 'regulatory--maximum-speed-limit-75--g2': icon628,\r\n 'regulatory--maximum-speed-limit-80--g1': icon629,\r\n 'regulatory--maximum-speed-limit-80--g3': icon630,\r\n 'regulatory--maximum-speed-limit-85--g2': icon631,\r\n 'regulatory--maximum-speed-limit-90--g1': icon632,\r\n 'regulatory--maximum-speed-limit-90--g3': icon633,\r\n 'regulatory--maximum-speed-limit-100--g1': icon634,\r\n 'regulatory--maximum-speed-limit-100--g3': icon635,\r\n 'regulatory--maximum-speed-limit-110--g1': icon636,\r\n 'regulatory--maximum-speed-limit-110--g3': icon637,\r\n 'regulatory--maximum-speed-limit-120--g1': icon638,\r\n 'regulatory--maximum-speed-limit-120--g3': icon639,\r\n 'regulatory--maximum-speed-limit-130--g1': icon640,\r\n 'regulatory--maximum-speed-limit-130--g3': icon641,\r\n 'regulatory--maximum-speed-limit-led-5--g2': icon642,\r\n 'regulatory--maximum-speed-limit-led-5--g3': icon643,\r\n 'regulatory--maximum-speed-limit-led-10--g1': icon644,\r\n 'regulatory--maximum-speed-limit-led-10--g2': icon645,\r\n 'regulatory--maximum-speed-limit-led-10--g3': icon646,\r\n 'regulatory--maximum-speed-limit-led-15--g2': icon647,\r\n 'regulatory--maximum-speed-limit-led-15--g3': icon648,\r\n 'regulatory--maximum-speed-limit-led-20--g1': icon649,\r\n 'regulatory--maximum-speed-limit-led-20--g2': icon650,\r\n 'regulatory--maximum-speed-limit-led-20--g3': icon651,\r\n 'regulatory--maximum-speed-limit-led-25--g1': icon652,\r\n 'regulatory--maximum-speed-limit-led-25--g2': icon653,\r\n 'regulatory--maximum-speed-limit-led-25--g3': icon654,\r\n 'regulatory--maximum-speed-limit-led-30--g1': icon655,\r\n 'regulatory--maximum-speed-limit-led-30--g2': icon656,\r\n 'regulatory--maximum-speed-limit-led-30--g3': icon657,\r\n 'regulatory--maximum-speed-limit-led-35--g1': icon658,\r\n 'regulatory--maximum-speed-limit-led-35--g2': icon659,\r\n 'regulatory--maximum-speed-limit-led-35--g3': icon660,\r\n 'regulatory--maximum-speed-limit-led-40--g1': icon661,\r\n 'regulatory--maximum-speed-limit-led-40--g2': icon662,\r\n 'regulatory--maximum-speed-limit-led-40--g3': icon663,\r\n 'regulatory--maximum-speed-limit-led-45--g2': icon664,\r\n 'regulatory--maximum-speed-limit-led-45--g3': icon665,\r\n 'regulatory--maximum-speed-limit-led-50--g1': icon666,\r\n 'regulatory--maximum-speed-limit-led-50--g2': icon667,\r\n 'regulatory--maximum-speed-limit-led-50--g3': icon668,\r\n 'regulatory--maximum-speed-limit-led-55--g2': icon669,\r\n 'regulatory--maximum-speed-limit-led-55--g3': icon670,\r\n 'regulatory--maximum-speed-limit-led-60--g1': icon671,\r\n 'regulatory--maximum-speed-limit-led-60--g2': icon672,\r\n 'regulatory--maximum-speed-limit-led-60--g3': icon673,\r\n 'regulatory--maximum-speed-limit-led-65--g2': icon674,\r\n 'regulatory--maximum-speed-limit-led-65--g3': icon675,\r\n 'regulatory--maximum-speed-limit-led-70--g1': icon676,\r\n 'regulatory--maximum-speed-limit-led-70--g2': icon677,\r\n 'regulatory--maximum-speed-limit-led-70--g3': icon678,\r\n 'regulatory--maximum-speed-limit-led-75--g1': icon679,\r\n 'regulatory--maximum-speed-limit-led-75--g2': icon680,\r\n 'regulatory--maximum-speed-limit-led-75--g3': icon681,\r\n 'regulatory--maximum-speed-limit-led-80--g1': icon682,\r\n 'regulatory--maximum-speed-limit-led-80--g2': icon683,\r\n 'regulatory--maximum-speed-limit-led-80--g3': icon684,\r\n 'regulatory--maximum-speed-limit-led-85--g2': icon685,\r\n 'regulatory--maximum-speed-limit-led-85--g3': icon686,\r\n 'regulatory--maximum-speed-limit-led-90--g1': icon687,\r\n 'regulatory--maximum-speed-limit-led-100--g1': icon688,\r\n 'regulatory--maximum-speed-limit-led-110--g1': icon689,\r\n 'regulatory--maximum-speed-limit-led-120--g1': icon690,\r\n 'regulatory--maximum-speed-limit-led-130--g1': icon691,\r\n 'regulatory--minimum-safe-distance--g1': icon692,\r\n 'regulatory--minimum-safe-distance--g2': icon693,\r\n 'regulatory--mopeds-and-bicycles-only--g1': icon694,\r\n 'regulatory--motorcycles-and-bicycles-only--g1': icon695,\r\n 'regulatory--motorcycles-only--g1': icon696,\r\n 'regulatory--motorcycles-only--g2': icon697,\r\n 'regulatory--night-speed-limit-5--g1': icon698,\r\n 'regulatory--night-speed-limit-10--g1': icon699,\r\n 'regulatory--night-speed-limit-15--g1': icon700,\r\n 'regulatory--night-speed-limit-20--g1': icon701,\r\n 'regulatory--night-speed-limit-25--g1': icon702,\r\n 'regulatory--night-speed-limit-30--g1': icon703,\r\n 'regulatory--night-speed-limit-35--g1': icon704,\r\n 'regulatory--night-speed-limit-40--g1': icon705,\r\n 'regulatory--night-speed-limit-45--g1': icon706,\r\n 'regulatory--night-speed-limit-50--g1': icon707,\r\n 'regulatory--night-speed-limit-55--g1': icon708,\r\n 'regulatory--night-speed-limit-60--g1': icon709,\r\n 'regulatory--night-speed-limit-65--g1': icon710,\r\n 'regulatory--night-speed-limit-70--g1': icon711,\r\n 'regulatory--night-speed-limit-75--g1': icon712,\r\n 'regulatory--night-speed-limit-80--g1': icon713,\r\n 'regulatory--night-speed-limit-85--g1': icon714,\r\n 'regulatory--no-abnormal-vehicles--g1': icon715,\r\n 'regulatory--no-atvs--g1': icon716,\r\n 'regulatory--no-bicycles--g1': icon717,\r\n 'regulatory--no-bicycles--g2': icon718,\r\n 'regulatory--no-bicycles--g3': icon719,\r\n 'regulatory--no-bicycles-carts-or-hand-carts--g1': icon720,\r\n 'regulatory--no-bicycles-mopeds-or-motorcycles--g1': icon721,\r\n 'regulatory--no-bicycles-mopeds-or-motorcycles--g2': icon722,\r\n 'regulatory--no-bicycles-or-hand-carts--g1': icon723,\r\n 'regulatory--no-bicycles-or-motorcycles--g1': icon724,\r\n 'regulatory--no-bicycles-tractors-or-carts--g1': icon725,\r\n 'regulatory--no-buses--g1': icon726,\r\n 'regulatory--no-buses--g2': icon727,\r\n 'regulatory--no-buses--g3': icon728,\r\n 'regulatory--no-caravan-trailers--g1': icon729,\r\n 'regulatory--no-caravans--g1': icon730,\r\n 'regulatory--no-caravans-or-caravan-trailers--g1': icon731,\r\n 'regulatory--no-cargo-loading--g1': icon732,\r\n 'regulatory--no-carts--g1': icon733,\r\n 'regulatory--no-carts--g2': icon734,\r\n 'regulatory--no-carts--g3': icon735,\r\n 'regulatory--no-carts-or-tractors--g1': icon736,\r\n 'regulatory--no-construction-vehicles--g1': icon737,\r\n 'regulatory--no-entry--g1': icon738,\r\n 'regulatory--no-equestrians--g1': icon739,\r\n 'regulatory--no-go-straight-or-turn-left--g1': icon740,\r\n 'regulatory--no-go-straight-or-turn-right--g1': icon741,\r\n 'regulatory--no-good-trailers--g2': icon742,\r\n 'regulatory--no-goods-vehicle-trailers--g1': icon743,\r\n 'regulatory--no-hand-carts--g1': icon744,\r\n 'regulatory--no-hand-carts--g2': icon745,\r\n 'regulatory--no-hand-carts-or-bicycles--g1': icon746,\r\n 'regulatory--no-hawkers--g1': icon747,\r\n 'regulatory--no-heavy-goods-vehicles--g1': icon748,\r\n 'regulatory--no-heavy-goods-vehicles--g2': icon749,\r\n 'regulatory--no-heavy-goods-vehicles--g3': icon750,\r\n 'regulatory--no-heavy-goods-vehicles--g4': icon751,\r\n 'regulatory--no-heavy-goods-vehicles--g5': icon752,\r\n 'regulatory--no-heavy-goods-vehicles-motorcycles-or-bicycles--g1': icon753,\r\n 'regulatory--no-heavy-goods-vehicles-motorcycles-or-bicycles--g2': icon754,\r\n 'regulatory--no-heavy-goods-vehicles-or-buses--g1': icon755,\r\n 'regulatory--no-heavy-goods-vehicles-or-tractors--g1': icon756,\r\n 'regulatory--no-heavy-goods-vehicles-or-trailers--g1': icon757,\r\n 'regulatory--no-horizontal-turn--g1': icon758,\r\n 'regulatory--no-horn--g1': icon759,\r\n 'regulatory--no-horn--g2': icon760,\r\n 'regulatory--no-lane-change-to-left--g1': icon761,\r\n 'regulatory--no-lane-change-to-right--g1': icon762,\r\n 'regulatory--no-learner-drivers--g1': icon763,\r\n 'regulatory--no-left-or-u-turn--g1': icon764,\r\n 'regulatory--no-left-turn--g1': icon765,\r\n 'regulatory--no-left-turn--g2': icon766,\r\n 'regulatory--no-left-turn--g3': icon767,\r\n 'regulatory--no-left-turn--g4': icon768,\r\n 'regulatory--no-left-turn--g5': icon769,\r\n 'regulatory--no-low-speed-vehicles--g1': icon770,\r\n 'regulatory--no-mopeds-or-bicycles--g1': icon771,\r\n 'regulatory--no-motor-vehicle-trailers--g1': icon772,\r\n 'regulatory--no-motor-vehicles--g1': icon773,\r\n 'regulatory--no-motor-vehicles--g3': icon774,\r\n 'regulatory--no-motor-vehicles--g4': icon775,\r\n 'regulatory--no-motor-vehicles--g5': icon776,\r\n 'regulatory--no-motor-vehicles--g6': icon777,\r\n 'regulatory--no-motor-vehicles--g7': icon778,\r\n 'regulatory--no-motor-vehicles-except-motorcycles--g1': icon779,\r\n 'regulatory--no-motor-vehicles-except-motorcycles--g2': icon780,\r\n 'regulatory--no-motor-vehicles-except-motorcycles--g3': icon781,\r\n 'regulatory--no-motor-vehicles-or-bicycles--g1': icon782,\r\n 'regulatory--no-motor-vehicles-or-buses--g1': icon783,\r\n 'regulatory--no-motor-vehicles-or-carts--g1': icon784,\r\n 'regulatory--no-motorcycles--g1': icon785,\r\n 'regulatory--no-motorcycles--g2': icon786,\r\n 'regulatory--no-overtaking--g1': icon787,\r\n 'regulatory--no-overtaking--g2': icon788,\r\n 'regulatory--no-overtaking--g4': icon789,\r\n 'regulatory--no-overtaking--g5': icon790,\r\n 'regulatory--no-overtaking--g6': icon791,\r\n 'regulatory--no-overtaking--g7': icon792,\r\n 'regulatory--no-overtaking-atvs--g1': icon793,\r\n 'regulatory--no-overtaking-by-heavy-goods-vehicles--g1': icon794,\r\n 'regulatory--no-parking--g1': icon795,\r\n 'regulatory--no-parking--g2': icon796,\r\n 'regulatory--no-parking--g3': icon797,\r\n 'regulatory--no-parking--g4': icon798,\r\n 'regulatory--no-parking--g5': icon799,\r\n 'regulatory--no-parking--g6': icon800,\r\n 'regulatory--no-parking--g7': icon801,\r\n 'regulatory--no-parking--g8': icon802,\r\n 'regulatory--no-parking--g9': icon803,\r\n 'regulatory--no-parking-bicycles-or-motorcycles--g1': icon804,\r\n 'regulatory--no-parking-bus-stop--g1': icon805,\r\n 'regulatory--no-parking-or-no-stopping--g1': icon806,\r\n 'regulatory--no-parking-or-no-stopping--g2': icon807,\r\n 'regulatory--no-parking-or-no-stopping--g3': icon808,\r\n 'regulatory--no-parking-or-no-stopping--g4': icon809,\r\n 'regulatory--no-parking-or-no-stopping--g5': icon810,\r\n 'regulatory--no-passenger-loading--g1': icon811,\r\n 'regulatory--no-pedestrians--g1': icon812,\r\n 'regulatory--no-pedestrians--g2': icon813,\r\n 'regulatory--no-pedestrians--g3': icon814,\r\n 'regulatory--no-pedestrians--g4': icon815,\r\n 'regulatory--no-pedestrians--g5': icon816,\r\n 'regulatory--no-pedestrians--g6': icon817,\r\n 'regulatory--no-pedestrians-bicycles-animals-or-hand-carts--g1': icon818,\r\n 'regulatory--no-pedestrians-or-bicycles--g1': icon819,\r\n 'regulatory--no-pedestrians-or-bicycles--g2': icon820,\r\n 'regulatory--no-pedestrians-or-bicycles--g3': icon821,\r\n 'regulatory--no-rickshaws--g1': icon822,\r\n 'regulatory--no-rickshaws--g2': icon823,\r\n 'regulatory--no-rickshaws--g3': icon824,\r\n 'regulatory--no-right-turn--g1': icon825,\r\n 'regulatory--no-right-turn--g2': icon826,\r\n 'regulatory--no-right-turn--g3': icon827,\r\n 'regulatory--no-right-turn-on-red--g1': icon828,\r\n 'regulatory--no-skiing--g1': icon829,\r\n 'regulatory--no-snowmobiles--g1': icon830,\r\n 'regulatory--no-snowmobiles--g2': icon831,\r\n 'regulatory--no-snowmobiles-or-atvs--g1': icon832,\r\n 'regulatory--no-stopping--g1': icon833,\r\n 'regulatory--no-stopping--g2': icon834,\r\n 'regulatory--no-stopping--g3': icon835,\r\n 'regulatory--no-stopping--g5': icon836,\r\n 'regulatory--no-stopping--g6': icon837,\r\n 'regulatory--no-stopping--g7': icon838,\r\n 'regulatory--no-stopping-on-pavement--g1': icon839,\r\n 'regulatory--no-straight-through--g1': icon840,\r\n 'regulatory--no-straight-through--g2': icon841,\r\n 'regulatory--no-studded-snow-chains--g1': icon842,\r\n 'regulatory--no-through-trucks--g1': icon843,\r\n 'regulatory--no-tour-buses--g1': icon844,\r\n 'regulatory--no-tractors--g1': icon845,\r\n 'regulatory--no-tractors-mopeds-or-bicycles--g1': icon846,\r\n 'regulatory--no-tractors-or-carts--g1': icon847,\r\n 'regulatory--no-trailers--g1': icon848,\r\n 'regulatory--no-tricycles--g1': icon849,\r\n 'regulatory--no-tricycles-or-hand-carts--g1': icon850,\r\n 'regulatory--no-turn-on-red--g1': icon851,\r\n 'regulatory--no-turn-on-red--g2': icon852,\r\n 'regulatory--no-turn-on-red--g3': icon853,\r\n 'regulatory--no-turns--g1': icon854,\r\n 'regulatory--no-turns--g2': icon855,\r\n 'regulatory--no-two-stage-right-turn-for-mopeds--g1': icon856,\r\n 'regulatory--no-u-turn--g1': icon857,\r\n 'regulatory--no-u-turn--g2': icon858,\r\n 'regulatory--no-u-turn--g3': icon859,\r\n 'regulatory--no-vehicles-carrying-dangerous-goods--g1': icon860,\r\n 'regulatory--no-vehicles-carrying-dangerous-goods--g2': icon861,\r\n 'regulatory--no-vehicles-carrying-dangerous-goods--g3': icon862,\r\n 'regulatory--no-vehicles-carrying-dangerous-goods--g4': icon863,\r\n 'regulatory--no-vehicles-carrying-dangerous-water-pollutants--g1': icon864,\r\n 'regulatory--no-vehicles-carrying-dangerous-water-pollutants--g2': icon865,\r\n 'regulatory--no-vehicles-carrying-explosives--g1': icon866,\r\n 'regulatory--no-vehicles-carrying-explosives-or-dangerous-water-pollutants--g1': icon867,\r\n 'regulatory--one-way-left--g1': icon868,\r\n 'regulatory--one-way-left--g2': icon869,\r\n 'regulatory--one-way-left--g3': icon870,\r\n 'regulatory--one-way-right--g1': icon871,\r\n 'regulatory--one-way-right--g2': icon872,\r\n 'regulatory--one-way-right--g3': icon873,\r\n 'regulatory--one-way-straight--g1': icon874,\r\n 'regulatory--one-way-straight--g3': icon875,\r\n 'regulatory--parking-fee-station--g1': icon876,\r\n 'regulatory--parking-restrictions--g1': icon877,\r\n 'regulatory--parking-restrictions--g2': icon878,\r\n 'regulatory--parking-restrictions--g3': icon879,\r\n 'regulatory--pass-on-either-side--g1': icon880,\r\n 'regulatory--pass-on-either-side--g2': icon881,\r\n 'regulatory--pass-on-either-side--g3': icon882,\r\n 'regulatory--pass-with-care--g1': icon883,\r\n 'regulatory--passing-lane-ahead--g1': icon884,\r\n 'regulatory--pedestrians-bicycles-permitted--g1': icon885,\r\n 'regulatory--pedestrians-keep-left--g1': icon886,\r\n 'regulatory--pedestrians-only--g1': icon887,\r\n 'regulatory--pedestrians-only--g2': icon888,\r\n 'regulatory--pedestrians-only--g3': icon889,\r\n 'regulatory--pedestrians-priority-zone--g1': icon890,\r\n 'regulatory--pedestrians-push-button--g1': icon891,\r\n 'regulatory--pedestrians-push-button--g2': icon892,\r\n 'regulatory--priority-over-oncoming-vehicles--g1': icon893,\r\n 'regulatory--priority-over-oncoming-vehicles--g2': icon894,\r\n 'regulatory--priority-road--g1': icon895,\r\n 'regulatory--priority-road--g2': icon896,\r\n 'regulatory--radar-enforced--g1': icon897,\r\n 'regulatory--reserved-parking--g1': icon898,\r\n 'regulatory--reversible-lanes--g1': icon899,\r\n 'regulatory--reversible-lanes--g2': icon900,\r\n 'regulatory--road-closed--g1': icon901,\r\n 'regulatory--road-closed--g2': icon902,\r\n 'regulatory--road-closed-to-vehicles--g1': icon903,\r\n 'regulatory--road-closed-to-vehicles--g3': icon904,\r\n 'regulatory--roundabout--g1': icon905,\r\n 'regulatory--roundabout--g2': icon906,\r\n 'regulatory--roundabout--g3': icon907,\r\n 'regulatory--shared-path-bicycles-and-pedestrians--g1': icon908,\r\n 'regulatory--shared-path-pedestrians-and-bicycles--g1': icon909,\r\n 'regulatory--sidewalk-closed--g1': icon910,\r\n 'regulatory--slanted-parking--g1': icon911,\r\n 'regulatory--snow-chains--g1': icon912,\r\n 'regulatory--snow-chains--g2': icon913,\r\n 'regulatory--snow-chains--g3': icon914,\r\n 'regulatory--snowmobiles-only--g1': icon915,\r\n 'regulatory--snowmobiles-permitted--g1': icon916,\r\n 'regulatory--speed-limit-zone--g1': icon917,\r\n 'regulatory--speeding-fines-increased--g1': icon918,\r\n 'regulatory--state-route--g1': icon919,\r\n 'regulatory--stay-in-lane--g1': icon920,\r\n 'regulatory--stop--g1': icon921,\r\n 'regulatory--stop--g2': icon922,\r\n 'regulatory--stop--g3': icon923,\r\n 'regulatory--stop--g4': icon924,\r\n 'regulatory--stop--g5': icon925,\r\n 'regulatory--stop--g6': icon926,\r\n 'regulatory--stop--g7': icon927,\r\n 'regulatory--stop--g8': icon928,\r\n 'regulatory--stop--g9': icon929,\r\n 'regulatory--stop--g10': icon930,\r\n 'regulatory--stop-here-on-red-or-flashing-light--g1': icon931,\r\n 'regulatory--stop-here-on-red-or-flashing-light--g2': icon932,\r\n 'regulatory--stop-signals--g1': icon933,\r\n 'regulatory--stop-signals--g2': icon934,\r\n 'regulatory--tanks-only--g1': icon935,\r\n 'regulatory--taxi-only--g1': icon936,\r\n 'regulatory--text--g1': icon937,\r\n 'regulatory--text--g2': icon938,\r\n 'regulatory--toll-pass-only--g1': icon939,\r\n 'regulatory--tractors-only--g1': icon940,\r\n 'regulatory--traffic-signal-photo-enforced--g1': icon941,\r\n 'regulatory--trams-and-buses-only--g1': icon942,\r\n 'regulatory--trams-only--g1': icon943,\r\n 'regulatory--triple-lanes--g1': icon944,\r\n 'regulatory--triple-lanes-go-straight-center-lane--g1': icon945,\r\n 'regulatory--triple-lanes-turn-left-center-lane--g1': icon946,\r\n 'regulatory--triple-lanes-turn-right-center-lane--g1': icon947,\r\n 'regulatory--truck-route--g1': icon948,\r\n 'regulatory--truck-speed-limit-5--g1': icon949,\r\n 'regulatory--truck-speed-limit-10--g1': icon950,\r\n 'regulatory--truck-speed-limit-15--g1': icon951,\r\n 'regulatory--truck-speed-limit-20--g1': icon952,\r\n 'regulatory--truck-speed-limit-25--g1': icon953,\r\n 'regulatory--truck-speed-limit-30--g1': icon954,\r\n 'regulatory--truck-speed-limit-35--g1': icon955,\r\n 'regulatory--truck-speed-limit-40--g1': icon956,\r\n 'regulatory--truck-speed-limit-45--g1': icon957,\r\n 'regulatory--truck-speed-limit-50--g1': icon958,\r\n 'regulatory--truck-speed-limit-55--g1': icon959,\r\n 'regulatory--truck-speed-limit-60--g1': icon960,\r\n 'regulatory--truck-speed-limit-65--g1': icon961,\r\n 'regulatory--truck-speed-limit-70--g1': icon962,\r\n 'regulatory--truck-speed-limit-75--g1': icon963,\r\n 'regulatory--truck-speed-limit-80--g1': icon964,\r\n 'regulatory--truck-speed-limit-85--g1': icon965,\r\n 'regulatory--trucks-and-buses-only--g1': icon966,\r\n 'regulatory--trucks-on-right--g1': icon967,\r\n 'regulatory--trucks-only--g1': icon968,\r\n 'regulatory--turn-left--g1': icon969,\r\n 'regulatory--turn-left--g2': icon970,\r\n 'regulatory--turn-left--g3': icon971,\r\n 'regulatory--turn-left-ahead--g1': icon972,\r\n 'regulatory--turn-left-ahead--g2': icon973,\r\n 'regulatory--turn-left-or-right--g1': icon974,\r\n 'regulatory--turn-left-or-right--g2': icon975,\r\n 'regulatory--turn-left-or-right--g3': icon976,\r\n 'regulatory--turn-left-or-u-turn--g1': icon977,\r\n 'regulatory--turn-right--g1': icon978,\r\n 'regulatory--turn-right--g2': icon979,\r\n 'regulatory--turn-right--g3': icon980,\r\n 'regulatory--turn-right-ahead--g1': icon981,\r\n 'regulatory--turn-right-ahead--g2': icon982,\r\n 'regulatory--turning-vehicles-yield-to-pedestrians--g1': icon983,\r\n 'regulatory--two-stage-right-turn-for-mopeds--g1': icon984,\r\n 'regulatory--two-way--g1': icon985,\r\n 'regulatory--u-turn--g1': icon986,\r\n 'regulatory--u-turn--g2': icon987,\r\n 'regulatory--u-turn--g3': icon988,\r\n 'regulatory--use-crosswalk--g1': icon989,\r\n 'regulatory--vehicles-carrying-dangerous-goods-only--g1': icon990,\r\n 'regulatory--vehicles-carrying-dangerous-goods-permitted--g1': icon991,\r\n 'regulatory--vehicles-carrying-explosives-only--g1': icon992,\r\n 'regulatory--vehicles-carrying-hazardous-goods-permitted--g1': icon993,\r\n 'regulatory--vehicles-only--g1': icon994,\r\n 'regulatory--wear-seat-belt--g1': icon995,\r\n 'regulatory--wear-seat-belt--g2': icon996,\r\n 'regulatory--wear-seat-belt--g3': icon997,\r\n 'regulatory--weight-limit--g1': icon998,\r\n 'regulatory--weight-limit--g2': icon999,\r\n 'regulatory--weight-limit--g3': icon1000,\r\n 'regulatory--weight-limit--g4': icon1001,\r\n 'regulatory--weight-limit--g5': icon1002,\r\n 'regulatory--weight-limit--g6': icon1003,\r\n 'regulatory--weight-limit--g7': icon1004,\r\n 'regulatory--weight-limit-per-axle--g1': icon1005,\r\n 'regulatory--weight-limit-per-tandem-axle--g1': icon1006,\r\n 'regulatory--weight-limit-with-trucks--g1': icon1007,\r\n 'regulatory--width-limit--g1': icon1008,\r\n 'regulatory--wrong-way--g1': icon1009,\r\n 'regulatory--yield--g1': icon1010,\r\n 'regulatory--yield-or-stop-for-pedestrians--g1': icon1011,\r\n 'regulatory--your-speed--g1': icon1012,\r\n 'warning--accident-area--g1': icon1013,\r\n 'warning--accident-area--g2': icon1014,\r\n 'warning--accident-area--g3': icon1015,\r\n 'warning--accident-area--g4': icon1016,\r\n 'warning--accident-area--g5': icon1017,\r\n 'warning--accident-area--g6': icon1018,\r\n 'warning--accident-area--g7': icon1019,\r\n 'warning--accident-area--g8': icon1020,\r\n 'warning--added-lane-from-entering-roadway--g1': icon1021,\r\n 'warning--added-lane-from-entering-roadway--g2': icon1022,\r\n 'warning--added-lane-left--g1': icon1023,\r\n 'warning--added-lane-right--g1': icon1024,\r\n 'warning--animal-drawn-vehicles--g1': icon1025,\r\n 'warning--arch-bridge--g1': icon1026,\r\n 'warning--atv-and-snowmobiles--g1': icon1027,\r\n 'warning--atv-crossing--g1': icon1028,\r\n 'warning--atv-crossing--g2': icon1029,\r\n 'warning--axle-restriction--g1': icon1030,\r\n 'warning--bear-crossing--g1': icon1031,\r\n 'warning--bear-crossing--g2': icon1032,\r\n 'warning--bicycles-and-others--g1': icon1033,\r\n 'warning--bicycles-caution-on-rail-tracks--g1': icon1034,\r\n 'warning--bicycles-crossing--g1': icon1035,\r\n 'warning--bicycles-crossing--g2': icon1036,\r\n 'warning--bicycles-crossing--g3': icon1037,\r\n 'warning--bicycles-crossing--g4': icon1038,\r\n 'warning--bollard--g1': icon1039,\r\n 'warning--bridge--g1': icon1040,\r\n 'warning--bridge--g2': icon1041,\r\n 'warning--bus-stop-ahead--g1': icon1042,\r\n 'warning--bus-stop-ahead--g2': icon1043,\r\n 'warning--bus-stop-ahead--g3': icon1044,\r\n 'warning--camel-crossing--g1': icon1045,\r\n 'warning--camel-crossing--g2': icon1046,\r\n 'warning--camera--g1': icon1047,\r\n 'warning--camera--g2': icon1048,\r\n 'warning--carts--g1': icon1049,\r\n 'warning--carts--g2': icon1050,\r\n 'warning--checkpoint--g1': icon1051,\r\n 'warning--children--g1': icon1052,\r\n 'warning--children--g2': icon1053,\r\n 'warning--children--g3': icon1054,\r\n 'warning--children--g4': icon1055,\r\n 'warning--children--g6': icon1056,\r\n 'warning--cliff--g1': icon1057,\r\n 'warning--cliff--g2': icon1058,\r\n 'warning--closed-lane-in-triple-lanes--g1': icon1059,\r\n 'warning--closed-lane-in-triple-lanes--g2': icon1060,\r\n 'warning--construction-ahead--g1': icon1061,\r\n 'warning--crossroads--g1': icon1062,\r\n 'warning--crossroads--g2': icon1063,\r\n 'warning--crossroads--g3': icon1064,\r\n 'warning--crossroads--g4': icon1065,\r\n 'warning--crossroads--g5': icon1066,\r\n 'warning--crossroads--g6': icon1067,\r\n 'warning--crossroads-with-priority-to-the-right--g1': icon1068,\r\n 'warning--curve-left--g1': icon1069,\r\n 'warning--curve-left--g2': icon1070,\r\n 'warning--curve-left--g3': icon1071,\r\n 'warning--curve-left-with-junction--g1': icon1072,\r\n 'warning--curve-out-intersection-left--g1': icon1073,\r\n 'warning--curve-out-intersection-right--g1': icon1074,\r\n 'warning--curve-right--g1': icon1075,\r\n 'warning--curve-right--g2': icon1076,\r\n 'warning--curve-right--g3': icon1077,\r\n 'warning--curve-right-with-junction--g1': icon1078,\r\n 'warning--dangerous-crosswinds-left--g1': icon1079,\r\n 'warning--dangerous-crosswinds-left--g2': icon1080,\r\n 'warning--dangerous-crosswinds-left--g4': icon1081,\r\n 'warning--dangerous-crosswinds-right--g1': icon1082,\r\n 'warning--dangerous-crosswinds-right--g2': icon1083,\r\n 'warning--dangerous-crosswinds-right--g3': icon1084,\r\n 'warning--dangerous-crosswinds-right--g4': icon1085,\r\n 'warning--dead-end--g1': icon1086,\r\n 'warning--dead-end--g2': icon1087,\r\n 'warning--dead-end--g3': icon1088,\r\n 'warning--dead-end-go-left--g1': icon1089,\r\n 'warning--dead-end-go-right--g1': icon1090,\r\n 'warning--descent-or-climbing-lanes-in-triple-lanes--g1': icon1091,\r\n 'warning--detour-ahead--g1': icon1092,\r\n 'warning--detour-or-construction-ahead--g1': icon1093,\r\n 'warning--dip--g1': icon1094,\r\n 'warning--dip--g2': icon1095,\r\n 'warning--disabled-persons-crossing--g1': icon1096,\r\n 'warning--disabled-persons-crossing--g2': icon1097,\r\n 'warning--divided-highway--g1': icon1098,\r\n 'warning--divided-highway--g2': icon1099,\r\n 'warning--divided-highway--g3': icon1100,\r\n 'warning--divided-highway--g4': icon1101,\r\n 'warning--divided-highway--g5': icon1102,\r\n 'warning--divided-highway--g6': icon1103,\r\n 'warning--divided-highway--g7': icon1104,\r\n 'warning--divided-highway--g8': icon1105,\r\n 'warning--divided-highway--g9': icon1106,\r\n 'warning--divided-highway-ends--g1': icon1107,\r\n 'warning--divided-highway-ends--g2': icon1108,\r\n 'warning--divided-highway-ends--g3': icon1109,\r\n 'warning--divided-highway-ends--g4': icon1110,\r\n 'warning--divided-highway-on-left--g1': icon1111,\r\n 'warning--divided-highway-on-left--g2': icon1112,\r\n 'warning--divided-highway-on-right--g1': icon1113,\r\n 'warning--divided-highway-on-right--g2': icon1114,\r\n 'warning--divided-highway-to-left--g1': icon1115,\r\n 'warning--divided-highway-to-right--g1': icon1116,\r\n 'warning--domestic-animals--g1': icon1117,\r\n 'warning--domestic-animals--g2': icon1118,\r\n 'warning--domestic-animals--g3': icon1119,\r\n 'warning--domestic-animals--g4': icon1120,\r\n 'warning--domestic-animals--g5': icon1121,\r\n 'warning--domestic-animals--g6': icon1122,\r\n 'warning--domestic-animals--g7': icon1123,\r\n 'warning--domestic-animals--g8': icon1124,\r\n 'warning--double-curve-first-left--g1': icon1125,\r\n 'warning--double-curve-first-left--g2': icon1126,\r\n 'warning--double-curve-first-right--g1': icon1127,\r\n 'warning--double-curve-first-right--g2': icon1128,\r\n 'warning--double-descent--g1': icon1129,\r\n 'warning--double-reverse-curve-left--g1': icon1130,\r\n 'warning--double-reverse-curve-left--g2': icon1131,\r\n 'warning--double-reverse-curve-right--g1': icon1132,\r\n 'warning--double-reverse-curve-right--g2': icon1133,\r\n 'warning--double-side-roads-left--g1': icon1134,\r\n 'warning--double-side-roads-left--g3': icon1135,\r\n 'warning--double-side-roads-right--g1': icon1136,\r\n 'warning--double-side-roads-right--g3': icon1137,\r\n 'warning--double-turn-first-left--g1': icon1138,\r\n 'warning--double-turn-first-right--g1': icon1139,\r\n 'warning--dual-lanes-all-directions-on-left--g1': icon1140,\r\n 'warning--dual-lanes-all-directions-on-right--g1': icon1141,\r\n 'warning--dual-lanes-go-straight-or-turn-left--g1': icon1142,\r\n 'warning--dual-lanes-go-straight-or-turn-right--g1': icon1143,\r\n 'warning--dual-lanes-left-turn--g1': icon1144,\r\n 'warning--dual-lanes-left-turn-or-go-straight--g1': icon1145,\r\n 'warning--dual-lanes-right-turn--g1': icon1146,\r\n 'warning--dual-lanes-right-turn-or-go-straight--g1': icon1147,\r\n 'warning--dual-lanes-turn-left--g1': icon1148,\r\n 'warning--dual-lanes-turn-left-or-right--g1': icon1149,\r\n 'warning--dual-lanes-turn-left-or-right--g2': icon1150,\r\n 'warning--dual-lanes-turn-left-or-right--g3': icon1151,\r\n 'warning--dual-lanes-turn-left-or-right--g4': icon1152,\r\n 'warning--dual-lanes-turn-right--g1': icon1153,\r\n 'warning--dual-path-cyclists-and-pedestrians--g1': icon1154,\r\n 'warning--electricity--g1': icon1155,\r\n 'warning--electricity--g2': icon1156,\r\n 'warning--elephant-crossing--g1': icon1157,\r\n 'warning--emergency-vehicles--g1': icon1158,\r\n 'warning--emu-crossing--g1': icon1159,\r\n 'warning--emu-crossing--g2': icon1160,\r\n 'warning--entering-roadway-merge--g1': icon1161,\r\n 'warning--entering-roadway-merge--g2': icon1162,\r\n 'warning--equestrians-crossing--g1': icon1163,\r\n 'warning--equestrians-crossing--g2': icon1164,\r\n 'warning--expressway--g1': icon1165,\r\n 'warning--falling-rocks-or-debris-left--g1': icon1166,\r\n 'warning--falling-rocks-or-debris-left--g2': icon1167,\r\n 'warning--falling-rocks-or-debris-left--g3': icon1168,\r\n 'warning--falling-rocks-or-debris-left--g4': icon1169,\r\n 'warning--falling-rocks-or-debris-right--g1': icon1170,\r\n 'warning--falling-rocks-or-debris-right--g2': icon1171,\r\n 'warning--falling-rocks-or-debris-right--g3': icon1172,\r\n 'warning--falling-rocks-or-debris-right--g4': icon1173,\r\n 'warning--ferry--g1': icon1174,\r\n 'warning--flaggers-in-road--g1': icon1175,\r\n 'warning--flaggers-in-road--g2': icon1176,\r\n 'warning--foggy-road--g1': icon1177,\r\n 'warning--foggy-road--g2': icon1178,\r\n 'warning--ford--g1': icon1179,\r\n 'warning--forest--g1': icon1180,\r\n 'warning--fresh-oil--g1': icon1181,\r\n 'warning--frog-crossing--g1': icon1182,\r\n 'warning--gate--g1': icon1183,\r\n 'warning--gate--g2': icon1184,\r\n 'warning--gate-left--g1': icon1185,\r\n 'warning--gate-right--g1': icon1186,\r\n 'warning--go-left--g1': icon1187,\r\n 'warning--go-right--g1': icon1188,\r\n 'warning--golf-carts-crossing--g1': icon1189,\r\n 'warning--gravel-road-surface--g1': icon1190,\r\n 'warning--hairpin-curve-left--g1': icon1191,\r\n 'warning--hairpin-curve-left--g2': icon1192,\r\n 'warning--hairpin-curve-left--g3': icon1193,\r\n 'warning--hairpin-curve-right--g1': icon1194,\r\n 'warning--hairpin-curve-right--g3': icon1195,\r\n 'warning--height-restriction--g2': icon1196,\r\n 'warning--height-restriction--g3': icon1197,\r\n 'warning--height-restriction--g4': icon1198,\r\n 'warning--height-restriction--g5': icon1199,\r\n 'warning--horizontal-alignment-left--g1': icon1200,\r\n 'warning--horizontal-alignment-left--g3': icon1201,\r\n 'warning--horizontal-alignment-right--g1': icon1202,\r\n 'warning--horizontal-alignment-right--g3': icon1203,\r\n 'warning--horse-crossing--g1': icon1204,\r\n 'warning--icy-road--g1': icon1205,\r\n 'warning--junction-with-a-side-road-acute-left--g1': icon1206,\r\n 'warning--junction-with-a-side-road-acute-left--g2': icon1207,\r\n 'warning--junction-with-a-side-road-acute-right--g1': icon1208,\r\n 'warning--junction-with-a-side-road-acute-right--g2': icon1209,\r\n 'warning--junction-with-a-side-road-perpendicular-left--g1': icon1210,\r\n 'warning--junction-with-a-side-road-perpendicular-left--g2': icon1211,\r\n 'warning--junction-with-a-side-road-perpendicular-left--g3': icon1212,\r\n 'warning--junction-with-a-side-road-perpendicular-left--g4': icon1213,\r\n 'warning--junction-with-a-side-road-perpendicular-right--g1': icon1214,\r\n 'warning--junction-with-a-side-road-perpendicular-right--g2': icon1215,\r\n 'warning--junction-with-a-side-road-perpendicular-right--g3': icon1216,\r\n 'warning--junction-with-a-side-road-perpendicular-right--g4': icon1217,\r\n 'warning--junction-with-merge-from-left--g1': icon1218,\r\n 'warning--junction-with-merge-from-right--g1': icon1219,\r\n 'warning--junction-with-side-roads--g1': icon1220,\r\n 'warning--kangaloo-crossing--g1': icon1221,\r\n 'warning--keep-distance--g1': icon1222,\r\n 'warning--keep-left--g1': icon1223,\r\n 'warning--keep-right--g1': icon1224,\r\n 'warning--kiwi-crossing--g1': icon1225,\r\n 'warning--kiwi-crossing--g2': icon1226,\r\n 'warning--koala-crossing--g1': icon1227,\r\n 'warning--koala-crossing--g2': icon1228,\r\n 'warning--koala-crossing--g3': icon1229,\r\n 'warning--koala-crossing--g4': icon1230,\r\n 'warning--lane-closed-in-dual-lanes-left--g1': icon1231,\r\n 'warning--lane-closed-in-dual-lanes-left--g2': icon1232,\r\n 'warning--lane-closed-in-dual-lanes-right--g1': icon1233,\r\n 'warning--lane-closed-in-dual-lanes-right--g2': icon1234,\r\n 'warning--length-restriction--g1': icon1235,\r\n 'warning--length-restriction--g2': icon1236,\r\n 'warning--light-rail-transit-vehicles--g1': icon1237,\r\n 'warning--limited-lighting-under-trees--g1': icon1238,\r\n 'warning--logging-vehicles--g1': icon1239,\r\n 'warning--loop-270-degree--g1': icon1240,\r\n 'warning--loop-pretzel--g1': icon1241,\r\n 'warning--loose-road-surface--g1': icon1242,\r\n 'warning--loose-road-surface--g2': icon1243,\r\n 'warning--loose-road-surface--g3': icon1244,\r\n 'warning--loose-road-surface--g4': icon1245,\r\n 'warning--low-flying-aircraft--g1': icon1246,\r\n 'warning--low-flying-aircraft--g2': icon1247,\r\n 'warning--low-flying-aircraft--g3': icon1248,\r\n 'warning--low-flying-aircraft--g4': icon1249,\r\n 'warning--low-flying-aircraft--g5': icon1250,\r\n 'warning--low-flying-aircraft--g6': icon1251,\r\n 'warning--low-flying-aircraft--g7': icon1252,\r\n 'warning--low-flying-aircraft--g8': icon1253,\r\n 'warning--low-ground-clearance--g1': icon1254,\r\n 'warning--low-ground-clearance--g2': icon1255,\r\n 'warning--low-ground-clearance--g3': icon1256,\r\n 'warning--monkey-crossing--g1': icon1257,\r\n 'warning--motorcycles-crossing--g1': icon1258,\r\n 'warning--narrow-bridge--g1': icon1259,\r\n 'warning--narrow-bridge--g2': icon1260,\r\n 'warning--narrow-bridge--g3': icon1261,\r\n 'warning--no-passing-zone--g1': icon1262,\r\n 'warning--no-passing-zone--g2': icon1263,\r\n 'warning--occupied-lanes--g1': icon1264,\r\n 'warning--offset-roads--g1': icon1265,\r\n 'warning--offset-roads--g2': icon1266,\r\n 'warning--offset-roads--g3': icon1267,\r\n 'warning--offset-roads--g4': icon1268,\r\n 'warning--opening-or-swing-bridge--g1': icon1269,\r\n 'warning--opening-or-swing-bridge--g2': icon1270,\r\n 'warning--other-danger--g1': icon1271,\r\n 'warning--other-danger--g2': icon1272,\r\n 'warning--other-danger--g3': icon1273,\r\n 'warning--panda-crossing--g1': icon1274,\r\n 'warning--pass-left-or-right--g1': icon1275,\r\n 'warning--pass-left-or-right--g2': icon1276,\r\n 'warning--pass-left-or-right--g3': icon1277,\r\n 'warning--pavement-ahead--g1': icon1278,\r\n 'warning--pavement-ends--g1': icon1279,\r\n 'warning--pavement-ends--g2': icon1280,\r\n 'warning--pavement-ends--g3': icon1281,\r\n 'warning--pavement-ends--g4': icon1282,\r\n 'warning--pavement-ends--g5': icon1283,\r\n 'warning--pedestrians-crossing--g1': icon1284,\r\n 'warning--pedestrians-crossing--g4': icon1285,\r\n 'warning--pedestrians-crossing--g5': icon1286,\r\n 'warning--pedestrians-crossing--g6': icon1287,\r\n 'warning--pedestrians-crossing--g7': icon1288,\r\n 'warning--pedestrians-crossing--g8': icon1289,\r\n 'warning--pedestrians-crossing--g9': icon1290,\r\n 'warning--pedestrians-crossing--g10': icon1291,\r\n 'warning--pedestrians-crossing--g11': icon1292,\r\n 'warning--pedestrians-crossing--g12': icon1293,\r\n 'warning--playground--g1': icon1294,\r\n 'warning--playground--g3': icon1295,\r\n 'warning--polar-bear-crossing--g1': icon1296,\r\n 'warning--quay-or-river-bank--g1': icon1297,\r\n 'warning--quay-or-river-bank--g2': icon1298,\r\n 'warning--quay-or-river-bank--g3': icon1299,\r\n 'warning--quay-or-river-bank--g4': icon1300,\r\n 'warning--rabbit-crossing--g1': icon1301,\r\n 'warning--raccoon-crossing--g1': icon1302,\r\n 'warning--railroad-crossing--g1': icon1303,\r\n 'warning--railroad-crossing--g2': icon1304,\r\n 'warning--railroad-crossing--g3': icon1305,\r\n 'warning--railroad-crossing--g4': icon1306,\r\n 'warning--railroad-crossing-with-barriers--g1': icon1307,\r\n 'warning--railroad-crossing-with-barriers--g2': icon1308,\r\n 'warning--railroad-crossing-with-barriers--g3': icon1309,\r\n 'warning--railroad-crossing-with-barriers--g4': icon1310,\r\n 'warning--railroad-crossing-with-barriers--g5': icon1311,\r\n 'warning--railroad-crossing-with-barriers--g6': icon1312,\r\n 'warning--railroad-crossing-with-barriers--g7': icon1313,\r\n 'warning--railroad-crossing-without-barriers--g1': icon1314,\r\n 'warning--railroad-crossing-without-barriers--g2': icon1315,\r\n 'warning--railroad-crossing-without-barriers--g3': icon1316,\r\n 'warning--railroad-crossing-without-barriers--g4': icon1317,\r\n 'warning--railroad-crossing-without-barriers--g5': icon1318,\r\n 'warning--railroad-crossing-without-barriers--g6': icon1319,\r\n 'warning--railroad-intersection--g1': icon1320,\r\n 'warning--railroad-intersection--g2': icon1321,\r\n 'warning--railroad-intersection--g3': icon1322,\r\n 'warning--railroad-intersection--g4': icon1323,\r\n 'warning--railroad-intersection--g5': icon1324,\r\n 'warning--railroad-intersection--g6': icon1325,\r\n 'warning--railroad-intersection--g7': icon1326,\r\n 'warning--railroad-intersection--g8': icon1327,\r\n 'warning--railroad-intersection--g9': icon1328,\r\n 'warning--ramp-closed--g1': icon1329,\r\n 'warning--reduced-maximum-speed-limit--g1': icon1330,\r\n 'warning--reserved-lane--g1': icon1331,\r\n 'warning--restricted-zone--g1': icon1332,\r\n 'warning--reversible-lanes--g1': icon1333,\r\n 'warning--reversible-lanes--g2': icon1334,\r\n 'warning--rickshaws-crossing--g1': icon1335,\r\n 'warning--road-blocks--g1': icon1336,\r\n 'warning--road-bump--g1': icon1337,\r\n 'warning--road-bump--g2': icon1338,\r\n 'warning--road-bump--g3': icon1339,\r\n 'warning--road-bump-with-speed-limit--g1': icon1340,\r\n 'warning--road-closed--g3': icon1341,\r\n 'warning--road-narrows--g1': icon1342,\r\n 'warning--road-narrows--g2': icon1343,\r\n 'warning--road-narrows-left--g1': icon1344,\r\n 'warning--road-narrows-left--g2': icon1345,\r\n 'warning--road-narrows-left-ahead--g1': icon1346,\r\n 'warning--road-narrows-right--g1': icon1347,\r\n 'warning--road-narrows-right--g2': icon1348,\r\n 'warning--road-narrows-right-ahead--g1': icon1349,\r\n 'warning--road-toll-ahead--g1': icon1350,\r\n 'warning--road-widens--g1': icon1351,\r\n 'warning--road-widens-left--g1': icon1352,\r\n 'warning--road-widens-right--g1': icon1353,\r\n 'warning--roadworks--g1': icon1354,\r\n 'warning--roadworks--g2': icon1355,\r\n 'warning--roadworks--g3': icon1356,\r\n 'warning--roadworks--g5': icon1357,\r\n 'warning--roadworks--g6': icon1358,\r\n 'warning--roadworks--g8': icon1359,\r\n 'warning--roadworks--g9': icon1360,\r\n 'warning--roadworks--g10': icon1361,\r\n 'warning--roadworks--g11': icon1362,\r\n 'warning--roadworks-go-left-or-straight--g1': icon1363,\r\n 'warning--roadworks-go-right-or-straight--g1': icon1364,\r\n 'warning--roundabout--g1': icon1365,\r\n 'warning--roundabout--g2': icon1366,\r\n 'warning--roundabout--g3': icon1367,\r\n 'warning--roundabout--g4': icon1368,\r\n 'warning--roundabout--g5': icon1369,\r\n 'warning--roundabout--g6': icon1370,\r\n 'warning--roundabout--g7': icon1371,\r\n 'warning--ruts--g1': icon1372,\r\n 'warning--sand--g1': icon1373,\r\n 'warning--sand-drift--g1': icon1374,\r\n 'warning--school-zone--g2': icon1375,\r\n 'warning--severe-weather--g1': icon1376,\r\n 'warning--shared-lane-motorcycles-bicycles--g1': icon1377,\r\n 'warning--sharp-turn--g1': icon1378,\r\n 'warning--single-reverse-curve--g1': icon1379,\r\n 'warning--skewed-t-roads-left--g1': icon1380,\r\n 'warning--skewed-t-roads-left--g2': icon1381,\r\n 'warning--skewed-t-roads-left--g3': icon1382,\r\n 'warning--skewed-t-roads-right--g1': icon1383,\r\n 'warning--skewed-t-roads-right--g2': icon1384,\r\n 'warning--skewed-t-roads-right--g3': icon1385,\r\n 'warning--skiers--g1': icon1386,\r\n 'warning--skiers--g2': icon1387,\r\n 'warning--skiers--g3': icon1388,\r\n 'warning--slippery-bicycles--g1': icon1389,\r\n 'warning--slippery-motorcycles--g1': icon1390,\r\n 'warning--slippery-motorcycles--g2': icon1391,\r\n 'warning--slippery-road-surface--g1': icon1392,\r\n 'warning--slippery-road-surface--g2': icon1393,\r\n 'warning--slow--g1': icon1394,\r\n 'warning--snow-tractors--g1': icon1395,\r\n 'warning--snowmobiles--g1': icon1396,\r\n 'warning--snowmobiles--g2': icon1397,\r\n 'warning--snowmobiles--g3': icon1398,\r\n 'warning--snowmobiles-and-others--g1': icon1399,\r\n 'warning--soft-road-surface--g1': icon1400,\r\n 'warning--soft-road-surface--g2': icon1401,\r\n 'warning--soft-shoulder--g1': icon1402,\r\n 'warning--soft-shoulder--g2': icon1403,\r\n 'warning--soft-shoulder--g3': icon1404,\r\n 'warning--soft-shoulder--g4': icon1405,\r\n 'warning--speed-camera--g1': icon1406,\r\n 'warning--steep-ascent--g1': icon1407,\r\n 'warning--steep-ascent--g2': icon1408,\r\n 'warning--steep-ascent--g3': icon1409,\r\n 'warning--steep-ascent--g4': icon1410,\r\n 'warning--steep-ascent-and-descent--g1': icon1411,\r\n 'warning--steep-descent--g1': icon1412,\r\n 'warning--steep-descent--g2': icon1413,\r\n 'warning--steep-descent--g3': icon1414,\r\n 'warning--steep-descent--g4': icon1415,\r\n 'warning--steep-descent--g5': icon1416,\r\n 'warning--steep-descent--g6': icon1417,\r\n 'warning--stop-ahead--g1': icon1418,\r\n 'warning--stop-ahead--g3': icon1419,\r\n 'warning--stop-ahead--g4': icon1420,\r\n 'warning--stop-ahead--g5': icon1421,\r\n 'warning--stop-ahead--g6': icon1422,\r\n 'warning--t-roads--g1': icon1423,\r\n 'warning--t-roads--g2': icon1424,\r\n 'warning--tanks-crossing--g1': icon1425,\r\n 'warning--tanks-crossing--g2': icon1426,\r\n 'warning--texts--g1': icon1427,\r\n 'warning--texts--g2': icon1428,\r\n 'warning--texts--g3': icon1429,\r\n 'warning--towing--g1': icon1430,\r\n 'warning--tractors--g1': icon1431,\r\n 'warning--tractors--g2': icon1432,\r\n 'warning--tractors--g3': icon1433,\r\n 'warning--tractors--g4': icon1434,\r\n 'warning--tractors--g5': icon1435,\r\n 'warning--tractors--g6': icon1436,\r\n 'warning--tractors--g7': icon1437,\r\n 'warning--traffic-merges-at-signalized-intersections--g1': icon1438,\r\n 'warning--traffic-merges-left--g1': icon1439,\r\n 'warning--traffic-merges-left--g2': icon1440,\r\n 'warning--traffic-merges-left--g3': icon1441,\r\n 'warning--traffic-merges-left--g4': icon1442,\r\n 'warning--traffic-merges-left-and-right--g1': icon1443,\r\n 'warning--traffic-merges-left-buses--g1': icon1444,\r\n 'warning--traffic-merges-right--g1': icon1445,\r\n 'warning--traffic-merges-right--g2': icon1446,\r\n 'warning--traffic-merges-right--g3': icon1447,\r\n 'warning--traffic-merges-right-buses--g1': icon1448,\r\n 'warning--traffic-queues-likely--g1': icon1449,\r\n 'warning--traffic-queues-likely--g2': icon1450,\r\n 'warning--traffic-queues-likely--g3': icon1451,\r\n 'warning--traffic-queues-likely--g4': icon1452,\r\n 'warning--traffic-queues-likely--g5': icon1453,\r\n 'warning--traffic-signals--g1': icon1454,\r\n 'warning--traffic-signals--g2': icon1455,\r\n 'warning--traffic-signals--g3': icon1456,\r\n 'warning--traffic-signals--g4': icon1457,\r\n 'warning--traffic-signals--g5': icon1458,\r\n 'warning--traffic-signals--g6': icon1459,\r\n 'warning--traffic-slow--g1': icon1460,\r\n 'warning--trail-crossing--g1': icon1461,\r\n 'warning--trail-crossing--g2': icon1462,\r\n 'warning--trail-crossing--g3': icon1463,\r\n 'warning--trail-crossing--g4': icon1464,\r\n 'warning--trail-crossing--g5': icon1465,\r\n 'warning--trail-crossing--g6': icon1466,\r\n 'warning--trams-crossing--g1': icon1467,\r\n 'warning--trams-crossing--g2': icon1468,\r\n 'warning--triple-curve-left--g1': icon1469,\r\n 'warning--triple-curve-right--g1': icon1470,\r\n 'warning--triple-lanes-left-turn--g1': icon1471,\r\n 'warning--triple-lanes-left-turn-or-go-straight--g1': icon1472,\r\n 'warning--triple-lanes-right-turn--g1': icon1473,\r\n 'warning--triple-lanes-right-turn-or-go-straight--g1': icon1474,\r\n 'warning--triple-lanes-with-directions--g1': icon1475,\r\n 'warning--triple-reverse-curve-left--g1': icon1476,\r\n 'warning--triple-reverse-curve-right--g1': icon1477,\r\n 'warning--trucks-crossing--g1': icon1478,\r\n 'warning--trucks-crossing--g2': icon1479,\r\n 'warning--trucks-rollover--g1': icon1480,\r\n 'warning--trucks-rollover--g2': icon1481,\r\n 'warning--trucks-rollover--g3': icon1482,\r\n 'warning--trucks-rollover--g4': icon1483,\r\n 'warning--trucks-rollover--g5': icon1484,\r\n 'warning--tunnel--g1': icon1485,\r\n 'warning--tunnel--g2': icon1486,\r\n 'warning--tunnel--g3': icon1487,\r\n 'warning--tunnel--g4': icon1488,\r\n 'warning--tunnel--g5': icon1489,\r\n 'warning--tunnel--g6': icon1490,\r\n 'warning--tunnel--g7': icon1491,\r\n 'warning--turn-left--g1': icon1492,\r\n 'warning--turn-left--g2': icon1493,\r\n 'warning--turn-left--g3': icon1494,\r\n 'warning--turn-left-or-right--g1': icon1495,\r\n 'warning--turn-right--g1': icon1496,\r\n 'warning--turn-right--g2': icon1497,\r\n 'warning--turn-right--g3': icon1498,\r\n 'warning--two-way-traffic--g1': icon1499,\r\n 'warning--two-way-traffic--g2': icon1500,\r\n 'warning--two-way-traffic--g3': icon1501,\r\n 'warning--two-way-traffic--g4': icon1502,\r\n 'warning--two-way-traffic--g5': icon1503,\r\n 'warning--two-way-traffic--g6': icon1504,\r\n 'warning--u-turn--g1': icon1505,\r\n 'warning--u-turn--g2': icon1506,\r\n 'warning--uneven-road--g1': icon1507,\r\n 'warning--uneven-road--g2': icon1508,\r\n 'warning--uneven-roads-ahead--g1': icon1509,\r\n 'warning--vehicles-and-others--g1': icon1510,\r\n 'warning--vehicles-crossing--g1': icon1511,\r\n 'warning--village--g1': icon1512,\r\n 'warning--weight-limit--g5': icon1513,\r\n 'warning--weight-limit-per-tandem-axle--g1': icon1514,\r\n 'warning--width-restriction--g1': icon1515,\r\n 'warning--width-restriction--g2': icon1516,\r\n 'warning--width-restriction--g3': icon1517,\r\n 'warning--width-restriction--g4': icon1518,\r\n 'warning--wild-animals--g1': icon1519,\r\n 'warning--wild-animals--g2': icon1520,\r\n 'warning--wild-animals--g3': icon1521,\r\n 'warning--wild-animals--g4': icon1522,\r\n 'warning--wild-animals--g5': icon1523,\r\n 'warning--wild-animals--g6': icon1524,\r\n 'warning--wild-animals--g7': icon1525,\r\n 'warning--wild-animals--g8': icon1526,\r\n 'warning--wind--g1': icon1527,\r\n 'warning--winding-road--g1': icon1528,\r\n 'warning--winding-road-first-left--g1': icon1529,\r\n 'warning--winding-road-first-left--g2': icon1530,\r\n 'warning--winding-road-first-left--g3': icon1531,\r\n 'warning--winding-road-first-right--g1': icon1532,\r\n 'warning--winding-road-first-right--g2': icon1533,\r\n 'warning--winding-road-first-right--g3': icon1534,\r\n 'warning--winding-road-first-right--g4': icon1535,\r\n 'warning--winding-road-to-left--g1': icon1536,\r\n 'warning--winding-road-to-right--g1': icon1537,\r\n 'warning--wombat-crossing--g1': icon1538,\r\n 'warning--y-roads--g1': icon1539,\r\n 'warning--y-roads--g2': icon1540,\r\n 'warning--yield-ahead--g1': icon1541,\r\n 'warning--yield-ahead--g3': icon1542,\r\n};\r\n\r\nexport default textures;","export default __webpack_public_path__ + \"static/media/warning--road-narrows--g2.401c3994.png\";","export default __webpack_public_path__ + \"static/media/warning--road-narrows-left--g1.95c7edf0.png\";","export default __webpack_public_path__ + \"static/media/warning--road-narrows-left--g2.44b45332.png\";","export default __webpack_public_path__ + \"static/media/warning--road-narrows-left-ahead--g1.fd5aa709.png\";","export default __webpack_public_path__ + \"static/media/warning--road-narrows-right--g1.65ee547e.png\";","export default __webpack_public_path__ + \"static/media/warning--road-narrows-right--g2.87bc2427.png\";","export default __webpack_public_path__ + \"static/media/warning--road-narrows-right-ahead--g1.400397d6.png\";","export default __webpack_public_path__ + \"static/media/warning--road-toll-ahead--g1.6d55961a.png\";","export default __webpack_public_path__ + \"static/media/warning--road-widens--g1.c796ef79.png\";","export default __webpack_public_path__ + \"static/media/warning--road-widens-left--g1.ad78bfd0.png\";","export default __webpack_public_path__ + \"static/media/warning--road-widens-right--g1.0c6d1992.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks--g1.547c259b.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks--g2.1be718e9.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks--g3.2add7320.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks--g5.e61ab484.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks--g6.a04ce9d6.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks--g8.eb9766c2.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks--g9.f504fc37.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks--g10.1e4a14ca.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks--g11.65f561a7.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks-go-left-or-straight--g1.2206c5f2.png\";","export default __webpack_public_path__ + \"static/media/warning--roadworks-go-right-or-straight--g1.f4293c9a.png\";","export default __webpack_public_path__ + \"static/media/warning--roundabout--g1.363f83bb.png\";","export default __webpack_public_path__ + \"static/media/warning--roundabout--g2.c8ee3ec5.png\";","export default __webpack_public_path__ + \"static/media/warning--roundabout--g3.596a7a10.png\";","export default __webpack_public_path__ + \"static/media/warning--roundabout--g4.2102530e.png\";","export default __webpack_public_path__ + \"static/media/warning--roundabout--g5.ac2266ff.png\";","export default __webpack_public_path__ + \"static/media/warning--roundabout--g6.73900945.png\";","export default __webpack_public_path__ + \"static/media/warning--roundabout--g7.5c72c830.png\";","export default __webpack_public_path__ + \"static/media/warning--ruts--g1.01bce4e7.png\";","export default __webpack_public_path__ + \"static/media/warning--sand--g1.93715f38.png\";","export default __webpack_public_path__ + \"static/media/warning--sand-drift--g1.aaccd3fd.png\";","export default __webpack_public_path__ + \"static/media/warning--school-zone--g2.3c1c4bdf.png\";","export default __webpack_public_path__ + \"static/media/warning--severe-weather--g1.84f2d524.png\";","export default __webpack_public_path__ + \"static/media/warning--shared-lane-motorcycles-bicycles--g1.969c6687.png\";","export default __webpack_public_path__ + \"static/media/warning--sharp-turn--g1.9911721d.png\";","export default __webpack_public_path__ + \"static/media/warning--single-reverse-curve--g1.8219bd1a.png\";","export default __webpack_public_path__ + \"static/media/warning--skewed-t-roads-left--g1.b3a5ef81.png\";","export default __webpack_public_path__ + \"static/media/warning--skewed-t-roads-left--g2.57907e78.png\";","export default __webpack_public_path__ + \"static/media/warning--skewed-t-roads-left--g3.8810e2d3.png\";","export default __webpack_public_path__ + \"static/media/warning--skewed-t-roads-right--g1.48a80ba7.png\";","export default __webpack_public_path__ + \"static/media/warning--skewed-t-roads-right--g2.733f022e.png\";","export default __webpack_public_path__ + \"static/media/warning--skewed-t-roads-right--g3.544ec832.png\";","export default __webpack_public_path__ + \"static/media/warning--skiers--g1.e4cb5a02.png\";","export default __webpack_public_path__ + \"static/media/warning--skiers--g2.e0e46119.png\";","export default __webpack_public_path__ + \"static/media/warning--skiers--g3.7c53d442.png\";","export default __webpack_public_path__ + \"static/media/warning--slippery-bicycles--g1.44fe2519.png\";","export default __webpack_public_path__ + \"static/media/warning--slippery-motorcycles--g1.55df543d.png\";","export default __webpack_public_path__ + \"static/media/warning--slippery-motorcycles--g2.d5a4c642.png\";","export default __webpack_public_path__ + \"static/media/warning--slippery-road-surface--g1.be37c309.png\";","export default __webpack_public_path__ + \"static/media/warning--slippery-road-surface--g2.cc75b2dd.png\";","export default __webpack_public_path__ + \"static/media/warning--slow--g1.5f3c1df0.png\";","export default __webpack_public_path__ + \"static/media/warning--snow-tractors--g1.bb82eff0.png\";","export default __webpack_public_path__ + \"static/media/warning--snowmobiles--g1.d6ea0469.png\";","export default __webpack_public_path__ + \"static/media/warning--snowmobiles--g2.0f139051.png\";","export default __webpack_public_path__ + \"static/media/warning--snowmobiles--g3.7abe7cc6.png\";","export default __webpack_public_path__ + \"static/media/warning--snowmobiles-and-others--g1.8d956ed3.png\";","export default __webpack_public_path__ + \"static/media/warning--soft-road-surface--g1.85e53a3f.png\";","export default __webpack_public_path__ + \"static/media/warning--soft-road-surface--g2.31a8fbb4.png\";","export default __webpack_public_path__ + \"static/media/warning--soft-shoulder--g1.048f3f53.png\";","export default __webpack_public_path__ + \"static/media/warning--soft-shoulder--g2.f70869d1.png\";","export default __webpack_public_path__ + \"static/media/warning--soft-shoulder--g3.993109d1.png\";","export default __webpack_public_path__ + \"static/media/warning--soft-shoulder--g4.6b309255.png\";","export default __webpack_public_path__ + \"static/media/warning--speed-camera--g1.c247454b.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-ascent--g1.69baab13.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-ascent--g2.f04136e9.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-ascent--g3.ac4d27d9.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-ascent--g4.ab1d5bee.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-ascent-and-descent--g1.127e8fa0.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-descent--g1.1af3c7de.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-descent--g2.84c43533.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-descent--g3.dbc8ed30.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-descent--g4.fe8bc6de.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-descent--g5.53695588.png\";","export default __webpack_public_path__ + \"static/media/warning--steep-descent--g6.124238e6.png\";","export default __webpack_public_path__ + \"static/media/warning--stop-ahead--g1.19311854.png\";","export default __webpack_public_path__ + \"static/media/warning--stop-ahead--g3.f1875ba8.png\";","export default __webpack_public_path__ + \"static/media/warning--stop-ahead--g4.5c3b7c40.png\";","export default __webpack_public_path__ + \"static/media/warning--stop-ahead--g5.9f5a1393.png\";","export default __webpack_public_path__ + \"static/media/warning--stop-ahead--g6.78751205.png\";","export default __webpack_public_path__ + \"static/media/warning--t-roads--g1.02138011.png\";","export default __webpack_public_path__ + \"static/media/warning--t-roads--g2.056984e6.png\";","export default __webpack_public_path__ + \"static/media/warning--tanks-crossing--g1.ff076d31.png\";","export default __webpack_public_path__ + \"static/media/warning--tanks-crossing--g2.7f43e52c.png\";","export default __webpack_public_path__ + \"static/media/warning--texts--g1.f8515b5d.png\";","export default __webpack_public_path__ + \"static/media/warning--texts--g2.d6d56c78.png\";","export default __webpack_public_path__ + \"static/media/warning--texts--g3.14da2898.png\";","export default __webpack_public_path__ + \"static/media/warning--towing--g1.e4f069b4.png\";","export default __webpack_public_path__ + \"static/media/warning--tractors--g1.6ebffbec.png\";","export default __webpack_public_path__ + \"static/media/warning--tractors--g2.12c05fcc.png\";","export default __webpack_public_path__ + \"static/media/warning--tractors--g3.bc827995.png\";","export default __webpack_public_path__ + \"static/media/warning--tractors--g4.ca6b9ca8.png\";","export default __webpack_public_path__ + \"static/media/warning--tractors--g5.c35fe753.png\";","export default __webpack_public_path__ + \"static/media/warning--tractors--g6.80093d62.png\";","export default __webpack_public_path__ + \"static/media/warning--tractors--g7.c9d9396b.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-at-signalized-intersections--g1.15593cdb.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-left--g1.ad031968.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-left--g2.35d525d5.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-left--g3.aa5ed805.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-left--g4.b2ac0c8b.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-left-and-right--g1.b5ae91c4.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-left-buses--g1.bafa36cd.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-right--g1.09a3ead4.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-right--g2.3201b3fd.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-right--g3.c7ea5315.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-merges-right-buses--g1.dd325625.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-queues-likely--g1.2c06f6f5.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-queues-likely--g2.67e4ca2f.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-queues-likely--g3.85ad3584.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-queues-likely--g4.341dcd8c.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-queues-likely--g5.67bac08b.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-signals--g1.0847859b.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-signals--g2.da23a41a.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-signals--g3.675ee0a1.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-signals--g4.9b34ae82.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-signals--g5.3b152c9a.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-signals--g6.89426955.png\";","export default __webpack_public_path__ + \"static/media/warning--traffic-slow--g1.169e23bf.png\";","export default __webpack_public_path__ + \"static/media/warning--trail-crossing--g1.e429d378.png\";","export default __webpack_public_path__ + \"static/media/warning--trail-crossing--g2.8a7ddab9.png\";","export default __webpack_public_path__ + \"static/media/warning--trail-crossing--g3.67219fd7.png\";","export default __webpack_public_path__ + \"static/media/warning--trail-crossing--g4.07b92d0e.png\";","export default __webpack_public_path__ + \"static/media/warning--trail-crossing--g5.10b83374.png\";","export default __webpack_public_path__ + \"static/media/warning--trail-crossing--g6.5ae959ad.png\";","export default __webpack_public_path__ + \"static/media/warning--trams-crossing--g1.c211e5c2.png\";","export default __webpack_public_path__ + \"static/media/warning--trams-crossing--g2.10027951.png\";","export default __webpack_public_path__ + \"static/media/warning--triple-curve-left--g1.2b1378be.png\";","export default __webpack_public_path__ + \"static/media/warning--triple-curve-right--g1.2d533c31.png\";","export default __webpack_public_path__ + \"static/media/warning--triple-lanes-left-turn--g1.8bf1c712.png\";","export default __webpack_public_path__ + \"static/media/warning--triple-lanes-left-turn-or-go-straight--g1.f5c35777.png\";","export default __webpack_public_path__ + \"static/media/warning--triple-lanes-right-turn--g1.c58a09f1.png\";","export default __webpack_public_path__ + \"static/media/warning--triple-lanes-right-turn-or-go-straight--g1.4eea8ba7.png\";","export default __webpack_public_path__ + \"static/media/warning--triple-lanes-with-directions--g1.586f9802.png\";","export default __webpack_public_path__ + \"static/media/warning--triple-reverse-curve-left--g1.4cbc4d04.png\";","export default __webpack_public_path__ + \"static/media/warning--triple-reverse-curve-right--g1.0a1464ca.png\";","export default __webpack_public_path__ + \"static/media/warning--trucks-crossing--g1.14771128.png\";","export default __webpack_public_path__ + \"static/media/warning--trucks-crossing--g2.8ba4f009.png\";","export default __webpack_public_path__ + \"static/media/warning--trucks-rollover--g1.9615c47b.png\";","export default __webpack_public_path__ + \"static/media/warning--trucks-rollover--g2.a08fc624.png\";","export default __webpack_public_path__ + \"static/media/warning--trucks-rollover--g3.c0f762d7.png\";","export default __webpack_public_path__ + \"static/media/warning--trucks-rollover--g4.b6d137b4.png\";","export default __webpack_public_path__ + \"static/media/warning--trucks-rollover--g5.44727700.png\";","export default __webpack_public_path__ + \"static/media/warning--tunnel--g1.e271c799.png\";","export default __webpack_public_path__ + \"static/media/warning--tunnel--g2.1ac74efb.png\";","export default __webpack_public_path__ + \"static/media/warning--tunnel--g3.0d46880c.png\";","export default __webpack_public_path__ + \"static/media/warning--tunnel--g4.55d1ddf2.png\";","export default __webpack_public_path__ + \"static/media/warning--tunnel--g5.598ceb68.png\";","export default __webpack_public_path__ + \"static/media/warning--tunnel--g6.db4d3d0f.png\";","export default __webpack_public_path__ + \"static/media/warning--tunnel--g7.cdca6a34.png\";","export default __webpack_public_path__ + \"static/media/warning--turn-left--g1.1d607064.png\";","export default __webpack_public_path__ + \"static/media/warning--turn-left--g2.2a658ee0.png\";","export default __webpack_public_path__ + \"static/media/warning--turn-left--g3.f55b92bb.png\";","export default __webpack_public_path__ + \"static/media/warning--turn-left-or-right--g1.386986eb.png\";","export default __webpack_public_path__ + \"static/media/warning--turn-right--g1.acd9d2dc.png\";","export default __webpack_public_path__ + \"static/media/warning--turn-right--g2.71999a1f.png\";","export default __webpack_public_path__ + \"static/media/warning--turn-right--g3.df561544.png\";","export default __webpack_public_path__ + \"static/media/warning--two-way-traffic--g1.f6b90cf6.png\";","export default __webpack_public_path__ + \"static/media/warning--two-way-traffic--g2.d18e37c9.png\";","export default __webpack_public_path__ + \"static/media/warning--two-way-traffic--g3.04d6746c.png\";","export default __webpack_public_path__ + \"static/media/warning--two-way-traffic--g4.57cdc063.png\";","export default __webpack_public_path__ + \"static/media/warning--two-way-traffic--g5.1d4d5701.png\";","export default __webpack_public_path__ + \"static/media/warning--two-way-traffic--g6.444c4349.png\";","export default __webpack_public_path__ + \"static/media/warning--u-turn--g1.c962ec41.png\";","export default __webpack_public_path__ + \"static/media/warning--u-turn--g2.997231ed.png\";","export default __webpack_public_path__ + \"static/media/warning--uneven-road--g1.7ee9ceaa.png\";","export default __webpack_public_path__ + \"static/media/warning--uneven-road--g2.2107fedc.png\";","export default __webpack_public_path__ + \"static/media/warning--uneven-roads-ahead--g1.4444a9a8.png\";","export default __webpack_public_path__ + \"static/media/warning--vehicles-and-others--g1.5639870f.png\";","export default __webpack_public_path__ + \"static/media/warning--vehicles-crossing--g1.9f54b48e.png\";","export default __webpack_public_path__ + \"static/media/warning--village--g1.186803fe.png\";","export default __webpack_public_path__ + \"static/media/warning--weight-limit--g5.07efdfea.png\";","export default __webpack_public_path__ + \"static/media/warning--weight-limit-per-tandem-axle--g1.bce254f9.png\";","export default __webpack_public_path__ + \"static/media/warning--width-restriction--g1.4ce617a5.png\";","export default __webpack_public_path__ + \"static/media/warning--width-restriction--g2.3c708099.png\";","export default __webpack_public_path__ + \"static/media/warning--width-restriction--g3.8a82e40c.png\";","export default __webpack_public_path__ + \"static/media/warning--width-restriction--g4.88608eb2.png\";","export default __webpack_public_path__ + \"static/media/warning--wild-animals--g1.c0f70fcd.png\";","export default __webpack_public_path__ + \"static/media/warning--wild-animals--g2.76bbe024.png\";","export default __webpack_public_path__ + \"static/media/warning--wild-animals--g3.ed95b4b7.png\";","export default __webpack_public_path__ + \"static/media/warning--wild-animals--g4.85a2983f.png\";","export default __webpack_public_path__ + \"static/media/warning--wild-animals--g5.5e9cdace.png\";","export default __webpack_public_path__ + \"static/media/warning--wild-animals--g6.cdc986a1.png\";","export default __webpack_public_path__ + \"static/media/warning--wild-animals--g7.e116de1f.png\";","export default __webpack_public_path__ + \"static/media/warning--wild-animals--g8.c9822743.png\";","export default __webpack_public_path__ + \"static/media/warning--wind--g1.cbfbcd99.png\";","export default __webpack_public_path__ + \"static/media/warning--winding-road--g1.f80521c5.png\";","export default __webpack_public_path__ + \"static/media/warning--winding-road-first-left--g1.ece0736d.png\";","export default __webpack_public_path__ + \"static/media/warning--winding-road-first-left--g2.3b2df358.png\";","export default __webpack_public_path__ + \"static/media/warning--winding-road-first-left--g3.6e45aecc.png\";","export default __webpack_public_path__ + \"static/media/warning--winding-road-first-right--g1.39cf401f.png\";","export default __webpack_public_path__ + \"static/media/warning--winding-road-first-right--g2.53376994.png\";","export default __webpack_public_path__ + \"static/media/warning--winding-road-first-right--g3.2a1fde3f.png\";","export default __webpack_public_path__ + \"static/media/warning--winding-road-first-right--g4.0c7093c2.png\";","export default __webpack_public_path__ + \"static/media/warning--winding-road-to-left--g1.896aa6f8.png\";","export default __webpack_public_path__ + \"static/media/warning--winding-road-to-right--g1.6a71c0d8.png\";","export default __webpack_public_path__ + \"static/media/warning--wombat-crossing--g1.633523a4.png\";","export default __webpack_public_path__ + \"static/media/warning--y-roads--g1.1dc031ba.png\";","export default __webpack_public_path__ + \"static/media/warning--y-roads--g2.8994d575.png\";","export default __webpack_public_path__ + \"static/media/warning--yield-ahead--g1.798e142c.png\";","export default __webpack_public_path__ + \"static/media/warning--yield-ahead--g3.1cad1ee2.png\";","import icon0 from './beginn schiessuebungsraum.png';\r\nimport icon1 from './beginn schiessuebungsstrecke.png';\r\nimport icon2 from './doppelrhombus.png';\r\nimport icon3 from './doppelwinkel.png';\r\nimport icon4 from './ende schiessuebungsraum.png';\r\nimport icon5 from './ende schiessuebungsstrecke.png';\r\nimport icon6 from './rhombus.png';\r\nimport icon7 from './stellung feuerhalt.png';\r\nimport icon8 from './winkel.png';\r\n\r\nconst textures = {\r\n 'beginn schiessuebungsraum': icon0,\r\n 'beginn schiessuebungsstrecke': icon1,\r\n 'doppelrhombus': icon2,\r\n 'doppelwinkel': icon3,\r\n 'ende schiessuebungsraum': icon4,\r\n 'ende schiessuebungsstrecke': icon5,\r\n 'rhombus': icon6,\r\n 'stellung feuerhalt': icon7,\r\n 'winkel': icon8,\r\n};\r\n\r\nexport default textures;","export default __webpack_public_path__ + \"static/media/beginn schiessuebungsraum.461cbd1c.png\";","export default __webpack_public_path__ + \"static/media/beginn schiessuebungsstrecke.b0de6080.png\";","export default __webpack_public_path__ + \"static/media/doppelrhombus.0d62fd3b.png\";","export default __webpack_public_path__ + \"static/media/doppelwinkel.1256e63e.png\";","export default __webpack_public_path__ + \"static/media/ende schiessuebungsraum.1209f377.png\";","export default __webpack_public_path__ + \"static/media/ende schiessuebungsstrecke.27c37067.png\";","export default __webpack_public_path__ + \"static/media/rhombus.05d7f59c.png\";","export default __webpack_public_path__ + \"static/media/stellung feuerhalt.10b48150.png\";","export default __webpack_public_path__ + \"static/media/winkel.943a1586.png\";","export enum TagSize {\r\n XSmall = 0.25,\r\n Small = 0.5,\r\n Medium = 1,\r\n Large = 2,\r\n XLarge = 4,\r\n}","import {\r\n addAsset,\r\n addAssets,\r\n AssetInfo,\r\n AssetType,\r\n pointCloudType,\r\n CameraData,\r\n OrthoData,\r\n LineworkLayerData,\r\n XMLData,\r\n TagItemData,\r\n WebMapData,\r\n createAsset,\r\n createTags\r\n} from \"../redux/assets-slice\";\r\nimport {Parser} from 'xml2js';\r\nimport {dialog, fse, getTemporaryFile, glob, isStaticSite} from \"../electron-modules\";\r\nimport path from 'path';\r\nimport slash from 'slash';\r\nimport {hideBackdrop, showBackdrop, toast} from \"../app\";\r\nimport {PythonExecutable} from \"../executable\";\r\nimport LocalScene, { isValidProjection } from \"../viewer/js/projections\";\r\nimport { chunkedArray } from \"../viewer/js/utilities\";\r\nimport { loadProjectFile } from \".\";\r\nimport {\r\n IFCFileFormat,\r\n imageOrthoFormat,\r\n imagePlanarFormat,\r\n pointCloudFileFormats,\r\n configFileType,\r\n SHPFileFormat,\r\n DXFFileFormat,\r\n xmlFileFormat,\r\n projFileFormat\r\n} from \"../file-extensions\";\r\nimport { t } from \"../localization\";\r\nimport { readFileBuffer, readFileText } from \"../viewer/js/file-system-loader\";\r\nimport { Dispatch, nanoid } from \"@reduxjs/toolkit\";\r\nimport {curveDist, lineDist} from \"../viewer/js/measurements/land-xml-calculation\";\r\nimport { defaultTagTexture } from \"../viewer/textures/tag-icons\";\r\nimport { TagSize } from \"../types/tags\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useGlobalSettings } from \"../hooks\";\r\nimport { openExternalLink } from \"../urls\";\r\nimport { updateDataProjection, updateViewProjection } from \"../redux/projections-slice\";\r\n\r\ninterface ImageDetectResults {\r\n readonly pathFound: boolean;\r\n readonly imagePath: string;\r\n readonly imageExt: string;\r\n readonly hasImageExt: boolean;\r\n}\r\n\r\nconst DEFAULT_LAYER_COLOR = \"#FF0000\";\r\n\r\nexport const useAssetTools = () => {\r\n const dispatch = useDispatch();\r\n const {orthoQuality} = useGlobalSettings();\r\n\r\n const addAssetPaths = async (assetPaths: string[], folderID: string) => {\r\n let totalAssetsAdded = 0;\r\n\r\n const planarPaths = assetPaths.filter(isPlanarFile);\r\n totalAssetsAdded += await addPlanarFiles(planarPaths, folderID);\r\n\r\n const panoramicPaths = assetPaths.filter(isPanoramicFile);\r\n totalAssetsAdded += await addPanoramicFiles(panoramicPaths, folderID, false);\r\n\r\n const tagPaths = assetPaths.filter(isTagFile);\r\n totalAssetsAdded += await addTagCSVs(tagPaths, folderID, false);\r\n\r\n const pointCloudPaths = assetPaths.filter(isPointCloudFile);\r\n totalAssetsAdded += addPointCloudFiles(pointCloudPaths, folderID);\r\n\r\n const orthoPaths = assetPaths.filter(isOrthomosaicFile);\r\n totalAssetsAdded += await addOrthoFiles(orthoPaths, folderID);\r\n\r\n const modelPaths = assetPaths.filter(isModelFile);\r\n totalAssetsAdded += await addModelFiles(modelPaths, folderID);\r\n\r\n const xmlPaths = assetPaths.filter(isXmlFile);\r\n totalAssetsAdded += await addXMLFiles(xmlPaths, folderID);\r\n\r\n if (totalAssetsAdded === 0) return;\r\n\r\n toast.success(t(\"toast.added-project-files\", {\r\n count: totalAssetsAdded\r\n }));\r\n };\r\n\r\n const addFilePaths = (filePaths: string[], folderID: string) => {\r\n if (!filePaths || filePaths.length === 0) return;\r\n\r\n const configs = filePaths.filter(isConfigFile);\r\n const assetPaths = filePaths.filter(isAssetFile);\r\n const projections = filePaths.filter(isProjectionFile);\r\n\r\n if (configs.length > 0) {\r\n // Load first config file (ignore other files)\r\n const success = loadProjectFile(configs[0]);\r\n if (success) {\r\n toast.success(t(\"toast.load-config-file\"));\r\n }\r\n return;\r\n }\r\n\r\n if (projections.length > 0) {\r\n // Read projection from solv3d projection file\r\n const projectionPath = projections[0];\r\n const text = fse.readFileSync(projectionPath);\r\n const projection = JSON.parse(text);\r\n\r\n if (isValidProjection(projection.string)) {\r\n dispatch(updateDataProjection(projection));\r\n dispatch(updateViewProjection(projection));\r\n } else {\r\n toast.error(\"Invalid projection file\");\r\n }\r\n }\r\n\r\n if (assetPaths.length > 0) {\r\n // Add new assets\r\n addAssetPaths(assetPaths, folderID);\r\n }\r\n };\r\n\r\n const addWebSource = (name: string, data: WebMapData, folderID: string) => {\r\n dispatch(addAsset({\r\n folderID,\r\n name,\r\n path: null,\r\n type: AssetType.Webmap,\r\n data\r\n }));\r\n };\r\n\r\n const addModelFiles = async (assetPaths: string[], folderID: string) => {\r\n const ifcPaths = assetPaths.filter(isIFCFile);\r\n const shpPaths = assetPaths.filter(isSHPFile);\r\n const dxfPaths = assetPaths.filter(isDXFFile);\r\n\r\n let modelsAdded = 0;\r\n modelsAdded += await addIFCFiles(dispatch, ifcPaths, folderID);\r\n modelsAdded += await addSHPFiles(dispatch, shpPaths, folderID);\r\n modelsAdded += await addDXFFiles(dispatch, dxfPaths, folderID);\r\n\r\n return modelsAdded;\r\n };\r\n\r\n const addPointCloudFiles = (assetPaths: string[], folderID: string) => {\r\n let assetsList = [] as AssetInfo[];\r\n\r\n assetPaths.forEach(pointPath => {\r\n const extension = path.extname(pointPath).slice(1);\r\n const type = pointCloudType(extension);\r\n const fileName = path.basename(pointPath);\r\n\r\n if (type === AssetType.Encompass) {\r\n pointPath = path.dirname(pointPath);\r\n if (fileName !== \"r.idx\") {\r\n toast.error(\"Error loading points. Expected filename is r.idx\");\r\n return;\r\n }\r\n }\r\n\r\n if (type === AssetType.Potree) {\r\n pointPath = path.dirname(pointPath);\r\n if (fileName !== \"octree.bin\") {\r\n toast.error(\"Error loading points. Expected filename is octree.bin\");\r\n return;\r\n }\r\n }\r\n\r\n assetsList.push({\r\n folderID,\r\n name: fileName,\r\n path: pointPath,\r\n type\r\n });\r\n });\r\n\r\n dispatch(addAssets(assetsList));\r\n return assetPaths.length;\r\n };\r\n\r\n const addOrthoFiles = async (assetPaths: string[], folderID: string) => {\r\n showBackdrop();\r\n\r\n let numAdded = await addOrthoBatch(dispatch,\r\n assetPaths, folderID, orthoQuality);\r\n\r\n hideBackdrop();\r\n\r\n return numAdded;\r\n };\r\n\r\n const addTagCSVs = async (assetPaths: string[], folderID: string, catchErrors = true) => {\r\n showBackdrop();\r\n\r\n let numAdded = 0;\r\n\r\n for (const assetPath of assetPaths) {\r\n try {\r\n const tags = await addTagCSV(dispatch, assetPath, folderID);\r\n numAdded += 1;\r\n toast.success(t(\"toast.added-new-tags\", {\r\n count: tags.length\r\n }));\r\n } catch (result) {\r\n if (!catchErrors) continue;\r\n const filename = path.basename(assetPath);\r\n const {reason, data} = result;\r\n\r\n if (reason === 'missing_headers') {\r\n toast.error(t(\"toast.tag-missing-header\", {\r\n filename,\r\n missingHeaders: data.join(', ')\r\n }));\r\n } else if (reason === 'invalid_rows') {\r\n toast.error(t(\"toast.tag-invalid-row\", {\r\n filename,\r\n lineNumber: data[0].row_number,\r\n lineText: data[0].data\r\n }));\r\n } else if (reason === 'no_data') {\r\n toast.error(t(\"toast.tag-no-data\", {\r\n filename\r\n }));\r\n }\r\n }\r\n }\r\n\r\n hideBackdrop();\r\n\r\n return numAdded;\r\n };\r\n\r\n const addPanoramicFiles = async (assetPaths: string[], folderID: string, catchErrors = true) => {\r\n showBackdrop();\r\n\r\n let numAdded = 0;\r\n\r\n for (const assetPath of assetPaths) {\r\n try {\r\n await addPanoramicFile(dispatch, assetPath, folderID);\r\n numAdded += 1;\r\n } catch (event) {\r\n if (!catchErrors) continue;\r\n const fileName = path.basename(assetPath);\r\n\r\n if (event.pathError) {\r\n toast.error(t(\"toast.import-csv-path-error\", {\r\n path: fileName\r\n }));\r\n } else {\r\n toast.error(t(\"toast.import-csv-parse-error\", {\r\n path: fileName\r\n }));\r\n }\r\n }\r\n }\r\n\r\n hideBackdrop();\r\n\r\n return numAdded;\r\n };\r\n\r\n const addPlanarFiles = async (assetPaths: string[], folderID: string) => {\r\n showBackdrop();\r\n\r\n let numAdded = 0;\r\n for (const assetPath of assetPaths) {\r\n const added = await addPlanarFile(dispatch, assetPath, folderID);\r\n if (added) {\r\n numAdded += 1;\r\n } else {\r\n const fileName = path.basename(assetPath);\r\n toast.error(t(\"toast.import-planar-error\", {\r\n path: fileName\r\n }));\r\n }\r\n }\r\n\r\n hideBackdrop();\r\n\r\n return numAdded;\r\n };\r\n\r\n const addXMLFiles = async (assetPaths: string[], folderID: string) => {\r\n showBackdrop();\r\n\r\n let numAdded = 0;\r\n\r\n for (const assetPath of assetPaths) {\r\n const added = await addXMLFile(dispatch, assetPath, folderID);\r\n if (added) {\r\n numAdded++;\r\n }\r\n }\r\n\r\n hideBackdrop();\r\n\r\n return numAdded;\r\n };\r\n\r\n return {\r\n addAssetPaths,\r\n addFilePaths,\r\n addModelFiles,\r\n addPointCloudFiles,\r\n addOrthoFiles,\r\n addTagCSVs,\r\n addPanoramicFiles,\r\n addPlanarFiles,\r\n addXMLFiles,\r\n addWebSource\r\n };\r\n};\r\n\r\n/** Save a file based on name. Works for website and compiled exe */\r\nexport const downloadFile = async (name: string, data, fileType: string, fileFilter) => {\r\n if (isStaticSite) {\r\n const contentType = `data:text/${fileType};charset=utf-8`;\r\n const content = `${contentType},${encodeURIComponent(data)}`;\r\n openExternalLink(content, {name});\r\n } else {\r\n try {\r\n const savePath = await getPathFromDialog(name, fileFilter);\r\n if (!savePath) return false;\r\n\r\n await fse.writeFile(savePath, data);\r\n } catch {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst getPathFromDialog = async (name, filter) => {\r\n const result = await dialog.showSaveDialog({\r\n defaultPath: name,\r\n filters: filter,\r\n });\r\n\r\n const {filePath, canceled} = result;\r\n if (canceled || !filePath) return;\r\n\r\n const savePath = slash(filePath);\r\n return savePath;\r\n};\r\n\r\nexport const pathWithExtension = (filename, extension) => {\r\n const basename = filename.replace(/\\.[^.$]+$/, '');\r\n return `${basename}.${extension}`;\r\n};\r\n\r\nexport const isAssetFile = (filename) => {\r\n return isPanoramicFile(filename)\r\n || isTagFile(filename)\r\n || isPlanarFile(filename)\r\n || isPointCloudFile(filename)\r\n || isOrthomosaicFile(filename)\r\n || isModelFile(filename)\r\n || isXmlFile(filename);\r\n};\r\n\r\nexport const isModelFile = (filename) => {\r\n return isIFCFile(filename)\r\n || isSHPFile(filename)\r\n || isDXFFile(filename);\r\n};\r\n\r\nexport const isPanoramicFile = (filename) => {\r\n return isCSVFile(filename)\r\n || isTXTFile(filename)\r\n || isRZMLFile(filename)\r\n || isODMFile(filename);\r\n};\r\n\r\nconst isTagFile = filename => {\r\n return isCSVFile(filename);\r\n};\r\n\r\nexport const isCSVFile = filename => {\r\n return path.extname(filename) === '.csv';\r\n};\r\n\r\nexport const isTXTFile = filename => {\r\n return path.extname(filename) === '.txt';\r\n};\r\n\r\nexport const isRZMLFile = filename => {\r\n return path.extname(filename) === '.rzml';\r\n};\r\n\r\nexport const isODMFile = filename => {\r\n return path.basename(filename) === \"shots.geojson\";\r\n};\r\n\r\nexport const isIFCFile = (filename) => {\r\n const extension = path.extname(filename).slice(1);\r\n return extension === IFCFileFormat;\r\n};\r\n\r\nexport const isSHPFile = (filename) => {\r\n const extension = path.extname(filename).slice(1);\r\n return extension === SHPFileFormat;\r\n};\r\n\r\nexport const isDXFFile = (filename) => {\r\n const extension = path.extname(filename).slice(1);\r\n return extension === DXFFileFormat;\r\n};\r\n\r\nexport const isConfigFile = (filename) => {\r\n const extension = path.extname(filename).slice(1);\r\n return extension === configFileType;\r\n};\r\n\r\nexport const isProjectionFile = (filename) => {\r\n const extension = path.extname(filename).slice(1);\r\n return projFileFormat.indexOf(extension) !== -1;\r\n};\r\n\r\nexport const isPlanarFile = (filename) => {\r\n const extension = path.extname(filename).slice(1);\r\n return imagePlanarFormat.indexOf(extension) !== -1;\r\n};\r\n\r\nexport const isPointCloudFile = (filename) => {\r\n const extension = path.extname(filename).slice(1);\r\n return pointCloudFileFormats.indexOf(extension) !== -1;\r\n};\r\n\r\nexport const isOrthomosaicFile = (filename) => {\r\n const extension = path.extname(filename).slice(1);\r\n return imageOrthoFormat.indexOf(extension) !== -1;\r\n};\r\n\r\nexport const isXmlFile = (filename) => {\r\n const extension = path.extname(filename).slice(1);\r\n return extension === xmlFileFormat;\r\n};\r\n\r\nconst getDXFLayerNames = (text): Promise<{name: string, color: string}[]> => {\r\n return new Promise((resolve, reject) => {\r\n const workerURL = \"workers/dxf-reader.js\";\r\n let worker = new Worker(`${process.env.PUBLIC_URL}/${workerURL}`);\r\n\r\n worker.onmessage = event => {\r\n const {success, response} = event.data;\r\n\r\n if (success) {\r\n resolve(response);\r\n } else {\r\n console.error(response);\r\n reject(response);\r\n }\r\n };\r\n\r\n const data = {text, type: \"layers\"};\r\n worker.postMessage(data);\r\n });\r\n};\r\n\r\nconst getSHPLayerNames = (buffer) : Promise => {\r\n return new Promise((resolve, reject) => {\r\n const workerURL = \"workers/shp-reader.js\";\r\n let worker = new Worker(`${process.env.PUBLIC_URL}/${workerURL}`);\r\n\r\n worker.onmessage = event => {\r\n const {success, response} = event.data;\r\n\r\n if (success) {\r\n resolve(response);\r\n } else {\r\n console.error(response);\r\n reject(response);\r\n }\r\n };\r\n\r\n const data = {dbf: buffer, type: \"layers\"};\r\n worker.postMessage(data, [data.dbf]);\r\n });\r\n};\r\n\r\nconst addIFCFiles = async (dispatch: Dispatch, assetPaths: string[], folderID: string) => {\r\n let assetsList = [] as AssetInfo[];\r\n\r\n assetPaths.forEach(assetPath => {\r\n assetsList.push({\r\n folderID,\r\n name: path.basename(assetPath),\r\n path: assetPath,\r\n type: AssetType.IFC\r\n });\r\n });\r\n\r\n dispatch(addAssets(assetsList));\r\n return assetPaths.length;\r\n};\r\n\r\nconst addDXFFiles = async (dispatch: Dispatch, assetPaths: string[], folderID: string) => {\r\n let assetsList = [] as AssetInfo[];\r\n\r\n showBackdrop();\r\n\r\n for (let assetPath of assetPaths) {\r\n const fileName = path.basename(assetPath);\r\n\r\n try {\r\n const text = await readFileText(assetPath);\r\n const layers = await getDXFLayerNames(text);\r\n\r\n const layerData = layers.map(layer => {\r\n return {\r\n id: nanoid(),\r\n name: layer.name,\r\n visible: true,\r\n color: layer.color\r\n };\r\n }) as LineworkLayerData[];\r\n\r\n assetsList.push({\r\n folderID,\r\n name: fileName,\r\n path: assetPath,\r\n data: layerData,\r\n type: AssetType.DXF\r\n });\r\n } catch(err) {\r\n\r\n toast.error(t(\"toast.import-dxf-error\", {\r\n path: fileName\r\n }));\r\n }\r\n }\r\n\r\n hideBackdrop();\r\n\r\n dispatch(addAssets(assetsList));\r\n return assetsList.length;\r\n};\r\n\r\nconst addSHPFiles = async (dispatch: Dispatch, assetPaths: string[], folderID: string) => {\r\n let assetsList = [] as AssetInfo[];\r\n\r\n showBackdrop();\r\n\r\n for (let assetPath of assetPaths) {\r\n const fileName = path.basename(assetPath);\r\n\r\n try {\r\n const dbfPath = pathWithExtension(assetPath, \"dbf\");\r\n const buffer = await readFileBuffer(dbfPath);\r\n const layers = await getSHPLayerNames(buffer);\r\n\r\n const layerData = layers.map(layer => {\r\n return {\r\n id: nanoid(),\r\n name: layer,\r\n visible: true,\r\n color: DEFAULT_LAYER_COLOR\r\n };\r\n }) as LineworkLayerData[];\r\n\r\n assetsList.push({\r\n folderID,\r\n name: fileName,\r\n path: assetPath,\r\n data: layerData,\r\n type: AssetType.SHP\r\n });\r\n } catch(err) {\r\n\r\n toast.error(t(\"toast.import-shp-error\", {\r\n path: fileName\r\n }));\r\n }\r\n }\r\n\r\n hideBackdrop();\r\n\r\n dispatch(addAssets(assetsList));\r\n return assetsList.length;\r\n};\r\n\r\nconst addOrthoBatch = async (dispatch: Dispatch, assetPaths: string[], folderID: string, orthoQuality: number): Promise => {\r\n if (assetPaths.length === 0) {\r\n return 0;\r\n }\r\n\r\n return new Promise(async resolve => {\r\n const exe = new PythonExecutable();\r\n\r\n let response;\r\n let commands = [\r\n \"-p\", \"convert_geotiff\",\r\n \"--image_paths\", assetPaths,\r\n \"--output_scale\", orthoQuality\r\n ];\r\n\r\n let numAdded = 0;\r\n\r\n exe.run({\r\n commands,\r\n onLine: jsonData => {\r\n if (jsonData) {\r\n response = jsonData;\r\n }\r\n },\r\n onClose: () => {\r\n if (!response) {\r\n response = [];\r\n }\r\n\r\n let assetsList = [] as AssetInfo[];\r\n\r\n response.forEach(geotiff => {\r\n const assetPath = slash(geotiff.file_path);\r\n const fileName = path.basename(assetPath);\r\n\r\n if (geotiff.error) {\r\n toast.error(t(`toast.${geotiff.error}`, {\r\n path: fileName\r\n }));\r\n return;\r\n }\r\n\r\n const {corners, base64, width, height, base64_split,\r\n scale_x, scale_y, width_original, height_original} = geotiff;\r\n\r\n const orthoData = {\r\n imageBounds: corners,\r\n imageDataSplit: base64_split,\r\n imageData: base64,\r\n imageSize: [width, height],\r\n imageSizeOriginal: [width_original, height_original],\r\n imagePath: assetPath,\r\n scaleX: scale_x,\r\n scaleY: scale_y,\r\n } as OrthoData;\r\n\r\n assetsList.push({\r\n folderID,\r\n name: fileName,\r\n path: assetPath,\r\n type: AssetType.OrthoMosaic,\r\n data: orthoData\r\n });\r\n\r\n numAdded += 1;\r\n });\r\n\r\n dispatch(addAssets(assetsList));\r\n resolve(numAdded);\r\n }\r\n });\r\n });\r\n};\r\n\r\nconst addPlanarFile = (dispatch: Dispatch, assetPath: string, folderID: string): Promise => {\r\n return new Promise(async resolve => {\r\n const text = await fse.readFile(assetPath, {encoding: 'utf8'});\r\n\r\n let config;\r\n let cameras;\r\n\r\n try {\r\n let decoded = JSON.parse(text);\r\n config = decoded.config;\r\n cameras = decoded.data;\r\n } catch {\r\n resolve(false);\r\n return;\r\n }\r\n\r\n const numCameras = cameras.length;\r\n if (numCameras === 0) {\r\n resolve(false);\r\n return;\r\n }\r\n\r\n let cameraNames = cameras.map(x => x[0]);\r\n let {pathFound, imagePath, imageExt, hasImageExt}\r\n = await detectImagePath(assetPath, cameraNames);\r\n\r\n if (!pathFound) {\r\n resolve(false);\r\n return;\r\n }\r\n\r\n let cameraData: CameraData[] = [];\r\n\r\n for (let i=0;i => {\r\n return new Promise((resolve, reject) => {\r\n const exe = new PythonExecutable();\r\n\r\n let response;\r\n const inputPath = assetPath;\r\n const outputPath = getTemporaryFile(\"csv\");\r\n const projection = LocalScene.engineStyleProjection(LocalScene.dataProjection);\r\n\r\n let commands = [\r\n \"-p\", \"convert_encompass_csv\",\r\n \"--input_file\", inputPath,\r\n \"--output_file\", outputPath,\r\n \"--projection\", projection\r\n ];\r\n\r\n exe.run({\r\n commands,\r\n onLine: jsonData => {\r\n response = jsonData;\r\n },\r\n onClose: async () => {\r\n if (!response) {\r\n reject({pathError: false});\r\n return;\r\n }\r\n\r\n let cameraData: CameraData[] = [];\r\n\r\n const cameras = response.csv_data;\r\n const estimatedPath = response.estimated_path;\r\n\r\n const numCameras = cameras.length;\r\n if (numCameras === 0) {\r\n reject({pathError: false});\r\n return;\r\n }\r\n\r\n let cameraNames = cameras.map(x => x.name);\r\n let {pathFound, imagePath, imageExt, hasImageExt}\r\n = await detectImagePath(assetPath, cameraNames, estimatedPath);\r\n\r\n if (!pathFound) {\r\n reject({pathError: true});\r\n return;\r\n }\r\n\r\n // Update final camera data path / filenames\r\n for (let i=0;i {\r\n const parser = new Parser({\r\n explicitChildren:true,\r\n preserveChildrenOrder: true\r\n });\r\n\r\n let text = await fse.readFile(assetPath, {encoding: 'utf8'});\r\n let textAll = String(text);\r\n let encoding = textAll.split('?>')[0].split('encoding=\"')[1].split('\"')[0];\r\n\r\n if (encoding !== 'utf-8') {\r\n if (encoding === 'iso-8859-1') {\r\n text = await fse.readFile(assetPath, {encoding: 'latin1'});\r\n } else {\r\n toast.error(t(\"dialog.xml-file-encoding-error\"));\r\n return false;\r\n }\r\n }\r\n\r\n try {\r\n let xmlJSON = await parser.parseStringPromise(text);\r\n if (!(\"LandXML\" in xmlJSON)) {\r\n toast.error(t(\"dialog.xml-file-load-error\"));\r\n return false;\r\n }\r\n\r\n xmlJSON = xmlJSON.LandXML;\r\n\r\n let xmlData = {\r\n info: xmlJSON.$,\r\n units: xmlJSON.Units[0].$$[0].$,\r\n alignments: [],\r\n enu: false\r\n } as XMLData;\r\n\r\n xmlJSON.Alignments[0].Alignment.forEach(alignment => {\r\n let alignObject = {\r\n id: nanoid(),\r\n name: alignment.$.name,\r\n length: parseFloat(alignment.$.length),\r\n staStart: parseFloat(alignment.$.staStart),\r\n about: alignment.$.desc,\r\n geometry: []\r\n };\r\n\r\n let geometry = alignment.CoordGeom[0].$$;\r\n\r\n if (Array.isArray(geometry)) {\r\n geometry.forEach(geom => {\r\n let geometryElement = {shapeType: geom['#name']};\r\n let dollarSignKeys = Object.keys(geom.$);\r\n let featureKeys = Object.keys(geom).filter(\r\n key=> ((key !== '$') && (key !== '$$') && (key !== '#name')));\r\n dollarSignKeys.forEach(key$ => {\r\n let aboutValue = geom.$[key$];\r\n aboutValue = !isNaN(parseFloat(aboutValue))\r\n ? parseFloat(aboutValue)\r\n : aboutValue;\r\n\r\n geometryElement[key$] = aboutValue;\r\n });\r\n\r\n featureKeys.forEach(fKey => {\r\n let coordValue = geom[fKey];\r\n let splitCoordValue;\r\n let tempValue;\r\n if (Object.keys(coordValue[0]).includes('$')) {\r\n tempValue = String(coordValue[0]['_']);\r\n } else {\r\n tempValue = String(coordValue[0]);\r\n }\r\n\r\n let newLineSep = tempValue.split('\\n');\r\n let recombine = newLineSep.join(' ');\r\n splitCoordValue = recombine.split(' ');\r\n let coordValueCorrected = [];\r\n splitCoordValue.forEach(scv=> {\r\n if (!isNaN(parseFloat(scv))) {\r\n coordValueCorrected.push(parseFloat(scv));\r\n }\r\n });\r\n if (coordValueCorrected.length > 0) {\r\n geometryElement[fKey] = coordValueCorrected;\r\n }\r\n });\r\n alignObject.geometry.push(geometryElement);\r\n });\r\n }\r\n\r\n xmlData.alignments.push(alignObject);\r\n });\r\n\r\n // Checks to see if length and staStart attributes were correctly added in\r\n // xml file, and if not, manually calculates them.\r\n\r\n let overwriteLength = false;\r\n let overwriteStaStart = false;\r\n\r\n xmlData.alignments.forEach(alignment => {\r\n let staStart = alignment.staStart;\r\n alignment.geometry.forEach(geom => {\r\n let keys = Object.keys(geom);\r\n if (!keys.includes(\"staStart\") || overwriteStaStart) {\r\n geom['staStart'] = staStart;\r\n overwriteStaStart = true;\r\n let length = 0;\r\n if (!keys.includes(\"length\") || overwriteLength) {\r\n overwriteLength = true;\r\n if (geom['shapeType'] === \"Line\") {\r\n length = lineDist(geom);\r\n } else if (geom['shapeType'] === \"Curve\") {\r\n length = curveDist(geom);\r\n }\r\n }\r\n if (overwriteLength) {\r\n geom['length'] = length;\r\n }\r\n if (overwriteStaStart) {\r\n staStart += length;\r\n }\r\n }\r\n geom['checked'] = 1;\r\n });\r\n });\r\n\r\n dispatch(addAsset({\r\n folderID,\r\n name: path.basename(assetPath),\r\n path: assetPath,\r\n type: AssetType.LandXML,\r\n data: xmlData\r\n }));\r\n\r\n return true;\r\n } catch {\r\n toast.error(t(\"dialog.xml-file-load-error\"));\r\n return false;\r\n }\r\n};\r\n\r\nconst addTagCSV = async (dispatch, assetPath: string, folderID: string) : Promise => {\r\n return new Promise((resolve, reject) => {\r\n let results = {\r\n valid_tags: [],\r\n invalid_rows: [],\r\n missing_headers: []\r\n };\r\n\r\n new PythonExecutable().run({\r\n commands: ['-p', 'parse_tag_csv', '--path', assetPath],\r\n onLine: data => {\r\n if (data) {\r\n results = data;\r\n }\r\n },\r\n onClose: async () => {\r\n if (results.valid_tags.length === 0) {\r\n reject({reason: 'missing_headers', data: results.missing_headers});\r\n } else if (results.invalid_rows.length > 0) {\r\n reject({reason: 'invalid_rows', data: results.invalid_rows});\r\n } else if (results.missing_headers.length > 0) {\r\n reject({reason: 'no_data'});\r\n } else {\r\n const newTags = results.valid_tags.map(data => {\r\n const {name, comment, x, y} = data;\r\n\r\n const tag = {\r\n id: nanoid(),\r\n name,\r\n comment,\r\n x,\r\n y,\r\n date: new Date().toISOString(),\r\n sceneState: null\r\n } as TagItemData;\r\n\r\n if (\"z\" in data) {\r\n tag.z = data.z;\r\n }\r\n\r\n return tag;\r\n });\r\n\r\n // Create new tag collection\r\n const asset = await dispatch(createAsset({\r\n folderID,\r\n name: path.basename(assetPath),\r\n path: assetPath,\r\n type: AssetType.Tag,\r\n size: TagSize.Medium,\r\n texture: defaultTagTexture\r\n }));\r\n\r\n // Add new tags to collection\r\n await dispatch(createTags({\r\n assetID: asset.id,\r\n tags: newTags\r\n }));\r\n\r\n resolve(results.valid_tags);\r\n }\r\n }\r\n });\r\n });\r\n};\r\n\r\nexport const openDialogMulti = (filter): Promise => {\r\n return dialog.showOpenDialog( {\r\n filters: filter,\r\n properties: ['openFile', 'multiSelections']\r\n }).then(result => {\r\n if (result.canceled) {\r\n return [];\r\n }\r\n\r\n const filePaths = result.filePaths.map(path => slash(path));\r\n return filePaths;\r\n }).catch(() => {\r\n dialog.showErrorBox(t(\"dialog.general-error-title\"), t(\"dialog.file-load-error\"));\r\n return [];\r\n });\r\n};\r\n\r\nexport const openDialogFile = (filter): Promise => {\r\n return dialog.showOpenDialog( {\r\n filters: filter,\r\n properties: ['openFile']\r\n }).then(result => {\r\n if (result.canceled) {\r\n return null;\r\n }\r\n\r\n const filePath = slash(result.filePaths[0]);\r\n return filePath;\r\n }).catch(() => {\r\n dialog.showErrorBox(t(\"dialog.general-error-title\"), t(\"dialog.file-load-error\"));\r\n return null;\r\n });\r\n};\r\n\r\nexport const openDialogFolder = (): Promise<{directoryPath: string, filePaths: string[]}> => {\r\n return new Promise((resolve) => {\r\n\r\n dialog.showOpenDialog({\r\n properties: ['openDirectory']\r\n }).then(async result => {\r\n if (result.canceled) {\r\n resolve({\r\n directoryPath: '',\r\n filePaths: []\r\n });\r\n\r\n return;\r\n }\r\n\r\n const filePath = slash(result.filePaths[0]);\r\n const filePaths = await parseDirectory(filePath);\r\n\r\n resolve({\r\n directoryPath: filePath,\r\n filePaths: filePaths\r\n });\r\n }).catch(() => {\r\n dialog.showErrorBox(t(\"dialog.general-error-title\"), t(\"dialog.file-load-error\"));\r\n return null;\r\n });\r\n });\r\n};\r\n\r\nexport const openDirectory = (): Promise => {\r\n return dialog.showOpenDialog({\r\n properties: [\"openDirectory\"]\r\n }).then(result => {\r\n if (result.canceled) {\r\n return null;\r\n }\r\n if (result.filePaths) {\r\n const outputFolder = slash(result.filePaths[0]);\r\n return outputFolder;\r\n }\r\n\r\n return null;\r\n });\r\n};\r\n\r\nconst parseDirectory = async (directoryPath: string): Promise => {\r\n const entries = await fse.readdir(directoryPath, {withFileTypes: true});\r\n\r\n const files = entries\r\n .filter(entry => entry.isFile())\r\n .map(file => path.join(directoryPath, file.name));\r\n\r\n const directories = entries\r\n .filter(entry => entry.isDirectory())\r\n .map(directory => path.join(directoryPath, directory.name));\r\n\r\n for (let folder of directories) {\r\n files.push(...await parseDirectory(folder));\r\n }\r\n\r\n return files;\r\n};\r\n\r\nconst checkImagePath = (directory, filenames, suffix, searchDepth = 3) => {\r\n const results = {\r\n success: false,\r\n duplicate: false,\r\n imagePath: null,\r\n imageExt: null\r\n };\r\n\r\n const singleFolderSearch = searchDepth === 1;\r\n\r\n let dirSeperator = \"\";\r\n for (let depth = 0; depth < searchDepth; depth++) {\r\n if (depth > 0) {\r\n dirSeperator += \"/*\";\r\n }\r\n\r\n let paths;\r\n\r\n if (singleFolderSearch && (filenames.length > 1)) {\r\n for (let subset of chunkedArray(filenames, 500)) {\r\n const filenameQuery = `{${subset.join(\",\")}}`;\r\n const globPath = `${dirSeperator}/${filenameQuery}${suffix}`;\r\n paths = glob.sync(globPath, {\r\n cwd: directory,\r\n root: directory\r\n });\r\n\r\n if (paths.length > 0) {\r\n break;\r\n }\r\n }\r\n } else {\r\n const globPath = `${dirSeperator}/${filenames[0]}${suffix}`;\r\n paths = glob.sync(globPath, {\r\n cwd: directory,\r\n root: directory\r\n });\r\n }\r\n\r\n let singleImageValid = paths.length === 1;\r\n let multiImageValid = singleFolderSearch && (paths.length > 0);\r\n\r\n if (singleImageValid || multiImageValid) {\r\n results.success = true;\r\n results.imagePath = path.dirname(paths[0]);\r\n results.imageExt = path.extname(paths[0]);\r\n return results;\r\n } else if (paths.length >= 2) {\r\n results.duplicate = true;\r\n }\r\n\r\n }\r\n\r\n return results;\r\n};\r\n\r\nexport const buildFilePath = (imagePath, filename, imageExt, hasImageExt) => {\r\n let filePath = hasImageExt ?\r\n path.join(imagePath, filename) :\r\n path.join(imagePath, `${filename}${imageExt}`);\r\n\r\n // Fix for windows UNC paths\r\n const isNetworkPath = imagePath.indexOf(\"//\") === 0;\r\n if (isNetworkPath) {\r\n filePath = `/${filePath}`;\r\n }\r\n\r\n return filePath;\r\n};\r\n\r\nexport const detectImagePath = async (assetPath: string, imageNames: string[], estimatedPath=null): Promise => {\r\n const directory = path.dirname(assetPath);\r\n const testImageExt = path.extname(imageNames[0]).toLowerCase();\r\n const hasImageExt = [\".jpg\", \".png\", \".jpeg\"].includes(testImageExt);\r\n const suffix = hasImageExt ? \"\" : \".{png,jpg,jpeg}\";\r\n\r\n let response = {\r\n pathFound: false,\r\n imagePath: null,\r\n imageExt: null,\r\n hasImageExt\r\n };\r\n\r\n // Search for image directory using csv path (or use pre-calculated estimated path)\r\n let {success, duplicate, imagePath, imageExt} = estimatedPath\r\n ? estimatedPath\r\n : checkImagePath(directory, imageNames, suffix);\r\n\r\n // Update response values\r\n response.pathFound = success;\r\n response.imagePath = imagePath;\r\n response.imageExt = imageExt;\r\n\r\n console.log(\"Detected image path: \", imagePath);\r\n\r\n if (!response.pathFound) {\r\n if (duplicate) {\r\n dialog.showErrorBox(assetPath, t(\"dialog.multiple-path-error\")\r\n );\r\n } else {\r\n dialog.showErrorBox(assetPath, t(\"dialog.missing-path-error\"));\r\n }\r\n\r\n const results = dialog.showOpenDialogSync({\r\n title: t(\"dialog.select-image-path\"),\r\n properties: ['openDirectory']\r\n });\r\n\r\n if (results) {\r\n // Search for image directory using selected folder\r\n imagePath = slash(results[0]);\r\n let manual = checkImagePath(imagePath, imageNames, suffix, 1);\r\n\r\n // Update response values\r\n response.pathFound = manual.success;\r\n response.imagePath = imagePath;\r\n response.imageExt = manual.imageExt;\r\n\r\n if (!manual.success) {\r\n dialog.showErrorBox(imagePath, t(\"dialog.manual-path-error\"));\r\n }\r\n }\r\n }\r\n\r\n return response;\r\n};","import {\r\n dialog,\r\n fs,\r\n} from \"../electron-modules\";\r\nimport slash from 'slash';\r\nimport { toast } from \"../app\";\r\nimport { cameraMatrixFilter } from \"../file-extensions\";\r\nimport { t } from \"../localization\";\r\nimport { Euler, Matrix4, Vector3 } from \"three\";\r\nimport { readFileText } from \"../viewer/js/file-system-loader\";\r\n\r\ninterface TransformResponse {\r\n success: Boolean,\r\n content: number[]\r\n}\r\n\r\nexport const saveMatrixFile = (cameraTransformPath) => {\r\n dialog.showSaveDialog({\r\n filters: cameraMatrixFilter,\r\n }).then(result => {\r\n if (result.canceled) {\r\n return;\r\n }\r\n if (result.filePath) {\r\n const savePath = slash(result.filePath);\r\n fs.copyFile(cameraTransformPath, savePath, (err) => {\r\n if (err) {\r\n toast.error(t(\"toast.correction-matrix-failed\"));\r\n } else {\r\n toast.success(t(\"toast.correction-matrix-saved\"));\r\n }\r\n });\r\n }\r\n });\r\n};\r\n\r\nexport const readTransformFile = (path: string): Promise => {\r\n return new Promise(async resolve => {\r\n const errorResponse = {\r\n success: false,\r\n content: null\r\n };\r\n\r\n if (!path) {\r\n resolve(errorResponse);\r\n return;\r\n }\r\n\r\n try {\r\n const data = await readFileText(path);\r\n\r\n let arr = [];\r\n let valid = true;\r\n\r\n const rows = data.split(\"\\n\");\r\n rows.forEach(row => {\r\n row = row.trim();\r\n if (row.length === 0) {\r\n return;\r\n }\r\n\r\n let cols = row.split(\" \");\r\n if (cols.length !== 4) {\r\n valid = false;\r\n }\r\n\r\n cols.forEach((col: any) => {\r\n if (isNaN(col)) {\r\n valid = false;\r\n }\r\n arr.push(parseFloat(col));\r\n });\r\n });\r\n\r\n if (arr.length !== 16) {\r\n valid = false;\r\n }\r\n\r\n if (!valid) {\r\n resolve(errorResponse);\r\n return;\r\n }\r\n\r\n const successResponse = {\r\n success: true,\r\n content: arr\r\n };\r\n\r\n resolve(successResponse);\r\n return;\r\n } catch {\r\n resolve(errorResponse);\r\n return;\r\n }\r\n });\r\n};\r\n\r\nexport const getMatrixValues = async (path: string) => {\r\n const {success, content} = await readTransformFile(path);\r\n\r\n if (!success) {\r\n return {success, rotation: null, offset: null};\r\n }\r\n\r\n const matrix = new Matrix4().fromArray(content);\r\n\r\n const transpose = new Matrix4().copy(matrix).transpose();\r\n const offset = new Vector3().setFromMatrixPosition(transpose);\r\n\r\n matrix.setPosition(0,0,0);\r\n const rotation = new Euler()\r\n .setFromRotationMatrix(matrix)\r\n .toVector3()\r\n .multiplyScalar(180 / Math.PI)\r\n .multiplyScalar(-1);\r\n\r\n return {success, rotation, offset};\r\n};\r\n","import { getConfigVersion } from \"../utilities\";\r\nimport { defaultTagTexture } from \"../viewer/textures/tag-icons\";\r\nimport { AssetType, CameraData } from \"./assets-slice\";\r\nimport { initialAerialState, initialSceneState } from \"./camera-slice\";\r\nimport { currentConfigVersion } from \"./project-slice\";\r\nimport semver from \"semver\";\r\nimport { nanoid } from \"@reduxjs/toolkit\";\r\nimport { ProjectType } from \"../types/project\";\r\nimport { TagSize } from \"../types/tags\";\r\n\r\nconst isCameraOrTag = (type) => {\r\n return (type === AssetType.Tag)\r\n || (type === AssetType.Planar)\r\n || (type === AssetType.Panoramic);\r\n};\r\n\r\nexport const upgradeConfig = (config) => {\r\n config = upgradeVersion34(config);\r\n config = upgradeVersion35(config);\r\n config = upgradeVersion36(config);\r\n config = upgradeVersion37(config);\r\n config = upgradeVersion38(config);\r\n config = upgradeVersion39(config);\r\n config = upgradeVersion310(config);\r\n config = upgradeVersion311(config);\r\n config = upgradeVersion312(config);\r\n config = upgradeVersion313(config);\r\n config = upgradeVersion314(config);\r\n config = upgradeVersion315(config);\r\n config = upgradeVersion316(config);\r\n config = upgradeVersion317(config);\r\n config = upgradeVersion318(config);\r\n config = upgradeVersion319(config);\r\n config = upgradeVersion320(config);\r\n config = upgradeVersion321(config);\r\n\r\n /** Additional upgrades go here */\r\n\r\n // Project config should now be at the latest version\r\n config.project.configVersion = currentConfigVersion;\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion321 = (config) => {\r\n const oldVersion = \"3.21.0\";\r\n const newVersion = \"3.22.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n // Add \"#\" to colors in dxf/shp layer data\r\n config.assets = config.assets.map(asset => {\r\n if ((asset.type === AssetType.DXF) || (asset.type === AssetType.SHP)) {\r\n asset.data = asset.data.map(layer => {\r\n if (layer.color[0] !== \"#\") {\r\n layer.color = `#${layer.color}`;\r\n }\r\n\r\n return layer;\r\n });\r\n }\r\n\r\n return asset;\r\n });\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion320 = (config) => {\r\n const oldVersion = \"3.20.0\";\r\n const newVersion = \"3.21.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n // Add scene state and date to each tag item\r\n config.assets = config.assets.map(asset => {\r\n if (asset.type === AssetType.Tag) {\r\n const items = asset.data.items.map(item => {\r\n delete item.camera;\r\n\r\n return {\r\n ...item,\r\n date: new Date().toISOString(),\r\n sceneState: null\r\n };\r\n });\r\n\r\n asset.data = {\r\n ...asset.data,\r\n items\r\n };\r\n }\r\n\r\n return asset;\r\n });\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion319 = (config) => {\r\n const oldVersion = \"3.19.0\";\r\n const newVersion = \"3.20.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n config.custom_links = config.links;\r\n delete config.links;\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion318 = (config) => {\r\n const oldVersion = \"3.18.0\";\r\n const newVersion = \"3.19.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n // Add tag draw distance\r\n config.settings.tagDistance = 1000;\r\n\r\n // Update old style camera ids\r\n const mappedCamerasIDs = {};\r\n config.assets.forEach(asset => {\r\n if ((asset.type === AssetType.Panoramic) || (asset.type === AssetType.Planar)) {\r\n const cameras = asset.data as CameraData[];\r\n cameras.forEach(camera => {\r\n const oldCameraID = `${asset.id}-${camera.name}`;\r\n mappedCamerasIDs[oldCameraID] = camera.id;\r\n });\r\n }\r\n });\r\n\r\n if (config.camera.sceneState.camera) {\r\n try {\r\n let newCameraID = mappedCamerasIDs[config.camera.sceneState.camera];\r\n if (newCameraID) {\r\n config.camera.sceneState.camera = newCameraID;\r\n }\r\n } catch {\r\n console.log(\"Error updating camera id (camera state)\");\r\n }\r\n }\r\n\r\n config.bookmarks = config.bookmarks.map(bookmark => {\r\n bookmark.settings.tagDistance = 1000;\r\n\r\n if (bookmark.sceneState.camera) {\r\n try {\r\n let newCameraID = mappedCamerasIDs[bookmark.sceneState.camera];\r\n if (newCameraID) {\r\n bookmark.sceneState.camera = newCameraID;\r\n }\r\n } catch {\r\n console.log(\"Error updating camera id (bookmark)\");\r\n }\r\n }\r\n\r\n return bookmark;\r\n });\r\n\r\n // Add size and camera id field for tags\r\n config.assets = config.assets.map(asset => {\r\n if (asset.type === AssetType.Tag) {\r\n const items = asset.data.items.map(item => {\r\n return {\r\n ...item,\r\n camera: null\r\n };\r\n });\r\n\r\n asset.data = {\r\n ...asset.data,\r\n size: TagSize.Medium,\r\n items\r\n };\r\n }\r\n\r\n return asset;\r\n });\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion317 = (config) => {\r\n const oldVersion = \"3.17.0\";\r\n const newVersion = \"3.18.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n if (\"overrideSettings\" in config.settings) {\r\n delete config.settings.overrideSettings;\r\n }\r\n\r\n config.assets = config.assets.map(asset => {\r\n asset.saved = asset.fromJSON;\r\n asset.cloud = false;\r\n delete asset.fromJSON;\r\n return asset;\r\n });\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion316 = (config) => {\r\n const oldVersion = \"3.16.0\";\r\n const newVersion = \"3.17.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n config.project.type = ProjectType.Standard;\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion315 = (config) => {\r\n const oldVersion = \"3.15.0\";\r\n const newVersion = \"3.16.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n if (\"newProject\" in config.project) {\r\n delete config.project.newProject;\r\n }\r\n\r\n if (\"modified\" in config.project) {\r\n delete config.project.modified;\r\n }\r\n\r\n config.project.uniqueSession = nanoid();\r\n config.project.id = nanoid();\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion314 = (config) => {\r\n const oldVersion = \"3.14.0\";\r\n const newVersion = \"3.15.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n // Change from folder.isDefault to folder.default\r\n config.folders = config.folders.map(folder => {\r\n if (folder.hasOwnProperty('isDefault')) {\r\n folder.default = folder.isDefault;\r\n delete folder.isDefault;\r\n }\r\n\r\n return folder;\r\n });\r\n\r\n // Move tag texture string from asset.texture to asset.data.texture\r\n config.assets = config.assets.map(asset => {\r\n if (asset.type !== AssetType.Tag) return asset;\r\n\r\n asset.data = {\r\n texture: asset.texture,\r\n items: asset.data\r\n };\r\n\r\n delete asset['texture'];\r\n return asset;\r\n });\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion313 = (config) => {\r\n const oldVersion = \"3.13.0\";\r\n const newVersion = \"3.14.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n config.assets = config.assets.map(asset => {\r\n let filePath = asset.data.path;\r\n\r\n if (filePath) {\r\n asset.path = filePath;\r\n delete asset.data;\r\n } else {\r\n asset.path = null;\r\n }\r\n\r\n return asset;\r\n });\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion312 = (config) => {\r\n const oldVersion = \"3.12.0\";\r\n const newVersion = \"3.13.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n config.settings.overrideSettings = true;\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion311 = (config) => {\r\n const oldVersion = \"3.11.0\";\r\n const newVersion = \"3.12.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n // Convert from cloudSize to cloudScale + cloudMinimum\r\n const cloudSize = config.settings.cloudSize;\r\n config.settings.cloudScale = Math.min(3.0, cloudSize);\r\n config.settings.cloudMinimum = 2.0;\r\n delete config.settings.cloudSize;\r\n\r\n return config;\r\n};\r\n\r\nconst upgradeVersion310 = (config) => {\r\n const oldVersion = \"3.10.0\";\r\n const newVersion = \"3.11.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n config.assets = config.assets.map(asset => {\r\n // Add unique ID to cameras and tags\r\n if (isCameraOrTag(asset.type)) {\r\n asset.data = asset.data.map(tag => {\r\n return {\r\n id: nanoid(),\r\n ...tag\r\n };\r\n });\r\n }\r\n\r\n // Add comments field for tags\r\n if (asset.type === AssetType.Tag) {\r\n asset.data = asset.data.map(tag => {\r\n return {\r\n ...tag,\r\n comment: \"\"\r\n };\r\n });\r\n }\r\n\r\n return asset;\r\n });\r\n\r\n config.project.configVersion = newVersion;\r\n return config;\r\n};\r\n\r\nconst upgradeVersion39 = (config) => {\r\n const oldVersion = \"3.9.0\";\r\n const newVersion = \"3.10.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n const extent = config.camera.aerialState.extent;\r\n const resolution = config.camera.aerialState.resolution;\r\n\r\n // Update camera state\r\n config.camera.sceneState = {\r\n ...initialSceneState,\r\n ...config.camera.sceneState\r\n };\r\n\r\n // Update aerial state\r\n config.camera.aerialState = {\r\n ...initialAerialState,\r\n ...config.camera.aerialState\r\n };\r\n\r\n // Convert resolution to zoom\r\n if (resolution) {\r\n const zoom = Math.log2(156543.03390625) - Math.log2(resolution);\r\n config.camera.aerialState.zoom = zoom;\r\n }\r\n\r\n // Convert extent to center\r\n if (extent) {\r\n config.camera.aerialState.center = [\r\n (extent[0] + extent[2]) / 2,\r\n (extent[1] + extent[3]) / 2\r\n ];\r\n }\r\n\r\n delete config.camera.aerialState.resolution;\r\n delete config.camera.aerialState.extent;\r\n\r\n config.project.configVersion = newVersion;\r\n return config;\r\n};\r\n\r\nconst upgradeVersion38 = (config) => {\r\n const oldVersion = \"3.8.0\";\r\n const newVersion = \"3.9.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n // Add default texture for tags\r\n config.assets = config.assets.map(asset => {\r\n asset.texture = (asset.type === AssetType.Tag) ? defaultTagTexture : undefined;\r\n return asset;\r\n });\r\n\r\n config.project.configVersion = newVersion;\r\n return config;\r\n};\r\n\r\nconst upgradeVersion37 = (config) => {\r\n const oldVersion = \"3.7.0\";\r\n const newVersion = \"3.8.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n // Apply upgrades\r\n delete config.settings.orthoOpacity;\r\n delete config.settings.orthoQuality;\r\n delete config.settings.controlType;\r\n\r\n config.project.configVersion = newVersion;\r\n return config;\r\n};\r\n\r\nconst upgradeVersion36 = (config) => {\r\n const oldVersion = \"3.6.0\";\r\n const newVersion = \"3.7.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n // NOTE: Upgrades removed because of refactoring\r\n\r\n config.project.configVersion = newVersion;\r\n return config;\r\n};\r\n\r\nconst upgradeVersion35 = (config) => {\r\n const oldVersion = \"3.5.0\";\r\n const newVersion = \"3.6.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n // Apply upgrades\r\n config.settings.cloudMaxPoints = config.settings.cloudMaxPoints/1000000;\r\n config.settings.cloudDistance = config.settings.cloudDistance * 10;\r\n\r\n config.project.configVersion = newVersion;\r\n return config;\r\n};\r\n\r\nconst upgradeVersion34 = (config) => {\r\n const oldVersion = \"3.4.0\";\r\n const newVersion = \"3.5.0\";\r\n\r\n if (semver.gt(getConfigVersion(config), oldVersion)) {\r\n return config;\r\n }\r\n\r\n console.log(`Upgrade configuration file: ${oldVersion} --> ${newVersion}`);\r\n\r\n // NOTE: Upgrades removed because of refactoring\r\n\r\n config.project.configVersion = newVersion;\r\n return config;\r\n};\r\n\r\n","import {store} from '../redux/store';\r\nimport {\r\n defaultProjectTitle,\r\n updateProjectName,\r\n changePath,\r\n currentConfigVersion,\r\n minimumConfigVersion\r\n} from '../redux/project-slice';\r\nimport {\r\n dialog,\r\n fs,\r\n app,\r\n registerEvent,\r\n isElectronApp\r\n} from '../electron-modules';\r\nimport slash from 'slash';\r\nimport path from 'path';\r\nimport {isEqual} from 'lodash';\r\nimport { upgradeConfig } from '../redux/config-upgrade';\r\nimport { configFilter } from '../file-extensions';\r\nimport semver from \"semver\";\r\nimport { t } from '../localization';\r\nimport { Projection } from '../redux/projections-slice';\r\nimport { defaultFolderTitle } from '../redux/folders-slice';\r\nimport { ProjectType } from '../types/project';\r\n\r\n/** Return the localized folder name for default project names,\r\n * and the saved name for everything else */\r\nexport const getLocalizedProjectName = (name: string) => {\r\n return name === defaultProjectTitle ? t(name) : name;\r\n};\r\n\r\n/** Return the localized projection name for default projections,\r\n * and the saved name for everything else */\r\nexport const getLocalizedProjectionName = (projection: Projection, units: string) => {\r\n return projection.default\r\n ? t(`projections.default-projection`, {units})\r\n : projection.name;\r\n};\r\n\r\n/** Return the localized folder name for default folders,\r\n * and the saved name for everything else */\r\nexport const getLocalizedFolderName = (name: string) => {\r\n return name === defaultFolderTitle ? t(name) : name;\r\n};\r\n\r\nexport const saveProjectAs = () => {\r\n const projectName = store.getState().project.name;\r\n const localizedProjectName = getLocalizedProjectName(projectName);\r\n const defaultPath = `${localizedProjectName}.json`;\r\n\r\n return dialog.showSaveDialog({\r\n title: t(\"dialog.save-project\"),\r\n defaultPath,\r\n filters: configFilter,\r\n }).then((result) => {\r\n if (result.canceled) {\r\n return false;\r\n }\r\n\r\n const savePath = slash(result.filePath);\r\n store.dispatch(changePath(savePath));\r\n\r\n // Update the title of the project to be the filename\r\n if (projectName === defaultProjectTitle) {\r\n const fileName = path.basename(savePath);\r\n const extension = path.extname(savePath);\r\n const nameWithoutExt = path.basename(fileName, extension);\r\n store.dispatch(updateProjectName(nameWithoutExt));\r\n }\r\n\r\n writeProject(store);\r\n return true;\r\n }).catch(() => {\r\n dialog.showErrorBox(t(\"dialog.project-save-title\"),\r\n t(\"dialog.project-save-message\"));\r\n return false;\r\n });\r\n};\r\n\r\nexport const saveProject = (allowSaveAs = true) => {\r\n return new Promise(resolve => {\r\n let state = store.getState();\r\n\r\n if (state.project.path === '') {\r\n if (allowSaveAs) {\r\n saveProjectAs().then(result => {\r\n resolve(result);\r\n });\r\n }\r\n return;\r\n } else {\r\n writeProject(store);\r\n resolve(true);\r\n }\r\n });\r\n};\r\n\r\nexport const loadProjectJSON = (projectJSON, parameters = {}) => {\r\n store.dispatch({\r\n type: 'LOAD',\r\n payload: {projectJSON, parameters}\r\n });\r\n};\r\n\r\nexport const getConfigVersion = (config) => {\r\n let version = config.project.configVersion;\r\n if (typeof version === \"number\") {\r\n version = `${String(version)}.0`;\r\n }\r\n\r\n return version;\r\n};\r\n\r\nexport const setWindowHash = (hash) => {\r\n window.history.pushState({}, '', \"#\" + hash);\r\n};\r\n\r\nexport const clearWindowHash = () => {\r\n window.location.hash = \"\";\r\n};\r\n\r\nexport const loadProjectFile = (filePath) => {\r\n try {\r\n const data = fs.readFileSync(filePath, 'utf8');\r\n\r\n // Update json path based on where the json was loaded from\r\n let projectJSON = JSON.parse(data);\r\n projectJSON.project.path = filePath;\r\n\r\n let configVersion = getConfigVersion(projectJSON);\r\n\r\n // Very old versions can't be upgraded\r\n if (semver.lt(configVersion, minimumConfigVersion)) {\r\n dialog.showErrorBox(t(\"dialog.general-error-title\"),\r\n t(\"dialog.legacy-version-error\", {version: configVersion}));\r\n return false;\r\n }\r\n\r\n // Upgrade project configuration to the most recent version\r\n if (semver.lt(configVersion, currentConfigVersion)) {\r\n projectJSON = upgradeConfig(projectJSON);\r\n }\r\n\r\n clearWindowHash();\r\n loadProjectJSON(projectJSON);\r\n return true;\r\n } catch (err) {\r\n dialog.showErrorBox(t(\"dialog.general-error-title\"),\r\n t(\"dialog.project-load-message\"));\r\n return false;\r\n }\r\n};\r\n\r\nexport const loadProject = () => {\r\n dialog.showOpenDialog({\r\n properties: ['openFile'],\r\n filters: configFilter\r\n }).then(result => {\r\n if (result.canceled) {\r\n return;\r\n }\r\n\r\n const filePath = slash(result.filePaths[0]);\r\n loadProjectFile(filePath);\r\n }).catch(error => {\r\n console.log(error);\r\n });\r\n};\r\n\r\nexport const newProject = () => {\r\n dialog.showMessageBox({\r\n type: 'question',\r\n title: t(\"dialog.new-project-title\"),\r\n message: t(\"dialog.new-project-unsaved\"),\r\n buttons: [\r\n t(\"buttons.cancel\"),\r\n t(\"buttons.new-project\")\r\n ],\r\n noLink: true\r\n })\r\n .then(result => {\r\n if (result.response === 0) return;\r\n store.dispatch({type: 'NEW'});\r\n });\r\n};\r\n\r\nconst writeProject = (store) => {\r\n // Update saved state for all assets\r\n store.dispatch({\r\n type: \"assets/setSavedState\",\r\n payload: null\r\n });\r\n\r\n const state = store.getState();\r\n const name = state.project.path;\r\n const string = JSON.stringify(state, null, 2);\r\n\r\n fs.writeFile(name, string, (err) => {\r\n if (err) {\r\n throw Error('an error occurred while saving the project');\r\n }\r\n });\r\n};\r\n\r\nconst exitWithChanges = async () => {\r\n const state = store.getState();\r\n\r\n // Cloud projects always exit immediately\r\n if (state.project.type === ProjectType.Cloud) {\r\n app.exit();\r\n return;\r\n }\r\n\r\n let hasChanged;\r\n if (state.project.path !== \"\") {\r\n // Compare current state to saved json state\r\n const data = fs.readFileSync(state.project.path, \"utf8\");\r\n let projectJSON = JSON.parse(data);\r\n\r\n const originalState = {...projectJSON};\r\n const modifiedState = JSON.parse(JSON.stringify(state));\r\n\r\n // Our session ID changes every time we load the file,\r\n // so it needs to be removed before we can compare states\r\n delete originalState.project.uniqueSession;\r\n delete modifiedState.project.uniqueSession;\r\n\r\n hasChanged = !isEqual(originalState, modifiedState);\r\n } else {\r\n // Dont prompt user unless assets are loaded\r\n hasChanged = state.assets.length !== 0;\r\n }\r\n\r\n if (!hasChanged) {\r\n app.exit();\r\n return;\r\n }\r\n\r\n const result = await dialog.showMessageBox({\r\n type: \"question\",\r\n message: t(\"dialog.exit-save-changes\"),\r\n buttons: [\r\n t(\"buttons.save\"),\r\n t(\"buttons.dont-save\")\r\n ],\r\n defaultId: 2,\r\n noLink: true\r\n });\r\n\r\n if (result.response === 1) {\r\n app.exit();\r\n } else if (result.response === 0) {\r\n await saveProject();\r\n app.exit();\r\n }\r\n};\r\n\r\nif (isElectronApp) {\r\n registerEvent(\"new-project\", newProject);\r\n registerEvent(\"load-project\", loadProject);\r\n registerEvent(\"save-project\", saveProject);\r\n registerEvent(\"save-project-as\", saveProjectAs);\r\n registerEvent(\"exit-with-changes\", exitWithChanges);\r\n}","const escape = (text: string) => {\r\n return text\r\n .replace(/\\\\/g, \"\\\\\\\\\")\r\n .replace(/\\n/g, \"\\\\n\")\r\n .replace(/,/g, \"\\\\,\");\r\n};\r\n\r\nexport const writeToString = (rows, delimiter = ',') => {\r\n return rows.map(row => {\r\n return row.map(value => {\r\n return isNaN(value) ? escape(value) : value;\r\n }).join(delimiter);\r\n }).join('\\n');\r\n};\r\n","export * from \"./assets\";\r\nexport * from \"./camera\";\r\nexport * from \"./project\";\r\nexport * from \"./dates\";\r\nexport * from \"./csv-writer\";\r\n\r\nexport const asyncTimeout = (ms) => {\r\n return new Promise(resolve => setTimeout(resolve, ms));\r\n};\r\n\r\n","import React, { useState, useEffect } from \"react\";\r\nimport {\r\n createStyles,\r\n makeStyles,\r\n Theme,\r\n Grid,\r\n Typography\r\n} from \"@material-ui/core\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { toast } from \"../../app\";\r\nimport {\r\n CheckboxWithLabel,\r\n DropdownWithLabel,\r\n FolderWithLabel,\r\n SimpleDialog,\r\n memoWithOpen\r\n} from \"../../components\";\r\nimport { fse, getTemporaryFile } from \"../../electron-modules\";\r\nimport { deleteAsset } from \"../../redux/assets-slice\";\r\nimport path from \"path\";\r\nimport { useTaskQueue, useViewer } from \"../../hooks\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useAssetTools, writeToString } from \"../../utilities\";\r\nimport { FunctionProps } from \"./props\";\r\n\r\nenum DetectionType {\r\n VehiclesAndPeople=\"vehicles_and_people\",\r\n Vehicles=\"vehicles\",\r\n People=\"people\"\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n mixedDataWarning: {\r\n padding: theme.spacing(1.0),\r\n color: theme.palette.warning.main,\r\n textAlign: \"center\"\r\n }\r\n }),\r\n);\r\n\r\nexport const BlurVehiclesPeople = memoWithOpen((props: FunctionProps) => {\r\n const {assets, open, onClose} = props;\r\n\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const {viewer} = useViewer();\r\n const {addRunningTask} = useTaskQueue();\r\n const {addAssetPaths} = useAssetTools();\r\n const {t} = useTranslation();\r\n\r\n const [outputPath, setOutputPath] = useState(null);\r\n const [detectionType, setDetectionType] = useState(DetectionType.VehiclesAndPeople);\r\n const [blurStrength, setBlurStrength] = useState(10);\r\n const [accuracy, setAccuracy] = useState(0.5);\r\n const [importResult, setImportResult] = useState(true);\r\n\r\n // TODO: actually handle multiple inputs (sent multiple exe commands to processing queue)\r\n const asset = assets ? assets[0] : undefined;\r\n\r\n const resetDefaults = () => {\r\n setOutputPath(null);\r\n };\r\n\r\n const handleSubmit = async () => {\r\n const pythonName = \"blur_vehicles_people\";\r\n\r\n const tempImagePath = getTemporaryFile(\"json\");\r\n const imagesCSVPath = path.join(outputPath, \"blurred-images.csv\");\r\n\r\n try {\r\n const cameras = viewer.getCamerasByCSV(asset.id);\r\n const cameraData = cameras.map(x => x.path);\r\n const pathsJSON = JSON.stringify(cameraData, null, 4);\r\n await fse.writeFile(tempImagePath, pathsJSON);\r\n } catch(err) {\r\n console.log(err);\r\n toast.error(t('functions.error_running_function'));\r\n return;\r\n }\r\n\r\n let commands = [\r\n \"-p\", pythonName,\r\n \"--input_path\", tempImagePath,\r\n \"--output_path\", outputPath,\r\n \"--blur_options\", detectionType,\r\n \"--blur_level\", blurStrength,\r\n \"--detection-accuracy\", accuracy\r\n ];\r\n\r\n const onFinish = async () => {\r\n if (!importResult) return;\r\n\r\n try {\r\n // Generate camera csv in output folder\r\n const cameras = viewer.getCamerasByCSV(asset.id);\r\n const rows = viewer.getCameraRowsCSV(cameras);\r\n const content = writeToString(rows);\r\n await fse.writeFile(imagesCSVPath, content);\r\n } catch {\r\n return;\r\n }\r\n\r\n // Remove old camera csv\r\n dispatch(deleteAsset(asset.id));\r\n\r\n // Add new camera csv\r\n await addAssetPaths([imagesCSVPath], asset.folderID);\r\n };\r\n\r\n onClose();\r\n addRunningTask(commands, onFinish);\r\n };\r\n\r\n useEffect(() => {\r\n if (open) return;\r\n resetDefaults();\r\n }, [open]);\r\n\r\n const cameras = asset ? viewer.getCamerasByCSV(asset.id) : [];\r\n const folders = asset ? viewer.getCameraFolders(cameras) : [];\r\n const inputFolders = new Set([...folders]);\r\n const pathOverlap = inputFolders.has(outputPath);\r\n const canSubmit = !pathOverlap && (outputPath !== null);\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n {pathOverlap && (\r\n \r\n {t('point-markup.output-folder-must-be-different')}\r\n \r\n )}\r\n\r\n {/** Detection Type */}\r\n \r\n \r\n \r\n\r\n {/** Detection Accuracy */}\r\n \r\n {\r\n const value = (index+1)/10;\r\n const text = `${(index+1)*10}%`;\r\n return [value, text];\r\n })\r\n }\r\n />\r\n \r\n\r\n {/** Blur Level */}\r\n \r\n {\r\n const value = index+1;\r\n const text = `${index+1}`;\r\n return [value, text];\r\n })\r\n }\r\n />\r\n \r\n\r\n {/** Import results */}\r\n \r\n \r\n \r\n\r\n {/** Output folder */}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n );\r\n});\r\n","import {\r\n CheckboxWithLabel, DropdownWithLabel,\r\n memoWithOpen,\r\n FileWithLabel,\r\n SimpleDialog\r\n} from \"../../components\";\r\nimport React, {useEffect, useMemo, useState} from \"react\";\r\nimport {useDispatch} from \"react-redux\";\r\nimport {useTaskQueue, useViewer} from \"../../hooks\";\r\nimport {\r\n Checkbox,\r\n createStyles,\r\n Grid,\r\n InputLabel, ListItemText,\r\n makeStyles,\r\n MenuItem,\r\n Select,\r\n Theme,\r\n Typography\r\n} from \"@material-ui/core\";\r\nimport {lasFileFilter} from \"../../file-extensions\";\r\nimport {deleteAsset} from \"../../redux/assets-slice\";\r\nimport clsx from \"clsx\";\r\nimport {classifications} from \"../../classifications\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useAssetTools } from \"../../utilities\";\r\nimport { FunctionProps } from \"./props\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n flexibleHeight: {\r\n height: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"space-between\",\r\n \"& span\": {\r\n flex: 1\r\n }\r\n },\r\n multipleSelectWithLabel: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n justifyContent: \"space-between\",\r\n \"& span\": {\r\n flex: 1\r\n }\r\n },\r\n paddingBottom: {\r\n paddingBottom: `${theme.spacing(1)}px !important`,\r\n },\r\n inputParent: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n minHeight: theme.spacing(3),\r\n paddingBottom: theme.spacing(0.5)\r\n }\r\n })\r\n);\r\n\r\nenum OperationTypes {\r\n Include = \"include\",\r\n Exclude = \"exclude\"\r\n}\r\n\r\nexport const ClassifyExport = memoWithOpen((props: FunctionProps) => {\r\n const {assets, open, onClose} = props;\r\n\r\n const {viewer} = useViewer();\r\n const dispatch = useDispatch();\r\n const classes = useStyles();\r\n const {addRunningTask} = useTaskQueue();\r\n const {addAssetPaths} = useAssetTools();\r\n const {t} = useTranslation();\r\n\r\n const [outputPath, setOutputPath] = useState(null);\r\n const [operationType, setOperationType] = useState(OperationTypes.Include);\r\n const [classValues, setClassValues] = useState([]);\r\n const [importResult, setImportResult] = useState(true);\r\n\r\n // TODO: actually handle multiple inputs (sent multiple exe commands to processing queue)\r\n const asset = assets ? assets[0] : undefined;\r\n\r\n const classList = useMemo(() => {\r\n if (!open || !asset) return new Set();\r\n const pointCloud = viewer.pointclouds.getByID(asset.id);\r\n return pointCloud.uniqueClassifications;\r\n }, [open, asset]);\r\n\r\n const canSubmit = (outputPath !== null)\r\n && (operationType !== null)\r\n && (classValues.length > 0);\r\n\r\n const handleSubmit = () => {\r\n const pythonName = \"classify_export\";\r\n\r\n let commands = [\r\n \"-p\", pythonName,\r\n \"--inputlas\", asset.path,\r\n \"--outputlas\", outputPath,\r\n \"--operation\", operationType,\r\n \"--classes\", classValues.toString()\r\n ];\r\n\r\n const afterClose = async () => {\r\n if (!importResult) return;\r\n\r\n // Remove old LAS\r\n dispatch(deleteAsset(asset.id));\r\n\r\n // Add new thinned LAS\r\n await addAssetPaths([outputPath], asset.folderID);\r\n };\r\n onClose();\r\n addRunningTask(commands, afterClose);\r\n };\r\n\r\n const handleClassChange = (event) => {\r\n setClassValues(event.target.value);\r\n };\r\n\r\n // Function of how the classes vals are rendered and shown in dropdown\r\n const renderClasses = (selected) => {\r\n const renderedClasses = [];\r\n selected.forEach((classVal) => {\r\n renderedClasses.push(formatClassValue(classVal));\r\n });\r\n return renderedClasses.join(\" ,\");\r\n };\r\n\r\n const formatClassValue = (classValue) => {\r\n return classifications[classValue].name + ` (${classValue})`;\r\n };\r\n\r\n const resetDefaults = () => {\r\n setOutputPath(null);\r\n setOperationType(OperationTypes.Include);\r\n setClassValues([]);\r\n setImportResult(true);\r\n };\r\n\r\n useEffect(() => {\r\n if (open) return;\r\n resetDefaults();\r\n }, [open]);\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n {/** Operation Type */}\r\n \r\n \r\n \r\n\r\n {/** Classes */}\r\n \r\n
\r\n
\r\n \r\n {t('functions.classify_export.classes')}\r\n \r\n
\r\n\r\n \r\n {t('functions.classify_export.classes_description')}\r\n \r\n\r\n \r\n {Array.from(classList.values()).map((classValue) => {\r\n return (\r\n \r\n -1} />\r\n \r\n \r\n );\r\n })}\r\n \r\n
\r\n
\r\n\r\n {/** Import results */}\r\n \r\n \r\n \r\n\r\n {/** Output LAS */}\r\n \r\n \r\n \r\n\r\n
\r\n \r\n
\r\n );\r\n});\r\n","import {\r\n CheckboxWithLabel, DropdownWithLabel,\r\n memoWithOpen,\r\n SimpleDialog,\r\n TextWithLabel\r\n} from \"../../components\";\r\nimport React, {useEffect, useState} from \"react\";\r\nimport {useDispatch} from \"react-redux\";\r\nimport {useTaskQueue} from \"../../hooks\";\r\nimport {createStyles, FormHelperText, Grid, makeStyles, Theme} from \"@material-ui/core\";\r\nimport {deleteAsset} from \"../../redux/assets-slice\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useAssetTools } from \"../../utilities\";\r\nimport { FunctionProps } from \"./props\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n helperText: {\r\n textAlign: \"center\",\r\n paddingTop: theme.spacing(2)\r\n },\r\n savedLocation: {\r\n wordWrap: \"break-word\"\r\n }\r\n }),\r\n);\r\n\r\nexport const ConvertUnits = memoWithOpen((props: FunctionProps) => {\r\n const {assets, open, onClose} = props;\r\n\r\n const dispatch = useDispatch();\r\n const {addRunningTask} = useTaskQueue();\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n const {addAssetPaths} = useAssetTools();\r\n\r\n const [inputUnits, setInputUnits] = useState('m');\r\n const [outputUnits, setOutputUnits] = useState('ft');\r\n const [importResult, setImportResult] = useState(true);\r\n\r\n const nullUnits = inputUnits === '' || outputUnits === '';\r\n const sameUnits = (inputUnits === outputUnits && !nullUnits);\r\n const canSubmit = (!sameUnits && !nullUnits);\r\n\r\n\r\n // TODO: actually handle multiple inputs (sent multiple exe commands to processing queue)\r\n const asset = assets ? assets[0] : undefined;\r\n\r\n // Get name of saved file for display\r\n const basename = asset.name.replace(/\\.[^/.]+$/, \"\");\r\n const pathNameNoExt = asset.path.replace(/\\.[^/.]+$/, \"\");\r\n const outputName = `${basename}_${inputUnits}_to_${outputUnits}.las`;\r\n const outputPath = `${pathNameNoExt}_${inputUnits}_to_${outputUnits}.las`;\r\n\r\n const handleSubmit = () => {\r\n const pythonName = \"convert_units\";\r\n\r\n let commands = [\r\n \"-p\", pythonName,\r\n \"--inputlas\", asset.path,\r\n \"--input_units\", inputUnits,\r\n \"--output_units\", outputUnits\r\n ];\r\n\r\n const onFinish = async () => {\r\n if (!importResult) return;\r\n\r\n // Remove old LAS\r\n dispatch(deleteAsset(asset.id));\r\n\r\n // Add new thinned LAS\r\n await addAssetPaths([outputPath], asset.folderID);\r\n };\r\n\r\n onClose();\r\n addRunningTask(commands, onFinish);\r\n };\r\n\r\n const resetDefaults = () => {\r\n setInputUnits('m');\r\n setOutputUnits('ft');\r\n setImportResult(true);\r\n };\r\n\r\n useEffect(() => {\r\n if (open) return;\r\n resetDefaults();\r\n }, [open]);\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n {/** Input Units */}\r\n \r\n \r\n \r\n\r\n {/** Output Units */}\r\n \r\n \r\n \r\n\r\n {/** Import results */}\r\n \r\n \r\n \r\n\r\n {/** Output Path Display */}\r\n {canSubmit && \r\n \r\n }\r\n\r\n \r\n {sameUnits && \r\n {t('functions.convert_units.same_units_error')}\r\n }\r\n \r\n \r\n );\r\n});\r\n","import React, { useState, useEffect } from \"react\";\r\nimport {\r\n createStyles,\r\n FormHelperText,\r\n Grid,\r\n makeStyles,\r\n Theme\r\n} from \"@material-ui/core\";\r\nimport {\r\n CheckboxWithLabel,\r\n DropdownWithLabel,\r\n FolderWithLabel,\r\n NumberFieldWithLabel,\r\n SimpleDialog,\r\n memoWithOpen,\r\n} from \"../../components\";\r\nimport { pathWithExtension, useAssetTools } from \"../../utilities\";\r\nimport path from \"path\";\r\nimport LocalScene from \"../../viewer/js/projections\";\r\nimport { useTaskQueue } from \"../../hooks\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { FunctionProps } from \"./props\";\r\n\r\nenum ChannelType {\r\n Empty=\"empty\",\r\n Red=\"red\",\r\n Green=\"green\",\r\n Blue=\"blue\",\r\n Linearity=\"linearity\",\r\n Planarity=\"planarity\",\r\n Scattering=\"scattering\",\r\n Normal=\"normal\",\r\n Intensity=\"intensity\",\r\n NumReturns=\"num_returns\",\r\n ReturnNumber=\"return_number\",\r\n Classification=\"classification\"\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n helperText: {\r\n textAlign: \"center\",\r\n paddingTop: theme.spacing(2)\r\n }\r\n }),\r\n);\r\n\r\ninterface ChannelSelectorProps {\r\n title: string;\r\n value: string | number;\r\n onChange: React.Dispatch;\r\n}\r\n\r\nconst ChannelSelector = (props: ChannelSelectorProps) => {\r\n const {title, value, onChange} = props;\r\n\r\n const {t} = useTranslation();\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport const LasToOrthomosaic = memoWithOpen((props: FunctionProps) => {\r\n const {assets, open, onClose} = props;\r\n\r\n const classes = useStyles();\r\n const {addRunningTask} = useTaskQueue();\r\n const {addAssetPaths} = useAssetTools();\r\n const {t} = useTranslation();\r\n\r\n const defaultPixelSize = {value: 0.1, error: false};\r\n\r\n const [outputPath, setOutputPath] = useState(null);\r\n const [channelOne, setChannelOne] = useState(ChannelType.Empty);\r\n const [channelTwo, setChannelTwo] = useState(ChannelType.Empty);\r\n const [channelThree, setChannelThree] = useState(ChannelType.Empty);\r\n const [pixelSize, setPixelSize] = useState(defaultPixelSize);\r\n const [importResult, setImportResult] = useState(true);\r\n\r\n // TODO: actually handle multiple inputs (sent multiple exe commands to processing queue)\r\n const asset = assets ? assets[0] : undefined;\r\n\r\n const resetDefaults = () => {\r\n setOutputPath(null);\r\n };\r\n\r\n const handleSubmit = () => {\r\n const pythonName = \"las_to_orthomosaic\";\r\n const tifPath = pathWithExtension(\r\n path.join(outputPath, asset.name), \"tif\");\r\n\r\n let commands = [\r\n \"-p\", pythonName,\r\n \"--input_path\", asset.path,\r\n \"--output_path\", outputPath,\r\n \"--channel_1\", channelOne,\r\n \"--channel_2\", channelTwo,\r\n \"--channel_3\", channelThree,\r\n \"--pixel_size\", pixelSize.value,\r\n \"--units\", LocalScene.dataProjectionUnits\r\n ];\r\n\r\n const onFinish = async () => {\r\n if (!importResult) return;\r\n\r\n // Add new orthmosaic\r\n await addAssetPaths([tifPath], asset.folderID);\r\n };\r\n\r\n onClose();\r\n addRunningTask(commands, onFinish);\r\n };\r\n\r\n useEffect(() => {\r\n if (open) return;\r\n resetDefaults();\r\n }, [open]);\r\n\r\n const emptyChannels = (channelOne === ChannelType.Empty)\r\n && (channelTwo === ChannelType.Empty)\r\n && (channelThree === ChannelType.Empty);\r\n\r\n const canSubmit = (outputPath !== null)\r\n && !pixelSize.error\r\n && !emptyChannels;\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n {/** Channel 1 color */}\r\n \r\n \r\n \r\n\r\n {/** Channel 2 color */}\r\n \r\n \r\n \r\n\r\n {/** Channel 3 color */}\r\n \r\n \r\n \r\n\r\n {/** Pixel size */}\r\n \r\n \r\n \r\n\r\n {/** Output folder */}\r\n \r\n \r\n \r\n\r\n {/** Import results */}\r\n \r\n \r\n \r\n\r\n \r\n\r\n {emptyChannels && \r\n {t('functions.las_to_orthomosaic.at_least_one_channel_must_be')}\r\n }\r\n \r\n \r\n );\r\n});\r\n","import React, {useEffect, useState} from \"react\";\r\nimport {\r\n Grid\r\n} from \"@material-ui/core\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport {\r\n CheckboxWithLabel,\r\n FolderWithLabel,\r\n SimpleDialog,\r\n memoWithOpen,\r\n} from \"../../components\";\r\nimport {pathWithExtension, useAssetTools} from \"../../utilities\";\r\nimport path from \"path\";\r\nimport {useTaskQueue} from \"../../hooks\";\r\nimport {deleteAsset} from \"../../redux/assets-slice\";\r\nimport LocalScene from \"../../viewer/js/projections\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { FunctionProps } from \"./props\";\r\n\r\nexport const LasToSolv3dStreamable = memoWithOpen((props: FunctionProps) => {\r\n const {assets, open, onClose} = props;\r\n\r\n const dispatch = useDispatch();\r\n const {addRunningTask} = useTaskQueue();\r\n const {addAssetPaths} = useAssetTools();\r\n const {t} = useTranslation();\r\n\r\n const [outputPath, setOutputPath] = useState(null);\r\n const [isSingleFile, setSingleFile] = useState(true);\r\n const [importResult, setImportResult] = useState(true);\r\n\r\n const canSubmit = (outputPath !== null);\r\n\r\n // TODO: actually handle multiple inputs (sent multiple exe commands to processing queue)\r\n const asset = assets ? assets[0] : undefined;\r\n\r\n const handleSubmit = () => {\r\n const pythonName = \"process_las\";\r\n const binPath = pathWithExtension(\r\n path.join(outputPath, \"octree\"), \"bin\");\r\n\r\n let commands = [\r\n \"-p\", pythonName,\r\n \"--input_path\", asset.path,\r\n \"--output_folder\", outputPath,\r\n \"--single_file\", isSingleFile,\r\n \"--units\", LocalScene.dataProjectionUnits\r\n ];\r\n\r\n const onFinish = async () => {\r\n if (!importResult) return;\r\n\r\n // Remove old LAS\r\n dispatch(deleteAsset(asset.id));\r\n\r\n // Add new streamable point cloud\r\n await addAssetPaths([binPath], asset.folderID);\r\n };\r\n\r\n onClose();\r\n addRunningTask(commands, onFinish);\r\n };\r\n\r\n const resetDefaults = () => {\r\n setOutputPath(null);\r\n setImportResult(true);\r\n setSingleFile(true);\r\n };\r\n\r\n useEffect(() => {\r\n if (open) return;\r\n resetDefaults();\r\n }, [open]);\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n {/** Single File */}\r\n \r\n \r\n \r\n\r\n {/** Import results */}\r\n \r\n \r\n \r\n\r\n {/** Output folder */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n});\r\n\r\n\r\n","import {\r\n CheckboxWithLabel,\r\n FileWithLabel,\r\n memoWithOpen,\r\n NumberFieldWithLabel,\r\n SimpleDialog\r\n} from \"../../components\";\r\nimport React, {useEffect, useState} from \"react\";\r\nimport {useDispatch} from \"react-redux\";\r\nimport {useTaskQueue} from \"../../hooks\";\r\nimport {Grid} from \"@material-ui/core\";\r\nimport {lasFileFilter} from \"../../file-extensions\";\r\nimport {deleteAsset} from \"../../redux/assets-slice\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useAssetTools } from \"../../utilities\";\r\nimport { FunctionProps } from \"./props\";\r\n\r\nexport const Sampling = memoWithOpen((props: FunctionProps) => {\r\n const {assets, open, onClose} = props;\r\n\r\n const dispatch = useDispatch();\r\n const {addRunningTask} = useTaskQueue();\r\n const {addAssetPaths} = useAssetTools();\r\n const {t} = useTranslation();\r\n\r\n const defaultSamplingRateOptions = {\r\n value: 40,\r\n error: false\r\n };\r\n\r\n const [outputPath, setOutputPath] = useState(null);\r\n const [samplingRate, setSamplingRate] = useState(defaultSamplingRateOptions);\r\n const [importResult, setImportResult] = useState(true);\r\n\r\n const validSampling = samplingRate.error === false && samplingRate.value !== null;\r\n const canSubmit = (outputPath !== null && validSampling);\r\n\r\n // TODO: actually handle multiple inputs (sent multiple exe commands to processing queue)\r\n const asset = assets ? assets[0] : undefined;\r\n\r\n const handleSubmit = () => {\r\n const pythonName = \"sampling\";\r\n const decimalSamplingRate = samplingRate.value/100;\r\n\r\n let commands = [\r\n \"-p\", pythonName,\r\n \"--inputlas\", asset.path,\r\n \"--outputlas\", outputPath,\r\n \"--rate\", decimalSamplingRate\r\n ];\r\n\r\n const onFinish = async () => {\r\n if (!importResult) return;\r\n\r\n // Remove old LAS\r\n dispatch(deleteAsset(asset.id));\r\n\r\n // Add new sampled LAS\r\n await addAssetPaths([outputPath], asset.folderID);\r\n };\r\n\r\n onClose();\r\n addRunningTask(commands, onFinish);\r\n };\r\n\r\n const resetDefaults = () => {\r\n setOutputPath(null);\r\n setSamplingRate(defaultSamplingRateOptions);\r\n setImportResult(true);\r\n };\r\n\r\n useEffect(() => {\r\n if (open) return;\r\n resetDefaults();\r\n }, [open]);\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n {/** Sampling Rate */}\r\n \r\n \r\n \r\n\r\n {/** Import results */}\r\n \r\n \r\n \r\n\r\n {/** Output LAS */}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n );\r\n});\r\n","import React, {useEffect, useState} from \"react\";\r\nimport {\r\n createStyles,\r\n FormHelperText,\r\n Grid, makeStyles, Theme\r\n} from \"@material-ui/core\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport {\r\n CheckboxWithLabel,\r\n DropdownWithLabel,\r\n FileWithLabel,\r\n NumberFieldWithLabel,\r\n SimpleDialog,\r\n memoWithOpen,\r\n} from \"../../components\";\r\nimport {useTaskQueue} from \"../../hooks\";\r\nimport {deleteAsset} from \"../../redux/assets-slice\";\r\nimport {lasFileFilter} from \"../../file-extensions\";\r\nimport {tempDirectoryPath} from \"../../electron-modules\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useAssetTools } from \"../../utilities\";\r\nimport { FunctionProps } from \"./props\";\r\n\r\nenum ThinTechniques {\r\n Highest = \"highest\",\r\n Lowest = \"lowest\",\r\n Average = \"average\"\r\n};\r\n\r\nenum ThinDimensions {\r\n Two = 2,\r\n Three = 3,\r\n};\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n invalidThinningError: {\r\n padding: theme.spacing(1.0),\r\n color: theme.palette.warning.main,\r\n textAlign: \"center\"\r\n }\r\n }),\r\n);\r\n\r\nexport const ThinLas = memoWithOpen((props: FunctionProps) => {\r\n const {assets, open, onClose} = props;\r\n\r\n const dispatch = useDispatch();\r\n const {addRunningTask} = useTaskQueue();\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n\r\n const {addAssetPaths} = useAssetTools();\r\n\r\n const defaultThinningOptions = {\r\n value: 0.1,\r\n error: false\r\n };\r\n\r\n const [outputPath, setOutputPath] = useState(null);\r\n const [thinTechnique, setThinTechnique] = useState(ThinTechniques.Lowest);\r\n const [thinDimension, setThinDimension] = useState(ThinDimensions.Two);\r\n const [thinning, setThinning] = useState(defaultThinningOptions);\r\n const [importResult, setImportResult] = useState(true);\r\n\r\n const inValidThinningValue = thinning.value <= 0;\r\n const canSubmit = (outputPath !== null && !thinning.error && thinDimension && thinTechnique && !inValidThinningValue);\r\n\r\n\r\n // TODO: actually handle multiple inputs (sent multiple exe commands to processing queue)\r\n const asset = assets ? assets[0] : undefined;\r\n\r\n const handleSubmit = () => {\r\n const pythonName = \"thin\";\r\n\r\n let commands = [\r\n \"-p\", pythonName,\r\n \"--inputlas\", asset.path,\r\n \"--outputlas\", outputPath,\r\n \"--precision\", thinning.value,\r\n \"--keepvalue\", thinTechnique,\r\n \"--temp\", tempDirectoryPath,\r\n \"--dim\", thinDimension\r\n ];\r\n\r\n const onFinish = async () => {\r\n if (!importResult) return;\r\n\r\n // Remove old LAS\r\n dispatch(deleteAsset(asset.id));\r\n\r\n // Add new thinned LAS\r\n await addAssetPaths([outputPath], asset.folderID);\r\n };\r\n\r\n onClose();\r\n addRunningTask(commands, onFinish);\r\n };\r\n\r\n const resetDefaults = () => {\r\n setOutputPath(null);\r\n setThinTechnique(ThinTechniques.Lowest);\r\n setThinDimension(ThinDimensions.Two);\r\n setThinning(defaultThinningOptions);\r\n setImportResult(true);\r\n };\r\n\r\n useEffect(() => {\r\n if (open) return;\r\n resetDefaults();\r\n }, [open]);\r\n\r\n return (\r\n \r\n \r\n \r\n\r\n {/** Output thinning */}\r\n \r\n \r\n \r\n\r\n {/** Thin Technique */}\r\n \r\n \r\n \r\n\r\n {/** Thin Dimension */}\r\n \r\n \r\n \r\n\r\n {/** Import results */}\r\n \r\n \r\n \r\n\r\n {/** Output LAS */}\r\n \r\n \r\n \r\n \r\n\r\n {inValidThinningValue && \r\n {t('functions.thin_las.invalid_thinning_value')}\r\n }\r\n\r\n \r\n \r\n );\r\n});\r\n\r\n\r\n","import React from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { MenuItem, Typography } from \"@material-ui/core\";\r\nimport FunctionsIcon from '@material-ui/icons/Functions';\r\nimport { NestedMenu } from \"../components\";\r\nimport {\r\n BlurVehiclesPeople,\r\n ClassifyExport,\r\n ConvertUnits,\r\n LasToOrthomosaic,\r\n LasToSolv3dStreamable,\r\n Sampling,\r\n ThinLas\r\n} from \"./definitions\";\r\nimport { Asset, AssetType } from \"../redux/assets-slice\";\r\nimport { nanoid } from \"@reduxjs/toolkit\";\r\nimport { useDialog } from \"../hooks\";\r\n\r\nconst generateFunctionData = (title, condition, onClick) => {\r\n return {\r\n name: title,\r\n condition: condition,\r\n component: (\r\n \r\n {title}\r\n \r\n )\r\n };\r\n};\r\n\r\ninterface FunctionsMenuProps {\r\n assets: Asset[];\r\n contextOpen: boolean;\r\n closeContextMenu: () => void;\r\n}\r\n\r\nexport const FunctionsMenu = React.forwardRef((props: FunctionsMenuProps, ref) => {\r\n const {assets, contextOpen, closeContextMenu} = props;\r\n\r\n const {t} = useTranslation();\r\n const blurVehiclesPeopleDialog = useDialog();\r\n const lasToOrthomosaicDialog = useDialog();\r\n const lasToSolv3dStreamableDialog = useDialog();\r\n const thinLasDialog = useDialog();\r\n const samplingDialog = useDialog();\r\n const classifyExportDialog = useDialog();\r\n const convertUnitsDialog = useDialog();\r\n\r\n const LASFiles = assets\r\n .filter(x => x.type === AssetType.LAS);\r\n\r\n const cameraFiles = assets\r\n .filter(x => x.type === AssetType.Panoramic);\r\n\r\n const hasLASFiles = LASFiles.length > 0;\r\n const hasCameraFiles = cameraFiles.length > 0;\r\n\r\n const handleBlurVehiclesPeople = () => {\r\n closeContextMenu();\r\n blurVehiclesPeopleDialog.handleOpen();\r\n };\r\n\r\n const handleLasToOrthomosaic = () => {\r\n closeContextMenu();\r\n lasToOrthomosaicDialog.handleOpen();\r\n };\r\n\r\n const handleLasToSolv3dStreamable = () => {\r\n closeContextMenu();\r\n lasToSolv3dStreamableDialog.handleOpen();\r\n };\r\n\r\n const handleThinLas = () => {\r\n closeContextMenu();\r\n thinLasDialog.handleOpen();\r\n };\r\n\r\n const handleSampling = () => {\r\n closeContextMenu();\r\n samplingDialog.handleOpen();\r\n };\r\n\r\n const handleClassifyExport = () => {\r\n closeContextMenu();\r\n classifyExportDialog.handleOpen();\r\n };\r\n\r\n const handleConvertUnits = () => {\r\n closeContextMenu();\r\n convertUnitsDialog.handleOpen();\r\n };\r\n\r\n const getMenuItems = () => {\r\n if (!contextOpen) return [];\r\n\r\n const data = [\r\n generateFunctionData(\r\n t('functions.blur_vehicles_people.title'),\r\n hasCameraFiles,\r\n handleBlurVehiclesPeople\r\n ),\r\n generateFunctionData(\r\n t('functions.las_to_orthomosaic.title'),\r\n hasLASFiles,\r\n handleLasToOrthomosaic\r\n ),\r\n generateFunctionData(\r\n t('functions.las_to_solv3d_streamable.title'),\r\n hasLASFiles,\r\n handleLasToSolv3dStreamable\r\n ),\r\n generateFunctionData(\r\n t('functions.thin_las.title'),\r\n hasLASFiles,\r\n handleThinLas\r\n ),\r\n generateFunctionData(\r\n t('functions.sampling.title'),\r\n hasLASFiles,\r\n handleSampling\r\n ),\r\n generateFunctionData(\r\n t('functions.classify_export.title'),\r\n hasLASFiles,\r\n handleClassifyExport\r\n ),\r\n generateFunctionData(\r\n t('functions.convert_units.title'),\r\n hasLASFiles,\r\n handleConvertUnits\r\n )\r\n ];\r\n\r\n let filtered = data\r\n .filter(x => x.condition)\r\n .sort((a, b) => a.name.localeCompare(b.name))\r\n .map(x => x.component);\r\n\r\n if (filtered.length === 0) {\r\n return (\r\n \r\n \r\n {t('functions.no_functions_available')}\r\n \r\n \r\n );\r\n }\r\n\r\n return filtered;\r\n };\r\n\r\n return (\r\n \r\n }\r\n parentMenuOpen={contextOpen}\r\n >\r\n {getMenuItems()}\r\n \r\n\r\n {hasCameraFiles && \r\n\r\n {/** Blur vehicles and people */}\r\n \r\n\r\n }\r\n\r\n {hasLASFiles && \r\n\r\n {/** LAS to Orthomosaic */}\r\n \r\n\r\n {/** LAS to Solv3D Streamable Point Cloud */}\r\n \r\n\r\n {/** Thin Las */}\r\n \r\n\r\n {/** Sampling */}\r\n \r\n\r\n {/** Sampling */}\r\n \r\n\r\n {/** Convert Units */}\r\n \r\n\r\n }\r\n\r\n \r\n );\r\n});\r\n","export enum ServerType {\r\n ArcGISMapServer = 0,\r\n ArcGISFeatureServer = 1,\r\n ArcGISImageServer = 2,\r\n ArcGISOnline = 3,\r\n OGCWMS = 4,\r\n OGCWMTS = 5,\r\n OGCWFS = 6,\r\n TileServer = 7\r\n}","import React, {useEffect, useState, memo, useCallback, useMemo} from \"react\";\r\nimport {isCloudSite, isElectronApp} from '../electron-modules';\r\nimport ListItem from \"@material-ui/core/ListItem\";\r\nimport CloudIcon from \"@material-ui/icons/Cloud\";\r\nimport InfoIcon from \"@material-ui/icons/Info\";\r\nimport PanoramaIcon from '@material-ui/icons/Panorama';\r\nimport PanoramaOutlinedIcon from '@material-ui/icons/PanoramaOutlined';\r\nimport ListItemText from \"@material-ui/core/ListItemText\";\r\nimport PublicIcon from '@material-ui/icons/Public';\r\nimport {\r\n Avatar,\r\n Checkbox,\r\n DialogContent,\r\n ListItemSecondaryAction,\r\n MenuItem,\r\n Typography\r\n} from \"@material-ui/core\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport PhotoLibraryIcon from '@material-ui/icons/PhotoLibrary';\r\nimport SwapHorizIcon from '@material-ui/icons/SwapHoriz';\r\nimport WarningIcon from '@material-ui/icons/Warning';\r\nimport ImportExportIcon from '@material-ui/icons/ImportExport';\r\nimport Satellite from '@material-ui/icons/Satellite';\r\nimport {\r\n DenseMenu,\r\n DraggableDialog,\r\n DropDownDialog,\r\n LinearProgressWithLabel,\r\n MenuDivider,\r\n PromptDialog,\r\n TextDialog\r\n} from \"../components\";\r\nimport {createStyles, makeStyles, Theme} from \"@material-ui/core/styles\";\r\nimport {\r\n AssetType,\r\n updateAsset,\r\n deleteAsset,\r\n Asset,\r\n CameraData,\r\n TagData,\r\n XMLData,\r\n WebMapData\r\n} from \"../redux/assets-slice\";\r\nimport {useDispatch} from 'react-redux';\r\nimport { downloadFile, writeToString } from '../utilities';\r\nimport {\r\n DenseIcon,\r\n FontAwesomeIcon,\r\n ArrowTooltip\r\n} from '../components';\r\nimport clsx from 'clsx';\r\nimport {toast} from \"../app\";\r\nimport {\r\n TagItemsDialog,\r\n TagIconDialog,\r\n ModelLayerDialog,\r\n WebSourceLayerDialog\r\n} from \".\";\r\nimport { getTagTexturePath } from \"../viewer/textures/tag-icons\";\r\nimport { isEqual } from 'lodash';\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { FunctionsMenu } from \"../functions\";\r\nimport { useAuth, useContextMenu, useDialog, useViewer } from \"../hooks\";\r\nimport { ServerType } from \"../types/web-sources\";\r\nimport { csvExportFilter } from \"../file-extensions\";\r\n\r\nconst updateInterval = 200;\r\n\r\ninterface AssetState {\r\n assetPercent: number\r\n assetError: boolean\r\n assetIsLarge: boolean\r\n}\r\n\r\nconst initialAssetState = {\r\n assetPercent: 0,\r\n assetError: false,\r\n assetIsLarge: false,\r\n};\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n floatRight: {\r\n float: \"right\"\r\n },\r\n itemList: {\r\n paddingLeft: theme.spacing(4),\r\n display: \"inline-block\"\r\n },\r\n itemText: {\r\n wordBreak: \"break-all\",\r\n overflow: \"hidden\"\r\n },\r\n assetMargins: {\r\n margin: '0px 12px 0px 0px'\r\n },\r\n assetError: {\r\n color: theme.palette.error.main,\r\n fontWeight: \"bold\"\r\n },\r\n assetWarning: {\r\n color: theme.palette.warning.main,\r\n fontWeight: \"bold\"\r\n },\r\n assetInfo: {\r\n display: 'flex',\r\n margin: '0px'\r\n },\r\n assetCheckbox: {\r\n position: \"relative\",\r\n transform: \"translateY(0%)\",\r\n alignItems: \"center\",\r\n display: \"flex\",\r\n right: \"8px\"\r\n },\r\n checkboxParent: {\r\n padding: \"6px\"\r\n },\r\n percentLabel: {\r\n textAlign: \"right\"\r\n },\r\n fileInfoHeading: {\r\n paddingTop: theme.spacing(2.0)\r\n },\r\n fileInfoText: {\r\n display: \"block\"\r\n },\r\n tagAvatar: {\r\n width: \"20px\",\r\n height: \"20px\",\r\n borderRadius: theme.spacing(0)\r\n },\r\n titleClose: {\r\n position: 'absolute',\r\n right: theme.spacing(0),\r\n color: theme.palette.grey[500],\r\n },\r\n remoteAssetIcon: {\r\n fontSize: \"0.8rem\",\r\n marginRight: \"-0.8rem\", // must match font size\r\n position: \"relative\",\r\n left: \"-8px\",\r\n bottom: \"-5px\",\r\n opacity: \"1.0\",\r\n color: \"lightgray\",\r\n filter: \"drop-shadow(2px 2px 1px darkgray)\"\r\n }\r\n }),\r\n);\r\n\r\ninterface LasFileInfoDialogProps {\r\n asset: Asset;\r\n open: boolean;\r\n onClose: () => void;\r\n data: any\r\n}\r\n\r\nconst LasFileInfoDialog = (props: LasFileInfoDialogProps) => {\r\n const {open, onClose, asset, data} = props;\r\n\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n\r\n const hasVLRSData = data.vlrs_data;\r\n\r\n let vlrsKeys = null;\r\n if (hasVLRSData) {\r\n vlrsKeys = Object.keys(data.vlrs_data);\r\n vlrsKeys.sort();\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n {t('asset.general-attributes')}\r\n \r\n\r\n \r\n {t('asset.file-name')}: {asset.name}\r\n \r\n\r\n \r\n {t('asset.point-information')}\r\n \r\n \r\n {t('asset.point-count')}: {data.points.count}\r\n \r\n \r\n {t('asset.x-range')}: [{data.points.x_min.toFixed(2)}, {data.points.x_max.toFixed(2)}]\r\n \r\n \r\n {t('asset.y-range')}: [{data.points.y_min.toFixed(2)}, {data.points.y_max.toFixed(2)}]\r\n \r\n \r\n {t('asset.z-range')}: [{data.points.z_min.toFixed(2)}, {data.points.z_max.toFixed(2)}]\r\n \r\n\r\n \r\n {t('asset.data-format')}\r\n \r\n \r\n {t('asset.las-version')}: {data.attributes.version}\r\n \r\n \r\n {t('asset.record-id')}: {data.attributes.record_id}\r\n \r\n \r\n {t('asset.contains-timestamp')}: {data.attributes.has_time_stamp ? t('general.yes') : t('general.no')}\r\n \r\n \r\n {t('asset.contains-rgb')}: {data.attributes.has_rgb ? t('general.yes') : t('general.no')}\r\n \r\n \r\n {t('asset.contains-intensity')}: {data.attributes.has_intensity ? t('general.yes') : t('general.no')}\r\n \r\n\r\n \r\n {t('asset.vlrs-metadata')}\r\n \r\n\r\n {hasVLRSData && (\r\n {vlrsKeys.map((key, index) => {\r\n return (\r\n \r\n {key}: {data.vlrs_data[key]}\r\n \r\n );\r\n })}\r\n )}\r\n\r\n {/* Nothing found in VLRS */}\r\n {!hasVLRSData && (\r\n \r\n {t('asset.no-data-found')}\r\n \r\n )}\r\n\r\n \r\n \r\n );\r\n};\r\n\r\ninterface AssetItemProps {\r\n asset: Asset;\r\n setDraggingAsset: React.Dispatch;\r\n}\r\n\r\nexport const AssetItem = memo((props: AssetItemProps) => {\r\n const {asset, setDraggingAsset} = props;\r\n\r\n const dispatch = useDispatch();\r\n const classes = useStyles();\r\n const {viewer} = useViewer();\r\n const {t} = useTranslation();\r\n const contextMenu = useContextMenu();\r\n const fileInfoDialog = useDialog();\r\n const detailsDialog = useDialog();\r\n const deleteDialog = useDialog();\r\n const renameDialog = useDialog();\r\n const iconUpdateDialog = useDialog();\r\n const modelLayersDialog = useDialog();\r\n const webmapLayersDialog = useDialog();\r\n const landXMLDialog = useDialog();\r\n const {permissions} = useAuth();\r\n\r\n const [fileInfo, setFileInfo] = useState(null);\r\n const [assetState, setAssetState] = useState({\r\n ...initialAssetState\r\n });\r\n\r\n\r\n const isPanoramic = asset.type === AssetType.Panoramic;\r\n const isPlanar = asset.type === AssetType.Planar;\r\n const isEncompassCloud = asset.type === AssetType.Encompass;\r\n const isPotreeCloud = asset.type === AssetType.Potree;\r\n const isLASFile = asset.type === AssetType.LAS;\r\n const isE57File = asset.type === AssetType.E57Points;\r\n const isOrtho = asset.type === AssetType.OrthoMosaic;\r\n const isTag = asset.type === AssetType.Tag;\r\n const isIFC = asset.type === AssetType.IFC;\r\n const isSHP = asset.type === AssetType.SHP;\r\n const isDXF = asset.type === AssetType.DXF;\r\n const isLandXML = asset.type === AssetType.LandXML;\r\n const isWebMap = asset.type === AssetType.Webmap;\r\n\r\n const isModelFile = isIFC || isSHP || isDXF;\r\n const isCamera = isPanoramic || isPlanar;\r\n const isPointCloud = isLASFile || isEncompassCloud || isE57File || isPotreeCloud;\r\n\r\n const canEditLayers = useMemo(() => {\r\n if (isSHP || isDXF) {\r\n return true;\r\n }\r\n\r\n if (isWebMap) {\r\n const type = (asset.data as WebMapData).type;\r\n return (type !== ServerType.ArcGISImageServer)\r\n && (type !== ServerType.TileServer);\r\n }\r\n\r\n return false;\r\n }, [asset.type]);\r\n\r\n /** Handle asset percentage / state changes */\r\n useEffect(() => {\r\n // Create interval to update state\r\n const interval = setInterval(() => {\r\n updateAssetState();\r\n }, updateInterval);\r\n\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n }, [viewer, assetState]);\r\n\r\n useEffect(() => {\r\n // Update initial state\r\n updateAssetState();\r\n }, []);\r\n\r\n const updateAssetState = () => {\r\n if (!viewer) return;\r\n\r\n let newAssetState = {} as AssetState;\r\n\r\n if (isPointCloud) {\r\n newAssetState = viewer.getCloudStatus(asset.id);\r\n } else if (isModelFile) {\r\n newAssetState = viewer.getModelStatus(asset.id);\r\n }\r\n\r\n if (isEqual(assetState, newAssetState)) return;\r\n setAssetState(newAssetState);\r\n };\r\n\r\n const handleRenameSubmit = (name: string) => {\r\n dispatch(updateAsset({\r\n assetID: asset.id,\r\n name: name\r\n }));\r\n\r\n renameDialog.handleClose();\r\n };\r\n\r\n const handleRenameClick = () => {\r\n contextMenu.handleClose();\r\n renameDialog.handleOpen();\r\n };\r\n\r\n const handleDeleteClick = () => {\r\n contextMenu.handleClose();\r\n deleteDialog.handleOpen();\r\n };\r\n\r\n const handleIconChangeClick = () => {\r\n contextMenu.handleClose();\r\n iconUpdateDialog.handleOpen();\r\n };\r\n\r\n const handleOrderingClick = () => {\r\n contextMenu.handleClose();\r\n landXMLDialog.handleOpen();\r\n };\r\n\r\n const handleOrderingClose = (state: boolean) => {\r\n contextMenu.handleClose();\r\n landXMLDialog.handleClose();\r\n\r\n dispatch(updateAsset({\r\n assetID: asset.id,\r\n enu: state\r\n }));\r\n };\r\n\r\n const handleTagCSVExport = (asset) => {\r\n contextMenu.handleClose();\r\n const tags = viewer.getTagsByCSV(asset.id);\r\n const rows = viewer.getTagRowsCSV(tags);\r\n const content = writeToString(rows);\r\n downloadFile(asset.name, content, \"csv\", csvExportFilter);\r\n };\r\n\r\n const handleImageCSVExport = (asset) => {\r\n contextMenu.handleClose();\r\n const cameras = viewer.getCamerasByCSV(asset.id);\r\n const rows = viewer.getCameraRowsCSV(cameras);\r\n const content = writeToString(rows);\r\n downloadFile(asset.name, content, \"csv\", csvExportFilter);\r\n };\r\n\r\n const handleModelLayersClick = () => {\r\n contextMenu.handleClose();\r\n modelLayersDialog.handleOpen();\r\n };\r\n\r\n const handleWebmapLayersClick = () => {\r\n contextMenu.handleClose();\r\n webmapLayersDialog.handleOpen();\r\n };\r\n\r\n const onAssetDelete = () => {\r\n dispatch(deleteAsset(asset.id));\r\n };\r\n\r\n const handleAssetClick = (event) => {\r\n const isCheckBox = (event.target.type === \"checkbox\");\r\n if (isCheckBox) return;\r\n\r\n if (isOrtho) {\r\n viewer?.snapToOrtho(asset.id);\r\n } else if (isPointCloud) {\r\n viewer?.snapToPointCloud(asset.id);\r\n } else if (isCamera) {\r\n viewer?.snapToImages(asset.id);\r\n } else if (isTag) {\r\n detailsDialog.handleOpen();\r\n } else if (isModelFile) {\r\n viewer?.snapToModel(asset.id);\r\n }\r\n };\r\n\r\n const handleDragStart = () => {\r\n setDraggingAsset(asset.id);\r\n };\r\n\r\n const handleDragEnd = () => {\r\n setDraggingAsset(null);\r\n };\r\n\r\n const handleVisibilityClick = () => {\r\n dispatch(updateAsset({\r\n assetID: asset.id,\r\n visible: !asset.visible\r\n }));\r\n };\r\n\r\n const handleFileInfoClick = () => {\r\n contextMenu.handleClose();\r\n\r\n if (fileInfo) {\r\n fileInfoDialog.handleOpen();\r\n return;\r\n };\r\n\r\n let info = viewer.getLasFileInfo(asset.id);\r\n if (!info) {\r\n toast.warning(t(\"toast.file-info-missing\"));\r\n return;\r\n }\r\n\r\n setFileInfo(info);\r\n fileInfoDialog.handleOpen();\r\n };\r\n\r\n const getAssetCount = () => {\r\n if (isPanoramic) {\r\n const items = asset.data as CameraData[];\r\n return t(\"asset.panoramic-count\", {count: items.length});\r\n } else if (isPlanar) {\r\n const items = asset.data as CameraData[];\r\n return t(\"asset.planar-count\", {count: items.length});\r\n }else if (isTag) {\r\n const {items} = asset.data as TagData;\r\n return t(\"asset.tags-count\", {count: items.length});\r\n }\r\n return;\r\n };\r\n\r\n const getTagAttributes = () => {\r\n if (!isTag) return {\r\n tagTexture: undefined,\r\n tagSize: undefined\r\n };\r\n\r\n const {texture, size} = (asset.data as TagData);\r\n\r\n return {\r\n tagTexture: texture,\r\n tagSize: size\r\n };\r\n };\r\n\r\n const submitTagIcon = useCallback((texture: string, size: number) => {\r\n dispatch(updateAsset({\r\n assetID: asset.id,\r\n texture: texture,\r\n size: size\r\n }));\r\n\r\n iconUpdateDialog.handleClose();\r\n }, [asset]);\r\n\r\n const {assetPercent, assetError, assetIsLarge} = assetState;\r\n\r\n const isLargeCloud = isPointCloud\r\n && assetIsLarge\r\n && (assetPercent < 100)\r\n && !assetError;\r\n\r\n const showPercent = (isLASFile || isE57File || isModelFile)\r\n && asset.visible\r\n && (assetPercent < 100);\r\n\r\n const assetCount = getAssetCount();\r\n const {tagTexture, tagSize} = getTagAttributes();\r\n const isRemoteAsset = asset.cloud && !isCloudSite;\r\n\r\n // Right now we only officially support editing/deleting\r\n // tag collections for the cloud site\r\n const canDeleteAsset = isElectronApp || (permissions.delete && isTag);\r\n const canEditAsset = isElectronApp || (permissions.edit && isTag);\r\n\r\n return (\r\n
\r\n \r\n
\r\n \r\n \r\n {/* Panoramic File */}\r\n {(isPanoramic) && ()}\r\n\r\n {/* Planar File */}\r\n {(isPlanar) && ()}\r\n\r\n {/* Tag File */}\r\n {isTag && ()}\r\n\r\n {/* Orthomosaic File */}\r\n {(isOrtho) && ()}\r\n\r\n {/* LandXML File */}\r\n {(isLandXML) && }\r\n\r\n {/* Webmap */}\r\n {(isWebMap) && }\r\n\r\n {/* Model File */}\r\n {isModelFile && \r\n {!assetError && (\r\n \r\n )}\r\n\r\n {assetError && (\r\n \r\n \r\n \r\n )}\r\n }\r\n\r\n {/* Pointcloud File */}\r\n {isPointCloud && \r\n {(!assetError && !isLargeCloud) && (\r\n \r\n )}\r\n\r\n {assetError && (\r\n \r\n \r\n \r\n )}\r\n\r\n {(isLargeCloud) && (\r\n \r\n \r\n \r\n )}\r\n }\r\n\r\n {isRemoteAsset && \r\n \r\n \r\n \r\n }\r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n
\r\n\r\n {/* File load percent */}\r\n {showPercent && (
\r\n \r\n
)}\r\n\r\n \r\n\r\n \r\n {/** Functions submenu */}\r\n {isElectronApp && }\r\n\r\n {isElectronApp && }\r\n\r\n {/** Export image csv */}\r\n {isPanoramic && {\r\n handleImageCSVExport(asset);\r\n }}>\r\n \r\n \r\n \r\n \r\n {t('asset.export-corrected-csv')}\r\n \r\n }\r\n\r\n {/** Export tag csv */}\r\n {isTag && {\r\n handleTagCSVExport(asset);\r\n }}>\r\n \r\n \r\n \r\n \r\n {t('asset.export-tag-csv')}\r\n \r\n }\r\n\r\n {/** Get LAS information */}\r\n {isLASFile && (\r\n \r\n \r\n \r\n \r\n {t('asset.file-info')}\r\n \r\n )}\r\n\r\n {/** Update tag icon */}\r\n {isTag && permissions.edit &&\r\n \r\n \r\n \r\n \r\n \r\n {t('asset.update-tag-icon')}\r\n \r\n \r\n }\r\n\r\n {/** Manage webmap layers */}\r\n {isWebMap && canEditLayers && (\r\n \r\n \r\n \r\n \r\n \r\n {t('asset.manage_layers')}\r\n \r\n \r\n )}\r\n\r\n {/** Manage model layers */}\r\n {isModelFile && canEditLayers && (\r\n \r\n \r\n \r\n \r\n \r\n {\"Manage Layers\"}\r\n \r\n \r\n )}\r\n\r\n {/** LandXML ordering */}\r\n {isLandXML && isElectronApp && (\r\n \r\n \r\n \r\n \r\n \r\n {t('asset.landxml-ordering')}\r\n \r\n \r\n )}\r\n\r\n {/** Rename asset */}\r\n \r\n \r\n \r\n \r\n \r\n {t('asset.rename')}\r\n \r\n \r\n\r\n {/** Delete asset */}\r\n \r\n \r\n \r\n \r\n \r\n {t('asset.delete')}\r\n \r\n \r\n \r\n\r\n {isTag && ()}\r\n\r\n {isWebMap && canEditLayers && ()}\r\n\r\n {isModelFile && canEditLayers && ()}\r\n\r\n {/* Discard measurements dialog */}\r\n {\r\n onAssetDelete();\r\n }}\r\n title={t('asset.delete-title')}\r\n prompt={t('asset.delete-prompt', {\r\n name: asset.name\r\n })}\r\n button={t(\"buttons.delete\")}\r\n />\r\n\r\n {/* Rename Dialog */}\r\n \r\n\r\n {/* LAS file info Dialog */}\r\n {fileInfo && ()}\r\n\r\n {/* Tag info dialog */}\r\n {isTag && }\r\n\r\n\r\n {isLandXML && }\r\n\r\n
\r\n );\r\n});\r\n","export const sendCustomEvent = (type, detail) => {\r\n const event = new CustomEvent(type, {detail});\r\n document.dispatchEvent(event);\r\n};","import React, {memo, useCallback, useEffect, useMemo, useState} from \"react\";\r\nimport {useSelector, useDispatch} from 'react-redux';\r\nimport {createStyles, makeStyles, Theme, useTheme} from \"@material-ui/core/styles\";\r\nimport tagTextures, { defaultTagTexture, getTagTexturePath } from \"../viewer/textures/tag-icons\";\r\nimport Pagination from \"@material-ui/lab/Pagination/Pagination\";\r\nimport LinkIcon from '@material-ui/icons/Link';\r\nimport ZoomInIcon from '@material-ui/icons/ZoomIn';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport FileCopyIcon from '@material-ui/icons/FileCopy';\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport {\r\n createTags,\r\n updateTag,\r\n deleteTag,\r\n getTagAssets,\r\n selectAllAssets,\r\n TagData,\r\n TagItemData,\r\n Asset,\r\n createAsset,\r\n AssetType\r\n} from \"../redux/assets-slice\";\r\nimport {createFolder, selectAllFolders} from '../redux/folders-slice';\r\nimport {\r\n DialogContent,\r\n InputLabel,\r\n TextField,\r\n Avatar,\r\n Grid,\r\n Collapse,\r\n} from \"@material-ui/core\";\r\nimport clsx from 'clsx';\r\nimport {\r\n DraggableDialog,\r\n PromptDialog,\r\n EnhancedTable,\r\n SimpleDialog,\r\n InputWithLabel,\r\n DropdownWithLabel,\r\n DenseDivider,\r\n TextWithLabel,\r\n DividerWithText\r\n} from \"../components\";\r\nimport { toast } from \"../app\";\r\nimport { getLocalizedFolderName } from \"../utilities\";\r\nimport LocalScene from \"../viewer/js/projections\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { isStaticSite } from \"../electron-modules\";\r\nimport { nanoid } from \"@reduxjs/toolkit\";\r\nimport { useAuth, useDialog, useUniqueProjectID, useViewer } from \"../hooks\";\r\nimport { TagSize } from \"../types/tags\";\r\nimport { sendCustomEvent } from \"../events\";\r\nimport { useTableState } from \"../hooks/use-table-state\";\r\nimport { useAppDispatch } from \"../redux/store\";\r\nimport copyTextToClipboard from \"copy-to-clipboard\";\r\n\r\nexport const tagIconsPerRow = 8;\r\nexport const tagRowsPerPage = 3;\r\n\r\nconst NEW_CSV_ID = \"__new_csv__\";\r\nconst NEW_FOLDER_ID = \"__new_folder__\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n textField: {\r\n marginBottom: theme.spacing(3)\r\n },\r\n selectDivider: {\r\n margin: theme.spacing(0.5),\r\n opacity: 0.2\r\n },\r\n asterisk: {\r\n \"&:after\": {\r\n content:'\"*\"',\r\n color: \"red\",\r\n paddingLeft: theme.spacing(0.5)\r\n }\r\n },\r\n avatarParent: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n paddingTop: theme.spacing(2)\r\n },\r\n tagAvatar: {\r\n width: \"24px\",\r\n height: \"24px\",\r\n cursor: \"pointer\",\r\n \"&:hover\": {\r\n width: \"26px\",\r\n height: \"26px\",\r\n margin: \"-1px\"\r\n }\r\n },\r\n tagIconPagination: {\r\n paddingBottom: theme.spacing(2)\r\n },\r\n tagIconSearchParent: {\r\n textAlign: \"right\",\r\n paddingRight: theme.spacing(2),\r\n paddingBottom: theme.spacing(1)\r\n },\r\n tagIconPageParent: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"row-reverse\"\r\n },\r\n tagIconParent: {\r\n position: \"relative\",\r\n display: \"inline-block\",\r\n width: `calc(${100/tagIconsPerRow}% - ${theme.spacing(2)}px)`,\r\n padding: theme.spacing(1)\r\n },\r\n tagIconCheck: {\r\n userSelect: \"none\",\r\n bottom: theme.spacing(1),\r\n right: theme.spacing(1),\r\n position: \"absolute\",\r\n color: \"green\",\r\n backgroundColor: \"white\",\r\n borderRadius: \"50%\"\r\n },\r\n tagIconImage: {\r\n width: `calc(100% - ${theme.spacing(1)}px)`,\r\n height: `calc(100% - ${theme.spacing(1)}px)`,\r\n margin: theme.spacing(0.5),\r\n cursor: \"pointer\",\r\n \"&:hover\": {\r\n width: \"100%\",\r\n height: \"100%\",\r\n margin: \"0px\",\r\n }\r\n },\r\n content: {\r\n padding: theme.spacing(0),\r\n paddingTop: \"0px !important\"\r\n }\r\n }),\r\n);\r\n\r\ninterface TagIconDialogProps {\r\n open: boolean\r\n onSubmit(texture: string, size: number): void\r\n onClose(): void\r\n currentTexture: string\r\n currentSize: number\r\n}\r\n\r\nexport const TagIconDialog = memo((props: TagIconDialogProps) => {\r\n const {open, onSubmit, onClose, currentTexture, currentSize} = props;\r\n\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n\r\n const [page, setPage] = useState(1);\r\n const [search, setSearch] = useState(\"\");\r\n const [tagTexture, setTagTexture] = useState(\"\");\r\n const [tagSize, setTagSize] = useState(0);\r\n\r\n const handleIconClick = (texture) => {\r\n setTagTexture(texture);\r\n };\r\n\r\n const onSearch = (event) => {\r\n setPage(1);\r\n setSearch(event.target.value as string);\r\n };\r\n\r\n const onPageChange = (event, page: number) => {\r\n setPage(page);\r\n };\r\n\r\n const resetDefaults = () => {\r\n let selectedPage = Math.floor(\r\n textures.indexOf(currentTexture) / tagsPerPage) + 1;\r\n\r\n setSearch(\"\");\r\n setTagTexture(currentTexture);\r\n setTagSize(currentSize);\r\n setPage(selectedPage);\r\n };\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n resetDefaults();\r\n }, [open]);\r\n\r\n const textures = useMemo(() => {\r\n const searchText = search.toLowerCase().trim();\r\n const searchTerms = searchText.split(\" \");\r\n\r\n if (searchText === \"\") {\r\n return Object.keys(tagTextures);\r\n }\r\n\r\n return Object.keys(tagTextures)\r\n .map(key => {\r\n const itemText = key.toLowerCase();\r\n const matches = searchTerms.filter(x => itemText.includes(x)).length;\r\n return {key, matches};\r\n })\r\n .filter(x => x.matches >= searchTerms.length)\r\n .map(x => x.key);\r\n }, [search]);\r\n\r\n const iconChanged = (tagTexture !== currentTexture);\r\n const sizeChanged = (tagSize !== currentSize);\r\n\r\n const tagsPerPage = tagIconsPerRow * tagRowsPerPage;\r\n const numPages = Math.ceil(textures.length / tagsPerPage);\r\n\r\n const texturesForPage = textures.slice(\r\n (page-1) * tagsPerPage,\r\n page * tagsPerPage\r\n );\r\n\r\n return (\r\n {\r\n onSubmit(tagTexture, tagSize);\r\n }}\r\n button={t(\"buttons.apply-changes\")}\r\n >\r\n
\r\n \r\n
\r\n\r\n
\r\n {texturesForPage.map(texture => (\r\n
\r\n {\r\n handleIconClick(texture);\r\n }}\r\n />\r\n\r\n {(texture === tagTexture) && ()}\r\n
\r\n ))}\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n \r\n\r\n
\r\n \r\n\r\n {/** Icon Size */}\r\n \r\n \r\n \r\n
\r\n\r\n \r\n );\r\n});\r\n\r\ninterface TagItemsDialogProps {\r\n asset: Asset\r\n open: boolean;\r\n title: string;\r\n onClose(): void;\r\n}\r\n\r\nexport const TagItemsDialog = (props: TagItemsDialogProps) => {\r\n const {asset, open, title, onClose} = props;\r\n\r\n const {viewer} = useViewer();\r\n const dispatch = useDispatch();\r\n const {i18n, t} = useTranslation();\r\n\r\n const deleteDialog = useDialog();\r\n const {permissions} = useAuth();\r\n const tableState = useTableState({defaultSort: \"name\"});\r\n\r\n const formatter = viewer.getMeasurementFormatter();\r\n const precision = formatter.getVectorPrecision(LocalScene.viewProjection);\r\n\r\n const onEdit = (row) => {\r\n showTagDetails(row.tagID, true);\r\n };\r\n\r\n const onDelete = (row) => {\r\n dispatch(deleteTag(row.tagID));\r\n };\r\n\r\n const onRowClick = (row, index) => {\r\n if (index > 2) return;\r\n viewer.jumpToTag(row.tagID);\r\n };\r\n\r\n const getRows = (items) => {\r\n return items.map((tag, index) => {\r\n const isAerialTag = !(\"z\" in tag);\r\n const x = tag.x.toFixed(precision.x);\r\n const y = tag.y.toFixed(precision.y);\r\n const z = isAerialTag ? \"N/A\" : tag.z.toFixed(precision.z);\r\n\r\n const coordinate = isAerialTag\r\n ? `(${x}, ${y})`\r\n : `(${x}, ${y}, ${z})`;\r\n\r\n const position = isAerialTag\r\n ? [tag.x, tag.y]\r\n : [tag.x, tag.y, tag.z];\r\n\r\n let rowData = {\r\n id: `TagTableRow_${tag.id}`,\r\n tagID: tag.id,\r\n tag: index + 1,\r\n modified: tag.date,\r\n name: tag.name,\r\n comment: tag.comment,\r\n coordinate,\r\n position\r\n };\r\n\r\n return rowData;\r\n });\r\n };\r\n\r\n const tagItems = (asset.data as TagData).items;\r\n\r\n const actions = useMemo(() => {\r\n const zoomToTag = {\r\n title: t('tags.move_to_tag'),\r\n icon: ,\r\n onClick: (row) => {\r\n viewer.jumpToTag(row.tagID);\r\n }\r\n };\r\n\r\n const copyPosition = {\r\n title: t(\"tags.copy-to-clipboard\"),\r\n icon: ,\r\n onClick: (row) => {\r\n // Copy position to clipboard\r\n copyTextToClipboard(row.coordinate);\r\n toast.success(t(\"toast.copied-to-clipboard\"));\r\n }\r\n };\r\n\r\n const copyURL = {\r\n title: t('tags.copy_tag_url'),\r\n icon: ,\r\n onClick: (row) => {\r\n // Copy url to clipboard\r\n const url = new URL(window.location as any);\r\n url.hash = `tag=${row.tagID}`;\r\n copyTextToClipboard(url.href);\r\n toast.success(t(\"toast.copied-to-clipboard\"));\r\n }\r\n };\r\n\r\n const deleteRow = {\r\n title: t(\"buttons.delete\"),\r\n icon: ,\r\n onClick: (row) => {\r\n deleteDialog.handleOpen(row);\r\n }\r\n };\r\n\r\n const editRow = {\r\n title: t(\"buttons.edit\"),\r\n icon: ,\r\n onClick: onEdit\r\n };\r\n\r\n let actions = [];\r\n actions.push(zoomToTag);\r\n actions.push(copyPosition);\r\n\r\n if (isStaticSite) {\r\n actions.push(copyURL);\r\n }\r\n\r\n if (permissions.edit) {\r\n actions.push(editRow);\r\n }\r\n\r\n if (permissions.delete) {\r\n actions.push(deleteRow);\r\n }\r\n\r\n return actions;\r\n }, [i18n.language, permissions, isStaticSite]);\r\n\r\n const columns = [\r\n {\r\n id: 'name',\r\n label: t(\"tags.table-name\"),\r\n wordBreak: true,\r\n searchable: true\r\n },\r\n {\r\n id: 'comment',\r\n label: t(\"tags.table-comments\"),\r\n wordBreak: true,\r\n searchable: true\r\n },\r\n {\r\n id: 'modified',\r\n label: t(\"tags.table-date\"),\r\n date: true\r\n },\r\n ];\r\n\r\n const rows = useMemo(() => {\r\n return getRows(tagItems);\r\n }, [tagItems]);\r\n\r\n let deletePrompt = \"\";\r\n if (deleteDialog.open) {\r\n deletePrompt = t('tags.do_you_want_to_delete_this_tag_row_name', {\r\n name: deleteDialog.data.name\r\n });\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Delete Dialog */}\r\n {\r\n onDelete(deleteDialog.data);\r\n deleteDialog.handleClose();\r\n }}\r\n title={t(\"enhanced-table.prompt-delete-title\")}\r\n prompt={deletePrompt}\r\n button={t('buttons.delete')}\r\n />\r\n \r\n );\r\n};\r\n\r\ninterface TagDeleteDialogProps {\r\n open: boolean;\r\n onClose(): void;\r\n toDelete: string[];\r\n}\r\n\r\nexport const TagDeleteDialog = (props: TagDeleteDialogProps) => {\r\n const {open, onClose, toDelete = []} = props;\r\n\r\n const dispatch = useDispatch();\r\n const {t} = useTranslation();\r\n\r\n const onSubmit = () => {\r\n toDelete.forEach(tagID => {\r\n dispatch(deleteTag(tagID));\r\n });\r\n\r\n onClose();\r\n toast.success(t(\"toast.tag-removed\", {\r\n count: numTagsToDelete\r\n }));\r\n };\r\n\r\n const numTagsToDelete = toDelete.length;\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport const TagDetailsDialog = () => {\r\n const dispatch = useDispatch();\r\n const {t} = useTranslation();\r\n\r\n const assets = useSelector(selectAllAssets);\r\n const tagAssets = getTagAssets(assets);\r\n const uniqueProjectID = useUniqueProjectID();\r\n const tagDetailsDialog = useDialog();\r\n const {permissions} = useAuth();\r\n\r\n const [title, setTitle] = useState(\"\");\r\n const [comment, setComment] = useState(\"\");\r\n const [tagToEdit, setTagToEdit] = useState(null);\r\n const [editing, setEditing] = useState(false);\r\n\r\n useEffect(() => {\r\n /** Close dialog when new project is loaded */\r\n onClose();\r\n }, [uniqueProjectID]);\r\n\r\n /** Tag details event listener */\r\n useEffect(() => {\r\n const callback = (event) => {\r\n const {tagID, editing} = event.detail;\r\n setTagToEdit(tagID);\r\n setEditing(editing);\r\n };\r\n\r\n document.addEventListener(\"tag-details\", callback);\r\n\r\n return () => {\r\n document.removeEventListener(\"tag-details\", callback);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n const allTags = tagAssets.map(asset => (asset.data as TagData).items).flat();\r\n const tag = allTags.find(x => x.id === tagToEdit);\r\n if (!tag) return;\r\n\r\n setTitle(tag.name);\r\n setComment(tag.comment);\r\n tagDetailsDialog.handleOpen();\r\n }, [tagToEdit]);\r\n\r\n const onClose = () => {\r\n setTagToEdit(null);\r\n tagDetailsDialog.handleClose();\r\n };\r\n\r\n const onEdit = () => {\r\n setEditing(true);\r\n };\r\n\r\n const onSubmit = () => {\r\n\r\n dispatch(updateTag({\r\n tagID: tagToEdit,\r\n name: title,\r\n comment: comment\r\n }));\r\n\r\n onClose();\r\n toast.success(t(\"toast.tag-details-update\"));\r\n };\r\n\r\n const titleMissing = title.trim() === \"\";\r\n const canSubmit = !titleMissing;\r\n const canEdit = permissions.edit && !editing;\r\n\r\n return (\r\n \r\n \r\n\r\n {editing && \r\n {/** Title */}\r\n \r\n \r\n \r\n\r\n {/** Comments */}\r\n \r\n \r\n \r\n }\r\n\r\n {!editing && \r\n {/** Title */}\r\n \r\n \r\n \r\n\r\n {/** Comments */}\r\n \r\n \r\n \r\n }\r\n\r\n \r\n \r\n );\r\n};\r\n\r\ninterface TagCreateDialogProps {\r\n open: boolean;\r\n onClose(): void;\r\n coordinate: number[];\r\n}\r\n\r\nexport const TagCreateDialog = memo((props: TagCreateDialogProps) => {\r\n const {open, onClose, coordinate} = props;\r\n\r\n const classes = useStyles();\r\n const theme = useTheme();\r\n const dispatch = useAppDispatch();\r\n const {t} = useTranslation();\r\n const iconUpdateDialog = useDialog();\r\n const {viewer} = useViewer();\r\n\r\n const assets = useSelector(selectAllAssets);\r\n const tagAssets = getTagAssets(assets);\r\n const folders = useSelector(selectAllFolders);\r\n\r\n const [title, setTitle] = useState(\"\");\r\n const [comment, setComment] = useState(\"\");\r\n const [collectionID, setCollectionID] = useState(\"\");\r\n const [collectionName, setCollectionName] = useState(\"\");\r\n const [folderID, setFolderID] = useState(NEW_FOLDER_ID);\r\n const [tagTexture, setTagTexture] = useState(defaultTagTexture);\r\n const [tagSize, setTagSize] = useState(TagSize.Medium);\r\n\r\n const onSubmit = async () => {\r\n onClose();\r\n\r\n const newTag = {\r\n id: nanoid(),\r\n name: title,\r\n comment: comment,\r\n date: new Date().toISOString(),\r\n x: coordinate[0],\r\n y: coordinate[1],\r\n } as TagItemData;\r\n\r\n if (coordinate.length === 3) {\r\n newTag.z = coordinate[2];\r\n newTag.sceneState = viewer.sceneState;\r\n }\r\n\r\n let tagFolderID;\r\n\r\n if (createNewFolder) {\r\n // Create new folder\r\n const folder = await dispatch(createFolder());\r\n tagFolderID = folder.id;\r\n } else {\r\n tagFolderID = folderID;\r\n }\r\n\r\n let tagCollectionID;\r\n\r\n if (createNewFile) {\r\n // Create new tag collection\r\n const asset = await dispatch(createAsset({\r\n folderID: tagFolderID,\r\n name: collectionName,\r\n type: AssetType.Tag,\r\n texture: tagTexture,\r\n size: tagSize\r\n }));\r\n\r\n tagCollectionID = asset.id;\r\n } else {\r\n tagCollectionID = collectionID;\r\n }\r\n\r\n // Add new tag to collection\r\n await dispatch(createTags({\r\n assetID: tagCollectionID,\r\n tags: [newTag]\r\n }));\r\n\r\n toast.success(t(\"toast.tag-added\"));\r\n };\r\n\r\n const resetDefaultValues = () => {\r\n setTitle(\"\");\r\n setComment(\"\");\r\n setCollectionName(\"\");\r\n setTagTexture(defaultTagTexture);\r\n\r\n iconUpdateDialog.handleClose();\r\n\r\n if (hasExistingFolders) {\r\n setFolderID(folders[0].id);\r\n } else {\r\n setFolderID(NEW_FOLDER_ID);\r\n }\r\n\r\n if (hasExistingCSVs) {\r\n setCollectionID(tagAssets[0].id);\r\n } else {\r\n setCollectionID(\"\");\r\n }\r\n };\r\n\r\n const submitTagIcon = useCallback((texture: string, size: number) => {\r\n setTagTexture(texture);\r\n setTagSize(size);\r\n iconUpdateDialog.handleClose();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n resetDefaultValues();\r\n }, [open]);\r\n\r\n const hasExistingCSVs = tagAssets.length > 0;\r\n const hasExistingFolders = folders.length > 0;\r\n const createNewFile = collectionID === NEW_CSV_ID;\r\n const createNewFolder = folderID === NEW_FOLDER_ID;\r\n\r\n /* Determine valid state for new tag */\r\n let canSubmit = true;\r\n const titleMissing = title.trim() === \"\";\r\n const nameMissing = collectionName.trim() === \"\";\r\n canSubmit = canSubmit && !titleMissing;\r\n canSubmit = canSubmit && !(nameMissing && createNewFile);\r\n\r\n // Folder is used if it is user made or if it contains assets\r\n const folderOptions = folders.filter(folder => {\r\n const items = assets.filter(x => x.folderID === folder.id);\r\n return folder.default ? items.length > 0 : true;\r\n });\r\n\r\n return (\r\n \r\n {/* New tag dialog */}\r\n \r\n \r\n\r\n {/** Title */}\r\n \r\n \r\n \r\n\r\n {/** Comments */}\r\n \r\n \r\n \r\n\r\n \r\n [tagCSV.id, tagCSV.name])\r\n ] as any}\r\n />\r\n \r\n\r\n
\r\n \r\n \r\n\r\n {/** Tag collection name */}\r\n \r\n \r\n \r\n\r\n {/** Tag collection folder */}\r\n \r\n {\r\n const localizedFolderName = getLocalizedFolderName(folder.name);\r\n return [folder.id, localizedFolderName];\r\n })\r\n ]}\r\n />\r\n \r\n\r\n {/** Default Icon */}\r\n \r\n
\r\n \r\n {t('tags.collection_icon')}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n\r\n {/* Tag Icon */}\r\n \r\n
\r\n );\r\n});\r\n\r\nexport const showTagDetails = (tagID: string, editing: boolean) => {\r\n sendCustomEvent(\"tag-details\", {tagID, editing});\r\n};\r\n","import React, {useState, memo} from \"react\";\r\nimport ListItem from \"@material-ui/core/ListItem\";\r\nimport FolderIcon from \"@material-ui/icons/Folder\";\r\nimport ListItemText from \"@material-ui/core/ListItemText\";\r\nimport {Checkbox} from \"@material-ui/core\";\r\nimport {\r\n Asset,\r\n deleteAsset,\r\n toggleFolderVisibility,\r\n updateAsset\r\n} from \"../redux/assets-slice\";\r\nimport ExpandLess from \"@material-ui/icons/ExpandLess\";\r\nimport ExpandMore from \"@material-ui/icons/ExpandMore\";\r\nimport List from \"@material-ui/core/List\";\r\nimport {AddAssetList, AssetItem} from \".\";\r\nimport {useDispatch} from 'react-redux';\r\nimport {\r\n DenseIcon,\r\n DenseMenu,\r\n MenuDivider,\r\n NestedMenu,\r\n PromptDialog,\r\n TextDialog\r\n} from '../components';\r\nimport {MenuItem, Typography} from \"@material-ui/core\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport {deleteFolder, Folder, updateFolder} from '../redux/folders-slice';\r\nimport { isElectronApp, isStaticSite } from \"../electron-modules\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { getLocalizedFolderName, isAssetFile, useAssetTools } from \"../utilities\";\r\nimport slash from \"slash\";\r\nimport { useContextMenu, useDialog } from \"../hooks\";\r\n\r\nexport const assetFolderClass = \"asset-folder\";\r\n\r\ninterface AssetFolderProps {\r\n folder: Folder;\r\n assets: Asset[];\r\n draggingAsset: boolean;\r\n setDraggingAsset: React.Dispatch\r\n}\r\n\r\nexport const AssetFolder = memo((props: AssetFolderProps) => {\r\n const {folder, assets, draggingAsset, setDraggingAsset} = props;\r\n\r\n const dispatch = useDispatch();\r\n const {t} = useTranslation();\r\n const {addAssetPaths} = useAssetTools();\r\n const contextMenu = useContextMenu();\r\n const deleteDialog = useDialog();\r\n const renameDialog = useDialog();\r\n\r\n const [expanded, setExpanded] = useState(true);\r\n const [dragDropHover, setDragDropHover] = useState(false);\r\n\r\n const updateAssetFolder = (assetID) => {\r\n dispatch(updateAsset({\r\n assetID,\r\n folderID: folder.id\r\n }));\r\n };\r\n\r\n const addAssetsToFolder = (event) => {\r\n const assetPaths = [...event.dataTransfer.files]\r\n .map(file => slash(file.path))\r\n .filter(isAssetFile);\r\n\r\n addAssetPaths(assetPaths, folder.id);\r\n };\r\n\r\n const handleClick = (event) => {\r\n const isCheckBox = (event.target.type === \"checkbox\");\r\n if (isCheckBox) return;\r\n\r\n setExpanded(!expanded);\r\n };\r\n\r\n const handleDragOver = (event) => {\r\n event.preventDefault();\r\n setDragDropHover(true);\r\n };\r\n\r\n const handleDragLeave = (event) => {\r\n setDragDropHover(false);\r\n };\r\n\r\n const handleDrop = (event) => {\r\n if (isStaticSite) return;\r\n\r\n setDragDropHover(false);\r\n\r\n if (draggingAsset) {\r\n updateAssetFolder(draggingAsset);\r\n } else {\r\n addAssetsToFolder(event);\r\n }\r\n };\r\n\r\n const handleRenameSubmit = name => {\r\n renameDialog.handleClose();\r\n dispatch(updateFolder({\r\n folderID: folder.id,\r\n name\r\n }));\r\n };\r\n\r\n const handleDeleteSubmit = () => {\r\n deleteDialog.handleClose();\r\n\r\n for (let asset of assets) {\r\n dispatch(deleteAsset(asset.id));\r\n }\r\n\r\n dispatch(deleteFolder(folder.id));\r\n };\r\n\r\n const handleDeleteClick = () => {\r\n contextMenu.handleClose();\r\n deleteDialog.handleOpen();\r\n };\r\n\r\n const handleRenameClick = () => {\r\n contextMenu.handleClose();\r\n renameDialog.handleOpen();\r\n };\r\n\r\n const toggleCheckboxes = () => {\r\n let newVisibility;\r\n if (numVisible > 0 && numHidden > 0) {\r\n newVisibility = true;\r\n } else if (numVisible > 0) {\r\n newVisibility = false;\r\n } else {\r\n newVisibility = true;\r\n }\r\n\r\n dispatch(toggleFolderVisibility({\r\n folderID: folder.id,\r\n visible: newVisibility\r\n }));\r\n };\r\n\r\n const numVisible = assets.filter(x => x.visible).length;\r\n const numHidden = assets.filter(x => !x.visible).length;\r\n\r\n // Folder is visible if it is user made or if it contains assets\r\n const visible = folder.default ? assets.length > 0 : true;\r\n\r\n const localizedFolderName = getLocalizedFolderName(folder.name);\r\n\r\n return (\r\n \r\n {visible && (\r\n \r\n \r\n \r\n \r\n \r\n\r\n {(assets.length > 0) && (\r\n {/* Show / hide contents */}\r\n {expanded ? : }\r\n\r\n {/* Toggle all folder assets */}\r\n 0}\r\n onChange={toggleCheckboxes}\r\n indeterminate={numVisible > 0 && numHidden > 0}\r\n />\r\n )}\r\n\r\n \r\n )}\r\n\r\n {visible && expanded && (\r\n \r\n {assets.map(asset => )}\r\n \r\n )}\r\n\r\n \r\n {/** New asset submenu */}\r\n }\r\n parentMenuOpen={contextMenu.open}\r\n >\r\n \r\n \r\n\r\n {/** Functions submenu */}\r\n {/*\r\n {}\r\n */}\r\n\r\n {isElectronApp && }\r\n\r\n {/** Rename folder */}\r\n \r\n \r\n \r\n \r\n \r\n {t(\"folder.rename\")}\r\n \r\n \r\n\r\n {/** Delete folder */}\r\n \r\n \r\n \r\n \r\n \r\n {t(\"folder.delete\")}\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n\r\n \r\n );\r\n});\r\n","import { useTheme, Grid, Typography, DialogContent, Checkbox } from \"@material-ui/core\";\r\nimport { nanoid } from \"@reduxjs/toolkit\";\r\nimport React, { useState, useMemo, useEffect } from \"react\";\r\nimport toast from \"react-hot-toast\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { SimpleDialog, DropdownWithLabel, InputWithLabel, DraggableDialog, EnhancedTable, EnhancedTableCheckboxHead } from \"../components\";\r\nimport { Asset, updateWebMapLayer, WebMapData, WebMapLayerData } from \"../redux/assets-slice\";\r\nimport { ServerType } from \"../types/web-sources\";\r\nimport { useAssetTools } from \"../utilities\";\r\nimport {Parser as XMLParser} from 'xml2js';\r\nimport WMTSCapabilities from 'ol/format/WMTSCapabilities.js';\r\nimport WMSCapabilities from 'ol/format/WMSCapabilities.js';\r\nimport { useTableState } from \"../hooks/use-table-state\";\r\nimport { useDispatch } from \"react-redux\";\r\n\r\ninterface WebSourceDialogProps {\r\n open: boolean;\r\n onClose(): void;\r\n folderID: string;\r\n}\r\n\r\nexport const WebSourceDialog = (props: WebSourceDialogProps) => {\r\n const {open, onClose, folderID} = props;\r\n\r\n const theme = useTheme();\r\n const {t} = useTranslation();\r\n const {addWebSource} = useAssetTools();\r\n\r\n const [serverURL, setServerURL] = useState(\"\");\r\n const [serverName, setServerName] = useState(\"\");\r\n const [serverType, setServerType] = useState(ServerType.ArcGISMapServer);\r\n const [submitting, setSubmitting] = useState(false);\r\n\r\n const onSubmit = async () => {\r\n setSubmitting(true);\r\n\r\n try {\r\n const webmapData = {\r\n url: serverURL,\r\n type: serverType,\r\n public: true,\r\n layers: await getMapLayers(serverURL, serverType)\r\n };\r\n\r\n await addWebSource(serverName, webmapData, folderID);\r\n\r\n setSubmitting(false);\r\n onClose();\r\n } catch {\r\n toast.error(\"Error grabbing layers from URL\");\r\n setSubmitting(false);\r\n }\r\n };\r\n\r\n const getMapServerLayers = async (baseURL: string) => {\r\n const url = new URL(baseURL);\r\n url.searchParams.set('f', \"json\");\r\n url.searchParams.set('pretty', \"true\");\r\n\r\n const response = await fetch(url.href);\r\n const data = await response.json();\r\n const layers = data.layers as any[];\r\n\r\n return layers.map(layer => {\r\n return {\r\n id: nanoid(),\r\n visible: true,\r\n identifier: layer.id,\r\n name: layer.name,\r\n };\r\n });\r\n };\r\n\r\n const getFeatureServerLayers = async (baseURL: string) => {\r\n const url = new URL(baseURL);\r\n url.searchParams.set('f', \"json\");\r\n url.searchParams.set('pretty', \"true\");\r\n\r\n const response = await fetch(url.href);\r\n const data = await response.json();\r\n const layers = data.layers as any[];\r\n\r\n return layers.map(layer => {\r\n return {\r\n id: nanoid(),\r\n visible: true,\r\n identifier: layer.id,\r\n name: layer.name,\r\n };\r\n });\r\n };\r\n\r\n const getImageServerLayers = async (baseURL: string) => {\r\n const url = new URL(baseURL);\r\n url.searchParams.set('f', \"json\");\r\n url.searchParams.set('pretty', \"true\");\r\n\r\n const response = await fetch(url.href);\r\n if (!response.ok) {\r\n throw new Error(\"Error verifying image server URL\");\r\n }\r\n\r\n // No layers for this server type\r\n return [];\r\n };\r\n\r\n const getWMSLayers = async (baseURL: string) => {\r\n const url = new URL(baseURL);\r\n url.searchParams.set('SERVICE', \"WMS\");\r\n url.searchParams.set('REQUEST', \"GetCapabilities\");\r\n\r\n const response = await fetch(url.href);\r\n const text = await response.text();\r\n\r\n const parser = new WMSCapabilities();\r\n const capabilities = parser.read(text);\r\n const layers = capabilities.Capability.Layer.Layer as any[];\r\n\r\n return layers.map(layer => {\r\n return {\r\n id: nanoid(),\r\n visible: true,\r\n identifier: layer.Name,\r\n name: layer.Title\r\n };\r\n });\r\n };\r\n\r\n const getWFSLayers = async (baseURL: string) => {\r\n const url = new URL(baseURL);\r\n url.searchParams.set('SERVICE', \"WFS\");\r\n url.searchParams.set('REQUEST', \"GetCapabilities\");\r\n\r\n const response = await fetch(url.href);\r\n const text = await response.text();\r\n\r\n const parser = new XMLParser({\r\n explicitChildren:true,\r\n preserveChildrenOrder: true\r\n });\r\n\r\n const xmlJSON = await parser.parseStringPromise(text);\r\n const capabilities = xmlJSON['wfs:WFS_Capabilities'];\r\n const featureTypeList = capabilities.FeatureTypeList[0];\r\n const features = featureTypeList.FeatureType as any[];\r\n\r\n return features.map(layer => {\r\n return {\r\n id: nanoid(),\r\n visible: true,\r\n identifier: layer.Name[0],\r\n name: layer.Title[0]\r\n };\r\n });\r\n };\r\n\r\n const getWMTSLayers = async (baseURL: string) => {\r\n const url = new URL(baseURL);\r\n url.pathname = `${url.pathname}/1.0.0/WMTSCapabilities.xml`;\r\n\r\n const response = await fetch(url.href);\r\n const text = await response.text();\r\n\r\n const parser = new WMTSCapabilities();\r\n const capabilities = parser.read(text);\r\n const layers = capabilities.Contents.Layer as any[];\r\n\r\n return layers.map(layer => {\r\n return {\r\n id: nanoid(),\r\n visible: true,\r\n identifier: layer.Identifier,\r\n name: layer.Title\r\n };\r\n });\r\n };\r\n\r\n const getTileServerLayers = async (baseURL: string) => {\r\n // No layers for this server type\r\n return [];\r\n };\r\n\r\n const getMapLayers = (url, type) : Promise => {\r\n switch (type) {\r\n case ServerType.ArcGISMapServer:\r\n return getMapServerLayers(url);\r\n case ServerType.ArcGISImageServer:\r\n return getImageServerLayers(url);\r\n case ServerType.ArcGISFeatureServer:\r\n return getFeatureServerLayers(url);\r\n case ServerType.OGCWMS:\r\n return getWMSLayers(url);\r\n case ServerType.OGCWFS:\r\n return getWFSLayers(url);\r\n case ServerType.OGCWMTS:\r\n return getWMTSLayers(url);\r\n case ServerType.TileServer:\r\n return getTileServerLayers(url);\r\n default:\r\n throw new Error(\"Error grabbing map layers\");\r\n }\r\n };\r\n\r\n const resetDefaults = () => {\r\n setServerURL(\"\");\r\n setServerName(\"\");\r\n setSubmitting(false);\r\n setServerType(ServerType.ArcGISMapServer);\r\n };\r\n\r\n const isSecureURL = useMemo(() => {\r\n try {\r\n const url = new URL(serverURL);\r\n return url.protocol === \"https:\";\r\n } catch {\r\n return false;\r\n }\r\n }, [serverURL]);\r\n\r\n /** Check url to make sure it matches the required syntax */\r\n const isValidURL = useMemo(() => {\r\n const isArcGISServer = (serverType === ServerType.ArcGISMapServer)\r\n || (serverType === ServerType.ArcGISImageServer)\r\n || (serverType === ServerType.ArcGISFeatureServer);\r\n\r\n if (isArcGISServer) {\r\n try {\r\n const testURL = new URL(serverURL);\r\n const mapType = testURL.pathname\r\n .split(\"/\")\r\n .pop()\r\n .toLowerCase();\r\n\r\n if (serverType === ServerType.ArcGISMapServer) {\r\n return mapType === \"mapserver\";\r\n } else if (serverType === ServerType.ArcGISImageServer) {\r\n return mapType === \"imageserver\";\r\n } else if (serverType === ServerType.ArcGISFeatureServer) {\r\n return mapType === \"featureserver\";\r\n }\r\n } catch {\r\n return false;\r\n }\r\n }\r\n\r\n if (serverType === ServerType.TileServer) {\r\n const hasX = serverURL.includes(\"{x}\")\r\n || serverURL.includes(\"{col}\");\r\n\r\n const hasY = serverURL.includes(\"{y}\")\r\n || serverURL.includes(\"{-y}\")\r\n || serverURL.includes(\"{row}\");\r\n\r\n const hasZ = serverURL.includes(\"{z}\")\r\n || serverURL.includes(\"{level}\")\r\n || serverURL.includes(\"{zoom}\");\r\n\r\n return hasX && hasY && hasZ;\r\n }\r\n\r\n return true;\r\n }, [serverURL, serverType]);\r\n\r\n const placeholder = useMemo(() => {\r\n switch (serverType) {\r\n case ServerType.ArcGISMapServer:\r\n return \"https://server.arcgisonline.com/..../MapServer\";\r\n case ServerType.ArcGISFeatureServer:\r\n return \"https://server.arcgisonline.com/..../FeatureServer/\";\r\n case ServerType.ArcGISImageServer:\r\n return \"https://server.arcgisonline.com/..../ImageServer/\";\r\n case ServerType.ArcGISOnline:\r\n return \"https://arcgis.com/home/webmap/viewer.html?webmap=MAPID\";\r\n case ServerType.OGCWMS:\r\n return \"https://example.server.com/wms\";\r\n case ServerType.OGCWMTS:\r\n return \"https://example.server.com/wmts\";\r\n case ServerType.OGCWFS:\r\n return \"https://example.server.com/wfs\";\r\n case ServerType.TileServer:\r\n return \"https://custom.server.com/tiles/{z}/{x}/{y}.png\";\r\n default:\r\n return;\r\n }\r\n }, [serverType]);\r\n\r\n const label = useMemo(() => {\r\n const warnings = [];\r\n\r\n if (!isSecureURL) {\r\n warnings.push(t('websources.only_secure_urls_https_are_supported'));\r\n }\r\n\r\n if (!isValidURL) {\r\n warnings.push(t('websources.invalid_url_for_this_server_type'));\r\n }\r\n\r\n return warnings.join(\" \");\r\n }, [isSecureURL, isValidURL]);\r\n\r\n useEffect(() => {\r\n if (!open) return;\r\n resetDefaults();\r\n }, [open]);\r\n\r\n const showEsriWarning = (serverType === ServerType.ArcGISFeatureServer)\r\n || (serverType === ServerType.ArcGISImageServer)\r\n || (serverType === ServerType.ArcGISMapServer)\r\n || (serverType === ServerType.ArcGISOnline);\r\n\r\n const error = !isSecureURL\r\n || !isValidURL;\r\n\r\n const canSubmit = isSecureURL\r\n && isValidURL\r\n && !!serverName\r\n && !submitting;\r\n\r\n return (\r\n \r\n \r\n {/** Icon Size */}\r\n \r\n \r\n \r\n\r\n {/** Name */}\r\n \r\n \r\n \r\n\r\n {/** URL */}\r\n \r\n \r\n \r\n\r\n {showEsriWarning && (\r\n {t('websources.all_arcgis_maps_must_be_public')}\r\n )}\r\n\r\n \r\n \r\n );\r\n};\r\n\r\ninterface WebSourceLayerCheckboxProps {\r\n layerID: string;\r\n visible: boolean;\r\n}\r\n\r\nconst WebSourceLayerCheckbox = (props: WebSourceLayerCheckboxProps) => {\r\n const {layerID, visible} = props;\r\n\r\n const dispatch = useDispatch();\r\n\r\n const onVisibilityChange = (visible: boolean) => {\r\n dispatch(updateWebMapLayer({\r\n layerID,\r\n visible\r\n }));\r\n };\r\n\r\n return (\r\n {\r\n const checked = event.target.checked;\r\n onVisibilityChange(checked);\r\n }}\r\n />\r\n );\r\n};\r\n\r\ninterface WebSourceLayerDialogProps {\r\n open: boolean;\r\n onClose(): void;\r\n asset: Asset;\r\n}\r\n\r\nexport const WebSourceLayerDialog = (props: WebSourceLayerDialogProps) => {\r\n const {open, onClose, asset} = props;\r\n\r\n const dispatch = useDispatch();\r\n const {t} = useTranslation();\r\n\r\n const tableState = useTableState({defaultSort: \"name\"});\r\n\r\n const layers = useMemo(() => {\r\n return (asset.data as WebMapData).layers;\r\n }, [asset.data]);\r\n\r\n const getRows = (layers: WebMapLayerData[]) => {\r\n return layers.map(layer => {\r\n return {\r\n id: `WebSourceLayerTableRow_${layer.id}`,\r\n name: layer.name,\r\n visible_sortable: layer.visible ? 1 : 0,\r\n visible_checkbox: \r\n };\r\n });\r\n };\r\n\r\n const rows = useMemo(() => {\r\n return getRows(layers);\r\n }, [layers]);\r\n\r\n const columns = [\r\n {\r\n id: 'name',\r\n label: t('websources.layer_name'),\r\n wordBreak: true,\r\n searchable: true\r\n },\r\n {\r\n id: 'visible_checkbox',\r\n label: x.visible)}\r\n onChange={(checked) => {\r\n layers.forEach(layer => {\r\n dispatch(updateWebMapLayer({\r\n layerID: layer.id,\r\n visible: checked\r\n }));\r\n });\r\n }}\r\n />,\r\n sortBy: \"visible_sortable\",\r\n center: true\r\n }\r\n ];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {t('asset.file-name')}: {asset.name}\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import React, {useState, memo, useCallback} from 'react';\r\nimport List from '@material-ui/core/List';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport {MenuItem, Typography} from \"@material-ui/core\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport CreateNewFolderIcon from '@material-ui/icons/CreateNewFolder';\r\nimport PanoramaIcon from '@material-ui/icons/Panorama';\r\nimport PermMediaIcon from '@material-ui/icons/PermMedia';\r\nimport PublicIcon from '@material-ui/icons/Public';\r\nimport {\r\n openDialogFile,\r\n openDialogFolder,\r\n openDialogMulti,\r\n useAssetTools\r\n} from '../utilities';\r\nimport {\r\n modelFileFilter,\r\n imageCSVFilter,\r\n imageOrthoFilter,\r\n imagePlanarFilter,\r\n pointCloudFilter,\r\n tagCSVFilter,\r\n xmlFileFilter\r\n} from '../file-extensions';\r\nimport {AssetFolder} from \"./folder\";\r\nimport {createFolder, selectDefaultFolder, selectAllFolders} from '../redux/folders-slice';\r\nimport {selectAllAssets} from '../redux/assets-slice';\r\nimport {useSelector} from 'react-redux';\r\nimport {\r\n TextDialog,\r\n DenseIcon,\r\n DenseDivider,\r\n SlimScrollbar,\r\n FontAwesomeIcon,\r\n DenseMenu\r\n} from '../components';\r\nimport path from 'path';\r\nimport { isElectronApp } from '../electron-modules';\r\nimport {toast} from '../app';\r\nimport { useTranslation } from 'react-i18next';\r\nimport CloudIcon from \"@material-ui/icons/Cloud\";\r\nimport RoomIcon from \"@material-ui/icons/Room\";\r\nimport PanoramaOutlinedIcon from \"@material-ui/icons/PanoramaOutlined\";\r\nimport SatelliteIcon from \"@material-ui/icons/Satellite\";\r\nimport { useContextMenu, useDialog } from '../hooks';\r\nimport { WebSourceDialog } from './web-sources';\r\nimport { useAppDispatch } from '../redux/store';\r\n\r\ninterface AddAssetListProps {\r\n folderID: string;\r\n closeContextMenu(): void;\r\n}\r\n\r\nexport const AddAssetList = (props: AddAssetListProps) => {\r\n const {folderID, closeContextMenu} = props;\r\n\r\n const {t} = useTranslation();\r\n\r\n const webmapDialog = useDialog();\r\n\r\n const {\r\n addModelFiles, addPointCloudFiles, addOrthoFiles,\r\n addPanoramicFiles, addPlanarFiles, addXMLFiles,\r\n addTagCSVs\r\n } = useAssetTools();\r\n\r\n const handleAddModels = async () => {\r\n closeContextMenu();\r\n\r\n const assetPaths = await openDialogMulti(modelFileFilter);\r\n if (assetPaths.length === 0) return;\r\n\r\n addModelFiles(assetPaths, folderID);\r\n };\r\n\r\n const handleAddPoints = async () => {\r\n closeContextMenu();\r\n\r\n const assetPaths = await openDialogMulti(pointCloudFilter);\r\n if (assetPaths.length === 0) return;\r\n\r\n addPointCloudFiles(assetPaths, folderID);\r\n };\r\n\r\n const handleAddOrtho = async () => {\r\n closeContextMenu();\r\n\r\n const assetPaths = await openDialogMulti(imageOrthoFilter);\r\n if (assetPaths.length === 0) return;\r\n\r\n addOrthoFiles(assetPaths, folderID);\r\n };\r\n\r\n const handleAddPanoramics = async () => {\r\n closeContextMenu();\r\n\r\n const assetPaths = await openDialogMulti(imageCSVFilter);\r\n if (assetPaths.length === 0) return;\r\n\r\n addPanoramicFiles(assetPaths, folderID);\r\n };\r\n\r\n const handleAddTags = async () => {\r\n closeContextMenu();\r\n\r\n const assetPaths = await openDialogMulti(tagCSVFilter);\r\n if (assetPaths.length === 0) return;\r\n\r\n addTagCSVs(assetPaths, folderID);\r\n };\r\n\r\n const handleAddPlanars = async () => {\r\n closeContextMenu();\r\n\r\n const assetPath = await openDialogFile(imagePlanarFilter);\r\n if (!assetPath) return;\r\n\r\n addPlanarFiles([assetPath], folderID);\r\n };\r\n\r\n const handleAddXML = async () => {\r\n closeContextMenu();\r\n\r\n const assetPath = await openDialogFile(xmlFileFilter);\r\n if (!assetPath) return;\r\n\r\n try {\r\n await addXMLFiles([assetPath], folderID);\r\n toast.success(t(\"toast.added-new-xml\"));\r\n } catch {\r\n const fileName = path.basename(assetPath);\r\n toast.error(t(\"toast.import-xml-error\", {\r\n path: fileName\r\n }));\r\n }\r\n };\r\n\r\n const handleAddWebMap = useCallback(() => {\r\n closeContextMenu();\r\n webmapDialog.handleOpen();\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {t(\"folder-list.add-point-cloud\")}\r\n \r\n\r\n \r\n \r\n \r\n \r\n {t(\"folder-list.add-panoramic-csv\")}\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n {t(\"folder-list.add-tag-csv\")}\r\n \r\n\r\n \r\n \r\n \r\n \r\n {t(\"folder-list.add-planar-images\")}\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n {t(\"folder-list.add-orthomosaic\")}\r\n \r\n\r\n \r\n \r\n \r\n \r\n {t(\"folder-list.add-model-file\")}\r\n \r\n\r\n \r\n \r\n \r\n \r\n {t('folder-list.add-landxml-file')}\r\n \r\n\r\n \r\n \r\n \r\n \r\n {t('folder-list.add-web-source')}\r\n \r\n\r\n \r\n \r\n );\r\n};\r\n\r\nexport const FolderList = memo(() => {\r\n const dispatch = useAppDispatch();\r\n const {t} = useTranslation();\r\n const contextMenu = useContextMenu();\r\n const newFolderDialog = useDialog();\r\n const {addFilePaths} = useAssetTools();\r\n\r\n const assets = useSelector(selectAllAssets);\r\n const defaultFolder = useSelector(selectDefaultFolder);\r\n const folders = useSelector(selectAllFolders);\r\n\r\n const [draggingAsset, setDraggingAsset] = useState(null);\r\n\r\n const handleSubmit = async (name: string) => {\r\n dispatch(createFolder(name));\r\n newFolderDialog.handleClose();\r\n };\r\n\r\n const handleAddFolder = async () => {\r\n contextMenu.handleClose();\r\n\r\n const {directoryPath, filePaths} = await openDialogFolder();\r\n if (filePaths.length === 0) return;\r\n\r\n const name = path.basename(directoryPath);\r\n const folder = await dispatch(createFolder(name));\r\n addFilePaths(filePaths, folder.id);\r\n };\r\n\r\n const handleNewFolder = () => {\r\n contextMenu.handleClose();\r\n newFolderDialog.handleOpen();\r\n };\r\n\r\n return (\r\n \r\n {/* Add item button */}\r\n {isElectronApp && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n )}\r\n\r\n \r\n \r\n {folders.map(folder =>\r\n x.folderID === folder.id)}\r\n draggingAsset={draggingAsset}\r\n setDraggingAsset={setDraggingAsset}\r\n />)}\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {t(\"folder-list.create-new-folder\")}\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n {t(\"folder-list.add-folder-contents\")}\r\n \r\n \r\n \r\n );\r\n});\r\n","import { Checkbox, DialogContent, Typography } from \"@material-ui/core\";\r\nimport React, { useMemo } from \"react\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { ColorPicker, DraggableDialog, EnhancedTable, EnhancedTableCheckboxHead } from \"../components\";\r\nimport { useTableState } from \"../hooks/use-table-state\";\r\nimport { Asset, LineworkLayerData, updateModelLayer } from \"../redux/assets-slice\";\r\n\r\ninterface ModelLayerCheckboxProps {\r\n layerID: string;\r\n visible: boolean;\r\n}\r\n\r\nconst ModelLayerCheckbox = (props: ModelLayerCheckboxProps) => {\r\n const {layerID, visible} = props;\r\n\r\n const dispatch = useDispatch();\r\n\r\n const onVisibilityChange = (visible: boolean) => {\r\n dispatch(updateModelLayer({\r\n layerID,\r\n visible\r\n }));\r\n };\r\n\r\n return (\r\n {\r\n const checked = event.target.checked;\r\n onVisibilityChange(checked);\r\n }}\r\n />\r\n );\r\n};\r\n\r\ninterface ModelLayerColorProps {\r\n layerID: string;\r\n color: string;\r\n}\r\n\r\nconst ModelLayerColor = (props: ModelLayerColorProps) => {\r\n const {layerID, color} = props;\r\n\r\n const dispatch = useDispatch();\r\n\r\n const onColorChange = (color: string) => {\r\n dispatch(updateModelLayer({\r\n layerID,\r\n color\r\n }));\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\ninterface ModelLayerDialogProps {\r\n open: boolean;\r\n onClose(): void;\r\n asset: Asset;\r\n}\r\n\r\nexport const ModelLayerDialog = (props: ModelLayerDialogProps) => {\r\n const {open, onClose, asset} = props;\r\n\r\n const {t} = useTranslation();\r\n const dispatch = useDispatch();\r\n\r\n const tableState = useTableState({defaultSort: \"name\"});\r\n\r\n const layers = useMemo(() => {\r\n return asset.data as LineworkLayerData[];\r\n }, [asset.data]);\r\n\r\n const getRows = (layers: LineworkLayerData[]) => {\r\n return layers.map(layer => {\r\n return {\r\n id: `WebSourceLayerTableRow_${layer.id}`,\r\n name: layer.name,\r\n visible_sortable: layer.visible ? 1 : 0,\r\n visible_checkbox: ,\r\n color_picker: \r\n };\r\n });\r\n };\r\n\r\n const rows = useMemo(() => {\r\n return getRows(layers);\r\n }, [layers]);\r\n\r\n const columns = [\r\n {\r\n id: 'name',\r\n label: t('models.layer_name'),\r\n wordBreak: true,\r\n searchable: true\r\n },\r\n {\r\n id: 'color_picker',\r\n label: t('models.layer_color'),\r\n center: true,\r\n sortable: false\r\n },\r\n {\r\n id: 'visible_checkbox',\r\n label: x.visible)}\r\n onChange={(checked) => {\r\n layers.forEach(layer => {\r\n dispatch(updateModelLayer({\r\n layerID: layer.id,\r\n visible: checked\r\n }));\r\n });\r\n }}\r\n />,\r\n sortBy: \"visible_sortable\",\r\n center: true\r\n }\r\n ];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {t('asset.file-name')}: {asset.name}\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n );\r\n};\r\n","import React, { useMemo, useState } from \"react\";\r\nimport {createStyles, makeStyles, Theme} from '@material-ui/core/styles';\r\nimport {\r\n Checkbox,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n MenuItem,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport {\r\n DenseDivider,\r\n DenseIcon,\r\n DenseMenu,\r\n PromptDialog,\r\n SlimScrollbar,\r\n TextDialog\r\n} from \"../components\";\r\nimport AddIcon from '@material-ui/icons/Add';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { BookmarkItem } from \".\";\r\nimport BookmarksIcon from '@material-ui/icons/Bookmarks';\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport ExpandLess from \"@material-ui/icons/ExpandLess\";\r\nimport ExpandMore from \"@material-ui/icons/ExpandMore\";\r\nimport {\r\n createBookmark,\r\n updateBookmark,\r\n deleteBookmark\r\n} from \"../redux/bookmarks-slice\";\r\nimport { store } from \"../redux/store\";\r\nimport { toast } from \"../app\";\r\nimport LocalScene from \"../viewer/js/projections\";\r\nimport { useAuth, useBookmarks, useContextMenu, useDialog, useViewer } from \"../hooks\";\r\nimport { AerialViewState, SceneCameraState } from \"../redux/camera-slice\";\r\nimport { SettingsState } from \"../redux/settings-slice\";\r\nimport { getVisibleAssets, selectAllAssets } from \"../redux/assets-slice\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n addItem: {\r\n paddingTop: \"0px\",\r\n paddingBottom: \"0px\"\r\n },\r\n footerDiv: {\r\n width: \"100%\",\r\n boxShadow: \"0px 10px 10px 2px\",\r\n zIndex: 1,\r\n textAlign: \"center\"\r\n },\r\n footerCheckbox: {\r\n padding: theme.spacing(0.5),\r\n marginRight: theme.spacing(0.5)\r\n }\r\n })\r\n);\r\n\r\nexport const getStoredState = () => {\r\n const state = store.getState();\r\n\r\n const settings = {...state.settings} as SettingsState;\r\n const aerialState = state.camera.aerialState as AerialViewState;\r\n const sceneState = state.camera.sceneState as SceneCameraState;\r\n\r\n return {settings, aerialState, sceneState};\r\n};\r\n\r\nexport const BookmarkList = () => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const {viewer} = useViewer();\r\n const {permissions} = useAuth();\r\n const {t} = useTranslation();\r\n const contextMenu = useContextMenu();\r\n const bookmarkDialog = useDialog();\r\n const deleteDialog = useDialog();\r\n const {bookmarks} = useBookmarks();\r\n\r\n const assets = useSelector(selectAllAssets);\r\n\r\n const visibleAssets = useMemo(() => {\r\n return getVisibleAssets(assets);\r\n }, [assets]);\r\n\r\n const [expanded, setExpanded] = useState(true);\r\n\r\n const handleSubmit = (name: string) => {\r\n bookmarkDialog.handleClose();\r\n\r\n if (!LocalScene.initialized) {\r\n toast.warning(t('bookmarks.invalid_position'));\r\n return;\r\n }\r\n\r\n const position = viewer.getCameraPosition().toArray();\r\n const {settings, aerialState, sceneState} = getStoredState();\r\n const visibleAssetIDs = visibleAssets.map(asset => asset.id);\r\n\r\n dispatch(createBookmark({\r\n name,\r\n position,\r\n settings,\r\n visibleAssets: visibleAssetIDs,\r\n aerialState,\r\n sceneState\r\n }));\r\n };\r\n\r\n const handleClick = (event) => {\r\n const isCheckBox = (event.target.type === \"checkbox\");\r\n if (isCheckBox) return;\r\n\r\n setExpanded(!expanded);\r\n };\r\n\r\n const toggleCheckboxes = () => {\r\n let newVisibility;\r\n if (numVisible > 0 && numHidden > 0) {\r\n newVisibility = true;\r\n } else if (numVisible > 0) {\r\n newVisibility = false;\r\n } else {\r\n newVisibility = true;\r\n }\r\n\r\n for (let bookmark of bookmarks) {\r\n dispatch(updateBookmark({\r\n bookmarkID: bookmark.id,\r\n visible: newVisibility\r\n }));\r\n }\r\n };\r\n\r\n const handleDeleteSubmit = () => {\r\n for (let bookmark of bookmarks) {\r\n dispatch(deleteBookmark(bookmark.id));\r\n }\r\n deleteDialog.handleClose();\r\n };\r\n\r\n const handleDeleteClick = () => {\r\n deleteDialog.handleOpen();\r\n contextMenu.handleClose();\r\n };\r\n\r\n const numVisible = bookmarks.filter(x => x.visible).length;\r\n const numHidden = bookmarks.filter(x => !x.visible).length;\r\n\r\n return (\r\n \r\n\r\n {/* Add item button */}\r\n {permissions.create && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n )}\r\n\r\n {/* Bookmarks list */}\r\n \r\n {(bookmarks.length > 0) && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {(bookmarks.length > 0) && (\r\n {/* Show / hide contents */}\r\n {expanded ? : }\r\n\r\n {/* Toggle all folder assets */}\r\n 0}\r\n onChange={toggleCheckboxes}\r\n indeterminate={numVisible > 0 && numHidden > 0}\r\n />\r\n )}\r\n\r\n \r\n\r\n {expanded && (\r\n \r\n {bookmarks.map(bookmark =>\r\n \r\n )}\r\n \r\n )}\r\n\r\n \r\n )}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n {t('buttons.delete')}\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n );\r\n};\r\n","import React, { useMemo } from \"react\";\r\nimport {createStyles, makeStyles, Theme} from '@material-ui/core/styles';\r\nimport {useDispatch, useSelector} from 'react-redux';\r\nimport {\r\n Checkbox,\r\n ListItem,\r\n ListItemSecondaryAction,\r\n ListItemText,\r\n MenuItem,\r\n Typography\r\n} from \"@material-ui/core\";\r\nimport {\r\n DenseIcon,\r\n DenseMenu,\r\n PromptDialog,\r\n TextDialog\r\n} from \"../components\";\r\nimport DeleteIcon from \"@material-ui/icons/Delete\";\r\nimport EditIcon from \"@material-ui/icons/Edit\";\r\nimport BookmarkIcon from '@material-ui/icons/Bookmark';\r\nimport SyncIcon from '@material-ui/icons/Sync';\r\nimport LinkIcon from '@material-ui/icons/Link';\r\nimport {\r\n deleteBookmark,\r\n updateBookmark,\r\n Bookmark\r\n} from \"../redux/bookmarks-slice\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { toast } from \"../app\";\r\nimport { getStoredState } from \".\";\r\nimport LocalScene from \"../viewer/js/projections\";\r\nimport { useAuth, useBookmarks, useContextMenu, useDialog, useViewer } from \"../hooks\";\r\nimport copyTextToClipboard from \"copy-to-clipboard\";\r\nimport { isStaticSite } from \"../electron-modules\";\r\nimport { getVisibleAssets, selectAllAssets } from \"../redux/assets-slice\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n itemList: {\r\n paddingLeft: theme.spacing(4),\r\n display: \"inline-block\"\r\n },\r\n assetInfo: {\r\n display: 'flex',\r\n margin: '0px'\r\n },\r\n itemText: {\r\n wordBreak: \"break-word\",\r\n overflow: \"hidden\"\r\n },\r\n checkboxParent: {\r\n padding: \"0px\",\r\n height: \"100%\"\r\n },\r\n assetCheckbox: {\r\n position: \"relative\",\r\n transform: \"translateY(0%)\",\r\n }\r\n })\r\n);\r\n\r\ninterface BookmarkItemProps {\r\n bookmark: Bookmark;\r\n}\r\n\r\nexport const BookmarkItem = (props: BookmarkItemProps) => {\r\n const {bookmark} = props;\r\n\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const {viewer} = useViewer();\r\n const {permissions} = useAuth();\r\n const {t} = useTranslation();\r\n const contextMenu = useContextMenu();\r\n const renameDialog = useDialog();\r\n const deleteDialog = useDialog();\r\n const updateDialog = useDialog();\r\n const {loadBookmark} = useBookmarks();\r\n\r\n const assets = useSelector(selectAllAssets);\r\n\r\n const visibleAssets = useMemo(() => {\r\n return getVisibleAssets(assets);\r\n }, [assets]);\r\n\r\n const handleBookmarkClick = (event) => {\r\n const isCheckBox = (event.target.type === \"checkbox\");\r\n if (isCheckBox) return;\r\n\r\n loadBookmark(bookmark.id);\r\n };\r\n\r\n const handleVisibilityClick = () => {\r\n dispatch(updateBookmark({\r\n bookmarkID: bookmark.id,\r\n visible: !bookmark.visible\r\n }));\r\n };\r\n\r\n const handleDeleteSubmit = () => {\r\n dispatch(deleteBookmark(bookmark.id));\r\n deleteDialog.handleClose();\r\n };\r\n\r\n const handleDeleteClick = () => {\r\n contextMenu.handleClose();\r\n deleteDialog.handleOpen();\r\n };\r\n\r\n const handleRenameSubmit = name => {\r\n dispatch(updateBookmark({\r\n bookmarkID: bookmark.id,\r\n name\r\n }));\r\n\r\n renameDialog.handleClose();\r\n };\r\n\r\n const handleRenameClick = () => {\r\n contextMenu.handleClose();\r\n renameDialog.handleOpen();\r\n };\r\n\r\n const handleUpdateSubmit = () => {\r\n updateDialog.handleClose();\r\n\r\n if (!LocalScene.initialized) {\r\n toast.warning(t('bookmarks.invalid_position'));\r\n return;\r\n }\r\n\r\n const position = viewer.getCameraPosition().toArray();\r\n const {settings, aerialState, sceneState} = getStoredState();\r\n const visibleAssetIDs = visibleAssets.map(asset => asset.id);\r\n\r\n dispatch(updateBookmark({\r\n bookmarkID: bookmark.id,\r\n position,\r\n settings,\r\n visibleAssets: visibleAssetIDs,\r\n aerialState,\r\n sceneState\r\n }));\r\n\r\n toast.success(t('bookmarks.updated_bookmark'));\r\n };\r\n\r\n const handleUpdateClick = () => {\r\n contextMenu.handleClose();\r\n updateDialog.handleOpen();\r\n };\r\n\r\n const handleCopyClick = () => {\r\n contextMenu.handleClose();\r\n\r\n // Copy url to clipboard\r\n const url = new URL(window.location as any);\r\n url.hash = `bookmark=${bookmark.id}`;\r\n copyTextToClipboard(url.href);\r\n toast.success(t(\"toast.copied-to-clipboard\"));\r\n };\r\n\r\n return (\r\n \r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n
\r\n \r\n\r\n \r\n {isStaticSite && \r\n \r\n \r\n \r\n {t('bookmarks.copy_bookmark_url')}\r\n }\r\n\r\n \r\n \r\n \r\n \r\n {t('buttons.rename')}\r\n \r\n\r\n \r\n \r\n \r\n \r\n {t('buttons.update')}\r\n \r\n\r\n \r\n \r\n \r\n \r\n {t('buttons.delete')}\r\n \r\n\r\n \r\n\r\n {/* Rename Dialog */}\r\n \r\n\r\n {/* Update Dialog */}\r\n \r\n\r\n {/* Delete Dialog */}\r\n \r\n
\r\n );\r\n};","import IconButton from \"@material-ui/core/IconButton\";\r\nimport ChevronLeftIcon from \"@material-ui/icons/ChevronLeft\";\r\nimport ChevronRightIcon from \"@material-ui/icons/ChevronRight\";\r\nimport {FolderList} from \"./folder\";\r\nimport Drawer from \"@material-ui/core/Drawer\";\r\nimport React, {useEffect, useState, memo} from \"react\";\r\nimport {createStyles, makeStyles, Theme, useTheme} from \"@material-ui/core/styles\";\r\nimport { AppBar, Box, Tab } from \"@material-ui/core\";\r\nimport {\r\n TabPanel,\r\n TabProps,\r\n} from \"./components\";\r\nimport {\r\n changeDrawerOpen,\r\n changeSelectedTab,\r\n selectSelectedTab,\r\n} from \"./redux/settings-slice\";\r\nimport Tabs from \"@material-ui/core/Tabs/Tabs\";\r\nimport { useTranslation } from 'react-i18next';\r\nimport { BookmarkList } from \"./bookmarks\";\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { Bookmark } from \"./redux/bookmarks-slice\";\r\nimport { useBookmarks, useViewer } from \"./hooks\";\r\n\r\nexport const assetDrawerWidth = 280;\r\nexport const assetDrawerHeight = 75;\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n backdrop: {\r\n display: \"none\"\r\n },\r\n inside: {\r\n height: `${assetDrawerHeight}%`,\r\n display: \"flex\",\r\n overflow: \"hidden\",\r\n flexDirection: \"column\"\r\n },\r\n drawer: {\r\n width: 0,\r\n },\r\n drawerPaper: {\r\n width: assetDrawerWidth,\r\n },\r\n root: {\r\n \"z-index\": `${theme.zIndex.modal - 1} !important`\r\n },\r\n tab: {\r\n minWidth: \"0px !important\",\r\n flexBasis: \"unset\",\r\n flexShrink: \"unset\"\r\n },\r\n tabGrow: {\r\n \"flex-grow\": 1\r\n },\r\n toggleDrawer: {\r\n color: \"white\"\r\n }\r\n }),\r\n);\r\n\r\ninterface StyledPanelProps {\r\n value: number;\r\n index: number;\r\n children: React.ReactNode;\r\n}\r\n\r\nconst StyledPanel = (props: StyledPanelProps) => {\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\ninterface AssetDrawerProps {\r\n assetDrawerState: boolean;\r\n}\r\n\r\nexport const AssetDrawer = memo((props: AssetDrawerProps) => {\r\n const {assetDrawerState} = props;\r\n\r\n const theme = useTheme();\r\n const classes = useStyles(theme);\r\n const dispatch = useDispatch();\r\n const {viewer} = useViewer();\r\n const {t} = useTranslation();\r\n const {bookmarks, loadBookmark} = useBookmarks();\r\n\r\n const projectActiveTab = useSelector(selectSelectedTab);\r\n\r\n const [activeTab, setSelectedTab] = useState(0);\r\n\r\n const setActiveTab = (event, value) => {\r\n dispatch(changeSelectedTab(value));\r\n };\r\n\r\n const handleDrawerClose = () => {\r\n dispatch(changeDrawerOpen(false));\r\n };\r\n\r\n useEffect(() => {\r\n setSelectedTab(projectActiveTab);\r\n }, [projectActiveTab]);\r\n\r\n useEffect(() => {\r\n if (!viewer) return;\r\n\r\n const newAnnotations = [];\r\n\r\n bookmarks.forEach((bookmark: Bookmark) => {\r\n if (!bookmark.visible) return;\r\n\r\n const onClick = () => {\r\n loadBookmark(bookmark.id);\r\n };\r\n\r\n const {name, position} = bookmark;\r\n const annotation = viewer.addAnnotation(name, position, onClick);\r\n newAnnotations.push(annotation);\r\n });\r\n\r\n viewer.updateAnnotations();\r\n\r\n return () => {\r\n newAnnotations.forEach(annotation => {\r\n viewer.removeAnnotation(annotation);\r\n });\r\n\r\n viewer.updateAnnotations();\r\n };\r\n }, [viewer, bookmarks, loadBookmark]);\r\n\r\n return (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {theme.direction === 'ltr' ? : }\r\n \r\n \r\n \r\n\r\n {/* Assets */}\r\n \r\n \r\n \r\n\r\n {/* Bookmarks */}\r\n \r\n \r\n \r\n
\r\n \r\n );\r\n});\r\n","import React, {useEffect, useState} from \"react\";\r\nimport {isElectronApp, registerEvent} from \"../electron-modules\";\r\nimport {\r\n FormControl,\r\n List,\r\n ListItem,\r\n MenuItem,\r\n Select,\r\n Switch, TextField\r\n} from \"@material-ui/core\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport {createStyles, makeStyles, Theme} from \"@material-ui/core/styles\";\r\nimport { SingleSlider } from \".\";\r\nimport clsx from 'clsx';\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { ColorPicker, SimpleDialog } from \"../components\";\r\nimport {useAuth, useDialog, useGlobalSettings} from \"../hooks\";\r\nimport { ControlType } from \"../types/controls\";\r\nimport { AerialMeasureType, SamplingRate, VolumeType } from \"../types/measurements\";\r\nimport {\r\n engineCloudURL as globalEngineCloudURL,\r\n setEngineCloudURL as setGlobalEngineCloudURL\r\n} from \"../urls\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n header: {\r\n marginTop: theme.spacing(1)\r\n },\r\n sectionTitle: {\r\n fontWeight: 'bold',\r\n display: \"inline-block\",\r\n fontSize: '0.9em'\r\n },\r\n slider: {\r\n width: \"100%\"\r\n },\r\n dropdown: {\r\n width: \"40%\"\r\n },\r\n checkBoxWithLabel: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n },\r\n dropdownWithLabel: {\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n alignItems: \"center\",\r\n }\r\n })\r\n);\r\n\r\nexport const GlobalSettings = () => {\r\n const {signOut} = useAuth();\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n\r\n const settingsDialog = useDialog();\r\n const globalSettings = useGlobalSettings();\r\n\r\n const [openQuickNav, setOpenQuickNav] = useState(false);\r\n const [orthoQuality, setOrthoQuality] = useState(null);\r\n const [orthoOpacity, setOrthoOpacity] = useState(null);\r\n const [controlType, setControlType] = useState(null);\r\n const [aerialMeasureType, setAerialMeasureType] = useState(null);\r\n const [volumeType, setVolumeType] = useState(null);\r\n const [volumeSampleRate, setVolumeSampleRate] = useState(null);\r\n const [viewerBackground, setViewerBackground] = useState(\"#00000\");\r\n const [aerialBackground, setAerialBackground] = useState(\"#00000\");\r\n const [engineCloudURL, setEngineCloudURL] = useState(\"\");\r\n\r\n const onSubmit = () => {\r\n globalSettings.update({\r\n orthoQuality,\r\n orthoOpacity,\r\n controlType,\r\n openQuickNav,\r\n aerialMeasureType,\r\n volumeType,\r\n volumeSampleRate,\r\n viewerBackground,\r\n aerialBackground\r\n });\r\n\r\n if (isElectronApp) {\r\n const modified = setGlobalEngineCloudURL(engineCloudURL, true);\r\n\r\n if (modified) {\r\n signOut();\r\n }\r\n }\r\n\r\n settingsDialog.handleClose();\r\n };\r\n\r\n useEffect(() => {\r\n if (!settingsDialog.open) {\r\n return;\r\n }\r\n\r\n // Load current state from global settings context\r\n setOrthoQuality(globalSettings.orthoQuality);\r\n setOrthoOpacity(globalSettings.orthoOpacity);\r\n setControlType(globalSettings.controlType);\r\n setAerialMeasureType(globalSettings.aerialMeasureType);\r\n setVolumeType(globalSettings.volumeType);\r\n setVolumeSampleRate(globalSettings.volumeSampleRate);\r\n setViewerBackground(globalSettings.viewerBackground);\r\n setAerialBackground(globalSettings.aerialBackground);\r\n setOpenQuickNav(globalSettings.openQuickNav);\r\n\r\n if (isElectronApp) {\r\n setEngineCloudURL(globalEngineCloudURL);\r\n }\r\n }, [settingsDialog.open]);\r\n\r\n useEffect(() => {\r\n registerEvent(\"open-global-settings\", () => {\r\n settingsDialog.handleOpen();\r\n });\r\n }, []);\r\n\r\n return (\r\n \r\n {/* Global Settings */}\r\n \r\n\r\n {/** General setting header */}\r\n \r\n \r\n {t('global-settings.general_settings')}\r\n \r\n \r\n\r\n {/* Viewer background */}\r\n \r\n \r\n {\"Viewer Background\"}\r\n \r\n\r\n \r\n \r\n\r\n {/* Aerial background */}\r\n \r\n \r\n {\"Aerial Background\"}\r\n \r\n\r\n \r\n \r\n\r\n {/* Control Type */}\r\n \r\n \r\n {t(\"global-settings.control-type\")}\r\n \r\n\r\n \r\n {\r\n const value = Number(event.target.value);\r\n setControlType(value);\r\n }}\r\n >\r\n \r\n {t(\"control-type.default\")}\r\n \r\n \r\n {t(\"control-type.reverse\")}\r\n \r\n \r\n {t(\"control-type.autocad\")}\r\n \r\n \r\n \r\n \r\n\r\n {/* Quick navigation */}\r\n \r\n \r\n {t('global-settings.allow_quick_navigation_menu')}\r\n \r\n\r\n setOpenQuickNav(!openQuickNav)}\r\n name=\"openQuickNav\"\r\n />\r\n \r\n\r\n {/** Measurement header */}\r\n \r\n \r\n {t('global-settings.measurement_settings')}\r\n \r\n \r\n\r\n {/* Aerial Measurement Type */}\r\n \r\n \r\n {t('global-settings.aerial_measurement_type')}\r\n \r\n\r\n \r\n {\r\n const value = Number(event.target.value);\r\n setAerialMeasureType(value);\r\n }}\r\n >\r\n \r\n {t('global-settings.aerial_spherical')}\r\n \r\n \r\n {t('global-settings.aerial_planar')}\r\n \r\n \r\n \r\n \r\n\r\n {/* Volume Calculation */}\r\n \r\n \r\n {t('global-settings.volume_calculation')}\r\n \r\n\r\n \r\n {\r\n const value = Number(event.target.value);\r\n setVolumeType(value);\r\n }}\r\n >\r\n \r\n {t('measure.volume_multi_plane')}\r\n \r\n \r\n {t('measure.volume_lowest_plane')}\r\n \r\n \r\n \r\n \r\n\r\n {/* Volume Sampling */}\r\n \r\n \r\n {t('global-settings.volume_sample_rate')}\r\n \r\n\r\n \r\n {\r\n const value = Number(event.target.value);\r\n setVolumeSampleRate(value);\r\n }}\r\n >\r\n \r\n {t('general.high')}\r\n \r\n \r\n {t('general.medium')}\r\n \r\n \r\n {t('general.low')}\r\n \r\n \r\n \r\n \r\n\r\n {/** Orthomoaic header */}\r\n \r\n \r\n {t(\"global-settings.orthomosaic-settings\")}\r\n \r\n \r\n\r\n {/* Orthomoaic opacity */}\r\n \r\n
\r\n \r\n {t(\"global-settings.orthomosaic-opacity\")}\r\n \r\n \r\n
\r\n
\r\n\r\n {/* Orthomoaic quality */}\r\n \r\n
\r\n \r\n {t(\"global-settings.orthomosaic-quality\")}\r\n \r\n \r\n
\r\n
\r\n\r\n {/** General setting header */}\r\n \r\n \r\n {t(\"global-settings.engine_cloud_settings\")}\r\n \r\n \r\n\r\n {/* Engine Cloud URL */}\r\n \r\n \r\n {t(\"global-settings.engine_cloud_url\")}\r\n \r\n\r\n \r\n {\r\n setEngineCloudURL(event.target.value);\r\n }}\r\n >\r\n \r\n \r\n \r\n\r\n
\r\n \r\n );\r\n};\r\n","export default __webpack_public_path__ + \"static/media/awesome-green.32dfeafe.png\";","export default __webpack_public_path__ + \"static/media/black-orange.62f427fb.png\";","export default __webpack_public_path__ + \"static/media/blue-hue.15284809.png\";","export default __webpack_public_path__ + \"static/media/blue-orange.19c7779d.png\";","export default __webpack_public_path__ + \"static/media/blue-red.d938a92d.png\";","export default __webpack_public_path__ + \"static/media/grayscale.416ab034.png\";","export default __webpack_public_path__ + \"static/media/heat-map.100d3bd6.png\";","export default __webpack_public_path__ + \"static/media/jet.e5269d83.png\";","export default __webpack_public_path__ + \"static/media/pastel-shades.1cd9b941.png\";","import awesomeGreen from './awesome-green.png';\r\nimport blackOrange from './black-orange.png';\r\nimport blueHue from './blue-hue.png';\r\nimport blueOrange from './blue-orange.png';\r\nimport blueRed from './blue-red.png';\r\nimport grayScale from './grayscale.png';\r\nimport heatMap from './heat-map.png';\r\nimport jet from './jet.png';\r\nimport pastelShades from './pastel-shades.png';\r\nimport {ColorMapKey} from \"../../../redux/settings-slice\";\r\nimport {t} from '../../../localization';\r\n\r\nclass ColorMap {\r\n public id: ColorMapKey;\r\n public image: string;\r\n\r\n constructor(id, image) {\r\n this.id = id;\r\n this.image = image;\r\n }\r\n\r\n get name() {\r\n return t(`color-map.${this.id}`);\r\n }\r\n}\r\n\r\nexport const colorMaps: ColorMap[] = [\r\n new ColorMap(\"heat-map\", heatMap),\r\n new ColorMap(\"awesome-green\", awesomeGreen),\r\n new ColorMap(\"pastel-shades\", pastelShades),\r\n new ColorMap(\"blue-orange\", blueOrange),\r\n new ColorMap(\"black-orange\", blackOrange),\r\n new ColorMap(\"blue-hue\", blueHue),\r\n new ColorMap(\"blue-red\", blueRed),\r\n new ColorMap(\"jet\", jet),\r\n new ColorMap(\"grayscale\", grayScale)\r\n];\r\n\r\nexport const getColorMap = (id) => {\r\n return colorMaps.find(colorMap => colorMap.id === id);\r\n};\r\n","import React, {useCallback, useEffect, useMemo, useState} from 'react';\r\nimport {createStyles, makeStyles, Theme} from '@material-ui/core/styles';\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport { throttle, debounce } from 'throttle-debounce';\r\nimport {\r\n Avatar,\r\n FormControl,\r\n InputAdornment,\r\n InputLabel,\r\n List,\r\n ListItem,\r\n MenuItem,\r\n Select,\r\n Switch,\r\n withStyles,\r\n} from \"@material-ui/core\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport Slider from \"@material-ui/core/Slider\";\r\nimport Input from \"@material-ui/core/Input\";\r\nimport {useSelector, useDispatch} from 'react-redux';\r\nimport {\r\n ColorMapKey, ColorType,\r\n selectCloudDistance, changeCloudDistance,\r\n selectOpacity, changeOpacity,\r\n selectCloudScale, changeCloudScale,\r\n selectCloudMinimum, changeCloudMinimum,\r\n selectHeightClip, changeHeightClip,\r\n selectIntensityClip, changeIntensityClip,\r\n selectColorMap, changeColorMap,\r\n selectColorType, changeColorType,\r\n selectDynamicSize, changeDynamicSize,\r\n changeClassificationVisibility,\r\n changeAllClassificationVisibility,\r\n changeCircularPoints, selectCircularPoints,\r\n changeArrowMarkers, selectArrowMarkers, MarkerNavType,\r\n selectCloudMaxPoints, changeCloudMaxPoints,\r\n selectClassifications,\r\n getAvailableClassifications,\r\n getClassificationVisibilities,\r\n changeAvailableClassifications,\r\n changeTagDistance,\r\n selectTagDistance,\r\n ClassificationSetting\r\n} from '../redux/settings-slice';\r\nimport {colorMaps, getColorMap} from \"../viewer/textures/colormaps\";\r\nimport { getClassificationColors } from \"../classifications\";\r\nimport { isDevMode } from '../electron-modules';\r\nimport { ArrowTooltip, SlimScrollbar } from '../components';\r\nimport LocalScene from \"../viewer/js/projections\";\r\nimport { UnitConverter } from \"../viewer/js/utilities\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { KeyboardArrowDown, KeyboardArrowUp } from '@material-ui/icons';\r\nimport {isEqual} from 'lodash';\r\nimport { headerHeight } from '../app';\r\nimport { nanoid } from '@reduxjs/toolkit';\r\nimport clsx from 'clsx';\r\nimport { useViewer } from '../hooks';\r\nimport { corporate } from '../theme';\r\n\r\nexport const settingsDrawerWidth = 280;\r\n\r\nconst converter = new UnitConverter();\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n backdrop: {\r\n display: \"none\"\r\n },\r\n drawer: {\r\n width: 0,\r\n \"z-index\": `${theme.zIndex.appBar - 1} !important`,\r\n },\r\n drawerPaper: {\r\n width: settingsDrawerWidth,\r\n paddingTop: `${headerHeight}px`,\r\n height: `calc(100% - ${headerHeight}px)`,\r\n },\r\n asterisk: {\r\n \"&:after\": {\r\n content:'\"*\"',\r\n color: \"red\",\r\n paddingLeft: theme.spacing(0.5)\r\n }\r\n },\r\n drawerHeader: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: theme.spacing(0, 1),\r\n // necessary for content to be below app bar\r\n ...theme.mixins.toolbar,\r\n justifyContent: 'flex-start',\r\n minHeight: `${headerHeight}px`\r\n },\r\n list: {\r\n width: '100%',\r\n maxWidth: 360,\r\n backgroundColor: theme.palette.background.paper,\r\n },\r\n listItem: {\r\n width: '100%',\r\n marginBottom: theme.spacing(0.5)\r\n },\r\n formControl: {\r\n width: '100%',\r\n marginBottom: theme.spacing(1)\r\n },\r\n switch: {\r\n marginLeft: 0\r\n },\r\n colorPreview: {\r\n height: theme.spacing(3),\r\n width: theme.spacing(3),\r\n marginRight: theme.spacing(1),\r\n },\r\n img: {\r\n objectFit: 'fill',\r\n transform: 'rotate(-90deg)'\r\n },\r\n classificationPreview: {\r\n height: theme.spacing(1.25),\r\n width: theme.spacing(1.25),\r\n backgroundColor: '#bbb',\r\n borderRadius: '50%',\r\n borderColor: '#000000',\r\n borderStyle: 'solid',\r\n borderWidth: '1px',\r\n marginRight: theme.spacing(1),\r\n display: 'inline-block'\r\n },\r\n switchLabel: {\r\n display: \"inline-block\",\r\n maxWidth: \"calc(100% - 50px)\"\r\n },\r\n switchElement: {\r\n float: \"right\"\r\n },\r\n inputText: {\r\n float: \"right\",\r\n paddingRight: \"10px\"\r\n },\r\n inputPropDiv: {\r\n display: \"flex\",\r\n zoom: \"0.85\",\r\n padding: \"6px 12px\",\r\n marginLeft: \"12px\",\r\n marginRight: \"calc(28px + 12px)\",\r\n marginTop: \"3px\"\r\n },\r\n sliderInputText: {\r\n whiteSpace: \"nowrap\",\r\n margin: \"auto 12px auto 0px\"\r\n },\r\n title: {\r\n flex: 1,\r\n margin: theme.spacing(0)\r\n },\r\n boldTitleTypography: {\r\n fontWeight: 'bold',\r\n fontSize: '1em'\r\n },\r\n sectionTitle: {\r\n display: \"inline-block\",\r\n fontWeight: 'bold',\r\n fontSize: '0.95em'\r\n },\r\n rightInput: {\r\n marginRight: \"4px\"\r\n },\r\n sliderInputParent: {\r\n display: \"flex\",\r\n paddingTop: theme.spacing(1.0)\r\n },\r\n sliderInputToggle: {\r\n padding: \"0px\",\r\n margin: \"9px 0px 0px 6px\"\r\n }\r\n }),\r\n);\r\n\r\nconst updateValueInterval = 50;\r\nconst saveDispatchInterval = 1000;\r\nconst classificationInterval = 200;\r\n\r\ninterface GenericSliderProps {\r\n value: number;\r\n min: number;\r\n max: number;\r\n step: number;\r\n onChange: (value) => void;\r\n onFinish?: (value) => void;\r\n labelFunction?: (value) => string;\r\n magnitude?: number;\r\n units?: string;\r\n endAdornment?: string;\r\n}\r\n\r\ninterface InputSliderProps extends GenericSliderProps {\r\n type: \"single\" | \"range\";\r\n}\r\n\r\nconst InputSlider = (props: InputSliderProps) => {\r\n const {value, type, onChange, onFinish, labelFunction,\r\n magnitude=1.0, units=\"m\", endAdornment=\"\"} = props;\r\n\r\n const min = converter.convert(props.min * magnitude, \"m\", units);\r\n const max = converter.convert(props.max * magnitude, \"m\", units);\r\n const step = props.step * magnitude;\r\n\r\n const classes = useStyles();\r\n\r\n const isRangeType = type === \"range\";\r\n const inputProps = {min, max, step};\r\n\r\n const defaultLabel = value => {\r\n return `${+Number(value).toFixed(2)}${endAdornment}`;\r\n };\r\n\r\n const labelFormat = labelFunction\r\n ? labelFunction\r\n : defaultLabel;\r\n\r\n const marks = [{\r\n value: min,\r\n label: labelFormat(min)\r\n }, {\r\n value: max,\r\n label: labelFormat(max)\r\n }];\r\n\r\n const [openState, setOpen] = useState(false);\r\n const [sliderValue, setSliderValue] = useState(null);\r\n\r\n const roundToStep = (value) => {\r\n return +Number((Math.round(value/step) * step).toFixed(2));\r\n };\r\n\r\n const toInput = (value) => {\r\n if (isRangeType) {\r\n const min = converter.convert(value.min * magnitude, \"m\", units);\r\n const max = converter.convert(value.max * magnitude, \"m\", units);\r\n\r\n return [roundToStep(min), roundToStep(max)];\r\n }\r\n\r\n const out = converter.convert(value * magnitude, \"m\", units);\r\n return roundToStep(out);\r\n };\r\n\r\n const fromInput = (value) => {\r\n if (isRangeType) {\r\n return {\r\n min: converter.convert(value[0], units, \"m\") / magnitude,\r\n max: converter.convert(value[1], units, \"m\") / magnitude\r\n };\r\n }\r\n\r\n return converter.convert(value, units, \"m\") / magnitude;\r\n };\r\n\r\n // Throttle update function\r\n const changeCallback = useCallback(\r\n throttle(updateValueInterval, (value) => {\r\n onChange(value);\r\n }), []);\r\n\r\n // Debounce save function\r\n const finishCallback = useCallback(\r\n debounce(saveDispatchInterval, (value) => {\r\n if (!onFinish) return;\r\n onFinish(value);\r\n }), []);\r\n\r\n useEffect(() => {\r\n let scaledValue = toInput(value);\r\n\r\n /** NOTE: react will never return equal for arrays, so lodash is used */\r\n if (isEqual(sliderValue, scaledValue)) return;\r\n setSliderValue(scaledValue);\r\n }, [value, units]);\r\n\r\n useEffect(() => {\r\n if (sliderValue === null) return;\r\n\r\n // Trigger update and change callbacks\r\n const saveValue = fromInput(sliderValue);\r\n changeCallback(saveValue);\r\n finishCallback(saveValue);\r\n }, [sliderValue]);\r\n\r\n const handleClick = () => {\r\n setOpen(!openState);\r\n };\r\n\r\n return (\r\n \r\n
\r\n {\r\n setSliderValue(value);\r\n }}\r\n aria-labelledby=\"input-slider\"\r\n />\r\n\r\n {\r\n event.stopPropagation();\r\n handleClick();\r\n }}\r\n >\r\n {openState ? : }\r\n \r\n
\r\n\r\n {openState && (
\r\n {isRangeType && ()}\r\n\r\n {!isRangeType && ()}\r\n
)}\r\n
\r\n );\r\n};\r\n\r\nconst StyledSlider = withStyles({\r\n root: {\r\n marginBottom: \"0px\",\r\n marginLeft: \"12px\",\r\n marginRight: \"12px\"\r\n },\r\n rail: {\r\n height: \"12px\",\r\n borderRadius: \"4px\"\r\n },\r\n track: {\r\n height: \"12px\",\r\n borderRadius: \"0px\",\r\n borderTopLeftRadius: \"4px\",\r\n borderBottomLeftRadius: \"4px\"\r\n },\r\n thumb: {\r\n height: \"18px\",\r\n width: \"2px\",\r\n marginTop: \"-3px\",\r\n marginLeft: \"0px\",\r\n borderRadius: \"0px\",\r\n '&:focus, &:hover, &$active': {\r\n boxShadow: 'inherit',\r\n },\r\n },\r\n valueLabel: {\r\n top: '-8px',\r\n left: 'calc(-50% - 18px)',\r\n height: '18px',\r\n width: '40px',\r\n '& *': {\r\n transform: 'rotate(0)',\r\n borderRadius: '4px',\r\n height: 'auto',\r\n width: '40px',\r\n textAlign: 'center'\r\n },\r\n '&::after': {\r\n position: \"absolute\",\r\n display: \"block\",\r\n content: '\"\"',\r\n bottom: \"-2px\",\r\n left: \"50%\",\r\n width: \"0\",\r\n height: \"0\",\r\n marginLeft: \"-3px\",\r\n overflow: \"hidden\",\r\n border: \"3px solid transparent\",\r\n borderTopColor: corporate.red\r\n }\r\n },\r\n mark: {\r\n opacity: 0,\r\n },\r\n markLabel: {\r\n top: \"-8px\",\r\n fontSize: \"0.75em\",\r\n width: \"32px\",\r\n height: \"14px\",\r\n textAlign: \"center\",\r\n backgroundColor: \"rgba(0,0,0,0.2)\",\r\n borderRadius: \"4px\",\r\n opacity: 0.5\r\n },\r\n markLabelActive: {\r\n opacity: 0.5\r\n },\r\n active: {}\r\n})(Slider);\r\n\r\ninterface InputProp {\r\n min: number;\r\n max: number;\r\n step: number;\r\n}\r\n\r\ninterface SingleInputPropProps {\r\n value: number;\r\n setValue: React.Dispatch;\r\n inputProps: InputProp;\r\n adornment: string;\r\n}\r\n\r\nconst SingleInputProp = (props: SingleInputPropProps) => {\r\n const {value, setValue, inputProps, adornment} = props;\r\n\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n\r\n const [inputValue, setInputValue] = useState(0);\r\n const [inputError, setInputError] = useState(false);\r\n\r\n useEffect(() => {\r\n setInputValue(+Number(value).toFixed(2));\r\n setInputError(false);\r\n }, [value]);\r\n\r\n const hasError = (value) => {\r\n return (value === \"\")\r\n || isNaN(value)\r\n || (parseFloat(value) < inputProps.min)\r\n || (parseFloat(value) > inputProps.max);\r\n };\r\n\r\n return (\r\n
\r\n \r\n {t(\"user-settings.slider-value\")}:\r\n \r\n\r\n {\r\n // Check for general error\r\n let error = hasError(value);\r\n setInputValue(value);\r\n setInputError(error);\r\n if (error) return;\r\n\r\n // Update slider value\r\n value = parseFloat(value);\r\n setValue(value);\r\n }}\r\n />\r\n
\r\n );\r\n};\r\n\r\ninterface RangeInputPropProps {\r\n values: number[];\r\n setValues: React.Dispatch;\r\n inputProps: InputProp;\r\n adornment: string;\r\n}\r\n\r\nconst RangeInputProp = (props: RangeInputPropProps) => {\r\n const {values, setValues, inputProps, adornment} = props;\r\n\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n\r\n const [minValue, setMinValue] = useState(0);\r\n const [maxValue, setMaxValue] = useState(0);\r\n\r\n const [minError, setMinError] = useState(false);\r\n const [maxError, setMaxError] = useState(false);\r\n\r\n useEffect(() => {\r\n setMinValue(+Number(values[0]).toFixed(2));\r\n setMaxValue(+Number(values[1]).toFixed(2));\r\n\r\n setMinError(false);\r\n setMaxError(false);\r\n }, [values]);\r\n\r\n const hasError = (value) => {\r\n return (value === \"\")\r\n || isNaN(value)\r\n || (parseFloat(value) < inputProps.min)\r\n || (parseFloat(value) > inputProps.max);\r\n };\r\n\r\n return (\r\n \r\n
\r\n \r\n {t(\"user-settings.slider-minimum-value\")}:\r\n \r\n\r\n {\r\n // Check for general error\r\n let error = hasError(value);\r\n setMinValue(value);\r\n setMinError(error);\r\n if (error) return;\r\n\r\n value = parseFloat(value);\r\n\r\n // Make sure min is less than max\r\n if (value > maxValue) {\r\n setMinError(true);\r\n return;\r\n }\r\n\r\n // Update slider values\r\n setValues([value, maxValue]);\r\n }}\r\n />\r\n
\r\n\r\n
\r\n \r\n {t(\"user-settings.slider-maximum-value\")}:\r\n \r\n\r\n {\r\n // Check for general error\r\n let error = hasError(value);\r\n setMaxValue(value);\r\n setMaxError(error);\r\n if (error) return;\r\n\r\n value = parseFloat(value);\r\n\r\n // Make sure max is more than min\r\n if (value < minValue) {\r\n setMaxError(true);\r\n return;\r\n }\r\n\r\n // Update slider values\r\n setValues([minValue, value]);\r\n }}\r\n />\r\n\r\n
\r\n
\r\n );\r\n};\r\n\r\ninterface InputFieldProps {\r\n value: number;\r\n inputProps: InputProp;\r\n onChange: (value) => void;\r\n adornment: string;\r\n error: boolean;\r\n}\r\n\r\nconst InputField = (props: InputFieldProps) => {\r\n const {value, inputProps, onChange, adornment, error} = props;\r\n\r\n return (\r\n {adornment}}\r\n onChange={(event) => {\r\n onChange(event.target.value);\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport const SingleSlider = (props: GenericSliderProps) => {\r\n return ;\r\n};\r\n\r\nexport const RangeSlider = (props: GenericSliderProps) => {\r\n return ;\r\n};\r\n\r\ninterface ClassificationListProps {\r\n classifications: ClassificationSetting[];\r\n}\r\n\r\nconst ClassificationList = (props: ClassificationListProps) => {\r\n const {classifications} = props;\r\n\r\n const dispatch = useDispatch();\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n\r\n const [classificationColors, setClassificationColors] = useState(\r\n Array(256).fill('#ffffff'));\r\n\r\n useEffect(() => {\r\n const updateColorsList = async () => {\r\n const colors = await getClassificationColors();\r\n setClassificationColors(colors);\r\n };\r\n\r\n updateColorsList();\r\n }, []);\r\n\r\n const hasClassifications = classifications.length > 0;\r\n\r\n return (\r\n \r\n {!hasClassifications && (\r\n
\r\n \r\n \r\n {t(\"user-settings.no-points-loaded\")}\r\n \r\n \r\n
\r\n )}\r\n\r\n {hasClassifications && (\r\n classifications.map(classification => (\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n {`${classification.name} (${classification.id})`}\r\n \r\n\r\n {\r\n dispatch(changeClassificationVisibility(classification.id));\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n ))\r\n )}\r\n\r\n
\r\n );\r\n};\r\n\r\ninterface SettingsDrawerProps {\r\n open: boolean;\r\n onClose: () => void;\r\n}\r\n\r\nexport const SettingsDrawer = (props: SettingsDrawerProps) => {\r\n const {open, onClose} = props;\r\n\r\n const dispatch = useDispatch();\r\n const classes = useStyles();\r\n const {viewer} = useViewer();\r\n const {t} = useTranslation();\r\n\r\n const classifications = useSelector(selectClassifications);\r\n\r\n /** Checkbox selectors (uses redux value directly) */\r\n const savedColorMap = useSelector(selectColorMap);\r\n const savedColorType = useSelector(selectColorType);\r\n const savedDynamicSize = useSelector(selectDynamicSize);\r\n const savedCircularPoints = useSelector(selectCircularPoints);\r\n const savedArrowMarkers = useSelector(selectArrowMarkers);\r\n\r\n /** Developer only toggles */\r\n const [pickerDebug, setPickerDebug] = useState(false);\r\n const [boundsVisible, setBoundsVisible] = useState(false);\r\n const [renderPaused, setRenderPaused] = useState(false);\r\n\r\n /** Slider selectors (uses throttled save callback) */\r\n const savedOpacity = useSelector(selectOpacity);\r\n const savedTagDistance = useSelector(selectTagDistance);\r\n const savedCloudDistance = useSelector(selectCloudDistance);\r\n const savedCloudScale = useSelector(selectCloudScale);\r\n const savedCloudMinimum = useSelector(selectCloudMinimum);\r\n const savedMaxPoints = useSelector(selectCloudMaxPoints);\r\n const savedHeightClip = useSelector(selectHeightClip);\r\n const savedIntensityClip = useSelector(selectIntensityClip);\r\n\r\n const paperPropID = useState(nanoid())[0];\r\n\r\n const savedAvailableClassifications = useMemo(() => {\r\n return getAvailableClassifications(classifications);\r\n }, [classifications]);\r\n\r\n const savedClassificationVisibilities = useMemo(() => {\r\n return getClassificationVisibilities(classifications);\r\n }, [classifications]);\r\n\r\n const units = LocalScene.viewProjectionUnits;\r\n\r\n /** Handle classification updates */\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n if (!viewer) return;\r\n\r\n const newClasses = viewer.getAvailableClassifications();\r\n const oldClasses = savedAvailableClassifications.map(x => x.id);\r\n\r\n // NOTE: Sorting is important for equality check\r\n newClasses.sort();\r\n oldClasses.sort();\r\n\r\n if (isEqual(newClasses, oldClasses)) return;\r\n\r\n dispatch(changeAvailableClassifications(newClasses));\r\n }, classificationInterval);\r\n\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n }, [viewer, classifications]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudOpacity(savedOpacity);\r\n }, [viewer, savedOpacity]);\r\n\r\n useEffect(() => {\r\n viewer?.setTagDistance(savedTagDistance);\r\n }, [viewer, savedTagDistance]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudDistance(savedCloudDistance);\r\n }, [viewer, savedCloudDistance]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudScale(savedCloudScale);\r\n }, [viewer, savedCloudScale]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudMinimum(savedCloudMinimum);\r\n }, [viewer, savedCloudMinimum]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudMaxPoints(savedMaxPoints);\r\n }, [viewer, savedMaxPoints]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudHeightClip(savedHeightClip);\r\n }, [viewer, savedHeightClip]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudIntensityClip(savedIntensityClip);\r\n }, [viewer, savedIntensityClip]);\r\n\r\n useEffect(() => {\r\n viewer?.setVisibleClassifications(savedClassificationVisibilities);\r\n }, [viewer, savedClassificationVisibilities]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudColorMap(savedColorMap);\r\n }, [viewer, savedColorMap]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudColorType(savedColorType);\r\n }, [viewer, savedColorType]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudDynamicSize(savedDynamicSize);\r\n }, [viewer, savedDynamicSize]);\r\n\r\n useEffect(() => {\r\n viewer?.setPointCloudCircularPoints(savedCircularPoints);\r\n }, [viewer, savedCircularPoints]);\r\n\r\n useEffect(() => {\r\n viewer?.setNavigationType(savedArrowMarkers);\r\n }, [viewer, savedArrowMarkers]);\r\n\r\n const isIntensity = savedColorType === 0;\r\n const isHeightmap = savedColorType === 2;\r\n const colorMapRequired = isIntensity || isHeightmap;\r\n\r\n return (\r\n {\r\n /** Remove tabindex from paper to stop drag/drop issues */\r\n let element = document.getElementById(paperPropID);\r\n element?.removeAttribute(\"tabindex\");\r\n }}\r\n classes={{\r\n paper: classes.drawerPaper,\r\n }}\r\n BackdropProps={{\r\n classes: {\r\n root: classes.backdrop\r\n },\r\n }}\r\n PaperProps={{\r\n id: paperPropID\r\n }}\r\n >\r\n \r\n\r\n \r\n \r\n \r\n {t('user-settings.project_settings')}\r\n \r\n\r\n {/* Close button */}\r\n \r\n \r\n \r\n \r\n \r\n\r\n {/* Developer Controls */}\r\n {isDevMode && (\r\n \r\n \r\n \r\n {t('user-settings.developer-debug')}\r\n \r\n \r\n\r\n {/* Picker Debug */}\r\n \r\n
\r\n \r\n {t(\"user-settings.gpu-picker\")}\r\n \r\n\r\n {\r\n viewer?.togglePickerDebug(checked);\r\n setPickerDebug(checked);\r\n }}\r\n />\r\n
\r\n
\r\n\r\n {/* Points render toggle */}\r\n \r\n
\r\n \r\n {t('user-settings.pause-points-rendering')}\r\n \r\n\r\n {\r\n viewer?.setPointsShouldUpdate(!checked);\r\n setRenderPaused(checked);\r\n }}\r\n />\r\n
\r\n
\r\n\r\n {/* Point Bounds Debug */}\r\n \r\n
\r\n \r\n {t('user-settings.visible-point-bounds')}\r\n \r\n\r\n {\r\n viewer?.setPointBoundsVisible(checked);\r\n setBoundsVisible(checked);\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n
)}\r\n\r\n {/* Point Cloud Controls */}\r\n \r\n \r\n \r\n {t(\"user-settings.point-cloud-controls\")}\r\n \r\n \r\n\r\n {/* Color type */}\r\n \r\n
\r\n \r\n {t(\"user-settings.color-type\")}\r\n \r\n \r\n {\r\n const value = event.target.value as ColorType;\r\n dispatch(changeColorType(value));\r\n }}\r\n >\r\n \r\n {t(\"color-type.intensity\")}\r\n \r\n \r\n {t(\"color-type.color\")}\r\n \r\n \r\n {t(\"color-type.height\")}\r\n \r\n \r\n {t(\"color-type.classification\")}\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n {/* Color maps */}\r\n {colorMapRequired && (\r\n \r\n
\r\n \r\n {t(\"user-settings.color-map\")}\r\n \r\n \r\n {\r\n return getColorMap(value).name;\r\n }}\r\n onChange={(event) => {\r\n const value = event.target.value as ColorMapKey;\r\n dispatch(changeColorMap(value));\r\n }}\r\n >\r\n {colorMaps.map((colorMap) => (\r\n \r\n \r\n {colorMap.name}\r\n \r\n ))}\r\n \r\n \r\n
\r\n
\r\n )}\r\n\r\n {/* Arrow Markers */}\r\n \r\n
\r\n \r\n {t(\"user-settings.navigation-type\")}\r\n \r\n \r\n {\r\n let value = event.target.value as MarkerNavType;\r\n dispatch(changeArrowMarkers(value));\r\n }}\r\n >\r\n \r\n {t(\"navigation-type.arrows\")}\r\n \r\n \r\n {t(\"navigation-type.markers\")}\r\n \r\n \r\n {t(\"navigation-type.none\")}\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n {/* Cloud Opacity */}\r\n \r\n
\r\n \r\n {t(\"user-settings.point-visibility\")}\r\n \r\n {\r\n viewer?.setPointCloudOpacity(value);\r\n }}\r\n onFinish={(value) => {\r\n dispatch(changeOpacity(value));\r\n }}\r\n min={0}\r\n max={1}\r\n step={0.01}\r\n magnitude={100}\r\n endAdornment={\"%\"}\r\n />\r\n
\r\n
\r\n\r\n {/* Cloud Max Points */}\r\n \r\n
\r\n \r\n {t(\"user-settings.max-visible-points\")}\r\n \r\n {\r\n viewer?.setPointCloudMaxPoints(value);\r\n }}\r\n onFinish={(value) => {\r\n dispatch(changeCloudMaxPoints(value));\r\n }}\r\n min={0}\r\n max={10}\r\n step={0.05}\r\n endAdornment={\"M\"}\r\n />\r\n
\r\n
\r\n\r\n {/* Cloud Distance */}\r\n \r\n
\r\n \r\n {t(\"user-settings.point-distance\")}\r\n \r\n {\r\n viewer?.setPointCloudDistance(value);\r\n }}\r\n onFinish={(value) => {\r\n dispatch(changeCloudDistance(value));\r\n }}\r\n min={0}\r\n max={1000}\r\n step={5}\r\n units={units}\r\n endAdornment={units}\r\n labelFunction={(value) => {\r\n const maxValue = converter.convert(999, \"m\", units);\r\n return (value > maxValue) ? \"∞\" : `${value}${units}`;\r\n }}\r\n />\r\n
\r\n
\r\n\r\n {/* Height range */}\r\n {isHeightmap && (\r\n \r\n
\r\n \r\n {t(\"user-settings.height-range\")}\r\n \r\n {\r\n viewer?.setPointCloudHeightClip(value);\r\n }}\r\n onFinish={(value) => {\r\n dispatch(changeHeightClip(value));\r\n }}\r\n min={-0.5}\r\n max={1.5}\r\n step={0.01}\r\n magnitude={100}\r\n endAdornment={\"%\"}\r\n />\r\n
\r\n
\r\n )}\r\n\r\n {/* Intensity range */}\r\n {isIntensity && (\r\n \r\n
\r\n \r\n {t(\"user-settings.intensity-range\")}\r\n \r\n {\r\n viewer?.setPointCloudIntensityClip(value);\r\n }}\r\n onFinish={(value) => {\r\n dispatch(changeIntensityClip(value));\r\n }}\r\n min={-0.5}\r\n max={1.5}\r\n step={0.01}\r\n magnitude={100}\r\n endAdornment={\"%\"}\r\n />\r\n
\r\n
\r\n )}\r\n\r\n {/* Circular Points */}\r\n \r\n
\r\n \r\n {t(\"user-settings.circular-points\")}\r\n \r\n\r\n {\r\n dispatch(changeCircularPoints(checked));\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n\r\n \r\n\r\n {/* Point Cloud Size */}\r\n \r\n \r\n \r\n {t('user-settings.point-cloud-sizing')}\r\n \r\n \r\n\r\n {/* Point cloud scale */}\r\n \r\n
\r\n \r\n {t(\"user-settings.point-size\")}\r\n \r\n {\r\n viewer?.setPointCloudScale(value);\r\n }}\r\n onFinish={(value) => {\r\n dispatch(changeCloudScale(value));\r\n }}\r\n min={0}\r\n max={3}\r\n step={0.1}\r\n />\r\n
\r\n
\r\n\r\n {/* Minimum point size */}\r\n \r\n
\r\n \r\n {t('user-settings.minimum-point-size')}\r\n \r\n {\r\n viewer?.setPointCloudMinimum(value);\r\n }}\r\n onFinish={(value) => {\r\n dispatch(changeCloudMinimum(value));\r\n }}\r\n min={0}\r\n max={3}\r\n step={0.1}\r\n />\r\n
\r\n
\r\n\r\n {/* Adaptive point sizing */}\r\n \r\n
\r\n \r\n \r\n {t(\"user-settings.dynamic-point-sizing\")}\r\n \r\n \r\n\r\n {\r\n dispatch(changeDynamicSize(checked));\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n\r\n {/* Asset controls */}\r\n \r\n \r\n \r\n {\"Tag Controls\"}\r\n \r\n \r\n\r\n {/* Tag Distance */}\r\n \r\n
\r\n \r\n {t(\"user-settings.tag-distance\")}\r\n \r\n {\r\n viewer?.setTagDistance(value);\r\n }}\r\n onFinish={(value) => {\r\n dispatch(changeTagDistance(value));\r\n }}\r\n min={0}\r\n max={1000}\r\n step={5}\r\n units={units}\r\n endAdornment={units}\r\n labelFunction={(value) => {\r\n const maxValue = converter.convert(999, \"m\", units);\r\n return (value > maxValue) ? \"∞\" : `${value}${units}`;\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n\r\n\r\n \r\n\r\n {/* Classifications */}\r\n \r\n \r\n
\r\n \r\n {t(\"user-settings.classifications\")}\r\n \r\n\r\n {savedAvailableClassifications.length > 0 && (\r\n \r\n classification.visible\r\n )}\r\n className={classes.switchElement}\r\n size=\"small\"\r\n color=\"secondary\"\r\n onChange={(_, checked) => {\r\n dispatch(changeAllClassificationVisibility(checked));\r\n }}\r\n />\r\n \r\n )}\r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n\r\n
\r\n \r\n );\r\n};","import React, {memo, useEffect, useState} from 'react';\r\nimport {makeStyles, Theme, createStyles} from '@material-ui/core/styles';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport MenuIcon from '@material-ui/icons/Menu';\r\nimport MeasureIcon from '@material-ui/icons/SquareFoot';\r\nimport LinkIcon from '@material-ui/icons/Link';\r\nimport SettingsIcon from '@material-ui/icons/Settings';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport HomeIcon from '@material-ui/icons/Home';\r\nimport {\r\n updateProjectName,\r\n selectProjectName\r\n} from \"./redux/project-slice\";\r\nimport {useSelector, useDispatch} from 'react-redux';\r\nimport {\r\n Projection,\r\n updateDataProjection,\r\n updateViewProjection,\r\n selectDataProjection\r\n} from './redux/projections-slice';\r\nimport {\r\n userProjections,\r\n uniqueProjectionID,\r\n unknownProjectionFeet,\r\n unknownProjectionMeters\r\n} from './projections';\r\nimport {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n DialogTitle,\r\n FormControl,\r\n FormHelperText,\r\n InputLabel,\r\n ListSubheader,\r\n MenuItem,\r\n TextField\r\n} from '@material-ui/core';\r\nimport {assetDrawerWidth} from './asset-drawer';\r\nimport LocalScene, {\r\n projectionToMeters,\r\n projectionToUnits,\r\n SceneCoordinate\r\n} from './viewer/js/projections';\r\nimport {isCloudSite, isElectronApp} from \"./electron-modules\";\r\nimport {\r\n changeBasicAdjustments,\r\n changeCameraHeight,\r\n changeCameraTransform,\r\n selectBasicAdjustments,\r\n selectCameraHeight,\r\n selectCameraTransform\r\n} from './redux/camera-slice';\r\nimport {\r\n asyncTimeout,\r\n getLocalizedProjectionName,\r\n getLocalizedProjectName,\r\n getMatrixValues,\r\n openDialogFile,\r\n saveMatrixFile\r\n} from \"./utilities\";\r\nimport {cameraMatrixFilter} from \"./file-extensions\";\r\nimport clsx from 'clsx';\r\nimport { ArrowTooltip, LanguageSwitch, AccountButton } from './components';\r\nimport {headerHeight, toast} from './app';\r\nimport {settingsDrawerWidth} from \"./settings\";\r\nimport { sendCustomEvent } from './events';\r\nimport { Vector3 } from 'three';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { getLocalizedURL } from './localization';\r\nimport { changeDrawerOpen, changeSelectedTab } from './redux/settings-slice';\r\nimport { UnitConverter } from './viewer/js/utilities';\r\nimport {isEqual} from 'lodash';\r\nimport {\r\n useDialog,\r\n useViewer,\r\n useActiveTool,\r\n useAuth,\r\n useBookmarks\r\n} from './hooks';\r\n\r\nconst converter = new UnitConverter();\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n disabled: {\r\n opacity: 0.3\r\n },\r\n warning: {\r\n color: theme.palette.warning.main\r\n },\r\n menuButton: {\r\n marginRight: theme.spacing(2),\r\n },\r\n title: {\r\n flexGrow: 1,\r\n },\r\n projectName: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n padding: theme.spacing(0, 1),\r\n // necessary for content to be below app bar\r\n ...theme.mixins.toolbar,\r\n justifyContent: 'flex-start',\r\n flexGrow: 1\r\n },\r\n projectionText: {\r\n paddingTop: theme.spacing(0),\r\n marginTop: \"-5px\",\r\n color: \"white\"\r\n },\r\n marginTop: {\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(1)\r\n },\r\n buttonDiv: {\r\n textAlign: \"right\"\r\n },\r\n footerCoords: {\r\n fontSize: \"0.95rem\",\r\n paddingRight: theme.spacing(1.5),\r\n textShadow: \"1px 1px 2px black, 0px 0px 2px black\"\r\n },\r\n footerOffset: {\r\n marginRight: settingsDrawerWidth\r\n },\r\n footer: {\r\n boxShadow: \"none\",\r\n background: \"transparent\",\r\n pointerEvents: \"none\"\r\n },\r\n coordinates: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n justifyContent: \"flex-end\"\r\n },\r\n button: {\r\n marginTop: theme.spacing(2),\r\n marginLeft: theme.spacing(1)\r\n },\r\n slimButton: {\r\n marginTop: theme.spacing(1)\r\n },\r\n dropdown: {\r\n minWidth: 200,\r\n },\r\n offset: {\r\n marginLeft: assetDrawerWidth - 60\r\n },\r\n textField: {\r\n paddingBottom: theme.spacing(3)\r\n },\r\n matrixValuesParent: {\r\n display: \"flex\",\r\n paddingTop: theme.spacing(2),\r\n justifyContent: \"space-evenly\"\r\n },\r\n matrixValues: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n textAlign: \"center\"\r\n },\r\n matrixButtons: {\r\n display: \"flex\",\r\n justifyContent: \"center\"\r\n }\r\n }),\r\n);\r\n\r\ninterface ProjectDetailsProps {\r\n assetDrawerState: boolean;\r\n}\r\n\r\nconst ProjectDetails = (props: ProjectDetailsProps) => {\r\n const {viewer} = useViewer();\r\n const {assetDrawerState} = props;\r\n\r\n const dispatch = useDispatch();\r\n const classes = useStyles();\r\n const {t} = useTranslation();\r\n const projectDialog = useDialog();\r\n const warnDialog = useDialog();\r\n\r\n const [name, setName] = useState(\"\");\r\n const [height, setHeight] = useState(0);\r\n const [proj, setProj] = useState(\"\");\r\n const [matchedProjection, setMatchedProjection] = useState(null);\r\n const [imported, setImported] = useState(null);\r\n const [projections, setProjections] = useState([]);\r\n const {deleteBookmarks} = useBookmarks();\r\n\r\n const [cameraTransform, setCameraTransform] = useState({\r\n path: null,\r\n rotation: null,\r\n offset: null\r\n });\r\n\r\n const [errors, setErrors] = useState({\r\n name: false,\r\n height: false,\r\n projection: false,\r\n correction: false\r\n });\r\n\r\n const projectName = useSelector(selectProjectName);\r\n const projectHeight = useSelector(selectCameraHeight);\r\n const cameraTransformPath = useSelector(selectCameraTransform);\r\n const dataProjection = useSelector(selectDataProjection);\r\n const basicAdjustments = useSelector(selectBasicAdjustments);\r\n\r\n const unknownTextMeters = unknownProjectionMeters.name;\r\n const unknownTextFeet = unknownProjectionFeet.name;\r\n\r\n const getNewProjection = () => {\r\n let newProjection = null;\r\n\r\n if (proj === unknownTextMeters) {\r\n newProjection = unknownProjectionMeters;\r\n } else if (proj === unknownTextFeet) {\r\n newProjection = unknownProjectionFeet;\r\n } else if (imported && (proj === imported.name)) {\r\n newProjection = imported;\r\n } else {\r\n const results = projections.filter(x => x.name === proj);\r\n if (results.length !== 1) {\r\n return;\r\n }\r\n newProjection = results[0];\r\n }\r\n\r\n return newProjection;\r\n };\r\n\r\n const updateName = (event) => {\r\n const value = event.target.value;\r\n setErrors({...errors, name: false});\r\n setName(value);\r\n };\r\n\r\n const updateHeight = (event) => {\r\n const value = event.target.value;\r\n setErrors({...errors, height: false});\r\n setHeight(value);\r\n };\r\n\r\n const updateProj = (event) => {\r\n const value = event.target.value;\r\n if (!value) {\r\n return;\r\n }\r\n\r\n setErrors({...errors, projection: false});\r\n setProj(value);\r\n };\r\n\r\n const onSubmit = async () => {\r\n const trimmedName = name.trim();\r\n const emptyName = trimmedName === \"\";\r\n const emptyHeight = (height as any) === \"\";\r\n const emptyProjection = proj === \"\";\r\n\r\n setErrors({\r\n name: emptyName,\r\n height: emptyHeight,\r\n projection: emptyProjection,\r\n correction: false\r\n });\r\n\r\n if (emptyName || emptyProjection || emptyHeight) {\r\n return;\r\n }\r\n\r\n const heightInMeters = height * toMeters;\r\n\r\n projectDialog.handleClose();\r\n toast.success(t(\"toast.project-details-updated\"));\r\n\r\n await asyncTimeout(100);\r\n\r\n dispatch(updateProjectName(trimmedName));\r\n dispatch(changeCameraHeight(heightInMeters));\r\n dispatch(changeCameraTransform(cameraTransform.path));\r\n\r\n // Projection change requires a more strict check before dispatch\r\n const projectionName = selectedProjection.name;\r\n const projectionChanged = !LocalScene.isDataProjection(projectionName);\r\n\r\n if (!projectionChanged) return;\r\n\r\n viewer.setInitialStateFlag(false); // Reset initial zoom\r\n dispatch(changeSelectedTab(0)); // Reset to manage tab\r\n\r\n // Clear all bookmarks. TODO: update values instead of clearing(?)\r\n deleteBookmarks();\r\n\r\n dispatch(updateDataProjection(selectedProjection));\r\n dispatch(updateViewProjection(selectedProjection));\r\n };\r\n\r\n const handleImported = () => {\r\n const name = dataProjection.name;\r\n\r\n // Special case for default projections\r\n if ((name === unknownTextFeet) || (name === unknownTextMeters)) {\r\n setImported(null);\r\n return;\r\n }\r\n\r\n // Check to see if this projection existed in the users defined projections\r\n const matchedProjection = userProjections.data\r\n .find(x => x.name === name);\r\n\r\n if (matchedProjection) {\r\n const importedProjection = JSON.parse(JSON.stringify(dataProjection));\r\n const userProjection = JSON.parse(JSON.stringify(matchedProjection));\r\n\r\n if (isEqual(importedProjection, userProjection)) {\r\n // Projections match, so we use the locally defined one\r\n setImported(null);\r\n } else {\r\n // Projections are different, so we warn\r\n // the user and use the imported one\r\n setImported({...dataProjection});\r\n warnDialog.handleOpen();\r\n }\r\n } else {\r\n // Projection is not found in the users defined\r\n // projections so we mark it as imported\r\n setImported({...dataProjection});\r\n }\r\n };\r\n\r\n const onCorrectionSelect = async () => {\r\n const filePath = await openDialogFile(cameraMatrixFilter);\r\n if (!filePath) return;\r\n\r\n const {success, rotation, offset} = await getMatrixValues(filePath);\r\n\r\n if (!success) {\r\n toast.error(t(\"toast.correction-matrix-error\"));\r\n return;\r\n }\r\n\r\n setCameraTransform({path: filePath, rotation, offset});\r\n };\r\n\r\n const onMatrixChange = async (filePath: string) => {\r\n const {success, rotation, offset} = await getMatrixValues(filePath);\r\n\r\n if (success) {\r\n setCameraTransform({path: filePath, rotation, offset});\r\n } else {\r\n onCorrectionRemove();\r\n }\r\n };\r\n\r\n const onCorrectionRemove = () => {\r\n setCameraTransform({\r\n path: null,\r\n rotation: null,\r\n offset: null\r\n });\r\n };\r\n\r\n const updateTitle = (title) => {\r\n document.title = `SOLV3D engine viewer : ${title}`;\r\n };\r\n\r\n const clearBasicAlignment = () => {\r\n dispatch(changeBasicAdjustments({}));\r\n viewer?.resetBasicAlignerCamera();\r\n };\r\n\r\n const getTransformValues = () => {\r\n let rotation = [0,0,0];\r\n let offset = [0,0,0];\r\n\r\n if (cameraTransform.offset) {\r\n offset = [\r\n converter.convert(cameraTransform.offset.x, \"m\", units, 2),\r\n converter.convert(cameraTransform.offset.y, \"m\", units, 2),\r\n converter.convert(cameraTransform.offset.z, \"m\", units, 2)\r\n ];\r\n }\r\n\r\n if (cameraTransform.rotation) {\r\n rotation = [\r\n cameraTransform.rotation.x.toFixed(2),\r\n cameraTransform.rotation.y.toFixed(2),\r\n cameraTransform.rotation.z.toFixed(2)\r\n ];\r\n }\r\n\r\n return {rotation, offset};\r\n };\r\n\r\n const resetDefaults = () => {\r\n const height = projectHeight / projectionToMeters(dataProjection);\r\n setHeight(height);\r\n\r\n const localizedProjectName = getLocalizedProjectName(projectName);\r\n setName(localizedProjectName);\r\n\r\n setProj(dataProjection.name);\r\n };\r\n\r\n useEffect(() => {\r\n onMatrixChange(cameraTransformPath);\r\n }, [cameraTransformPath]);\r\n\r\n useEffect(() => {\r\n if (!projectDialog.open) return;\r\n\r\n resetDefaults();\r\n handleImported();\r\n userProjections.load();\r\n\r\n // Get a sorted list of projections\r\n const sortedProjections = userProjections.data.sort((a, b) => {\r\n const name1 = a.name.toLowerCase();\r\n const name2 = b.name.toLowerCase();\r\n return (name1 < name2) ? -1 : ((name2 > name1) ? 1 : 0);\r\n });\r\n\r\n // Find the current projection\r\n const matchedProjection = sortedProjections.filter(\r\n x => x.name === dataProjection.name)[0];\r\n\r\n setProjections(sortedProjections);\r\n setMatchedProjection(matchedProjection);\r\n }, [projectDialog.open, dataProjection]);\r\n\r\n const selectedProjection = getNewProjection();\r\n const units = projectionToUnits(selectedProjection);\r\n const toMeters = projectionToMeters(selectedProjection);\r\n const hasBasicAlignment = Object.keys(basicAdjustments).length !== 0;\r\n\r\n const isDefaultProjection = dataProjection.default;\r\n const localizedProjectionName = getLocalizedProjectionName(dataProjection, units);\r\n const localizedProjectName = getLocalizedProjectName(projectName);\r\n\r\n const {rotation, offset} = getTransformValues();\r\n const hasUserProjections = projections.length > 0;\r\n updateTitle(localizedProjectName);\r\n\r\n return (\r\n
\r\n \r\n \r\n {localizedProjectName}\r\n \r\n \r\n {localizedProjectionName}\r\n \r\n \r\n\r\n {isElectronApp && (\r\n \r\n \r\n \r\n )}\r\n\r\n \r\n \r\n {t('project-settings.project-information')}\r\n \r\n \r\n\r\n {/* Project display title */}\r\n \r\n {t('project-settings.project-title')}\r\n \r\n\r\n \r\n {t('project-settings.project-title-description')}\r\n \r\n \r\n\r\n {/* Camera height */}\r\n \r\n {t('project-settings.camera-height', {units})}\r\n \r\n \r\n {t('project-settings.camera-height-description')}\r\n \r\n \r\n\r\n {/* Projection dropdown */}\r\n \r\n {t('project-settings.data-projection')}\r\n \r\n \r\n {t('project-settings.data-projection-description')}\r\n \r\n \r\n {imported && (\r\n {t('project-settings.imported-projections')}\r\n )}\r\n\r\n {imported && ({imported.name})}\r\n\r\n \r\n {t('project-settings.generic-projections')}\r\n \r\n\r\n {t(\"projections.default-projection\", {units: \"m\"})}\r\n\r\n {t(\"projections.default-projection\", {units: \"ft\"})}\r\n\r\n {hasUserProjections && \r\n {t('project-settings.user-projections')}\r\n }\r\n\r\n {projections.map(row => {\r\n const conflict = imported\r\n ? imported.name === row.name\r\n : false;\r\n\r\n const suffix = conflict\r\n ? \"__conflict\"\r\n : \"\";\r\n\r\n return ({row.name});\r\n })}\r\n \r\n\r\n {/* Camera Correction Matrix */}\r\n
\r\n \r\n {t('project-settings.camera-correction')}\r\n \r\n\r\n {(!hasBasicAlignment) && (\r\n {t('project-settings.camera-correction-description')}\r\n )}\r\n\r\n {(hasBasicAlignment) && (
\r\n \r\n {t('project-settings.camera-correction-warning')}\r\n \r\n
)}\r\n\r\n
\r\n {cameraTransform.path &&
\r\n \r\n {t('project-settings.matrix_offset_units', {units})}: [{offset[0]}, {offset[1]}, {offset[2]}]\r\n \r\n\r\n \r\n {t('project-settings.matrix_rotation')}: [{rotation[0]}, {rotation[1]}, {rotation[2]}]\r\n \r\n
}\r\n\r\n
\r\n {/* Save matrix file */}\r\n {(cameraTransform.path) && (saveMatrixFile(cameraTransform.path)}\r\n className={clsx(classes.button, classes.slimButton)}\r\n color=\"primary\"\r\n >\r\n {t('buttons.save-file')}\r\n )}\r\n\r\n {/* Remove matrix file */}\r\n {cameraTransform.path && (\r\n {t('buttons.remove-file')}\r\n )}\r\n\r\n {/* Upload matrix file */}\r\n {(!hasBasicAlignment) && (\r\n {t('buttons.upload-file')}\r\n )}\r\n\r\n {/* Cancel basic alignment */}\r\n {(hasBasicAlignment) && (\r\n {t('buttons.clear-file')}\r\n )}\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n {t('buttons.cancel')}\r\n \r\n\r\n \r\n {t('buttons.update-project')}\r\n \r\n
\r\n
\r\n \r\n\r\n {/* Warning message for projection mismatch */}\r\n \r\n \r\n {t('project-settings.projection-mismatch')}\r\n \r\n \r\n \r\n {t('project-settings.projection-mismatch-description', {name: dataProjection.name})}\r\n \r\n\r\n \r\n {t('project-settings.imported-projection')}\r\n

\r\n \"{dataProjection.string}\"\r\n
\r\n\r\n \r\n {t('project-settings.existing-projection')}\r\n

\r\n \"{matchedProjection?.string}\"\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\ninterface MainAppBarProps {\r\n settingsDrawerState: boolean;\r\n setSettingsDrawerState: React.Dispatch;\r\n assetDrawerState: boolean;\r\n customURLDialogOpen: boolean;\r\n setCustomURLDialogOpen: () => void;\r\n measurementsDialogOpen: boolean;\r\n setMeasurementsDialogOpen: () => void;\r\n}\r\n\r\nexport const MainAppBar = memo((props: MainAppBarProps) => {\r\n const classes = useStyles();\r\n const dispatch = useDispatch();\r\n const {t, i18n} = useTranslation();\r\n\r\n const {settingsDrawerState, setSettingsDrawerState,\r\n assetDrawerState, customURLDialogOpen, setCustomURLDialogOpen,\r\n measurementsDialogOpen, setMeasurementsDialogOpen} = props;\r\n\r\n const { activeToolOpen } = useActiveTool();\r\n const { loggedIn } = useAuth();\r\n\r\n const handleDrawerOpen = () => {\r\n dispatch(changeDrawerOpen(true));\r\n };\r\n\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n {/** Language selector */}\r\n \r\n\r\n {/** Custom Links */}\r\n {isElectronApp && \r\n \r\n \r\n \r\n }\r\n\r\n {/** Measurements */}\r\n \r\n {\r\n if (activeToolOpen) return toast.warning(t('toast.one_tool_only'));\r\n setMeasurementsDialogOpen();\r\n }}\r\n >\r\n \r\n \r\n \r\n\r\n {/** Home Icon */}\r\n {isCloudSite && loggedIn && \r\n \r\n \r\n \r\n }\r\n\r\n {/** User profile */}\r\n {(isCloudSite || isElectronApp) && }\r\n\r\n {/** Project Settings */}\r\n \r\n {\r\n setSettingsDrawerState(true);\r\n }}\r\n >\r\n \r\n \r\n \r\n\r\n \r\n \r\n );\r\n});\r\n\r\ninterface MainAppFooterProps {\r\n settingsDrawerState: boolean;\r\n}\r\n\r\nexport const MainAppFooter = memo((props: MainAppFooterProps) => {\r\n const classes = useStyles();\r\n const {viewer} = useViewer();\r\n\r\n const {settingsDrawerState} = props;\r\n\r\n const [mouseCoords, setMouseCoords] = useState(null);\r\n const [coordData, setCoordData] = useState({});\r\n const formatter = viewer?.getMeasurementFormatter();\r\n\r\n useEffect(() => {\r\n setCoordinates();\r\n }, [mouseCoords]);\r\n\r\n /** Mouse coordinate event listener */\r\n useEffect(() => {\r\n const callback = (event) => {\r\n const {coords} = event.detail;\r\n setMouseCoords(coords);\r\n };\r\n\r\n document.addEventListener(\"update-mouse-coords\", callback);\r\n\r\n return () => {\r\n document.removeEventListener(\"update-mouse-coords\", callback);\r\n };\r\n }, []);\r\n\r\n const setCoordinates = () => {\r\n if (!mouseCoords || !LocalScene.initialized) {\r\n setCoordData({});\r\n return;\r\n }\r\n\r\n const precision = formatter.getVectorPrecision(LocalScene.viewProjection);\r\n const coordinate = new SceneCoordinate(mouseCoords)\r\n .toViewProjection();\r\n\r\n const x = coordinate.x.toFixed(precision.x);\r\n const y = coordinate.y.toFixed(precision.y);\r\n const z = coordinate.z.toFixed(precision.z);\r\n\r\n setCoordData({x, y, z});\r\n };\r\n\r\n return (\r\n \r\n \r\n
\r\n {Object.keys(coordData).map((key) => (\r\n \r\n {`${key.toUpperCase()}:`} {coordData[key]}\r\n \r\n ))\r\n }\r\n
\r\n
\r\n
\r\n );\r\n});\r\n\r\nexport const updateMouseCoords = (coords: Vector3) => {\r\n sendCustomEvent(\"update-mouse-coords\", {coords});\r\n};","import { NearestFilter, TextureLoader } from 'three';\r\nimport classifications from '../textures/colormaps/classifications.png';\r\n\r\n// Load classification texture\r\nconst loader = new TextureLoader();\r\n\r\nexport const classificationTexture =\r\n loader.load(classifications, texture => {\r\n texture.minFilter = NearestFilter;\r\n texture.magFilter = NearestFilter;\r\n });\r\n","export default \"uniform sampler2D tImage;\\r\\nuniform float opacity;\\r\\nvarying vec2 vUv;\\r\\n\\r\\nvoid main() {\\r\\n vec4 color = texture2D(tImage, vUv);\\r\\n float alpha = color.a * opacity;\\r\\n gl_FragColor = vec4(color.rgb, alpha);\\r\\n}\\r\\n\";","export default \"varying vec2 vUv;\\r\\n\\r\\nvoid main() {\\r\\n\\tvUv = uv;\\r\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\r\\n}\\r\\n\";","/* eslint-disable import/no-webpack-loader-syntax */\r\n\r\nimport basicRenderFragmentShader from \"!!raw-loader!./render_basic.frag\";\r\nimport edlRenderFragmentShader from \"!!raw-loader!./render_edl.frag\";\r\nimport outputRenderFragmentShader from \"!!raw-loader!./render_output.frag\";\r\nimport commonRenderVertexShader from \"!!raw-loader!./render_common.vert\";\r\nimport pointCloudFragmentShader from \"!!raw-loader!./pointcloud.frag\";\r\nimport pointCloudVertexShader from \"!!raw-loader!./pointcloud.vert\";\r\nimport panoramicFragmentShader from \"!!raw-loader!./panoramic.frag\";\r\nimport panoramicVertexShader from \"!!raw-loader!./panoramic.vert\";\r\nimport planarFragmentShader from \"!!raw-loader!./planar.frag\";\r\nimport planarVertexShader from \"!!raw-loader!./planar.vert\";\r\nimport markersFragmentShader from \"!!raw-loader!./markers.frag\";\r\nimport markersVertexShader from \"!!raw-loader!./markers.vert\";\r\nimport utilitiesVertexShader from \"!!raw-loader!./utilities.vert\";\r\nimport utilitiesFragmentShader from \"!!raw-loader!./utilities.frag\";\r\nimport gpuPickerFragmentShader from \"!!raw-loader!./gpu_picker.frag\";\r\nimport gpuPickerVertexShader from \"!!raw-loader!./gpu_picker.vert\";\r\nimport texturePackVertexShader from \"!!raw-loader!./texture_pack.vert\";\r\nimport tagsFragmentShader from \"!!raw-loader!./tags.frag\";\r\nimport tagsVertexShader from \"!!raw-loader!./tags.vert\";\r\nimport basicPickerFragmentShader from \"!!raw-loader!./picker_basic.frag\";\r\nimport basicPickerVertexShader from \"!!raw-loader!./picker_basic.vert\";\r\nimport spriteFragmentShader from \"!!raw-loader!./sprite.frag\";\r\nimport spriteVertexShader from \"!!raw-loader!./sprite.vert\";\r\n\r\nconst shaders = {\r\n pointcloud: {\r\n vert: pointCloudVertexShader,\r\n frag: pointCloudFragmentShader\r\n },\r\n panoramic: {\r\n vert: panoramicVertexShader,\r\n frag: panoramicFragmentShader\r\n },\r\n planar: {\r\n vert: planarVertexShader,\r\n frag: planarFragmentShader\r\n },\r\n render_edl: {\r\n vert: commonRenderVertexShader,\r\n frag: edlRenderFragmentShader\r\n },\r\n render_basic: {\r\n vert: commonRenderVertexShader,\r\n frag: basicRenderFragmentShader\r\n },\r\n render_transition: {\r\n vert: commonRenderVertexShader,\r\n frag: outputRenderFragmentShader\r\n },\r\n markers: {\r\n vert: markersVertexShader,\r\n frag: markersFragmentShader\r\n },\r\n utilities: {\r\n vert: utilitiesVertexShader,\r\n frag: utilitiesFragmentShader\r\n },\r\n basic_picker: {\r\n vert: basicPickerVertexShader,\r\n frag: basicPickerFragmentShader\r\n },\r\n gpu_picker: {\r\n vert: gpuPickerVertexShader,\r\n frag: gpuPickerFragmentShader\r\n },\r\n texture_packer: {\r\n vert: texturePackVertexShader\r\n },\r\n tags: {\r\n vert: tagsVertexShader,\r\n frag: tagsFragmentShader\r\n },\r\n sprite: {\r\n vert: spriteVertexShader,\r\n frag: spriteFragmentShader\r\n }\r\n};\r\n\r\nexport default shaders;","export default \"\\r\\n#define DISTANCE_FROM_PLANE 0.5\\r\\n\\r\\nattribute float intensity;\\r\\nattribute float classification;\\r\\nattribute vec3 rgb;\\r\\n\\r\\nuniform bool gpuPicker;\\r\\nuniform float pratio;\\r\\nuniform float size;\\r\\nuniform float alpha;\\r\\nuniform float distance;\\r\\nuniform vec3 currentCameraTarget;\\r\\nuniform float screenHeight;\\r\\nuniform float fov;\\r\\nuniform float minSize;\\r\\nuniform float maxSize;\\r\\nuniform float octreeSize;\\r\\nuniform vec3 octreeCorner;\\r\\nuniform float octreeSpacing;\\r\\n\\r\\nuniform sampler2D colorMap;\\r\\nuniform float colorType;\\r\\nuniform bool adaptiveSize;\\r\\nuniform bool isOctreeCloud;\\r\\nuniform bool isPotreeCloud;\\r\\nuniform vec2 heightRange;\\r\\nuniform vec2 heightClamp;\\r\\nuniform vec2 intensityRange;\\r\\nuniform vec2 intensityClamp;\\r\\nuniform float rgbMax;\\r\\n\\r\\nuniform float crossSectionWidth;\\r\\nuniform vec3 crossSectionStart;\\r\\nuniform vec3 crossSectionEnd;\\r\\n\\r\\nuniform sampler2D clipPolygonData;\\r\\n\\r\\nuniform sampler2D visibleNodes;\\r\\nuniform sampler2D classificationData;\\r\\nuniform sampler2D classificationVisible;\\r\\nuniform sampler2D areaTriangleData;\\r\\n\\r\\nflat varying vec3 vColor;\\r\\nflat varying float vHidden;\\r\\n\\r\\nvec3 pointOnPlane(vec3 origin, vec3 point, vec3 normal) {\\r\\n return point - dot(point - origin, normal) * normal;\\r\\n}\\r\\n\\r\\nfloat distanceFromPlane(vec3 origin, vec3 point, vec3 normal) {\\r\\n return abs(dot(origin - point, normal));\\r\\n}\\r\\n\\r\\nbool classificationIsHidden(float classification) {\\r\\n float x = (classification + 0.1) / float(NUMBER_OF_CLASSIFICATIONS);\\r\\n vec4 value = texture2D(classificationVisible, vec2(x, 0.5));\\r\\n return value.a < 0.5;\\r\\n}\\r\\n\\r\\nvec3 classificationColor(float classification) {\\r\\n float x = (classification + 0.1) / float(NUMBER_OF_CLASSIFICATIONS);\\r\\n vec4 value = texture2D(classificationData, vec2(x, 0.5));\\r\\n return value.rgb;\\r\\n}\\r\\n\\r\\nfloat clampedValue(float data, vec2 dataRange, vec2 dataClamp) {\\r\\n float scaled = (data - dataRange.x) / (dataRange.y - dataRange.x);\\r\\n float clamped = (scaled - dataClamp.x) / (dataClamp.y - dataClamp.x);\\r\\n return clamped;\\r\\n}\\r\\n\\r\\nvec3 calculateOppositeColor(float colorType, vec3 colorValue){\\r\\n vec3 result;\\r\\n vec3 opp = vec3(1.0, 1.0, 1.0);\\r\\n opp = opp - colorValue;\\r\\n\\r\\n bool isIntensity = compareFloat(colorType, 0.0);\\r\\n bool isRGB = compareFloat(colorType, 1.0);\\r\\n bool isHeight = compareFloat(colorType, 2.0);\\r\\n bool isClassification = compareFloat(colorType, 3.0);\\r\\n\\r\\n if (isHeight) {\\r\\n result = opp;\\r\\n } else if (isIntensity) {\\r\\n result = vec3(1.0, 0.0, 0.0);\\r\\n } else if (isClassification) {\\r\\n result = vec3(1.0, 0.0, 0.0);\\r\\n } else if (isRGB) {\\r\\n result = vec3(1.0, 0.0, 0.0);\\r\\n } else {\\r\\n result = opp;\\r\\n }\\r\\n\\r\\n return result;\\r\\n}\\r\\n\\r\\nvec3 getCloudColor(float colorType, vec3 posWorld) {\\r\\n // Default color for invalid color types\\r\\n vec3 color = vec3(0.0, 0.0, 0.0);\\r\\n\\r\\n bool isIntensity = compareFloat(colorType, 0.0);\\r\\n bool isRGB = compareFloat(colorType, 1.0);\\r\\n bool isHeight = compareFloat(colorType, 2.0);\\r\\n bool isClassification = compareFloat(colorType, 3.0);\\r\\n\\r\\n if (isRGB) {\\r\\n // Color by RGB values\\r\\n color = rgb / rgbMax;\\r\\n } else if (isIntensity) {\\r\\n // Intensity colors with clamping\\r\\n float cloudIntensity = clampedValue(intensity, intensityRange, intensityClamp);\\r\\n color = texture2D(colorMap, vec2(cloudIntensity, 0.5)).rgb;\\r\\n } else if (isHeight) {\\r\\n // Height based coloring with clamping\\r\\n float cloudHeight = clampedValue(posWorld.z, heightRange, heightClamp);\\r\\n color = texture2D(colorMap, vec2(cloudHeight, 0.5)).rgb;\\r\\n } else if (isClassification) {\\r\\n color = classificationColor(classification);\\r\\n }\\r\\n\\r\\n return color;\\r\\n}\\r\\n\\r\\nint roundFloat(float number){\\r\\n\\treturn int(floor(number + 0.5));\\r\\n}\\r\\n\\r\\nbool isBitSet(int number, int index){\\r\\n int powi = roundFloat(pow(2.0, float(index)));\\r\\n\\tint ndp = number / powi;\\r\\n float remainder = mod(float(ndp), 2.0);\\r\\n\\treturn !compareFloat(remainder, 0.0);\\r\\n}\\r\\n\\r\\nint numberOfOnes(int number, int index){\\r\\n\\tint numOnes = 0;\\r\\n\\tint tmp = 128;\\r\\n\\tfor(int i = 7; i >= 0; i--){\\r\\n\\t\\tif(number >= tmp){\\r\\n\\t\\t\\tnumber = number - tmp;\\r\\n\\t\\t\\tif(i <= index){\\r\\n\\t\\t\\t\\tnumOnes++;\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\t\\ttmp = tmp / 2;\\r\\n\\t}\\r\\n\\treturn numOnes;\\r\\n}\\r\\n\\r\\nint getChildIndexPotree(vec3 index3d) {\\r\\n return roundFloat((4.0 * index3d.x) + (2.0 * index3d.y) + index3d.z);\\r\\n}\\r\\n\\r\\nint getChildIndexEncompass(vec3 index3d) {\\r\\n return roundFloat(index3d.x + (2.0 * index3d.y) + (4.0 * index3d.z));\\r\\n}\\r\\n\\r\\nfloat getLocalTreeDepth(vec3 positionOctree){\\r\\n int iOffset = 0;\\r\\n\\tfloat depth = 0.0;\\r\\n vec3 offset = vec3(0.0, 0.0, 0.0);\\r\\n\\r\\n\\tfor(float i = 0.0; i <= 30.0; i++) {\\r\\n\\t\\tfloat nodeSizeAtLevel = octreeSize / pow(2.0, i);\\r\\n\\r\\n vec3 index3d = (positionOctree - offset) / nodeSizeAtLevel;\\r\\n\\t\\tindex3d = floor(index3d + 0.5);\\r\\n int index = isPotreeCloud\\r\\n ? getChildIndexPotree(index3d)\\r\\n : getChildIndexEncompass(index3d);\\r\\n\\r\\n float x = float(iOffset) / float(VISIBLE_NODES_WIDTH);\\r\\n\\t\\tvec4 value = texture2D(visibleNodes, vec2(x, 0.0));\\r\\n int mask = int(round(value.r * 255.0));\\r\\n bool childExists = isBitSet(mask, index);\\r\\n\\r\\n if(childExists){\\r\\n\\t\\t\\t// There are more visible child nodes at this position\\r\\n\\t\\t\\tint advanceG = int(round(value.g * 255.0)) * 256;\\r\\n\\t\\t\\tint advanceB = int(round(value.b * 255.0));\\r\\n\\t\\t\\tint advanceChild = numberOfOnes(mask, index - 1);\\r\\n\\t\\t\\tint advance = advanceG + advanceB + advanceChild;\\r\\n\\t\\t\\tiOffset = iOffset + advance;\\r\\n\\t\\t\\tdepth++;\\r\\n\\t\\t} else {\\r\\n\\t\\t\\t// No more visible child nodes at this position\\r\\n\\t\\t\\tfloat lodOffset = (255.0 * value.a) / 10.0 - 10.0;\\r\\n\\t\\t\\treturn depth + lodOffset;\\r\\n\\t\\t}\\r\\n\\r\\n\\t\\toffset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d;\\r\\n\\t}\\r\\n\\r\\n\\treturn depth;\\r\\n}\\r\\n\\r\\nfloat getPointSizeAttenuation(vec3 posWorld) {\\r\\n vec3 positionOctree = posWorld - octreeCorner;\\r\\n\\treturn pow(2.0, getLocalTreeDepth(positionOctree));\\r\\n}\\r\\n\\r\\nfloat getClipBoxData(int xIndex, int yIndex) {\\r\\n return unpackTextureData(\\r\\n clipPolygonData,\\r\\n xIndex,\\r\\n yIndex,\\r\\n CLIP_TEXTURE_WIDTH,\\r\\n CLIP_TEXTURE_HEIGHT\\r\\n );\\r\\n}\\r\\n\\r\\nfloat getAreaTriangleData(int xIndex, int yIndex) {\\r\\n return unpackTextureData(\\r\\n areaTriangleData,\\r\\n xIndex,\\r\\n yIndex,\\r\\n AREA_TEXTURE_WIDTH,\\r\\n AREA_TEXTURE_HEIGHT\\r\\n );\\r\\n}\\r\\n\\r\\n// Point in 2d triangle: https://stackoverflow.com/a/2049593\\r\\nfloat triangleSign(vec3 p1, vec3 p2, vec3 p3) {\\r\\n return (p1.x - p3.x) * (p2.y - p3.y) - (p2.x - p3.x) * (p1.y - p3.y);\\r\\n}\\r\\n\\r\\n// Point in 2d triangle: https://stackoverflow.com/a/2049593\\r\\nbool pointInTriangle(vec3 p1, vec3 p2, vec3 p3, vec3 p4) {\\r\\n float d1 = triangleSign(p4, p1, p2);\\r\\n float d2 = triangleSign(p4, p2, p3);\\r\\n float d3 = triangleSign(p4, p3, p1);\\r\\n\\r\\n bool isNegative = (d1 < 0.0) || (d2 < 0.0) || (d3 < 0.0);\\r\\n bool isPositive = (d1 > 0.0) || (d2 > 0.0) || (d3 > 0.0);\\r\\n bool insideTriangle = !(isNegative && isPositive);\\r\\n\\r\\n return insideTriangle;\\r\\n}\\r\\n\\r\\nvec2 checkPointInArea(vec3 point) {\\r\\n // return vec2(\\r\\n // float insidePolygon,\\r\\n // float volumeEnabled\\r\\n // )\\r\\n\\r\\n #if defined NUM_AREA_TRIANGLES\\r\\n for (int i=0; i 0.5;\\r\\n bool volumeCalculated = compareFloat(volumeStatus, 2.0);\\r\\n\\r\\n // vertex #1\\r\\n vec3 v1 = vec3(\\r\\n getAreaTriangleData(i, 1),\\r\\n getAreaTriangleData(i, 2),\\r\\n getAreaTriangleData(i, 3)\\r\\n );\\r\\n\\r\\n // vertex #2\\r\\n vec3 v2 = vec3(\\r\\n getAreaTriangleData(i, 4),\\r\\n getAreaTriangleData(i, 5),\\r\\n getAreaTriangleData(i, 6)\\r\\n );\\r\\n\\r\\n // vertex #3\\r\\n vec3 v3 = vec3(\\r\\n getAreaTriangleData(i, 7),\\r\\n getAreaTriangleData(i, 8),\\r\\n getAreaTriangleData(i, 9)\\r\\n );\\r\\n\\r\\n vec3 N = cross(v2 - v1, v3 - v1);\\r\\n N = N / length(N);\\r\\n\\r\\n vec3 v1p = v1;\\r\\n vec3 v2p = v2;\\r\\n vec3 v3p = v3;\\r\\n vec3 pointP = point;\\r\\n\\r\\n if (isVolumeType == false) {\\r\\n // Check distance from plane\\r\\n float pointHeight = distanceFromPlane(v1, point, N);\\r\\n if (pointHeight > DISTANCE_FROM_PLANE) {\\r\\n continue;\\r\\n }\\r\\n\\r\\n // Project point to plane\\r\\n v1p = pointOnPlane(v1, v1, N);\\r\\n v2p = pointOnPlane(v1, v2, N);\\r\\n v3p = pointOnPlane(v1, v3, N);\\r\\n pointP = pointOnPlane(v1, point, N);\\r\\n }\\r\\n\\r\\n bool insideTriangle = pointInTriangle(v1p, v2p, v3p, pointP);\\r\\n if (insideTriangle == false) {\\r\\n continue;\\r\\n }\\r\\n\\r\\n if (volumeCalculated) {\\r\\n return vec2(1.0, 1.0);\\r\\n } else {\\r\\n return vec2(1.0, 0.0);\\r\\n }\\r\\n }\\r\\n #endif\\r\\n\\r\\n return vec2(0.0, 0.0);\\r\\n}\\r\\n\\r\\nvec4 checkPointInBox(vec3 point, float classification) {\\r\\n bool insideBox = false;\\r\\n bool newVisibility = true;\\r\\n bool reclassifyPoints = false;\\r\\n float finalClassification = -1.0;\\r\\n\\r\\n #if defined NUM_CLIP_BOXES\\r\\n for (int i=0; i 0.0);\\r\\n}\\r\\n\\r\\nbool pointInCrossSection(vec3 point) {\\r\\n vec3 p1 = crossSectionStart;\\r\\n vec3 p2 = crossSectionEnd;\\r\\n vec3 p3 = point;\\r\\n\\r\\n // force everything to 2d\\r\\n p1.z = 0.0;\\r\\n p2.z = 0.0;\\r\\n p3.z = 0.0;\\r\\n\\r\\n float lineLength = length(p1 - p2);\\r\\n if (compareFloat(lineLength, 0.0)) {\\r\\n return false;\\r\\n }\\r\\n\\r\\n // calculate distance from line\\r\\n float p1p3x = p1.x - p3.x;\\r\\n float p1p3y = p1.y - p3.y;\\r\\n float p2p1x = p2.x - p1.x;\\r\\n float p2p1y = p2.y - p1.y;\\r\\n float dAcrossAxis = abs(p2p1x*p1p3y - p1p3x*p2p1y) / lineLength;\\r\\n\\r\\n // calculate signed distance along line\\r\\n float dHypotenuse = length(p1 - p3);\\r\\n float dAlongAxis = sqrt(dHypotenuse*dHypotenuse - dAcrossAxis*dAcrossAxis);\\r\\n bool infront = isInFront(p1, p2, p3);\\r\\n if (infront == false) {\\r\\n dAlongAxis = -1.0 * dAlongAxis;\\r\\n }\\r\\n\\r\\n return (dAlongAxis >= 0.0)\\r\\n && (dAlongAxis <= lineLength)\\r\\n && (dAcrossAxis < (crossSectionWidth/2.0));\\r\\n}\\r\\n\\r\\nvoid main() {\\r\\n // Update colors for GPU picker\\r\\n updateGPUPickerColors();\\r\\n bool isHidden = false;\\r\\n\\r\\n vec4 mvPosition = modelViewMatrix * vec4(position, 1.0);\\r\\n vec3 viewPosition = -mvPosition.xyz;\\r\\n gl_Position = projectionMatrix * mvPosition;\\r\\n\\r\\n // Position in viewer coordinates (including offset)\\r\\n\\tvec3 posWorld = (modelMatrix * vec4( position, 1.0 )).xyz;\\r\\n\\r\\n // Hide based on distance (2D)\\r\\n float distance2D = getDistance2D(posWorld, currentCameraTarget);\\r\\n if (distance2D > distance) {\\r\\n isHidden = true;\\r\\n }\\r\\n\\r\\n // Check if classification is hidden\\r\\n if (classificationIsHidden(classification)) {\\r\\n isHidden = true;\\r\\n }\\r\\n\\r\\n // ---------------------\\r\\n\\t// POINT SIZE\\r\\n\\t// ---------------------\\r\\n float pointSize = 1.0;\\r\\n float projFactor = getProjFactor(fov, screenHeight, viewPosition.z);\\r\\n float r = octreeSpacing * sqrt(3.0);\\r\\n\\r\\n if (isOctreeCloud && adaptiveSize) {\\r\\n // Adaptive point sizing\\r\\n float pointAttenuation = getPointSizeAttenuation(posWorld);\\r\\n float worldSpaceSize = size * (r / pointAttenuation);\\r\\n pointSize = 1.0 * worldSpaceSize * projFactor;\\r\\n } else {\\r\\n // Attenuated point size\\r\\n pointSize = 0.15 * size * projFactor;\\r\\n }\\r\\n\\r\\n pointSize = max(minSize, pointSize);\\r\\n pointSize = min(maxSize, pointSize);\\r\\n\\r\\n // ---------------------\\r\\n\\t// POINT COLOR\\r\\n\\t// ---------------------\\r\\n vColor = getCloudColor(colorType, posWorld);\\r\\n\\r\\n // ---------------------\\r\\n // CROSS SECTION\\r\\n // ---------------------\\r\\n bool inCrossSection = pointInCrossSection(posWorld.xyz);\\r\\n\\r\\n // ---------------------\\r\\n // MEASUREMENT AREA/VOLUME\\r\\n // ---------------------\\r\\n vec2 areaReturnValue = checkPointInArea(posWorld.xyz);\\r\\n bool insidePolygon = floatToBool(areaReturnValue.x);\\r\\n bool volumeEnabled = floatToBool(areaReturnValue.y);\\r\\n\\r\\n // ---------------------\\r\\n // CLIPPING BOXES\\r\\n // ---------------------\\r\\n vec4 clipReturnValue = checkPointInBox(posWorld.xyz, classification);\\r\\n bool insideClip = floatToBool(clipReturnValue.x);\\r\\n bool clipVisible = floatToBool(clipReturnValue.y);\\r\\n bool reclassify = floatToBool(clipReturnValue.z);\\r\\n float newClassification = clipReturnValue.w;\\r\\n\\r\\n if (inCrossSection || insidePolygon || insideClip) {\\r\\n vColor = calculateOppositeColor(colorType, vColor);\\r\\n }\\r\\n\\r\\n // Delete points\\r\\n if (!clipVisible) {\\r\\n isHidden = true;\\r\\n }\\r\\n\\r\\n // Reclassify points\\r\\n if (insideClip && reclassify) {\\r\\n vColor = classificationColor(newClassification);\\r\\n }\\r\\n\\r\\n // Reduce point size if volume is calculated\\r\\n if (volumeEnabled) {\\r\\n pointSize = pointSize * 0.5;\\r\\n }\\r\\n\\r\\n if (gpuPicker) {\\r\\n // gpu picker points are 10% larger than normal\\r\\n pointSize = pointSize * 1.10;\\r\\n }\\r\\n\\r\\n // Set OpenGL parameters\\r\\n vHidden = boolToFloat(isHidden);\\r\\n gl_PointSize = pointSize;\\r\\n}\";","export default \"#define PRECISION 0.0001\\r\\n\\r\\nuniform bool gpuPicker;\\r\\nuniform bool circularPoints;\\r\\n\\r\\nflat varying vec3 vColor;\\r\\nflat varying float vHidden;\\r\\n\\r\\nvoid main(void) {\\r\\n bool hidden = floatToBool(vHidden);\\r\\n if (hidden) {\\r\\n discard;\\r\\n }\\r\\n\\r\\n // Circular points\\r\\n if (circularPoints) {\\r\\n float u = 2.0 * gl_PointCoord.x - 1.0;\\r\\n float v = 2.0 * gl_PointCoord.y - 1.0;\\r\\n float cc = u*u + v*v;\\r\\n if(cc > 1.0){\\r\\n discard;\\r\\n }\\r\\n }\\r\\n\\r\\n vec4 final;\\r\\n if (gpuPicker) {\\r\\n final = vGPUColor;\\r\\n } else {\\r\\n final = vec4(vColor, 1.0);\\r\\n }\\r\\n\\r\\n gl_FragColor = final;\\r\\n}\";","export default \"varying vec3 vPosition;\\r\\n\\r\\nvoid main() {\\r\\n vPosition = position;\\r\\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\r\\n}\\r\\n\";","export default \"#define RECIPROCAL_PI 0.3183098861837907\\r\\n#define RECIPROCAL_PI2 0.15915494309189535\\r\\n\\r\\nuniform sampler2D tImage;\\r\\nvarying vec3 vPosition;\\r\\n\\r\\nvec2 getPixelCoords( in vec3 dir ) {\\r\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\r\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\r\\n\\treturn vec2( u, v );\\r\\n}\\r\\n\\r\\nvoid main() {\\r\\n\\tvec3 direction = vec3(vPosition.x, vPosition.z, -vPosition.y);\\r\\n direction = normalize(direction);\\r\\n\\r\\n vec2 sampleUV = getPixelCoords( direction );\\r\\n gl_FragColor = texture2D( tImage, sampleUV );\\r\\n}\\r\\n\";","export default \"varying vec3 vPosition;\\r\\n\\r\\nvoid main() {\\r\\n vPosition = position;\\r\\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\r\\n}\\r\\n\";","export default \"uniform sampler2D tImage;\\r\\nuniform float imageHeight;\\r\\nuniform float imageWidth;\\r\\nuniform float fx;\\r\\nuniform float fy;\\r\\nuniform float cx;\\r\\nuniform float cy;\\r\\n\\r\\nvarying vec3 vPosition;\\r\\n\\r\\nvec2 getPixelCoords( vec3 direction, float dist ) {\\r\\n vec3 vec = direction / dist;\\r\\n float u = ((vec.x * fx) + cx) / imageWidth;\\r\\n float v = ((-vec.y * fy) + cy) / imageHeight;\\r\\n return vec2(u, 1.0 - v);\\r\\n}\\r\\n\\r\\nvoid main() {\\r\\n vec3 direction = normalize(vPosition);\\r\\n float dist = -direction.z;\\r\\n\\r\\n // Image is behind us\\r\\n if (dist <= 0.0) {\\r\\n discard;\\r\\n }\\r\\n\\r\\n vec2 sampleUV = getPixelCoords( direction, dist );\\r\\n\\r\\n bool outOfBounds = (sampleUV.x < 0.0)\\r\\n || (sampleUV.x >= 1.0)\\r\\n || (sampleUV.y <= 0.0)\\r\\n || (sampleUV.y > 1.0);\\r\\n\\r\\n if (outOfBounds) {\\r\\n discard;\\r\\n }\\r\\n\\r\\n gl_FragColor = texture2D(tImage, sampleUV);\\r\\n}\\r\\n\";","export default \"#include \\r\\n#define PRECISION 0.0001\\r\\n\\r\\nuniform sampler2D tImage;\\r\\nuniform sampler2D tDepth;\\r\\n\\r\\nuniform float opacity;\\r\\nuniform float screenWidth;\\r\\nuniform float screenHeight;\\r\\nuniform float near;\\r\\nuniform float far;\\r\\nuniform vec2 neighbours[NEIGHBOUR_COUNT];\\r\\nuniform vec3 lightDir;\\r\\nuniform float edlStrength;\\r\\nuniform float radius;\\r\\n\\r\\nvarying vec2 vUv;\\r\\n\\r\\nfloat linearDepth(sampler2D depthSampler, vec2 coord) {\\r\\n float z_b = texture2D(depthSampler, coord).x;\\r\\n float z_n = 2.0 * z_b - 1.0;\\r\\n float z_e = 2.0 * near * far / (far + near - z_n * (far - near));\\r\\n return z_e;\\r\\n}\\r\\n\\r\\nfloat readDepth(sampler2D depthSampler, vec2 coord) {\\r\\n float depth = log2(linearDepth(depthSampler, coord));\\r\\n return (depth == 1.0) ? 0.0 : depth;\\r\\n}\\r\\n\\r\\nfloat response(float depth){\\r\\n\\tvec2 uvRadius = radius / vec2(screenWidth, screenHeight);\\r\\n\\r\\n\\tfloat sum = 0.0;\\r\\n\\tfor(int i = 0; i < NEIGHBOUR_COUNT; i++){\\r\\n\\t\\tvec2 uvNeighbor = vUv + uvRadius * neighbours[i];\\r\\n\\t\\tfloat neighbourDepth = readDepth(tDepth, uvNeighbor);\\r\\n\\r\\n\\t\\tif(neighbourDepth != 0.0){\\r\\n if (depth == 0.0) {\\r\\n sum += 100.0;\\r\\n } else{\\r\\n sum += max(0.0, depth - neighbourDepth);\\r\\n }\\r\\n\\t\\t}\\r\\n\\t}\\r\\n\\r\\n\\treturn sum / float(NEIGHBOUR_COUNT);\\r\\n}\\r\\n\\r\\nvoid main() {\\r\\n vec4 color = texture2D(tImage, vUv);\\r\\n float alpha = color.a * opacity;\\r\\n\\r\\n float depth = readDepth(tDepth, vUv);\\r\\n float res = response(depth);\\r\\n\\tfloat shade = exp(-res * 10.0 * edlStrength);\\r\\n\\r\\n if (color.a <= PRECISION) {\\r\\n if (res <= PRECISION) discard;\\r\\n alpha = opacity;\\r\\n }\\r\\n\\r\\n gl_FragColor = vec4(color.rgb*shade, alpha);\\r\\n}\\r\\n\";","export default \"uniform sampler2D tCurrent;\\r\\nuniform sampler2D tPrevious;\\r\\nuniform float progress;\\r\\nuniform int transition;\\r\\n\\r\\nvarying vec2 vUv;\\r\\n\\r\\nvec4 getToColor(vec2 uv) {\\r\\n return texture2D(tCurrent, uv);\\r\\n}\\r\\n\\r\\nvec4 getFromColor(vec2 uv) {\\r\\n return texture2D(tPrevious, uv);\\r\\n}\\r\\n\\r\\n/** https://gl-transitions.com/editor/circleopen **/\\r\\nvec4 transitionCircleOpen(vec2 uv) {\\r\\n float smoothness = 0.75;\\r\\n bool opening = true;\\r\\n vec2 center = vec2(0.5, 0.5);\\r\\n float SQRT_2 = 1.414213562373;\\r\\n\\r\\n float x = opening ? progress : 1.-progress;\\r\\n float m = smoothstep(-smoothness, 0.0, SQRT_2*distance(center, uv) - x*(1.+smoothness));\\r\\n return mix(getFromColor(uv), getToColor(uv), opening ? 1.-m : m);\\r\\n}\\r\\n\\r\\n/** https://gl-transitions.com/editor/LinearBlur **/\\r\\nvec4 transitionLinearBlur(vec2 uv) {\\r\\n float intensity = 0.01;\\r\\n int passes = 6;\\r\\n\\r\\n vec4 c1 = vec4(0.0);\\r\\n vec4 c2 = vec4(0.0);\\r\\n\\r\\n float disp = intensity*(0.5-distance(0.5, progress));\\r\\n for (int xi=0; xi