From 95176b8a004b1b9fcad4fd4729c8184161197a40 Mon Sep 17 00:00:00 2001 From: Paul Chavard Date: Fri, 20 Sep 2024 18:22:49 +0200 Subject: [PATCH] chore(maplibre): update --- app/assets/stylesheets/carte.scss | 87 +- .../MapEditor/components/CadastreLayer.tsx | 52 +- .../MapEditor/components/DrawLayer.tsx | 24 +- app/javascript/components/MapEditor/index.tsx | 27 +- app/javascript/components/MapReader/index.tsx | 1 - .../components/shared/maplibre/MapLibre.tsx | 70 +- .../shared/maplibre/StyleControl.tsx | 167 +- .../components/shared/maplibre/hooks.ts | 4 +- .../components/shared/maplibre/styles/base.ts | 32 +- .../shared/maplibre/styles/index.ts | 23 +- .../maplibre/styles/layers/cadastre.json | 106 + .../shared/maplibre/styles/layers/cadastre.ts | 110 - .../shared/maplibre/styles/layers/ign.json | 8 + .../shared/maplibre/styles/layers/ign.ts | 12 - .../shared/maplibre/styles/layers/ortho.json | 2647 +++++++++++++++ .../shared/maplibre/styles/layers/ortho.ts | 2644 --------------- .../shared/maplibre/styles/layers/vector.json | 2866 +++++++++++++++++ .../shared/maplibre/styles/layers/vector.ts | 2844 ---------------- app/javascript/entrypoints/main.css | 1 + bun.lockb | Bin 546444 -> 553868 bytes package.json | 37 +- 21 files changed, 5936 insertions(+), 5826 deletions(-) create mode 100644 app/javascript/components/shared/maplibre/styles/layers/cadastre.json delete mode 100644 app/javascript/components/shared/maplibre/styles/layers/cadastre.ts create mode 100644 app/javascript/components/shared/maplibre/styles/layers/ign.json delete mode 100644 app/javascript/components/shared/maplibre/styles/layers/ign.ts create mode 100644 app/javascript/components/shared/maplibre/styles/layers/ortho.json delete mode 100644 app/javascript/components/shared/maplibre/styles/layers/ortho.ts create mode 100644 app/javascript/components/shared/maplibre/styles/layers/vector.json delete mode 100644 app/javascript/components/shared/maplibre/styles/layers/vector.ts diff --git a/app/assets/stylesheets/carte.scss b/app/assets/stylesheets/carte.scss index a9def4820..372772419 100644 --- a/app/assets/stylesheets/carte.scss +++ b/app/assets/stylesheets/carte.scss @@ -1,6 +1,4 @@ @import "colors"; -@import "constants"; - .areas { margin-bottom: 10px; @@ -10,56 +8,49 @@ } } -.map-style-control { - position: absolute; - bottom: 4px; - left: 10px; +.ds-ctrl button { + color: $dark-grey; - img { - width: 100%; - } - - button { - padding: 0; - border: none; - cursor: pointer; - - > div { - position: absolute; - bottom: 5px; - left: 5px; - } - } - - .map-style-panel { - z-index: 1; - padding: $default-spacer; - margin-bottom: $default-spacer; - - ul { - list-style: none; - padding: $default-spacer; - padding-bottom: 0; - margin-bottom: -$default-spacer; - - label { - font-size: 12px; - font-weight: normal; - } - } + &.on, + &:hover { + background-color: rgba(0, 0, 0, 0.05); } } -.cadastres-selection-control { - z-index: 1; - position: absolute; - top: 135px; - left: 10px; +.react-aria-popover { + &[data-placement='top'] { + --origin: translateY(8px); + } - button { - &.on, - &:hover { - background-color: rgba(0, 0, 0, 0.05); - } + &[data-placement='bottom'] { + --origin: translateY(-8px); + } + + &[data-placement='right'] { + --origin: translateX(-8px); + } + + &[data-placement='left'] { + --origin: translateX(8px); + } + + &[data-entering] { + animation: popover-slide 200ms; + } + + &[data-exiting] { + animation: popover-slide 200ms reverse ease-in; + } +} + +@keyframes popover-slide { + from { + transform: var(--origin); + opacity: 0; + } + + to { + transform: translateY(0); + opacity: 1; } } diff --git a/app/javascript/components/MapEditor/components/CadastreLayer.tsx b/app/javascript/components/MapEditor/components/CadastreLayer.tsx index c8203d032..9b1ac8b5f 100644 --- a/app/javascript/components/MapEditor/components/CadastreLayer.tsx +++ b/app/javascript/components/MapEditor/components/CadastreLayer.tsx @@ -1,7 +1,9 @@ -import { useCallback, useRef } from 'react'; +import { useCallback, useEffect, useRef, useState } from 'react'; +import { createPortal } from 'react-dom'; import type { Feature, FeatureCollection } from 'geojson'; +import { CursorClickIcon } from '@heroicons/react/outline'; -import { useMapLibre } from '../../shared/maplibre/MapLibre'; +import { useMapLibre, ReactControl } from '../../shared/maplibre/MapLibre'; import { useEvent, useMapEvent, @@ -18,15 +20,31 @@ export function CadastreLayer({ featureCollection, createFeatures, deleteFeatures, + toggle, enabled }: { featureCollection: FeatureCollection; createFeatures: CreateFeatures; deleteFeatures: DeleteFeatures; + toggle: () => void; enabled: boolean; }) { const map = useMapLibre(); const selectedCadastresRef = useRef(new Set()); + const [controlElement, setControlElement] = useState( + null + ); + + useEffect(() => { + const control = new ReactControl(); + map.addControl(control, 'top-left'); + setControlElement(control.container); + + return () => { + map.removeControl(control); + setControlElement(null); + }; + }, [map, enabled]); const highlightFeature = useCallback( (cid: string, highlight: boolean) => { @@ -95,7 +113,35 @@ export function CadastreLayer({ useEvent('map:internal:cadastre:highlight', onHighlight); - return null; + return ( + <> + {controlElement != null + ? createPortal( + , + controlElement + ) + : null} + + ); +} + +function CadastreSwitch({ + enabled, + toggle +}: { + enabled: boolean; + toggle: () => void; +}) { + return ( + + ); } function useCadastres( diff --git a/app/javascript/components/MapEditor/components/DrawLayer.tsx b/app/javascript/components/MapEditor/components/DrawLayer.tsx index 63d29767c..cffb87486 100644 --- a/app/javascript/components/MapEditor/components/DrawLayer.tsx +++ b/app/javascript/components/MapEditor/components/DrawLayer.tsx @@ -1,5 +1,5 @@ import { useCallback, useRef, useEffect } from 'react'; -import type { LngLatBoundsLike, LngLatLike } from 'maplibre-gl'; +import type { LngLatBoundsLike, LngLatLike, IControl } from 'maplibre-gl'; import DrawControl from '@mapbox/mapbox-gl-draw'; import type { FeatureCollection, Feature, Point } from 'geojson'; @@ -52,18 +52,14 @@ export function DrawLayer({ }); // We use mapbox-draw plugin with maplibre. They are compatible but types are not. // eslint-disable-next-line @typescript-eslint/no-explicit-any - map.addControl(draw as any, 'top-left'); + const control = draw as any as IControl; + map.addControl(control, 'top-left'); draw.set( filterFeatureCollection(featureCollection, SOURCE_SELECTION_UTILISATEUR) ); drawRef.current = draw; - for (const [selector, translation] of translations) { - const element = document.querySelector(selector); - if (element) { - element.setAttribute('title', translation); - } - } + patchDrawControl(); } return () => { @@ -228,3 +224,15 @@ const translations = [ ['.mapbox-gl-draw_point', 'Ajouter un point'], ['.mapbox-gl-draw_trash', 'Supprimer'] ]; + +function patchDrawControl() { + document.querySelectorAll('.mapboxgl-ctrl').forEach((control) => { + control.classList.add('maplibregl-ctrl', 'maplibregl-ctrl-group'); + + for (const [selector, translation] of translations) { + for (const button of control.querySelectorAll(selector)) { + button.setAttribute('title', translation); + } + } + }); +} diff --git a/app/javascript/components/MapEditor/index.tsx b/app/javascript/components/MapEditor/index.tsx index 5bea4796c..f900e3fac 100644 --- a/app/javascript/components/MapEditor/index.tsx +++ b/app/javascript/components/MapEditor/index.tsx @@ -1,6 +1,4 @@ import { useState } from 'react'; -import { CursorClickIcon } from '@heroicons/react/outline'; -import 'maplibre-gl/dist/maplibre-gl.css'; import '@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css'; import type { FeatureCollection } from 'geojson'; @@ -51,25 +49,12 @@ export default function MapEditor({ enabled={!cadastreEnabled} /> {options.layers.includes('cadastres') ? ( - <> - -
- -
- + setCadastreEnabled((enabled) => !enabled)} + enabled={cadastreEnabled} + /> ) : null} diff --git a/app/javascript/components/MapReader/index.tsx b/app/javascript/components/MapReader/index.tsx index a8662f152..62652708e 100644 --- a/app/javascript/components/MapReader/index.tsx +++ b/app/javascript/components/MapReader/index.tsx @@ -1,4 +1,3 @@ -import 'maplibre-gl/dist/maplibre-gl.css'; import type { FeatureCollection } from 'geojson'; import { MapLibre } from '../shared/maplibre/MapLibre'; diff --git a/app/javascript/components/shared/maplibre/MapLibre.tsx b/app/javascript/components/shared/maplibre/MapLibre.tsx index d160775f8..4a66da89f 100644 --- a/app/javascript/components/shared/maplibre/MapLibre.tsx +++ b/app/javascript/components/shared/maplibre/MapLibre.tsx @@ -8,13 +8,15 @@ import { createContext, useCallback } from 'react'; -import maplibre, { Map, NavigationControl } from 'maplibre-gl'; -import type { Style } from 'maplibre-gl'; +import { createPortal } from 'react-dom'; +import { Map, NavigationControl } from 'maplibre-gl'; +import type { StyleSpecification, IControl } from 'maplibre-gl'; +import 'maplibre-gl/dist/maplibre-gl.css'; import invariant from 'tiny-invariant'; import { useStyle, useElementVisible } from './hooks'; -import { StyleControl } from './StyleControl'; +import { StyleSwitch } from './StyleControl'; const Context = createContext<{ map?: Map | null }>({}); @@ -30,16 +32,15 @@ export function useMapLibre() { } export function MapLibre({ children, layers }: MapLibreProps) { - const isSupported = useMemo( - () => maplibre.supported({ failIfMajorPerformanceCaveat: true }) && !isIE(), - [] - ); + const isSupported = useMemo(() => isWebglSupported(), []); const containerRef = useRef(null); const visible = useElementVisible(containerRef); const [map, setMap] = useState(); + const [styleControlElement, setStyleControlElement] = + useState(null); const onStyleChange = useCallback( - (style: Style) => { + (style: StyleSpecification) => { if (map) { map.setStyle(style); } @@ -56,8 +57,11 @@ export function MapLibre({ children, layers }: MapLibreProps) { style }); map.addControl(new NavigationControl({}), 'top-right'); + const styleControl = new ReactControl(); + map.addControl(styleControl, 'bottom-left'); map.on('load', () => { setMap(map); + setStyleControlElement(styleControl.container); }); } }, [map, style, visible, isSupported]); @@ -91,16 +95,54 @@ export function MapLibre({ children, layers }: MapLibreProps) { return (
- + {styleControlElement != null + ? createPortal( + , + styleControlElement + ) + : null} {map ? children : null}
); } -function isIE() { - const ua = window.navigator.userAgent; - const msie = ua.indexOf('MSIE '); - const trident = ua.indexOf('Trident/'); - return msie > 0 || trident > 0; +function isWebglSupported() { + if (window.WebGLRenderingContext) { + const canvas = document.createElement('canvas'); + try { + // Note that { failIfMajorPerformanceCaveat: true } can be passed as a second argument + // to canvas.getContext(), causing the check to fail if hardware rendering is not available. See + // https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext + // for more details. + const context = canvas.getContext('webgl2') || canvas.getContext('webgl'); + if (context && typeof context.getParameter == 'function') { + return true; + } + } catch (e) { + // WebGL is supported, but disabled + } + return false; + } + // WebGL not supported + return false; +} + +export class ReactControl implements IControl { + #container: HTMLElement | null = null; + + get container(): HTMLElement | null { + return this.#container; + } + + onAdd(): HTMLElement { + this.#container = document.createElement('div'); + this.#container.className = 'maplibregl-ctrl maplibregl-ctrl-group ds-ctrl'; + return this.#container; + } + + onRemove(): void { + this.#container?.remove(); + this.#container = null; + } } diff --git a/app/javascript/components/shared/maplibre/StyleControl.tsx b/app/javascript/components/shared/maplibre/StyleControl.tsx index afd46345c..c844531ed 100644 --- a/app/javascript/components/shared/maplibre/StyleControl.tsx +++ b/app/javascript/components/shared/maplibre/StyleControl.tsx @@ -1,6 +1,5 @@ -import { useState, useId } from 'react'; -import { Popover, RadioGroup } from '@headlessui/react'; -import { usePopper } from 'react-popper'; +import { useId, useRef, useEffect } from 'react'; +import { Button, Dialog, DialogTrigger, Popover } from 'react-aria-components'; import { MapIcon } from '@heroicons/react/outline'; import { Slider } from '@reach/slider'; import '@reach/slider/styles.css'; @@ -13,7 +12,7 @@ const STYLES = { ign: 'Carte IGN' }; -export function StyleControl({ +export function StyleSwitch({ styleId, layers, setStyle, @@ -26,107 +25,97 @@ export function StyleControl({ setLayerEnabled: (layer: string, enabled: boolean) => void; setLayerOpacity: (layer: string, opacity: number) => void; }) { - const [buttonElement, setButtonElement] = - useState(); - const [panelElement, setPanelElement] = useState(); - const { styles, attributes } = usePopper(buttonElement, panelElement, { - placement: 'bottom-end' - }); const configurableLayers = Object.entries(layers).filter( ([, { configurable }]) => configurable ); const mapId = useId(); + const buttonRef = useRef(null); + + useEffect(() => { + if (buttonRef.current) { + buttonRef.current.title = 'Sélectionner les couches cartographiques'; + } + }, []); return ( -
- - - - - - + + + +
event.preventDefault()} > - {Object.entries(STYLES).map(([style, title]) => ( - - {({ checked }) => ( - <> +
+ {Object.entries(STYLES).map(([style, title]) => ( +
+
- - {title.replace(/\s/g, ' ')} - - - )} - - ))} - - {configurableLayers.length ? ( -
    - {configurableLayers.map(([layer, { enabled, opacity, name }]) => ( -
  • -
    - { - setLayerEnabled(layer, event.target.checked); + setStyle(event.target.value); }} /> -
    - { - setLayerOpacity(layer, value); - }} - className="mb-1" - title={`Réglage de l’opacité de la couche «${NBS}${name}${NBS}»`} - getAriaLabel={() => - `Réglage de l’opacité de la couche «${NBS}${name}${NBS}»` - } - getAriaValueText={(value) => - `L’opacité de la couche «${NBS}${name}${NBS}» est à ${value}${NBS}%` - } - /> -
  • +
))} - - ) : null} - +
+ {configurableLayers.length ? ( +
+ {configurableLayers.map( + ([layer, { enabled, opacity, name }]) => ( +
+
+ { + setLayerEnabled(layer, event.target.checked); + }} + /> + +
+ { + setLayerOpacity(layer, value); + }} + className="fr-range fr-range--sm mt-1" + title={`Réglage de l’opacité de la couche «${NBS}${name}${NBS}»`} + getAriaLabel={() => + `Réglage de l’opacité de la couche «${NBS}${name}${NBS}»` + } + getAriaValueText={(value) => + `L’opacité de la couche «${NBS}${name}${NBS}» est à ${value}${NBS}%` + } + /> +
+ ) + )} +
+ ) : null} + +
-
+ ); } diff --git a/app/javascript/components/shared/maplibre/hooks.ts b/app/javascript/components/shared/maplibre/hooks.ts index 84f0542a1..348360146 100644 --- a/app/javascript/components/shared/maplibre/hooks.ts +++ b/app/javascript/components/shared/maplibre/hooks.ts @@ -9,7 +9,7 @@ import type { LngLatBoundsLike, LngLat, MapLayerEventType, - Style, + StyleSpecification, LngLatLike } from 'maplibre-gl'; import type { Feature, Geometry } from 'geojson'; @@ -104,7 +104,7 @@ function optionalLayersMap(optionalLayers: string[]): LayersMap { export function useStyle( optionalLayers: string[], - onStyleChange: (style: Style) => void + onStyleChange: (style: StyleSpecification) => void ) { const [styleId, setStyle] = useState('ortho'); const [layers, setLayers] = useState(() => optionalLayersMap(optionalLayers)); diff --git a/app/javascript/components/shared/maplibre/styles/base.ts b/app/javascript/components/shared/maplibre/styles/base.ts index 3400a6c09..8ed1eef44 100644 --- a/app/javascript/components/shared/maplibre/styles/base.ts +++ b/app/javascript/components/shared/maplibre/styles/base.ts @@ -1,7 +1,12 @@ -import type { AnyLayer, Style, RasterLayer, RasterSource } from 'maplibre-gl'; +import type { + LayerSpecification, + RasterLayerSpecification, + RasterSourceSpecification, + StyleSpecification +} from 'maplibre-gl'; import invariant from 'tiny-invariant'; -import cadastreLayers from './layers/cadastre'; +import cadastreLayers from './layers/cadastre.json'; function ignServiceURL(layer: string, style: string, format = 'image/png') { const url = `https://data.geopf.fr/wmts`; @@ -163,7 +168,10 @@ function buildSources() { ); } -function rasterSource(tiles: string[], attribution: string): RasterSource { +function rasterSource( + tiles: string[], + attribution: string +): RasterSourceSpecification { return { type: 'raster', tiles, @@ -174,7 +182,10 @@ function rasterSource(tiles: string[], attribution: string): RasterSource { }; } -function rasterLayer(source: string, opacity: number): RasterLayer { +function rasterLayer( + source: string, + opacity: number +): RasterLayerSpecification { return { id: source, source, @@ -186,14 +197,14 @@ function rasterLayer(source: string, opacity: number): RasterLayer { export function buildOptionalLayers( ids: string[], opacity: Record -): AnyLayer[] { +): LayerSpecification[] { return OPTIONAL_LAYERS.filter(({ id }) => ids.includes(id)) .flatMap(({ layers, id }) => layers.map(([, code]) => [code, opacity[id] / 100] as const) ) .flatMap(([code, opacity]) => code === 'CADASTRE' - ? cadastreLayers + ? (cadastreLayers as LayerSpecification[]) : [rasterLayer(getLayerCode(code), opacity)] ); } @@ -210,9 +221,9 @@ function getLayerCode(code: string) { return code.toLowerCase().replace(/\./g, '-'); } -export default { +export const style: StyleSpecification = { version: 8, - metadat: { + metadata: { 'mapbox:autocomposite': false, 'mapbox:groups': { 1444849242106.713: { collapsed: false, name: 'Places' }, @@ -257,5 +268,6 @@ export default { ...buildSources() }, sprite: 'https://openmaptiles.github.io/osm-bright-gl-style/sprite', - glyphs: 'https://openmaptiles.geo.data.gouv.fr/fonts/{fontstack}/{range}.pbf' -} as Style; + glyphs: 'https://openmaptiles.geo.data.gouv.fr/fonts/{fontstack}/{range}.pbf', + layers: [] +}; diff --git a/app/javascript/components/shared/maplibre/styles/index.ts b/app/javascript/components/shared/maplibre/styles/index.ts index b7d865e29..1b9088861 100644 --- a/app/javascript/components/shared/maplibre/styles/index.ts +++ b/app/javascript/components/shared/maplibre/styles/index.ts @@ -1,9 +1,14 @@ -import type { Style } from 'maplibre-gl'; +import type { LayerSpecification, StyleSpecification } from 'maplibre-gl'; -import baseStyle, { buildOptionalLayers, getLayerName, NBS } from './base'; -import orthoStyle from './layers/ortho'; -import vectorStyle from './layers/vector'; -import ignLayers from './layers/ign'; +import { + style as baseStyle, + buildOptionalLayers, + getLayerName, + NBS +} from './base'; +import ignLayers from './layers/ign.json'; +import orthoLayers from './layers/ortho.json'; +import vectorLayers from './layers/vector.json'; export { getLayerName, NBS }; @@ -21,20 +26,20 @@ export function getMapStyle( id: string, layers: string[], opacity: Record -): Style & { id: string } { +): StyleSpecification & { id: string } { const style = { ...baseStyle, id }; switch (id) { case 'ortho': - style.layers = orthoStyle; + style.layers = orthoLayers as LayerSpecification[]; style.name = 'Photographies aériennes'; break; case 'vector': - style.layers = vectorStyle; + style.layers = vectorLayers as LayerSpecification[]; style.name = 'Carte OSM'; break; case 'ign': - style.layers = ignLayers; + style.layers = ignLayers as LayerSpecification[]; style.name = 'Carte IGN'; break; } diff --git a/app/javascript/components/shared/maplibre/styles/layers/cadastre.json b/app/javascript/components/shared/maplibre/styles/layers/cadastre.json new file mode 100644 index 000000000..e72c332a2 --- /dev/null +++ b/app/javascript/components/shared/maplibre/styles/layers/cadastre.json @@ -0,0 +1,106 @@ +[ + { + "id": "batiments-line", + "type": "line", + "source": "cadastre", + "source-layer": "batiments", + "minzoom": 16, + "maxzoom": 22, + "layout": { "visibility": "visible" }, + "paint": { + "line-opacity": 1, + "line-color": "rgba(0, 0, 0, 1)", + "line-width": 1 + } + }, + { + "id": "batiments-fill", + "type": "fill", + "source": "cadastre", + "source-layer": "batiments", + "layout": { "visibility": "visible" }, + "paint": { + "fill-color": "rgba(150, 150, 150, 1)", + "fill-opacity": { + "stops": [ + [16, 0], + [17, 0.6] + ] + }, + "fill-antialias": true + } + }, + { + "id": "parcelles", + "type": "line", + "source": "cadastre", + "source-layer": "parcelles", + "minzoom": 15.5, + "maxzoom": 24, + "layout": { + "visibility": "visible", + "line-cap": "butt", + "line-join": "miter", + "line-miter-limit": 2 + }, + "paint": { + "line-color": "rgba(255, 255, 255, 1)", + "line-opacity": 0.8, + "line-width": { + "stops": [ + [16, 1.5], + [17, 2] + ] + }, + "line-offset": 0, + "line-blur": 0, + "line-translate": [0, 1], + "line-dasharray": [1], + "line-gap-width": 0 + } + }, + { + "id": "parcelles-fill", + "type": "fill", + "source": "cadastre", + "source-layer": "parcelles", + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "rgba(129, 123, 0, 1)", + "fill-opacity": [ + "case", + ["boolean", ["feature-state", "hover"], false], + 0.7, + 0.1 + ] + } + }, + { + "id": "parcelle-highlighted", + "type": "fill", + "source": "cadastre", + "source-layer": "parcelles", + "filter": ["in", "id", ""], + "paint": { + "fill-color": "rgba(1, 129, 0, 1)", + "fill-opacity": 0.7 + } + }, + { + "id": "sections", + "type": "line", + "source": "cadastre", + "source-layer": "sections", + "minzoom": 12, + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "rgba(0, 0, 0, 1)", + "line-opacity": 0.7, + "line-width": 2, + "line-dasharray": [3, 3], + "line-translate": [0, 0] + } + } +] diff --git a/app/javascript/components/shared/maplibre/styles/layers/cadastre.ts b/app/javascript/components/shared/maplibre/styles/layers/cadastre.ts deleted file mode 100644 index 4ef68ed6b..000000000 --- a/app/javascript/components/shared/maplibre/styles/layers/cadastre.ts +++ /dev/null @@ -1,110 +0,0 @@ -import type { AnyLayer } from 'maplibre-gl'; - -const layers: AnyLayer[] = [ - { - id: 'batiments-line', - type: 'line', - source: 'cadastre', - 'source-layer': 'batiments', - minzoom: 16, - maxzoom: 22, - layout: { visibility: 'visible' }, - paint: { - 'line-opacity': 1, - 'line-color': 'rgba(0, 0, 0, 1)', - 'line-width': 1 - } - }, - { - id: 'batiments-fill', - type: 'fill', - source: 'cadastre', - 'source-layer': 'batiments', - layout: { visibility: 'visible' }, - paint: { - 'fill-color': 'rgba(150, 150, 150, 1)', - 'fill-opacity': { - stops: [ - [16, 0], - [17, 0.6] - ] - }, - 'fill-antialias': true - } - }, - { - id: 'parcelles', - type: 'line', - source: 'cadastre', - 'source-layer': 'parcelles', - minzoom: 15.5, - maxzoom: 24, - layout: { - visibility: 'visible', - 'line-cap': 'butt', - 'line-join': 'miter', - 'line-miter-limit': 2 - }, - paint: { - 'line-color': 'rgba(255, 255, 255, 1)', - 'line-opacity': 0.8, - 'line-width': { - stops: [ - [16, 1.5], - [17, 2] - ] - }, - 'line-offset': 0, - 'line-blur': 0, - 'line-translate': [0, 1], - 'line-dasharray': [1], - 'line-gap-width': 0 - } - }, - { - id: 'parcelles-fill', - type: 'fill', - source: 'cadastre', - 'source-layer': 'parcelles', - layout: { - visibility: 'visible' - }, - paint: { - 'fill-color': 'rgba(129, 123, 0, 1)', - 'fill-opacity': [ - 'case', - ['boolean', ['feature-state', 'hover'], false], - 0.7, - 0.1 - ] - } - }, - { - id: 'parcelle-highlighted', - type: 'fill', - source: 'cadastre', - 'source-layer': 'parcelles', - filter: ['in', 'id', ''], - paint: { - 'fill-color': 'rgba(1, 129, 0, 1)', - 'fill-opacity': 0.7 - } - }, - { - id: 'sections', - type: 'line', - source: 'cadastre', - 'source-layer': 'sections', - minzoom: 12, - layout: { visibility: 'visible' }, - paint: { - 'line-color': 'rgba(0, 0, 0, 1)', - 'line-opacity': 0.7, - 'line-width': 2, - 'line-dasharray': [3, 3], - 'line-translate': [0, 0] - } - } -]; - -export default layers; diff --git a/app/javascript/components/shared/maplibre/styles/layers/ign.json b/app/javascript/components/shared/maplibre/styles/layers/ign.json new file mode 100644 index 000000000..eb582b2af --- /dev/null +++ b/app/javascript/components/shared/maplibre/styles/layers/ign.json @@ -0,0 +1,8 @@ +[ + { + "id": "ign", + "source": "plan-ign", + "type": "raster", + "paint": { "raster-resampling": "linear" } + } +] diff --git a/app/javascript/components/shared/maplibre/styles/layers/ign.ts b/app/javascript/components/shared/maplibre/styles/layers/ign.ts deleted file mode 100644 index 545d41911..000000000 --- a/app/javascript/components/shared/maplibre/styles/layers/ign.ts +++ /dev/null @@ -1,12 +0,0 @@ -import type { RasterLayer } from 'maplibre-gl'; - -const layers: RasterLayer[] = [ - { - id: 'ign', - source: 'plan-ign', - type: 'raster', - paint: { 'raster-resampling': 'linear' } - } -]; - -export default layers; diff --git a/app/javascript/components/shared/maplibre/styles/layers/ortho.json b/app/javascript/components/shared/maplibre/styles/layers/ortho.json new file mode 100644 index 000000000..c8c3f0334 --- /dev/null +++ b/app/javascript/components/shared/maplibre/styles/layers/ortho.json @@ -0,0 +1,2647 @@ +[ + { + "id": "photographies-aeriennes", + "type": "raster", + "source": "photographies-aeriennes", + "paint": { "raster-resampling": "linear" } + }, + { + "id": "communes", + "type": "line", + "source": "decoupage-administratif", + "source-layer": "communes", + "minzoom": 10, + "maxzoom": 24, + "filter": ["all"], + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "rgba(0, 0, 0, 1)", + "line-width": 1.5, + "line-opacity": 1, + "line-blur": 0 + } + }, + { + "id": "departements", + "type": "line", + "source": "decoupage-administratif", + "source-layer": "departements", + "minzoom": 0, + "maxzoom": 24, + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "rgba(0, 0, 0, 1)", + "line-width": 1, + "line-opacity": 1 + } + }, + { + "id": "regions", + "type": "line", + "source": "decoupage-administratif", + "source-layer": "regions", + "minzoom": 0, + "maxzoom": 24, + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "rgba(0, 0, 0, 1)", + "line-width": 1, + "line-opacity": 1 + } + }, + { + "id": "waterway_tunnel", + "type": "line", + "source": "openmaptiles", + "source-layer": "waterway", + "minzoom": 14, + "filter": [ + "all", + ["in", "class", "river", "stream", "canal"], + ["==", "brunnel", "tunnel"] + ], + "layout": { "line-cap": "round", "visibility": "none" }, + "paint": { + "line-color": "#a0c8f0", + "line-dasharray": [2, 4], + "line-width": { + "base": 1.3, + "stops": [ + [13, 0.5], + [20, 6] + ] + } + } + }, + { + "id": "waterway-other", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["!in", "class", "canal", "river", "stream"], + ["==", "intermittent", 0] + ], + "layout": { "line-cap": "round", "visibility": "none" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, + "stops": [ + [13, 0.5], + [20, 2] + ] + } + } + }, + { + "id": "waterway-other-intermittent", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["!in", "class", "canal", "river", "stream"], + ["==", "intermittent", 1] + ], + "layout": { "line-cap": "round", "visibility": "none" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, + "stops": [ + [13, 0.5], + [20, 2] + ] + }, + "line-dasharray": [4, 3] + } + }, + { + "id": "waterway-stream-canal", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["in", "class", "canal", "stream"], + ["!=", "brunnel", "tunnel"], + ["==", "intermittent", 0] + ], + "layout": { "line-cap": "round", "visibility": "none" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, + "stops": [ + [13, 0.5], + [20, 6] + ] + } + } + }, + { + "id": "waterway-stream-canal-intermittent", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["in", "class", "canal", "stream"], + ["!=", "brunnel", "tunnel"], + ["==", "intermittent", 1] + ], + "layout": { "line-cap": "round", "visibility": "none" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, + "stops": [ + [13, 0.5], + [20, 6] + ] + }, + "line-dasharray": [4, 3] + } + }, + { + "id": "waterway-river", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["==", "class", "river"], + ["!=", "brunnel", "tunnel"], + ["==", "intermittent", 0] + ], + "layout": { "line-cap": "round", "visibility": "none" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.2, + "stops": [ + [10, 0.8], + [20, 6] + ] + } + } + }, + { + "id": "waterway-river-intermittent", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["==", "class", "river"], + ["!=", "brunnel", "tunnel"], + ["==", "intermittent", 1] + ], + "layout": { "line-cap": "round", "visibility": "none" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.2, + "stops": [ + [10, 0.8], + [20, 6] + ] + }, + "line-dasharray": [3, 2.5] + } + }, + { + "id": "tunnel-service-track-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "service", "track"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#cfcdca", + "line-dasharray": [0.5, 0.25], + "line-width": { + "base": 1.2, + "stops": [ + [15, 1], + [16, 4], + [20, 11] + ] + } + } + }, + { + "id": "tunnel-minor-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "tunnel"], ["==", "class", "minor"]], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#cfcdca", + "line-opacity": { + "stops": [ + [12, 0], + [12.5, 1] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [12, 0.5], + [13, 1], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "tunnel-secondary-tertiary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [8, 1.5], + [20, 17] + ] + } + } + }, + { + "id": "tunnel-trunk-primary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "primary", "trunk"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [5, 0.4], + [6, 0.6], + [7, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "tunnel-motorway-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "tunnel"], ["==", "class", "motorway"]], + "layout": { "line-join": "round", "visibility": "visible" }, + "paint": { + "line-color": "#e9ac77", + "line-dasharray": [0.5, 0.25], + "line-width": { + "base": 1.2, + "stops": [ + [5, 0.4], + [6, 0.6], + [7, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "tunnel-path", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "brunnel", "tunnel"], ["==", "class", "path"]] + ], + "paint": { + "line-color": "#cba", + "line-dasharray": [1.5, 0.75], + "line-width": { + "base": 1.2, + "stops": [ + [15, 1.2], + [20, 4] + ] + } + } + }, + { + "id": "tunnel-service-track", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "service", "track"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [15.5, 0], + [16, 2], + [20, 7.5] + ] + } + } + }, + { + "id": "tunnel-minor", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["==", "class", "minor_road"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fff", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [13.5, 0], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "tunnel-secondary-tertiary", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fff4c6", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 10] + ] + } + } + }, + { + "id": "tunnel-trunk-primary", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "primary", "trunk"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fff4c6", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + } + } + }, + { + "id": "tunnel-motorway", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "tunnel"], ["==", "class", "motorway"]], + "layout": { "line-join": "round", "visibility": "visible" }, + "paint": { + "line-color": "#ffdaa6", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + } + } + }, + { + "id": "tunnel-railway", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "tunnel"], ["==", "class", "rail"]], + "paint": { + "line-color": "#bbb", + "line-dasharray": [2, 2], + "line-width": { + "base": 1.4, + "stops": [ + [14, 0.4], + [15, 0.75], + [20, 2] + ] + } + } + }, + { + "id": "ferry", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["in", "class", "ferry"]], + "layout": { "line-join": "round", "visibility": "visible" }, + "paint": { + "line-color": "rgba(108, 159, 182, 1)", + "line-dasharray": [2, 2], + "line-width": 1.1 + } + }, + { + "id": "aeroway-taxiway-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "aeroway", + "minzoom": 12, + "filter": ["all", ["in", "class", "taxiway"]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(153, 153, 153, 1)", + "line-opacity": 1, + "line-width": { + "base": 1.5, + "stops": [ + [11, 2], + [17, 12] + ] + } + } + }, + { + "id": "aeroway-runway-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "aeroway", + "minzoom": 12, + "filter": ["all", ["in", "class", "runway"]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(153, 153, 153, 1)", + "line-opacity": 0.2, + "line-width": { + "base": 1.5, + "stops": [ + [11, 5], + [17, 55] + ] + } + } + }, + { + "id": "aeroway-taxiway", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "aeroway", + "minzoom": 4, + "filter": [ + "all", + ["in", "class", "taxiway"], + ["==", "$type", "LineString"] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(255, 255, 255, 1)", + "line-opacity": { + "base": 1, + "stops": [ + [11, 0], + [12, 1] + ] + }, + "line-width": { + "base": 1.5, + "stops": [ + [11, 1], + [17, 10] + ] + } + } + }, + { + "id": "aeroway-runway", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "aeroway", + "minzoom": 4, + "filter": ["all", ["in", "class", "runway"], ["==", "$type", "LineString"]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(255, 255, 255, 1)", + "line-opacity": { + "base": 1, + "stops": [ + [11, 0], + [12, 0.2] + ] + }, + "line-width": { + "base": 1.5, + "stops": [ + [11, 4], + [17, 50] + ] + } + } + }, + { + "id": "road_area_pier", + "type": "fill", + "metadata": {}, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "$type", "Polygon"], ["==", "class", "pier"]], + "layout": { "visibility": "visible" }, + "paint": { "fill-antialias": true, "fill-color": "#f8f4f0" } + }, + { + "id": "road_pier", + "type": "line", + "metadata": {}, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "$type", "LineString"], ["in", "class", "pier"]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#f8f4f0", + "line-width": { + "base": 1.2, + "stops": [ + [15, 1], + [17, 4] + ] + } + } + }, + { + "id": "highway-area", + "type": "fill", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "$type", "Polygon"], ["!in", "class", "pier"]], + "layout": { "visibility": "visible" }, + "paint": { + "fill-antialias": false, + "fill-color": "hsla(0, 0%, 89%, 0.56)", + "fill-opacity": { + "stops": [ + [15, 0], + [16, 0.9] + ] + }, + "fill-outline-color": "#cfcdca" + } + }, + { + "id": "highway-motorway-link-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 12, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "motorway_link"] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [12, 1], + [13, 3], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "highway-link-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 13, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + [ + "in", + "class", + "primary_link", + "secondary_link", + "tertiary_link", + "trunk_link" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [12, 1], + [13, 3], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "highway-minor-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!=", "brunnel", "tunnel"], + ["in", "class", "minor", "service", "track"] + ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-color": "#cfcdca", + "line-opacity": { + "stops": [ + [14, 0], + [15, 0.5] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [15, 0.5], + [16, 5] + ] + } + } + }, + { + "id": "highway-secondary-tertiary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": { + "stops": [ + [15, 0], + [16, 0.3] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [8, 1.5], + [20, 17] + ] + } + } + }, + { + "id": "highway-primary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 5, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["in", "class", "primary"] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": { + "stops": [ + [16, 0], + [17, 0.3] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [7, 0], + [8, 0.6], + [9, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "highway-trunk-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 5, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["in", "class", "trunk"] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": { + "stops": [ + [16, 0], + [17, 0.3] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [5, 0], + [6, 0.6], + [7, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "highway-motorway-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 4, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "motorway"] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": { + "stops": [ + [8, 0], + [9, 0.2] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [4, 0], + [5, 0.4], + [6, 0.6], + [7, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "highway-path", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["!in", "brunnel", "bridge", "tunnel"], ["==", "class", "path"]] + ], + "layout": { "visibility": "none" }, + "paint": { + "line-color": "#cba", + "line-dasharray": [1.5, 0.75], + "line-width": { + "base": 1.2, + "stops": [ + [15, 1.2], + [20, 4] + ] + } + } + }, + { + "id": "highway-motorway-link", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 12, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "motorway_link"] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [12.5, 0], + [13, 1.5], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "highway-link", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 13, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + [ + "in", + "class", + "primary_link", + "secondary_link", + "tertiary_link", + "trunk_link" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [12.5, 0], + [13, 1.5], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "highway-minor", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!=", "brunnel", "tunnel"], + ["in", "class", "minor", "service", "track"] + ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-color": "#fff", + "line-opacity": { + "stops": [ + [16, 0], + [17, 0.4] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [16, 0], + [17, 2.5] + ] + } + } + }, + { + "id": "highway-secondary-tertiary", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [8, 0.5], + [20, 13] + ] + }, + "line-opacity": { + "stops": [ + [11, 0], + [13, 0.3] + ] + } + } + }, + { + "id": "highway-primary", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["in", "class", "primary"] + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [8.5, 0], + [9, 0.5], + [20, 18] + ] + }, + "line-opacity": { + "stops": [ + [8, 0], + [9, 0.3] + ] + } + } + }, + { + "id": "highway-trunk", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["!in", "brunnel", "bridge", "tunnel"], ["in", "class", "trunk"]] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + }, + "line-opacity": { + "stops": [ + [16, 0], + [17, 0.3] + ] + } + } + }, + { + "id": "highway-motorway", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 5, + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "motorway"] + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + }, + "line-opacity": { + "stops": [ + [8, 0], + [9, 0.2] + ] + } + } + }, + { + "id": "railway-transit", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "class", "transit"], ["!in", "brunnel", "tunnel"]] + ], + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "hsla(0, 0%, 73%, 0.77)", + "line-width": { + "base": 1.4, + "stops": [ + [14, 0.4], + [20, 1] + ] + } + } + }, + { + "id": "railway-transit-hatching", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "class", "transit"], ["!in", "brunnel", "tunnel"]] + ], + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "hsla(0, 0%, 73%, 0.68)", + "line-dasharray": [0.2, 8], + "line-width": { + "base": 1.4, + "stops": [ + [14.5, 0], + [15, 2], + [20, 6] + ] + } + } + }, + { + "id": "railway-service", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "class", "rail"], ["has", "service"]] + ], + "paint": { + "line-color": "hsla(0, 0%, 73%, 0.77)", + "line-width": { + "base": 1.4, + "stops": [ + [14, 0.4], + [20, 1] + ] + } + } + }, + { + "id": "railway-service-hatching", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "class", "rail"], ["has", "service"]] + ], + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "hsla(0, 0%, 73%, 0.68)", + "line-dasharray": [0.2, 8], + "line-width": { + "base": 1.4, + "stops": [ + [14.5, 0], + [15, 2], + [20, 6] + ] + } + } + }, + { + "id": "railway", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!has", "service"], + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "rail"] + ] + ], + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [14, 0.4], + [15, 0.75], + [20, 2] + ] + }, + "line-opacity": { + "stops": [ + [11, 0], + [13, 1] + ] + } + } + }, + { + "id": "railway-hatching", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!has", "service"], + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "rail"] + ] + ], + "paint": { + "line-color": "#bbb", + "line-dasharray": [0.2, 8], + "line-width": { + "base": 1.4, + "stops": [ + [14.5, 0], + [15, 3], + [20, 8] + ] + } + } + }, + { + "id": "bridge-motorway-link-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["==", "class", "motorway_link"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [12, 1], + [13, 3], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "bridge-link-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + [ + "in", + "class", + "primary_link", + "secondary_link", + "tertiary_link", + "trunk_link" + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [12, 1], + [13, 3], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "bridge-secondary-tertiary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 0.3, + "line-width": { + "base": 1.2, + "stops": [ + [8, 1.5], + [20, 28] + ] + } + } + }, + { + "id": "bridge-trunk-primary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["in", "class", "primary", "trunk"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "hsl(28, 76%, 67%)", + "line-width": { + "base": 1.2, + "stops": [ + [5, 0.4], + [6, 0.6], + [7, 1.5], + [20, 26] + ] + }, + "line-opacity": 0.3 + } + }, + { + "id": "bridge-motorway-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "bridge"], ["==", "class", "motorway"]], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [5, 0.4], + [6, 0.6], + [7, 1.5], + [20, 22] + ] + }, + "line-opacity": { + "stops": [ + [16, 0], + [17, 0.3] + ] + } + } + }, + { + "id": "bridge-path-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "brunnel", "bridge"], ["==", "class", "path"]] + ], + "paint": { + "line-color": "#f8f4f0", + "line-width": { + "base": 1.2, + "stops": [ + [15, 1.2], + [20, 18] + ] + } + } + }, + { + "id": "bridge-path", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "brunnel", "bridge"], ["==", "class", "path"]] + ], + "paint": { + "line-color": "#cba", + "line-dasharray": [1.5, 0.75], + "line-width": { + "base": 1.2, + "stops": [ + [15, 1.2], + [20, 4] + ] + } + } + }, + { + "id": "bridge-motorway-link", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["==", "class", "motorway_link"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [12.5, 0], + [13, 1.5], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "bridge-link", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + [ + "in", + "class", + "primary_link", + "secondary_link", + "tertiary_link", + "trunk_link" + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [12.5, 0], + [13, 1.5], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "bridge-secondary-tertiary", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 20] + ] + }, + "line-opacity": { + "stops": [ + [16, 0], + [17, 0.3] + ] + } + } + }, + { + "id": "bridge-trunk-primary", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["in", "class", "primary", "trunk"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + }, + "line-opacity": 0.3 + } + }, + { + "id": "bridge-motorway", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "bridge"], ["==", "class", "motorway"]], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + }, + "line-opacity": 0.3 + } + }, + { + "id": "bridge-railway", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "bridge"], ["==", "class", "rail"]], + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [14, 0.4], + [15, 0.75], + [20, 2] + ] + } + } + }, + { + "id": "bridge-railway-hatching", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "bridge"], ["==", "class", "rail"]], + "paint": { + "line-color": "#bbb", + "line-dasharray": [0.2, 8], + "line-width": { + "base": 1.4, + "stops": [ + [14.5, 0], + [15, 3], + [20, 8] + ] + } + } + }, + { + "id": "cablecar", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 13, + "filter": ["==", "class", "cable_car"], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "hsl(0, 0%, 70%)", + "line-width": { + "base": 1, + "stops": [ + [11, 1], + [19, 2.5] + ] + } + } + }, + { + "id": "cablecar-dash", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 13, + "filter": ["==", "class", "cable_car"], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "hsl(0, 0%, 70%)", + "line-dasharray": [2, 3], + "line-width": { + "base": 1, + "stops": [ + [11, 3], + [19, 5.5] + ] + } + } + }, + { + "id": "boundary-land-level-4", + "type": "line", + "source": "openmaptiles", + "source-layer": "boundary", + "filter": [ + "all", + [">=", "admin_level", 4], + ["<=", "admin_level", 8], + ["!=", "maritime", 1] + ], + "layout": { "line-join": "round", "visibility": "none" }, + "paint": { + "line-color": "#9e9cab", + "line-dasharray": [3, 1, 1, 1], + "line-width": { + "base": 1.4, + "stops": [ + [4, 0.4], + [5, 1], + [12, 3] + ] + } + } + }, + { + "id": "boundary-land-level-2", + "type": "line", + "source": "openmaptiles", + "source-layer": "boundary", + "filter": [ + "all", + ["==", "admin_level", 2], + ["!=", "maritime", 1], + ["!=", "disputed", 1] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "none" + }, + "paint": { + "line-color": "hsl(248, 7%, 66%)", + "line-width": { + "base": 1, + "stops": [ + [0, 0.6], + [4, 1.4], + [5, 2], + [12, 8] + ] + } + } + }, + { + "id": "boundary-land-disputed", + "type": "line", + "source": "openmaptiles", + "source-layer": "boundary", + "filter": ["all", ["!=", "maritime", 1], ["==", "disputed", 1]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "none" + }, + "paint": { + "line-color": "hsl(248, 7%, 70%)", + "line-dasharray": [1, 3], + "line-width": { + "base": 1, + "stops": [ + [0, 0.6], + [4, 1.4], + [5, 2], + [12, 8] + ] + } + } + }, + { + "id": "boundary-water", + "type": "line", + "source": "openmaptiles", + "source-layer": "boundary", + "filter": ["all", ["in", "admin_level", 2, 4], ["==", "maritime", 1]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(154, 189, 214, 1)", + "line-opacity": { + "stops": [ + [6, 0.6], + [10, 1] + ] + }, + "line-width": { + "base": 1, + "stops": [ + [0, 0.6], + [4, 1.4], + [5, 2], + [12, 8] + ] + } + } + }, + { + "id": "water-name-lakeline", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "water_name", + "filter": ["==", "$type", "LineString"], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 350, + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Italic"], + "text-letter-spacing": 0.2, + "text-max-width": 5, + "text-rotation-alignment": "map", + "text-size": 14 + }, + "paint": { + "text-color": "#74aee9", + "text-halo-color": "rgba(255,255,255,0.7)", + "text-halo-width": 1.5 + } + }, + { + "id": "water-name-ocean", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "water_name", + "filter": ["all", ["==", "$type", "Point"], ["==", "class", "ocean"]], + "layout": { + "symbol-placement": "point", + "symbol-spacing": 350, + "text-field": "{name:latin}", + "text-font": ["Noto Sans Italic"], + "text-letter-spacing": 0.2, + "text-max-width": 5, + "text-rotation-alignment": "map", + "text-size": 14 + }, + "paint": { + "text-color": "#74aee9", + "text-halo-color": "rgba(255,255,255,0.7)", + "text-halo-width": 1.5 + } + }, + { + "id": "water-name-other", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "water_name", + "filter": ["all", ["==", "$type", "Point"], ["!in", "class", "ocean"]], + "layout": { + "symbol-placement": "point", + "symbol-spacing": 350, + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Italic"], + "text-letter-spacing": 0.2, + "text-max-width": 5, + "text-rotation-alignment": "map", + "text-size": { + "stops": [ + [0, 10], + [6, 14] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "rgba(0, 51, 178, 1)", + "text-halo-color": "rgba(255, 255, 255, 1)", + "text-halo-width": 1.5 + } + }, + { + "id": "road_oneway", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 15, + "filter": [ + "all", + ["==", "oneway", 1], + [ + "in", + "class", + "motorway", + "trunk", + "primary", + "secondary", + "tertiary", + "minor", + "service" + ] + ], + "layout": { + "icon-image": "oneway", + "icon-padding": 2, + "icon-rotate": 90, + "icon-rotation-alignment": "map", + "icon-size": { + "stops": [ + [15, 0.5], + [19, 1] + ] + }, + "symbol-placement": "line", + "symbol-spacing": 75, + "visibility": "visible" + }, + "paint": { "icon-opacity": 0.5 } + }, + { + "id": "road_oneway_opposite", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 15, + "filter": [ + "all", + ["==", "oneway", -1], + [ + "in", + "class", + "motorway", + "trunk", + "primary", + "secondary", + "tertiary", + "minor", + "service" + ] + ], + "layout": { + "icon-image": "oneway", + "icon-padding": 2, + "icon-rotate": -90, + "icon-rotation-alignment": "map", + "icon-size": { + "stops": [ + [15, 0.5], + [19, 1] + ] + }, + "symbol-placement": "line", + "symbol-spacing": 75, + "visibility": "visible" + }, + "paint": { "icon-opacity": 0.5 } + }, + { + "id": "highway-name-path", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 15.5, + "filter": ["==", "class", "path"], + "layout": { + "symbol-placement": "line", + "text-field": "{name:latin} {name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "map", + "text-size": { + "base": 1, + "stops": [ + [13, 12], + [14, 13] + ] + } + }, + "paint": { + "text-color": "rgba(171, 86, 0, 1)", + "text-halo-color": "#f8f4f0", + "text-halo-width": 2 + } + }, + { + "id": "highway-name-minor", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 15, + "filter": [ + "all", + ["==", "$type", "LineString"], + ["in", "class", "minor", "service", "track"] + ], + "layout": { + "symbol-placement": "line", + "text-field": "{name:latin} {name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "map", + "text-size": { + "base": 1, + "stops": [ + [13, 12], + [14, 13] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "rgba(143, 69, 0, 1)", + "text-halo-blur": 0.5, + "text-halo-width": 2, + "text-halo-color": "rgba(255, 255, 255, 1)" + } + }, + { + "id": "highway-name-major", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 12.2, + "filter": ["in", "class", "primary", "secondary", "tertiary", "trunk"], + "layout": { + "symbol-placement": "line", + "text-field": "{name:latin} {name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "map", + "text-size": { + "base": 1, + "stops": [ + [13, 12], + [14, 13] + ] + }, + "visibility": "visible", + "symbol-z-order": "source" + }, + "paint": { + "text-color": "rgba(0, 0, 0, 1)", + "text-halo-blur": 0.5, + "text-halo-width": 1, + "text-halo-color": "rgba(255, 255, 255, 1)" + } + }, + { + "id": "highway-shield-us-interstate", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 7, + "filter": [ + "all", + ["<=", "ref_length", 6], + ["==", "$type", "LineString"], + ["in", "network", "us-interstate"] + ], + "layout": { + "icon-image": "{network}_{ref_length}", + "icon-rotation-alignment": "viewport", + "icon-size": 1, + "symbol-placement": { + "base": 1, + "stops": [ + [7, "point"], + [7, "line"], + [8, "line"] + ] + }, + "symbol-spacing": 200, + "text-field": "{ref}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "viewport", + "text-size": 10 + }, + "paint": { "text-color": "rgba(0, 0, 0, 1)" } + }, + { + "id": "highway-shield-us-other", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 9, + "filter": [ + "all", + ["<=", "ref_length", 6], + ["==", "$type", "LineString"], + ["in", "network", "us-highway", "us-state"] + ], + "layout": { + "icon-image": "{network}_{ref_length}", + "icon-rotation-alignment": "viewport", + "icon-size": 1, + "symbol-placement": { + "base": 1, + "stops": [ + [10, "point"], + [11, "line"] + ] + }, + "symbol-spacing": 200, + "text-field": "{ref}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "viewport", + "text-size": 10 + }, + "paint": { "text-color": "rgba(0, 0, 0, 1)" } + }, + { + "id": "highway-shield", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 8, + "filter": [ + "all", + ["<=", "ref_length", 6], + ["==", "$type", "LineString"], + ["!in", "network", "us-interstate", "us-highway", "us-state"] + ], + "layout": { + "icon-image": "road_{ref_length}", + "icon-rotation-alignment": "viewport", + "icon-size": 1, + "symbol-placement": { + "base": 1, + "stops": [ + [10, "point"], + [11, "line"] + ] + }, + "symbol-spacing": 200, + "text-field": "{ref}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "viewport", + "text-size": 10, + "visibility": "visible" + }, + "paint": { + "icon-opacity": { + "stops": [ + [8, 0], + [9, 1] + ] + }, + "text-opacity": { + "stops": [ + [8, 0], + [9, 1] + ] + } + } + }, + { + "id": "waterway-name", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "waterway", + "minzoom": 13, + "filter": ["all", ["==", "$type", "LineString"], ["has", "name"]], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 350, + "text-field": "{name:latin} {name:nonlatin}", + "text-font": ["Noto Sans Italic"], + "text-letter-spacing": 0.2, + "text-max-width": 5, + "text-rotation-alignment": "map", + "text-size": 14, + "visibility": "visible" + }, + "paint": { + "text-color": "rgba(2, 72, 255, 1)", + "text-halo-color": "rgba(255,255,255,1)", + "text-halo-width": 1.5, + "text-halo-blur": 0 + } + }, + { + "id": "airport-label-major", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "aerodrome_label", + "minzoom": 10, + "filter": ["all", ["has", "iata"]], + "layout": { + "icon-image": "airport_11", + "icon-size": 1, + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 9, + "text-offset": [0, 0.6], + "text-optional": true, + "text-padding": 2, + "text-size": 12, + "visibility": "visible" + }, + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + } + }, + { + "id": "poi-level-3", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "poi", + "minzoom": 16, + "filter": [ + "all", + ["==", "$type", "Point"], + [">=", "rank", 25], + ["any", ["!has", "level"], ["==", "level", 0]] + ], + "layout": { + "icon-image": "{class}_11", + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 9, + "text-offset": [0, 0.6], + "text-padding": 20, + "text-size": 12, + "visibility": "visible", + "symbol-spacing": 250, + "symbol-avoid-edges": false, + "text-letter-spacing": 0, + "icon-padding": 2, + "symbol-placement": "point", + "symbol-z-order": "auto", + "text-line-height": 1.2, + "text-allow-overlap": false, + "text-ignore-placement": false, + "icon-allow-overlap": false, + "icon-ignore-placement": false, + "icon-optional": false + }, + "paint": { + "text-color": "rgba(2, 2, 3, 1)", + "text-halo-blur": 0.5, + "text-halo-color": "rgba(232, 227, 227, 1)", + "text-halo-width": 2, + "text-translate-anchor": "map", + "text-opacity": 1 + } + }, + { + "id": "poi-level-2", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "poi", + "minzoom": 15, + "filter": [ + "all", + ["==", "$type", "Point"], + ["<=", "rank", 24], + [">=", "rank", 15], + ["any", ["!has", "level"], ["==", "level", 0]] + ], + "layout": { + "icon-image": "{class}_11", + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 9, + "text-offset": [0, 0.6], + "text-padding": 2, + "text-size": 12, + "visibility": "visible" + }, + "paint": { + "text-color": "rgba(2, 2, 3, 1)", + "text-halo-blur": 0.5, + "text-halo-color": "rgba(232, 227, 227, 1)", + "text-halo-width": 1 + } + }, + { + "id": "poi-level-1", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "poi", + "minzoom": 14, + "filter": [ + "all", + ["==", "$type", "Point"], + ["<=", "rank", 14], + ["has", "name"], + ["any", ["!has", "level"], ["==", "level", 0]] + ], + "layout": { + "icon-image": "{class}_11", + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 9, + "text-offset": [0, 0.6], + "text-padding": 2, + "text-size": 12, + "visibility": "visible" + }, + "paint": { + "text-color": "rgba(2, 2, 3, 1)", + "text-halo-blur": 0.5, + "text-halo-color": "rgba(232, 227, 227, 1)", + "text-halo-width": 2 + } + }, + { + "id": "poi-railway", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "poi", + "minzoom": 13, + "filter": [ + "all", + ["==", "$type", "Point"], + ["has", "name"], + ["==", "class", "railway"], + ["==", "subclass", "station"] + ], + "layout": { + "icon-allow-overlap": false, + "icon-ignore-placement": false, + "icon-image": "{class}_11", + "icon-optional": false, + "text-allow-overlap": false, + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-ignore-placement": false, + "text-max-width": 9, + "text-offset": [0, 0.6], + "text-optional": true, + "text-padding": 2, + "text-size": 12 + }, + "paint": { + "text-color": "rgba(0, 0, 0, 1)", + "text-halo-blur": 0.5, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1 + } + }, + { + "id": "place-village", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": ["==", "class", "village"], + "layout": { + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 8, + "text-size": { + "base": 1.2, + "stops": [ + [10, 12], + [15, 22] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "rgba(0, 0, 0, 1)", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "place-town", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": ["==", "class", "town"], + "layout": { + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 8, + "text-size": { + "base": 1.2, + "stops": [ + [10, 14], + [15, 24] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "rgba(0, 0, 0, 1)", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "place-city", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": ["all", ["!=", "capital", 2], ["==", "class", "city"]], + "layout": { + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 8, + "text-size": { + "base": 1.2, + "stops": [ + [7, 14], + [11, 24] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "rgba(0, 0, 0, 1)", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "place-city-capital", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": ["all", ["==", "capital", 2], ["==", "class", "city"]], + "layout": { + "icon-image": "star_11", + "icon-size": 0.8, + "text-anchor": "left", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 8, + "text-offset": [0.4, 0], + "text-size": { + "base": 1.2, + "stops": [ + [7, 14], + [11, 24] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "#333", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "place-country-other", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": [ + "all", + ["==", "class", "country"], + [">=", "rank", 3], + ["!has", "iso_a2"] + ], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Italic"], + "text-max-width": 6.25, + "text-size": { + "stops": [ + [3, 11], + [7, 17] + ] + }, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 2 + } + }, + { + "id": "place-country-3", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": [ + "all", + ["==", "class", "country"], + [">=", "rank", 3], + ["has", "iso_a2"] + ], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Bold"], + "text-max-width": 6.25, + "text-size": { + "stops": [ + [3, 11], + [7, 17] + ] + }, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 2 + } + }, + { + "id": "place-country-2", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": [ + "all", + ["==", "class", "country"], + ["==", "rank", 2], + ["has", "iso_a2"] + ], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Bold"], + "text-max-width": 6.25, + "text-size": { + "stops": [ + [2, 11], + [5, 17] + ] + }, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 2 + } + }, + { + "id": "place-country-1", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": [ + "all", + ["==", "class", "country"], + ["==", "rank", 1], + ["has", "iso_a2"] + ], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Bold"], + "text-max-width": 6.25, + "text-size": { + "stops": [ + [1, 11], + [4, 17] + ] + }, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 2 + } + }, + { + "id": "place-continent", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "maxzoom": 1, + "filter": ["==", "class", "continent"], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Bold"], + "text-max-width": 6.25, + "text-size": 14, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 2 + } + } +] diff --git a/app/javascript/components/shared/maplibre/styles/layers/ortho.ts b/app/javascript/components/shared/maplibre/styles/layers/ortho.ts deleted file mode 100644 index 41d70cbcd..000000000 --- a/app/javascript/components/shared/maplibre/styles/layers/ortho.ts +++ /dev/null @@ -1,2644 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import type { AnyLayer } from 'maplibre-gl'; - -const layers: AnyLayer[] = [ - { - id: 'photographies-aeriennes', - type: 'raster', - source: 'photographies-aeriennes', - paint: { 'raster-resampling': 'linear' } - }, - { - id: 'communes', - type: 'line', - source: 'decoupage-administratif', - 'source-layer': 'communes', - minzoom: 10, - maxzoom: 24, - filter: ['all'], - layout: { visibility: 'visible' }, - paint: { - 'line-color': 'rgba(0, 0, 0, 1)', - 'line-width': 1.5, - 'line-opacity': 1, - 'line-blur': 0 - } - }, - { - id: 'departements', - type: 'line', - source: 'decoupage-administratif', - 'source-layer': 'departements', - minzoom: 0, - maxzoom: 24, - layout: { visibility: 'visible' }, - paint: { - 'line-color': 'rgba(0, 0, 0, 1)', - 'line-width': 1, - 'line-opacity': 1 - } - }, - { - id: 'regions', - type: 'line', - source: 'decoupage-administratif', - 'source-layer': 'regions', - minzoom: 0, - maxzoom: 24, - layout: { visibility: 'visible' }, - paint: { - 'line-color': 'rgba(0, 0, 0, 1)', - 'line-width': 1, - 'line-opacity': 1 - } - }, - { - id: 'waterway_tunnel', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'waterway', - minzoom: 14, - filter: [ - 'all', - ['in', 'class', 'river', 'stream', 'canal'], - ['==', 'brunnel', 'tunnel'] - ], - layout: { 'line-cap': 'round', visibility: 'none' }, - paint: { - 'line-color': '#a0c8f0', - 'line-dasharray': [2, 4], - 'line-width': { - base: 1.3, - stops: [ - [13, 0.5], - [20, 6] - ] - } - } - }, - { - id: 'waterway-other', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['!in', 'class', 'canal', 'river', 'stream'], - ['==', 'intermittent', 0] - ], - layout: { 'line-cap': 'round', visibility: 'none' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.3, - stops: [ - [13, 0.5], - [20, 2] - ] - } - } - }, - { - id: 'waterway-other-intermittent', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['!in', 'class', 'canal', 'river', 'stream'], - ['==', 'intermittent', 1] - ], - layout: { 'line-cap': 'round', visibility: 'none' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.3, - stops: [ - [13, 0.5], - [20, 2] - ] - }, - 'line-dasharray': [4, 3] - } - }, - { - id: 'waterway-stream-canal', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['in', 'class', 'canal', 'stream'], - ['!=', 'brunnel', 'tunnel'], - ['==', 'intermittent', 0] - ], - layout: { 'line-cap': 'round', visibility: 'none' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.3, - stops: [ - [13, 0.5], - [20, 6] - ] - } - } - }, - { - id: 'waterway-stream-canal-intermittent', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['in', 'class', 'canal', 'stream'], - ['!=', 'brunnel', 'tunnel'], - ['==', 'intermittent', 1] - ], - layout: { 'line-cap': 'round', visibility: 'none' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.3, - stops: [ - [13, 0.5], - [20, 6] - ] - }, - 'line-dasharray': [4, 3] - } - }, - { - id: 'waterway-river', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['==', 'class', 'river'], - ['!=', 'brunnel', 'tunnel'], - ['==', 'intermittent', 0] - ], - layout: { 'line-cap': 'round', visibility: 'none' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.2, - stops: [ - [10, 0.8], - [20, 6] - ] - } - } - }, - { - id: 'waterway-river-intermittent', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['==', 'class', 'river'], - ['!=', 'brunnel', 'tunnel'], - ['==', 'intermittent', 1] - ], - layout: { 'line-cap': 'round', visibility: 'none' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.2, - stops: [ - [10, 0.8], - [20, 6] - ] - }, - 'line-dasharray': [3, 2.5] - } - }, - { - id: 'tunnel-service-track-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'service', 'track'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#cfcdca', - 'line-dasharray': [0.5, 0.25], - 'line-width': { - base: 1.2, - stops: [ - [15, 1], - [16, 4], - [20, 11] - ] - } - } - }, - { - id: 'tunnel-minor-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'minor']], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#cfcdca', - 'line-opacity': { - stops: [ - [12, 0], - [12.5, 1] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [12, 0.5], - [13, 1], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'tunnel-secondary-tertiary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [8, 1.5], - [20, 17] - ] - } - } - }, - { - id: 'tunnel-trunk-primary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'primary', 'trunk'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-width': { - base: 1.2, - stops: [ - [5, 0.4], - [6, 0.6], - [7, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'tunnel-motorway-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'motorway']], - layout: { 'line-join': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#e9ac77', - 'line-dasharray': [0.5, 0.25], - 'line-width': { - base: 1.2, - stops: [ - [5, 0.4], - [6, 0.6], - [7, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'tunnel-path', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'path']] - ], - paint: { - 'line-color': '#cba', - 'line-dasharray': [1.5, 0.75], - 'line-width': { - base: 1.2, - stops: [ - [15, 1.2], - [20, 4] - ] - } - } - }, - { - id: 'tunnel-service-track', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'service', 'track'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fff', - 'line-width': { - base: 1.2, - stops: [ - [15.5, 0], - [16, 2], - [20, 7.5] - ] - } - } - }, - { - id: 'tunnel-minor', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'minor_road']], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fff', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [13.5, 0], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'tunnel-secondary-tertiary', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fff4c6', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 10] - ] - } - } - }, - { - id: 'tunnel-trunk-primary', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'primary', 'trunk'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fff4c6', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - } - } - }, - { - id: 'tunnel-motorway', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'motorway']], - layout: { 'line-join': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#ffdaa6', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - } - } - }, - { - id: 'tunnel-railway', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'rail']], - paint: { - 'line-color': '#bbb', - 'line-dasharray': [2, 2], - 'line-width': { - base: 1.4, - stops: [ - [14, 0.4], - [15, 0.75], - [20, 2] - ] - } - } - }, - { - id: 'ferry', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['in', 'class', 'ferry']], - layout: { 'line-join': 'round', visibility: 'visible' }, - paint: { - 'line-color': 'rgba(108, 159, 182, 1)', - 'line-dasharray': [2, 2], - 'line-width': 1.1 - } - }, - { - id: 'aeroway-taxiway-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'aeroway', - minzoom: 12, - filter: ['all', ['in', 'class', 'taxiway']], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'rgba(153, 153, 153, 1)', - 'line-opacity': 1, - 'line-width': { - base: 1.5, - stops: [ - [11, 2], - [17, 12] - ] - } - } - }, - { - id: 'aeroway-runway-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'aeroway', - minzoom: 12, - filter: ['all', ['in', 'class', 'runway']], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'rgba(153, 153, 153, 1)', - 'line-opacity': 0.2, - 'line-width': { - base: 1.5, - stops: [ - [11, 5], - [17, 55] - ] - } - } - }, - { - id: 'aeroway-taxiway', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'aeroway', - minzoom: 4, - filter: ['all', ['in', 'class', 'taxiway'], ['==', '$type', 'LineString']], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'rgba(255, 255, 255, 1)', - 'line-opacity': { - base: 1, - stops: [ - [11, 0], - [12, 1] - ] - }, - 'line-width': { - base: 1.5, - stops: [ - [11, 1], - [17, 10] - ] - } - } - }, - { - id: 'aeroway-runway', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'aeroway', - minzoom: 4, - filter: ['all', ['in', 'class', 'runway'], ['==', '$type', 'LineString']], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'rgba(255, 255, 255, 1)', - 'line-opacity': { - base: 1, - stops: [ - [11, 0], - [12, 0.2] - ] - }, - 'line-width': { - base: 1.5, - stops: [ - [11, 4], - [17, 50] - ] - } - } - }, - { - id: 'road_area_pier', - type: 'fill', - metadata: {}, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', '$type', 'Polygon'], ['==', 'class', 'pier']], - layout: { visibility: 'visible' }, - paint: { 'fill-antialias': true, 'fill-color': '#f8f4f0' } - }, - { - id: 'road_pier', - type: 'line', - metadata: {}, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', '$type', 'LineString'], ['in', 'class', 'pier']], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#f8f4f0', - 'line-width': { - base: 1.2, - stops: [ - [15, 1], - [17, 4] - ] - } - } - }, - { - id: 'highway-area', - type: 'fill', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', '$type', 'Polygon'], ['!in', 'class', 'pier']], - layout: { visibility: 'visible' }, - paint: { - 'fill-antialias': false, - 'fill-color': 'hsla(0, 0%, 89%, 0.56)', - 'fill-opacity': { - stops: [ - [15, 0], - [16, 0.9] - ] - }, - 'fill-outline-color': '#cfcdca' - } - }, - { - id: 'highway-motorway-link-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 12, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'motorway_link'] - ], - layout: { 'line-cap': 'round', 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [12, 1], - [13, 3], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'highway-link-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 13, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - [ - 'in', - 'class', - 'primary_link', - 'secondary_link', - 'tertiary_link', - 'trunk_link' - ] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [12, 1], - [13, 3], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'highway-minor-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!=', 'brunnel', 'tunnel'], - ['in', 'class', 'minor', 'service', 'track'] - ] - ], - layout: { 'line-cap': 'round', 'line-join': 'round' }, - paint: { - 'line-color': '#cfcdca', - 'line-opacity': { - stops: [ - [14, 0], - [15, 0.5] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [15, 0.5], - [16, 5] - ] - } - } - }, - { - id: 'highway-secondary-tertiary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { - 'line-cap': 'butt', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': { - stops: [ - [15, 0], - [16, 0.3] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [8, 1.5], - [20, 17] - ] - } - } - }, - { - id: 'highway-primary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 5, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['in', 'class', 'primary'] - ], - layout: { - 'line-cap': 'butt', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': { - stops: [ - [16, 0], - [17, 0.3] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [7, 0], - [8, 0.6], - [9, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'highway-trunk-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 5, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['in', 'class', 'trunk'] - ], - layout: { - 'line-cap': 'butt', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': { - stops: [ - [16, 0], - [17, 0.3] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [5, 0], - [6, 0.6], - [7, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'highway-motorway-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 4, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'motorway'] - ], - layout: { - 'line-cap': 'butt', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': { - stops: [ - [8, 0], - [9, 0.2] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [4, 0], - [5, 0.4], - [6, 0.6], - [7, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'highway-path', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'class', 'path']] - ], - layout: { visibility: 'none' }, - paint: { - 'line-color': '#cba', - 'line-dasharray': [1.5, 0.75], - 'line-width': { - base: 1.2, - stops: [ - [15, 1.2], - [20, 4] - ] - } - } - }, - { - id: 'highway-motorway-link', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 12, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'motorway_link'] - ], - layout: { 'line-cap': 'round', 'line-join': 'round' }, - paint: { - 'line-color': '#fc8', - 'line-width': { - base: 1.2, - stops: [ - [12.5, 0], - [13, 1.5], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'highway-link', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 13, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - [ - 'in', - 'class', - 'primary_link', - 'secondary_link', - 'tertiary_link', - 'trunk_link' - ] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [12.5, 0], - [13, 1.5], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'highway-minor', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!=', 'brunnel', 'tunnel'], - ['in', 'class', 'minor', 'service', 'track'] - ] - ], - layout: { 'line-cap': 'round', 'line-join': 'round' }, - paint: { - 'line-color': '#fff', - 'line-opacity': { - stops: [ - [16, 0], - [17, 0.4] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [16, 0], - [17, 2.5] - ] - } - } - }, - { - id: 'highway-secondary-tertiary', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [8, 0.5], - [20, 13] - ] - }, - 'line-opacity': { - stops: [ - [11, 0], - [13, 0.3] - ] - } - } - }, - { - id: 'highway-primary', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['in', 'class', 'primary'] - ] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [8.5, 0], - [9, 0.5], - [20, 18] - ] - }, - 'line-opacity': { - stops: [ - [8, 0], - [9, 0.3] - ] - } - } - }, - { - id: 'highway-trunk', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'trunk']] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - }, - 'line-opacity': { - stops: [ - [16, 0], - [17, 0.3] - ] - } - } - }, - { - id: 'highway-motorway', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 5, - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'motorway'] - ] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#fc8', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - }, - 'line-opacity': { - stops: [ - [8, 0], - [9, 0.2] - ] - } - } - }, - { - id: 'railway-transit', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'class', 'transit'], ['!in', 'brunnel', 'tunnel']] - ], - layout: { visibility: 'visible' }, - paint: { - 'line-color': 'hsla(0, 0%, 73%, 0.77)', - 'line-width': { - base: 1.4, - stops: [ - [14, 0.4], - [20, 1] - ] - } - } - }, - { - id: 'railway-transit-hatching', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'class', 'transit'], ['!in', 'brunnel', 'tunnel']] - ], - layout: { visibility: 'visible' }, - paint: { - 'line-color': 'hsla(0, 0%, 73%, 0.68)', - 'line-dasharray': [0.2, 8], - 'line-width': { - base: 1.4, - stops: [ - [14.5, 0], - [15, 2], - [20, 6] - ] - } - } - }, - { - id: 'railway-service', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'class', 'rail'], ['has', 'service']] - ], - paint: { - 'line-color': 'hsla(0, 0%, 73%, 0.77)', - 'line-width': { - base: 1.4, - stops: [ - [14, 0.4], - [20, 1] - ] - } - } - }, - { - id: 'railway-service-hatching', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'class', 'rail'], ['has', 'service']] - ], - layout: { visibility: 'visible' }, - paint: { - 'line-color': 'hsla(0, 0%, 73%, 0.68)', - 'line-dasharray': [0.2, 8], - 'line-width': { - base: 1.4, - stops: [ - [14.5, 0], - [15, 2], - [20, 6] - ] - } - } - }, - { - id: 'railway', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!has', 'service'], - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'rail'] - ] - ], - layout: { visibility: 'visible' }, - paint: { - 'line-color': '#bbb', - 'line-width': { - base: 1.4, - stops: [ - [14, 0.4], - [15, 0.75], - [20, 2] - ] - }, - 'line-opacity': { - stops: [ - [11, 0], - [13, 1] - ] - } - } - }, - { - id: 'railway-hatching', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!has', 'service'], - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'rail'] - ] - ], - paint: { - 'line-color': '#bbb', - 'line-dasharray': [0.2, 8], - 'line-width': { - base: 1.4, - stops: [ - [14.5, 0], - [15, 3], - [20, 8] - ] - } - } - }, - { - id: 'bridge-motorway-link-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['==', 'class', 'motorway_link'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [12, 1], - [13, 3], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'bridge-link-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - [ - 'in', - 'class', - 'primary_link', - 'secondary_link', - 'tertiary_link', - 'trunk_link' - ] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [12, 1], - [13, 3], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'bridge-secondary-tertiary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 0.3, - 'line-width': { - base: 1.2, - stops: [ - [8, 1.5], - [20, 28] - ] - } - } - }, - { - id: 'bridge-trunk-primary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['in', 'class', 'primary', 'trunk'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': 'hsl(28, 76%, 67%)', - 'line-width': { - base: 1.2, - stops: [ - [5, 0.4], - [6, 0.6], - [7, 1.5], - [20, 26] - ] - }, - 'line-opacity': 0.3 - } - }, - { - id: 'bridge-motorway-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'motorway']], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-width': { - base: 1.2, - stops: [ - [5, 0.4], - [6, 0.6], - [7, 1.5], - [20, 22] - ] - }, - 'line-opacity': { - stops: [ - [16, 0], - [17, 0.3] - ] - } - } - }, - { - id: 'bridge-path-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'path']] - ], - paint: { - 'line-color': '#f8f4f0', - 'line-width': { - base: 1.2, - stops: [ - [15, 1.2], - [20, 18] - ] - } - } - }, - { - id: 'bridge-path', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'path']] - ], - paint: { - 'line-color': '#cba', - 'line-dasharray': [1.5, 0.75], - 'line-width': { - base: 1.2, - stops: [ - [15, 1.2], - [20, 4] - ] - } - } - }, - { - id: 'bridge-motorway-link', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['==', 'class', 'motorway_link'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fc8', - 'line-width': { - base: 1.2, - stops: [ - [12.5, 0], - [13, 1.5], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'bridge-link', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - [ - 'in', - 'class', - 'primary_link', - 'secondary_link', - 'tertiary_link', - 'trunk_link' - ] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [12.5, 0], - [13, 1.5], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'bridge-secondary-tertiary', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 20] - ] - }, - 'line-opacity': { - stops: [ - [16, 0], - [17, 0.3] - ] - } - } - }, - { - id: 'bridge-trunk-primary', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['in', 'class', 'primary', 'trunk'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - }, - 'line-opacity': 0.3 - } - }, - { - id: 'bridge-motorway', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'motorway']], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fc8', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - }, - 'line-opacity': 0.3 - } - }, - { - id: 'bridge-railway', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'rail']], - paint: { - 'line-color': '#bbb', - 'line-width': { - base: 1.4, - stops: [ - [14, 0.4], - [15, 0.75], - [20, 2] - ] - } - } - }, - { - id: 'bridge-railway-hatching', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'rail']], - paint: { - 'line-color': '#bbb', - 'line-dasharray': [0.2, 8], - 'line-width': { - base: 1.4, - stops: [ - [14.5, 0], - [15, 3], - [20, 8] - ] - } - } - }, - { - id: 'cablecar', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 13, - filter: ['==', 'class', 'cable_car'], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': 'hsl(0, 0%, 70%)', - 'line-width': { - base: 1, - stops: [ - [11, 1], - [19, 2.5] - ] - } - } - }, - { - id: 'cablecar-dash', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 13, - filter: ['==', 'class', 'cable_car'], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': 'hsl(0, 0%, 70%)', - 'line-dasharray': [2, 3], - 'line-width': { - base: 1, - stops: [ - [11, 3], - [19, 5.5] - ] - } - } - }, - { - id: 'boundary-land-level-4', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'boundary', - filter: [ - 'all', - ['>=', 'admin_level', 4], - ['<=', 'admin_level', 8], - ['!=', 'maritime', 1] - ], - layout: { 'line-join': 'round', visibility: 'none' }, - paint: { - 'line-color': '#9e9cab', - 'line-dasharray': [3, 1, 1, 1], - 'line-width': { - base: 1.4, - stops: [ - [4, 0.4], - [5, 1], - [12, 3] - ] - } - } - }, - { - id: 'boundary-land-level-2', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'boundary', - filter: [ - 'all', - ['==', 'admin_level', 2], - ['!=', 'maritime', 1], - ['!=', 'disputed', 1] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'none' - }, - paint: { - 'line-color': 'hsl(248, 7%, 66%)', - 'line-width': { - base: 1, - stops: [ - [0, 0.6], - [4, 1.4], - [5, 2], - [12, 8] - ] - } - } - }, - { - id: 'boundary-land-disputed', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'boundary', - filter: ['all', ['!=', 'maritime', 1], ['==', 'disputed', 1]], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'none' - }, - paint: { - 'line-color': 'hsl(248, 7%, 70%)', - 'line-dasharray': [1, 3], - 'line-width': { - base: 1, - stops: [ - [0, 0.6], - [4, 1.4], - [5, 2], - [12, 8] - ] - } - } - }, - { - id: 'boundary-water', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'boundary', - filter: ['all', ['in', 'admin_level', 2, 4], ['==', 'maritime', 1]], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'rgba(154, 189, 214, 1)', - 'line-opacity': { - stops: [ - [6, 0.6], - [10, 1] - ] - }, - 'line-width': { - base: 1, - stops: [ - [0, 0.6], - [4, 1.4], - [5, 2], - [12, 8] - ] - } - } - }, - { - id: 'water-name-lakeline', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'water_name', - filter: ['==', '$type', 'LineString'], - layout: { - 'symbol-placement': 'line', - 'symbol-spacing': 350, - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Italic'], - 'text-letter-spacing': 0.2, - 'text-max-width': 5, - 'text-rotation-alignment': 'map', - 'text-size': 14 - }, - paint: { - 'text-color': '#74aee9', - 'text-halo-color': 'rgba(255,255,255,0.7)', - 'text-halo-width': 1.5 - } - }, - { - id: 'water-name-ocean', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'water_name', - filter: ['all', ['==', '$type', 'Point'], ['==', 'class', 'ocean']], - layout: { - 'symbol-placement': 'point', - 'symbol-spacing': 350, - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Italic'], - 'text-letter-spacing': 0.2, - 'text-max-width': 5, - 'text-rotation-alignment': 'map', - 'text-size': 14 - }, - paint: { - 'text-color': '#74aee9', - 'text-halo-color': 'rgba(255,255,255,0.7)', - 'text-halo-width': 1.5 - } - }, - { - id: 'water-name-other', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'water_name', - filter: ['all', ['==', '$type', 'Point'], ['!in', 'class', 'ocean']], - layout: { - 'symbol-placement': 'point', - 'symbol-spacing': 350, - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Italic'], - 'text-letter-spacing': 0.2, - 'text-max-width': 5, - 'text-rotation-alignment': 'map', - 'text-size': { - stops: [ - [0, 10], - [6, 14] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': 'rgba(0, 51, 178, 1)', - 'text-halo-color': 'rgba(255, 255, 255, 1)', - 'text-halo-width': 1.5 - } - }, - { - id: 'road_oneway', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 15, - filter: [ - 'all', - ['==', 'oneway', 1], - [ - 'in', - 'class', - 'motorway', - 'trunk', - 'primary', - 'secondary', - 'tertiary', - 'minor', - 'service' - ] - ], - layout: { - 'icon-image': 'oneway', - 'icon-padding': 2, - 'icon-rotate': 90, - 'icon-rotation-alignment': 'map', - 'icon-size': { - stops: [ - [15, 0.5], - [19, 1] - ] - }, - 'symbol-placement': 'line', - 'symbol-spacing': 75, - visibility: 'visible' - }, - paint: { 'icon-opacity': 0.5 } - }, - { - id: 'road_oneway_opposite', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 15, - filter: [ - 'all', - ['==', 'oneway', -1], - [ - 'in', - 'class', - 'motorway', - 'trunk', - 'primary', - 'secondary', - 'tertiary', - 'minor', - 'service' - ] - ], - layout: { - 'icon-image': 'oneway', - 'icon-padding': 2, - 'icon-rotate': -90, - 'icon-rotation-alignment': 'map', - 'icon-size': { - stops: [ - [15, 0.5], - [19, 1] - ] - }, - 'symbol-placement': 'line', - 'symbol-spacing': 75, - visibility: 'visible' - }, - paint: { 'icon-opacity': 0.5 } - }, - { - id: 'highway-name-path', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 15.5, - filter: ['==', 'class', 'path'], - layout: { - 'symbol-placement': 'line', - 'text-field': '{name:latin} {name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'map', - 'text-size': { - base: 1, - stops: [ - [13, 12], - [14, 13] - ] - } - }, - paint: { - 'text-color': 'rgba(171, 86, 0, 1)', - 'text-halo-color': '#f8f4f0', - 'text-halo-width': 2 - } - }, - { - id: 'highway-name-minor', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 15, - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['in', 'class', 'minor', 'service', 'track'] - ], - layout: { - 'symbol-placement': 'line', - 'text-field': '{name:latin} {name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'map', - 'text-size': { - base: 1, - stops: [ - [13, 12], - [14, 13] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': 'rgba(143, 69, 0, 1)', - 'text-halo-blur': 0.5, - 'text-halo-width': 2, - 'text-halo-color': 'rgba(255, 255, 255, 1)' - } - }, - { - id: 'highway-name-major', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 12.2, - filter: ['in', 'class', 'primary', 'secondary', 'tertiary', 'trunk'], - layout: { - 'symbol-placement': 'line', - 'text-field': '{name:latin} {name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'map', - 'text-size': { - base: 1, - stops: [ - [13, 12], - [14, 13] - ] - }, - visibility: 'visible', - 'symbol-z-order': 'source' - }, - paint: { - 'text-color': 'rgba(0, 0, 0, 1)', - 'text-halo-blur': 0.5, - 'text-halo-width': 1, - 'text-halo-color': 'rgba(255, 255, 255, 1)' - } - }, - { - id: 'highway-shield-us-interstate', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 7, - filter: [ - 'all', - ['<=', 'ref_length', 6], - ['==', '$type', 'LineString'], - ['in', 'network', 'us-interstate'] - ], - layout: { - 'icon-image': '{network}_{ref_length}', - 'icon-rotation-alignment': 'viewport', - 'icon-size': 1, - 'symbol-placement': { - base: 1, - stops: [ - [7, 'point'], - [7, 'line'], - [8, 'line'] - ] - }, - 'symbol-spacing': 200, - 'text-field': '{ref}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'viewport', - 'text-size': 10 - }, - paint: { 'text-color': 'rgba(0, 0, 0, 1)' } - }, - { - id: 'highway-shield-us-other', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 9, - filter: [ - 'all', - ['<=', 'ref_length', 6], - ['==', '$type', 'LineString'], - ['in', 'network', 'us-highway', 'us-state'] - ], - layout: { - 'icon-image': '{network}_{ref_length}', - 'icon-rotation-alignment': 'viewport', - 'icon-size': 1, - 'symbol-placement': { - base: 1, - stops: [ - [10, 'point'], - [11, 'line'] - ] - } as any, - 'symbol-spacing': 200, - 'text-field': '{ref}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'viewport', - 'text-size': 10 - }, - paint: { 'text-color': 'rgba(0, 0, 0, 1)' } - }, - { - id: 'highway-shield', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 8, - filter: [ - 'all', - ['<=', 'ref_length', 6], - ['==', '$type', 'LineString'], - ['!in', 'network', 'us-interstate', 'us-highway', 'us-state'] - ], - layout: { - 'icon-image': 'road_{ref_length}', - 'icon-rotation-alignment': 'viewport', - 'icon-size': 1, - 'symbol-placement': { - base: 1, - stops: [ - [10, 'point'], - [11, 'line'] - ] - } as any, - 'symbol-spacing': 200, - 'text-field': '{ref}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'viewport', - 'text-size': 10, - visibility: 'visible' - }, - paint: { - 'icon-opacity': { - stops: [ - [8, 0], - [9, 1] - ] - }, - 'text-opacity': { - stops: [ - [8, 0], - [9, 1] - ] - } - } - }, - { - id: 'waterway-name', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'waterway', - minzoom: 13, - filter: ['all', ['==', '$type', 'LineString'], ['has', 'name']], - layout: { - 'symbol-placement': 'line', - 'symbol-spacing': 350, - 'text-field': '{name:latin} {name:nonlatin}', - 'text-font': ['Noto Sans Italic'], - 'text-letter-spacing': 0.2, - 'text-max-width': 5, - 'text-rotation-alignment': 'map', - 'text-size': 14, - visibility: 'visible' - }, - paint: { - 'text-color': 'rgba(2, 72, 255, 1)', - 'text-halo-color': 'rgba(255,255,255,1)', - 'text-halo-width': 1.5, - 'text-halo-blur': 0 - } - }, - { - id: 'airport-label-major', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'aerodrome_label', - minzoom: 10, - filter: ['all', ['has', 'iata']], - layout: { - 'icon-image': 'airport_11', - 'icon-size': 1, - 'text-anchor': 'top', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 9, - 'text-offset': [0, 0.6], - 'text-optional': true, - 'text-padding': 2, - 'text-size': 12, - visibility: 'visible' - }, - paint: { - 'text-color': '#666', - 'text-halo-blur': 0.5, - 'text-halo-color': '#ffffff', - 'text-halo-width': 1 - } - }, - { - id: 'poi-level-3', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'poi', - minzoom: 16, - filter: [ - 'all', - ['==', '$type', 'Point'], - ['>=', 'rank', 25], - ['any', ['!has', 'level'], ['==', 'level', 0]] - ], - layout: { - 'icon-image': '{class}_11', - 'text-anchor': 'top', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 9, - 'text-offset': [0, 0.6], - 'text-padding': 20, - 'text-size': 12, - visibility: 'visible', - 'symbol-spacing': 250, - 'symbol-avoid-edges': false, - 'text-letter-spacing': 0, - 'icon-padding': 2, - 'symbol-placement': 'point', - 'symbol-z-order': 'auto' as any, - 'text-line-height': 1.2, - 'text-allow-overlap': false, - 'text-ignore-placement': false, - 'icon-allow-overlap': false, - 'icon-ignore-placement': false, - 'icon-optional': false - }, - paint: { - 'text-color': 'rgba(2, 2, 3, 1)', - 'text-halo-blur': 0.5, - 'text-halo-color': 'rgba(232, 227, 227, 1)', - 'text-halo-width': 2, - 'text-translate-anchor': 'map', - 'text-opacity': 1 - } - }, - { - id: 'poi-level-2', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'poi', - minzoom: 15, - filter: [ - 'all', - ['==', '$type', 'Point'], - ['<=', 'rank', 24], - ['>=', 'rank', 15], - ['any', ['!has', 'level'], ['==', 'level', 0]] - ], - layout: { - 'icon-image': '{class}_11', - 'text-anchor': 'top', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 9, - 'text-offset': [0, 0.6], - 'text-padding': 2, - 'text-size': 12, - visibility: 'visible' - }, - paint: { - 'text-color': 'rgba(2, 2, 3, 1)', - 'text-halo-blur': 0.5, - 'text-halo-color': 'rgba(232, 227, 227, 1)', - 'text-halo-width': 1 - } - }, - { - id: 'poi-level-1', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'poi', - minzoom: 14, - filter: [ - 'all', - ['==', '$type', 'Point'], - ['<=', 'rank', 14], - ['has', 'name'], - ['any', ['!has', 'level'], ['==', 'level', 0]] - ], - layout: { - 'icon-image': '{class}_11', - 'text-anchor': 'top', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 9, - 'text-offset': [0, 0.6], - 'text-padding': 2, - 'text-size': 12, - visibility: 'visible' - }, - paint: { - 'text-color': 'rgba(2, 2, 3, 1)', - 'text-halo-blur': 0.5, - 'text-halo-color': 'rgba(232, 227, 227, 1)', - 'text-halo-width': 2 - } - }, - { - id: 'poi-railway', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'poi', - minzoom: 13, - filter: [ - 'all', - ['==', '$type', 'Point'], - ['has', 'name'], - ['==', 'class', 'railway'], - ['==', 'subclass', 'station'] - ], - layout: { - 'icon-allow-overlap': false, - 'icon-ignore-placement': false, - 'icon-image': '{class}_11', - 'icon-optional': false, - 'text-allow-overlap': false, - 'text-anchor': 'top', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-ignore-placement': false, - 'text-max-width': 9, - 'text-offset': [0, 0.6], - 'text-optional': true, - 'text-padding': 2, - 'text-size': 12 - }, - paint: { - 'text-color': 'rgba(0, 0, 0, 1)', - 'text-halo-blur': 0.5, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 1 - } - }, - { - id: 'place-village', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: ['==', 'class', 'village'], - layout: { - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 8, - 'text-size': { - base: 1.2, - stops: [ - [10, 12], - [15, 22] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': 'rgba(0, 0, 0, 1)', - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 1.2 - } - }, - { - id: 'place-town', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: ['==', 'class', 'town'], - layout: { - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 8, - 'text-size': { - base: 1.2, - stops: [ - [10, 14], - [15, 24] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': 'rgba(0, 0, 0, 1)', - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 1.2 - } - }, - { - id: 'place-city', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: ['all', ['!=', 'capital', 2], ['==', 'class', 'city']], - layout: { - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 8, - 'text-size': { - base: 1.2, - stops: [ - [7, 14], - [11, 24] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': 'rgba(0, 0, 0, 1)', - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 1.2 - } - }, - { - id: 'place-city-capital', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: ['all', ['==', 'capital', 2], ['==', 'class', 'city']], - layout: { - 'icon-image': 'star_11', - 'icon-size': 0.8, - 'text-anchor': 'left', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 8, - 'text-offset': [0.4, 0], - 'text-size': { - base: 1.2, - stops: [ - [7, 14], - [11, 24] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': '#333', - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 1.2 - } - }, - { - id: 'place-country-other', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: [ - 'all', - ['==', 'class', 'country'], - ['>=', 'rank', 3], - ['!has', 'iso_a2'] - ], - layout: { - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Italic'], - 'text-max-width': 6.25, - 'text-size': { - stops: [ - [3, 11], - [7, 17] - ] - }, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#334', - 'text-halo-blur': 1, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 2 - } - }, - { - id: 'place-country-3', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: [ - 'all', - ['==', 'class', 'country'], - ['>=', 'rank', 3], - ['has', 'iso_a2'] - ], - layout: { - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Bold'], - 'text-max-width': 6.25, - 'text-size': { - stops: [ - [3, 11], - [7, 17] - ] - }, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#334', - 'text-halo-blur': 1, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 2 - } - }, - { - id: 'place-country-2', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: [ - 'all', - ['==', 'class', 'country'], - ['==', 'rank', 2], - ['has', 'iso_a2'] - ], - layout: { - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Bold'], - 'text-max-width': 6.25, - 'text-size': { - stops: [ - [2, 11], - [5, 17] - ] - }, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#334', - 'text-halo-blur': 1, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 2 - } - }, - { - id: 'place-country-1', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: [ - 'all', - ['==', 'class', 'country'], - ['==', 'rank', 1], - ['has', 'iso_a2'] - ], - layout: { - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Bold'], - 'text-max-width': 6.25, - 'text-size': { - stops: [ - [1, 11], - [4, 17] - ] - }, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#334', - 'text-halo-blur': 1, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 2 - } - }, - { - id: 'place-continent', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - maxzoom: 1, - filter: ['==', 'class', 'continent'], - layout: { - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Bold'], - 'text-max-width': 6.25, - 'text-size': 14, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#334', - 'text-halo-blur': 1, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 2 - } - } -]; - -export default layers; diff --git a/app/javascript/components/shared/maplibre/styles/layers/vector.json b/app/javascript/components/shared/maplibre/styles/layers/vector.json new file mode 100644 index 000000000..a177876b6 --- /dev/null +++ b/app/javascript/components/shared/maplibre/styles/layers/vector.json @@ -0,0 +1,2866 @@ +[ + { + "id": "background", + "type": "background", + "minzoom": 0, + "maxzoom": 24, + "layout": { "visibility": "visible" }, + "paint": { "background-color": "rgba(255, 246, 241, 1)" } + }, + { + "id": "landcover-glacier", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "landcover", + "filter": ["==", "subclass", "glacier"], + "layout": { "visibility": "visible" }, + "paint": { + "fill-color": "#fff", + "fill-opacity": { + "base": 1, + "stops": [ + [0, 0.9], + [10, 0.3] + ] + } + } + }, + { + "id": "landuse-residential", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "landuse", + "filter": [ + "all", + ["in", "class", "residential", "suburb", "neighbourhood"] + ], + "layout": { "visibility": "visible" }, + "paint": { + "fill-color": { + "base": 1, + "stops": [ + [12, "hsla(30, 19%, 90%, 0.4)"], + [16, "hsla(30, 19%, 90%, 0.2)"] + ] + } + } + }, + { + "id": "landuse-commercial", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "landuse", + "filter": [ + "all", + ["==", "$type", "Polygon"], + ["==", "class", "commercial"] + ], + "layout": { "visibility": "visible" }, + "paint": { "fill-color": "hsla(0, 60%, 87%, 0.23)" } + }, + { + "id": "landuse-industrial", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "landuse", + "filter": [ + "all", + ["==", "$type", "Polygon"], + ["==", "class", "industrial"] + ], + "paint": { "fill-color": "hsla(49, 100%, 88%, 0.34)" } + }, + { + "id": "landuse-cemetery", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "landuse", + "filter": ["==", "class", "cemetery"], + "paint": { "fill-color": "#e0e4dd" } + }, + { + "id": "landuse-hospital", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "landuse", + "filter": ["==", "class", "hospital"], + "paint": { "fill-color": "#fde" } + }, + { + "id": "landuse-school", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "landuse", + "filter": ["==", "class", "school"], + "paint": { "fill-color": "#f0e8f8" } + }, + { + "id": "landuse-railway", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "landuse", + "filter": ["==", "class", "railway"], + "paint": { "fill-color": "hsla(30, 19%, 90%, 0.4)" } + }, + { + "id": "landcover-wood", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "landcover", + "filter": ["==", "class", "wood"], + "paint": { + "fill-antialias": { + "base": 1, + "stops": [ + [0, false], + [9, true] + ] + }, + "fill-color": "#6a4", + "fill-opacity": 0.1, + "fill-outline-color": "hsla(0, 0%, 0%, 0.03)" + } + }, + { + "id": "landcover-grass", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "landcover", + "filter": ["==", "class", "grass"], + "paint": { "fill-color": "#d8e8c8", "fill-opacity": 1 } + }, + { + "id": "landcover-grass-park", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "park", + "filter": ["==", "class", "public_park"], + "paint": { "fill-color": "#d8e8c8", "fill-opacity": 0.8 } + }, + { + "id": "waterway_tunnel", + "type": "line", + "source": "openmaptiles", + "source-layer": "waterway", + "minzoom": 14, + "filter": [ + "all", + ["in", "class", "river", "stream", "canal"], + ["==", "brunnel", "tunnel"] + ], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "#a0c8f0", + "line-dasharray": [2, 4], + "line-width": { + "base": 1.3, + "stops": [ + [13, 0.5], + [20, 6] + ] + } + } + }, + { + "id": "waterway-other", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["!in", "class", "canal", "river", "stream"], + ["==", "intermittent", 0] + ], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, + "stops": [ + [13, 0.5], + [20, 2] + ] + } + } + }, + { + "id": "waterway-other-intermittent", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["!in", "class", "canal", "river", "stream"], + ["==", "intermittent", 1] + ], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, + "stops": [ + [13, 0.5], + [20, 2] + ] + }, + "line-dasharray": [4, 3] + } + }, + { + "id": "waterway-stream-canal", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["in", "class", "canal", "stream"], + ["!=", "brunnel", "tunnel"], + ["==", "intermittent", 0] + ], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, + "stops": [ + [13, 0.5], + [20, 6] + ] + } + } + }, + { + "id": "waterway-stream-canal-intermittent", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["in", "class", "canal", "stream"], + ["!=", "brunnel", "tunnel"], + ["==", "intermittent", 1] + ], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, + "stops": [ + [13, 0.5], + [20, 6] + ] + }, + "line-dasharray": [4, 3] + } + }, + { + "id": "waterway-river", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["==", "class", "river"], + ["!=", "brunnel", "tunnel"], + ["==", "intermittent", 0] + ], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.2, + "stops": [ + [10, 0.8], + [20, 6] + ] + } + } + }, + { + "id": "waterway-river-intermittent", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["==", "class", "river"], + ["!=", "brunnel", "tunnel"], + ["==", "intermittent", 1] + ], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.2, + "stops": [ + [10, 0.8], + [20, 6] + ] + }, + "line-dasharray": [3, 2.5] + } + }, + { + "id": "water-offset", + "type": "fill", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "water", + "maxzoom": 8, + "filter": ["==", "$type", "Polygon"], + "layout": { "visibility": "visible" }, + "paint": { + "fill-color": "#a0c8f0", + "fill-opacity": 1, + "fill-translate": { + "base": 1, + "stops": [ + [6, [2, 0]], + [8, [0, 0]] + ] + } + } + }, + { + "id": "water", + "type": "fill", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "water", + "filter": ["all", ["!=", "intermittent", 1]], + "layout": { "visibility": "visible" }, + "paint": { "fill-color": "hsl(210, 67%, 85%)" } + }, + { + "id": "water-intermittent", + "type": "fill", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "water", + "filter": ["all", ["==", "intermittent", 1]], + "layout": { "visibility": "visible" }, + "paint": { "fill-color": "hsl(210, 67%, 85%)", "fill-opacity": 0.7 } + }, + { + "id": "water-pattern", + "type": "fill", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "water", + "filter": ["all"], + "layout": { "visibility": "visible" }, + "paint": { "fill-pattern": "wave", "fill-translate": [0, 2.5] } + }, + { + "id": "landcover-ice-shelf", + "type": "fill", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "landcover", + "filter": ["==", "subclass", "ice_shelf"], + "layout": { "visibility": "visible" }, + "paint": { + "fill-color": "#fff", + "fill-opacity": { + "base": 1, + "stops": [ + [0, 0.9], + [10, 0.3] + ] + } + } + }, + { + "id": "landcover-sand", + "type": "fill", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "landcover", + "filter": ["all", ["==", "class", "sand"]], + "layout": { "visibility": "visible" }, + "paint": { "fill-color": "rgba(245, 238, 188, 1)", "fill-opacity": 1 } + }, + { + "id": "building", + "type": "fill", + "metadata": { "mapbox:group": "1444849364238.8171" }, + "source": "openmaptiles", + "source-layer": "building", + "layout": { "visibility": "none" }, + "paint": { + "fill-antialias": true, + "fill-color": { + "base": 1, + "stops": [ + [15.5, "#f2eae2"], + [16, "#dfdbd7"] + ] + } + } + }, + { + "id": "building-top", + "type": "fill", + "metadata": { "mapbox:group": "1444849364238.8171" }, + "source": "openmaptiles", + "source-layer": "building", + "layout": { "visibility": "none" }, + "paint": { + "fill-color": "#f2eae2", + "fill-opacity": { + "base": 1, + "stops": [ + [13, 0], + [16, 1] + ] + }, + "fill-outline-color": "#dfdbd7", + "fill-translate": { + "base": 1, + "stops": [ + [14, [0, 0]], + [16, [-2, -2]] + ] + } + } + }, + { + "id": "tunnel-service-track-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "service", "track"] + ], + "layout": { "line-join": "round", "visibility": "visible" }, + "paint": { + "line-color": "#cfcdca", + "line-dasharray": [0.5, 0.25], + "line-width": { + "base": 1.2, + "stops": [ + [15, 1], + [16, 4], + [20, 11] + ] + } + } + }, + { + "id": "tunnel-minor-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "tunnel"], ["==", "class", "minor"]], + "layout": { "line-join": "round", "visibility": "visible" }, + "paint": { + "line-color": "#cfcdca", + "line-opacity": { + "stops": [ + [12, 0], + [12.5, 1] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [12, 0.5], + [13, 1], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "tunnel-secondary-tertiary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [8, 1.5], + [20, 17] + ] + } + } + }, + { + "id": "tunnel-trunk-primary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "primary", "trunk"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [5, 0.4], + [6, 0.6], + [7, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "tunnel-motorway-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "tunnel"], ["==", "class", "motorway"]], + "layout": { "line-join": "round", "visibility": "visible" }, + "paint": { + "line-color": "#e9ac77", + "line-dasharray": [0.5, 0.25], + "line-width": { + "base": 1.2, + "stops": [ + [5, 0.4], + [6, 0.6], + [7, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "tunnel-path", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "brunnel", "tunnel"], ["==", "class", "path"]] + ], + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "#cba", + "line-dasharray": [1.5, 0.75], + "line-width": { + "base": 1.2, + "stops": [ + [15, 1.2], + [20, 4] + ] + } + } + }, + { + "id": "tunnel-service-track", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "service", "track"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [15.5, 0], + [16, 2], + [20, 7.5] + ] + } + } + }, + { + "id": "tunnel-minor", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["==", "class", "minor_road"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fff", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [13.5, 0], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "tunnel-secondary-tertiary", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fff4c6", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 10] + ] + } + } + }, + { + "id": "tunnel-trunk-primary", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "primary", "trunk"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fff4c6", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + } + } + }, + { + "id": "tunnel-motorway", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "tunnel"], ["==", "class", "motorway"]], + "layout": { "line-join": "round", "visibility": "visible" }, + "paint": { + "line-color": "#ffdaa6", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + } + } + }, + { + "id": "tunnel-railway", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "tunnel"], ["==", "class", "rail"]], + "paint": { + "line-color": "#bbb", + "line-dasharray": [2, 2], + "line-width": { + "base": 1.4, + "stops": [ + [14, 0.4], + [15, 0.75], + [20, 2] + ] + } + } + }, + { + "id": "ferry", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["in", "class", "ferry"]], + "layout": { "line-join": "round", "visibility": "none" }, + "paint": { + "line-color": "rgba(108, 159, 182, 1)", + "line-dasharray": [2, 2], + "line-width": 1.1 + } + }, + { + "id": "aeroway-taxiway-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "aeroway", + "minzoom": 12, + "filter": ["all", ["in", "class", "taxiway"]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(153, 153, 153, 1)", + "line-opacity": 1, + "line-width": { + "base": 1.5, + "stops": [ + [11, 2], + [17, 12] + ] + } + } + }, + { + "id": "aeroway-runway-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "aeroway", + "minzoom": 12, + "filter": ["all", ["in", "class", "runway"]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(153, 153, 153, 1)", + "line-opacity": 1, + "line-width": { + "base": 1.5, + "stops": [ + [11, 5], + [17, 55] + ] + } + } + }, + { + "id": "aeroway-area", + "type": "fill", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "aeroway", + "minzoom": 4, + "filter": [ + "all", + ["==", "$type", "Polygon"], + ["in", "class", "runway", "taxiway"] + ], + "layout": { "visibility": "visible" }, + "paint": { + "fill-color": "rgba(255, 255, 255, 1)", + "fill-opacity": { + "base": 1, + "stops": [ + [13, 0], + [14, 1] + ] + } + } + }, + { + "id": "aeroway-taxiway", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "aeroway", + "minzoom": 4, + "filter": [ + "all", + ["in", "class", "taxiway"], + ["==", "$type", "LineString"] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(255, 255, 255, 1)", + "line-opacity": { + "base": 1, + "stops": [ + [11, 0], + [12, 1] + ] + }, + "line-width": { + "base": 1.5, + "stops": [ + [11, 1], + [17, 10] + ] + } + } + }, + { + "id": "aeroway-runway", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "aeroway", + "minzoom": 4, + "filter": ["all", ["in", "class", "runway"], ["==", "$type", "LineString"]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(255, 255, 255, 1)", + "line-opacity": { + "base": 1, + "stops": [ + [11, 0], + [12, 1] + ] + }, + "line-width": { + "base": 1.5, + "stops": [ + [11, 4], + [17, 50] + ] + } + } + }, + { + "id": "road_area_pier", + "type": "fill", + "metadata": {}, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "$type", "Polygon"], ["==", "class", "pier"]], + "layout": { "visibility": "none" }, + "paint": { "fill-antialias": true, "fill-color": "#f8f4f0" } + }, + { + "id": "road_pier", + "type": "line", + "metadata": {}, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 0, + "filter": ["all", ["==", "$type", "LineString"], ["in", "class", "pier"]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "none" + }, + "paint": { + "line-color": "#f8f4f0", + "line-width": { + "base": 1.2, + "stops": [ + [15, 1], + [17, 4] + ] + } + } + }, + { + "id": "highway-area", + "type": "fill", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "$type", "Polygon"], ["!in", "class", "pier"]], + "layout": { "visibility": "visible" }, + "paint": { + "fill-antialias": false, + "fill-color": "hsla(0, 0%, 89%, 0.56)", + "fill-opacity": 0.9, + "fill-outline-color": "#cfcdca" + } + }, + { + "id": "highway-motorway-link-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 12, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "motorway_link"] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [12, 1], + [13, 3], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "highway-link-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 13, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + [ + "in", + "class", + "primary_link", + "secondary_link", + "tertiary_link", + "trunk_link" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [12, 1], + [13, 3], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "highway-minor-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!=", "brunnel", "tunnel"], + ["in", "class", "minor", "service", "track"] + ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-color": "#cfcdca", + "line-opacity": { + "stops": [ + [12, 0], + [12.5, 1] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [12, 0.5], + [13, 1], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "highway-secondary-tertiary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [8, 1.5], + [20, 17] + ] + } + } + }, + { + "id": "highway-primary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 5, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["in", "class", "primary"] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": { + "stops": [ + [7, 0], + [8, 1] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [7, 0], + [8, 0.6], + [9, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "highway-trunk-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 5, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["in", "class", "trunk"] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": { + "stops": [ + [5, 0], + [6, 1] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [5, 0], + [6, 0.6], + [7, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "highway-motorway-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 4, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "motorway"] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": { + "stops": [ + [4, 0], + [5, 1] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [4, 0], + [5, 0.4], + [6, 0.6], + [7, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "highway-path", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["!in", "brunnel", "bridge", "tunnel"], ["==", "class", "path"]] + ], + "paint": { + "line-color": "#cba", + "line-dasharray": [1.5, 0.75], + "line-width": { + "base": 1.2, + "stops": [ + [15, 1.2], + [20, 4] + ] + } + } + }, + { + "id": "highway-motorway-link", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 12, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "motorway_link"] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [12.5, 0], + [13, 1.5], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "highway-link", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 13, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + [ + "in", + "class", + "primary_link", + "secondary_link", + "tertiary_link", + "trunk_link" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [12.5, 0], + [13, 1.5], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "highway-minor", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!=", "brunnel", "tunnel"], + ["in", "class", "minor", "service", "track"] + ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-color": "#fff", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [13.5, 0], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "highway-secondary-tertiary", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [8, 0.5], + [20, 13] + ] + } + } + }, + { + "id": "highway-primary", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["in", "class", "primary"] + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [8.5, 0], + [9, 0.5], + [20, 18] + ] + } + } + }, + { + "id": "highway-trunk", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["!in", "brunnel", "bridge", "tunnel"], ["in", "class", "trunk"]] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + } + } + }, + { + "id": "highway-motorway", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 5, + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "motorway"] + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + } + } + }, + { + "id": "railway-transit", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "class", "transit"], ["!in", "brunnel", "tunnel"]] + ], + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "hsla(0, 0%, 73%, 0.77)", + "line-width": { + "base": 1.4, + "stops": [ + [14, 0.4], + [20, 1] + ] + } + } + }, + { + "id": "railway-transit-hatching", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "class", "transit"], ["!in", "brunnel", "tunnel"]] + ], + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "hsla(0, 0%, 73%, 0.68)", + "line-dasharray": [0.2, 8], + "line-width": { + "base": 1.4, + "stops": [ + [14.5, 0], + [15, 2], + [20, 6] + ] + } + } + }, + { + "id": "railway-service", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "class", "rail"], ["has", "service"]] + ], + "paint": { + "line-color": "hsla(0, 0%, 73%, 0.77)", + "line-width": { + "base": 1.4, + "stops": [ + [14, 0.4], + [20, 1] + ] + } + } + }, + { + "id": "railway-service-hatching", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "class", "rail"], ["has", "service"]] + ], + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "hsla(0, 0%, 73%, 0.68)", + "line-dasharray": [0.2, 8], + "line-width": { + "base": 1.4, + "stops": [ + [14.5, 0], + [15, 2], + [20, 6] + ] + } + } + }, + { + "id": "railway", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!has", "service"], + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "rail"] + ] + ], + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [14, 0.4], + [15, 0.75], + [20, 2] + ] + } + } + }, + { + "id": "railway-hatching", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!has", "service"], + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "rail"] + ] + ], + "paint": { + "line-color": "#bbb", + "line-dasharray": [0.2, 8], + "line-width": { + "base": 1.4, + "stops": [ + [14.5, 0], + [15, 3], + [20, 8] + ] + } + } + }, + { + "id": "bridge-motorway-link-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["==", "class", "motorway_link"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [12, 1], + [13, 3], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "bridge-link-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + [ + "in", + "class", + "primary_link", + "secondary_link", + "tertiary_link", + "trunk_link" + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [12, 1], + [13, 3], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "bridge-secondary-tertiary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [8, 1.5], + [20, 28] + ] + } + } + }, + { + "id": "bridge-trunk-primary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["in", "class", "primary", "trunk"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "hsl(28, 76%, 67%)", + "line-width": { + "base": 1.2, + "stops": [ + [5, 0.4], + [6, 0.6], + [7, 1.5], + [20, 26] + ] + } + } + }, + { + "id": "bridge-motorway-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "bridge"], ["==", "class", "motorway"]], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [5, 0.4], + [6, 0.6], + [7, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "bridge-path-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "brunnel", "bridge"], ["==", "class", "path"]] + ], + "paint": { + "line-color": "#f8f4f0", + "line-width": { + "base": 1.2, + "stops": [ + [15, 1.2], + [20, 18] + ] + } + } + }, + { + "id": "bridge-path", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "brunnel", "bridge"], ["==", "class", "path"]] + ], + "paint": { + "line-color": "#cba", + "line-dasharray": [1.5, 0.75], + "line-width": { + "base": 1.2, + "stops": [ + [15, 1.2], + [20, 4] + ] + } + } + }, + { + "id": "bridge-motorway-link", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["==", "class", "motorway_link"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [12.5, 0], + [13, 1.5], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "bridge-link", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + [ + "in", + "class", + "primary_link", + "secondary_link", + "tertiary_link", + "trunk_link" + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [12.5, 0], + [13, 1.5], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "bridge-secondary-tertiary", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 20] + ] + } + } + }, + { + "id": "bridge-trunk-primary", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["in", "class", "primary", "trunk"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + } + } + }, + { + "id": "bridge-motorway", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "bridge"], ["==", "class", "motorway"]], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + } + } + }, + { + "id": "bridge-railway", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "bridge"], ["==", "class", "rail"]], + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [14, 0.4], + [15, 0.75], + [20, 2] + ] + } + } + }, + { + "id": "bridge-railway-hatching", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "bridge"], ["==", "class", "rail"]], + "paint": { + "line-color": "#bbb", + "line-dasharray": [0.2, 8], + "line-width": { + "base": 1.4, + "stops": [ + [14.5, 0], + [15, 3], + [20, 8] + ] + } + } + }, + { + "id": "cablecar", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 13, + "filter": ["==", "class", "cable_car"], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "hsl(0, 0%, 70%)", + "line-width": { + "base": 1, + "stops": [ + [11, 1], + [19, 2.5] + ] + } + } + }, + { + "id": "cablecar-dash", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 13, + "filter": ["==", "class", "cable_car"], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "hsl(0, 0%, 70%)", + "line-dasharray": [2, 3], + "line-width": { + "base": 1, + "stops": [ + [11, 3], + [19, 5.5] + ] + } + } + }, + { + "id": "boundary-land-level-4", + "type": "line", + "source": "openmaptiles", + "source-layer": "boundary", + "filter": [ + "all", + [">=", "admin_level", 4], + ["<=", "admin_level", 8], + ["!=", "maritime", 1] + ], + "layout": { "line-join": "round", "visibility": "visible" }, + "paint": { + "line-color": "#9e9cab", + "line-dasharray": [3, 1, 1, 1], + "line-width": { + "base": 1.4, + "stops": [ + [4, 0.4], + [5, 1], + [12, 3] + ] + } + } + }, + { + "id": "boundary-land-level-2", + "type": "line", + "source": "openmaptiles", + "source-layer": "boundary", + "filter": [ + "all", + ["==", "admin_level", 2], + ["!=", "maritime", 1], + ["!=", "disputed", 1] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "hsl(248, 7%, 66%)", + "line-width": { + "base": 1, + "stops": [ + [0, 0.6], + [4, 1.4], + [5, 2], + [12, 8] + ] + } + } + }, + { + "id": "boundary-land-disputed", + "type": "line", + "source": "openmaptiles", + "source-layer": "boundary", + "filter": ["all", ["!=", "maritime", 1], ["==", "disputed", 1]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "hsl(248, 7%, 70%)", + "line-dasharray": [1, 3], + "line-width": { + "base": 1, + "stops": [ + [0, 0.6], + [4, 1.4], + [5, 2], + [12, 8] + ] + } + } + }, + { + "id": "boundary-water", + "type": "line", + "source": "openmaptiles", + "source-layer": "boundary", + "filter": ["all", ["in", "admin_level", 2, 4], ["==", "maritime", 1]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(154, 189, 214, 1)", + "line-opacity": { + "stops": [ + [6, 0.6], + [10, 1] + ] + }, + "line-width": { + "base": 1, + "stops": [ + [0, 0.6], + [4, 1.4], + [5, 2], + [12, 8] + ] + } + } + }, + { + "id": "waterway-name", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "waterway", + "minzoom": 13, + "filter": ["all", ["==", "$type", "LineString"], ["has", "name"]], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 350, + "text-field": "{name:latin} {name:nonlatin}", + "text-font": ["Noto Sans Italic"], + "text-letter-spacing": 0.2, + "text-max-width": 5, + "text-rotation-alignment": "map", + "text-size": 14, + "visibility": "visible" + }, + "paint": { + "text-color": "#74aee9", + "text-halo-color": "rgba(255,255,255,0.7)", + "text-halo-width": 1.5 + } + }, + { + "id": "communes", + "type": "line", + "source": "decoupage-administratif", + "source-layer": "communes", + "minzoom": 10, + "maxzoom": 24, + "layout": { "visibility": "visible" } + }, + { + "id": "departements", + "type": "line", + "source": "decoupage-administratif", + "source-layer": "departements", + "layout": { "visibility": "visible" } + }, + { + "id": "regions", + "type": "line", + "source": "decoupage-administratif", + "source-layer": "regions", + "layout": { "visibility": "visible" } + }, + { + "id": "water-name-lakeline", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "water_name", + "filter": ["==", "$type", "LineString"], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 350, + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Italic"], + "text-letter-spacing": 0.2, + "text-max-width": 5, + "text-rotation-alignment": "map", + "text-size": 14 + }, + "paint": { + "text-color": "#74aee9", + "text-halo-color": "rgba(255,255,255,0.7)", + "text-halo-width": 1.5 + } + }, + { + "id": "water-name-ocean", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "water_name", + "filter": ["all", ["==", "$type", "Point"], ["==", "class", "ocean"]], + "layout": { + "symbol-placement": "point", + "symbol-spacing": 350, + "text-field": "{name:latin}", + "text-font": ["Noto Sans Italic"], + "text-letter-spacing": 0.2, + "text-max-width": 5, + "text-rotation-alignment": "map", + "text-size": 14 + }, + "paint": { + "text-color": "#74aee9", + "text-halo-color": "rgba(255,255,255,0.7)", + "text-halo-width": 1.5 + } + }, + { + "id": "water-name-other", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "water_name", + "filter": ["all", ["==", "$type", "Point"], ["!in", "class", "ocean"]], + "layout": { + "symbol-placement": "point", + "symbol-spacing": 350, + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Italic"], + "text-letter-spacing": 0.2, + "text-max-width": 5, + "text-rotation-alignment": "map", + "text-size": { + "stops": [ + [0, 10], + [6, 14] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "#74aee9", + "text-halo-color": "rgba(255,255,255,0.7)", + "text-halo-width": 1.5 + } + }, + { + "id": "road_oneway", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 15, + "filter": [ + "all", + ["==", "oneway", 1], + [ + "in", + "class", + "motorway", + "trunk", + "primary", + "secondary", + "tertiary", + "minor", + "service" + ] + ], + "layout": { + "icon-image": "oneway", + "icon-padding": 2, + "icon-rotate": 90, + "icon-rotation-alignment": "map", + "icon-size": { + "stops": [ + [15, 0.5], + [19, 1] + ] + }, + "symbol-placement": "line", + "symbol-spacing": 75, + "visibility": "visible" + }, + "paint": { "icon-opacity": 0.5 } + }, + { + "id": "road_oneway_opposite", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 15, + "filter": [ + "all", + ["==", "oneway", -1], + [ + "in", + "class", + "motorway", + "trunk", + "primary", + "secondary", + "tertiary", + "minor", + "service" + ] + ], + "layout": { + "icon-image": "oneway", + "icon-padding": 2, + "icon-rotate": -90, + "icon-rotation-alignment": "map", + "icon-size": { + "stops": [ + [15, 0.5], + [19, 1] + ] + }, + "symbol-placement": "line", + "symbol-spacing": 75, + "visibility": "visible" + }, + "paint": { "icon-opacity": 0.5 } + }, + { + "id": "highway-name-path", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 15.5, + "filter": ["==", "class", "path"], + "layout": { + "symbol-placement": "line", + "text-field": "{name:latin} {name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "map", + "text-size": { + "base": 1, + "stops": [ + [13, 12], + [14, 13] + ] + } + }, + "paint": { + "text-color": "hsl(30, 23%, 62%)", + "text-halo-color": "#f8f4f0", + "text-halo-width": 0.5 + } + }, + { + "id": "highway-name-minor", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 15, + "filter": [ + "all", + ["==", "$type", "LineString"], + ["in", "class", "minor", "service", "track"] + ], + "layout": { + "symbol-placement": "line", + "text-field": "{name:latin} {name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "map", + "text-size": { + "base": 1, + "stops": [ + [13, 12], + [14, 13] + ] + } + }, + "paint": { + "text-color": "#765", + "text-halo-blur": 0.5, + "text-halo-width": 1 + } + }, + { + "id": "highway-name-major", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 12.2, + "filter": ["in", "class", "primary", "secondary", "tertiary", "trunk"], + "layout": { + "symbol-placement": "line", + "text-field": "{name:latin} {name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "map", + "text-size": { + "base": 1, + "stops": [ + [13, 12], + [14, 13] + ] + } + }, + "paint": { + "text-color": "#765", + "text-halo-blur": 0.5, + "text-halo-width": 1 + } + }, + { + "id": "highway-shield", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 8, + "filter": [ + "all", + ["<=", "ref_length", 6], + ["==", "$type", "LineString"], + ["!in", "network", "us-interstate", "us-highway", "us-state"] + ], + "layout": { + "icon-image": "road_{ref_length}", + "icon-rotation-alignment": "viewport", + "icon-size": 1, + "symbol-placement": { + "base": 1, + "stops": [ + [10, "point"], + [11, "line"] + ] + }, + "symbol-spacing": 200, + "text-field": "{ref}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "viewport", + "text-size": 10 + }, + "paint": {} + }, + { + "id": "highway-shield-us-interstate", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 7, + "filter": [ + "all", + ["<=", "ref_length", 6], + ["==", "$type", "LineString"], + ["in", "network", "us-interstate"] + ], + "layout": { + "icon-image": "{network}_{ref_length}", + "icon-rotation-alignment": "viewport", + "icon-size": 1, + "symbol-placement": { + "base": 1, + "stops": [ + [7, "point"], + [7, "line"], + [8, "line"] + ] + }, + "symbol-spacing": 200, + "text-field": "{ref}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "viewport", + "text-size": 10 + }, + "paint": { "text-color": "rgba(0, 0, 0, 1)" } + }, + { + "id": "highway-shield-us-other", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 9, + "filter": [ + "all", + ["<=", "ref_length", 6], + ["==", "$type", "LineString"], + ["in", "network", "us-highway", "us-state"] + ], + "layout": { + "icon-image": "{network}_{ref_length}", + "icon-rotation-alignment": "viewport", + "icon-size": 1, + "symbol-placement": { + "base": 1, + "stops": [ + [10, "point"], + [11, "line"] + ] + }, + "symbol-spacing": 200, + "text-field": "{ref}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "viewport", + "text-size": 10 + }, + "paint": { "text-color": "rgba(0, 0, 0, 1)" } + }, + { + "id": "airport-label-major", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "aerodrome_label", + "minzoom": 10, + "filter": ["all", ["has", "iata"]], + "layout": { + "icon-image": "airport_11", + "icon-size": 1, + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 9, + "text-offset": [0, 0.6], + "text-optional": true, + "text-padding": 2, + "text-size": 12, + "visibility": "visible" + }, + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + } + }, + { + "id": "poi-level-3", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "poi", + "minzoom": 16, + "filter": [ + "all", + ["==", "$type", "Point"], + [">=", "rank", 25], + ["any", ["!has", "level"], ["==", "level", 0]] + ], + "layout": { + "icon-image": "{class}_11", + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 9, + "text-offset": [0, 0.6], + "text-padding": 2, + "text-size": 12, + "visibility": "visible" + }, + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + } + }, + { + "id": "poi-level-2", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "poi", + "minzoom": 15, + "filter": [ + "all", + ["==", "$type", "Point"], + ["<=", "rank", 24], + [">=", "rank", 15], + ["any", ["!has", "level"], ["==", "level", 0]] + ], + "layout": { + "icon-image": "{class}_11", + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 9, + "text-offset": [0, 0.6], + "text-padding": 2, + "text-size": 12, + "visibility": "visible" + }, + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + } + }, + { + "id": "poi-level-1", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "poi", + "minzoom": 14, + "filter": [ + "all", + ["==", "$type", "Point"], + ["<=", "rank", 14], + ["has", "name"], + ["any", ["!has", "level"], ["==", "level", 0]] + ], + "layout": { + "icon-image": "{class}_11", + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 9, + "text-offset": [0, 0.6], + "text-padding": 2, + "text-size": 12, + "visibility": "visible" + }, + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + } + }, + { + "id": "poi-railway", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "poi", + "minzoom": 13, + "filter": [ + "all", + ["==", "$type", "Point"], + ["has", "name"], + ["==", "class", "railway"], + ["==", "subclass", "station"] + ], + "layout": { + "icon-allow-overlap": false, + "icon-ignore-placement": false, + "icon-image": "{class}_11", + "icon-optional": false, + "text-allow-overlap": false, + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-ignore-placement": false, + "text-max-width": 9, + "text-offset": [0, 0.6], + "text-optional": true, + "text-padding": 2, + "text-size": 12 + }, + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + } + }, + { + "id": "place-other", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": [ + "!in", + "class", + "city", + "town", + "village", + "country", + "continent" + ], + "layout": { + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Bold"], + "text-letter-spacing": 0.1, + "text-max-width": 9, + "text-size": { + "base": 1.2, + "stops": [ + [12, 10], + [15, 14] + ] + }, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#633", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "place-village", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": ["==", "class", "village"], + "layout": { + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 8, + "text-size": { + "base": 1.2, + "stops": [ + [10, 12], + [15, 22] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "#333", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "place-town", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": ["==", "class", "town"], + "layout": { + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 8, + "text-size": { + "base": 1.2, + "stops": [ + [10, 14], + [15, 24] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "#333", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "place-city", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": ["all", ["!=", "capital", 2], ["==", "class", "city"]], + "layout": { + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 8, + "text-size": { + "base": 1.2, + "stops": [ + [7, 14], + [11, 24] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "#333", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "place-city-capital", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": ["all", ["==", "capital", 2], ["==", "class", "city"]], + "layout": { + "icon-image": "star_11", + "icon-size": 0.8, + "text-anchor": "left", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 8, + "text-offset": [0.4, 0], + "text-size": { + "base": 1.2, + "stops": [ + [7, 14], + [11, 24] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "#333", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "place-country-other", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": [ + "all", + ["==", "class", "country"], + [">=", "rank", 3], + ["!has", "iso_a2"] + ], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Italic"], + "text-max-width": 6.25, + "text-size": { + "stops": [ + [3, 11], + [7, 17] + ] + }, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 2 + } + }, + { + "id": "place-country-3", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": [ + "all", + ["==", "class", "country"], + [">=", "rank", 3], + ["has", "iso_a2"] + ], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Bold"], + "text-max-width": 6.25, + "text-size": { + "stops": [ + [3, 11], + [7, 17] + ] + }, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 2 + } + }, + { + "id": "place-country-2", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": [ + "all", + ["==", "class", "country"], + ["==", "rank", 2], + ["has", "iso_a2"] + ], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Bold"], + "text-max-width": 6.25, + "text-size": { + "stops": [ + [2, 11], + [5, 17] + ] + }, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 2 + } + }, + { + "id": "place-country-1", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": [ + "all", + ["==", "class", "country"], + ["==", "rank", 1], + ["has", "iso_a2"] + ], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Bold"], + "text-max-width": 6.25, + "text-size": { + "stops": [ + [1, 11], + [4, 17] + ] + }, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 2 + } + }, + { + "id": "place-continent", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "maxzoom": 1, + "filter": ["==", "class", "continent"], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Bold"], + "text-max-width": 6.25, + "text-size": 14, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 2 + } + } +] diff --git a/app/javascript/components/shared/maplibre/styles/layers/vector.ts b/app/javascript/components/shared/maplibre/styles/layers/vector.ts deleted file mode 100644 index b96800c2c..000000000 --- a/app/javascript/components/shared/maplibre/styles/layers/vector.ts +++ /dev/null @@ -1,2844 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import type { AnyLayer } from 'maplibre-gl'; - -const layers: AnyLayer[] = [ - { - id: 'background', - type: 'background', - minzoom: 0, - maxzoom: 24, - layout: { visibility: 'visible' }, - paint: { 'background-color': 'rgba(255, 246, 241, 1)' } - }, - { - id: 'landcover-glacier', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'landcover', - filter: ['==', 'subclass', 'glacier'], - layout: { visibility: 'visible' }, - paint: { - 'fill-color': '#fff', - 'fill-opacity': { - base: 1, - stops: [ - [0, 0.9], - [10, 0.3] - ] - } - } - }, - { - id: 'landuse-residential', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'landuse', - filter: ['all', ['in', 'class', 'residential', 'suburb', 'neighbourhood']], - layout: { visibility: 'visible' }, - paint: { - 'fill-color': { - base: 1, - stops: [ - [12, 'hsla(30, 19%, 90%, 0.4)'], - [16, 'hsla(30, 19%, 90%, 0.2)'] - ] - } - } - }, - { - id: 'landuse-commercial', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'landuse', - filter: ['all', ['==', '$type', 'Polygon'], ['==', 'class', 'commercial']], - layout: { visibility: 'visible' }, - paint: { 'fill-color': 'hsla(0, 60%, 87%, 0.23)' } - }, - { - id: 'landuse-industrial', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'landuse', - filter: ['all', ['==', '$type', 'Polygon'], ['==', 'class', 'industrial']], - paint: { 'fill-color': 'hsla(49, 100%, 88%, 0.34)' } - }, - { - id: 'landuse-cemetery', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'landuse', - filter: ['==', 'class', 'cemetery'], - paint: { 'fill-color': '#e0e4dd' } - }, - { - id: 'landuse-hospital', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'landuse', - filter: ['==', 'class', 'hospital'], - paint: { 'fill-color': '#fde' } - }, - { - id: 'landuse-school', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'landuse', - filter: ['==', 'class', 'school'], - paint: { 'fill-color': '#f0e8f8' } - }, - { - id: 'landuse-railway', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'landuse', - filter: ['==', 'class', 'railway'], - paint: { 'fill-color': 'hsla(30, 19%, 90%, 0.4)' } - }, - { - id: 'landcover-wood', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'landcover', - filter: ['==', 'class', 'wood'], - paint: { - 'fill-antialias': { - base: 1, - stops: [ - [0, false], - [9, true] - ] - } as any, - 'fill-color': '#6a4', - 'fill-opacity': 0.1, - 'fill-outline-color': 'hsla(0, 0%, 0%, 0.03)' - } - }, - { - id: 'landcover-grass', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'landcover', - filter: ['==', 'class', 'grass'], - paint: { 'fill-color': '#d8e8c8', 'fill-opacity': 1 } - }, - { - id: 'landcover-grass-park', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'park', - filter: ['==', 'class', 'public_park'], - paint: { 'fill-color': '#d8e8c8', 'fill-opacity': 0.8 } - }, - { - id: 'waterway_tunnel', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'waterway', - minzoom: 14, - filter: [ - 'all', - ['in', 'class', 'river', 'stream', 'canal'], - ['==', 'brunnel', 'tunnel'] - ], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#a0c8f0', - 'line-dasharray': [2, 4], - 'line-width': { - base: 1.3, - stops: [ - [13, 0.5], - [20, 6] - ] - } - } - }, - { - id: 'waterway-other', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['!in', 'class', 'canal', 'river', 'stream'], - ['==', 'intermittent', 0] - ], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.3, - stops: [ - [13, 0.5], - [20, 2] - ] - } - } - }, - { - id: 'waterway-other-intermittent', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['!in', 'class', 'canal', 'river', 'stream'], - ['==', 'intermittent', 1] - ], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.3, - stops: [ - [13, 0.5], - [20, 2] - ] - }, - 'line-dasharray': [4, 3] - } - }, - { - id: 'waterway-stream-canal', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['in', 'class', 'canal', 'stream'], - ['!=', 'brunnel', 'tunnel'], - ['==', 'intermittent', 0] - ], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.3, - stops: [ - [13, 0.5], - [20, 6] - ] - } - } - }, - { - id: 'waterway-stream-canal-intermittent', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['in', 'class', 'canal', 'stream'], - ['!=', 'brunnel', 'tunnel'], - ['==', 'intermittent', 1] - ], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.3, - stops: [ - [13, 0.5], - [20, 6] - ] - }, - 'line-dasharray': [4, 3] - } - }, - { - id: 'waterway-river', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['==', 'class', 'river'], - ['!=', 'brunnel', 'tunnel'], - ['==', 'intermittent', 0] - ], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.2, - stops: [ - [10, 0.8], - [20, 6] - ] - } - } - }, - { - id: 'waterway-river-intermittent', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['==', 'class', 'river'], - ['!=', 'brunnel', 'tunnel'], - ['==', 'intermittent', 1] - ], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.2, - stops: [ - [10, 0.8], - [20, 6] - ] - }, - 'line-dasharray': [3, 2.5] - } - }, - { - id: 'water-offset', - type: 'fill', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'water', - maxzoom: 8, - filter: ['==', '$type', 'Polygon'], - layout: { visibility: 'visible' }, - paint: { - 'fill-color': '#a0c8f0', - 'fill-opacity': 1, - 'fill-translate': { - base: 1, - stops: [ - [6, [2, 0]], - [8, [0, 0]] - ] - } as any - } - }, - { - id: 'water', - type: 'fill', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'water', - filter: ['all', ['!=', 'intermittent', 1]], - layout: { visibility: 'visible' }, - paint: { 'fill-color': 'hsl(210, 67%, 85%)' } - }, - { - id: 'water-intermittent', - type: 'fill', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'water', - filter: ['all', ['==', 'intermittent', 1]], - layout: { visibility: 'visible' }, - paint: { 'fill-color': 'hsl(210, 67%, 85%)', 'fill-opacity': 0.7 } - }, - { - id: 'water-pattern', - type: 'fill', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'water', - filter: ['all'], - layout: { visibility: 'visible' }, - paint: { 'fill-pattern': 'wave', 'fill-translate': [0, 2.5] } - }, - { - id: 'landcover-ice-shelf', - type: 'fill', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'landcover', - filter: ['==', 'subclass', 'ice_shelf'], - layout: { visibility: 'visible' }, - paint: { - 'fill-color': '#fff', - 'fill-opacity': { - base: 1, - stops: [ - [0, 0.9], - [10, 0.3] - ] - } - } - }, - { - id: 'landcover-sand', - type: 'fill', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'landcover', - filter: ['all', ['==', 'class', 'sand']], - layout: { visibility: 'visible' }, - paint: { 'fill-color': 'rgba(245, 238, 188, 1)', 'fill-opacity': 1 } - }, - { - id: 'building', - type: 'fill', - metadata: { 'mapbox:group': '1444849364238.8171' }, - source: 'openmaptiles', - 'source-layer': 'building', - layout: { visibility: 'none' }, - paint: { - 'fill-antialias': true, - 'fill-color': { - base: 1, - stops: [ - [15.5, '#f2eae2'], - [16, '#dfdbd7'] - ] - } - } - }, - { - id: 'building-top', - type: 'fill', - metadata: { 'mapbox:group': '1444849364238.8171' }, - source: 'openmaptiles', - 'source-layer': 'building', - layout: { visibility: 'none' }, - paint: { - 'fill-color': '#f2eae2', - 'fill-opacity': { - base: 1, - stops: [ - [13, 0], - [16, 1] - ] - }, - 'fill-outline-color': '#dfdbd7', - 'fill-translate': { - base: 1, - stops: [ - [14, [0, 0]], - [16, [-2, -2]] - ] - } as any - } - }, - { - id: 'tunnel-service-track-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'service', 'track'] - ], - layout: { 'line-join': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#cfcdca', - 'line-dasharray': [0.5, 0.25], - 'line-width': { - base: 1.2, - stops: [ - [15, 1], - [16, 4], - [20, 11] - ] - } - } - }, - { - id: 'tunnel-minor-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'minor']], - layout: { 'line-join': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#cfcdca', - 'line-opacity': { - stops: [ - [12, 0], - [12.5, 1] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [12, 0.5], - [13, 1], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'tunnel-secondary-tertiary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [8, 1.5], - [20, 17] - ] - } - } - }, - { - id: 'tunnel-trunk-primary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'primary', 'trunk'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-width': { - base: 1.2, - stops: [ - [5, 0.4], - [6, 0.6], - [7, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'tunnel-motorway-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'motorway']], - layout: { 'line-join': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#e9ac77', - 'line-dasharray': [0.5, 0.25], - 'line-width': { - base: 1.2, - stops: [ - [5, 0.4], - [6, 0.6], - [7, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'tunnel-path', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'path']] - ], - layout: { visibility: 'visible' }, - paint: { - 'line-color': '#cba', - 'line-dasharray': [1.5, 0.75], - 'line-width': { - base: 1.2, - stops: [ - [15, 1.2], - [20, 4] - ] - } - } - }, - { - id: 'tunnel-service-track', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'service', 'track'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fff', - 'line-width': { - base: 1.2, - stops: [ - [15.5, 0], - [16, 2], - [20, 7.5] - ] - } - } - }, - { - id: 'tunnel-minor', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'minor_road']], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fff', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [13.5, 0], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'tunnel-secondary-tertiary', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fff4c6', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 10] - ] - } - } - }, - { - id: 'tunnel-trunk-primary', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'primary', 'trunk'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fff4c6', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - } - } - }, - { - id: 'tunnel-motorway', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'motorway']], - layout: { 'line-join': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#ffdaa6', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - } - } - }, - { - id: 'tunnel-railway', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'rail']], - paint: { - 'line-color': '#bbb', - 'line-dasharray': [2, 2], - 'line-width': { - base: 1.4, - stops: [ - [14, 0.4], - [15, 0.75], - [20, 2] - ] - } - } - }, - { - id: 'ferry', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['in', 'class', 'ferry']], - layout: { 'line-join': 'round', visibility: 'none' }, - paint: { - 'line-color': 'rgba(108, 159, 182, 1)', - 'line-dasharray': [2, 2], - 'line-width': 1.1 - } - }, - { - id: 'aeroway-taxiway-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'aeroway', - minzoom: 12, - filter: ['all', ['in', 'class', 'taxiway']], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'rgba(153, 153, 153, 1)', - 'line-opacity': 1, - 'line-width': { - base: 1.5, - stops: [ - [11, 2], - [17, 12] - ] - } - } - }, - { - id: 'aeroway-runway-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'aeroway', - minzoom: 12, - filter: ['all', ['in', 'class', 'runway']], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'rgba(153, 153, 153, 1)', - 'line-opacity': 1, - 'line-width': { - base: 1.5, - stops: [ - [11, 5], - [17, 55] - ] - } - } - }, - { - id: 'aeroway-area', - type: 'fill', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'aeroway', - minzoom: 4, - filter: [ - 'all', - ['==', '$type', 'Polygon'], - ['in', 'class', 'runway', 'taxiway'] - ], - layout: { visibility: 'visible' }, - paint: { - 'fill-color': 'rgba(255, 255, 255, 1)', - 'fill-opacity': { - base: 1, - stops: [ - [13, 0], - [14, 1] - ] - } - } - }, - { - id: 'aeroway-taxiway', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'aeroway', - minzoom: 4, - filter: ['all', ['in', 'class', 'taxiway'], ['==', '$type', 'LineString']], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'rgba(255, 255, 255, 1)', - 'line-opacity': { - base: 1, - stops: [ - [11, 0], - [12, 1] - ] - }, - 'line-width': { - base: 1.5, - stops: [ - [11, 1], - [17, 10] - ] - } - } - }, - { - id: 'aeroway-runway', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'aeroway', - minzoom: 4, - filter: ['all', ['in', 'class', 'runway'], ['==', '$type', 'LineString']], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'rgba(255, 255, 255, 1)', - 'line-opacity': { - base: 1, - stops: [ - [11, 0], - [12, 1] - ] - }, - 'line-width': { - base: 1.5, - stops: [ - [11, 4], - [17, 50] - ] - } - } - }, - { - id: 'road_area_pier', - type: 'fill', - metadata: {}, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', '$type', 'Polygon'], ['==', 'class', 'pier']], - layout: { visibility: 'none' }, - paint: { 'fill-antialias': true, 'fill-color': '#f8f4f0' } - }, - { - id: 'road_pier', - type: 'line', - metadata: {}, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 0, - filter: ['all', ['==', '$type', 'LineString'], ['in', 'class', 'pier']], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'none' - }, - paint: { - 'line-color': '#f8f4f0', - 'line-width': { - base: 1.2, - stops: [ - [15, 1], - [17, 4] - ] - } - } - }, - { - id: 'highway-area', - type: 'fill', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', '$type', 'Polygon'], ['!in', 'class', 'pier']], - layout: { visibility: 'visible' }, - paint: { - 'fill-antialias': false, - 'fill-color': 'hsla(0, 0%, 89%, 0.56)', - 'fill-opacity': 0.9, - 'fill-outline-color': '#cfcdca' - } - }, - { - id: 'highway-motorway-link-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 12, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'motorway_link'] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [12, 1], - [13, 3], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'highway-link-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 13, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - [ - 'in', - 'class', - 'primary_link', - 'secondary_link', - 'tertiary_link', - 'trunk_link' - ] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [12, 1], - [13, 3], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'highway-minor-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!=', 'brunnel', 'tunnel'], - ['in', 'class', 'minor', 'service', 'track'] - ] - ], - layout: { 'line-cap': 'round', 'line-join': 'round' }, - paint: { - 'line-color': '#cfcdca', - 'line-opacity': { - stops: [ - [12, 0], - [12.5, 1] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [12, 0.5], - [13, 1], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'highway-secondary-tertiary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { - 'line-cap': 'butt', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [8, 1.5], - [20, 17] - ] - } - } - }, - { - id: 'highway-primary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 5, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['in', 'class', 'primary'] - ], - layout: { - 'line-cap': 'butt', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': { - stops: [ - [7, 0], - [8, 1] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [7, 0], - [8, 0.6], - [9, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'highway-trunk-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 5, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['in', 'class', 'trunk'] - ], - layout: { - 'line-cap': 'butt', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': { - stops: [ - [5, 0], - [6, 1] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [5, 0], - [6, 0.6], - [7, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'highway-motorway-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 4, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'motorway'] - ], - layout: { - 'line-cap': 'butt', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': { - stops: [ - [4, 0], - [5, 1] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [4, 0], - [5, 0.4], - [6, 0.6], - [7, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'highway-path', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'class', 'path']] - ], - paint: { - 'line-color': '#cba', - 'line-dasharray': [1.5, 0.75], - 'line-width': { - base: 1.2, - stops: [ - [15, 1.2], - [20, 4] - ] - } - } - }, - { - id: 'highway-motorway-link', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 12, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'motorway_link'] - ], - layout: { 'line-cap': 'round', 'line-join': 'round' }, - paint: { - 'line-color': '#fc8', - 'line-width': { - base: 1.2, - stops: [ - [12.5, 0], - [13, 1.5], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'highway-link', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 13, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - [ - 'in', - 'class', - 'primary_link', - 'secondary_link', - 'tertiary_link', - 'trunk_link' - ] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [12.5, 0], - [13, 1.5], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'highway-minor', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!=', 'brunnel', 'tunnel'], - ['in', 'class', 'minor', 'service', 'track'] - ] - ], - layout: { 'line-cap': 'round', 'line-join': 'round' }, - paint: { - 'line-color': '#fff', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [13.5, 0], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'highway-secondary-tertiary', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [8, 0.5], - [20, 13] - ] - } - } - }, - { - id: 'highway-primary', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['in', 'class', 'primary'] - ] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [8.5, 0], - [9, 0.5], - [20, 18] - ] - } - } - }, - { - id: 'highway-trunk', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'trunk']] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - } - } - }, - { - id: 'highway-motorway', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 5, - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'motorway'] - ] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#fc8', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - } - } - }, - { - id: 'railway-transit', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'class', 'transit'], ['!in', 'brunnel', 'tunnel']] - ], - layout: { visibility: 'visible' }, - paint: { - 'line-color': 'hsla(0, 0%, 73%, 0.77)', - 'line-width': { - base: 1.4, - stops: [ - [14, 0.4], - [20, 1] - ] - } - } - }, - { - id: 'railway-transit-hatching', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'class', 'transit'], ['!in', 'brunnel', 'tunnel']] - ], - layout: { visibility: 'visible' }, - paint: { - 'line-color': 'hsla(0, 0%, 73%, 0.68)', - 'line-dasharray': [0.2, 8], - 'line-width': { - base: 1.4, - stops: [ - [14.5, 0], - [15, 2], - [20, 6] - ] - } - } - }, - { - id: 'railway-service', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'class', 'rail'], ['has', 'service']] - ], - paint: { - 'line-color': 'hsla(0, 0%, 73%, 0.77)', - 'line-width': { - base: 1.4, - stops: [ - [14, 0.4], - [20, 1] - ] - } - } - }, - { - id: 'railway-service-hatching', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'class', 'rail'], ['has', 'service']] - ], - layout: { visibility: 'visible' }, - paint: { - 'line-color': 'hsla(0, 0%, 73%, 0.68)', - 'line-dasharray': [0.2, 8], - 'line-width': { - base: 1.4, - stops: [ - [14.5, 0], - [15, 2], - [20, 6] - ] - } - } - }, - { - id: 'railway', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!has', 'service'], - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'rail'] - ] - ], - paint: { - 'line-color': '#bbb', - 'line-width': { - base: 1.4, - stops: [ - [14, 0.4], - [15, 0.75], - [20, 2] - ] - } - } - }, - { - id: 'railway-hatching', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!has', 'service'], - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'rail'] - ] - ], - paint: { - 'line-color': '#bbb', - 'line-dasharray': [0.2, 8], - 'line-width': { - base: 1.4, - stops: [ - [14.5, 0], - [15, 3], - [20, 8] - ] - } - } - }, - { - id: 'bridge-motorway-link-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['==', 'class', 'motorway_link'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [12, 1], - [13, 3], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'bridge-link-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - [ - 'in', - 'class', - 'primary_link', - 'secondary_link', - 'tertiary_link', - 'trunk_link' - ] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [12, 1], - [13, 3], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'bridge-secondary-tertiary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [8, 1.5], - [20, 28] - ] - } - } - }, - { - id: 'bridge-trunk-primary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['in', 'class', 'primary', 'trunk'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': 'hsl(28, 76%, 67%)', - 'line-width': { - base: 1.2, - stops: [ - [5, 0.4], - [6, 0.6], - [7, 1.5], - [20, 26] - ] - } - } - }, - { - id: 'bridge-motorway-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'motorway']], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-width': { - base: 1.2, - stops: [ - [5, 0.4], - [6, 0.6], - [7, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'bridge-path-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'path']] - ], - paint: { - 'line-color': '#f8f4f0', - 'line-width': { - base: 1.2, - stops: [ - [15, 1.2], - [20, 18] - ] - } - } - }, - { - id: 'bridge-path', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'path']] - ], - paint: { - 'line-color': '#cba', - 'line-dasharray': [1.5, 0.75], - 'line-width': { - base: 1.2, - stops: [ - [15, 1.2], - [20, 4] - ] - } - } - }, - { - id: 'bridge-motorway-link', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['==', 'class', 'motorway_link'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fc8', - 'line-width': { - base: 1.2, - stops: [ - [12.5, 0], - [13, 1.5], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'bridge-link', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - [ - 'in', - 'class', - 'primary_link', - 'secondary_link', - 'tertiary_link', - 'trunk_link' - ] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [12.5, 0], - [13, 1.5], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'bridge-secondary-tertiary', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 20] - ] - } - } - }, - { - id: 'bridge-trunk-primary', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['in', 'class', 'primary', 'trunk'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - } - } - }, - { - id: 'bridge-motorway', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'motorway']], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fc8', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - } - } - }, - { - id: 'bridge-railway', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'rail']], - paint: { - 'line-color': '#bbb', - 'line-width': { - base: 1.4, - stops: [ - [14, 0.4], - [15, 0.75], - [20, 2] - ] - } - } - }, - { - id: 'bridge-railway-hatching', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'rail']], - paint: { - 'line-color': '#bbb', - 'line-dasharray': [0.2, 8], - 'line-width': { - base: 1.4, - stops: [ - [14.5, 0], - [15, 3], - [20, 8] - ] - } - } - }, - { - id: 'cablecar', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 13, - filter: ['==', 'class', 'cable_car'], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': 'hsl(0, 0%, 70%)', - 'line-width': { - base: 1, - stops: [ - [11, 1], - [19, 2.5] - ] - } - } - }, - { - id: 'cablecar-dash', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 13, - filter: ['==', 'class', 'cable_car'], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': 'hsl(0, 0%, 70%)', - 'line-dasharray': [2, 3], - 'line-width': { - base: 1, - stops: [ - [11, 3], - [19, 5.5] - ] - } - } - }, - { - id: 'boundary-land-level-4', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'boundary', - filter: [ - 'all', - ['>=', 'admin_level', 4], - ['<=', 'admin_level', 8], - ['!=', 'maritime', 1] - ], - layout: { 'line-join': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#9e9cab', - 'line-dasharray': [3, 1, 1, 1], - 'line-width': { - base: 1.4, - stops: [ - [4, 0.4], - [5, 1], - [12, 3] - ] - } - } - }, - { - id: 'boundary-land-level-2', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'boundary', - filter: [ - 'all', - ['==', 'admin_level', 2], - ['!=', 'maritime', 1], - ['!=', 'disputed', 1] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'hsl(248, 7%, 66%)', - 'line-width': { - base: 1, - stops: [ - [0, 0.6], - [4, 1.4], - [5, 2], - [12, 8] - ] - } - } - }, - { - id: 'boundary-land-disputed', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'boundary', - filter: ['all', ['!=', 'maritime', 1], ['==', 'disputed', 1]], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'hsl(248, 7%, 70%)', - 'line-dasharray': [1, 3], - 'line-width': { - base: 1, - stops: [ - [0, 0.6], - [4, 1.4], - [5, 2], - [12, 8] - ] - } - } - }, - { - id: 'boundary-water', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'boundary', - filter: ['all', ['in', 'admin_level', 2, 4], ['==', 'maritime', 1]], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'rgba(154, 189, 214, 1)', - 'line-opacity': { - stops: [ - [6, 0.6], - [10, 1] - ] - }, - 'line-width': { - base: 1, - stops: [ - [0, 0.6], - [4, 1.4], - [5, 2], - [12, 8] - ] - } - } - }, - { - id: 'waterway-name', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'waterway', - minzoom: 13, - filter: ['all', ['==', '$type', 'LineString'], ['has', 'name']], - layout: { - 'symbol-placement': 'line', - 'symbol-spacing': 350, - 'text-field': '{name:latin} {name:nonlatin}', - 'text-font': ['Noto Sans Italic'], - 'text-letter-spacing': 0.2, - 'text-max-width': 5, - 'text-rotation-alignment': 'map', - 'text-size': 14, - visibility: 'visible' - }, - paint: { - 'text-color': '#74aee9', - 'text-halo-color': 'rgba(255,255,255,0.7)', - 'text-halo-width': 1.5 - } - }, - { - id: 'communes', - type: 'line', - source: 'decoupage-administratif', - 'source-layer': 'communes', - minzoom: 10, - maxzoom: 24, - layout: { visibility: 'visible' } - }, - { - id: 'departements', - type: 'line', - source: 'decoupage-administratif', - 'source-layer': 'departements', - layout: { visibility: 'visible' } - }, - { - id: 'regions', - type: 'line', - source: 'decoupage-administratif', - 'source-layer': 'regions', - layout: { visibility: 'visible' } - }, - { - id: 'water-name-lakeline', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'water_name', - filter: ['==', '$type', 'LineString'], - layout: { - 'symbol-placement': 'line', - 'symbol-spacing': 350, - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Italic'], - 'text-letter-spacing': 0.2, - 'text-max-width': 5, - 'text-rotation-alignment': 'map', - 'text-size': 14 - }, - paint: { - 'text-color': '#74aee9', - 'text-halo-color': 'rgba(255,255,255,0.7)', - 'text-halo-width': 1.5 - } - }, - { - id: 'water-name-ocean', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'water_name', - filter: ['all', ['==', '$type', 'Point'], ['==', 'class', 'ocean']], - layout: { - 'symbol-placement': 'point', - 'symbol-spacing': 350, - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Italic'], - 'text-letter-spacing': 0.2, - 'text-max-width': 5, - 'text-rotation-alignment': 'map', - 'text-size': 14 - }, - paint: { - 'text-color': '#74aee9', - 'text-halo-color': 'rgba(255,255,255,0.7)', - 'text-halo-width': 1.5 - } - }, - { - id: 'water-name-other', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'water_name', - filter: ['all', ['==', '$type', 'Point'], ['!in', 'class', 'ocean']], - layout: { - 'symbol-placement': 'point', - 'symbol-spacing': 350, - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Italic'], - 'text-letter-spacing': 0.2, - 'text-max-width': 5, - 'text-rotation-alignment': 'map', - 'text-size': { - stops: [ - [0, 10], - [6, 14] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': '#74aee9', - 'text-halo-color': 'rgba(255,255,255,0.7)', - 'text-halo-width': 1.5 - } - }, - { - id: 'road_oneway', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 15, - filter: [ - 'all', - ['==', 'oneway', 1], - [ - 'in', - 'class', - 'motorway', - 'trunk', - 'primary', - 'secondary', - 'tertiary', - 'minor', - 'service' - ] - ], - layout: { - 'icon-image': 'oneway', - 'icon-padding': 2, - 'icon-rotate': 90, - 'icon-rotation-alignment': 'map', - 'icon-size': { - stops: [ - [15, 0.5], - [19, 1] - ] - }, - 'symbol-placement': 'line', - 'symbol-spacing': 75, - visibility: 'visible' - }, - paint: { 'icon-opacity': 0.5 } - }, - { - id: 'road_oneway_opposite', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 15, - filter: [ - 'all', - ['==', 'oneway', -1], - [ - 'in', - 'class', - 'motorway', - 'trunk', - 'primary', - 'secondary', - 'tertiary', - 'minor', - 'service' - ] - ], - layout: { - 'icon-image': 'oneway', - 'icon-padding': 2, - 'icon-rotate': -90, - 'icon-rotation-alignment': 'map', - 'icon-size': { - stops: [ - [15, 0.5], - [19, 1] - ] - }, - 'symbol-placement': 'line', - 'symbol-spacing': 75, - visibility: 'visible' - }, - paint: { 'icon-opacity': 0.5 } - }, - { - id: 'highway-name-path', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 15.5, - filter: ['==', 'class', 'path'], - layout: { - 'symbol-placement': 'line', - 'text-field': '{name:latin} {name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'map', - 'text-size': { - base: 1, - stops: [ - [13, 12], - [14, 13] - ] - } - }, - paint: { - 'text-color': 'hsl(30, 23%, 62%)', - 'text-halo-color': '#f8f4f0', - 'text-halo-width': 0.5 - } - }, - { - id: 'highway-name-minor', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 15, - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['in', 'class', 'minor', 'service', 'track'] - ], - layout: { - 'symbol-placement': 'line', - 'text-field': '{name:latin} {name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'map', - 'text-size': { - base: 1, - stops: [ - [13, 12], - [14, 13] - ] - } - }, - paint: { - 'text-color': '#765', - 'text-halo-blur': 0.5, - 'text-halo-width': 1 - } - }, - { - id: 'highway-name-major', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 12.2, - filter: ['in', 'class', 'primary', 'secondary', 'tertiary', 'trunk'], - layout: { - 'symbol-placement': 'line', - 'text-field': '{name:latin} {name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'map', - 'text-size': { - base: 1, - stops: [ - [13, 12], - [14, 13] - ] - } - }, - paint: { - 'text-color': '#765', - 'text-halo-blur': 0.5, - 'text-halo-width': 1 - } - }, - { - id: 'highway-shield', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 8, - filter: [ - 'all', - ['<=', 'ref_length', 6], - ['==', '$type', 'LineString'], - ['!in', 'network', 'us-interstate', 'us-highway', 'us-state'] - ], - layout: { - 'icon-image': 'road_{ref_length}', - 'icon-rotation-alignment': 'viewport', - 'icon-size': 1, - 'symbol-placement': { - base: 1, - stops: [ - [10, 'point'], - [11, 'line'] - ] - } as any, - 'symbol-spacing': 200, - 'text-field': '{ref}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'viewport', - 'text-size': 10 - }, - paint: {} - }, - { - id: 'highway-shield-us-interstate', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 7, - filter: [ - 'all', - ['<=', 'ref_length', 6], - ['==', '$type', 'LineString'], - ['in', 'network', 'us-interstate'] - ], - layout: { - 'icon-image': '{network}_{ref_length}', - 'icon-rotation-alignment': 'viewport', - 'icon-size': 1, - 'symbol-placement': { - base: 1, - stops: [ - [7, 'point'], - [7, 'line'], - [8, 'line'] - ] - } as any, - 'symbol-spacing': 200, - 'text-field': '{ref}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'viewport', - 'text-size': 10 - }, - paint: { 'text-color': 'rgba(0, 0, 0, 1)' } - }, - { - id: 'highway-shield-us-other', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 9, - filter: [ - 'all', - ['<=', 'ref_length', 6], - ['==', '$type', 'LineString'], - ['in', 'network', 'us-highway', 'us-state'] - ], - layout: { - 'icon-image': '{network}_{ref_length}', - 'icon-rotation-alignment': 'viewport', - 'icon-size': 1, - 'symbol-placement': { - base: 1, - stops: [ - [10, 'point'], - [11, 'line'] - ] - } as any, - 'symbol-spacing': 200, - 'text-field': '{ref}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'viewport', - 'text-size': 10 - }, - paint: { 'text-color': 'rgba(0, 0, 0, 1)' } - }, - { - id: 'airport-label-major', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'aerodrome_label', - minzoom: 10, - filter: ['all', ['has', 'iata']], - layout: { - 'icon-image': 'airport_11', - 'icon-size': 1, - 'text-anchor': 'top', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 9, - 'text-offset': [0, 0.6], - 'text-optional': true, - 'text-padding': 2, - 'text-size': 12, - visibility: 'visible' - }, - paint: { - 'text-color': '#666', - 'text-halo-blur': 0.5, - 'text-halo-color': '#ffffff', - 'text-halo-width': 1 - } - }, - { - id: 'poi-level-3', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'poi', - minzoom: 16, - filter: [ - 'all', - ['==', '$type', 'Point'], - ['>=', 'rank', 25], - ['any', ['!has', 'level'], ['==', 'level', 0]] - ], - layout: { - 'icon-image': '{class}_11', - 'text-anchor': 'top', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 9, - 'text-offset': [0, 0.6], - 'text-padding': 2, - 'text-size': 12, - visibility: 'visible' - }, - paint: { - 'text-color': '#666', - 'text-halo-blur': 0.5, - 'text-halo-color': '#ffffff', - 'text-halo-width': 1 - } - }, - { - id: 'poi-level-2', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'poi', - minzoom: 15, - filter: [ - 'all', - ['==', '$type', 'Point'], - ['<=', 'rank', 24], - ['>=', 'rank', 15], - ['any', ['!has', 'level'], ['==', 'level', 0]] - ], - layout: { - 'icon-image': '{class}_11', - 'text-anchor': 'top', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 9, - 'text-offset': [0, 0.6], - 'text-padding': 2, - 'text-size': 12, - visibility: 'visible' - }, - paint: { - 'text-color': '#666', - 'text-halo-blur': 0.5, - 'text-halo-color': '#ffffff', - 'text-halo-width': 1 - } - }, - { - id: 'poi-level-1', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'poi', - minzoom: 14, - filter: [ - 'all', - ['==', '$type', 'Point'], - ['<=', 'rank', 14], - ['has', 'name'], - ['any', ['!has', 'level'], ['==', 'level', 0]] - ], - layout: { - 'icon-image': '{class}_11', - 'text-anchor': 'top', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 9, - 'text-offset': [0, 0.6], - 'text-padding': 2, - 'text-size': 12, - visibility: 'visible' - }, - paint: { - 'text-color': '#666', - 'text-halo-blur': 0.5, - 'text-halo-color': '#ffffff', - 'text-halo-width': 1 - } - }, - { - id: 'poi-railway', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'poi', - minzoom: 13, - filter: [ - 'all', - ['==', '$type', 'Point'], - ['has', 'name'], - ['==', 'class', 'railway'], - ['==', 'subclass', 'station'] - ], - layout: { - 'icon-allow-overlap': false, - 'icon-ignore-placement': false, - 'icon-image': '{class}_11', - 'icon-optional': false, - 'text-allow-overlap': false, - 'text-anchor': 'top', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-ignore-placement': false, - 'text-max-width': 9, - 'text-offset': [0, 0.6], - 'text-optional': true, - 'text-padding': 2, - 'text-size': 12 - }, - paint: { - 'text-color': '#666', - 'text-halo-blur': 0.5, - 'text-halo-color': '#ffffff', - 'text-halo-width': 1 - } - }, - { - id: 'place-other', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: ['!in', 'class', 'city', 'town', 'village', 'country', 'continent'], - layout: { - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Bold'], - 'text-letter-spacing': 0.1, - 'text-max-width': 9, - 'text-size': { - base: 1.2, - stops: [ - [12, 10], - [15, 14] - ] - }, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#633', - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 1.2 - } - }, - { - id: 'place-village', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: ['==', 'class', 'village'], - layout: { - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 8, - 'text-size': { - base: 1.2, - stops: [ - [10, 12], - [15, 22] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': '#333', - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 1.2 - } - }, - { - id: 'place-town', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: ['==', 'class', 'town'], - layout: { - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 8, - 'text-size': { - base: 1.2, - stops: [ - [10, 14], - [15, 24] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': '#333', - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 1.2 - } - }, - { - id: 'place-city', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: ['all', ['!=', 'capital', 2], ['==', 'class', 'city']], - layout: { - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 8, - 'text-size': { - base: 1.2, - stops: [ - [7, 14], - [11, 24] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': '#333', - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 1.2 - } - }, - { - id: 'place-city-capital', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: ['all', ['==', 'capital', 2], ['==', 'class', 'city']], - layout: { - 'icon-image': 'star_11', - 'icon-size': 0.8, - 'text-anchor': 'left', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 8, - 'text-offset': [0.4, 0], - 'text-size': { - base: 1.2, - stops: [ - [7, 14], - [11, 24] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': '#333', - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 1.2 - } - }, - { - id: 'place-country-other', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: [ - 'all', - ['==', 'class', 'country'], - ['>=', 'rank', 3], - ['!has', 'iso_a2'] - ], - layout: { - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Italic'], - 'text-max-width': 6.25, - 'text-size': { - stops: [ - [3, 11], - [7, 17] - ] - }, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#334', - 'text-halo-blur': 1, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 2 - } - }, - { - id: 'place-country-3', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: [ - 'all', - ['==', 'class', 'country'], - ['>=', 'rank', 3], - ['has', 'iso_a2'] - ], - layout: { - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Bold'], - 'text-max-width': 6.25, - 'text-size': { - stops: [ - [3, 11], - [7, 17] - ] - }, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#334', - 'text-halo-blur': 1, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 2 - } - }, - { - id: 'place-country-2', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: [ - 'all', - ['==', 'class', 'country'], - ['==', 'rank', 2], - ['has', 'iso_a2'] - ], - layout: { - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Bold'], - 'text-max-width': 6.25, - 'text-size': { - stops: [ - [2, 11], - [5, 17] - ] - }, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#334', - 'text-halo-blur': 1, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 2 - } - }, - { - id: 'place-country-1', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: [ - 'all', - ['==', 'class', 'country'], - ['==', 'rank', 1], - ['has', 'iso_a2'] - ], - layout: { - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Bold'], - 'text-max-width': 6.25, - 'text-size': { - stops: [ - [1, 11], - [4, 17] - ] - }, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#334', - 'text-halo-blur': 1, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 2 - } - }, - { - id: 'place-continent', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - maxzoom: 1, - filter: ['==', 'class', 'continent'], - layout: { - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Bold'], - 'text-max-width': 6.25, - 'text-size': 14, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#334', - 'text-halo-blur': 1, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 2 - } - } -]; - -export default layers; diff --git a/app/javascript/entrypoints/main.css b/app/javascript/entrypoints/main.css index c6e48839d..aa49669eb 100644 --- a/app/javascript/entrypoints/main.css +++ b/app/javascript/entrypoints/main.css @@ -40,3 +40,4 @@ @import '@gouvfr/dsfr/dist/component/accordion/accordion.css'; @import '@gouvfr/dsfr/dist/component/tab/tab.css'; @import '@gouvfr/dsfr/dist/component/tooltip/tooltip.css'; +@import '@gouvfr/dsfr/dist/component/range/range.css'; diff --git a/bun.lockb b/bun.lockb index 6b65bcae7f9362d7a71b4a9ef707899f99581504..cca1141dfbf3af4ea8019ba9a2a4f7c20e27a5d1 100755 GIT binary patch delta 114418 zcmeBKtJw2gae|)a)O0!C&B0Zs{_%$r?yiVqs95sOZMA^(kE=mvLfFNeE&dd7Fo1yF z#BllgV|uJ0HWDsoV_@KBU}z{xO-wFfU| z%frAR%D~VN1$C$&8^nR)ybuf2CVMifGrCMJWE7XQ7JxX~N)Y1cd4do%6DBWY6t6cB zfH-9mKg0wrVF+DV4DuKQ!*3`*Rs`au01*ZTUIvDS{~{258Ho^upP=IIA`siq)fE)w z=VlhCG9(r!7Jy6^6J}r#VPL3lm?aD`=!h`HS#shG48jZy4eNv<7F`gBh#wS(IDe`H z#3Aiax<&$`KSKg+U_)kcVo_0IB}0q^#3RXx#i==|#l^dYAr9Lp1u-u-GdEQ?#W{&# zkrc$>QfY|6iN%$9$=R7DOQ9NI4(t+UU=UznfIIlP48(%6$v>IoIi2Mo&efT$$SfZ? zTOMMWtUScb%wpa2octt)2nC4c{7~^n3JeT_3=9n{@(@oX6(uI87BeucSA?khstD2V zK6xUuxDm{bpGpwfyu`fx%oGNO4t@w-jVwR_A8sWfmkB7iVffoQ|GsUaLdI*Jwh5VZJ8B!#oTS z@pvtWrFz;B8WhQ(JOdNouMJ7MTeKneJ=X%$^$ja@AO?NcfoOzjfYG=NysZv#h=(57 zpaxqgU7nGdoWa1rkXf8sk;=fpa9$4*zYFvs_7o(RWawt6R?4Y^LMxb|p*S_S43tY@ zKCev7$;m7(VL%T7aBgK_Xec*;7$gKXfT2Of2;%U}yiAa%8A2yFvWj~?fr?%;f<$4Q zF@*MnW;A`G9~2+CnZ+fhlOM9GGg?pPWRth_w1C(&#SB8< zumE|1p`qCfl8nkNAv8=~Mt*)a$Y*(z6WPQii_IVbre+N(WRf!ybFvv27!FOI$R?hd zU&9{Zvm6u-tDiRs;i&OK;7#JAB?I7xX?I3Q-$xJIL zEnr|MN-fUMDNAMOv1eeAXJBY(vWLi*OcrDp=hT4mEG8SW%hyZVL!v0NI6o;XHMxWf z%1_J8OHE;5U~qPZgxyMKh+S`-A?g=E`BR-CN#KYJ#EzXV5Wa^igr4XM(Qg4&rwP?x z=mwUrZ%B88Xq0t^c+$rVEYZ;E4xul(Lkv*yfJ8kkjn%tD^p!x>rB;-r=A|$&aM(f| z3eNNl3=A;yV0?Qsh&iU@7oMi9A?`)b z#2Jajx`}zknXpU^Ed?4b^Fb=KN1+h&u7*O)>kb3Ef~%n^3}WHQ$rm}rIoF1Rg&P)4 z{>UjVI6WK^OUjWDQPIhgT=JaJP|={tj$G=J`$8dVU}}p?5=%;pQ;S6>H*%Rv#>PV8 zaWhoa!&r#(jVE8^5|=y`2hqDP4q|?3UO{F-Dg(o!$&B3kj4YE4xy3Di#Y0TUFGvMd z~^rFOqjKUm-lH#1qBnAeC zNqi8SJNY1{z|vc8YEgQs5d(wf#Nj8aAwGHy@lgX`5ySzYx+SkayP!DR@rnW#7gtR~`aA|=A>8nPFgL(@g z{Fki|hg@xi`20{S#GsjN5W2GsqAsHyqOJg{?|(Z)ePSUbYA1C-%nd1Is0X)i|8zoJ zmfQsiqQ{+(C=u$0_@Jm8V&Iuh2w%7d!jJ2O&>MRo4%iBnp9iHoIw2mr*$Z(%F;u-* zCxpMPuO8wO^G=8XZvBuDP=WGo3n96}xDb-cH%^2&U>1~)odj|4fk_a3aT6dR&@vHX z@#M)6bMq%c92z|lVsY^l2;aRPD)4gxL}BPuhyr7%_{XUb2g*bFJQE@6o=<>?b5Dox zuR{5Uq4Y*5y_?)&u!H2jY%`xsU*PFb85jde0n}lb0BnjegUY>!2nfP-w-nw5&&t% zx~UZ{%n4cq zDRy0;^rJ-(hu>udd2q6skWhX2Qb;5pfzp|&sj23sCJY}JLzM1Z42j$~OCWxDumoas zc1ludaRvj!)g>UK7#a%lO9~Q`vl&h-fjAM?p4ku8w{;05QKcppC6|^kFf3XEHov~% zHK?V)z|b%Qs-SKOBzq(-ffQkGOCTBCbP2?7qDvSU6c`v9wAMf@o&=?ztbsVtbS=bz z>T4l>uUP|e&`~r#M82M(p%|+1Hk9s!(#82jCAx{l$w`$ZspXl)sU?*KVA^Q|#K6Dn zA#_nWxNXh=YgWTLMfVp&QpJqLkSdG?>Vfl%A=#!06tbWqQF=2ZXf8ry?Kmrh53aH^ z3v&#%Kw|sh7Dz~3-vW_mWrl=EZfa3JsH=Q^D+7Zj14D!27D&l6aXX|kMz77{7$FV_ zVq{>b2X&;9i;F>?V{qIFkucZ^F&Lx(B+s)0QbNt#1xc=-cY$gXh6eOxRk9rtWwZA% zFsLywG-&UIL{y_6CB-@Q;Ks=5{gAjS+7EF+?0!f_n2crJ{UPzkq-UD&KvVD*cov^PSlDez* zLFg4nAr6^v6r!L4N+%zMILP-XM4j|;h(ptkLqaNkA0%p=p$<~o2XV;06Oj5ic00r& z?%N^yO}9fF{JMS{Bra7?L4t_!G{nb0PC@9~ryz;!#VLq|r=hgL8Au51It6in@OB9O z8!B#h7NSoDDt_TCL_bU&6I8tZ>o$nO(DM+NZ95N9sBs=*py+vs1Le;{9K-{q|DA(` z6s#duauK2r#!rFr{Vzg74km7W5#muO-<#pcC5S~(0S2)x5TBJM>*Z!97v&dShVXM! zN{ezB7#K1xLmUK?hvoarS0-DD>DBLJg}5^%u_RSDEw4E38YCu@GZKqR^s2jZaeI}nGa-hntM7)rZ9^=-Hh(N}XDqAunp zMBUXJ5ZdG>D2dfGG|1e9DENH?;*&KuAcEc_-(Y57s0R&49b$$U zw450d2k?A^c%-B# zu?#%m3$1ESeS(Nj_zdyj)6Wp|_k1#d81&-<#NzVwVha-n1_ldgNQf~*(!?7khy}~P zPF^J$R)6gmBn_2=su2bThBLn)?wv$m$xxA-1In<)nNab( z^5VpTOa=zeUyvHb0%}o8YEo%B0|P@Y)ZuR!7{SBf8owa^6#fNC!>}P*PN>HienA|T zTnwuE>T^0TN}d zER5g@0COnc7|K_K(na|>IiNwaJ-m$Iq1u@YkScR41Ej8A%*)7751J5Yu5PnL2a!FBUUTR_%*c1lP=wene1B0m!BxgzMFoMTk<|#sQY=a^s zeWofhf(HuZ^dRXoS`ln-eS2dDtpQ-Au*I{39&E+s_~Tt z#3C3y$qZ7~Y%ql+8Cd_e+6?0G6et}8RcB!aaoBSch{HHdAm%HWF@i_8xXl)b|- zFbB^uf~bQIEx;#HVQC4LHegW#)2C1mjSKXkgZU5^WatLNLI_>_qY)$*ZS;Y7fZrDq zg_XV#J}gng(oj7t6^r;mf-KS>5|`)(`$NSui*<`rOF)xwy1AeU-~Yalpnu^DiK^?q zkhB7eI`j~Lg&Z^_>fu2MOO>#YfQ10eAut+dAj~JQT!AYW!1O^aY=G&9*jJB;L)dT< zOasiNu-pO54Y0U_r3F|nfH@pJwZjrAD7%41Kw-HHY!4{^<1!d#5zGRZ!C;LH3=Ocf z0ZZjDahN_>s)rTXH;o{<;CK`yjT|y!WT*!%K3D~nfTiMhjF9#%biSP7L<}TNRi?a3Ky-;uWPPrsx)Ar$;72EIykENmLsWA+4y?q9RaXTyZD~qJBP9-ai?Vh|wpj zK$BCTNl)0M6k=w&9@5fYm<(xM?TUkBmv5<%TB_GA?g#0ia;Zp40GZjkx)iDq zCjTc367*?MeJQD+PB{ZZaZVy=IFO+Lk}DYkb0Fp}%YlRttQLedHy&j}#5qCLX;LKv zL+9j=YT{9c@*pMr<~)e@6?qV4bMheWZ-&y-3n1YH<98K6BCxCgq93L{wKzF3Cov_p ztYC7Ix>|ivF+^EHF{Cv5RRS^QUaT!kL|>Y) zvH{Xun%)5M!98f(RJQ_BmkSj`95|m5(t~VihIAKPn;{nIHbe3_TMHya4VWMa96UJ; zYHz|)Y)Uhve^Ji}>C#2DL454gHd#y4j`dpyBZI)?QcY*BUEPqdUfsREB|9IW$@`)EBZe(8P z&r@}dFMN|)SyTPIW3SJgoDJI+%01b=s3vi>rdn#eebmgmQ?>=RJu~?Ajf-^$!^G1Y z@1JUzYqwl4!nP@8f>7vXrIj1pZuf67+@ZPa!zy*A-p0uZHW>od64t*m+e6ZV9xuzD zlC(Z-^9dUR=1C3-n=>3HFl}1SOSZ6==#wr5nB%o$?OQOVB0 zV8y`DF#TXBv%%zsV2;TTA~+^b2(jSY%+A1Iz`)SJIQe3*IpgEWoT2uN(vv+y?HR)+ zcZS+CE}48X)Si)RGG~}QW6osHFnh)olRLxg8J|r)8D`I@HJLNqo-uZ^XShA%)ybXV zAYCWJ?O9iHGcb5f_npFM!vSJ3Ff=fL%x4YaVPJ5Z+#6=iIAik32z$nBlQ|>p85Jjc zM%pvRP40}eXIww|WTZXgyvdwV_MB(jI!qp5ny2OfVel(oOO-> z1B1b2-VkffGXfB`j3Bj~poTWczs!>-hM6;ZPCglJ&$&X7fx!mil1OvTCxQ$NE)a7f z%sDlL7#J)V7#f(SU(8{&n0zwEo^yr}1A`q{fnbR_=QSY)1_uU)2DZr)gUvb3gke08 z!_G}U8EenUE&>r_oIEkcf^U{WAd$y3`C^PYXM`97LjVIq1M_sj zOh${zoQd{~k0yI2+H)F;Gcfpp?Y|gl&R9SBWTHLiEpb?A2>!C*kYHeN19^Y4U^SS7 z2$|;+uy7KLFz3{kgt(m*6t0|^k`N1-CSQy+=iDjDz+eWpMXC-GO1|jJ1{)hBo6*>k3=GB6lHyb)#2F;kU+A&G&Z0UR6+!5o~NYOwGC zj4|h2rNO{p&A`yWHGQHdqXmZsBq%t+Auq29aX8o}&Qwi^9Mj~$baTc%lRb;#AIG8N7Aw1T}7pGWoXhSkI%jAiX=A0-BIj(6lFoYrdUPlKK zs~q6y$%690!N<8(2NE%07cw$V<}9^GHICC(7h*5_X7^At47A znC`&I2o?bqRG>(m-r&Q?$)eA|U;(zm+yLSZQ1NEYIC1jH3VY6@29Tg+19_U`zX2ox z!0Q-JQ$vV6Cpd6XBP!nz8l_;lRfh0#A_7zkbynFk>PsjBS%S>+D(gnKCfgOa@uS zYz7Hb#>o>i%sJ79L58sXa{qMsm!2~kFjd<$$ERvTjr1e zWSK4)$7nIxv%#J<*aBqH*<@?R{>djB>^YxUKw^OjT>h$9!U`5p`P%{IF@usm=Os%> z7%+lL2u?mLh~*5ECq|ibI$1$1hg2{%RuD%sfXrlEGx=nbJ;yyONG%IW2%tdXw6SJj z0IffVlxP#IA--k-Y2mzJ4GCaKz80~81RgvYu=?0AFqnX9HjV}xNJWGQ{Bx5}w%D@@ z+A=VhP3}#%W(~ImrRlTD)|{(tAzoz!NA+u4h$F$JEu-{g&Nh3_1UqDJ%(8=d_+o@P z>oq%&oo6Gh8Eq$Xw%c>Awr5~S11BR;+{v)!K2ck;=0dyYvCkf1@h>DXk?4tvf& z4si1#%{g5iA$b^5oVGhcVu}r%!1h9U5SM;-gqQ~oTvl}_aDyktnkm<5@~KEW)};`E zJ{t}vNEkALN<+>-XGj==b#ZQThWLyDoN|6UL-Hv&f;b&rU~-^hsoDjSAs}|2bAh`V z)X;E6mJ3GV&3A>^2Ql+8TrM!doKw*aVjm;8G^ufenKCihoOPEQC_(ym*|4}VFgSqA z6*G5;0z`yQ0f|iaWoNYEaEDj}ah{ zgy_@ogaj$1l8o_$1OV81jMFA}PO#@Z<_S^H0LtTxER#7W+B2F?_MB+XS>XjSmwB?_ z9}5mINcsb7}#{v%XMNl3SsP)14Wb(;L_KcR3IVan5F7|;mdKe}P zmYQ>Z_JLT;I$1EvoY8Rd$;tMNrIR_Q*mExTWnj<&SC@f_=A4&(A?cSD9Hz>Cun-1i z+)O`6j$xcUae_JH!pWXf?Kz+O!2$ueyzVis_5{x=X}5IA+Qng&60H)H+e&YAX{=YwFDg8Zft3^NDR z080vHVDN$EQ_kJNkT`+lgTKL$Pyl<5Lq7zPwBY%cwKxQnHqS;{bFK%mz+o>KVb1Y7 z1mYUFN>q7HVc9svnP zMoJ0ibk~9|;Koa0$Y(ITE53syLW~^Km33yci}=%r$2eoqTeE zJ*#UJ1B2btR+GFU`Qpv=0b5MJFp*@FcG$irD4Py^3fw}#6#}@#IgiFOFqndq?8QmuoO}ro z*MbXjoO-;Vsvzm2EddgB9Fs5Rnsc5{fVd6fL*_(C+G3g>$jE5Ho(QRzA@Sm{o0B6E zl9#~sGUL_BoU83Q1(P799K`VWB$#o59nelR4M!@Z7tAzSu+5xvYbq@9f_fM%X^=vU5!@p2N@HNK2WME2@sraa zDw!q+E;DDmJo)5$drq5lNCggQwl7MDIDj480J)Y9i9bjKUnB#PCcr_$nUn!Zp^%RI ztPF@ZAjR!$f zoSW@Y1CUcU8=@Z)rzrY4^RgKjyupJBfnnyHJF{V_9aJ2?&xX2w`b1Sm3yvHHhA42_ z0(GiTO<9%$Nq5|!Duv@&4kY^ErL{yZB#2l+RU(s5E~xdv(VGkLF}$wkJe~^)J4k4; z<}om|L*gOIoUvyz=XQJ6J9(fYus710RU@B)!Fux9U~8tF{K;H9?Kqd`Lt2I4AY)=J znB29~j?<|CVu!%wi|yu|H3bX|#taM%Lg4(mz5wD%HgJ9OumDojg2$dXyNVeYd_haf zK~)IT_2S8=cG)pWmQ3c_ZO4>eGTCdl9n;E^$z8kcn4XqQKDFD9Q@#|EZ6JMa|5649 zchKkuC_ynzE1lf6$By%HDWspq2(~Y*3{qFJOcw02U@V*LwbzbQp&T-DzznL+nX1bt zpW183DO~|k2+4w}6_Bnj(`3O~3&x7cUHj}fY$_p6hh)S9J)9hs5Sth#U#u`^WvF6c zaG%_pVa?=THMwiQ9aC4;^Ph1;O5LUXF6Cnnd`6}lX(4Pufujs5%rV14%>0gsfQ`K zxWJr~xd9fS7Z;i{#Wzg$I%3DPq+xQ`5j&1 z49=5#4_h-uHcdWt)Q)LQ(`2q=c1&E&lf91Fapp8biYn&Gpw`HqW|(UQx0^HlZJx|^ z+>W)n1r%%`M;~gL+;!ZJld%<&UzsOQY&U1MZDn9^oZNfdnzgQ#fx%_++5Of`|5_(^ zov`C{ZG&VRP$-!*t!bOgb<&RMb=zdGlXjfi?eIV=uwZFtU~rwxd(xWeQ2S)AQ+7Og6KvFI94pX8#6{+;8a<$X0VvY*dM0z7wc|X}gA^XD zti7Os@I7YD>H}thQqtt!$z12`Sl{-7yv}>hn$@rm6yCl^t(i*tCZ9TI$8@3(>}~e` z$zJE}n8N!fcb&Imn$kb{)OkD3EB%ms&H&C`LK7x?U9e+1F>!L&1v@68Ns~`quwyNq z#K7P^x%YxK=fz1d?+dOrXX2YYx$B}Glh@?Qr!LwtEt@=<>yjPki^-7kn;BFEaOzEg zl=RG#FNT}5c7S-3c@JB2o&~WW>9xR|Q)ntA^)rJ@hDl!RF4HD^U9n^BoCeMvN3B^;PXpE7yl1Uh<)(ua_3pQ3jR&)Mk6SY>m_E7dsvXnA z>61@gwPRJB!N6cYnfH`6YXX>c_MA26d=LxbmT+^<4+vh1Ig|d($z0d%IJ0NM62Zk5 zbIzqRAuT@0n2z2oSZOmc(wsGJ76XI+WZyJvj^0_2A`My+OyuN%Dr5)O=I>|0Yn3VH zoa(b77Jx@gI1^_>;)G=~C^yfa4JlF}Ex|ufIS9{c4y2A?n0&F&f&22=Rust zI9V{pf&EKj z@Ipvtf%M~87D4P|0~ag_iy$Qd!{mw8=1fZ#P4;?V$Mkj4t{Wy!4Lu_UNjYx7VUk-5<+|wLSmqToUi*QP>Kn|u@ zC=XuQ&tCztjCnFB;oe*UDK%Lp3-(xWtc2LbH2GqcIj84JNGZe)8Wv)juyQ&V3!@$9 z#g&kz1T!c_ak8yqUfDZ{SWo>*ci! z3{KN|vlwkS)gIj~ur_t(KqjxlGITo29{!PcC?AQspMpoVAf zdPrJin0#@&1qYM^PDrd=8$f*=(BPB*28cD_t`+A*1TV^*_3{P=2A#>hq1LSbA?nv! zbC_?0G!YQ(s+k)h&IXsatam~3lg~z2v)XS0Wj(NmH$jpFWb)?xCV1k>HRn{_42eO= z7;xfdn97Me%{doth7`_RpcxC+dz-;-UTV!*zXg(aSf>YuF4PrjSWWhD&tQ)p7FvNg5jGQ(* zAS1TmmK;<0j>%j*?3gy~nB4Wsj_K=;$){e~aR%;$^eC7o2R4{9b?lt%_1cc})J{l9 z@J|+;Y|g~DYx1ercC4PeKxGFgsMqd-=b;F5PX67Hdz56G3h1s!w z+Yjn&o}FjSsc`_}Ja7`=%sBw*U@?Nz@smpBMdUsdLuK~NsprJOwnA?{`Z zmqCvXLef9DbHl1|h=CytG{whp2$rfYMw+wUJjB3|FuC`w4a;E$hJfk3UW_&zhargo zY$of~!wd{T;GkDO0&^qCuh~Z+9)hUad4z$%3#5vb`6!45>fUZU3UMh|1?PvONa{K5 zjv?__dyc`zTdy30lnmg!#HxK9+|+Ne<}5!BNeA zah9Eeco9-Fa-D{F06f6V>T(*?wFJ%bmY;^CK}hkt=`_3=NH=Hte0s9i4?9llGmx-n z0#~Y)P#znonZmUF%w(>gc1&z%Cwu+0UbU2Z=(q$)H9{_W8+NzwKC$od>rzCR=l|UVs<^9z5dozW~d8py|!- z3lQtL!Oi+(7a%@_Rf{u$O@`und+`hKgGmo$Fcnyq}+hlmi*TtX0U*(`jG1oO$?JS zE;Z-uyACNLSto<~KEDO&AXRwDeTZ+s1q##7`_oTxGTO0zxzE7h2ddRL zogTmnuE20}&OSH~G(~ai0iUSpTOJ5%~(T>&i4FiMqbYEdcYt{w? zbN3qt21|(Omp2RyArPj=TLuO<2(#}kT=daf@CqSeMr$UWchkK@8SOadzJnAX;PnYdVYl14{nvSR(}NbvwN$pIro2r^b8ol1^2&?kU$1^ z#aKQuF!(@bx;{Zt48vr>v*w%w_2BoygO&fFuEWNE5Pb~bvCNPEAjyIe9K7=XApyY*?qMhPi42g`;|3!mcp3{FJkuM}7&+OQ7*W>%a;7jb zf=3g%z`e$WP03Qa#{z-Z4R1h!tE(FVi{hiLEv3U51|!fK4W^&M z(@z;O+Hq=#K#~j7ydn_ZVtFCT$Y299hEqihmT*8bw0U9>h2W;)G&x324lzjTV+EyU z&O2fdr!q~Rc+-MIoDp1nLi#BQ;*1OqAQPDuh)?e_W3=OZBo4_GOw$9WGg@#+FoKsp zf~WR4OC=zF0vE&_>m`tE1(&H$B_P&9GQX@OL^TtrVaFUU$vD}2nJs6pBqTqAM{+nA zq#)+QyvXS%1u+zy^Eq0iAO?bS;WQRTP7WzX@H$fPtPIB=WNDBKI83A=^5Bq|?2ydK zE)8)6+=6w|kidpy(+|=R-*QZz_}PL(1{O4d3Fb^iGSj`R8SPjP%7Eg|H{6<&TNWY@ zX;%lzLdpw>K{I6;84MxQ-kZ&tPRUO1vSGC2{4dK0p1t7!R~klg)46OJ?Km^#AeMrI ziD{|a^e$UQJJvgLpxoPQ%V^E2CJ#y^z8Th>5%P@Sg>v9j#<@!#qLCFmNy4VU$Y3$~ z>{4q^I|WAYG#3kKjTO^XU$r#!pPtTUPydY1rh^bx3IFRGJ=Lh z?$~gsGJ@9&Gf%&m%xD4P*@1_Y1WV0Xf2xAYL*5W;CS$efT+WPkOxbGFy_^~CIG3qG zQZC!{K#(pqh~=!)1+5q@*wrC&;IuK_L4%Q#11bVeJDh9OA!!F3KdevG!MQ5fnp0H+ zq7O36n5+Tu9=IRLx>W<5!P2ccKWab%fdv%QoI08iJS6eV@PWN(SwBuZ$32_c& zgz_4c$2b`@l`p0R314tJwfj}h9bxtMIu)U5|eOb7HJ4r2n>`SSWO zF9`0j;LwLiF@suC9LJzMaI}E(Bqy5zB*%d}KdgZUpvdkG#*FN414i&7WR}UGg#cF! zAQdnRXay0Iqv7-}Uq(CBb)T61Kc+In>0W+}cAUoz;hu;zXOb`i>t^ybn$G3VXvewP z7?!I9OU#*6O{RDGGukm7F`Ir0Br9hQ%jTew{}gjbs55}ZH8|&(LlOexWWg!sthdY= z8A2w5<_NyeWD4Y1&0N)30#&CpFnz${g#k8g*0Em>(Rjx0$O!<5+nyUkJ$=l z0%%ejRh6d|BZCL1t;#vk3ewVHoIJ7Fg3)UFsX#`17HdWZyUD$8Y&bv+xX}}>85w*) znpp2zGcveN?ya(BRk8s^1!xd4#s(H3ATMu1@FLAQIcyoBONu~pA+}JDf)-wKZm>mm z<~LiIa|ENzIUVd6p%W;e(VH1|&_I|T=*DQy`pOPeUYz}E!(tCA#6XiE8TL@!(sj1jJkU^Em>a|gU^lbQb7N$P0}U8*{&9naI4D1d zxKHOpo2Cp8|<0ctF~&{NQn#SPw`zLaLeh9x#_o3^8YV?J@mS zJfj__z9&QtWP+y<$^(xuBKBl}+Z(9ivDp(^@`Fnbl*IHPM&zeoYTw; z7Gj{$-Wo4PhM38{6*e3wfqlaZ=4H^TU;}S>&_|lHws?c{NrW{bkXg@ogQ64^X($eX z?hE04V#DDBGXj+Huqc|&TgV7j1t~`_ZZc;*>;uYMpn+pmUzl!?bGm&Y;Rv4YV^Z;( z?v=)9$CT$cy(^8;j&-viC`E#rlI;G-@tN!oPFE4uxc0q(!+1VO6$3*9q#1YHAC@Zl z17IxY07i!3$-WKNoYMl3ayQ4D07zo~1c`x*Pml?yu7#J!(*+|KEjU79 z301JfoV7d@6s@4KO4Mv{IuznVaHpAxH*ET;0!BN|pfFg1xfo&2u`CQ?60C;jd=m!I z1g};hCM>woF5S(Jpc_thZq2T5uT1bjTz|04=O0ptgDnZphii=p`K4;nz zG5u6AqaEkZ2#9OILq4eHvf4+2@)0QUHbyeSXO7HKRdJ%)cRv!AR|QKfIHDlcDtH{4 zH9raz0ia;N6$NQofJ<#ojc8aDgT|KYqG1MHY%=G(77Z;|reBO_H0P9xf%p`>l9+Q+ z45V!anyIs30dXex&a&Z%g&7Bm)AU$qO+0;KE29NS4zxlaJO|JDKNg}Nve3;m4$`>i z0vGUK;uyh8+e9E$nQ1(z76pxz=Ep-~3p@bEu`wP}?!p^F9RK1Wbq!pE(<1?1M@5=* zwj@CGgIlbe#}Xh-4ao8dmPAN+LE5&-i4c9Pppg{Tdx@Y#3#vmjk{H3eioipFoLxx} zJ&d5HCF|KFP))-dWzEE$JpEJ+qaAB}G9!c2^s_aL)|`ivA-yst@S=;a$&jFB1+`^4 zEK?xHz*A*m3dCiQnqYkj#MO+GK^=>aDG--I$~@iF>8I)#?Kmf=LLvt;8ZMN^$N-w~ zg4D8;(-=Y1bdlDaEa{L2AoKLVI7V|$-*ia&1NS{yC#QpYs=N`_(9JWK(;;qT0#{(- z84$IQsgT$VMuzCgpxMbC8IYnCEY8W335fv6T%}JYB!a-zC}%?^%sfy-`A8;FRvKhf!bl5>tL>zCkAu)kSB=R{B5pZm9Cgea|1{qk|m;;Fl$hNchIgrK? zI013k=R({AH;JP;7or*-lLvDd!E0}M!RtW3g9oJEI-bwY=$G z?TmJuy!jBrAy&oaL!7}dd18bGM?S<{mdS#l=1dRsr+amPMnDQ6`GjS%;0|-9wFT2p zbuij7aTiYK>SVOzj4WgXFXdyJJn@w|)11QTU7d_}Oz#S(p90C67D3V+^JKw27K}yH zy}B6fIQJL9A`>*@&|eJcp|OG*=1lvGr*m~P+A)18p6&&rwM(XVf#|%F>8C)nK?O5F_7#S?4^Y$@XGf7oW@9JZ;;|Q-rw&Oqq zCrc$GgB4f}>)lF5hBOG%xr&h?0>YeK#mL|QW^zVVLqdQXG&#e%yc%RZ$aL1n)r<^z z(|e~d+OX6xGQ@yYv#zayo55NOGNX4QqYX_h6D(+u^w*8&3ZoUQGU zQc-BSpai1@M?1uBAy8W7WbA+>eKxR5TsjyTKudzaqtLvwI~c*sg%}wa7+59?W@w{;YlE3{dl)BkXWFtZ z?Exh((0~=w%bw|6^BAoRK_{7kFcSj<1Lz<+kS{VA7#Kh__*62`>EPgV&KMZL{OO_d z80G6(7#JAx7#J8p+Q65VFfcISqe1G5pz0w<1Trun)65JE4B(Sb&}fjpN~rZnv=)Oh z0|Ubxs5|FE>3Iwc3~USx3`?LIKs4iY-T92-^&oRrK!vf3RjDuGOcge0LF zr9d182GH0$IA=;j#bu!4AR1(#JXBl(>L4YkJctI#t3u_~pyF!N4=!R921kNABLf2{ zEVQ9YbfB~@R4IrCG4-J0`XCMi1L&|haHxU!pww;%6-TB)=9)sqK{UuI7Ep6685zL# zGgv|c%Lb|tM1vy15z5C$gOoTig3t712!t98I{X>rGGrR0E*Kg%p&$+e14AeyGXn$T z^s9>*&D=3t{i{>y`^%LnxkL23&?1gJcP z8dLADBnx1BYI1CI7$TUc37AW39 z;WiKIy#-JQEQUI01=Qe`Q2Es$T?`Bi*l19xzY(f_6IB0psCr}?WZ!N^NG)*?l=(p6 zbr7l$M1z=zpbj|-;xI5UV531&$3O%F0|ST#8GH)L2hpIAIs@e+(;%Uh?=e`Z6@|u0xfAXpj}Rp?nYxvf?h3k4%Gv?tusf1_lrfGXEje+(*!` zd;*n!0y-lJ6#Fls0w9`ky6JL8`9M(6yk-QS9Ln$oDh;AR_I`u%k!g_oeldd2$z@;% zDPmwip&6&oUCt=(39^kBDoqK^IQ{H$MsY(>jumBs6kU=~WAV|9(`{Ek+XFIC?=g-7Y4{pc>LJbUpN`Pn(GXyFg3gUoDOe{1gKw_W<$3fM{Ljx`u>cC8>J`fFZ zNFG#OJ`=bkVqnN;g4CBqP=z2G6oSP}kTR+QDvnHpLZTWf4x&NH5Y*fQ>1%*m&GzybaZO z7i!T%sJcf`2R?<$KZnvUq4KYw^lK;$I#wGLlb=B`0p8PaxEfy!$^<#nL)`cQLBpyFmwaZ9MU9jI6YMWqu|feTat z=;U!w)cHaU4u;ByLJkOLNP!xV2|4iclyW4K+9(sy_+J zPlL+mK=tK8?J0)xOTp^v85k-+;m-h})fpHV=0jY@umWoFdayzUhD}h7TcF~*S-@wv zGn|LYUxHeE4Jv;Zs{TF;_^@?`4=j+h@*67tmxY0W2UH?(vO?lckQIF3HG?daugVJX zsWvMlBy?H92V*nXLgihdv@a{ff;jMPF$@futdJ1RgX$}QT$#X71vS47a-{;pR8~;O zfPn$b0OjXtpwfzgfdNE=63+}MA4G%XXF~ZP8Wd=tI~hRP7aI*yx(Mol6|9gNXC;(g z1$E$hR%n|TbjbtAAY>Y3;RaSnV%ZF(x3NMJ)h>|f3=9k)8syMDP(C&qWX@h_NbHBI zL(uh*pgjnc0MQ@~hoF2AEzQ8d0J?|=R5Ct*8uSS2lgChX$TUd*6R0>c4HAC}6^GM4 z=mJomf^G%^g$OnpWY9~fK4hACy6px=ad3(L7Me7^LSx`JG~oV2X=XM^jIgjl{LcpE zvxCYUP=f}E23f}e<>RA45y8dAP!I08aYHqLXpjLsP(C>{$Y4IGerzy0?V32@n0MVedDg*VQEL0ps3xWD|Y>-T53N^q2s?HKhgRYzd#k?(4A2u2!?*KK& zt)2~%M!ld0`a%r?UC;}PQ4kHfF%@)iFUVnWP<4rH;L9x-D%c?99n73&sKv-M$ig-@ zNG|V&n%@IeR}W%<44wd$mYxZ_U|;~zAft4ld=L#vTY6AFh-PG%-nW@i44epz*ddAB7)qN!)q!Y`K2sfO@zYG{OK<&;r%i3e^arK^AmCgQ^cI4x)J(7#L8haI45C3H zv=!>1-4OHY8TLXo9)ucv1Zwb6D18h{ABWN>p!7*7eF{pShSF!C^jRo<4r=a2DE|_a ze--S|dIkm%1LX5-5En7rfGWHRrEfvS??Cx?q4Yf{eV-jt4n2eNpMwo%U;xn|AHRfp z@GX@72z9_05Dm(I-=PNlgK9*kL8+YyR2G1SL^&Wq%?9No(;yG9L&ZTf$YM?oh{FV+ z;@D`A{R|)pkVPU;g~&9>ATbU|>Xm@XBhw&@C86TTG)P>E15z%@b3n=qC8#c zM1u?{hssw##X&SEo7Qqb+RhyukVT63s*7Es!f6H-ywLiu)3eRiDC zfJPDkdkn+}S>Om&h)jcoyg&p40|ST#1*i{{528U1@rCk1G>Gp9HkeDlj zx~v?k5JZCgw!mDpynKg(np~BK{UuAN1=QW4a##T z>!BLYK{cF*DgeVPXy`KwTQWE#}+ybYDV1Cv68R0a?=Lhe8Mz=)$_k}9xxf*}0HQ%2QD$CfKn?DO%7bW7;_iitPk@Sp zXg&r8hIvp2E#`uhQY)c8-wNgLhRPp+>Z=DaKyi8m>Y`&%gHJ*g;G;nya0=?9(@^>h z)W;XNAmeaPp!^q5^FTDn1Fslt1{Eq)7CfJ}oz-~-fvFI)@^pn*VXZb*q1`qCpNwf{Ld? z)ullV&Vs4~(V&pX1{=u0kPB5`0HuqebQx4%6_l<6iG%9GMySSSs6;!I-wCw1R;4K8LCU(I9m%pyDr~;>a{88NY=(={=PG2vvtfL#CTPLk;=@ zrN2VyZ%_>&8szSuP(C&ql#YKx<+0Hq2mOc2BWO^RGcYiK1VBv=cF?dBXmF1Qk_6!o!5*s132F_9206za>TD0Fyf;)H8x0CSU#L8Y z21T$R)cXNEka4Ye9tJItYZ>C93PCg|Vv?YIWSVPw>@nzAYcA9sc~J8TpzbM#@=Kxq zsDv5=qCufi3+01oko!Pae1q~xE7ZI;DBTVX_8us|7pkw92iojG5&+L{_CpnbXpq4Z zc_6uWIuE3-nh$l@LZ~_r4GNG&P(FwT@fSn+AR1)OQfS0%fI4U^X!ZgW6T6@ak!g?t zyP+2Cg~}t-AOrV9eRKdSPYMk({~##HKtXvFY5+0~O7Ul*;xHN%y`WWqAPjNbK4@_u zh!3Jcl{xa_K#(|y4=QRwivvM?5DhA5Mi&W!LIbpTaCDI%!{{PG&|*PQw_|jXAarry z=pw<VrB*?&kZ*d?f(SYPZgLb2f1fh!vM;8e~7B7r0 z5*%G52wkrQS{w)}D?l`8z<+d+;OHX3(M5uziv&j(2{JGsFBSw%nu68>g33w+4Owt7 zx=0YR780~L5EMQj8dR5zE)s+;p&Po31T~=RFOe4qf}$A22QAHlEe<@p{pSb9Ih{W9 z4)4=cPFNf=TWyg`qM)sy%!{|(5qaJFtyWxeSQGlroNKY%zg;J$gidbYe)^o}0b?A8 zfM1nKa=^;4>S=;!qZfkDAo|DukCB04;`Es{OyScls+oAF|E*#2W}H0Tvz94*`U{Z2 z+FB-W#;MbPf&^yNF!4@zt!DCOoIX9UjwyV)M=cZY^sRMF-i$M+GuAVOPyYcDNUdk` zW}H2JBS>IH9TV?#(FP`O#<|lI8<@hUN7OU%PCp6~m_J>xktuvSM*|b@^wLHqZ^nhw z4}t`CfCN;Vn7kPmPcLj@3ZI_Q$izGSDo9}Ibj4<-@aYmwOuW-uo0+^BmruV45;y@8 zFl}M-W?VVFv4tsodPOr6@ARi2fz{IuTbaVAYqT)&PM_M!d-_I@z=|oL@R-Kr z&3Jcu;xtfrOa+ApNZ|f-!Reszm<9@u=}g{?52qgl3G4s~sLo*WW_&!oa0Vzmrh~!* zB=B^);!IF@%m9VQOeSx}=hH8O1WteiOlL89GrpYOI13aWGeO}25_mn`a5gABW`V+E zHj_8w+vyKM0yjVcu5*~Y8Q)KzI0qCSvq9kj68JdXaV}H%bc;El@R-Zw&G>oxN07h^ zkU;1>CU3^C(-+PIg~wb_c+6+=X8b-qa6TwJ=7GWkB=B=O;{s54fCN$(FnKfnp1u(z zuwp(aJQgx}GyP?pp0toDY4i5Gcry;xQHoy`VNqQ z>S88uM&{{-i$Ni>2oxe90oLh?OF$vA7!)E)n7kR;r(XmKoB#=!E@kp&hx_I(^|vP>8Gmg~%!h^%4qW|WtO13`S|)Es#pwq@ z0y{tgs_U4%8I`9Ot^B|cTKzclp#A057CQ`eHWw!6@;H6g zby*O#@V-eW8&{lD`XB4E8*6^u6XZrJsEwz81R48c6BFBbZ zW%6b;pB}gs6slW5p$ZbP1Rc;EKK%zsAaxs)x34v5a1&IqfKJp@Ql6JRlk=O_X8!DI zhgtgz1&wq{-g>19zhcoj_)59?YWuBYoGT~o^*STGd&TRGhj;M@?%Y57M*6LHe_!o+ z7J4sr`rNHd5HtVR9Ka#S*pq)_4Z`o5+onmPT#p56vf+^czvATzfC$A@@?P81&``Z ze+%AvHQ=D>{BvfHVg$|@fAR`?Q~s0r{N;=(JG$gp`TMr7V&Mze_vhnc_J0m{)}7Ma z_plhrSbIn)aBOGd^~q*fF=xtDj#4)hyN&m5_GBy<*w1>p%{*mR=cb$aZ3|Z~`q=y+ ziS=aa8^z}GYupc>)~%YbGsA|NYq6xkw>ivLqmYbsoG!T&l>N3d@zyiO2U@N4UDf8I zFme9u$UA0+;&ndXS}&%i{?(co{%kV4SN7@0Z)&R&ohN^eI(aziu9!>Q6&y+oLr-kXVnB8kM7hJhJYZr@1 zqW*yeI+Cj2YERv0F;4Hx{d1xmSZ+(B2pPiyif4@}i6W8NJaU)rq`58{#~|jqt@>h zR_>Lb<_Of-i3V%+{ZEgRGJjdUz<~Rh;B-YL$z|W?pA-u5Qt0%Z-IRa$>D3cc!>2D< zF~5p!`re&P67@4(mwF4RC2apNS0JsiwdU0gi5Z7DIO|l-u9ukOe@`i9gXG)k3*MwI zjl3SsvHE*Xpq`CU)~*f9-nOVL__oZKBLK;Hp2*H~pKRyZ;gio0=Xf|gG1)22v*g=P z(Hia;o3;q-Z=<^|(a}sFAqP}K5{);q^C~qa-0|}c)N!!vcVI2tRC6O^*WE>e>y`xz z&CBFZS3m51<@PMcR%^*Kt2Q71bR_ZUy=&!@A3bAeI9rf7<9n^i^exk6cQZ-U&slfP zvR}E&Z*xYzlRH~*hMnIVmuo!RA`H%!En8;Ob~E+&_K2#5^97yn1PGp6s+4f+li#|J z9?1z$pC0|zC7Z~I6ndZ)jL=etfo03|>$8RBB0KM#QO$Wcy7N^g!}g-8sXY@a z4T@AU)3&w!ml2lyb+*&|{L1z5dwNvjKRddf`}NOgidrE8n6ezFcYNv;6BeW%I3)b_6E;o}JKfy|JetX65!C`^%3*pZ>pTxM!RAl5K|> ztm}A|x8D%+MsgqQ_(hN#S};0#Q&b zsO-#_bT;AR+UH{07kJ)hy=%Dj#V0b>;Ki0YyH3f;Z|-SymmJCXQQ&?-VRqtU-gBDC zoe%#vh)=(}mr0`jjOOKSF}@2pnu{y6lGA1|CKkReoz}TpPdsUl;k&S$`x;w{CI>7i z==trtRN8*+R>|3$Hb$`Z_HX{0{j2gu+SOf1&VwCs362!KS`i1!LivEGC8xJb{EmO4 zJ;R(OvOdFr>+!36#a&C}#p)6>&n-8Sd@Svd!7S2NoYiw^a)|Bv!X@%@_E*sdGyP9y*UZ|vdxeIKcBT){`2*AB-kuk-37);+#@XiR&o}mo z`qc+N_+lt5TkgB{^vqTn@1+WFk(?Kf9C~KUvQB;a5%P7P3r}HOK~2*~)5#i3+Rv|a zfAWvB=*h+q->)wwta4G6wC9?Z=&L4vDebN2ovj+FNA@&q517UBeR>USlx zwHe=&VX{gxU|gv3T5Rs-4C!#z7hkh|x+XmqIc4!`_d?H&hIOhvOq*Goo8O$Q^Zz+- z>Xg9k<#!7IN9=hCIp!ErB19rPZ%y^OjgM+OdDXL*GPhM-46&$5DxEsjZ=-Rk`>XZ; zP88e=sNJk2YAk90c7J=(iFHDU*{-}go8@wE?pynBFDielXik3%a$aVYys+O!DX|G2 zf8KtQ3{HN3Ba$QS%U|V0uhRO|w=?scU%CC-mc>Wy5~^=*Rxrk^s0{!5GhFw~kp_W+ZG&)f+%+eRnKKc4!u}N zlOf_D6L0-(od)+)jT7$P*d^YXRjL`G7jk#o&qW759k@{AZg6#q4YTYn8HU;SR;~ED z`~0L3yT=n#ew_Nv&NX$_%B+T?dyPQ{lEdmw&?&5-%zZ9sMBf+Xt71G&9NPTI*+?tCCcI|71sxN(M9E$(_MYqGE6U_)K*B<6PH! zclzIhOcFkGPU`U%=D&7pTz^|5ATR4j_RWO-+cYO$-FK>$+iLlQMES={&FX$`+EUgM zdbU1s+9SPs@t;r1olU>~yu)lASvVajQW7D)-f;-jJl@6R?F%|B7UWhCW?6A+*6l5) z4?hbyKPly>xIs$dZ&vo7(qCThx|FzSwoLZlOY)oxG05 z+1ch2U8n2+H0-D98D~Z;({cNH*ep4ljgiG~ZxZN$ZCGfgPJg%u)Dk%Y8kgA1(DV(EFLZ8FQyE+|Lv~{RT*Y z^#GGMWB&BO1EALYaZnrj0FyUUA=C6nRZL;iElx1;PM-@J{wSW#cn~x|0uo3)$mGpf zI(;KZV8%&MU*!;!H)Hwq#6zHl_$g3d1td^8UGOlddjk?EJVLvK>|BK0;b29ycwIPHy#6Z zZ_a`GDj4wKa0dgMHS2@n)&DcKuAxPi^NWk?3lQ(1M^ob`x0dj$fcluY5K=*XV zlc4U+MNkNxWb$V0o&FIda04U|dWy-Lv48r)Q=kC31nOm+X7Xm7I6d$*s5ZLH#5aB0 zX(lhm${nTfx_cFc)+OeJSaS_gTezOFn_w@1yFe00ENc|@PN@pkiZU*fayi>fKlT` zP2$+Opzyc_3Xe@eVDogw>!9!e38Y>J z4;XC(3Cy?;3XdD$0i(nlpzwGA3J;LL&gp_TLE!-sD7^_DFggelSn-gFclzDi-~pq; zTcGfG1QXalUGX+3JRXC>1Ek{M^ot;Y9UuYIJKzB$ut3HWP z!@Hmi0}^n(2Ocn*cn=gF&p_b;5;#5G@jfU#o`b^UK6t?BBS_!|NFek9c)*Bp8z?+p zfWqS;lQ-kV>46VH;qej_9w33s(-|Lu!UH6b`UpH=v=JmQ;}s}89)kyr5+8%Y<25Ke zKms?XXM#EzKR^O!pMVF9B%d;cPhatdiFbPKQ}BS%NsvIqTPEJ=y3d%r8ShW8d56|7%hAaDnLL2tZ%>rMuBfY;qe*d zeUQM%>5Okd;qe8OJ>G%`j5dM2=65oM3@?SyT2MK(iF8Cf49^XJi8}FIC z8GlYc2om@K5>WjB9xy8W01A)qpzHw>_&Z(kBPf0R040ZyOx}$Dr(XmKaQtNAoo@Px z$(xChd3w_)rm*QdKq5~;BFxOwjXpDlP0#oRN)Vr!yqQ>;r#}LTNc;u`$rmPXCU)lO zlfE#8O+Nt=`3e%@WS;Kyl__j`#UD_hd}Z=x;%1)y2_&NN7ZfVrn7o;InWr!M#uPUF z21tbUJCipPKlAjU?@VFSJN|*f1tcQKJe}zWs9^mM3YZ^E-b}*G(>H-cUVubIe}V^& z5`Qv4LvN0mI15JH7N5lQ*N}^n)OQAB@aA(^Y;m`7laPFZ>M( z7$#=k=~sV)$Bh*KfC7e@nP+;-A0{70`RNxy0vs&NJkxbR0*ccc|AG<<3p4L@-9O-Q zBg227f`pZscly+SOx}#D(;tEaB-ogFr@Q`V^7d6{233g=%yPM^Lyf0xRxZavv*_^e z@)lO_zL~f!;@F{k#C+x&4;7<1MQan1tK^&RPD%JF7aV6U6qB@d+CpLNL{sjsX0y55 zrtf8AmYDwaKWO-Asv~pw^a^%no~b^}K8)I6t_BA)@AObcW^YDaF#iSzR9b&}AQN-= z^bSsD-sxMJn7tVdr!z7$hflZQf+{cutA7FGnodt-VGf@@gPWOm`cW2U(11}UD|7gC z4<2UT>1SD)y%{a1OR_PCPyYcDsAXgJX0)Du5+tyK7Zf(^%-)Q)(<|AT!>32^G4oEp z3lgxOuF1h1KAnS~nRj|G2eUV$3OXmmq-?AOT-)W^YE%=`*=O0U^Z9JN++6z9 z>1%nIy%~L{{{#u#013qMGJ7-nPhZIk3Jeiu-s!x2%-)QF(1X0n`PlBkJ>54+k z;f%47L@u;fy)c7lNqV=|4eK-t<5T=5WUR z=_^50!E{DR=5WTs>5(9+X!=GFRXm+jiaDIIWO^cqDxJO)M3qe!lx7ZRET5hUqAI2z z1W}dKC1sey8LOrjf~e~0CqY!rbVXU_aK_r{m9n4+Rslt@EVDOb{d7$^=5WS_>5U+& zar#XV)im8uo;jScd3q;^YMK5JM72)0RA3HgY@0q2M72+U38FftJ1R1VGj>j&38K2D ze*{t8(>;}#!x?*~F9cD&(|;;4hflwu$;>-FR+$;p=2)o=ic2j}T&ggG+8mK8pt#fq z#U)5!@^nsB=J4q+Kmxg{%-)Psr|$#_%+O)xoi3}!44S0MR0E}LT~OKv3Cx@>sSZlp zAc0zSX3!+nNszz_Jy6=#UJY z7Bgs)s#6P;whcjP8ziuFx}`QKZ5x5owl*_plIkT$-~>p(SBDuiNi|c4Ih=9T^p7BF z^>j~NP{K9=C2U=0&VpEq3=|k3fz8u7 z4M2eb638`R2F+0I1PRPA2L*;9GiZh?(-0IG7NEcY3GAFMX#@%kkU*^wGiZkDBuHR| zB`7eAnL#sDmBygJumS}JNMQeTO%qUHSc3w?gc&qLbrU4810-N;$_$#J>NEufh7Bk% zKmtdnTbh9a!xj`6X3U@&s+S;v6CeR!b7s&C)l73xMz;fHbdbR5>7Ev#@URDkhXpfe zhUzCs;08z_){+@CL$%Tp6dn$s@UUVAH8>)zK;hvC3J;LL<>{Q(pzr_*W~g?8 z1ZFsa!o!9cG((kX0}2mkP6zC2Ze_xvp3UU=IOg+K{HeVpaAh?2DLae zy+8pH2nrA{W^X1&mg%>=n8T*;0EyUoGkY^JvrO;uW)7R45d;bnkO(WwbSod`u;~)P zpfK@a_GV&dnf?kSasnjc>&xuT#K|&!mM?SI^okHrsDMPcS*CmWF^5gp2n7X;AG0?T zFU#~_Adwp&5#MBHZzg`0>8t#i!=`tHfdVFg*_%;tx??gZV8TJZ1PKUF=L`e|3`ih1 zkQp>lwG$*TBLWmKLCm0us>~ozz(j%)3P?b5x@0gYp@0NxgPB1SRVP6LE22OF6T%Fd zsHzMBC6s7TxPS!Yr)!3S!X*Y2E}_hziK?3*fgK_HGw5NMUf)YvsC`2MbjfLqyK>{~G z0m3Xc>}cz^^fr%T3x!UH5w8wY7IfCN^gg2E#n(qf1Qg-04FJU{~W(=`)7;gJps zj|51I0VJ>kBw(8eX)z>%!XpC|9v}hN>6S^L@W=#(M-rsP01`L>5&*?EqbJ1a6mn( zSSwKi3Xfc7(9p-rT;}lUCqM$edCcCRCPf}7eUyU210;|=-7_B)9%Z2Pk0608KA-i67a2L1`T!0tONx>11JDM z0^QR+t3UzJ2nv8IX3$W_PmsV3kU(rTq}fpoN)Syj-%OkySp&)-&7c6NVFs;@aReFq z0wj=I3u$)Lf-*=8NJ|~K*&zrHfL2fdfCOevm#hZ`07yU<6e6>yZv+{-q74)P4UlF> z11LeXgAxQtVE%N?Mo>U>fC8cs((C{U>;MVaHbI&lO`rtP3CbWKfu++en?d2x1qzR5 zNV5YZZ~`RY+X88Jw1C2+8x$TOfz{JJTS4K`0}78;NXr8xa04U|+XiWQw1L8-7nC5{ zAuW$~PW$PG%p*ozo?| zK;Z!rsOe(%Vcb3aBuHSzL{NBiLs}l)pzxT)%rpH?H?t4p{^^=MpzxRs3XdL0%L62^ z10-PE3u$@ug2H18C_F#{N2go%fx=@dC_MTgEf0{u36OwqKcwZ+4+@WIpzr_*oSyDE z0Tdq7LE$k0-10aGa{7(wFsGlNzH%ZcJV4!1uwO2MZifz^ZZQ+4;_`IP$)NC<$;>-F zcQT~q0TP%o3lttxAT5t6pzxRtN*^GBo6{wyg2DqNP&*aU@&E~}m;(xrX^@u3G*EcV z1*H#=!2Ri((?Q`e4-_8LAuSJ(zz&dr?F>lEV+JTZ=7YimB=B^)UfqH7H1yfEpgG(_eu^PJl#wmx3A|tkY*L1vNa@ zfC2?1!p%C}YZ<8Fu@)36%Rmhe*6F`MA~!%HvCBaX57z0cmV+7|>p4xi=!x@#Q zcY-LD=?_7a>U7KXpd_*l6dvm#Z4QvY36OyA21uJ@19Lc|*7T1cN_)EJM&@uvo#_if zl-_ZfF5Ttx=GD&H**`qC+t}xq zm2BnA7F(Zxz}SBm(^0F(nYuR@FmGR0b0&4a_F3*3z-OLEuO#_+LGMLV|nK_)% zaQa3NWi*|03v)Q5@$^IxWiovyh%%inxRp7a(QJAqh%%pk5JXu_m)yo2&S*Kk5JXu` zKMA6&rz>t}4rjEPUJ0UXw_n`Otjx$di-UoIYkJ``=J4qOJDE9H6}cD~IHx~6%zS!s zLomy9on6cvtP6M<82G0jJisizJzy8}16Iby>4pcGlUbjsFfj0f#FZIir|&($tj_vd zm4Sf|BqBd~LI}rnfrHEfj9Swb4>GH>&Qxb$5ZM0lEweBa$YjoYdf=;O8eUA#J} zs%`+jNvi=Gir|yRTDCXJviLJj57@=b!dN)n@F=r1>sb@fakGVonZreYnS$>tL(u}U zjETv7`o06qYD~XXxAPrip2o-uRy$qr8?!USJ<8LLFxx;3HrgI|f_X9%Yq19d1LyXS zj4a74(~dAt+5X@>vx^|esoN_aGGAetJRyXIk#DkKrvCN?f0z$2f@HW3Zen2IV_;}F zxM_OcGv*}L{4HQlg3JJ^TEjFsAXo*gQfvzY=t}1XvCG@vy=7)%0o%;{nGsl`d9nK>y8_d#MH{pZ0xn%?k- znS)i0hmnCFB)A`JD2MP*@by0p(-U?ucWgVtEC7iUO_+hmkp@ms3=Al-qBvcak;R%7 zY}fR{!_4lWz??49!zeI)2O|p)>o<8u1_4mA5eJ7=YH?0xUI_!kC57$p7+JDdm>`Ta zP`o?=2OML|^p)H!(v0A^>t}+5HH4fT5G(;!Be*b@5p>-p+$AiN10R4R&xQ%CfDxR& zn89A09w5QO!D^TXa>v8N%;_L^Fg52*KPADkOA_WyP`H((78R!!F))C=3CbtiK}vZG z5+TB}<%|r%AmP(sD_AF0Gct&R_^ToO!a7D!B74gm&j<vMl-#mvA#}Um(vC z^B3ZeX-AlkadALPmKe|JY_hC2_5c1u04TuqSwIB^1A{1t1G+W~dWjv#l@d@fL#P_i z_$}ztG>|apc0bTMdeGhjd5{1D1A{SC9jF{rfQp$w#Xu)f8AHVC8BC#;fDRh)h6pl% zt_cJg2wJ%v1{Je_Y6cxn9|;w+go<%7FfhbI#XwgJg7kt8N=|@^Swq!5E6?Bw6R19=wB*=kk3=9la49+0GF)*Y<6@pHLuZ9RQWI)9e``tZ5S9BT%lqeP<6JT zJOCBzg1N>HdKNk;XLdss+A}aPu=0Rg0}Q=T105I`7>ZkWmvF%W?LDO_yfAdhk=3NAXFXb zobIdMzyK;VPC&&#g%Ri+eUOO>v}22lBM8fr1f zd>e?9?7=)l=pP*u(no}4m_8BS$syRiVVqZXFAfI(HFffQh1;2s>K}`k* z1_m*x*f*#csEQSbihYNQ^@6UGg^K-viuHj?MyS|Ns8~M(1A`P)>=#sQ0s{j>y);x1 zbn`RFccA)N1}gRks&Enm1A{D740JOzNZn)x1_scjsGw5vA5`5G(C!kby8lqIsSFGZ zplfA8B`4^(Xpr7%pjsAEV%9S-La!^H4r;lxF))CNQzod`3{c2G%XDU_*h~fnhJL6e zEKspopgJEa#tIdi&A`C$3tFJsac#&`l%Y>yqmk80Lap!^pq@DkeeKU4!K3 zfm&nG);Skc^L&s4nHU&Ar6f00YykrUg8~x+1E`ebfr>2zRXU)&%fP_E3l&?$z`!8D z#J~V5CHbIYi$Q6o9;%QZ>>37!B@7GX53^$)HI-CTNxM_KzBib3M);h*fs_Rh9#hzuRwxYP{Hk>h5{F; zh0VYKy4oDnz1YFPz_1J|2D;W9n;Wch64-?44~4_18UxG1_p*4 zE(Qir>E{U*16@av4;AyOhicvn(g+m<-MbC4WFOQ(P>Be-M;#=#A9N)gG^P7N4Fp;0 z4Hff;iX8-1I#96ysMsL}2Ji*Sph7JWDpr3OWFQ*@1E^FBf(jl1RUB*#44_gi7%FxY zRKK%9`U4?Qv11Gj3|}Dmm?0D@cASBM;VV=u3@Ua4)UIHI^c%vVVka3G7@mS|~ z5m3QXpeyd#7#O-i4MwQgX$A&{1yBQ{pkikj7#KiTKZ8odXsFm(Py>aHfdNz^#z4i+ zF)%QIF24qqh_O(y^PpA}8v_HVM2usFw*M}GTBB?X44@)09;)yns6zs^H~}hliGhKk z5-OGm6}t?II;dC@RO||<^92=4hKgNfU|;~8#7 zkAWc@DtMQHfgvBNFb67jkAZ=ql#zh}RCMM-#XwE(Do|=>~pM1L$TnP-)c+75fCrVq6Ripu(yJ>buXN@eQaL z=y+t1#a}?d4;5>Ns{0CRK|{qlS)uK}Z=j&!h8PGMzW{0e4l2{3V%<=Se}L+Ds8|nF z>?Z>Q10PhZ7b^A(RNFzt`k-Q+G0>)9 z(1rG(@?jZNjE9kd0d(0tsC-xs72{=OV7SD_zyK;ARzSu07#SEq=i`FPf|XD)entj{ z`ekek44}eb6;x0FbTkAT0|TfmSPc~uWMp7qf|d(wpkhLdkYEO7$+b{1VMYc9P%Q`& zTL%>bU7^DTN>B_84C|p{qKpg-AkTo>p9~wIf?|ve3?Sct^7BThm^dQ?1L)2>P~P1H z6_a3OU;y2h2g;_Kp=m)9}| zOFaXF3?l;rDBeL?;~-R_EL1ZnXB>ix$uTl8OyXu>0OgFsP>bam85l~rA)V5rtdOhc zK$~VGxEUBg3Hc0EOp%d+!IYbU0hEw0L&cOB85quhZ@y$?V7LXfL>cNrP)fed3Z5xp zP+??X0ADc4$iVOns!o-Wf#EPTRX>M1MvakyVH@ZkNk#^Smr!-;&?o^V+E-994MqkA zW;O-}P_)*+h6;k(dGn$1^ad)X#RzH9fa3ZsR7{(Zf#D%H0|O`;-a&JY4pbc|8a_hR z=`u1fT<2n700sFcr~~yF85kZw#lAqq>KXJI85kZz1;0Tx8$ewR3i9tzF+)ZM24`*t z22hayfQlJ0GBEf<#ePD?jG^j4(Ew`ygZyLyRR;r=Fo48Zq3503K{bQonhh#u&&a^AfDzJE zXNQV8fGp-_U;srI2UN_Fk%0kJ*@473pO0VY6i5sdf&L@Crc1Km$^s90m$CA*gvC5PR!E_ewDcLj^sd7K4IP z1S;kQ^)V=fM4@7!J-ncD0pv?Ds2FI33sm@k94`(P^M$4(kmDtwVt!CDkmDuUEFe=y z{!l@X>!qLyLBnGp13`|GhKhB78u6g2HgUR@Ijh?C6m!-IjP(b27#KkFGoU*K_wX<< zfG#6k#>2p{oQHv71rGzmN*)G=RXhv~t9ck0*6=VetmR=~09|}IiHCs!G=&42veD*Y zV9?=#Ox5V|Fff2FvJ~TCU=ZhFV36QpV36ctV36X0OxqmhW?=Zr!N35TuK5AF$s06B z^NWLl;Wq~Z!ygU?hQAyP4F5P782*C}<^)}947%wUbgePyN@UQ@-JA>z?3@e?9Gnac zoSX~{T$~IH+?)&ypeY=FP6h@6(8w_-1A`DJ1A{Op1A_=B1A{0h1A`bR1A_!71A`sZ9vln|o*WDeUK|Vz-W&`JJ{$}Tz8nk;ejE%8{u~Sp0UQhrfgB7BK^zPW z!5j<>Ash@0p&SehVH^w$;T#MM5gZH*ksJ&RQ5*~mpwItK#-4+jGSF9!ny9|r>iKL-N? z8z@rPAu~$j-pd{#7>d~$7)sa~7)se07|Pfg7|Pih7%JEq7%JHr7^>JA7^>MB7;4xV z7;4!W80y#=80y&>7*g387}D4o7(lsDkd1)>RA+(eC{UerjFo}mI4c9g304M%ldS9v z45wKc7|u-JXw53jcyancYgYYw&~*|ASQ!{VEyoU4$Rrl1(Fbbeff{w7MjWWo25O^$ z+GLYi85ltAFwofRR3-+7X-o_Z)0r3;W-u`@%w%F?@Gvlh@-Q%j@h~ui^FXG2B6%1XqIeh>Vt5!B zKsT0xrguQoIc_`*3<{ttP8E3=7?eOaiGt4Y0vXQDz;KkCf#Dc8WSZs#Hv_{-Zpie^ zX>JCFGu#XeXSo>|&T%s^oabg>aN}fP@Z@A*0Nn=f&&0qGz{J2{#mT^6&B?%E!^yyq z#>l{s&d9(3s(V0n2&m2goi1y{$-tluzS*6VfkB;kHU4h9AR4h9B64h9Axj(P?LVNeLLGcYV>XJA;t&cM*Z&cM*Y z&cM*g&cKkx&cFbgaEfPVU`SwRU`S+VU;x#ipc?ZtD+9w*R!DpD0V@N;LskX`P~&$S zD+2>)J_^)R0(Fe$ure@!dRL&{lsyxqJu#J)fdMqbQVCinP{qQ)0Gf^kO~2N$Fff2- zQX5$q7(lb9pxIK;>}VSc0|RJA6f^_c$-=A)&q51Lj4 zO(TM)4d;NS2v`^xxLFt&cvu)1cv%=2_*obj1Xvgtgjg6DL|7OYL|GUZ#8?;@#90^^ zBv=?2Bv}|3q*xdjq*)jkWLOv&WLX#(cP=KN-~P0QE9J{cX@t2WT924QQ+dG_=XXz;KL*f#C!X z1H&mE28Po-3=E)a(wdkU7(la8H9QOq?K}(&9Xt#Speu+QK*dxe4+BFJ4+BFp4+BFg z4+BFQ4+Hon=|mm|24&EV**uWbIRAjUE!+$YpliRsb2Bi2?iGK-&A@Pln}Oj1Hv_{( zZUzP~P6h^VP6h_hDI$SPkd6T82nA4!6x34H;bdUYzVA#URz_68*fnggb1H*PugM^cTVJ9a8!!Az9jMg4b z28Qz%oRBFhb}j}6(D)drU!1|gz>vwoz>vhjz;J_uf#Dhl1H)Dh28K%<3=GNa3=Apk z3=Edj4INm86&=|jlSL-%3=Asl3=E+8Akh2|XubzDzauhzqBE;_J!p0XG?@aLJONFX zu&^^Q1VcO5qM-7Koq=HjI|IW+b_Rw?>!=xX9NusgGOB)SQ!{hSs55WgXf@u@vkfl42rA_44^3m(4^WI zW(J1aEDQ{t%nS^mIZn`YbP+RT;yjs&fgy#7fgu%CdNVRGfF@CL85tN77#SE6LDLY7 z^$ZM=ph*-)28Iwu28KXThnIU80FB;(M&>|+X`oR#&1-!_L6q%g(^y#LmE=&d$J~!Op;-$N>&CbA}!wwlh|H=j#W6Hu|v#K54*#K54%#K0iO#K0iU#K0iV#K7=}k%8eqs4vRIz`(@B zz`)AHzyP|_^bR8f!!bq%hU1J33?~>F7*2xX{~#j+189H?G@b<-p$Cn~gNFG*(+QxF znNQpd4DY!a7;bYjFx=s0V7SZ8z@Wtm85}*u$-r=$lYwD17Xt%mv~C?21H)!6$e>yq zXet6UR?Wu1@Q{sx0n{Z0b-FibL#3=cppPS8a5Tu}Fsk%6I;k%6I`k%6I!k%6I^ zk%6HI)F%ZEFEKGNoB<7{FfuTlW@KPE1nP7%GBAL~r$FOTpn)^cKpALY3^a8BngIX} z%HHElq8w0}=P_veifnh3WAZ;3G7>SXAp_h??p%2u#Wn^Fg z4Ss31vH|zla+yC z1}g)DFEazf4kiYM8c>6tiGiV%iGiVjiGcxhJQ1jq4eG&zdhDPcI;f-lnh~;8WIH1R z1E{AD8s`A5^Z*T_fuO1KEEfYqJtzT! z1~@_U7MDT&Np=PXC3eV?0?z647}hZ| zFyt^YFa$F~9H-9&nOc@%f=nHQ&I)`A8V_Y;V0ZxI97#LWX7#P@?7#LnLGBAM7WCPvU ze2$TU;R0w-4%B`FEvsc@U;vH$gJucpL32w_xFI8KTs#a6pedwtoDg4wf(nK~vpHY5 z7#O~CF))1NVqo~e#lY~3i-F+}Xf&6bfq{{mfq|Kufq{jafq{*ifq{dYfq{#gfq{n` zGSR}%&A=eQ&AxEbmhM7bFl#JCw4#6hF8+zbp-+zbq#xEL5#azQ3L zKr_9dQ8>_i25A1G7F3dfCR*7U7(&?@7=oZt0SZAF2F+i9<||-)5Dl8D0MV$po`Ink zG(F75z|hRbz|a7V8_*mEXwCvOM**6X0BHivLx83oCbBUw%wc3;Xk=ty&|zX=;ALW9 z;9`R0gu~G31<(K-XhH@wGXR>T1x>bsM*g00LuLU$o&sY~{eOj%f#DJ-0|Q7Pnwx=P zDmMeeG;Ril0#L7;3o`T%3IUKDXe7Ujn}MN)n}MO6n}H#Ln}MN(8#0<7&dtC88o@W= zhK$F!Y1+e-{^I@*^5cFoJxI4TDDELFocC(+`^e z0F8Hp2Fzb@GcY{hh77cWil z3)2YF05S+<*$HS$Uk)lhxfvKhi3b*4uuwv$L2(LG12P8`B_Ic&V-3)hKLY~;Q_NKG zkZ}E8W(EdZRt5$eRt5%hRt5$$XtUddm4U&S71CZeVr5_eZD`PAWnj={Wnj=@g)BD# zEkgk{&q0fAK+DY@u`n=zmYE)AW?%pFxW6NFjzA)Fjz4&FjzvnzBx<`3}(!bMYN{O z3=E*NZ9r?S)R-9C#^nHd;_m>C!ZnHd-am>C%OnHd=P zm>C#&nHd;(m>C$jm>C#2K_wRlGXn!VGXn$L^tpMg;-0sd7{Gm#8%zugmzfwCE-^7M zTx4QkxWL4~aGr^QAp_L60F84oF)*Y-y9uCf1E@Fvt&W-jZ7faPE*i+XpQC;fX!;5i z;-DF7&NSDGn-TWsEaX+k%0l!Bmq^>prUF$sG?m9t*sX`GB7LxRVmQ*fTgVds$16r{LT2p~!0jOz-ZaK0> zkb^;I?t(JgQm7+AhA#uH?P6qLSOr>o!N|Y>${!#{fG|jGC6YWyY&D1vYUhA7!!WW% zpwIxhej?N-pdbYWC&;&;Al$&nzyNb7NIys%q#neEsoeq%9nkhaPzY^eWMBa4gQ=?r zX#z0d_d-WtK;j_tKwV2%D1k<2K>9#xL1&YK;cKwgMtavivuYH34myj29P3jK1>tHK`?b7M<5#v(gTVbQ2e8-1DSal+G7N%y9A2= zi)gNf8381+;Dh8fqZ(Kzd*a8m0$i7Ra+8vtV*_LGh1W zf`I|q0#J&FWhIaWpfN{~B_P8%utzreK1r=Bz$ATOOawy0SaQ+AR0wf61 z1lpYdif2%ef?WFsDQH2hcTm9t8i57HFQ_FCS~d$>P7CTxJ!E8H067d~-aTkR14^`@ z@ePpqAPYfJ0BZe%__ILq4@-O?Nsz^$-~%ZF6|*42K-(KYE{AFW5Bq{b03;6+gRx;| zfE*7q2jp1Lwh53~un-2xf%JmoA7m*=1E@;~k^m_LNrKoQ8fGYn4{{hN?qT9EG0<2v zvLirUN@R0D4u7%($-&s5su+}BctG=j zj0_B*5kFAX%+18W0Lz}7pussN1_pM}_y?%7#l*l+4;q64_0B*g8E8xjG)Bb;8Ug|h zs4y`w{9|Nb_zhYR1RXvEEvE)0*dL6LQ6JC{<0t6Y)kmc28&|@FC1OzFb{7=?$cY1# zdO(z!{k6E9>_e98st(B>%{D9TTP;vb|4lt)3q3JMlbY6WE_P+o;`fKEJ1-B0}2U{A)qJ#l?|XG z8l)B!0wA@pUTS^+da0a_dY+J6C>Y5+|+fQF}IKx_O!gS605APMN0H)tdXH0TD}*8$qG3Yw;n zf=*c|Ffr6Kzyv{a8K8l3kYbP`m-kAYcMe| zs4+1xs6w$ibTA&Yp#-!K5HxoJ8VLl=pMWM{5}E257%Z6>7(g>J2}}$O7EBBbNzkck z&{Pm;v=($}1!(#jbhm~Zbeafsy$EQ^2sCvBnnD82QGzCPL8Je6ObiURObiU5TVkx3 z7#Kj~V<0;~W`pF-nHU&MLA^yL1_nz|_=7Zqw!?r{qJjpOpHHf|wW>K$DLkL6Bq&69YpObe0x0Qwy4>0!=3!gU;rH`ns8*ISd8{h7`~WSI`_5 zXf6xd_soONmw@Cz2Md5Un4Sa87Jw=zCI$wOIa`<*7;-@IznO`FVG|Pr!v^Ro7SL*z zg-i?#APefC6`(0v&}tb*28Ke=Fe3v4LlKk@>a3P9F))-vr=UUO z<;ZN18C6US3>BdGFNSIY83K~121`JC!5}`!B2bSQG@lLPPhw(V0I2~@BlI#s=8G#q zMHy5dx_O}4BbXT={mAS|p!lDNWMDsN5`>9?0kp;kw1FLD0ccIo6eb3S$`=c zKw_Zagc$}?2hs!b4Jb6wJpghvC`3RG1bGmo2ib8TeW3M86`=SBSpX6MDI&y%1v|)a zPzZqZpc@P_3#1Ne0Ry@`NH0QPJtXmfG=Y{`ftFi=G=t(6q!8o-kU^lOSfC|Ypru&| z%?Q09{UCK9IhZG4YGHhkc_4XY2h9cr4@dzh@qyNNfeZpU0HhdXIl2arJV*?r2gC*i zKeBqznlO+&vLzsOFtgD0)q{KrT1*CtGxUT83Sy80K~qiG424+^GXpu%A}3gwIam^F zJvi^Kh35CA&;kOK*ViyHFsx!?U|7M#z_5~ufnhll1H&>XA0!5n2k}>f#<-an7}kSk zexPj7AQi}`pite-#K5qN2{M1S6Evw0P23RqdIpBAObiU$pb9{#8m4$VR3S+05EBE# z0VW29{Y(rDd!cIgK>47FxqVPJNbVpL1H%y{{$Z$|qf878ph>rdpxr7=3=Aik7#L1~ zg7-KR1H)-1$ZCqSObiUym>3wYg4Rhv*;kkt7_Kux#yT0885lrAfd4^Fb0!9c?@SB~ ze?e2rObiTPnHU&;GchoHWMW|W$;80$g^7XTE)xU8XC?-QPfQF9pxNCI&>3FPwDxUK zp#@R^k^l*S*!Q5CKzxvb_e=~7kC+%39zw-IYGLAUnHU(}FflN^W@2D?1!}r6F)+Mf zVqkdA#K7>3iGkrM6J%Bww1Ma`w2pZPbs)&D`=I;}vj}7`C@!HA3?Ok3`v=sQAm4%1 zfG|i7Et#v{D45h8t8& zLZb)72Vsyrh=yTwzEnLk1A{bZ*qE7tL4uiqL7bU^L5!J!K@>{E*pg^+QfPc+eaLJ@ zW(Ed%W(Ee(aIPFP1A{Cxq+$c*3=qE_v}6mC6(9oS z-k`M&%nS^g%nS?~%nS@h%nS_r%nS^A%nS^=P&Ee33=D?M3=E*vRwht0Etnze_(9nl zRF&t0;vd9;IRG>)3K}W}4UK{Z+(85FpnY8++8#Ra4r&X4G;d;NV3@_szz_u*&1Ys{ zSisD{FoBtYVL3Ac!!po98)gQEe&|U4B4!4Lh0F{LlbIP9<}))e%w%R@n9j_=Fp0UI zfgy#NfdSM?fnm^80F0f)%)pSy%)pSq%)k&2UFa6e%)k)I%)k)A%)k)N3|SQt#>~JF z!py)B%nX^V_hDvWaARg*@M30Q@MLCSaAjs-aA9U(a7MGs9Tfi{g&xcd4BpI;O=BQM zLCg#cAhAGZ1_nQ728IA;1_pm-28K{(28I}@ucM(fj1RU9bm{@R@JIXlG_%Xk%tzXk}(#XklhxXl7<$Xkuny zXk=z!Xkcbw0Qq$qC@n%`1{510w@ihaJp&q}{h)c5Nzf>o$IQSmmzjZK4pif8q^JfN z06J6&MPB{KuV zT4n}@EzArIn?dt2p#9^ZExn+58PFm-kl;R$&q0$G%nS^Bm>C#$F*7iLLJicQg(VTt zmVFp|2Q-90=g#Z|P3SN{_8fs$cJBry5716qW(EdO%z?IigZd<(*{I*l3=F@R85lk> zGcbH)W?*;^3aWRYC}3n@c+1Sd@RFH<0n|GK^~^wydch1Sk)JU$Fg#&qV0aATGczze zV1|^ux0x9jt}-()Tw!KlxWvrBa1j($pqUy_G60=B!3;T-;~Z#p8Z!gKS!MC$3f}#pEE`5ZVf#EbW1H&n128NSRg~yp07>+SBFo0+f2C*+g4ZY6Hz;KP3f#C)- z1H(;FLCDO&aEF9&?4F8!K7*IpI9y7Q>>s@IT+<%!F7(k&7T9D7c!oaW(6#pP!fR5+^ z9o@5lg@FNdtj}B)1_sdKTA*M89m3`YT6GA@?ko%pE-VZTpyS7!SQr>UN0T|QFff3Q zEdwpm1tl`j!d(^?1_nD81_sa(XPlr#zD$ra&_HLSfzC{Wb*Sq>D}6x+tC_JdfDdN_ z^~gadw}DQ11NF8+J$29uVNfp|+*B47w}~3_2_f49YAF4BF6@#u6+H z3|cG<44R--#!L(h8Y~P9sw@l)Dl7~PN+3@_R~3U+8OwkUvH>kS1}#4ZEk_0|TV`cp zV1T)p9i#!Yq6D-g88oN~UET~j{0g*$8RRI?GH1}TW?|?OXV7wI(6VPf=(1-)C=JpB zS_TbT{wxU^90i+Q4_W^Vay1v|L^mv!gM1H?M`%Lm0f~XeC1CQPpa+F0NDQ=A6BK%& zff0~8m>i4^iXu7CK~^9Eum%>$i8>%xg2X^k0rDYegayP0830nJ1`2ZMGADJ=!fohC z3`icN9%LcNw;(+*hk?uj=>-k07(mklh+hwq0L2w(v;}mEA4oGuBS;b?2V#Q^2Duhw z8R%d>bLh%)kV8Rg*gy_PG8B|9K>9#tptC`V5+nyTvmSg72*?mnq5>r%kR*r=qM?ew zYCypXQU^+uAYXzKA}C>jLIdO@&=~`um4~3^E}#Y)Y(5)i4oE+Y4e|_xUk_R54&r#R zFfh1-d;+RbSsLBR<+WDj&mALv9sP$C0`7-)P7beJDV9+ZPXVjy|YnR+m} zP!Y31t152 z)WX=H!~8&&fX<=@C76yhyQ2qxQ2FvFl&7e~OL8kzsi-Qj610CE4I?*o~>PyfmfFNIh zd=5JO52PQY4@QGd-^*oTU;rgtkT@)gN?8~fAW>A$z>v?vzyOLP&~baPI07BV2a02m zt93wU3Nb;_2I%O%0u}~_JQfD9(x0$BjE5EexsHq3D#H83`8oD;NHVTM(3UVPRXhA6+K&1$2igzH!M_18DLC zbco@776t~;nQ*s28@Cu37(nO9fp((YVPRkZ`4V)79B4iNL(twaMh1pVMu?gMMh1o~ z&`t)>DzJijR*rhmA#%@I7#Ni3b({$bjR{46+>1m*2+CV3!flgNg9peV#gN|PV9m@tft_`LJBn~=>3uKoR zD+2@QEHTiLV4|!H3_`3741%CDBS6PNfQ|$MotywVbAT1nw*Z~020C{T)OrRTh{nvy z!0-c9Ai)d)9XJL$#0+$}83)uL&HQkQm4=5mp8UVbF#EkYyl^AYXwbK^Sxh8R&2_P)vz|wlje?@Ub#5fKCtw z9YG8W1<)V~=-e>Sd19a=z(8k>fpQQ?yn~T}0d!OtDD8mG5d-aFf~f`dEkSH0(D6H< zZNwlB$Pm!EU!YDUNHM6>2-*S#>cN7}4Fk!8ECE>nT6+ny1f&k624*qH98fn5qz)zq zTDJ+Br2);>fabgmSQ!`$Ss55CSQ!|2K?g5evobJPv4XaenKrR1b58(modg|(_=s)# z;!qCF?Hx_5l8nqIdS=^~G_$%fPiJXo6=PJJF5S*5nF$(u;%8uJ_>{C>e{I}@KqkgG zb3J1{0|o|n&`=u#L&Notf$|F5zIQV*#u@6F=ovFGfJS;i$FNIgu$b+s_^rXj7-yts zXsBnw02&?90ZRK+8*c7#JFOw^?0@llQX)TVbSU!oYB7x_k$#q$#K~Ez7{rpd=ZV z6z#8Z1EB!avz20CXm}K`y52HY;R!;9e|l~QtE4ojvX^9FXmB^^ojk+y$_0c1=jjVO zSS1gR7>x55l0B>H9lbB~2?>85lrrSpHV8iJy4cuY|MI{i80Pp&qB|Tfnnct$1c{b(xCnPAQQ3*S(nAF z&bbUq0S0=;dd3VFrwewoN=n}a0agLplq>{F z0pF$8t5h_v1}(w?9el*VU^V@BH>)wD-*o*RR!PRF>7G5T#*C@cYkOFI8H=Z%1_|z& z{MSf77(k1jL4IO**=I0kpTt=KMmt*t z(2>&&;=G`9f*2Z<{ykf}Qo^^q6i9qGG3q_Ooi+7Vg@>%c>_HIJp+c$=^qcXim@0PF-)3%y`R;Xaqe{P39QD9Yo^;zV3jo8&j&6? z8}k3MwN`Uz{Q(*U0z?~ zw#Ok9@J&BBfmM=GY5HxDI#Yf~Xz+ar&rl7S{g#O_&REX?P zwPa$9vw%2f>Gb9)tj5yoguw@fH=K<%W_rBn{8NMpyQg2A!YavlWcq6mB{rRPDyuKk zZ{g_;U2LK(CJYSj(+x%0!09ny`b9A|5jJoD#ZF&1l~t1Q)AYh#He;s$BGW%iWtD(% zB^i+wqNU3=oRWsdn2CK33A}Iz2Q0e7gt~KBE;(Ab3 zW2k4KXU4#=ar$JCf>LS7eI6neb56k$(@k%K?vr6)Xpj^V$_Y{CzXFbVaISx?4sqH6 zDOI-J@d*#Wel*rIWni$LzIP6*Hs=?01_n@t%s2hx99Bu;Obv+o4@YVX=3GB>nTauC zy6jw5Nw_+z>GpHs`A&MiCM3Y;t(x>&O!QJKGzS?mFszy0JD1g1+FuKNczwfLrS`ecRxjw$u zauZ=;V(ig^Upe^()+a`rmx92+>-Myc^)_< zz)^vsTxNw1#Pp;>6Yt&S#ZmB*OUhAazjJ*iN4) z49Wf;)BnzAHD)|N-EaY`FXMvg^$S=fP0I}+wpVLy+mra%q=bpl0Fs#)a2Nd6)6Xto zHD=75&bSa<{6V9^e<7=}w2BcV1@S7kbMbupR07UT;FNrAy8I$mNyaDB8xOLIP4C~& zDlz@(LRNXkxaslxStS`!q*;s^7@z`B3am|X`hrEQCepi2ASomE`mOvqE{v7n5Hka% zQgGdC%y?wF@?utFX;U+ZTg3hKHaq{gYskb{2dW;785r!R7cOQsX7ri96r?WP3}T+s z46aYkzc!u%yBXYqO_=VxoK=#scslPAR!Qk*Gw>A#4HwF_?%r3t<-x>QXQT&?sVUPP zm#`W$T2C)s!rBO}5T*+(Wi`?Dw1Bu_a@cZ4kEM)zz-EI>;2Rc@tn`ytX{)Hif)7lL zXQme}WwmC^o4$4_t1n~u^xsQajTt?s>n{TrYM#qjjTzOZ*DhmiWPCpTKS=PEWHn~|G(B(+4dUSwD>{s~Es=c;Rba@#P&obmYF1xZu$N4CU&Ct5SU-Kg z1e>IEr#r;h>!Nqg_!RsPM(6?uhM0u`1H&bENU>A%B(rjY;=+kgH3kd}Djtx$Y1Mft zTC^})4=Q8GzyNhM4&x0N7{JC$LLD_dWi6`|BUn#5uByhEfdRR3BQiaC9jiQ~g(EqA z&N@~BJB4fIU)3>j*s7j9scWbB{by@A!3 zk$L+54XnP5BGY*{vKlkCPj>{hvAm~8Z)8oEwibY-1bL=Mae?pN6+kn#5va|7cOz>$ zFQc z{&X{|v1z;(B(i0d9x5N;R05@LP{Coqz;MVK;(FJ^$;oHcKNo?E9*~C_^rri60oMT_ zYI?&K)(q3lp^(@YeHokKX2O01tQeeN_d#W*wM)-c6a4|I3k~%wL1q5Q>9Si{C8e*1 zLZaSBM{VGO@FwJO;Wl$3{r@Q1g%eZJd_jXoE#}K_WiZQZG-@cpGn6YO1>)ou9(%TXs)qK@{kq07z zqCdeQ2acg*)8+TD8Z#c79t@(Arnm25osF$UFFAeRURE8>TS?&iuo@(%pWneI$*4J< zcOR=HBg=I4eX#s3Hob5kt1RQ}>HQ#?7t>enWA&AmOo7x;MB5s++`h@;a06P?1T0v_>aFqwHDPrGI#Dm#4|NIYWt=>x3BXwv!zSpy+8Fi2+WK~`hNNz-2*WOZfS zJYD|~t0bpJ7Wg!+29xQ5hgc;UW2a{yVl`&GGJXCbR&CDBnG6gX;9f9Dbh^wTRw2gC z(9bns88U!{C1s2YA^Nh;U7MUz+ItY( zPBS*qGi0zWoE~SzCc)%UIDNutRtd9^LP(}OTCi1L;SvjIEXi2U7}U5)EQHiN|9$+z zPTo_H1)E_G%FhLb(|wM!N|^N)LXw5elfP#+?dmUMVr+n#w!9G1s(AJO#dF(tug)+r z&V{;YN8xn4C#(`oCkv;4ILRu(bgOXsx#O%7Os@;47hGVKkoi-{zyKO1h>JcS<0fuV zfzZiUG+pKdtAvbB5%`L@ z=hq7^suM?e>`Bpdg_EojGQXiJHoM5Fueely3mo&{GD@g;y4)RB2_~)L>3JXzIu}o0 zcZO9L6?D{0e#d*fDtAGjS_g!K)j*F3YMQPsKF-66k9w!;1sI@EcTcpN~ZUm zLh>=hi&|V@Ees3|P$Q@FoMsgQX;wIm&f(aHPq=y8|d#H|(V1mXI)7!G?b!U;nnyq~Lrn9UV-e<}zpLUMbi0Nec^nF2W z5=@WFr~92_m0)76n4WQt)dwzqykhzVBz4ne&a+A}^;J%{IL~SX4;W~W!uhz|_`7I2 z#|4t&9hwE0pa~tGjA7|lzIuAiWmX9$XgFd-9VEOleUEPL$?EBUo*@#A%$;gT$M2P> z%t@VF0iZ$~)G{z;V1Ohi38oL#(+YGhPkT3tq8GOn10}#}hEauquYx42=~g^r9c4SqoGyp%iN9xgAn|AbbSX zhY=kxd!YKwUNu6hlJ=_%Z0rx3L47M@J##%n0|wlc3@l0^cEGEUKaJA^{;*2O2sSY= zfCkmyWFJbozESukxK1?FGiP8>Z<_80s%#*Rm0+@Kn%?l6r0frMHay!yOhR}YJvd?N zVNU+uG<^d*8>03j>}H4!5=`>Ybc>wWNvN;T!kr1-AwkX47cjF)Ot-toDnx>@kSM_P zze~&X1OHeh;K?bZWxBw9q-qBi9uWPoj3dF6+A@9Kd!z&pk;gP27OsTk(d~hRCZ>6? z;DIH7boWB+fn{6?CRkBK$UK-k54BDYc*H7!5$so6r_Te4zigd;;0de5^b3zj3Vw8F z!>ofj7vem4-7tN^8&Zsy>1>0v9k)LH@nEihqzX7E8G_o*xGbL8HvPayRtYAUe_;-R z`VZdBfL1;vr!+)L!Bri>av;oRSW!txJuV-?sx!0-nF;2jjP~glzOo`3P%wL-846Y% z6X8>ciwUPqSR}(L3s{R97Ut+#`+xg%xtFXGa2LZ81?h1BYewM;D|DNoH4YP`8bgE; z>E$lWMws6xbxdFL21|Z|`4#3zSOXs#8{`#lsQCw8r9s^wqtXfK>s%0iU;j6pnH7>t z4E4+yV5JW%SHNP*ymPwVTP(T6t8;n{NF3IfjO(1f0mO%uHpQLO1=!dmm^wPA|9i_S zVK%Q5(goVGvnq`vyJ8a9W>e4#h^FZh7b!jY8jhV&7a`dni1dwLJFfWTPKM9+eO0haKfrcN*Th@l(aK|z&7cPA|B z(A^7*8sVPlIm~Q`;Dlx>cp`!5!_3sMaDbXGv#|$~h>k~Y*KXY&02<#j*0Ti77D7yb z*?=$!B97pryBs2q2w_M;g{dA@9iBkN8kjI!Z}v_Dm4cAyLs$Yc92z004ON(4SX#p6 z!fk!iFYvQTFu}qMW++4-x@8DH%zU^0=>>vp5=_vrhBn?1>LBJJ_%MA?ad^>9oVlao z{KM_JC^uN8iJqY;L;r;7cYd%+$Si=WxERP1a%j^ORj>*}(0DeqkTlyk0n)ZEx?J-2 z>df7sDHu?iGG|~o43#;qd180%gAg6CUQ<0oGlr`ZrpNtcmB7<3e-71qs3^%`+ls8E zV7+Fbl=^eR^ffim#sc{FN7iRhWZRKtfc)OnxGyH#@6;-{iKt>mf~a zQ&6kl7%F4k`s;v-_8xPvUPBW-QwH~m)AfF_N-)8iOt7LpdgAm20&IxtEq~(l4Ip)} zrgh6iNO!ciH3TH46`Oq{|8bD?H0&voCqmS&(E0n>Asv0XtD;>7cpmG zK(9_HufWi&N~mj@Amyn9&TVd)TNE~l%1+CbDwt%O<;$%Y%^+B{@h9E2rz(Nw1W6;tB6D;RILzsxR7%aWQT7j?tCB0ri z3rm9Kp#&2&A5Ukw#!AXa4Vp#BBN51{65Cv8!5*#k`3$jK(ib)0l||g zv_v9j*bY4_xaGhz~$HT{7wn*@{Utm(gm+0IFa+d(E*Zzl7tX+D><1w5e-UX*lf`eP9`W9dnJ zkQsjquT$@gW=mCo*8v*p85%-Xlln4!oISlklud%^!JO$i6>JhrpXN;eAkGF_Knhy+ z16e>SDf4>{qyYJ_y<@^mj;EldZH9WF`BH|MxzlCDaOs==r;|;JsbKE(f=YxHP&3hN zV#=F0T|t~p0!cbSIhi1+ZOiU z@!+XR@M3{U)AhHriA@idV3TDsSTMauf=vQOV}uS1XgND*pn(Cr?8jIJ$8t_%1_qZ! z)A=OXBm#mKLFUP4-&-91G`%7TwCoPNAfDmTB1o9=th#W)ie*j)c;eg8M9+YsX)&Y) z{idz!^7cuxJYX49(6YA~i>FTjnYt6IV#7r{tHTH87=l%RmlT{|4C(Rg(A@Q5m3nU@ zcwQd73ikeDNKL%){;7t!cFRGFj6ln74H+0dE}niynoWX316wR1HW`LIY8-VY718wy1e9sX&>y6Y#CdP-LTZ0)G8cdf!`cI{QRvcb3^ zMq@oAPz}Q1wgj>v!9o7xqUBoFu;r0P3=D}&AakYj#9Ena+{415zVJ0+V5nOHSt1&C z?O{{Yo3Y{`x(1H+;vkN^#edwBZq6%H}*l32s( zQBrKu^(G7qTcH}u%vZ9?v4?;b6M|;AjTjjAFM;F|<(((^nwJ0h1#TySmjz;3m}LxF zXu!abosv{qoWa0QG~X>?%BIXs;EV&#Stpi2lG?1fyI1uHUIq0N4X1yRVl(Chtq(C^ zV7R(ux`8yCgv^5_kQsX3>%2MUr|yE9;-IDAh71gEmQ1gcX4989W?;aKY0$Dw&<;aL ztofLQFNO4?o(l=??~>gOTAFO62Tlt|pfcJf|GkS@a@oQD0&lk1xp=yt44bw*GypR5 zGQm43PS#B-*v#>;44gZR^-QP7fR-K^F));8WF~{|UOSW9_kFSdCpV}9!|8FS*klCI zqhxy5DK-@W^w7vX=+a6f1_s>eGn*fhPJVskV%@{13Ah-54_l+6KWd6pHpeI%!{vr^%&{Z8!#|Tf;uut`tD{&`K4>YP5_PXGu(!1 zI-WHDz%tQ5(7qmHNG#%ToEZZHZpS@=nl>q5#phKoOAmlNWDQx)p}rPUASIub@9GY1 z0Bt}3rAtG6#z9tc1{*Uln68DSS%!69MYnZUyn%+YAp-*zbD>$~DAYz(zNSWPW_wTp zUTOnDG!%GGX41d={Vq(L#g>p}JFRB3toe`)|EU7F2$7`Od zb9~{OR8YnSnQzR%;Isjvr>6RO$6lW~IZ!&nDFP~M3{AkXqPS)H1sOIYCW9^0S!CI?m^`*jH;`qMP>J0FDP%D_P##+#gQwTG zOwW;JlVEzdWqO+|sQU@kaeeFbU9xO0$}kfcwn56d86P8GPn#rqS_HH;2)vnU)^tTV zHe(qqaSU-A!|QF+3*^`&WN$d4j7I+1AY1y(L8D&6P#G6b z~r7=(vGh%SxKHWi{O~Nd8 zJEUZCXV2A2vXZ|D4t{W5WUz&S0ko6u5@TRPd-;sJVAH|vg_7;l`{daqm?mzYzCxa) zfOT0kT|j|Nf{ACx^a;jn64TxE*xZy=cR-wg86Pki$l@@@8CHXSaQHkU=y z3$)o>;KpEY9~kQy8p4e6-ZMSMm`#ESY8+GCp6Pu$Y!XbRd!`$hvPm$t@0lK;j0h2? z*?XohFlUpPK2M9y4Q>r#*J|&buAsu^g6>dcJ~-fE&UwFg`Ue#(&f?rR-AXP`KB(l2PG1gAq@dAChNt_cPf%lvvx7wt?vQfZ4@qT5W*Z#+(Zm6&@{PdTA{k=$ zPuEdrGh!;*KRrR6O@gUu|MV(#HZ3O0vgrw$Y!dM0VyE{{KcUX%!gO;#SezBSjBNV+ zAU28V?wV}k80y&$POsBolVIXMIDLi&n+r^y6RZ!m!BJ%T{-dm{Ob|Edq8Nl^0Xw)E zjGm?lMItO}paBjGPIA-OjziP44DhEhQ072RbLf0<8br?uFy}#Hos>KZ3lNxz5EmLv zPtar2AtCcX9RMzkh}UN3dlZt=C0iq$Wm)4uyQ@I8v;hM{@=-`V!o!tnCzB!n9g?y^ zc>v~8STO*#8WuG&I}SmbUMm9&lU@10wL^4*@>|8x=?(gz{B;ykEdSXtapg7D?AZtv zD~?XzqEAv82Ma$)xS^CD;FyA#Xf%C+3Y!pew1Op}PA4|hq>oSEW5{O2C_nwZA)BO3 z+Hpv&w$fkr;+#pBc7wAtxZMkL6fCHq_CSM(l*q-J`d}p>cHH&rC^jGXb{|U+xoM-lMykDy2G>CJ?B@Y-zw? zuw{CI1)GG7>M6(o`}^Ym%nZlVf&>`NAPrkk6KshEo0c7{HMi>&BuRFCcNJm2uH6pa ztqm@CPoIKx*iTLTCB8i=s16}>`_%M4OEw9a7f==RIj&s@)#Ctl=|L5x0RzL2Q_~$l zDi}{g`Y%U$)|V>H+YOpX1NH0-7#N^tFhOZEtnL7fIWS-~1Kc|@I5YhY$d=z{AT_1j zyZ7}gl3F8}7`4E?Mg|7Ev(p8v*d)v@oQ3!$$7apCk~iQ@sUVk{F)-lP3t4-wrLy`Q zB!n<)S(wbfbJN#Yu}R4AoQL?p`DxD1U42|>*{4Y*#uwj#6 zO1U^az?Mx^-bl}&@e)ihaVS0A!j8>^DdY0=JUdW>GF`qhoy(rhh$-#b zbUS;tG$!}!)0f$^88L2~Zs^G-$vAmBqZgYbliQ8yd=6|9X3;kw{e!JO>BTljgCS#r z;8HmE1|$Sl=v3JoN9we-Qc}-vlnQ-95nm`+T(j; z`UH^a`)@!h$e+$#i&xAo$^x4KKBnX<)ZYBX)$O@z{-7>9Xe`o*f#La$>Gwc-f8T%x zs@--Av6>yABQiiLOc)rrZ$c8G=Kc4dO4Q~-dMt*PdL|4qH>c}3vPsC8+=Mjsdf#t# zTk_CuKf+$`o6{2<*(A(jZbJOc5c`2Qv-2-#t{vodQwD~-n~7)60Cx${pNH5cQy$bthO4N>lrZA+@9{| z%qGD!<@WS5PHYm4+0z#mu}Ly<-<;;mCSm3c4Xx!7jv3e48+8OA2f`RJFrb?VmN7Qe zGlH3D=5hzJk!IHy9}5vn2hdp~pe$<0zz}=~5`Ih@1MhSF(FuhPF&Ho~q~4i6$C*t+ zru+`1nIfTl|61nUPh8-hC%CBUzcc-UGnn)~dyRb>hoV)``Bj0ok zWuzA9x*>E3X`#~Y=ukk*UKtn@DdWM#I1`JnkOn>LXCSis(oq@J0 zF`$Pj)M19;G-Bh5E4B=c^^6&yDM7{nT2Q~aQMY~Llcr1H@Bt4^LDL2kOlA8`NIp|! z{JDRX$2UkGH3tovao?Q&$(7AWCKp>?1y@{aZcKM@W0QcJh1KQY0UBsJGeb`m5Wj&U zPVNz8peA$nyYTt_*6I)$(9U2q7sJym_OT6+!=O5*$GBq@XGSo`!i-_MdSkjCQl^2+ z&$&6h1|$v*D3E$k=E9y;Kt6y4K1d}fQ$b5ZSlI|IB8jIUg(>6Q>C#?ol2B8aroWgT z;Ke2ZCji45F-W)8_=SDKNn{ zvh`I?zY)ad!4$>Z(wIK~n64GV=EL;=$MlL2HX|mE zpVQYxvl%f7|D66HgiXRs?I$GFY+G}~qNPUR2xOx#Xe`O(C#3ki`A_@v`%*7Z=z*$O z69xv)pVRe1*(78lp?aTv@P6c{8JdaEoBngUUJ{!GQ_;`qH6WGsKOr%EsN%uy(>{Mo z5h^==PTv4hfqrz52;+>OkQuMlKc_zlWiyi5@)J_4v3Vb#zvkBaY7y|3WROeu{hV$T z#%3hL@C#x~kHm~ap*Q8uf(Kr~xtjCW^oB4t3A5e85EcD1-7`K(uhIusonRHhzaYMC zb30JoZkz);!wlNX(D*g|To{{#jKwcV)wm=jzIKsMKIjw#b3FslETHGF=}h5lK1`Xv zrU!(x8OfCVg4D7(-(y)b8!K7Bl_>bQv-)4t=Y_LLm~}(VDzploWhJ);bO4Phq;oar z7bGbx(Yn`N>Z$1kp63I*aNV!zZ^GFmWcL1od2xyuYoC&gjPhSL5KIhl;YY}WlW>cUCjhtL> zw<{&YMgdfSn1QNG2Fyb~jQ&E}auBP0z>~_6Y!WhO{z3wHo>{X0#v|z^pdv;Oyog-j z-}D2KY!Xaz|EAxHWHVxZ!@xM5KZ-3C%qWjyGh~8#aQdMrHYvtM)9*&HNt$hxg1BCv zaq{%I(}`cewY?!|MIWJHkN`!8TQpl56UWc(>!R6Y7-ey%vCGVi)9usP#F-UY7^gGF zvWYVrvoKDVj%71sc4c9l?jOr$C>zeg$RNzX&|u&+D}Fm0KNAb1fu4~eDE_lp7^lyT zWfPaJg(~S_S(6bjXjOqwGJ%D0`o&l_ar4D2j0~U>?F4(kbhj6|hY(7(LuDj>{W1(X zWtNJNInBa2T|SOY-26UN$?fJeH^XVS4kDC%hRSFOX&5thKVFECVP|EWo*Ty|E-TFn zv3auf8|AFtSse%^`mBu87sjy}$~v<$f;YPb*1y3HeYZtKBkV zi|p0sAe6L1WpWZ0{l7MGrz1jUHY?+F+jur{CcCrK!{XU|WU_b|!Gq&l|G)XfC3Q-b zh0#RM5VR|vp^azyzIZkXv!y(Y4050=?@KPF^fuUiuDod=vi&kNT z%p;!ZJPB+PGK{>83`z_P4c+~J=WJINe1%Y<%sbs7flb29k(Uv?2Ebf>t%cF=3vLJ% ziM)&qDxeCdQ6{pk?5hSsrj>VkA81d*V&3U164-oX_V6+?fR1GBD4MN)x5JYcp)yHi zx$5JLur{gTtqC9_GGosndO9G>Urw)}Pf zLlba$1}>AXN-}~E-aF0lQq9Zn)ERL01j{^>oGz2XX2j?*-9Lp*lIgAF^sE#%A4c$D zf?_PD43KjIB^l8V6O>Pd9W4kyOi*%qPAZ!e9bSWaz)T{vH;_ZpVMX1*c6zd zIe8}5(+!P4Cx#^)W|Lrao?e>H<_qUS4!@ZGEuBq>YlZ?NgB56&L2-IOA)5q~k>Yfn z3^oZFZ$(B1(CLY(buY_{A|Hb0Qb0=)Oc)rV6{ja;ut}JvDl&pkr?mAesFZCzWCLz* z7#ivsnlvavlCzbecZgKu{WaiX5gc)v)7NIONixk-oPHt$w&Y1{x^^a;IjldrRdIS< zCYuD)LB;7aGTG9YAe}s>D~i*lve=9mS*H7Du^BTxQJj9Dn9Ydkt>W};S!_m3KNP3G z0?}+r)8(?+jF_~QrcWqglYkuhC&p^Tz+kR4-QfhA1e2T6^aa^$5{&WFK?iQh1Sm0r zd)A>hA8HH9dsl%y0q$R2Qkwn_WYlY==}I|lMl!#lDmS03pX8Lj1~f4Q8fh?OU|?0A zUXa5kVTM};ZW&hP>HBinB$zhbpME2U&4@`#eL7DrXw{ecbhTVI9~mhPMh0#Mh6erR zb_brdCe?!72kxY-)|lRx%a$gis0mS#t0|YXYD$tnXtfSFtQmN;rVHe;8OgM1K@#+g zDGo=j?1+#6Hx$6-&q2lMad~W7D&pFV;8WZRwIM1K4=EmXpCS1bT-kz0VtBNsugL?= zKSJo~_wv}JAaMh3drIp-3}~^xBJFkI1gIko%H#$N45m8M_43(#nB?@P*W|MqL1IK? z`r&-Gb|wb>={^N8F)>R}YgQjp>-ev|SpN39q$xP>foJg6>O+c=)rt{|ezpDwwVDkf zZHQg^)6W&KNtk&UKpg*?M?sRiNfmVb4s_K5mQK6@r~_oga8Pl&Od*>Vmzp6YEsKzn z3+5H#%LT?mCl^TL&IOPI=|HjPRtk$L5k+u2aE=ip184!6sKi_yF{ZPi#Y&)ME*1<7 ztBj_vD`k_AIb_7h06MGhtz&eAslNzleF|v!%!q;ErqT3ArEEqrAB`aKEgE+Av5xW) z(4nEAST(c+C0>IvHX~^fV@SM*+^*8lma#}A?<oNMGlI|6;WU|Ux13FaNy=pU zoN~~JtjYAa4mJs<8k6Z4%Go5Or<*_;8Tm6?UM!J2@DS`a13hyF2KVU~>)0fj)|yP0 zt6-Bb+iSwe06I?hg4r8Jztf_irZ6}t7#J==Wo|Veln^`j5mW|%WDFP>&{lFXJvW)Y z0JO66o5}QqIc%b=#taM`rqdrRVv}GJH=X{jf=vRtB2z}s6yhv?mU)ljjbtD}243^# zVmjTXlFbOdloPaAvz`rQv8EK0pXu~>lh`DfqD`k4tYs5rHDO@LGMzr5k4;qGoPnX# z6jDzL_?!u|DbnbK`q_|yq0w}@Llv75(?rv0^C0e9ZaTfM3RD1^PVZaD20CJHpXqdg zscaIAv7pmVMW(;6Vq=9bT|HqsU7(sxg6XR1be}FZ37OZXj0~VNsVj7~U)N|!y#U(; z8k=PJV>&%xDVwOJF#`j)86;#^e5z=Vn5hV=@I3!Gd|>UM zg)s~kX4BVHvq{JVnL!fJ3TJ65=@)TrsvhOiOHHW5J(rkO#J549oiA$&Xi?3{a+26 zgtVRoq^R9p@hb3!+h2RAn?Z+qPdBV(lVo~jG2N#YN#j?G=?%4@!E8%N`S>bv9jk50 zGSFH!kV6d_7*Z`Ep~(Hn`jz+OiM(JV!Ieyz<@9qPy~|A@dPT1EIPY6_8gytcNUtda zLmSl81v9zKt^w>3QC0&61~ehinqPN_qanT(l`~*qcx3^p z&=@Sglr3`au7;WjIw%#CV|1T0ZALJI;kZRo;MCesy`v58D~ zXkuf58O;beCm58%pq5OZ)WjwQ5(cFNXrMxZ8C2Lnb3bU|b;3$EBak{#HZhQPnB`Do zWY`=aNn!){t=x*%ZLk>!Lk9F!;7o}Q(+yTZd<9zi4KWiD2>(TPo10kV^{a8J3_p02j+2XHS3E$|eD_ zRuo|_Od~Y$ahgmoXoHmDpde-gtzLt9E6a5HzBV=qvuiGpI!4B=vFybSCV51v#E}Dx z7#NVkAACBqBs5ba2Rzg((zwe^X!0ONp&>Ljp=xDt8=3;CreNU$i+)%lJJ7+#BK>I& zWOPH-S8>4+`#Zv5FN4B{0qh$wQ1yaT0f5VNct}GfAct9lBMse-59`=i;F$vT{knBl05O&Ay~ z%pg^sgxYh(dlP0UgS}}0nzLVGHhmo^1i=TMOUmG`I$$*qv@!&xd!&HG5x$H8(>G3F zGe$0ez!sqgBqJoWA>oKDi7nl;fu{GM8I%dyPy-#T3psojngN&~tuSz10V-ADbsk!t zFx%(@X`eXiF=gbWf0qFV4Y&b>yJ-YX#IUmVzsU3h%h@DNd?77Dh6@2l{<=Sg9hPgt zzqc=lQ^Od6#XafwWJz~Vb@ZWd(ohfWa&_rj%1dVVe5x?ni zQ`sbBHk&~zwum(`pA>U~K&$Z#^$hha85pLUOxK$R$&IyalG78Wv6(>2YjE2IQq4;+ z;ZZhy^)xnf8GnDskivpf=>l(ev4Hj`f%+VV3=EO})BhoCz@BPgRzfOmaPT5kBhZWs z&HtcIhs+E%31}TG%3=iSRe<%3W^Gs)A+-RIay)uoh30Ee(-LWC8dHkNbh$O~-kd0_ zA$l@_=3ogXXn;%OPT-Infve|bz`y{>D@N0=Ol1Y{qysk+(Ou+cI=v3mc!bukprI{D zF)Yez4(nfuPJcKTRuW6V>Huh4O9GlRVErq0LnA$7259Sy3DUn3l{aBvxC-qdD%ZPd zetx4M0?w)6?QXA4r(c-ICcy;hVoAv0=wF$G`d8EC=Cetd;V8h(7#MK$uMA-QD^Ym^ z1_m5mEYKz#a2HF039Wy{Vt_9WTg&{B0&mV5`&Tm zv^;>;Bw&+p$T31<9u@(xq=y!>P=jPRO&|r7#}QjGzal@-PC8HlWx~J!X`F#uSfG>) ztvf&kCN%LuOqRr(20=S4sgMT$Ek^478^C-2Ra* zH82Wd8N^PMb_-a-7_)N0V-sp}gEUOQjnw}l)4{z*>}4j@Dey)C#FOBb47fl;bvPdT z(R_*#>X7I{au+N|;&2zF(=z?(YBpI|iw-ny1uf#yoDIvfNX0C)e}mn09Ik^7kbydU z1lxkgqo(t$gLKM4*&AD@^mx?tzIEUx3O3WGW9v~dL5u~J8o2d9yDE^dg!dYl@?xex zSkGp})EYBgWCL3o(}|erH5=HBnBromZ`i<=W|kHQnV>7MoPVWSWzH^e6#-r*RvHH> zQgc`iU%S6;gtrwsFJ(lpo46GMC<}@d6dc#IG3A0skka1p{ zWegWLJa?PO1e!Jlts`UD6$fdm{tk|lym_zd9(a}jJa~B_Zu+^6Y(_G-;~;&O7-9V3Rog4af}KE{#l_uCN*V0z;@7^Ao3s zY-Teu+mHyEdbRFabjL{XC+I{E(2gVn28OeVkgB5Uw!FZZWL?N^N${TbLrK&3fK2yK zhJ@k%LiO8k>b*dfxVfGoXsPMKd#$kx=EJ{m5811ag)ac*?adZFFc(!89{Gs0L{+*0dc_x3>eEi%7%2irF%^N$?ot4T|5GE zE@&0M;`F-hY-uuqIS@y&UiW4!S!4^l5>|%pYJ)5CBSAdbJ5HgmGX{JvhvYBEm28K{m&88PX za(ux1h0CK()Wm>G3j@#bbNI>#QiJd7E5 z5%d{&_32mkutngWhDW}*YfH)W0|&u(x|uT^ESdgqFPntf*%C;HR(7ISUh;y;<%kU# zPf8$O=b7XhBG_`n9U=3pWV+8j&{R3Z45k^S(;Gm1P}V-cCZb@ZXJoLs6yilkk=2<} z>%%~U>7dT20RzL9lIiF6u}PR6EP>;svzO%YcCaw~TJZbea8Z5=`vH z(=QxllVG~{V|oCHKR=9?hj@x2qT#6d4#AzR%%**tX+TFT#a?svuLt zr^J4Va`ArzO`AYnC|*6i=OAbwK{X?T8UsTE|LT8hN@uBnW|5#OATce$bg*PP$j#F~ z9b_|sao{w}gHT0GFsGquX7W#-eh(B7Kb59~7IiQ|Jvm+LFq@PN=Jl7bVjQL%YCQUy z6!Gat4ztNHp*cbZcX)W!Pd7NiCSjIV4+)q2y2-9LmurERA3}X?f-^jzPKKr%G0+Xt zkdT1}hNN@@B)J}w5&k##B|m7X0@Toz4bzUYNl2p?Cy>$))aJ;XZhVx@7veoh=>46n zmJAH2Y1N2Hw|RQOaW)Ai*XHSR$JiufQko&Fqw?fF@4tFO#gd89To1C4xTSgegOhAV z(_44#3RrJ3RO9d28op#=Aah~o4$Cy5AGALyoh zAEs{|(`!z#H88F2p8gNCNq<-Obcxe!K3H#EiE&SKluU2`PHc2Ev?-X4u z*LFmq_=?ir=?l-W$t!L&hb$DnbLdZ`%bzcc_nSkOjXf@D$`nZPynS-|!!vC5^_^)D z;XTveuQ^rU$P%y`vQSiN1LIuImwQqYRzucgA5Z=oaPOUQOXX_Fs#-gl)Bl4$2~X`> z4LKXfe>Q*T$7hvEOIAZxyKdXCZn7FX`@YSqA=_gVvlk2d#=ZGoQk)F-{ej;iON*vV zm~MZTO_6Dx{Pd)=Y;{uWTvsdhrT&h3V()+1aM|+p-JugVu7Cq*oOuXQZZ-=A=%a zsLd`j&5m7qy0AU_*Xd_%*^RezIIyobVm8q;ojzd)yBJ$hYI$Z}%Jhqs?26NQi`hA* zZ!cx%n{HRk?pE)Rn^=&OnN*aj4`b-2=jaxfROY1W78j%@JAe-UDArF;&Ce>%&(kd{ zfeK`m=4F=X7Nr(|PH0Ig&CE$jErLqrCKe>+SH#B`)P{^1E5>vYpH zc7^FIx*Uqr4W_WOP5(EK-3BbdTac8dud82>l%{K}XE6QY6LuxA3U!!Ypw0!kR$mts zRA3*%MW^S>v8zviFqxg*5T*mw_eh#hC3Fp@E9SE+gY{}-3sikweQd(h74NaBf^~s> z!9Ja%f?c%URIenx3LbsAndwD|C8;Ty#U=Xaf_k}G#c;8*#GK3&43#iZ6s2kTMY)M3 zs76A>^m4PNw;o`Z@gbC=AVC36bErv8*9d(6703_ZbAR%avZf#GVVCoP@lumZ^mX-- zc%aDAGX`l$Pc6|cOUx-v%`DbUttd&&OG!-1Nd+rSNi9w;&C3KO-o%{J=@(D1%a|be zsrtJ5NIYFo56Tc^Vq#H|E?A-%YBX5q^h2}R#biMZHLxOxRl3C)i8(p><;4X#nI*c@ z*Rr!K%0k%1B}JKe=^#ggr662g|>XouJDYFMG17Ol)kP$s5}BO!7&And$hSMEGIFzTaEMwQ1zTSX?V|qXqyTJ6O z$?OW#?|){qoBqj|LuLB%_@cCgp8Z1>;GUNf25M9*ydxd09y7Oo-=aBUS*#4+94oK->Y t=z_fp0?M||0Xerl^21VtiZWe_JD`eY6irVH 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�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 P>FHBhHK(5`;y3^RIhY~F diff --git a/package.json b/package.json index de3cf342f..80e8027e2 100644 --- a/package.json +++ b/package.json @@ -10,11 +10,10 @@ "@gouvfr/dsfr": "^1.11.2", "@graphiql/plugin-explorer": "^3.1.0", "@graphiql/toolkit": "^0.9.1", - "@headlessui/react": "^1.6.6", "@heroicons/react": "^1.0.6", "@hotwired/stimulus": "^3.2.2", "@hotwired/turbo": "^7.3.0", - "@mapbox/mapbox-gl-draw": "^1.3.0", + "@mapbox/mapbox-gl-draw": "^1.4.3", "@popperjs/core": "^2.11.8", "@rails/actiontext": "^7.1.3-4", "@rails/activestorage": "^7.1.3-4", @@ -52,14 +51,14 @@ "graphql": "^16.9.0", "highcharts": "^10.3.3", "lightgallery": "^2.7.2", - "maplibre-gl": "^1.15.2", + "maplibre-gl": "^4.5.0", "match-sorter": "^6.3.4", "patch-package": "^8.0.0", "react": "^18.3.1", "react-aria-components": "^1.3.1", "react-coordinate-input": "^1.0.0", "react-dom": "^18.3.1", - "react-popper": "^2.3.0", + "react-fast-compare": "^3.2.2", "react-use-event-hook": "^0.9.6", "spectaql": "^3.0.1", "stimulus-use": "^0.52.2", @@ -81,7 +80,7 @@ "@types/debounce": "^1.2.4", "@types/geojson": "^7946.0.14", "@types/is-hotkey": "^0.1.10", - "@types/mapbox__mapbox-gl-draw": "^1.2.5", + "@types/mapbox__mapbox-gl-draw": "^1.4.6", "@types/rails__activestorage": "^7.1.1", "@types/rails__ujs": "^6.0.4", "@types/react": "^18.3.3", @@ -137,7 +136,10 @@ "process": true, "gon": true }, - "plugins": ["prettier", "react-hooks"], + "plugins": [ + "prettier", + "react-hooks" + ], "extends": [ "eslint:recommended", "prettier", @@ -156,16 +158,29 @@ "react/no-deprecated": "off" }, "settings": { - "react": { "version": "detect" } + "react": { + "version": "detect" + } }, "overrides": [ { - "files": [".eslintrc.js", "vite.config.ts", "postcss.config.js"], - "env": { "node": true } + "files": [ + ".eslintrc.js", + "vite.config.ts", + "postcss.config.js" + ], + "env": { + "node": true + } }, { - "files": ["**/*.ts", "**/*.tsx"], - "plugins": ["@typescript-eslint"], + "files": [ + "**/*.ts", + "**/*.tsx" + ], + "plugins": [ + "@typescript-eslint" + ], "extends": [ "eslint:recommended", "plugin:@typescript-eslint/recommended",