diff --git a/packages/map/components/Map.tsx b/packages/map/components/Map.tsx index 6296ea0..2ac1501 100644 --- a/packages/map/components/Map.tsx +++ b/packages/map/components/Map.tsx @@ -13,6 +13,8 @@ import "leaflet/dist/leaflet.css"; import { MdFullscreen, MdFullscreenExit, + MdLayers, + MdLayersClear, MdOutlineTraffic, MdSatellite, MdSatelliteAlt, @@ -32,11 +34,13 @@ import { import Control from "react-leaflet-custom-control"; import NonPlayableStations from "@/components/NonPlayableStations"; +import PassengerStations from "@/components/PassengerStations"; import RemoteStations from "@/components/RemoteStations"; import { TrainsList } from "@/components/TrainsList"; import { useSelectedTrain } from "../contexts/SelectedTrainContext"; import { StationMarker } from "./Markers/StationMarker"; +import PlayableArea from "./PlayableArea"; import SelectedTrainPopup from "./SelectedTrainPopup"; import { MainlineSignals, OtherSignals } from "./Signals"; import SneakpeekMarkers from "./Sneakpeeks"; @@ -103,6 +107,11 @@ const LeaftletMap = ({ serverId }: MapProps) => { key: "isSatellite", defaultValue: false, }); + + const [showLayersMenu, setShowLayersMenu] = useLocalStorage({ + key: "showLayersMenu", + defaultValue: true, + }); const { selectedTrain, setSelectedTrain, @@ -119,6 +128,16 @@ const LeaftletMap = ({ serverId }: MapProps) => { const RenderPopupIcon = renderPopup === true ? MdSpeakerNotes : MdSpeakerNotesOff; const SatelliteIcon = isSatellite === true ? MdSatellite : MdSatelliteAlt; + const LayersMenuIcon = showLayersMenu === true ? MdLayers : MdLayersClear; + + // The layers menu is hidden with CSS rather than unmounted: unmounting + // LayersControl would also remove every layer it controls from the map. + useEffect(() => { + if (!map) return; + const container = map.getContainer(); + if (showLayersMenu) delete container.dataset.layersMenuHidden; + else container.dataset.layersMenuHidden = ""; + }, [map, showLayersMenu]); const [stations, setStations] = useState(null); const [stoppedTrainsSince, setStoppedTrainsSince] = useState< @@ -414,6 +433,21 @@ const LeaftletMap = ({ serverId }: MapProps) => { + + + + { + + + + + + { + + + + + + L.Point; +}; + +// Places the popup above or below its anchor (whichever fits) and shifts it +// horizontally to stay inside the map, instead of letting Leaflet pan the map. +const placePopupInsideMap = (popup: L.Popup) => { + const internals = popup as unknown as PopupInternals; + const map = internals._map; + const container = popup.getElement(); + const latLng = popup.getLatLng(); + if (!map || !container || !latLng) return; + + const wrapper = container.querySelector( + ".leaflet-popup-content-wrapper", + ); + const tipContainer = container.querySelector( + ".leaflet-popup-tip-container", + ); + if (!wrapper) return; + + const width = wrapper.offsetWidth; + const height = wrapper.offsetHeight; + const mapSize = map.getSize(); + // The popup anchor (e.g. the icon's popupAnchor) is where the tip points + // when the popup sits above the marker; mirror it when placing below. + const anchor = internals._getAnchor(); + const point = map.latLngToContainerPoint(latLng).add([anchor.x, 0]); + + const spaceAbove = point.y + anchor.y - POPUP_TIP_HEIGHT - height; + const spaceBelow = + mapSize.y - (point.y - anchor.y + POPUP_TIP_HEIGHT + height); + const placeBelow = spaceAbove < POPUP_EDGE_PADDING && spaceBelow > spaceAbove; + + const minShift = POPUP_EDGE_PADDING - (point.x - width / 2); + const maxShift = mapSize.x - POPUP_EDGE_PADDING - (point.x + width / 2); + // Prefer the left edge when the popup is wider than the map. + const fitShift = + minShift > maxShift ? minShift : Math.min(Math.max(0, minShift), maxShift); + const shiftX = Math.round(fitShift); + // The tip stays over the anchor unless that would put it past the body's + // rounded corners (anchor right at the map edge); then it stops there. + const maxTipShift = Math.max(0, width / 2 - POPUP_TIP_INSET); + const tipShift = Math.min(Math.max(shiftX, -maxTipShift), maxTipShift); + const shiftY = placeBelow ? -2 * anchor.y + 2 * POPUP_TIP_HEIGHT + height : 0; + + container.classList.toggle("popup-below", placeBelow); + if (tipContainer) tipContainer.style.marginLeft = `${-20 - tipShift}px`; + + const current = L.point(popup.options.offset ?? [0, 0]); + if (current.x === shiftX && current.y === shiftY) return; + popup.options.offset = L.point(shiftX, shiftY); + popup.update(); +}; + +// A popup that repositions itself to fit inside the map instead of panning it. +const HoverPopup = (props: PopupProps) => { + const popupRef = useRef(null); + + useEffect(() => { + const popup = popupRef.current; + if (!popup) return; + + let observer: ResizeObserver | null = null; + let map: L.Map | null = null; + const place = () => placePopupInsideMap(popup); + const onAdd = () => { + const wrapper = popup + .getElement() + ?.querySelector(".leaflet-popup-content-wrapper"); + if (!wrapper) return; + // Also fires once the content renders or changes size (e.g. images). + observer = new ResizeObserver(place); + observer.observe(wrapper); + // The anchor moves within the map when it's panned, zoomed or resized. + map = (popup as unknown as PopupInternals)._map ?? null; + map?.on("resize moveend zoomend", place); + }; + const onRemove = () => { + observer?.disconnect(); + observer = null; + map?.off("resize moveend zoomend", place); + map = null; + }; + + popup.on("add", onAdd); + popup.on("remove", onRemove); + return () => { + popup.off("add", onAdd); + popup.off("remove", onRemove); + onRemove(); + }; + }, []); + + return ; +}; + +export default HoverPopup; diff --git a/packages/map/components/Markers/NonPlayableStationMarker.tsx b/packages/map/components/Markers/NonPlayableStationMarker.tsx index caff16c..b04a043 100644 --- a/packages/map/components/Markers/NonPlayableStationMarker.tsx +++ b/packages/map/components/Markers/NonPlayableStationMarker.tsx @@ -1,6 +1,8 @@ import type { Station } from "@simrail/types"; import L from "leaflet"; -import { Marker, Popup } from "react-leaflet"; +import { Marker } from "react-leaflet"; + +import HoverPopup from "./HoverPopup"; import styles from "../../styles/MarkerPopup.module.css"; @@ -26,12 +28,12 @@ export const NonPlayableStationMarker = ({ station }: StationMarkerProps) => { mouseout: (event) => event.target.closePopup(), }} > - +
Unplayable station {station.Name}
-
+ ); }; diff --git a/packages/map/components/Markers/PassengerStationMarker.tsx b/packages/map/components/Markers/PassengerStationMarker.tsx new file mode 100644 index 0000000..9209c41 --- /dev/null +++ b/packages/map/components/Markers/PassengerStationMarker.tsx @@ -0,0 +1,39 @@ +import type { Station } from "@simrail/types"; +import L from "leaflet"; +import { Marker } from "react-leaflet"; + +import HoverPopup from "./HoverPopup"; + +import styles from "../../styles/MarkerPopup.module.css"; + +type StationMarkerProps = { + station: Station; +}; + +export const PassengerStationMarker = ({ station }: StationMarkerProps) => { + const icon = L.icon({ + iconUrl: "/markers/icon-station-passenger.png", + iconSize: [16, 16], + popupAnchor: [0, -16], + }); + + return ( + event.target.openPopup(), + mouseout: (event) => event.target.closePopup(), + }} + > + +
+ Passenger station + {station.Name} +
+
+
+ ); +}; diff --git a/packages/map/components/Markers/SignalMarker.tsx b/packages/map/components/Markers/SignalMarker.tsx index e05f478..c49b9ac 100644 --- a/packages/map/components/Markers/SignalMarker.tsx +++ b/packages/map/components/Markers/SignalMarker.tsx @@ -1,6 +1,8 @@ import type { Signal } from "@simrail/types"; import { memo } from "react"; -import { CircleMarker, Popup } from "react-leaflet"; +import { CircleMarker } from "react-leaflet"; + +import HoverPopup from "./HoverPopup"; import styles from "../../styles/MarkerPopup.module.css"; @@ -26,12 +28,12 @@ export const SignalMarker = memo(({ signal }: SignalMarkerProps) => { mouseout: (event) => event.target.closePopup(), }} > - +
Signal {signal.Name}
-
+ ); }); diff --git a/packages/map/components/Markers/StationMarker.tsx b/packages/map/components/Markers/StationMarker.tsx index 9f42799..0711cb9 100644 --- a/packages/map/components/Markers/StationMarker.tsx +++ b/packages/map/components/Markers/StationMarker.tsx @@ -3,10 +3,11 @@ import type { Station } from "@simrail/types"; import L from "leaflet"; import { usePathname, useRouter } from "next/navigation"; import { memo, useEffect, useState } from "react"; -import { Marker, Popup, Tooltip } from "react-leaflet"; +import { Marker, Tooltip } from "react-leaflet"; import stationsList from "../EDR_station.json"; import { getSteamProfileOrBot } from "../steam"; +import HoverPopup from "./HoverPopup"; import styles from "../../styles/MarkerPopup.module.css"; @@ -94,7 +95,7 @@ export const StationMarker = memo(({ station }: StationMarkerProps) => { }, }} > - +
@@ -113,7 +114,7 @@ export const StationMarker = memo(({ station }: StationMarkerProps) => { Open station in EDR ↗
-
+ { mouseout: (event) => event.target.closePopup(), }} > - +
Remote station {station.Name} Controlled from {station.id}
-
+ ); }; diff --git a/packages/map/components/Markers/TrainMarker.tsx b/packages/map/components/Markers/TrainMarker.tsx index f86bcf2..f0ace3c 100644 --- a/packages/map/components/Markers/TrainMarker.tsx +++ b/packages/map/components/Markers/TrainMarker.tsx @@ -2,12 +2,13 @@ import { useMantineColorScheme } from "@mantine/core"; import type { Train } from "@simrail/types"; import L from "leaflet"; import { memo, useEffect, useMemo, useRef, useState } from "react"; -import { Popup, Tooltip } from "react-leaflet"; +import { Tooltip } from "react-leaflet"; import ReactLeafletDriftMarker from "react-leaflet-drift-marker"; import { getSteamProfileOrBot } from "@/components/steam"; import TrainText from "../TrainText"; +import HoverPopup from "./HoverPopup"; type TrainMarkerProps = { train: Train; @@ -132,7 +133,7 @@ const TrainMarker = ({ popupclose: () => setIsPopupOpen(false), }} > - + {isPopupOpen && ( )} - + ( + <> + {stationsJson.map((station) => ( + + ))} + +); + +export default React.memo(PassengerStations); diff --git a/packages/map/components/PlayableArea.tsx b/packages/map/components/PlayableArea.tsx new file mode 100644 index 0000000..d149e5e --- /dev/null +++ b/packages/map/components/PlayableArea.tsx @@ -0,0 +1,330 @@ +import L from "leaflet"; +import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react"; +import { Polyline, useMap } from "react-leaflet"; + +import { useSelectedTrain } from "../contexts/SelectedTrainContext"; +import { + decodePolyline, + ROUTE_COLORS, + type RoutePoint, +} from "../lib/trainRoute"; + +/** One wiki line, as written by scripts/generate-rail-data.mjs. */ +interface LineData { + title?: string; + subtitle?: string; + lkname?: string; + link?: string; + /** Encoded polylines, one per track. */ + available: string[]; + unavailable: string[]; +} + +/** The available or unavailable part of one line, drawn as one layer. */ +interface LinePart { + key: string; + line: string; + available: boolean; + paths: RoutePoint[][]; +} + +// Highlight colours for the lines under the cursor, in line-number order. +// None is green or red, so they can't be mistaken for availability. +const HIGHLIGHT_COLORS = [ + "#3388ff", + "#f1c40f", + "#e91e63", + "#9b59b6", + "#00bcd4", + "#e67e22", +]; +// How close to the cursor another line must be to be listed in the tooltip. +const NEARBY_PX = 8; +// Moving between two layers of the same line fires mouseout then mouseover; +// wait this long before treating a mouseout as leaving the line. +const LEAVE_DELAY_MS = 60; + +// Dash length of the secondary highlighted lines, in pixels. +const DASH_PX = 12; + +// Shared style objects: react-leaflet only restyles a layer when its +// pathOptions object changes, so hovering restyles just the lines involved. +// Leaflet merges styles, so every style sets the dash and cap explicitly. +const baseStyle = (color: string): L.PathOptions => ({ + color, + weight: 4, + opacity: 0.85, + dashArray: undefined, + lineCap: "round", +}); +const STYLES = { + available: baseStyle(ROUTE_COLORS.green), + unavailable: baseStyle(ROUTE_COLORS.red), +}; +const highlightIndex = (i: number) => i % HIGHLIGHT_COLORS.length; + +/** + * Style of the i-th highlighted line (in line-number order). The first is + * solid; each further line is drawn above it with sparser dashes (covering + * 1/2, 1/3, 1/4… of its length), so where lines share track every colour + * shows through. Lines come from different OSM ways, so their dashes can't + * be aligned; the widening gaps work whatever the phase. Under everything, + * each dashed line also has a solid copy (underlayStyle), so where it runs + * alone its gaps are filled rather than showing the map. + */ +const highlightStyles: L.PathOptions[] = []; +const highlightStyle = (i: number) => + (highlightStyles[i] ??= { + color: HIGHLIGHT_COLORS[highlightIndex(i)], + weight: 6, + opacity: 0.95, + dashArray: i === 0 ? undefined : `${DASH_PX} ${DASH_PX * i}`, + lineCap: i === 0 ? "round" : "butt", + }); +const underlayStyles: L.PathOptions[] = []; +const underlayStyle = (i: number) => + (underlayStyles[i] ??= { + ...highlightStyle(0), + color: highlightStyle(i).color, + }); + +const escapeHtml = (text: string) => + text.replace( + /[&<>"']/g, + (c) => + ({ "&": "&", "<": "<", ">": ">", '"': """, "'": "'" })[ + c + ]!, + ); + +const byLineNumber = (a: string, b: string) => Number(a) - Number(b); +const sameLines = (a: string[], b: string[]) => + a.length === b.length && a.every((line, i) => line === b[i]); + +/** + * "Playable area" map layer: every railway line on the SimRail wiki map, + * green where it's available in the game and red where it isn't. Hovering + * gives every line under the cursor a colour of its own and lists them; + * clicking locks that highlight until the same lines or the map background + * are clicked again. + */ +const PlayableArea = () => { + const map = useMap(); + const { selectedTrain, showTrainRoute } = useSelectedTrain(); + const hidden = showTrainRoute && !!selectedTrain; + + const [lines, setLines] = useState | null>(null); + // Lines under the cursor, by line number; and a clicked group. + const [hoveredLines, setHoveredLines] = useState([]); + const [lockedLines, setLockedLines] = useState([]); + const highlighted = hoveredLines.length > 0 ? hoveredLines : lockedLines; + + const layers = useRef(new Map()); + const leaveTimer = useRef>(undefined); + const tooltip = useMemo( + () => + L.tooltip({ + direction: "top", + offset: [0, -10], + className: "playable-area-tooltip", + }), + [], + ); + + // ~100 KB, so it's loaded on demand rather than bundled with the map. + useEffect(() => { + let cancelled = false; + void import("./playableArea.json").then((data) => { + if (!cancelled) + setLines((data.default as { lines: Record }).lines); + }); + return () => { + cancelled = true; + }; + }, []); + + const parts = useMemo(() => { + if (!lines) return []; + return Object.keys(lines) + .sort(byLineNumber) + .flatMap((line) => + ([true, false] as const).map((available) => ({ + key: `${line}|${available ? "available" : "unavailable"}`, + line, + available, + paths: + lines[line][available ? "available" : "unavailable"].map( + decodePolyline, + ), + })), + ) + .filter((part) => part.paths.length > 0); + }, [lines]); + + // Keep the highlighted lines above the others, from the bottom: the + // underlays of the dashed lines, the solid first line, the dashed lines. + useEffect(() => { + const toFront = (keyOf: (part: LinePart) => string, lines: string[]) => { + for (const line of lines) { + for (const part of parts) { + if (part.line === line) + layers.current.get(keyOf(part))?.bringToFront(); + } + } + }; + toFront((part) => `${part.key}|underlay`, highlighted.slice(1)); + toFront((part) => part.key, highlighted); + }, [highlighted, parts]); + + /** Parts of every line passing within NEARBY_PX of the point. */ + const partsNear = useCallback( + (latlng: L.LatLng) => { + const point = map.latLngToLayerPoint(latlng); + const found: LinePart[] = []; + for (const part of parts) { + const layer = layers.current.get(part.key); + if (!layer) continue; + // Cheap bounding-box test before measuring the distance. + const bounds = layer.getBounds(); + const margin = L.point(NEARBY_PX, NEARBY_PX); + const sw = map.latLngToLayerPoint(bounds.getSouthWest()); + const ne = map.latLngToLayerPoint(bounds.getNorthEast()); + const pixelBounds = L.bounds( + L.point(sw.x, ne.y).subtract(margin), + L.point(ne.x, sw.y).add(margin), + ); + if (!pixelBounds.contains(point)) continue; + // Leaflet adds the pixel distance to the returned point. + const closest = layer.closestLayerPoint(point) as L.Point & { + distance: number; + }; + if (closest && closest.distance <= NEARBY_PX) found.push(part); + } + return found; + }, + [map, parts], + ); + + /** + * Highlights and lists the lines at the cursor. They're sorted by line + * number, not hovered-first: the cursor wobbling between two overlapping + * lines must not reshuffle the list or the colours. + */ + const hoverAt = useCallback( + (latlng: L.LatLng, hovered: LinePart) => { + const near = partsNear(latlng).filter((p) => p.line !== hovered.line); + const listed = [hovered, ...near] + .filter( + (part, i, all) => all.findIndex((p) => p.line === part.line) === i, + ) + .sort((a, b) => byLineNumber(a.line, b.line)); + const listedLines = listed.map((part) => part.line); + setHoveredLines((prev) => + sameLines(prev, listedLines) ? prev : listedLines, + ); + + const html = listed + .map((part, i) => { + const info = lines?.[part.line]; + const color = HIGHLIGHT_COLORS[highlightIndex(i)]; + const name = info?.lkname ? ` – ${escapeHtml(info.lkname)}` : ""; + const status = part.available ? "" : " (not in the game)"; + const title = info?.title + ? `
${escapeHtml(info.title)}
` + : ""; + return `
LK${escapeHtml(part.line)}${name}${status}${title}
`; + }) + .join(""); + tooltip.setLatLng(latlng).setContent(html); + if (!map.hasLayer(tooltip)) tooltip.addTo(map); + }, + [lines, map, partsNear, tooltip], + ); + + const removeTooltip = useCallback(() => { + clearTimeout(leaveTimer.current); + tooltip.remove(); + }, [tooltip]); + const leaveLine = useCallback(() => { + removeTooltip(); + setHoveredLines([]); + }, [removeTooltip]); + + // Clicking the map background releases locked lines. + useEffect(() => { + const release = () => setLockedLines([]); + map.on("click", release); + return () => { + map.off("click", release); + }; + }, [map]); + + // Hidden while a train route is shown. Its layers leave the map without + // a mouseout, so forget the hovered line here. + const [wasHidden, setWasHidden] = useState(hidden); + if (hidden !== wasHidden) { + setWasHidden(hidden); + if (hidden) setHoveredLines([]); + } + useEffect(() => { + if (hidden) removeTooltip(); + return removeTooltip; + }, [hidden, removeTooltip]); + + if (hidden) return null; + + const setLayer = (key: string) => (layer: L.Polyline | null) => { + if (layer) layers.current.set(key, layer); + else layers.current.delete(key); + }; + + return ( + <> + {parts + .filter((part) => highlighted.indexOf(part.line) > 0) + .map((part) => ( + + ))} + {parts.map((part) => ( + { + clearTimeout(leaveTimer.current); + hoverAt(e.latlng, part); + }, + mousemove: (e) => hoverAt(e.latlng, part), + mouseout: () => { + clearTimeout(leaveTimer.current); + leaveTimer.current = setTimeout(leaveLine, LEAVE_DELAY_MS); + }, + click: (e) => { + L.DomEvent.stopPropagation(e); + // Lock what's highlighted; clicking the same lines again releases them. + setLockedLines((prev) => + sameLines(prev, hoveredLines) ? [] : hoveredLines, + ); + }, + }} + /> + ))} + + ); +}; + +export default memo(PlayableArea); diff --git a/packages/map/components/TrainRoute.tsx b/packages/map/components/TrainRoute.tsx index 7ed6626..8adcde3 100644 --- a/packages/map/components/TrainRoute.tsx +++ b/packages/map/components/TrainRoute.tsx @@ -5,16 +5,11 @@ import { Polyline, Marker, useMap } from "react-leaflet"; import { useSelectedTrain } from "../contexts/SelectedTrainContext"; import { getTrainRoute, + ROUTE_COLORS, type ColoredSegment, type RoutePoint, } from "../lib/trainRoute"; -const ROUTE_COLORS = { - green: "#2ecc71", - red: "#e74c3c", - grey: "#888888", -} as const; - const ARROW_SPACING_KM = 3; const MAX_VISIBLE_ARROWS = 120; const arrowIconCache = new Map(); diff --git a/packages/map/components/playableArea.json b/packages/map/components/playableArea.json new file mode 100644 index 0000000..343620f --- /dev/null +++ b/packages/map/components/playableArea.json @@ -0,0 +1,4636 @@ +{ + "lines": { + "1": { + "available": [ + "sobyHgkewB||H~r@", + "avjzHkrvwBniCxbAdF~BbF|CxI|HxpEx|EfInGhGpDfr@hX", + "uqxxHgwcwB^D", + "yz|yHovkwB|@\\", + "sowxHqqcwBv@F", + "avjzH}rvwBzfCtaAnGlCnG|D~I`ItpEr|EfInGtHjEzp@fW", + "yx|yHcvkwB{@]", + "sg{yHe~jwBep@}V", + "{x|yHqukwBdp@vV", + "cg{yH{}jwBOI", + "ug{yHy}jwBNF", + "agvyHoilwBRC", + "eg{yHq}jwB|RtHlFtAhHd@dIm@lH_CjzAqn@bFcBhDk@", + "cgvyH}ilwB{E`AsDpA{{Aho@cHnBkIb@cHo@_Y_K", + "ofvyH_jlwBS@", + "{`kyHecgwBe@Q", + "abkyHwcgwBojIgaDwJ_CsEQqEP", + "cbkyHmcgwBd@P", + "mfvyHsilwBnESrDLrEr@`EpAnjIdaD", + "qsiyH_ofwB{KiCm_@{N", + "}`kyH{bgwBj_@|N|KhC", + "ssiyHsnfwBPB", + "_siyH{nfwBQC", + "asiyHonfwB|aFdb@", + "apbyHskewB}aFgb@", + "qobyHqkewBOA", + "cpbyHikewBN@", + "spxxHmwcwB]E", + "qqxxHswcwB}gGwj@at@eG", + "{mwxHuqcwBu@I", + "qowxH_rcwBa`@mD", + "qyaxHyb~vBwwAsbAsJyEyKwCuvMamA", + "upxxHawcwB``@nD", + "oftxHi`cwBtzMrmAxKzCdLxFzz@jm@fZhS", + "{mwxHiqcwBL@", + "mmwxHgqcwB`TlB", + "o|vxH{ncwBuMkA", + "mbtxHa`cwBayAyM", + "kxvxHymcwBzpAnL", + "ekwxHgqcwBuAM", + "kuwqHehrsB`D|J`AbFfEdi@", + "{fwqHkjpsBDh@", + "kk}qHg{ysB{bAqKuEG_KnB", + "uwvqHk`csBoA`]", + "ebqsHgpfuBxkEi~AxK_FxKyHdIiIru@}cA", + "q}wqHwwrsBfFfKzCfJpAnFr@xFjAlP~BbT", + "caasHmvpuBt}@_ErIR~GzAtGbDlEpD~I~J", + "ugwqHyhpsBrDtf@~HznAx@|W@hQ", + "w}wqHkwrsBi@y@", + "a_xqHeyrsBiCgD", + "uh|qHuaysB_CcFcE_FwFuDmHgC", + "eh|qHu`ysBO_@", + "_d}qHwyysBs@M", + "{mhrHorktBwr@mrBqGcOsGsJyNkPuWcWaQoM", + "i_vrHk~euB|JpzBnBlPlCdLpBxF~B`FbG~IlaAfdAta@`b@hF|GnD`HvB`GbBpGbCbOhH|fAnBf^xEzp@pBjQpCdOjCzJ~CbJzCzGvE|HjEtFpEvEtUpQ", + "ezvqHibbsBO`B", + "ytbrHolxsB}F@{Hs@eFyAiGiDaFiEoF_HmDyG_DmIoBoHiBeKiK_{@yHa~@iCwe@", + "{sbrHslxsB]B", + "i{csHmmpuBr[eA", + "}zgsHsoluBXa@", + "czgsHupluBbj@yu@", + "qmhrH}qktBIQ", + "_ofsHognuBXa@", + "oodsH{kpuBqAJ", + "}hesHuxouBgd@bo@", + "clyqHi`tsBe@]", + "_dxqHc_ssBgGaG{^cX", + "imyqHgatsB{C{B", + "}vyqH{htsBoFaEiCcD_C{E}JuV", + "ybqsH}ofuBRI", + "kh|qHm`ysBO_@", + "wzvqHobbsBpA}\\", + "o|vqHochsBYvSB~GxBnk@z@`[", + "kh|qHm`ysBrd@zlA", + "eh|qHu`ysBbe@nlA", + "ok}qHa{ysBwbAkKuEG{HtA", + "{h|qHmaysBeDyG{CeDuFwDoHiC", + "oi}qH}zysB{@I", + "se}qHezysB{BW", + "cd}qHoyysBq@K", + "si}qHuzysB{@K", + "ue}qH{yysB}BY", + "ysbrH{kxsB]B", + "wtbrHwkxsBaGDkGo@wGoBiGiDcFkEgEgFuEoI_DqIoBqHwAyHqLy~@iHa~@cCkd@", + "{xyqHwjtsBmDqCgCaD_C}EwJ{V", + "q}wqHwwrsBi@{@", + "gtzqHcwusB|@|B", + "cmyqHqatsB{CyB", + "alyqHu`tsBa@[", + "ycxqHw_ssBiGyF}^cX", + "wuzqHazusBiKcX", + "{~wqHsyrsBiCkD", + "ecxqH__ssBSW", + "kcxqHm~rsBSU", + "_hwqH}jpsBHbA", + "ufwqHaipsBhN`{Bj@vS?xU", + "wgnrHagstBsVcRoEkE_GoHwE}H{C{G_DaJiCwJqCgOqBqQuRywCaAoHyAcHeEiMkD}GmFaH{cBcgBmGgJ}B_FoBwF{C}M_BqN}JqzB", + "}jzrHulluBuqB{~B_IuG}DoBiEoAcIs@y~@vD", + "i{csH{mpuBpyA_H", + "ciesH}xouBed@bo@", + "cofsHygnuBX_@", + "a{gsH}oluBXa@", + "emmsHeghuBjxAqh@nHcD~FoDjHaGvGgHbt@gbA", + "qodsHglpuBoAH", + "gzgsH_qluBbj@yu@", + "}_tsH_{`uBRcA", + "{bqsHkpfuBRG", + "e`tsHe{`uBRcA", + "a_ssHunduBnBgJxBkHlCmGbCiElDwEzDuDbDyB|E{B", + "i_ssH}nduBrBiJ|AmFhCuG`D}FlDyExCwCfEwC~E}B", + "gbqsHspfuB`tBqu@", + "wb{qHqrvsBlJ|T", + "c}vqHmhasBlAyU", + "s{vqHy~asBy@fHa@pK", + "wzvqHobbsBU|A", + "avvqHeycsBUrK", + "gwvqHylcsBZuP", + "wwvqHg}dsBy@_[{Bqk@C}GXuS", + "_nhrHirktBFP", + "_izrHsjluB}@aA", + "mjzrHskluBz@`A", + "_nhrHirktByr@mrBcCkGaDuGiHgKsO}P{OkOaXcS", + "_ryqHketsB_BkA", + "eryqHcetsB{AiA", + "ooerHad`tBBS", + "goerHcd`tBBS", + "kperHgp_tBCuHf@eI", + "qperHep_tBAuIb@eH", + "evvqH_fksBw@z\\", + "u~bsHsopuBhLg@", + "_vvqHmaksBg@dR", + "}ferHamdtBseB{cF", + "cgerH{ldtBo_AwnCeJwV}Yk|@", + "koerHud`tB`N{nAh@mJ@cJm@kKoAoIgC{I", + "m{vqHq_bsBEV", + "kqbsH{ppuB~WkAnUaB", + "w`asH{vpuB|AG", + "coerHwd`tBdNcmAn@aK?mKk@oJ{AoJgCuI", + "qvvqH{hdsBAS", + "ivvqHqidsB@rD", + "{nlrHoyqtBqz@in@", + "_uyqHwgtsB{B_B", + "auyqHmgtsB{@m@", + "eutsHqq~tB~SshA", + "istsH}v~tBjRacA", + "q_tsHi}`uB~CsP", + "i_tsHc}`uBtEqV", + "kmlrHuyqtB{c@e\\oTeO", + "{aasHivpuBVC", + "qzssH}nauBfZ__B", + "sxssHutauBpX_yA", + "ywqsHeffuB~SwH", + "{wqsHqffuB~SyH", + "ardsHokpuBaDp@kEvBkDhDaEdG", + "ardsH}kpuB{EjAoDtBqCtCcEfG", + "{jdsHglpuBjIY", + "}jdsHulpuBlDM", + "exvqHm`csBXwI", + "kwvqHekcsBBs@", + "{vvqH_kcsBYrI", + "wvvqHqlcsBCp@", + "mvvqH{_dsBC_H", + "kvvqHo~csBAk@", + "gvvqH}cdsB@bC", + "evvqHy_dsB@j@", + "svvqHoidsB]sP", + "qwvqHc{dsBEcA", + "kwvqH_{dsB`@lP", + "owvqHe}dsBBdA", + "m|vqH_lhsBKcONeG\\{I~AuQ", + "axvqH}ajsBwArRg@vNGfV", + "oddsHempuBdHU", + "o`dsHampuBdDK", + "oedsHcmpuB^A", + "qhzrHqiluBxbAljA", + "_izrHsjluBpfAvnA", + "a_vrHm~euBcA{SiAqLiCeNcE{LeC}E_FcHig@{k@", + "wdxrHc~iuBlj@jo@|DpFfDlGhDvJrC`NpAtLhAzU", + "qodsHglpuBrCM", + "oodsH{kpuBrCK", + "y_`rH_ezsBkGhB_GzCiQjOyQnN", + "}a`rHqdzsBiEpA_GzCma@l\\", + "urarHu_ysBaJjHwD`CgFpBcH`A", + "iuarH}|xsBeIjGmDnBiFhBqFz@", + "}wvqHchjsBMfE", + "w}wqHkwrsB`FhK", + "gtzqHcwusBo@}A", + "ut}rHgbpuBjOhQ", + "id}rH}oouBzxAhcB", + "cvvqHm~csB@fD", + "gwvqHgnjsBYhK", + "i|vqHighsBExB", + "w|vqHmchsBHqG", + "o~vqH_iasBYzI", + "uvwqHakrsBh@zA", + "{}vqHm_asBV_H", + "abszHgxzwB~jGzdC", + "qol}Hwn~}B_@cB", + "q_n}Hkac~B_Ray@_I_\\iQmx@", + "ksj}Huvx}Be{@awD", + "guh}Hyyr}BQs@", + "yx{|Hy|k|Bkl@{gC", + "iar}H}mo~ByOqr@{Ieb@mIk]", + "soq}H{xm~BMg@", + "w|v|Hkg}{Bsh@a|B", + "{oq}Huxm~B~d@btBlI|c@dFdV", + "gxo}Hmgh~Bl@nC", + "gpq}H_zm~BJh@", + "yvo}H}bh~BlXlhA", + "{ol}Hon~}Bv}@n~D", + "{pl}Hsq~}B^bB", + "g|h{HevlxBxMtS", + "_wyzHac~wBpi@hT", + "sos}Huys~BbAlE", + "urs}Hcct~B`BlH", + "mgs}Hacs~BwCeL", + "{no}H{qg~Bw_A_fE", + "i_t}Hamu~BQw@", + "qrt}Hcgw~BnQlw@", + "a`t}Hunu~BPx@", + "cvh}He{r}BPr@", + "m{f}H}im}BhuBleJ", + "qyt|Hw|v{BMg@", + "}|v|Heg}{BJb@", + "w{t|Hgcw{Bv@fD", + "kyt|H{|v{BMi@", + "}pq|Hyam{BudAuqE", + "yyt|He~v{Bw@eD", + "q{t|Hkcw{BEU", + "}{t|H{cw{BDR", + "avv|Hgr|{Bpe@trB", + "gqq|Hoam{Be_@saBkd@goB", + "ex{|H_{k|BSy@", + "_y{|Hu|k|BRz@", + "oou|Hm_y{Bw`@kdB", + "k|v|Hgf}{BKc@", + "yij|H}_wzByVugA", + "_jj|Hw_wzB}VsgA", + "uoi|HqotzBOo@", + "koi|HyotzBOo@", + "g{a}Hqd~|Bfb@|kBzL`f@", + "si`}H}oy|B~Mjl@", + "}dc}Hucb}BguBoeJ", + "{i`}Hypy|B{L_f@cZurA", + "si`}H}oy|BG[", + "{i`}Hwoy|B|Mll@", + "cj`}Hqpy|BFX", + "scszHkyzwBplGleC", + "uoi|HqotzBps@|~C", + "oss}Hqet~BXlA", + "mrs}Hgct~BYmA", + "}gd|H}u|yB]aB", + "aid|H{x|yB\\bB", + "mc`|HqciyBkApN]jHK`JNdKh@fJdAlJpBfKpBdHhCvGvCrFlD~EvDxDxH~ErWlK", + "mod|Hko}yBsKoi@", + "kkg|Hs`nzBo@qC", + "wud|Huc~yBnAlG", + "cmg|H_enzBn@pC", + "{zg|HyoozBos@__D", + "ydm|Hit_{BqzAgwG", + "qdm|Hot_{BszAewG", + "sak|HshyzBOo@", + "}ak|HkhyzBOm@", + "iap|Hioh{Bmn@uoC", + "e`p|Hulh{B[yA", + "k`p|Hqlh{B]wA", + "aap|Hooh{Bkn@woC", + "wpq|H_`m{BOo@", + "mpq|Hg`m{BOq@", + "_ov}Hi|~~B}@mL", + "czyzH{c~wBlJbF", + "ec`|HociyBeAzLg@rKGpKPbIl@rJhAdJdBzIpBbHfCvGvCrFlD~EvDvDxH|ErWnK", + "csx{He}yxB{C|dBb@fQn@vHx@bGvBdKlCrInDxHtE~G`F~EjFdDzEfBnGjA", + "{rx{He}yxB{ChcBDlHXpHh@zG`AvHvBbKlCpInDxHvD|F~EdFhFlDvFxBpGjA", + "smh{HgalxBhWdb@nYzb@", + "wi{zHmc_xBxj@p[|ExB", + "_|{zH}n_xBzL`H", + "uzl{HckqxBbL|B|HzDnH|GtIdM", + "uzl{HmkqxBfKnBzIhExHfHnI|L", + "}af|Hy_czBiDgR{A}Nq@qSEwT", + "{hc|Hwf{yB{FaEgGeHyEwI_DeJ", + "alf|HimezBHfX~@~TdB|NzFbZ", + "}dd|Hqk|yB~CdJxEtI|FzGdGjE", + "}gy{Hsx~xBnH~NvDrKnC~LbB|Nf@~JFpLqBhfA", + "mgy{Hmx~xBvHrOdDlJzClN`BrO`@zJB`KoBdfA", + "}jf|HubhzBFqt@c@cMuAcT", + "u~_|HezyyBhF|DdFdGhEvHbDnIxUl~@`C|NhAzN", + "q~_|HqzyyBfF~DfFdGjEvHbDpIxUn~@vBpMtAjP", + "_j~{HsdtyBmx@``J", + "kaw{HuwsxBteIpkA", + "iaw{H_xsxBreIpkA", + "yi~{HodtyBkx@~_J", + "cn{zH{e_xBpF~C", + "gee|Hi}_zBfBjJpA`K", + "c_e|Hue_zByAyLyAaI", + "u`|zHor_xBrQfK", + "qf{zH{`_xBt@`@", + "}z_}Hibx|BzErR", + "kf}|Hoep|Bjl@xgC", + "sgs}H{bs~BpEpQp^paB", + "els}Hgps~BgE_R", + "at_}Hunw|Br@zC", + "qg~{HqxuyB@\\", + "og~{HswuyBVvKGhL_@nJ_AlL", + "ig~{HsxuyB@\\", + "gg~{HuwuyBVxKGhL_@nJaApL", + "o_t}H{lu~BvA|G", + "gss}Huet~B}F_Y", + "sfx|Hida|Bth@b|B", + "_ou}H_uz~BbFn]vCjW", + "eav}Hgt|~BgAgH", + "emv}Hyj~~BvHhl@", + "mbu}Hi|x~BgG}h@wBsN", + "i}u}Hkh|~BiLy}@", + "auv}Hwp__Cj@rE", + "{d{zHy__xBvi@|Z", + "od|zHot_xBnGpD", + "md|zH{t_xBvBjA", + "kuxzHmp}wBtDbA", + "grvzH_q|wBd]jN", + "irvzHup|wB|`@hP", + "uoxzHin}wBdQlG", + "y`xzH}g}wBsGiC", + "ws_}H}nw|B{EsR", + "cr_}Hcjw|Bs@yC", + "mr_}Hyiw|BzEtR", + "gk_}Hmvv|B{EuR", + "kqd|H}t}yBhChM", + "{hd|H_y|yBqEkU", + "i|d|Huy~yBpE~T", + "gsv|Hwj|{BcHoZ", + "gsv|Hwj|{B~@|D", + "q|v|Haf}{BnExR", + "{ra}Hok}|BmCsL", + "snv}Hk~~~BiAkJ", + "qfi}Hcot}Byk@qfC", + "cqj}H_ox}Bni@l_C", + "wxt}Hezw~BdE`R", + "w|s}H}cu~BfHj]", + "usv}Hcj__CnEh^", + "ef}|Huep|BGU", + "sf}|Hefp|BFT", + "qk_}Hcvv|Bth@t|B", + "kx{|Hyzk|BxbBrkH", + "qtx|Henb|BFT", + "ktx|Hknb|BybBskH", + "ctx|Humb|BGU", + "mlxzHwm}wBfAb@", + "mixzHgl}wBWK", + "seyzHex}wBfOvF", + "oar}Hwmo~BfPvr@", + "apq}Hczm~BgPyr@", + "qsu}Hub{~BpCtL", + "kpuzHk_|wBbO`G", + "atuzHsa|wBzR|H", + "qpl}H{q~}By@mD", + "mul}Hs__~BpC~L", + "eav}Hgt|~BbCfP", + "gsd|Hg{}yBz@hE", + "sjv}Heg~~B{A}P", + "omv}Hcy~~B[iC", + "knv}Hm}~~BG]", + "g|u}H}c|~Ba@mC", + "ua~|Hqxr|Bqh@{|B", + "{a~|Hmxr|BfZfqA", + "mf}|Hkfp|BgZeqA", + "iwa}Hcy}|Bsl@qiC", + "cec}Hocb}Bzh@|}B", + "quh}Hqyr}Bvx@pmD", + "q{f}Hgkm}Bux@qmD", + "e{f}Hejm}BKa@", + "y{f}H_km}BJ`@", + "yuh}Hm{r}BwOur@", + "sfi}Hqnt}BnOjr@", + "krl}Hiw~}Bel@aiC", + "y_n}Hgac~Bji@r`C", + "k}n}Hoye~B|Hd[rR`{@", + "e{s}Hu_u~BcCkL", + "{lg|HeenzBmIs^", + "iwg|HydozBKe@", + "owg|HsdozBjIr^", + "{wg|HyeozBJd@", + "}pv}Hwi__Ci@oE", + "}st}Hglw~BgIs^gCmO", + "gtu}Hig{~B}BaKkAaH", + "oms}Hgss~BzDjO", + "ccu}Hc~x~BpBnMxElT", + "svs|Hots{Bwa@kgB", + "yvs|Hkts{Bwa@kgB", + "}`u|Hyrw{B~C|M", + "w{t|Hadw{BqFuU", + "itx|Homb|BtLdh@", + "kfx|Hmda|BwLgh@", + "epi|HaqtzByXumA", + "{oi|HiqtzB}XsmA", + "mbk|HyiyzBcMwi@", + "cbk|HcjyzBeMsi@", + "ipk|HwtzzBeOup@", + "qpk|HqtzzBcOwp@", + "o`l|Hmf|zBac@amB", + "u`l|Hif|zBcc@_mB", + "{_t}Hynu~BcPks@", + "mnu}H{uz~ByDmP", + "qzu}Hm|{~Bu@oF", + "e{u}H_{{~BtAbI|CdM", + "krb|Hs|zyBngAp[dJzD", + "{rb|He}zyB`hAx[fJxD", + "u_c|H{a{yBhLfD", + "{rb|He}zyBwKaD", + "s_c|Hgb{yBgHoC", + "_ic|Hmf{yBhHpC", + "chd|Hwu|yBdBdI", + "ydd|H}k|yBcB_I", + "amd|Hsf}yB~BvL", + "a|d|H{y~yBaByJ", + "m_e|H{e_zBbBdK", + "u~e|H_sbzBlXttA", + "wde|Hq}_zBsUckA", + "{kf|HimezBTu~@", + "umf|HcsjzB|@`OZpKG|j@", + "ckf|HqjhzBIh\\", + "onf|Ho{jzByAuPwBiN", + "iuf|Hi|kzBlCrQdBpU", + "auf|Ho|kzBiUccA", + "skg|Hm`nzBhUbcA", + "uwg|H_fozBeByH", + "c{g|HsoozBfBxH", + "k{e|HuibzBqEcU", + "ekf|H_mgzBFuT", + "mkf|HgmgzBS|~@", + "_qt}Hecw~B}AaH", + "a}u}H_c|~Bz@~F", + "icu|Hwzw{BeKuc@", + "oou|Hq~x{BpMvj@", + "oky{He__yB`CvE", + "cw{{Ha}byBrjAz|B", + "ez{{HqacyBfqA|gC", + "ie~{HsvdyBhm@dVjFjC`E|CpD~DhCvDnDxG", + "ee~{H}vdyBhn@tVhFnC|DbDnD`ErClEjF`K", + "mok{HejpxB`N`T", + "gok{HmjpxB~M~S", + "mmh{HoalxB`c@jq@", + "o`i{Hq{lxBzQhY", + "k`k{HcuoxBz~@pxA", + "g`k{HmuoxB~bAf~A", + "kig{HcojxBxQhY", + "yzf{HezixBpcAt~A", + "qvf{HytixBn_A`yA", + "gvd{HozfxB`y@|oA`FxGzE|EpJbH|qB`jA", + "avd{HwzfxBjy@lpAfFzGhEjEtJbHvqB|iA", + "mzwzHkd}wBf@R", + "cywzHcd}wBlCfA", + "y`xzH}g}wBtFxB", + "o}wzH{e}wB`Bn@", + "utwzH{a}wBla@zO", + "eywzHwc}wBze@`R", + "e`uzHuw{wBp{@h]", + "g`uzHiw{wBd}@`^", + "uo~zH_faxBfjAbp@", + "wo~zHseaxBfjAbp@", + "unyzHw|}wB`HpC", + "an{zHgf_xBhCxA" + ], + "unavailable": [ + "grdwHe~{uBrIpGdFvFpH`LvEnK~FlRzDtP`PlcAvAjHfBzG~C~I`FxJrErGlGjG|FvDbsBtfAlFdCnFdBzGbA`JLrhA_F", + "y`luHuw~sBdlBdeA|GpEdGtGbFpIlR`g@", + "ufduHezusB{Ag@", + "qiduHm{usBmIiDoHeFmH}HwGyJcHcOoj@gyA", + "idguHahzsBsBqF", + "ai`uHotvsBqA`FgBfEkC|DaC~BsFrEwCzAgDj@mE?", + "}xtuHqw_uBxDnDjCbD`CvDtC~FdEnMlAxFnAjIxyAfnLzHbx@dPjgBlJh}@jk@r`GdBlKdCrJjCxGxDxG", + "galuH_x~sBLH", + "uqxxHgwcwB^D", + "ib`uHqnwsB|OshAvGo^`CeJbCaGnMqVfEwGpIiIbOqJ", + "ai`uHotvsBZuA", + "shpvHidouBJF", + "glctHeyotBlMaMjPeLrlCkxA", + "klctHoyotBlMaMvNcKfnCmyA", + "elvsHclztBxSab@rDeJ`EwLrDuMzBaKzMas@", + "ilvsHklztBpR{_@tD}IbEqLxCgK~CuM~L{o@", + "}~}sHcnstBRK", + "klvsHykztBDI", + "{x|sHuettBZQ", + "olvsH_lztBDK", + "_y|sHafttBZO", + "y~}sHymstBRI", + "_`ysH_uvtBlImG`EuD~EaG`GwIrGkLlj@ogA", + "c`ysHkuvtBnOcM|E_GbGwIrGkLlj@kgA", + "i~}sHonstBhd@qV", + "e~}sHcnstBhd@qV", + "aystHeu`tBfAQ", + "qlctH{xotBHI", + "cystHqu`tBhAQ", + "ulctHeyotBHI", + "k~_uHu~wsBbHqg@`EkWpFeYhB{GbC{FvNsXbCwDzH_I|LiI", + "yvstHcv`tB`tCid@vJoBhGkBdKqEdFuCdMmJrG{GhGsHhoBwsChSwZdUg[`cComD|EyGtGsH", + "yvstHwu`tB`tCkd@xJmBhGkBfKqEbFwCdMmJtG}GjGsHx}GczJrNoQ", + "_h`uH_wvsB[tA", + "}x`uHm{usBzDmDvB}CfB_EdBoG", + "ikcuHstusB{GMiEa@eKoC", + "mgcuHatusBuPg@_FaAqEyA", + "_dcuH}susBqAC", + "ofcuHmtusBpAB", + "cg{yH{}jwBOI", + "ug{yHy}jwBNF", + "qpxxHmwcwB_@E", + "{waxHqa~vBu@g@", + "uyaxHib~vBr@h@", + "ay|wHuv{vBOI", + "qy|wH_w{vBgXwPmOgGsK}Bat@{LoMkD}KqFoVyP", + "axaxH_a~vBpVtP|KnF|KzCty@lNzHlBbNtFhXtP", + "sy|wHuv{vBNH", + "isdwH__|uB`@X", + "cy|wHkv{vBlwF~oDbi@t]vIrI|HzJd^zo@zCrEtFdGhMbJ|CrClClD`EhHnBxEdBxFjD~P`_ChzOzA|HvC|JtCbHnEvHxDrErEvDtDrB`GtBnuD|n@xI`CrIrE", + "erdwHo~{uBa@Y", + "gsdwHi_|uBcH{DiIgCowDqo@aGsBuDuBqEwD{DsEkD{FuD{I_C}HqByJc_CgzOkDcQeByFqB{EcEmHoDqEwOiLwFaG}DiG}\\an@iJwLwIsIwaHinE", + "ogzvHs`suBshA~EaJMyGcAmFeBoFgCqqBueA_JaG{E_FwFgI}EcK{CiJaDyNaPkcA{DyPaGmRwEqKoH_L{GkHaHaF", + "ehpvHidouBKI", + "a}lvH{oluBsDmC", + "ghpvHadouBndB`oA", + "wbmvH_tluBpDlC", + "ubmvHitluBodB_oA", + "_pkvH}kkuBLH", + "{okvHglkuBi]}V", + "gnlvHycluBf]zV", + "mokvH}kkuBMI", + "qokvHskkuBjWfR", + "avjvH{wjuB_@Y", + "awjvHuxjuBkWgR", + "ewjvHkxjuB^X", + "uzmuHyb`tBpDlFxDpDt[tQ", + "opluHeb_tBq]{R{DuDcD{E", + "s{muHcd`tB\\h@", + "w`luH_x~sBMI", + "azmuHsb`tB]i@", + "_{muH}c`tBcEcHoC}GeCqJcBmK_w@yaI{Yq}CizAmpL_AgGcBwHoEiMyFaKmCeD{DqD", + "qiduH}{usBiIeDoHcFwImJsGeKyGcOii@awA", + "ogguHqozsBaOs`@oCkGgE_HgGuGqFwDsmB_fA", + "{cguHahzsBsBoF", + "ufduHszusB{Ai@", + "qvauHgrusBmW[", + "cj{tHgr~sB\\S", + "yi{tH_s~sB\\S", + "{h{tHss~sB`IwDzNcExtEau@", + "ei{tH{r~sBpIgElOeEbtE{t@", + "sobuHqsusBiSW", + "qhpvHsdouB_|CwzBiFaDyF{B", + "wtuvH}hsuBfFnBxFjD`|CvzB", + "kuuvHeisuBRF", + "utuvHiisuBSG", + "e}lvHqoluB|MvJ", + "enlvHedluB{MuJ", + "evjvHqwjuBd}BnbB", + "}wfvHmtguBc}BmbB", + "{mwxHiqcwBL@", + "}vvvH_lsuBgrAbG", + "_jyvHsbsuB~qAcG", + "ogzvHi`suBXA", + "wfzvHu`suBW@", + "ufzvHk`suBt[gA", + "ejyvH{csuBq[dB", + "iuuvHqisuBcKcBmL@", + "ynvvHoksuBrLQxJzA", + "{nvvHslsuBaGR", + "_wvvHwjsuBdGW", + "mxbvH_pduBo~BmcB", + "cxbvHyoduBIE", + "_xfvHatguBl~BjcB", + "qxbvHuoduBHD", + "ma`vH}|buBiT_EgGiBuGqCeJsFgd@k\\", + "w``vHw|buBUE", + "gxbvHooduBhd@j\\bJtFvM`FrVvE", + "ma`vHs|buBRD", + "}n}uH}fbuBypAyT", + "y``vHm|buBzpAxT", + "}n}uHsfbuBZF", + "an}uHufbuB[G", + "an}uHkfbuBf_BvX", + "ymzuHslauBF@", + "ymzuH}lauBg_BwX", + "qmzuH{lauBGA", + "qmzuHqlauB|`Dfj@zHxBnGtD", + "gytuHyw_uBHF", + "cytuHcx_uBqGuD{H{B_aDej@", + "{xtuH}w_uBGE", + "qfcuHatusB[?", + "ofcuHmtusByCE", + "qvauHgrusBV@", + "atauHqrusBqZ_@", + "eh`uHewvsBtA}GdBmM", + "sqauHmrusBEA", + "koauHkrusBgAA", + "_h`uH_wvsBvAcHzEq]", + "ki}tHaf}sBf~@ek@", + "si}tHif}sBx~@uk@", + "_q}tHca}sBb@Y", + "cx|sHqfttBh]cR", + "yy{sHuyttBDC", + "_x|sHgfttBf]cR", + "wy{sHkyttBFC", + "sy{sHyyttBhRgK", + "if{sHafutBRK", + "oy{sHoyttBhReK", + "ef{sHueutBPK", + "se{sHafutBdq@{^tQoM", + "w`ysHmtvtBVQ", + "ue{sHmfutB`q@w^vQsM", + "{`ysHytvtBVQ", + "{o}tH}a}sBfEkC", + "ot}tHg~|sBbJyF", + "srluHcc_tBjPbJ", + "ealuHix~sBiN{H", + "yuauHerusBjFF", + "yqauHorusBgAA", + "mnauH}qusBrDAdDk@|BgAvEyD", + "_obuHcsusB_TY" + ], + "title": "Warszawa Zachodnia - Katowice", + "lkname": "Wiedenka", + "link": "https://wiki.simrail.eu/en/Route/LK1" + }, + "2": { + "available": [ + "gr{}Hkcm_CiAW", + "qjz}Hwwl_CkD{DwDeB", + "q`y}H}jj_CdFhS", + "cl}}Hcrq_C]yC", + "sg}}Habq_CuA_Gy@aG", + "mgz}Hwql_CpRxe@", + "{sy}H}jk_CzArD", + "_qy}Hiek_Cb@|@", + "chy}Hmyj_CqFeI", + "ihy}Heyj_CzBfEzB~F", + "ypy}Hqek_C{AsD", + "{oy}Hkck_CpFdI", + "uoy}Hsck_Cc@}@", + "k`y}Hckj_CyB}F}BkE", + "usy}Hekk_CqRwe@", + "cyx}Hwvi_CgFkS", + "}qw}Ho{c_CaBsI", + "guw}Hied_CpAzFn@pE", + "kyx}Hsvi_CnH~b@nIlp@XhGGtL|@|J", + "qt{}Hwcm_CfAV", + "wuz}Hm`m_CtDbBhDxD", + "o`|}H}um_CeIo`@", + "u_|}H_sm_CmBmHgGoY", + "a{{}Hgjm_CkB_E", + "m~{}Hgpm_CjA|C", + "y~|}Hokp_C~B~G", + "qq|}Hqpo_CmBeIaBiE", + "ib}}Hozp_CyC{LsEiVa@kFo@uUaBcN", + "ebx}Ho}e_CiAqKByMYmGoImp@mH_c@", + "qvw}Hsjd_CqAkGoBmO", + "}|w}Hgce_CvBrPlA|F", + "qn|}Hsco_CeAoH", + "uuz}Hy`m_Ci@I", + "awz}Hw`m_Ch@H", + "ir{}H_cm_CnKt@", + "we{}Huam_CoKu@", + "e{{}H}im_CvAnB", + "ix{}Hwfm_CwAoB", + "mx{}Hmfm_CzBtA", + "qt{}Hcdm_CwBsA", + "esv}Hqt__CgBqK", + "q~{}Hopm_C}@mD", + "kk|}H}vn_CuHu]", + "ylw}Hw~b_ChN`cA", + "aqw}Hmvc_C`@`D", + "o}v}Huz`_ClDlX", + "m~{}Hgpm_CCG", + "a|{}Hikm_CZj@", + "s|w}Hmce_CuC{T", + "gbx}Hg|e_ChD~W", + "ybw}Hcua_CwHuh@", + "_uw}Hcfd_Cq@oC", + "wvw}Huid_Cn@jC", + "iax}Hiye_C[eC", + "{bx}Hg_f_CR~A", + "{pw}Hovc_Ca@_D", + "eqw}H{vc_CBL", + "yz|}Hobp_CvDzK", + "yow}Hmqc_Ca@aD", + "am}}H}vq_CoAmNk@_X{AmM", + "axv}Hga`_C`BnO", + "uj|}Hmwn_C{BeK", + "qlw}Hy~b_CgBsQ", + "_pw}Hkqc_CdBrQ", + "wjz}Howl_ChBvD", + "ggz}H}ql_CiByD", + "ye{}Hiam_CvMP", + "_wz}Hcam_CwMQ", + "gwv}Hgd`_CqJ{o@", + "wp|}Hcmo_CYmB", + "y~|}Hokp_CsBgGeDiM", + "ax|}Haap_CgDkJ_DaM", + "mvv}Hca`_CYcB", + "q~{}Hopm_Cc@oA", + "grv}Hgp__C]iC" + ], + "unavailable": [], + "title": "Warszawa Zachodnia - Warszawa Podskarbińska", + "subtitle": "Warszawa Zachodnia - Terespol", + "link": "https://wiki.simrail.eu/en/Route/LK2" + }, + "3": { + "available": [ + "_uw}HiqpuBoK_fB", + "qbx}H{~suB`MdsB", + "oax}HixsuB_Egr@[eIGsQn@mRvuAakQ`@mH\\cSfCizGx@gU|Dmj@", + "wau}HciuvBwEpp@{@zUeCdzG_@`S_@nHwuA~jQq@zRFjQXdIfDrk@", + "kbu}HmbuvBdLi_BbBaNrFi[", + "qvm}H}howBsdC|xKykAnyG", + "_it}HotyvBgGf]kBzMcLf}A", + "mjt}HcnyvBlmAu_HrdC}xK", + "kvm}HwhowBFW", + "ivm}HsiowBGT", + "ejj}HilwwBuKhv@gClMsBrH{EpM{bA`bCgEfMqElR", + "cvm}HoiowBrEkRdEeMzbA_bCzEsMtBuHfCqMdMu|@", + "oct}Hmhm~Bfg@_`B", + "adt}Hagm~BPk@", + "mgt}Hw|l~BjBiI", + "uzr}Hyjp~BNe@", + "ctr}Hyjq~BB{J_AqIqAyEgFuKwByG", + "mtr}H{fq~BH}B", + "g{s}H_oi~BqCec@}Fq`@q@wGQ{F?sERaFd@_F", + "sos}Huys~BjBlJrHvYzH~]p@hE^tGGhGk@nGkA|F", + "yzr}Hckp~B{g@naB", + "cht}H{zl~Bs@xHMbHTnIp@xG", + "uct}Hshm~BQj@", + "gdt}Hggm~BgBvH", + "qcs}Hq}r~BcF{PyEgS", + "oqs}Huct~BYmA", + "ess}Hwht~BgD}N", + "}gt}Hstk~BdFb^~Czf@", + "k_t}Hgou~B{M{l@oG}`@oFkPeBuHgJqu@{A}H_FoS", + "ezr}Hwlp~BCJ", + "irs}Hcft~B[sA", + "i|s}Hqeu~BoA{F", + "mys}Ha|t~B{AoH", + "mxs}Huxt~B_@kB", + "i`v}H_y|~BeLc_A", + "g{r}Hmip~BPk@", + "azu}Hw{{~BgEg\\", + "qvu}Hco{~BoBsK", + "qtb}H{juxB{lBhoGsEtPuB|K}A~LuOtiB", + "om}|H_beyBbBnKfAfKd@fJTxN", + "c`g}HechxBtOsiBzA_MtByKtEyPbmB_pG", + "ah_}H{eyxBvw@kpA", + "}`a}H}hwxBnDiB", + "k`g}HgchxBKpA", + "_f}|H_ccyBBbB", + "ke}|H{_cyBAeB", + "izr}Hklp~BOf@", + "{m_}HyllyBj_AxiF", + "y~s}Hmmu~BQy@", + "im}|HcbeyB{}@qdF", + "q`g}Hq`hxBLsA", + "ogt}Ho}l~BSrA", + "atb}HmkuxBhD{KjC_HjD{GnDkFlE_FlDuCtQuJ", + "{s`}HgqwxB~EwD", + "gn`}HivwxBmGrE", + "qri}HaszwBbo@osEz`@_xE", + "w`g}Hu`hxB}`@~wEcn@`oE", + "yqi}HswzwBkWhjB", + "{ej}Ha~wwBjQ}oA", + "ed`}Hm`xxBgHjH", + "if`}Hg}wxB~FcH", + "cg`}Hk|wxBX[", + "{l`}H_wwxBvDkD", + "osi}H_ozwB\\aC", + "mhj}HsrwwBpAmJ", + "_t_}HavxxBgH~K}ErG", + "ss_}HcuxxBpJwO", + "_|v}H_yduB[bKm@rI{ClT", + "eez}HozttBvDd^l@~JVjKjL~iM", + "aht}Hazl~BRuA", + "}wv}Hu_iuBZ~PU|U", + "cxv}HebiuBDnA", + "ezr}H_lp~BzBsJ`@eEXaH", + "y{v}H}|duBE|B", + "uwv}Ho_iuBEmA", + "w{v}HkyduBD}B", + "uzv}HeueuBIxE", + "q{v}Hi}duBVcP", + "yzv}HmneuBHyE", + "_{v}HkneuBYlP", + "ozv}HgueuB|A__A", + "grw}Hy|auBdIa]", + "uoy}H_xdtBmLwkMYgKg@kIyDg^", + "mrw}H_}auBgHhY", + "kew}H}ccuBbCkNzAeLv@iKZqK", + "qwv}HguguB@m@", + "wwv}HwvguBAn@", + "ywv}HguguB{A`_A", + "owv}HuvguBR_VYyP", + "_cx}Hwm`uBgFpT{CpP", + "erx}Hyy~tBpGo^nLgf@", + "i{y}Hy|ytBcMru@gAxIq@lJ_@tMDvNh@nMpAbN", + "_jz}H_tutBiAwLm@kMIoNZuMf@uH`A{IvKup@", + "ahw}H{zbuBf@eC", + "akw}HkrbuBkFjT", + "c|v}H}cjuB~Bv`@", + "{wv}H}aiuBaCca@", + "o{`}HslwxBoDhB", + "{{||Hgx~xB`ArLVbKM`Ly@~K_BfKiCpJ{ChHmEpH", + "s{w}H}aauBjH{Y", + "yfw}Ha_cuBFU", + "qxy}HigztBwAnI", + "c}y}HqtytBbFkZ", + "c|w}Hq`auBNk@", + "u{w}HubauByCzL", + "ecw}HylcuBaDpP", + "o`x}Hyt`uBoA`F", + "ghw}Hg{buBkAnF", + "sjw}HwsbuBMj@", + "otw}HujpuBjWveE", + "}{v}HadjuBaXglE", + "io}|Hgw{xB~FyJfC{FfCwIjB{K`AmLP}KSsKeAyM", + "ye}|HencyB_@oPg@oIaAmJeBoK", + "}m}|Hwy{xBmx@vpA", + "_aa}HiiwxBuQvJcEhDyDhEmDhFiDvGeCnG_EnM", + "s}x}H{m}tBlJ}j@", + "cox}Hsf_uBmGl_@", + "_{x}H{x}tBmC~O", + "_vy}H}oztBjW}|A", + "m_y}H{g}tBcXp_B", + "_ez}HszttByCoW", + "yiz}HcsutBE[", + "_jz}H_sutBxCnW", + "ejz}H{sutBDZ", + "{oy}H}wdtBlBltBpA~e@", + "ajy}Hgb`tBgAib@kBmqB", + "ihy}Hgj_tBw@_W", + "{iy}Ho{_tBXrI", + "qwx}Hef~tBmBhL", + "qfw}Hw_cuBd@eC", + "kg_}H_hyxBsK|P", + "i~_}HkfxxBtIwM", + "s{||Hkx~xBgEod@]aIMmL", + "oc}|Hqu`yBLtLZhHhEhe@", + "_r_}Hw{lyBbC|M", + "mm`}HawwxBYV", + "ov`}HkowxBrA{@", + "uv`}HuowxByC`B", + "m{`}HglwxB|CcB", + "gf}|HencyBFdJ", + "me}|HaccyBKcJ", + "{e}|H{_cyBjAhiA", + "gc}|Hku`yBcAoiA" + ], + "unavailable": [ + "s{s}Hweu}Be@qLI}L~AysB", + "syu}HkiszBbb@yoGhNeyGhd@crI", + "_dr}Hsyd}B?fF", + "_zs}Hycz}BiBpaCF|Lf@tL", + "m|b}H{pwyBhu@fwC", + "_fa}H}xryBgu@cwC", + "gke}Hus|yBsAsC", + "m~q}Hunc}Bh}@|qDpCdN", + "k{o}Hul}|BqCgNi}@_rD", + "wcr}Hkrd}B?gF", + "a{o}Hmk}|BIg@", + "yts}Hq_`~BvBykC", + "ubs}Hebo{Boc@jjIqNr{Gcb@xoG", + "_ne}Hax|yBpArC", + "q{o}Hql}|BHf@", + "g|b}HaqwyBOo@", + "}|b}HkrwyBNn@", + "e_i}Hko`zB[U", + "iur}HidlzBeBi@", + "c`i}Hwo`zBZT", + "qxr}HgelzBdBh@", + "a`i}Hap`zBiL{J{D}E}C{EqyCirF", + "gl`}Hq|oyBfYx_B", + "k}u}H_nrzBS|IT~I|@fI~B|J", + "ouu}Ha~pzBsCiKqA{I_@gJPmL", + "krt}H{fnzBcR_p@", + "cfu}HewozBhT|s@", + "oxr}HselzBqFsBsEyCuToS", + "m|s}HgbmzBhWtUfCzAhFlB", + "wcr}Hsyd}B@os@jBof@AgIWgIqO_aCs@yGkG{`@yAqM", + "u~r}Hien}BvArMrHng@fPjfCNxHGtJcBbb@Aps@", + "yos}Hqye~BFaPOiKqC{f@", + "}ts}Hu_h~BrCxg@NfKG`P", + "kws}H_rh~BsAoP", + "_dr}Hkrd}BFzIV`F`AvHnA~F", + "g{o}Hik}|B~@lId@dHZlV", + "}vo}Hg`||B]kVc@kHaAmI", + "g~q}H}nc}BeBqIk@cFYiHCmG", + "_zs}Hoci~Bg@oJ", + "w{s}Hsmi~BbDda@", + "ewo}Hg`||Bn@btA", + "iuo}Hmdy|Bs@yzA", + "sto}Hc|w|BSia@", + "kuo}Hwwx|BNrZ", + "qqr}H_{s{Bj_BsdZ\\kLBeMoAujC", + "orr}H}ts{Bb`BkkZZwKDeJuAusC", + "ctr}H{cs{BpAcV", + "qas}Hejo{BlLuxB", + "{as}Hogo{BHuA", + "orr}H}ts{BeOvqC", + "kwu}H{aqzBrGfT", + "mnu}H}lpzBaFcP", + "k|s}HqbmzBoEcF}DuG{BeFsCwI", + "ypt}HgbnzB|B~GzCxG~C`FpEbF", + "iqt}HidnzBa@qA", + "sts}Hy~g~BwAeR", + "c}u}H}mrzBnBmZ", + "{yu}HkiszBoBjZ", + "{rn}Hw|hzB|yCzrFlIfLjLzJ", + "w|b}HqrwyB{Oen@wDuL{v@gcB", + "mke}Hms|yBzv@fcBvDrLzOdn@", + "uuo}Hcky|BHjR", + "guo}Hm~x|BA_E", + "el_}HuglyBm`@gzB", + "iqs}Hkld~BiCf{C", + "gvs}Hq~~}BcAthAYfk@", + "sus}Hcp_~BSpP", + "{ws}Hyo{}Br@gv@\\_cA", + "e}f}Hgz~yBpIzGtEbFrEdHnFzK", + "s}e}Hmt}yBkGgM{D_GmFyFwHaG", + "sm`}H}bpyBgQyaA", + "y{s}Hseu}Bb\\h_F", + "o~r}Hken}Bc\\k_F", + "czs}Havy}BfAwx@", + "eys}Hsh{}BYxc@", + "ius}Hak_~BNoS", + "aps}Hqye~Bg@dl@", + "aqs}Hkld~Bf@el@", + "svs}Hmkh~Bt@vJ", + "a`a}HqeryBxR~gA", + "_r_}Hw{lyBbC|M", + "oeu}H{wozB}GaT", + "wnu}HslpzBrGlT", + "sro}H{gt|B_AgsB", + "{to}Hc|w|Bz@dmB", + "kur}H}clzBfUlHhGvCnjA~y@dEfDpD|DtKxQ", + "wrn}Ha}hzB}J{PoDcE_EgDokAyz@kGwCgUmH", + "a}f}Hqz~yBcaAys@", + "g_i}Hao`zB`aAxs@", + "{me}Hix|yBwNc[", + "y}e}Het}yBxNb[", + "cfa}HsxryB`E`R", + "{_a}HweryBcEeR" + ], + "title": "Warszawa Zachodnia - Krzewie", + "subtitle": "Warszawa Zachodnia - Kunowice", + "link": "https://wiki.simrail.eu/en/Route/LK3" + }, + "4": { + "available": [ + "gx{{Hcoy{BfB?", + "k}z{Hyny{BhC?", + "yh|yHo_o{Bpx@zC", + "gozyHszn{BrHV", + "utb|Hk`|{Bf@P", + "s|i|Hmd`|BtYvH`JlDtIfErN|Irn@hd@", + "id||Hs|l|Bka@sgB", + "oyw|H_yd|B}A_@", + "m|w|H_zd|B_RaGqNyH}M{KoMeO", + "mvstHk||wBqt@{lCoEmOgFmO{D{JuJaTsImOuHiLuP}SmuDiiEqXgZ_TsQacBoqA", + "uhyyHuwn{Bz@D", + "sezyH{yn{B|[dA", + "wi_|Hglz{B`b@vOfTfFnJnAbKp@b_@`@", + "uy{{Hcoy{Bl@?", + "kypsHcsfuBvJFfIk@`KsB`JgD", + "y~psH}sfuBlDX", + "m|y|H}hf|BcCmD", + "q`z|Hknf|B}H}M{G_O_GmPoF}R_DiO}BuNkMeeA", + "ydc|Huh|{BanAue@aLqF{JeG", + "{~|yHiao{Br@B", + "{i_zHmgo{B~iAbE", + "glosHc}fuBj@W", + "{josH{}fuBlj@m]bNoG", + "a`xsHo~gvBdZr_A`F`SzEtUxEd[rBfRjBlUfAtSv@`\\HjTIvOy@v]k]byHoAl`@Q`VBfMv@~_@x@jQjCx\\fF|a@vFlZjGnW~GzTzLd[pJpRfQnY", + "o`xsHs_hvBLb@", + "wspxHwhqzBa@U", + "ytpxHmiqzBkQcJcKwD", + "_deuHu`rxBc@]", + "qd||Hm|l|BlDzPbCnN", + "}`guHassxBeo@}f@gKmH", + "uxxsHgwjvBtCfVlC`QbDvP|Hp[", + "}xxsHqxjvBFh@", + "c_ysHidpvB}@lbAHf]`@xS~@zSvCj_@", + "c_ysHsepvB?h@", + "qnm|Hija|BfAV", + "gsn|H}va|BujB{b@", + "goqzH_cr{Bt@@", + "qza{Hs~v{Bno@hBvF`@|UrDjNhDrH~BzcAz_@~kDlrAlJxC|M~CvR~BpjBdD", + "_nqsHkxfuBp@R", + "mlqsHwwfuBrLxB", + "agrtHi~xwBl{@n~C", + "ehrtHgaywBb@|A", + "edpyH}_n{Bf@B", + "yfyyHown{BraHpV", + "qrv{Hmmy{BX?", + "ayz{Hyny{BneCj@", + "udevHablyBxbAbZ", + "}heyHeeg{Bb@x@", + "sgeyHwcg{Bc@y@", + "}bpyHy_n{Bzh@jB", + "gtqxHwzqzBuJ{C", + "s}i|Hyd`|B^J", + "ilm|Hqia|BpaAbU", + "gwcsHsnpuBhhAyF", + "ajdsHykpuBxQq@", + "oodsHkkpuBlDM", + "ardsHmlpuBcE|@kEdCqDxD{EnH", + "_rdsHakpuBwEjAkDpBmDtD{EpH", + "_nfsHehnuBY`@", + "uzgsHeoluBXa@", + "i{gsHkpluBX_@", + "onfsHeinuBY^", + "gmmsHughuBhxAqh@nHeD|FkDlHaGtGeH`t@ibA", + "ipmsHydhuBl}A}j@vFiCfGsDfH{FbI{IfO{Rpb@{l@", + "qodsHwlpuBoAH", + "oodsHkkpuBoAH", + "{ygsHgpluB`a@mj@", + "isgsHmzluB~b@wl@", + "_{{|Ha{k|BPhA", + "wz{|He{k|ByBoMwD}Q", + "ez{|H{xk|BQiA", + "mz{|Hwxk|BjMdeAlCvPzCtN~EvQ`GnPrHfP~HvM", + "gmmsHughuBed@pOoNrCkLlA", + "isqxHizqzB]M", + "}`atHebnwBTA", + "if~sHkjmwBRJ", + "g`atHgbnwBvJE|HR|MbAxHhAtQjEtLhEbJhE", + "ue~sH_jmwB`SdMhLtJnKrKnPfT|ItNlLhUbIvRhJdY", + "i|w|Hoyd|B|A^", + "a`z|H{lf|BbCjD", + "glm|H_ja|BgAW", + "mpu|He`d|Bnx@bR", + "}{y|Hogf|BvMfObNrKlO`IhP`F", + "ezxsHsnsvBEr@", + "kzxsH_msvBkA~]kAjgA", + "ioosHapguBoPd@yOa@", + "yctsHmviuB~e@`v@zIjL`F`F|FrEjIzEpI`D", + "uy{{Huoy{Bu_@]oJq@uKyAiTmFuh@aS", + "myz{Hkoy{BiC?", + "q|i|H{d`|B_@I", + "gx{{Huoy{Bm@?", + "ksb|He`|{Be@Q", + "wqv{Hymy{BY?", + "qrv{Hymy{B{eCq@", + "w}z{Hkoy{BgVI", + "q}i|Hee`|Bck@uM", + "i|a{Hc_w{BeGQ", + "qkwuHgt`yBltC~xDhI~JpLxLnPtMlR~K~oBxw@", + "{`cvH}fkyB~@X", + "y~bvHofkyB_AY", + "qvavHmvjyBaBg@", + "syavHuwjyB}TyG", + "y`cvHigkyBybAeZ", + "kzauHmioxBWS", + "c{auHajoxB{gBsuA", + "{frtHq~xwBc@{A", + "svavHavjyBt_@dLzIfDxJxEbTbNfNrLtmBjnBfObPfmBtgC", + "omwuHew`yBe_BwvBeM}OcOcPwmBinBgNuLeTeNuUaKu_@eL", + "kpbvHy`kyBmMuD", + "mkwuHqt`yBaAsA", + "qobvHo`kyBYI", + "mpbvHk`kyBXH", + "{~bvHcfkyBlMvD", + "e{auHuioxBVR", + "sobvHa`kyB|TvG", + "oov|H}jd|B_i@aM", + "qov|Hqjd|BTF", + "kyw|Hoxd|Bxh@|L", + "ynv|Hwjd|BUE", + "yg_}Hohv|Brc@tmB", + "uceyHk}f{Bc@y@", + "ydeyHe_g{ByAqC", + "ygeyHkcg{BxApC", + "_eeyHy~f{Bb@x@", + "ingwH_asyBe@S", + "oogwHsasyBu|ConAeRwGoUsF", + "uxxsHuxjvBwCk_@}@ySc@ySIe]|@kbA", + "_jptHa}swBdPbl@dDfK`J`V~LjWtI|NdOxSbNxNbYxV", + "ivltHehnwBcYyVaN{NgOwSuI{N}LmWaJ_VcDgKePal@", + "wrizHmrq{Bp`Djr@fd@bJlRhB~kB`H", + "ok_zH}go{B}kBaHiWmC}`Ek|@", + "kf~sHyjmwByPsHuLsD{JuByMgB}Hg@yTM", + "attsH{mjuBgQoY{JcSoLoZaH{TkGoWuFkZiF}a@kCy\\y@iQu@}_@?wXl@a[x^_jIz@y]JwOKkTy@c\\eAuSkBmUuBiRyEe[yEwUcFaSeZu_A", + "ixzsHqzhwBiJcYcI{RkLiU_JwNmP_TsK{KiLsJgSiM", + "wsizHwrq{B^H", + "g}|yHeao{B`Rp@", + "}bpyHg`n{Be@A", + "we~sHmjmwBSK", + "mvltH{gnwBnD~C", + "idpzHqar{Bu@A", + "{~xsHgdpvB@k@", + "ok_zHqgo{Br@B", + "yfyyH}wn{B{@E", + "qmqzHicr{Bu@A", + "oxzsHizhwBNj@", + "{_xsHw~gvBMa@", + "cj|yHa`o{BaRo@", + "_fpzHear{Bt@@", + "sjptHy~swBRv@", + "yh|yH}_o{Bi@C", + "_eeuHaarxBd@\\", + "ypltHgcnwBoD}C", + "urizHyrq{B_@I", + "i`atHubnwBU@", + "e}|yHqao{Bu@E", + "qmqzH}br{Bpf@v@", + "azxsH}lsvBBs@", + "{i_zHygo{Bs@C", + "}pltH{bnwBlRjPjLbJpNxIxPtHnOvE|MjCvLnAnQh@~FC`Os@|QiCt_Dyq@fOaCdQiA", + "wwzsHcyhwBQm@", + "mxxsHiwjvBGk@", + "ej|yHs_o{Bj@B", + "_fpzHsar{Bqf@u@", + "wiptHg}swBUw@", + "qezyHmzn{BuHY", + "sqpsH}oguB_@C", + "srpsHapguBiE_@", + "_aatHsbnwBcQjAgO`Cw_Dtq@{QjC_G`@aOVoQk@uLoA}MkCoOyE}GsCqPyIqLoIaY}U", + "}yxsHqnsvB~RaiEdAoZZgd@a@q[]uKg@sKgBiW{CaZkr@uiFaDuTeDeRkE}RoD_N", + "_xzsH}xhwBnD~MjE|RdDbR`DvTjr@riF|C`ZlCzc@r@zYHhMG|WQfKgAnZ}R`iE", + "wheyHqeg{BeW}e@aHoKsDkFgSsTiRmOwqBuwAmOaIgOcF_OgD}HkA{M_A{c@yA", + "{~|yHwao{B_jAaE", + "uhyyHcxn{B{[iA", + "gozyHg{n{Bqx@uC", + "mzauHaioxB~bBpqAtNnL`MzLffEx{EtPzStHfLnIjOrDpH|JlVhFhOlEnOnp@|aC", + "mjptH__twBm{@q~C", + "cdpyHi`n{BuaHsV", + "yceuHc`rxBrgBluA", + "i`xsHy_hvBgDmMgF{U}E_ZuCeV", + "y~xsHsepvBz@y}@n@{Wj@sN", + "idpzHcar{BvlDpFxKh@pKtAlHxA", + "usizHcsq{BoHyAqKqAwKk@ylDuF", + "yv~wHke~yBWg@", + "qw~wHsf~yBqmBiiD{JuNgH}IkNsNsGqFq}EuqDqHqG_LsLqx@abA", + "wqv{Hmmy{BlvA`@lQh@fPfBv|Epq@nP|@nsCfI", + "k|a{Hw~v{Bx@B", + "qza{H__w{Bw@C", + "goqzHkcr{BaU]", + "{vmwHoavyBiDk@", + "e|mwH{bvyBcLsA", + "{tpxHaiqzB^V", + "_arxHs_rzB\\J", + "}_rxHs_rzB]M", + "a`rxHg_rzBvJ|C", + "itqxHizqzB\\J", + "{`rxHa`rzBgXuIeMuFeKyFudGm~DiLcJsK_KkHsIuQkWyPc[", + "k~}xHii{zBxOxXpSzXhPfPjLdJtdGf~D`H`EtLrFz[rK", + "ksqxH}yqzBbKzDjQ~I", + "yw~wHkf~yBVd@", + "o_vwHifwyB\\B", + "iinwHoevyBSC", + "kinwHaevyBdLrA", + "_jnwHeevyBRB", + "e|mwHmbvyBfDj@", + "q~uwHsfwyB]C", + "aw~wHee~yBdc@nv@`JzN~LhPrFjGxF~FvHxGlQbMfpBrhAdH`DjMrEjPnDvL~A", + "efvwHwgwyBwL_BkPqDkMqEeH_DepBuhAoQcMwHyGwF_GsFiG_MkP_JyNcc@kv@", + "{zlxH}emzBhq@ty@~KrLrHtGp}ErqDrGpFjNpNfHzIzJtNlmBfiD", + "q~uwHefwyBpsF~_@", + "}inwHsevyBssF_`@", + "mfawHq|oyBSI", + "sogwHgasyBd@R", + "cgawHm|oyBRH", + "agawH{|oyBgfEccB", + "mngwHs`syBhfEdcB", + "}vmwHaavyBnUrFfRtGp|CnnA", + "{{mvH{tnyBxu@J`Mx@fRrC||DnjA", + "weevH}blyB_oDmeA}L_DgRwCcMy@yu@I", + "_~mvH{tnyBbA?", + "sdevHoblyBc@M", + "yeevHqblyBb@N", + "{{mvHgunyBcA?", + "ofawHc|oyBtn@vVhStGjKtBhKpArLj@pPP", + "_~mvHgunyBodK`@", + "uyavHiwjyB`Bf@", + "umwuH{v`yBbArA", + "sj}vH}snyBqPOsLm@iKqAiKsBiSuGun@yV", + "igcsHinpuBzo@wCfPqA", + "gvs|Hgmc|BUE", + "}vs|Hamc|BRF", + "}vs|Hmmc|Bkx@cR", + "_wq|Hwwb|BtzAp]", + "}rb{Hg`w{Bb@@", + "yqb{He`w{BfLZ", + "yqb{Hs`w{Ba@A", + "{rf{Hoiw{BosCgImP{@y|Eqq@ePgBoQk@mvA_@", + "yfrzH_dr{Bn@@", + "ierzH}cr{B`U\\", + "ierzHidr{Bo@A", + "yfrzHkdr{BojBgDwN{AsNuCwMeE_lDurA{cAw_@qH_CmPyD{S}CyFc@qo@iB", + "aynyHm|m{BV@", + "aynyHy|m{B{h@mB", + "ixnyHw|m{BWA", + "ixnyHk|m{Bzc@zAxM~@~HhAzNhDhObFjO~HxqBvwAfRlObStTrDfFbHlKdW~e@", + "mtjuHqbvxB}iAid@", + "ihmuH}kwxBxlAve@", + "k_muH{gwxB_sB}x@oQkJcJiGwGkFqKaKuNuPmtC}xD", + "q}huHcduxBhKnHdo@|f@", + "_kesH_wouBob@xl@", + "mjesH{uouBqb@tl@", + "_b~xH}o{zBkfAirB", + "ql`yHyg_{BdmAn}B", + "{ceyH_}f{BhjAbyB", + "ki`yHgc_{BsiA}wB", + "oczvHwsnyBndKc@", + "kdjuHczuxBnVbKhNzH", + "k}huHmduxBgN{H}TiJ", + "}xpsHaqguB_MiBgOyDsNsFoKwFiMuIsM{KcHoHcIgK", + "kxbyHecc{BijAeyB", + "etbyH{{b{BrfA`sB", + "emjuH__vxBgFqB", + "_hrtHmaywB_g@_iB", + "}lf|Hw~}{B|JfG`LnFhkAjd@", + "ylf|Hc_~{Bun@id@sN}IsIgEcJmDuYyH", + "ivs|Hylc|Bnu@bQ", + "{spxHihqzBrQrM|KhKfMtNnT`X", + "mtnxHqiozBy^ic@{KeKsQuM", + "o_vwHwfwyBeE]", + "uevwHggwyBdE\\", + "gfvwHkgwyBPB", + "uevwHugwyBOA", + "}amxHunmzBoq@{y@", + "qpnxHsdozBtt@t}@", + "yb~|Hczr|Bua@sgB", + "uf}|Hgep|BEU", + "_g}|H}dp|Bla@ngB", + "gg}|Hsep|BFT", + "w_r|Ha{b|Bou@eQ", + "e_r|H{zb|BQE", + "y_r|Huzb|BRD", + "}z_}Hibx|B|Nfo@", + "kh_}Hmkv|B_FeT", + "qodsHwlpuBlDO", + "_qcsHumpuBtHS", + "cjdsHgmpuBzQk@", + "eeasHsupuBhBU", + "}masHmvpuBdLM", + "cujuHobvxBvOjG", + "ozjuHeevxBjDtA", + "qbjuHsyuxBsIkD", + "i{n|Heya|Bvk@zM", + "onm|Hwja|Bwc@eK", + "ceeuHsarxByz@mp@", + "aaguHursxB`{@rp@", + "qxbyH{bc{BjC~E", + "_tbyHe|b{BkC_F", + "{f}|H}ep|B}ZesA", + "ec~|Hyyr|B|ZdsA", + "uh_}Hckv|BZrA", + "oe_}Hwbv|B{AuG", + "gwcsHkmpuBfEI", + "ywfsHu{muB~GmJ", + "ozgsHkqluBdFaH", + "_pstHmk|wBmE}O", + "wzstHag}wBpq@xdC", + "msb|Hy_|{BthBpr@", + "qq_|Hopz{By`Bun@", + "qtb|Hw`|{BgO}F", + "sgc|Hsi|{B|QfH", + "uik|H{s`|BqaAcU", + "wik|Hms`|Bbk@rM", + "e_r|Hozb|BdGvA", + "}~q|Hyzb|BGA", + "{nv|Hijd|Bl]bI", + "ipu|Hq`d|Bo]eI", + "odb{Hu_w{BiL]", + "qdb{Hi_w{BdGP", + "g|c{Hqcw{BcnAmD", + "g|c{Hccw{Bhh@zA", + "crf{Haiw{BvEN", + "kkf{H_iw{BwEM", + "kkf{Hqhw{BbnAlD", + "{rf{Haiw{BV?", + "crf{Hmiw{BWA", + "{rb{Hu`w{Bkh@{A", + "_u{{Hcoy{BrVH", + "_u{{Huoy{BgB?", + "sj}vHosnyBbfBG", + "oczvHetnyBcfBF", + "ko_}Hs`w|BaBeH", + "_k_}Harv|BhA|E", + "gttsHqmjuBlObV", + "octsH{viuBqO_V" + ], + "unavailable": [], + "title": "Grodzisk Mazowiecki - Zawiercie", + "lkname": "CMK", + "link": "https://wiki.simrail.eu/en/Route/LK4" + }, + "7": { + "available": [ + "uv|}Hmrp_CaBcMgA_GsAeFaIsUsAwF{@yIOiL", + "ev|}Hynp_CyBoPwAsHcKg[sAyF_AyJMmK", + "ed|}Hkin_CmBuLuEkT", + "ef|}Hesn_C{FmX", + "in|}Hmlo_Cu@qD", + "an|}Hslo_Cu@qD", + "cq|}Hixo_CqDcY", + "cr|}Hy{o_CaC_R", + "wo|}Hero_Ck@cE", + "_p|}H_ro_CcAyH", + "}m}}Hgfs_CDyKz@kJ", + "um}}Hgfs_CD}Kz@cJ", + "{k}}Hm~s_C`EsY", + "sk}}Hi~s_CnEyY" + ], + "unavailable": [], + "title": "Warszawa Wschodnia - Warszawa Grochów", + "subtitle": "Warszawa Wschodnia - Dorohusk", + "link": "https://wiki.simrail.eu/en/Route/LK7" + }, + "8": { + "available": [ + "qqv}Hq~~~Bn@tF", + "ebv}Huv|~BkD_TwF{e@", + "mcv}Hya}~B}Foe@", + "a`v}Hmr|~BkBkN", + "ebv}Huv|~Br@jE", + "y_v}Hcm|~BWeB", + "_ov}Hi|~~BRrC", + "usv}Hcj__CbApJ", + "kkv}Hih~~B_BkN", + "apv}H{v~~BVhC", + "{czpHqlfyB{VohAsc@}mCiDgLu]yy@", + "atcqHs}pyBuLtWwC|EuFpGiFxD", + "uw}qHawgyBhOwIxr@sV`E{C~AgB~[ua@hGuGdG_EbnAar@", + "oprqHulpyBiIbRmCrEoUlW", + "gktpHu{vxBbLrGjIpB", + "ipupHytwxB{AaA", + "esupH{vwxBsB}A_CoC}GmL", + "k{vpHeqyxB_A_C", + "mkupHqqwxBk@]", + "ylupHorwxBoBiA", + "gktpHu{vxBaAm@", + "imtpHc}vxB}Q{K", + "qbzpHmhfyBi@cC", + "aorqHkopyBm@tA", + "csypHikayBXq]dAcq@CaM]oE}@mGmNmn@", + "wcvpHwkxxBYg@", + "q_{rHatbyB{@iI{AoIqAqEcCuF{CiEoDyC{DgBgEq@iED}Cj@yDbBeDnCsCvDiBpDoHbV", + "adzrHwh`yBsUex@", + "eefrHklayBbl@}WnN}JnOiI", + "axcrHq{byBf@Y", + "ocrpH{dwxBeCNmC|@", + "ctnrHitcyBuRrNaDdA_DZmCEsDq@mS{JeDmAeC]uED_FlAoUrMkCbAqr@rKgEjAgFvCcD|CuBpC{a@hy@qC|DeEdD", + "m|~pHsxryBQa@", + "igcqHqbryBI~@", + "gscqHa_qyBYl@", + "{p_qHkqsyBk@S", + "urnrHoucyBm@d@", + "on~pH{}qyBSe@", + "gr_qH_rsyBu[uEmq@qCkEF_Cd@}D`BiDvCwCfEaBrDkAvD}@nEeChX", + "ioiqHo_myBg@Q", + "co~pHa_ryBiLqX", + "qpiqHa`myBmDkBcDyCmCeEcCmGiA}EaAuIw@oW", + "sgcqHq`ryBg@pFcAhGgA`E_EpJ", + "_}~pHuyryBcEcJuB{CwDgDiCmA", + "muspHopvxBoHqBgKaG", + "ektpHc|vxBcAm@", + "imtpHq}vxBgU_N", + "wlupHyrwxBmBkA", + "ikupH{qwxBm@]", + "mdvpHgmxxBmPuYeDkH", + "asupHewwxBeCqBqB_CyGgL", + "scvpH_lxxBYg@", + "a{vpHiqyxB_A_C", + "epupHeuwxB{A_A", + "a}vpHiuyxBiOa`@", + "yukrHczcyByD?yJcA", + "utkrHezcyBc@@", + "_agrHocayBe@I", + "ebgrHycayBwFuBuFmFeCoEiF{MyBeEaE{EkDyBwhAcd@gGm@iUp@", + "eefrHklayBc@P", + "mglrHg|cyBg@G", + "uhlrHo|cyBef@}FgGIyF~@uBt@sBhAmJfH", + "oudqHsooyBg@\\", + "wvdqHunoyB{MlJyGrDg^vJoD|AuDpCmK`KwFhDkQlEaHvCmQnKmDjAsE^iGq@", + "uikqH{npyBy@Y", + "okkqHuopyBskAab@}C{@cDYuCJiEbAmYjQ_E`B}Ev@qGA_s@aHiGRyDjAcFrDiClDkClF", + "uxzrHcbbyB|Txv@", + "o~zrHutbyBgEgUoBaGoBwD_C_DqD}C}DeBgEq@iED_Dj@wCjAiEfDwBpCiC`FmHzU", + "s}psHwpiyB`dA}K~F?bIjAbJdEhFdEjFxGbIfNxGhInj@tb@|MlH|KhD~eDrt@", + "uhlrH{|cyBef@_GgGG{F|@uBv@uBhAkJfH", + "gefrHwlayB`l@_XnN{JnOiI", + "excrH}{byBf@W", + "_agrH}cayBc@G", + "wtkrHqzcyBa@@", + "gefrHwlayBc@P", + "wrnrH{ucyBo@f@", + "kglrHs|cyBi@G", + "gtnrHstcyBsRpN_DbA_DZmCEqDo@kS{JgDmAgC]uEBaFnAqUrMiC`Aqr@tKgEjAiFvCcD|CwBtCya@fy@qCzDcEbD", + "}vcrHu|byBlJoFhNqLnFyClWmFfDgB`DkCxY{[`DwCvZ{Q|GeFdCiC`[w`@bCyB~NkJ", + "cbgrHedayBuFuBsFkFeCoEiFuMyBiEcE}EmD{Bqm@aWeZaLiGm@kUp@", + "yukrHozcyB}GMsGu@", + "iffrHykayBaNvFcEb@oDQ", + "kffrHelayBaNvFaE`@oDQ", + "wprqH_mpyBgIbRmCrEmUlW", + "e_tqHgpnyB_IjJiE|CcMjEad@bM", + "i_tqHqpnyB_IjJiEzCaKnDaf@|M", + "yw}qHkwgyBjOyIfm@uSfFeChFyE`^ed@dG}FjtAkv@", + "yvsqHiynyB{ElF", + "u}sqH{qnyBo@r@", + "wusqHoznyBa@d@", + "}vsqHsynyB{ElF", + "y}sqHernyBo@r@", + "wbvqH{kmyB_@L", + "gmwqHmflyBSL", + "imwqHwflyBUJ", + "ubvqHmkmyB_@J", + "{usqHyznyBa@d@", + "ucvqHakmyBwJzC_F|C}BlCiJdOqFdE", + "wcvqHmkmyBwJxCaF~C_CnCgJdOoFdE", + "{gcqHs`ryBg@nFaAfGiA`E}DnJ", + "wijqH{boyBk@uF{@{EcBmFeCcFiCcDeCsByKoE", + "_jjqHwboyBk@uF{@yEaBkFeCcFgCaDcCqByKoE", + "qudqH_poyBi@\\", + "coiqHo`myBi@O", + "sikqHgopyBy@Y", + "iorqHuopyBm@tA", + "mscqHi_qyBYl@", + "yijqH_aoyBEw@", + "qijqHaaoyBEy@", + "mpiqH_amyBiDiBaDuCkC_EeCeGiAyEw@aGcA_Z", + "{vdqHaooyB{MjJwGrDg^vJoD|AyDrCmK`KsFfDkQpE{H~CiOxIyEbBoE^cGq@", + "gtcqH{}pyBuLtWuC|EuFlGgFxD", + "mkkqHappyBskAab@}C{@eDYwCHkEdAkYjQ_E`B{Ev@oGCas@_HkGRyDjAeFrDkCnDmClF", + "uczpHwlfyBoW{jAyb@ukC_BaGmAeDw]uy@", + "y|~pH}yryBcEeJuB{CyDgDkCqA", + "yp_qHyqsyBi@S", + "qgcqHubryBI`A", + "g|~pH}xryBQ_@", + "kbzpHqhfyBi@eC", + "in~pHc~qyBSe@", + "cr_qHmrsyB}XeEeQgAod@{AaGp@}DbBkDvCwChEcBrDmAxD{@pEgChX", + "}n~pHi_ryBiLsX", + "qyqsHeviyBYO", + "oyqsHqviyBWO", + "okesH_xdyByK{KaCcBoDaBooCsm@{GmBqGmCoI}Eoj@ub@{GkIaIgNmFyGgFeEaJcEaIkA_G@_dAzK", + "{p~rH_bbyBYE", + "{p~rHsabyBYE", + "w{~rHgfbyBwk@_X", + "s{~rHsfbyBwk@aX", + "uw}qHawgyBe@X", + "{x}qHgvgyB_OlJcCvB}Zz`@eCjCaHbFwZxQaDtCyY|[cDjCgDfBmWlFmFxCiNnLmJnF", + "_y}qHqvgyBd@Y", + "kmwpHkvzxBi@sA", + "qmwpHevzxBi@qA", + "mrypHeuayBtA}iAOsJc@cFq@gEmNmn@", + "coqpHabwxB}DaByCC", + "ocrpHkbwxBrHM", + "{yqpHgewxBiCB", + "elqpHw`wxB}Ai@", + "{yqpHybwxB~FF", + "giqpH}_wxB}AY", + "q}psHkpiyBiETsEMkEs@uGmC", + "oyqsHqviyBtGjChEt@rEJfES", + "ulasHcucyBxP`IjLnG", + "sm`sHabcyBm^cP", + "kxrsH}dkyBaj@maBmAiE", + "kzqsHuviyBeG_FqCgD_DaFiDoIuQsh@", + "ee}pHunoyBih@enA", + "kd}pHamoyBYs@", + "_e}pH{noyBih@gnA", + "ed}pHgmoyBYs@", + "{qqpHqbwxBnBb@", + "knqpHmawxBdAT", + "k}vpHeuyxBeO_`@", + "qdvpH_mxxBeQuZsCoG", + "cdssHc~kyB_a@knA", + "{nwpHwxzxBi^}~@yMqf@", + "unwpH_yzxB}]e~@mPqm@", + "gzqsHawiyBeG}EoCgD_D_FiDoIcFeO", + "wtrpHi{vxBbH}C", + "m`spH_uvxBtJiE", + "msrpHy|vxB_RtI", + "gixrHof_yB}IXwCe@kCaA}YgOgEmEmC}E", + "abxrHsg_yB]B", + "mgxrHeg_yBeHd@sEa@wCcAiQwI", + "_cxrHog_yBgE^", + "uxzrHcbbyByAyF_BwI", + "uzzrH}abyBeByHu@iG", + "eazrH{f`yBq@mB", + "}bzrHqf`yBc@eA", + "yyurHq|_yBwFnB{r@dNmHv@", + "{yurH_}_yBwFpBkp@pM}Fv@", + "ei}rHm{byBwBxEcCxDkCtCyCxBcDzAiDx@gET}DU", + "ki}rHw{byBuBxEaCtDkCvC{CzB_DxAuE`AwDLaDU", + "uq~rHyabyBaImC", + "uq~rHebbyB}HmC", + "uucsHksdyBlMrC", + "qhcsHsmdyBgGoAcDW", + "ggcsHwndyBrXfG`HlC", + "qdbsHk`dyBeIaDyXeG", + "}ucsH{pdyBmFLcPhCyFA_De@}DqAeDmBaDsC", + "ikesHodeyBrt@bP", + "kfspHwqvxB~CuA", + "wsspHoovxBpEVxE_B", + "mfspHcrvxBaF|AaB?{Ci@", + "clrpHmbwxBiFrD", + "skrpHg`wxBzBs@fCO", + "g`upH_jwxBeJqF", + "qcupHqlwxBwFiD", + "_}xpHg`~xBqNgi@oCyNy@aJYuIPgZ", + "a_ypHwf~xBqNej@sAcKw@uN", + "e~qpHcewxBiDF", + "kaspHmtvxB\\Q", + "inyrH}s_yBqFsCyBgBcCcDkB}D", + "_sypHwm`yBIuMRsQ", + "urypHaoayBFcE", + "}zwrHci_yBoK|@", + "{~wrHch_yBeBN", + "kh`sHu_cyBcD{A", + "oh`sHg_cyBcDyA", + "amasHescyBoVeL", + "qdbsHabdyBzV|K" + ], + "unavailable": [ + "wfu}Hkly~BfClG", + "obu}H}cy~BzHhRpCzD", + "qqv}Hq~~~Bn@tF", + "m{u}H__|~BsCmR", + "a{u}Hyv{~B}@mH", + "_}u}Hg`|~ByA{K", + "qvu}Hgi{~B|CrLxAlI", + "_ov}Hi|~~BRrC", + "usv}Hcj__CbApJ", + "wou}Hcyz~BmF_UgC{N", + "eiu}Huuy~Bg@gJ", + "mbu}Hody~Bq@aB", + "kkv}Hih~~B_BkN", + "ynu}Heqz~BrBrWz@lEpAvD", + "_du}Hqgy~BsAuD", + "mju}H}`z~Bo@oH", + "_wt}H{vx~BoEwD}C{F", + "a{u}Hyv{~BnCpL", + "sfu}Hgmy~BqAmG", + "}ku}Hmjz~ByBuM", + "apv}H{v~~BVhC", + "kof|Hmxr_Cne@}U", + "}sc|Hkht_CvtAu\\", + "g_}zHw`i`CxEBzFj@|fJbtArLl@~hAH", + "{n~|Hanc_Czb@kB~JmAtEcAdG{BnL_I", + "{he|Hkos_Cv@a@", + "att}Hwjx~BzBrAxCb@zCa@fC{A", + "csewHy~p~Bd_@|Lt`@|Gjm@nM", + "wfq}Hyy__CrIqj@vA_FpCsFpDyDfF{BlCYtPO", + "wxctH_iyzB]eB", + "yunuHmty|BfBn@", + "s`nuHqiy|BtFtExNpPzDlG~ClHtBvG|AdHvLdr@", + "wiluHyxu|BlDhSpAjKbGlqAn@|HdAdHjCdLpd@x_BfEfLvYbl@|QtY|IjR|DjFvDrC`EzAjEb@dEUjEoAvDaCrIaJlHyK", + "afruHeh{|Bo`Am]yGmAwGIgFh@{F`BokAxg@aDdBaCrB{BpCmBlDig@btAoCfG{ClEiC~B{EdCmErA_DVcDIkNoD{CYeDFoQ`CkEWcEmAyEcDaEgFgCqFcGyPsBqD}BoC", + "mzpxHwv_`CmEnA{JrF{ChAoFh@oFa@eFoBsF{E}CaFiGwN", + "k|quHgd{|B`v@vX", + "shotHg~b{BcEkFwFgEcDuAaNoDqDqBmDgDeEkHgCgI{AqJe@}JgAo^C}NzAgw@b@iNbB_OrJwc@dByMb@uHNmICsb@ZmIlAsMfCuM|VmgAjEm]`AeFjCyHdHaMxCcHlBoIn@sFX{FBcFSsGgAoJkAaF{AmEoDmGeEcEeFcCcZwE", + "m_dtH}pzzBFau@]uPi@iHaBeLyBeJgBkFuD}HcQcXwC{DsDoDuGgEoE}AuVmD", + "edl}H_bb_Cl][", + "uqt|Hamj_CdTcErM_Fb|H_bE", + "ehv|H{si_CnA}@", + "qqo}Hs~a_C}PPmCVkEdBkElEqCpFsA|EuIpj@", + "a_s}Hyoy~BwHpGgPtP}ChBoCl@", + "_yxtHy~b|Bx@hC", + "si`tH}uqzBGi@", + "_|wtHuy`|BPj@", + "aeptHimu{BkEq@", + "{i`tHgwqzBwQecBwA}IsBcHwBqEeDwEyb@gd@oWcZsB}DaBsEyHg^", + "ewxtHozb|BdZx_A", + "mkptH{nu{BoHoAuGUwuAnG}HC{HsAkHgDsGoFyFwHuEwJwBuG_BiHuIof@oB{GaCgGsCoFwFsHuDcDwTaPiEoEyBuDeBgEqB}HeA}ISmFA{FtJwzAT{MWkNaA{LoBuLgCsJ", + "a}_{Hupg`CpIeE", + "qbyvHcsh~BlEkE~E{BhFo@bGd@zEnBvKdIdEnBnEr@dM`@jObF|DlCrIrJzBjBxPzItGhAtPc@fF`@tFzBbOnKdDhAjC^rEChE{@`EwBpJiH`FgBfx@kJjDCzEn@|ElBnQtJ~BdB|DzEzJnRtEjGxE|DfQhJpDhCzCdDpLjPhFzDtQtIvFjArIMzQuDzC@tC`@~EtBfJ|H|CpBdC`ApKbCzCxArB~A", + "afruHeh{|BfC|@", + "yaruHgf{|BvCfA", + "wf}vHe_k~BfAz@", + "yglxHsfy_Cr@fUtAvRvd@drElCnNzOtk@hCxGhEbHtCxCbQdO|DzB~C|@lHl@nJJtf@kFfJJp~@fSj`@jDhp@bR", + "kzpxHew_`CqEpA{JrFyCfAgEh@mFSgFcBwEmD}DqFuEkK", + "_nf}Hoqb_CfEU", + "uv|xH_rh`CydDaLkGe@aJ}Bm}@u_@", + "a}quH_d{|BPF", + "o|quHwc{|Bzs@rW", + "gcpvHwkg~BxG_@dH~@xD`BtShL~EhFfLlT~DnFlFlEtPzItDjCzCdDhL`PpGxEhPzH|FlAjIKbQsDjDAfDb@`GlCdJ~H|BvAtPtErFjD", + "{iluHizu|BJh@", + "ibswH}xx~B}@yH_BcH_ImRwByDaCuCmC{BuCyAwGiA{G`@}C`AoSvJwCt@_DTkEUaEoAyDcCeE{EoBqDcBoEmA{EgAiHk@yJk@_h@[uIqAoNyCsO", + "avoxHop_`CcAQ", + "iwgyHssi`Clq@mQ", + "}fyxHgci`Co@H", + "opdyH_fj`CbAb@", + "k_lyHiuh`CfCs@", + "gwgyHesi`Clq@mQ", + "ai~yHwlg`Cp~AcEdoJjO`l@{FfLaChG{BvFuC~\\mUdEiBjJqC", + "__bzHydg`CH?", + "}onzH_hf`Clf@Ez~@mJlJe@bGX|FbAfW|JvKrB~JFpZiC", + "_qnzHkhf`C`@?", + "}onzHkhf`Clf@El`AuJzH]pEP~Fz@nErAhRxHvKrB|JFpZiC", + "_~d{Hq}b`C||@knA", + "m~f{Hik``CwPvUuGtH}|@`}@oFpEsF|C}HdC_`H~aB", + "qbswH{xx~B@R", + "sxwsHw}`zBc@eB", + "yxwsHq}`zBe@eB", + "wywsH}`azBkEuPqCoIeBeDoEmFoCiB{D{AyB[qFAoGdBgC`BwI~HsFbEsCfAmFl@mDMoD{@wFgDoFcHgBcE}DgOcf@m~B}BcH{J{RaA{CoAyF_AiJgE}aAaC_VwAgLcAqFeDaLqm@uzAsEeNmDyN_CqMeEs]", + "_zwsHw`azBkEuPoCiIgBgDmEoFoCiBuDwAyB]oF?oGfBeC|AuI~HwFbEsCfAoFn@oDOmDy@yFkDqFcHiBeE}DiOef@m~B}B_HyJ}RcA{CmA{F_AiJgE_bAcC}UuAgLeAoFqAcFoC_Iao@a~AaEqNuCeNyA{IiDgZ", + "omwsHkb}yBkA_PIeF|@ak@AyKg@{IiA}I}EiS", + "imwsHob}yBiA}OIcF|@ak@A{Ke@{IkAaJ_FiS", + "cmwsHka}yBEc@", + "imwsHga}yBEc@", + "si`tHkwqzBwQecByA_JsBcHwBsEgDyEgw@oz@_C}CsByD_BsE{He^", + "stftHy~_{B[E", + "oyctHilyzB\\bB", + "qtftHc_`{B[E", + "e_dtH}pzzBFau@]wPk@kHaBgLyBeJiBkFsD_IcQcXyC}DsDoDwGgEoE_BuVkD", + "ohotHq~b{BcEiFyFiEcDuAaNqDoDoBmDgDcEiHgCeIyAoJg@{JgAm^A{NjCufAzA_OnJqc@bB{Mn@{M@{g@ZoIlAkMdCyMrU{bAjAeHfDwXbAeFjCwHbHaMxCcHpAaFv@gFn@{JDeFUwGgAoJkAeF}AoEqDqGiEcEcFcCaZ{E", + "qf}vHw_k~BuIyGqDmE_CwEoE{M", + "id}vH{}j~BgA{@", + "aabxH_yl_CYI", + "}abxH}xl_CXH", + "{abxHiyl_Ckp@cR_b@wD{|@}RgJIih@lFuHMsHm@gEsA{DeCmN{L_F}FcEqHqDuJaN_g@cCkMoe@uvEsAuTcAwf@m@oKoBqMy[yjBqBoGmCkFkDeEoEyCyGkB}m@cL", + "_fwwHmk~~BzCvOpAhNXrIj@dh@j@tJfAhHnA~EbBnElBnDdD~DxDnC`ExApF`@tGy@tTiKdEmAvGQnFfArCvAlDzC|BzCxBdE~DfJpB~FjAnF|@vH", + "ub||Hkdd_CoLbIyFtB_FhAeKlAsb@jB", + "wgf}Hqrb_CiET", + "e~`|Hkfu_CylAxY", + "}de|Hurs_Cg@V", + "wde|H{qs_Cg@V", + "gie|Hcps_ChAi@", + "efe|H}qs_CWN", + "_fe|Hcqs_Cc@T", + "ghv|Heti_ClA}@", + "wqt|Hmmj_CpRoDpMsEx}H}bE", + "whf|H{|r_Cn^gR", + "{ps{Hwyy_C``H_bB|HgCtF}CbFgEf}@k}@xGuHvPwU", + "gf`uHsol|BlShJbFxDjEbFbE~GnCtG`BdFrE|QpDvIhEdGnf@jm@`oAtgAzH|IzGxKdDjHrZr`A", + "waruHwf{|BvCfA", + "afruHwh{|BhC~@", + "_}quHod{|BRF", + "{k}uHiqx|BaA}@", + "}m}uHgsx|B_E_CkFmAgECkFbA{DrByLhK{DhCe_Apd@_DfA_Dd@kEAwDs@eD{A{CcCyCyDsB}DuBoGgAmFy@uHUwICe[r@q^[oLmA_JaFaUuB{Vo@mEwA}FqFwOaBwH}@yJKaKT{Fr@}GrGu[nA_J\\iI@sUPyFjG_y@r@uG`Kyg@hBiFtFuLxBiHhAkHxDi_@~@wEfGmTx@gFd@wFz@}[?uJQ{J[mF_DsUg@eHEiJf@uTIoHy@_JeFi\\q@yH]}HCcNrAks@IuLm@kH{@eFsAaF_I_UwAaHm@uFW}FA}FvA{WBuLqDeh@_AyXm@yF_AgF{AaF}BeFcDmEaCuBiGmCmMkAiCm@_FcCcE_EiDyFqBqFwFsXeCoHmE_HyLuL}DmHyAyEuA}GsFs`@sBkQm@eIQgGl@mZ", + "}}~vHsgn~BrSfp@", + "i~~vHqhn~BJ\\", + "_`_wHkmn~BK]", + "ouewHi`q~B``@nMhb@nHd^vH", + "wv~{H__v_Ci@L", + "_x~{He~u_Ch@O", + "ibswH}xx~B@R", + "kkptHmou{BuHkAsGWmuApGeI?yHuAkHgDsGqF}FyHoEmJuBuG_BiHuIof@mB}GgCoGqCgFwFsHwDeDwTcPiEsEkDoGkB_Gq@cDu@gF]kFCgJnJyzAV_N[kNaA}LoBwLiCqJ", + "uxxtHc_c|BkXm{@qFmM}G{K}HaJqoAghA_g@an@eD{EoDqIcEkPsB{GmCsGeEcHoEeFaFyDmSiJ", + "_eptH{mu{BkEq@", + "i{wtHmx`|BOk@", + "}vxtHyzb|Bw@iC", + "y{wtHyy`|BcZ_`A", + "ym}uHqsx|B`Az@", + "iunuHwsy|BdA^", + "cvoxHap_`CaAS", + "s}g|H}|q_Ch@Y", + "q}g|Hq|q_Ch@[", + "erhvHm~b~Bb@b@", + "arhvHw~b~Bd@b@", + "{phvHs}b~BlD~EvGtNpDlFfFdElNpEvEzC~BjCtBhDdDdJfBtKfBbTVrF?tHy@t\\ZpLvAzN|Gzh@hBzJpBhG`E`HzKrK~AnBnBnDfCrHvFpXnBlFfDzFjFzErDbBhCn@fL|@nG`CdDlCfCdDnBtD|AjE|AbHz@tH~@xXpDfh@CvLuAxW?zFV|F|AbLpAxE`IhUtAxGl@lFVxF@|FuAfu@B`N`AjP|Fh`@r@fJDxHi@jVFlFd@dHhDhWd@rP?tJ{@~[c@xF{@fFsFtRuArGwDd_@gAdH}BtHuFtLgBfFqJdf@oIhcAOpFCxU]~HaAvH_H`]u@`HU|FJ~Jz@rJ|AhHtFbPvA|Fp@nEbCxXpE`SnAbJZtLs@l^@b[VvIfAnJlAdF~AvErBzDvCvDzCbCfDzArDr@bEBdDg@`DkAl}@kc@lFiDtLgK`EwBlFcAfEBlFlA`E`C", + "afruHwh{|Bm`Ag]{GmAwGKiFh@{FbBokAxg@aDdBcCrB{BrCoBpDgg@~sAuCnGwCdEkC`CwEbCiEnAaDXaDIeMcDaEg@mEPaOtBgEIcEcA}EuCcFiGcCkFcGyPwBuD}BqC", + "wiluHyxu|BKk@", + "cjluHezu|BmMqt@}AqGgBsF_DeHwEmHkMyN_G}E", + "cf`uH_pl|BGA", + "_lfuH}ok|B_JxNwHnIqEfDcExAiE`@iEYcEoA{EiD{DgF{IiRaRyYuYcl@eEaLqd@{_B_DkNaAsHi@wH{F}nAoAkKmDkS", + "mf`uHwol|BDB", + "ki`tH_vqzBGk@", + "cftsHomnyB_c@quBeA}HqJq_AoKq{@i@iGqHanAqAmPoAsIeOeq@yAyK_Eub@", + "{etsHumnyB_c@quBeA{HqJq_AoKq{@{IivAqAoPqAuIeOeq@wAuKaEwb@", + "wek}H{ab_C}SN", + "g|l}Hw`b_Ckk@f@", + "shn}Heab_Cf]e@bMP", + "y~}vHy}k~B~CzIhCnE|CfDxH~F", + "_ny|Hktf_Cem@xn@oe@d_@", + "wcowH_cu~B`c@|o@|HdHlHnDbGvA|}Eby@`KnC", + "yfxxHsii`CsVtC", + "}cowHubu~B`c@zo@tGhGvInEfGvA|}Efy@`KlC", + "ol`wHkmo~BdNAzDz@tEfCxD|D`C`ExAjDvDjL", + "ql`wHymo~BdNA`Ez@~C|AjDvCvCbEtBrEbCfH", + "ax~{Hq~u_CceAdW", + "cvoxHap_`Czn@jLrElAtCzAlCzBzBxCpBtDvBdG~ApHv[~kBhAtLl@|Z", + "ouftH__`{BskA{M}KMeJZaHU_FcAo^_NiEaAkz@kF}Di@sI{CgIqEyFeEaG_HmQsX", + "muftHi_`{BukA{M_LOeJ\\_HW}EcAq^_NgEaAkz@kF}Di@qI{CgIoE{FeE}F}GoQuX", + "wewwHsk~~B}X{}@ybAq_DsEeLgDyFoEsFunD}uDwDiCcEkBsn@uQ", + "cabxHsxl_Crn@vQlFfCtDpChmDttDpEtFhD|FnEzKbdA|bDpWnz@", + "id}vH{}j~B~KvHlNlKtClCxDbGbGlOvClFnYb\\tFfEvDrAhD`@jDGfDo@dCcAxCuBbCkCxDqF", + "od}vHi}j~BhLtHdNfKtCnCtD|F|G|PzCdFtX~ZtFhExDtAhD^lDGhDo@fDyAxBaBdCmCvDoF", + "obswHgxx~BVvK[v[PzFd@rFpApHlBjGbDrGdDxDbGvDjFdAlkA`GhGzBjCtB~BrC", + "gbswHixx~BVxK[v[PzFf@vFnAdHjBlGdDrGbDvDxE|CjFrAxn@nCx\\xBjG|BlCtB~BrC", + "ubyvHqsh~BlEiE`GgClFe@bGr@zDbBzKfI~C~AlEz@bOn@pNzE~DnCtHpIzClCxPxIpGjArPe@jF`@rFzBbNzJ`DpAlDj@pECfFkAbDgBnJiHbEaBvt@yI", + "oyctHilyzBqA{Hw@{Hk@{O", + "uyctHelyzBqA{Hy@}Hk@}O", + "qrnuH}ry|BvJnDdEzB", + "wrnuHqry|BxJnD`EvB", + "qmb{Heef`C~IqLzDeDvEiCxHqBbNi@zEw@bFiBpNaH", + "otsxHira`C{FiIeCuFqAuEwFeW", + "sb||H{cd_Cpe@i_@xq@qs@", + "ufx|Hw|g_CbY}YbTqO", + "elfvHo__~BNiIGwFqBaX}AmK{CmJmD}FgEyDqCuAqLqDkFwDmD}EsHePoD}E", + "e~`|Hafu_CdeAcW", + "wek}H{bb_CfW[lzAcI", + "_nf}Hoqb_Cac@~B", + "g_}zHk`i`C|EBvFh@zfJdtAtLl@~hAH", + "eluxHwve`CcUmc@", + "kztxHqpd`CwGyTmKeT", + "wvvxHu|g`C_Qs\\wEkGsDgCcEsAiEWgDT", + "}|_{Hcpg`CpIgE", + "kf~vHopl~BkIeYgNua@", + "sv|xHsqh`C{dDaLkGe@qKuC_|@}^", + "spdyHsej`CdAb@", + "cuezH{rf`CveBoOjNm@", + "_qnzH_hf`C`@?", + "{vvxHm|g`C}Pm\\}EiGoDaC_EmAeEUiDT", + "mizxH{{h`Cus@nI_IViKY", + "_gyxHwbi`Cq@H", + "i_lyH}th`CfCu@", + "__bzHkdg`CHA", + "ai~yHklg`Cp~AcEfoJjO~k@}FjGeApF}AfFsBvF}CzSeOpFeDvF_CxHyB", + "ot|xHyqh`CeAE", + "qnzxHe{h`Cgp@tHiGNkKY", + "mt|xHmqh`CeAE", + "cuezHorf`Cnl@gFnN{@rj@kFnLk@", + "itsxHsra`C}EcHgCwF{AoF{FwW", + "uxtxHgld`Cu@iC", + "yvd|Hezs_CtKmEdUwF", + "i|g|Hw}q_Cz\\eQ", + "g|g|Hm}q_C|\\cQ", + "aty{Haww_CioAtZ", + "id|{Ha{v_Czm@sNl`@_K", + "u~azHydg`CbXu@", + "u~azHmdg`CbXu@", + "m~f|H}or_CzR{J", + "qjf|Hy{r_Cx@a@", + "i~f|Hqor_C|M{G", + "qwv|Huhi_CgTfOwYtZ", + "csnuHwry|BJD", + "{unuHaty|BPH", + "iepuHojz|B`i@pR", + "sgpuHckz|BvOnGv^~L", + "ic~vHiil~BaBeF", + "ii~vHkvl~BfIzV", + "eyewHqaq~B`EvA", + "eyewH_bq~BtBt@", + "}qbwHq~o~BxRbEnd@vHlD\\rEA", + "{bbwHmyo~Bnj@lJzIR", + "qssxHuqa`CW]", + "mpsxHgma`CaCaD", + "uxs}Hytx~BhXgY", + "a_s}Hyoy~BxB{B", + "kf`uHapl|B{e@mSuDgAcJ}@cPj@kFr@w^`Iwb@zF}X~HaEnBwD`DsCxDiF`J", + "mznuHqvy|BrCbA", + "g{nuH}vy|BXJ", + "cwnuHsty|Bf@P", + "snfuHgkk|BbH_MxCmElDeDbE{BxVkHda@qFni@aLrQq@`J|@pDfA|e@jS", + "wkfuHipk|BGJ", + "or_{H{vg`C|BiA", + "kr_{Hkvg`C|BgA", + "wfxxHuhi`CsVfC", + "qn_{Heyg`Cdy@}`@rIaCnIq@", + "mn_{Hsxg`C`y@aa@tIaClIs@", + "mdc{H{ge`Cux@`iA", + "c~d{Hy}b`Ci_AnqA", + "g~f{H_k``Cf_AqqA", + "gor}Hmiz~BkA`G_B`EwAxB_GlG", + "g{r}Husy~B|CsDvAmCjAsDfAiG", + "}nr}Hukz~BtUocBpE_Z", + "oqq}H}j~~BoExYgVteB", + "uqq}Hek~~B|Ism@", + "qfq}Hsy__C}Itm@", + "upn}Hg_b_C{_@R", + "{qo}H__b_Cb`@s@", + "aql}Haab_CeJH", + "g|l}Hyab_CpHF", + "agl}Hkab_C_IH", + "uzk}Hkab_CkK?", + "url}Hqab_CnMM", + "mhj}H{cb_C{Mn@mMN", + "}nh}Hgjb_Cox@jE", + "arg}Homb_C{[fB", + "arg}H{mb_C~b@_C", + "wgf}Herb_Cb^yB", + "she}Hkvb_Cc^xB", + "she}H_vb_ClmCwN", + "ez`}Hcfc_CmmCvN", + "ez`}Hwec_ChjAiG", + "yn~|Hmnc_CkjAhG", + "giy|Hwxf_Cpa@_c@", + "qgx|Hw|g_Cme@jg@", + "mwv|Hghi_CfNsJ", + "ghv|Heti_CiNnJ", + "uev|Hyui_CjJmGfHiD~GiBjUeE", + "yev|Hcvi_ChJkGjHmD~GiBjUeE", + "oct}Hypx~B_CFkCYcJoD", + "gbt}H}jx~B|B_C", + "wpi|He}p_Cdr@k^", + "ypi|Ho}p_Cdr@m^", + "wde|H{qs_C|LiG", + "_wd|H}zs_C}LfG", + "_wc|Hygt_CmSdFqJtD", + "_lc|Hqkt_C_JvB", + "uv~{Hu~u_CnCo@", + "gr~{Hq`v_CoCp@", + "er~{He`v_CzlA{Y", + "kd|{Hk{v_C{lAxY", + "cev{He}x_C}mBbe@", + "_ty{Huvw_C|mBee@", + "{ps{Hczy_CgsA|[", + "aev{H{|x_CdsA{[", + "ktb{Ho|e`CcHvJ", + "i_`{Hwng`CjAk@", + "m_`{Hgog`CjAm@", + "ktb{Ho|e`CxEuG", + "mmb{H{df`CdKqMzD_DnDmBtHoBfNk@bFu@|EeBpNcH", + "q`hzHwff`CljAcK", + "q`hzHkff`CljAcK", + "qeazHofg`Cn{AgE", + "qeazHcfg`Cn{AgE", + "a{kyHsvh`CvBm@", + "c{kyH}vh`CvBm@", + "kwkyHkxh`C`GsA~Fm@lx@eC", + "iwkyHaxh`CdGsAvFk@px@eC", + "{miyHs`i`CxGiAvl@uO", + "ymiyHg`i`CjIyAdk@cO", + "geeyHclj`C~IdAvH|B", + "geeyHwkj`CjJhAfHxB", + "k~xxHmdi`CsGt@", + "m~xxH}di`CoGt@", + "qhyxHmbi`CeLlBuRbB", + "mhyxH}bi`Cce@vF", + "u|rxHgk``CoJkUgGsJ", + "}yrxHqf``C{Mw[wIkM", + "mhpxHsu_`C_IgA}FT", + "mhpxHgu_`CcIgA{FV", + "exoxHup_`CgOqC", + "exoxHaq_`CgOqC", + "yieyHklj`CpCF", + "{ieyH}kj`CrCD", + "{dfyHafj`CfMyCxKo@", + "ydfyHsej`CfMyCtKo@", + "}dvxH}}f`C}Po]", + "qkvxHijg`CeJkQ", + "ibvxHe{f`CgHcN", + "qouxHq{e`CkTka@", + "m{txHetd`CkFkQkHeO", + "ueyvHuoh~B~A{B", + "qeyvHkoh~B~AwB", + "a`c{H}le`CrQ}V", + "o}b{Hwpe`C}EzG", + "{jtxHecc`C}G_[{CaL", + "gjtxHwcc`CiFqU{H{X", + "shn}Ho_b_CaGF", + "wpn}Hs`b_CbGQ", + "i~s}H}nx~BrD{D" + ], + "title": "Warszawa Zachodnia - Kraków Główny", + "link": "https://wiki.simrail.eu/en/Route/LK8" + }, + "9": { + "available": [ + "qn|}Hsco_C_AoE", + "uz|}Hqdp_CwEiPuA{C", + "oc}}H_yp_CkBqC", + "et~}Hyko_CzIwf@dB_FpCsD", + "kx|}Ho~o_CcJoY", + "cd}}Hwzp_CcByB", + "}j}}Habq_CsCyBaDq@}C\\wC`B", + "}a~}Hi`q_CkClDgBbF}I`f@", + "qp|}Hcjo_CgC_LoAyD", + "}}}}Hecq_CdDcBbCQ~Cr@nCrB", + "g~}}H}bq_CHG", + "qa~}He`q_ChBwA", + "u~}}Hccq_CgBxA", + "i~}}Hmcq_CKH", + "au|}Hsuo_CiB{G", + "gg}}Hq~p_Cq@m@", + "ck}}Hsaq_CfC`C", + "yh}}H_`q_CcAaA", + "iw|}H}|o_CkBsF" + ], + "unavailable": [], + "title": "Warszawa Wschodnia - Warszawa Praga", + "subtitle": "Warszawa Wschodnia - Gdańsk Główny", + "link": "https://wiki.simrail.eu/en/Route/LK9" + }, + "11": { + "available": [ + "_wk|HizkyBiF~K}GjLoHbK}HpIoMfKgr@jc@", + "yvk|HczkyBaGfMeGbKqHfK}HpIoMfKgr@jc@", + "khd|Hqu|yB]cB", + "iid|Hux|yBeGuZ", + "oid|Hox|yB\\bB", + "}od|Hgn}yBlEvT", + "cb}|Haj|xBy\\jk@_m@|`A", + "{{||Hur|xB{b@jt@mf@zw@", + "{ft|Hk_eyBozChmBcI`GgJzIoIlK{l@x_A", + "qhd|Hku|yBrBzMr@lN?dPq@rN{AhLmE`QcBhFkG|N", + "_gt|Hu_eyBozCfmBeJ~GeJbJkInKwo@|cA", + "oqd|Hkt}yBp@bE", + "uqd|Heu}yBe@}C", + "qg`}Hk{wxBgDjC", + "}m_}Hw{xxBmMfS}HfI", + "oqd|Hkt}yBEY", + "u|d|HkyxyB~I{SdBcFrEcQ`BkLv@_P?ePw@}NqBqM", + "cp{|H{p~xB{d@tt@", + "}t_}HkpxxB}EpHuJlJ", + "cmo|HklhyB_fAhq@", + "i|n|HixhyByO|J", + "who|H{ohyB_oAtw@", + "mm_}He{xxBfEgH", + "cv||Hm{|xB_KjP", + "mm_}He{xxBoFxI", + "oae|HupxyBon@fyA", + "kae|HmpxyBmn@fyA", + "y}d|HgwxyBqBxE", + "}}d|HmwxyBqBvE", + "_v||He{|xB{DnG", + "_t{|H{k~xBca@lo@", + "ctq|HazfyBwqAty@", + "wxq|HewfyBgmAnv@", + "m|n|HsxhyBiKvG", + "_qf|HmvuyB_eDb{H", + "ypf|HevuyB_eD`{H", + "u|d|HkyxyBc@bA", + "uyd|Hs_yyBgCdG" + ], + "unavailable": [], + "title": "Skierniewice - Łowicz Główny", + "link": "https://wiki.simrail.eu/en/Route/LK11" + }, + "12": { + "available": [ + "wkf|HwqgzBkCtJoA`KQnI`@dS", + "}bf|HktnzB|Gx]lBxNj@zHVdIA`R", + "gcf|HqjhzByBzKuBrH", + "wjf|HatgzB_@hA", + "}bf|HktnzB_@mB", + "scf|HaxnzB^nB", + "wkf|HupgzB^kA", + "ite|Hs~kzBBcR_AkRaBqMkH{_@", + "wjf|HasgzB|BiInB}J", + "ayf|HywuzBl@|`C\\xNt@hL~A`N`Mzp@", + "yxf|HywuzBl@x`C\\~Nt@fL|A~MdMtp@", + "yif|Hwtd{BkOzfIj@`tC", + "qjf|Hcmd{B{N~~Hj@htC", + "uze|Hm_bzB}Mer@wAgJqAcPy@{Y", + "uqd|Heu}yB}CcO", + "_~e|HkeizBq@dJuA~J", + "abf|H_nhzBvAaKn@gJ", + "krf|H_efzBO{KZoIdAoH`CyI", + "_xe|HqtazB}Pq|@cBiLkAgPuAsi@", + "m|d|Hqv~yBiOgx@", + "}od|Hgn}yBiEcT}DeP", + "svd|Hie~yBiDmN", + "e|d|Hqt~yByZ__B", + "wle|Hyo`zB}Lsn@", + "gbf|HenhzBOx@", + "obf|HglhzBLw@", + "ote|Hs~kzBoHfxA", + "y}e|HieizBnHixA", + "acf|HkjhzBP{@", + "wbf|HklhzBOx@", + "icf|HiihzBFa@", + "}{d|Hwt~yBOy@", + "wpf|H{iezBs@cZ" + ], + "unavailable": [], + "title": "Skierniewice - Puszcza Mariańska", + "subtitle": "Skierniewice - Łuków", + "link": "https://wiki.simrail.eu/en/Route/LK12" + }, + "14": { + "available": [ + "wtrzHu_buBvTQhGLlx@jH", + "er`zHsgftB|Xd~A", + "ckyzH{epuBp@jD", + "ckyzH{epuBiBqI", + "auuzH{heuBHL", + "wtuzHmheuBl}@lnA", + "_e~yHqajqBmI_O", + "mo~yHqqjqBqIuOwCuJkb@{dCcB}Me@gIQkIDuIViHdAcOzCw[v@uFvA}F", + "y`yzHobouBnmAljGlCxIrDhIdR`X", + "mnyzHmppuBuCyJkDoIeEoHiEyFwEqE{E}CoEmAeEI", + "k_|zH{yquBgLpE", + "sr{zHobruB~Cq@", + "ot|zH_qquBxKyE", + "yr_zHqd{rBfCd~Bl@l\\rAtnAbAjq@", + "ot|zH_qquBqExAyChB", + "gbyzHihouBboA~oGzCvJjDtH|QtW", + "kiyzHu`puBq@iD", + "sk{zHscruBdAY", + "wtrzH_`buBvTSfGLpx@lH", + "ivszH_ybuBtBtC", + "evszHiybuBtBvC", + "}jyzH_fpuBkCoLqC_JaEgJ_F_IeG}GqGyEiEuAiFQ", + "mi{zH}druBeCZ", + "qtuzHwheuBj}@lnA", + "}tuzHeieuBJL", + "or`zHuhftBH`@", + "ug|zHywquB`TuI", + "o|ozHsvauBpi@`F", + "e}ozHwvauBTB", + "g}ozHmvauBTB", + "q|ozHivauBpi@`F", + "gqnzHcoauB~dBzO", + "eqnzHmoauB|dBzO", + "_rnzHgoauBVB", + "}qnzHqoauBVB", + "gkkzHg~`uBn@F", + "segzH{gytBjc@`{Axq@~sC", + "yegzHugytBhc@`{Azq@~sC", + "gkkzHq~`uBn@F", + "sndzHsvqtBDN", + "mndzHcvqtBph@txB", + "gndzHivqtBph@txB", + "mndzHyvqtBDN", + "{dczHm|mtBDT", + "udczHw{mtBxn@|jC", + "udczHs|mtBDT", + "odczH}{mtBxn@|jC", + "itazHanitBr[zrAdDnP", + "atazHenitBp[xrAdDpP", + "utazH_pitBRx@", + "{tazHyoitBPv@", + "_r`zHwgftB~Xb~A", + "ir`zHyhftBH`@", + "gx_zHmhctBDR", + "ax_zHygctBjD`SfBtN~L~zA`AbUfA`w@", + "{w_zH}gctBhDvRjB~N|L|zAbAfUfAbw@", + "_x_zHshctBBT", + "o|}yHgwwsBF`@", + "i|}yHkwwsBF`@", + "g|}yHevwsB|BjNt@`Hb@hIHhIo@x]iFd|A", + "a|}yHivwsB|BlNv@~Gb@hIHjIm@~]kF`|A", + "{}}yHskrsB{K`bD", + "_~}yHcmrsBCl@", + "w}}yHcmrsBCn@", + "c~}yHukrsB{K`bD", + "_k~yHshmsBCx@", + "wj~yHqhmsBCv@", + "yc_zHoanrB@j@", + "{g_zHs_rrBmIk|G", + "i|~yHyefrBwCtdCpOzqEFhI]fjA", + "qc_zHc`nrBAm@", + "eq~yH}vxqBg@z~AUtHs@xG}AnHyC|HyCtEaRxUoBrDsAnD", + "eq~yHuwxqB?V", + "}p~yH}vxqB?W", + "}p~yHuwxqB\\gjAGkIqOyqEvCwdC", + "iz_zHghsqBnB_FrBmD|TuY|CkHxBwJr@{GT{Hf@u~A", + "oz_zHohsqBEL", + "oz_zH{gsqBDK", + "ee~yHgajqBmI_O", + "so~yHgqjqBqIyOyCwJkb@{dCaB_Ng@iIOkIDyIVgHdAsOxCi[x@wFvA}F", + "qk|yHm|{pBJsiDQyM", + "_s|yHawzpBR{@", + "wk|yHm|{pBHsiDOwM", + "yr|yH{vzpBR{@", + "ugbzH{pkpBzMoo@|A{Jr@}HzIoqA~YivB", + "}gbzH_qkpBlM}m@jBmL`AqKlI{nA~YivB", + "ol_zHiz_sBr`@okL", + "ck~yHyfmsBq`@lkL", + "kn`zH_atpB~BoLtDkJ", + "sn`zHcatpB`CsLtDkJ", + "_a`zHw_upB|{@q`B", + "ea`zH_`upB~{@q`B", + "e~|yH{}ypBlEiJ|CuL", + "i~|yHc~ypBjEgJ|CuL", + "er|yHwxzpBpBaJr@cF`@uFJyH", + "kr|yH}xzpBnB}Ir@cF`@uFLwH", + "um|yHewbqBqDe}A}Acc@", + "}m|yH_vbqBuDazAgBck@", + "_b}yHi`hqBuIcPwJi[qKyR", + "eb}yH_`hqBwIgP_HoUaBiEeKeR", + "ua_zHkulrBfF|sC{@ry@", + "a|~yH{efrBz@sy@gF}sC", + "mi{zHmdruBpAO", + "md{zH}eruBs@J", + "ov|yHg}fqBc@uGy@sF", + "my|yHqmgqBkBmHeDiH", + "e||yHqtgqBkAeDsBgE", + "srszHitbuBvGxIfElDtEhBdG`@", + "orszHqtbuBtGvIdElDxEhB`G`@", + "wikzHi~`uBdHfAhCfAdCfBrEvFjFpL", + "wikzH_~`uB`ItAnF`DtBzBlBvCxEpK", + "ubyzHyiouBLn@", + "kiyzHu`puBtEzU", + "{v|yHe}fqB_AwKiBsI", + "ev|yHoyfqBIwB", + "gr{zHs`ruBtCgA", + "qm{zH{bruB|@W", + "gr{zHs`ruBcLvE", + "}k{zH}cruBu@H", + "af{zHqeruBkBR", + "ajjzHga`uBhaAvcChIjW", + "m}gzHcd{tBHV", + "gjjzHaa`uB|f@zoAjY|r@hIhW", + "s}gzH}c{tBHV", + "i}gzHec{tBdVvy@", + "c}gzHkc{tBdVty@", + "}egzHuhytBHX", + "cfgzHmhytBHV", + "a}~yHux|sBr@p]t@vL~@zIfZfiB", + "y|~yHux|sBp@n]v@tL|@xIfZhiB", + "{|~yH{y|sB@d@", + "c}~yH{y|sB@d@", + "kr_zHq~zrBm@sg@BmRdF_~A", + "ol_zHsy_sB?U", + "wl_zHuy_sBaFb{AGtRf@hd@", + "ul_zHkz_sBAT", + "sc_zHqanrBwAkw@@yXq@{j@", + "kh_zH{errBx@dq@?vXvAlw@", + "oa_zHcvlrBaA_i@", + "ma_zHmulrBAU", + "wc_zHc`nrB`A`i@", + "ua_zHavlrB?T", + "wk|yHqvaqB}@s_@", + "_l|yHovaqB}@o^", + "wk|yH{uaqB?U", + "}k|yHyuaqBAU", + "sc~yH_bxpBld@{z@", + "ad~yHiaxpBLU", + "wc~yHgbxpBld@{z@", + "ed~yHqaxpBLU", + "{d`zHcztpB`ByC", + "ya`zH}~tpBRa@", + "ud`zH{ytpB~AyC", + "ua`zHu~tpBTa@", + "ewbzHy}ipBnNar@", + "qwbzHc~ipBrN{q@", + "qiyzHo`puBvG~\\", + "ir_zH_}zrBAq@", + "i_{zHwfruBcDX", + "i_{zHifruBqFj@", + "{_}zH{jquBqTjN" + ], + "unavailable": [], + "title": "Łódź Kaliska - Sędzice", + "subtitle": "Łódź Kaliska - Tuplice", + "link": "https://wiki.simrail.eu/en/Route/LK14" + }, + "15": { + "available": [ + "sn|zH}qquByA|@", + "op|zH{oquBjDoBxJcE", + "s}}zH{spuBc@V", + "ydl{H_pouB_A{@", + "_o}|HwewxB`PhlA", + "}}e|HmrhwBj@lA", + "{ty{Hy_qvBfCha@PhIA`H_JfqDGvKP|Ej@`G|BtK`BhExB|DfGlG", + "udy{HgygvBnEfEdCfEhCxGlBpIv@tHV~Hy@r]L`Kn@rH|@jFpAxEbBbEfDrFnVhWpGrCvObAzF~AxClBvC|CpCpEjBxE", + "c}{|H_f|xB@R", + "a}{|Hke|xBFhM", + "iua{HcanuBg@Z", + "aj||Hyk}xBvDzIhBbGlAhHl@nH", + "mj||Hol}xBJT", + "er{zHg`ruBrAi@", + "or{zHsaruBzCu@", + "km}|H_rxxBGX", + "qax|H_aqxBTP", + "qrn|H{j|wBnRlx@~@fJt@vUfAfJvBhIxFvN", + "}|{|Hqu{xB]|Fk@zEaAxEuAnEwBtEg^zp@sBbFwAvF", + "cqs|HumlxBpr@v|C", + "srq|HiwexB?n@", + "_mq|HgodxBDT", + "mqs|HqnlxBHZ", + "srq|HyuexBAzIThG`AhI|A`H", + "y|{|Haw{xBCn@", + "_c}|Hmv`yBNjM`@|H`G`l@`BtIjB~GnGzO", + "ce}|H}_cyBbAnhA", + "ee}|HaccyB@bB", + "wb~|HgqgyBzXh~Ap@tG`@lH`@v[", + "af`}HahoyBlk@hbD", + "kfy{HwzgvBt@n@", + "k}q|HiogxBfFlU`AfGl@vJ?pL", + "q}q|H}ogxBDR", + "q|e|H_phwB~DjIxDxF`EdDtG|B", + "qmm|HcjxwBLX", + "cmm|HiixwBjm@pzAzDxIh{A`hCbFdKtC|I~AfHv]xtB", + "g{b|HyvfwBbCpEfBrEfApE`AfGb@xFtHtxAtBtOzCvL|BjGlEfIds@pbAnCjFjCdHpk@b`CtBpOrAjZf@pFdB|IrBfGjEhHjE|D|YzL", + "_be|HutgwBNB", + "w~}zHcspuBcWnO", + "od`{HicouBc\\jS", + "s}_{HchouBWN", + "qxu{Hs}avBHZ", + "oau{H}r~uBhBzN`A`FlHvShAlEvFdc@jAtGvIhZrF`Z|AvEtBhEfClDnCdC`DdBlDz@fDRrCQtKyChD]bEPrD|@|D|BxElF~BlEtFhOnCjKlAxKhAh~@x@`QnBvUlBpK|CdJ`E`H`FdF", + "cr|{HeowvBJD", + "o}}zHospuBc@X", + "oaa{HqnnuBb\\mS", + "ova{H{_nuBf@[", + "}xa{Hq~muBeHvDy}@rZmHpAwH@qFu@wFoBkoAyp@mYaQmHuCwHmAgTcAqHVsh@hFiGQmGcB", + "g~_{HggouBTQ", + "oh_{HevouBzWuO", + "k{}zH_upuBxBiAnH}BdVeO", + "q_}zHafquB_NlI{GvB_ClA", + "_gl{HuqouB`A~@", + "uzk{HchouBfG`BnGTbh@iF`IWfSz@lHdAvIbDhY|PloA|p@xFnBrFv@vHAnHsAb|@yY|IsE", + "ynn{HouquBYW", + "ibo{HggruB}QwP", + "{uo{HqyruBRP", + "wng|HublwBbGv\\fGlU`HvQjVhh@", + "_og|HuclwBF^", + "{`x|Hm`qxBpzBboBbFpGfCpEhDlIdBdG", + "ko||H}usxBLL", + "yh||HuosxBj[hXjI~FhKbF~RdG", + "sl|zHisquB`LsF", + "sm}|HeqxxBaA~G]vFInHPnG", + "gz||HyitxBdDxJtD`G", + "mxl{HacpuBs`@i^", + "}}||HmxtxBtBrM", + "emo|Hyw~wBrY|kA", + "ylq|HqndxBr~@vuD", + "oae|HqtgwBnBd@", + "_~d|HksgwBbo@zN", + "_`z{HkusvBbJptA", + "wq|{H_owvBzIdEtH~G~o@z_A|CbHbBpGhAjIx@nL", + "gxu{Hw|avBrB`JrBfP", + "_qu{Hm`avBnNnlA", + "akn{H{qquBwBsB", + "i_|zHoyquBbLwE", + "ool{HczouBuFwF", + "q_|zH}zquBhKkE", + "}n||HousxBbExD", + "waz|Ha_rxBrj@nPnH|C`JrF", + "{mc|HocgwBl@L", + "mlc|HacgwBrEhApBdAlBbBpBrC", + "oun{Hu{quByKqJ", + "snl{HgyouBnDrD", + "qm{zHmbruBvA]", + "qo{zHqaruB~@[", + "ewl{H{apuBg@e@", + "snl{HgyouBxFjF", + "_gl{HuqouBcA}@", + "son{HgvquBqBgB", + "esn{HoyquBiAeA", + "szk{HohouBkDkByCcC", + "}dl{HuoouBhDnC|C`B", + "sn|zH}qquB~@k@", + "sm{zHicruBt@S", + "}k{zH}cruBnA_@", + "mq|zH_pquByCjB", + "ool{HczouBZZ", + "azm{HkbquB_PoN", + "eh`}HqnoyBbAnE", + "sy~|HwdjyBzUnrA", + "o}}zHospuBbAo@", + "m{}zHmupuBeAp@", + "{o}|HujwxBZ|C", + "kp}|HmnwxBNvB", + "sh_{HqvouB_TlM", + "q}_{HygouB`TkM", + "qva{Hg`nuBkAt@", + "yxa{Hg~muBhAs@", + "gua{Hw`nuBvRyL", + "saa{H}nnuBuRxL", + "k~_{HsgouBcEhC", + "kd`{H_couBbEgC", + "gs{zHiaruBVI", + "{v~zHsbpuBwP`K", + "so~zH{fpuB~OyJ", + "gv|zHslquBiHpE", + "{v|zHmkquBjEmC" + ], + "unavailable": [], + "title": "Bednary - Łódź Kaliska", + "link": "https://wiki.simrail.eu/en/Route/LK15" + }, + "16": { + "available": [ + "wlg{Ho{vuB}b@|^aGbH_EpH}`@z~@", + "u}p{HylauB`AhIj@dKJhI?bX[`IeAxO}CfT", + "kqm|H_dktB{^fm@cEhF}FxEa}AtcAoE|Eqq@b{@", + "ajs}Hit`uBNZ", + "wlg{Ho{vuBXW", + "ajs}Hit`uBqh@_kA", + "_po{H{yquB}OfM}DdFaD`G", + "myl{HocpuBqn@_k@", + "_pq{HeokuBBp@", + "my`{Hy~_vBFA", + "{x`{H__`vB|DaBvCkBfDwClDmE", + "q{~{HoirtBy@I", + "kn~{HagrtBcBS", + "k}~{HyirtBi{AuOaGW{Ir@qz@tO", + "oq~{HugrtBaIy@", + "{np{H}vpuBwThi@kCxJiBtLaAtOmBxp@@hJv@bU", + "inp{H_xpuBQ`@", + "{nn{H_uquBYY", + "iat{Hc~ztBUH", + "oc`{Hsp`vBJO", + "cc`{Hcq`vBjDgG`DgIfLsd@", + "mqe{HqczuBJK", + "aqe{H}czuBxJ_LxHkN", + "wlj{HgrruB}`@~~@wDbHwDzDeE|BgE|@}E?", + "wzf{HorwuBtCkIjIy^jDiKpF_KhLqM", + "mcc{H}d_vBzTePfIgDtH}@`U^bIoA", + "ey`{H{~_vBHC", + "ot}zHepevBrFuLvA{E", + "wt}zHyoevBFK", + "snu{HmsztBoRxCqGtC}DxC}DnEoDvFeDrHkExLaFvO{AvHu@rFcL~uA{AlMkB|IoBnGiD|HgCdEkH~HsCpBqEpB}iAdW", + "ehd|H}hrtBQD", + "i_g|HspqtBoQtDwGnC_dBxqAqD`D_FnF{HzKyy@jtA", + "ypm|HydktBQX", + "cu~|H_fftB}RiPiFeFi~CsqDmJiNc`Ae|A", + "md}|HqzdtB[]", + "izh}HatrtBS]", + "g|f}Hs}otBS[", + "{|f}Ho~otBqo@sdA{K}N", + "{ci}H}_stB_n@}x@", + "y|j}HgfutBX`@", + "myl}H_qwtBr{@viA", + "czl}HyqwtBTX", + "qis}Hms`uBzN~[lC|E~Z~_@", + "sst}Hi`cuBEG", + "mkn{HyqquBiAeA", + "}kg{Hg|vuBvGaHlCgE~B}E", + "mk_{HgibvBnCuKrDyJpk@amA", + "ciw}HmvbuB_CpLmCtK", + "cj}zHwdfvBr@gEl@wG", + "ewl{H{apuBgAs@", + "gyq}Hon~tBLP", + "yxq}H}m~tBtIlK|CtEzkA~uBdaA~pA", + "}gu}Hq_duBmCwCkDyBoDgAyDUuDZmDlA}CtB_DfD", + "anu{HqsztBQB", + "_bt{Hy}ztBkE`Aud@dG", + "ipw|HadbtBkmApAwIc@", + "miz|HsbbtBuIoC_HaFifAkkA", + "wmn{H_tquBc@_@", + "{rj}H{yttBcHiJ", + "}zh}H_urtB}G}I", + "mvs|H{_etBet@j~@", + "ijv|H{fbtBqHx@m[^", + "mde|HeartB{y@pO", + "whd|HwhrtBuZpF", + "gg}{Hm`rtBcf@sE", + "gd}{Ha`rtB_BK", + "ev{{HajrtBg]nHyF`@_GQ", + "es{{H_krtB_B\\", + "{aq{Hwb~tBwCbO{HrU_ErIgFdHkD~CuD`Cow@~_@", + "ear{HsjduB`DzPxA`GbUzq@rAbFzAzH", + "wd}zHkcgvBzC_`@", + "{_}zHkdhvB|D}f@vAcL", + "m{d{Hi`{uBlB}EfBcG|Ti`A", + "}hw}HcwbuBET", + "kyw}HugauBgAvD", + "qqw}He|auBgCbKqBjG", + "{oq{HsmkuBn@bUWlOiN|mB", + "m~q{HcxfuBUxC", + "ucr{H_reuBa@~IBhH`@zGjAdI", + "uon{HyuquB][", + "ag}zHwsfvBhAsN", + "}kp{Hk|puBkAjC", + "qml{Hk}ouBoCk@cDcB", + "k~v}H_pcuB{DbJuCvL", + "_in{HooquBmAiA", + "ie}|Ho{dtByFwFwf@qa@", + "{t~|HyeftBGE", + "y~c{Hup}uBnFwTtCiIhEgIzG}H", + "sku|Ho`ctBsBhC", + "eaj{H_hsuBqJvT", + "u`j{H_isuBO^", + "yst}Hq`cuBwFeK", + "q{t}HwlcuBkKyQ", + "crv}Hy~cuBgKxM", + "spn{HuvquBsEiDiGqAiGTcG~B", + "c_r{HisfuBqCh`@", + "gou|He|btBwF`HmEtDmE~BmEpA" + ], + "unavailable": [], + "title": "Łódź Widzew - Kutno", + "link": "https://wiki.simrail.eu/en/Route/LK16" + }, + "17": { + "available": [ + "kx}zHqq_vBrEecB", + "uy{zHgunvB|Jgv@lAcH~AwGnDeKjSge@poAgmD`EmOrVogApBeN|@{M", + "ylvzHohjwBx@|yCOvMmAdQyJlq@w@vJYzJv@foD", + "cbzzHsh~wBwa@eV", + "izvzHir|vB{@slDTaKp@wJfKys@~@mLTqHDkNy@i}C", + "}zvzHev{vB}@~MoB`NuVngAaElOooAdmDkSde@oDfK_BxGmAbH}PzqA", + "qzvzHir|vB@lA", + "gzvzH{o|vBAmA", + "_qyzH_}}wBio@s^yKgH", + "wh}zHubfvB_Ch\\iAj`@", + "yn}zH}cdvB`Ay]xAkU", + "wk|zHmalvB`Kew@", + "ui}zHszevBpAmP", + "oq}zHu}bvB_Cbt@aB~u@", + "aowzHmz{wBaAsIaBuH_CqGeDsF", + "ynwzHqz{wBaAuI_BqHcC{GeDsF", + "iu|zHidjvBfBgU", + "_w|zH{zivByOtpB", + "qx}zHqq_vB_F~hB", + "u_~zHg_|uBhFiqB", + "ao}zH_ddvBmAhe@", + "wq}zHwubvB|Aem@", + "}i}zHcyevBFo@", + "oh}zHedfvBGn@", + "qu|zHybjvBFo@", + "aq|zHsbkvB}Dvf@", + "mwxzHsp}wBcVqJ{EeC", + "koxzH{k}wBsVeJ_I}D", + "emxzHgk}wBgIkD", + "khwzHeqzwBuEgh@", + "ygwzHkozwB_Fej@", + "cqvzHqbnwBYwTL}G`@cIbBqO`Jwj@x@iJ^kJ@{Le@kMiF}l@", + "ipvzH}ymwBk@cYFoIZkIl@iH~@mH`Jyj@z@mJ\\gJBcMe@eMmFsm@", + "_pvzH{tmwBIaD", + "cqvzHqbnwBp@|V", + "qovzHsjmwB|@`_@N|h@", + "{lvzHgbkwBQij@{@a\\", + "cmvzHs`kwBHbW", + "slvzHgqjwBAcD", + "cg}zHalfvBFo@", + "yg}zHeifvBU~C", + "q_~zHqg|uBcAp_@iB`V", + "mc~zHuwzuBz@gLz@iY", + "mkxzHij}wBw@]", + "wlvzH}wjwBCiI", + "ulvzHkvjwBAq@", + "iovzHsjmwBQuG", + "ar|zHqzjvBhCc[", + "_n|zHyvkvBaBdS", + "u_|zHsymvB~DsZ", + "{_|zHwymvBcKdw@", + "{ovzHismwBCq@", + "{f~zHatyuB\\oPnAcQ", + "_e~zH}ozuBu@tK]`N", + "_l|zHqalvB_AvI", + "wm|zHuvkvB~@wI", + "{f}zHqmfvBhPgtB", + "ozvzH{o|vBBvKQ|K", + "uzvzHav{vBNmIAkN", + "k}wzH}~|wBeFyEyIcE", + "e}wzHi_}wBsEmEsFqC", + "{gvzHqhtwBo_@sgE", + "wgvzHcitwBa_@geE", + "muyzHk`~wBuKgG" + ], + "unavailable": [], + "title": "Łódź Fabryczna - Koluszki", + "link": "https://wiki.simrail.eu/en/Route/LK17" + }, + "18": { + "available": [ + "wyx}Hk`~tBs_@l|B", + "aq|}HafstBUZ", + "szz}H}evtBaGn\\qB|GiBhEcDvFka@jj@", + "kzz}H}fvtBG^", + "gq|}HkfstBSZ", + "qzz}HcgvtBG^", + "yzz}HcfvtBsFb[oBdHwBlFcDpFma@lj@", + "oyx}Hg`~tB_a@xaC", + "ksw}H{}auBgH~Y", + "wdz}H}zxtBsSfnA", + "odz}H{zxtBuShnA", + "qlw}HmnbuBoBjF", + "csw}Hs}auBsJpa@", + "a`x}H_w`uBiF|S", + "kgx}Hab`uBsBxI{AnI", + "{q|}HoestBomBbjCmG`KcFtLwkBboFkRpb@", + "wq|}HeestBkmB`jCmG~JcFtLykBdoFuOx]", + "emd~HmqetBwk@vnA", + "apd~H}letBmi@fjA", + "akw}HkrbuBo@|B", + "kzy}H}bztBsBbM", + "ufx}H{d`uBeCfKcBbJ", + "{mx}Hwl_uB}Fn]", + "o{y}Hm}ytB_Hpa@", + "_~y}HytytBwEzX", + "apw}HagbuBiBdH", + "s|w}H{bauBaI~\\", + "_nx}Hom_uBmBfL", + "mqx}Hg`_uB{A|I", + "itx}Hiu~tBmD|S", + "yux}Hgn~tBuB~L", + "eyz}HqkvtBe@rC", + "kyz}HukvtBe@pC", + "qlw}HmnbuBqExO", + "w~w}Ha{`uBi@`C" + ], + "unavailable": [], + "title": "Kutno - Ostrowy", + "subtitle": "Kutno - Piła Główna", + "link": "https://wiki.simrail.eu/en/Route/LK18" + }, + "19": { + "available": [ + "a|o}Hikh~BcD_CaEmA}EC}DfA", + "qzq}Hcxg~BaLtDcGd@kHy@gDsAyCoBqCsCeCoDeEsJeCoKwBsQ", + "{go}Hu{f~BcFqTeCaJ}AiEyByDkE}D}DwA_FOyEjA", + "wpq}Hg|g~BmShHsEx@kDFkD]eHiCwCyBmCyC_CqDuBqEeBsFiAeFeCgS", + "qgq}H_ah~BeHvC", + "ugq}Hiah~BcHtC", + "azs}Hani~B_JyxA", + "izs}H}mi~BaJyxA", + "}|p}H{hh~BsIzF", + "ctp}Hsoh~BqRhM", + "k}n}Hoye~BoIea@", + "{no}H{qg~BwEoOgBcDeByB", + "qft}H{ql~BqA_T", + "ugt}Hu}l~Bs@kL", + "cit}H{fm~BEeC", + "aet}H{gl~BsAyT", + "ket}Hwgl~Be@cI", + "atp}Hgoh~B{GjE", + "ypq}Hs|g~BwHnC" + ], + "unavailable": [], + "title": "Warszawa Główna Towarowa - Józefinów", + "link": "https://wiki.simrail.eu/en/Route/LK19" + }, + "25": { + "available": [ + "ktuzH_`uuBp@}@", + "yruzH}auuB|DyF~BqF~AiGzBgM", + "y~tzHwsvuBfCyOn@wI@iLu@mKiAiGmBoG_R}`@uBoF{BeKy@kKIiGJgG|AwSxBob@pAoWTeMp@qM", + "mvwzHknsuBjEgB", + "sywzHemsuBdBe@", + "{v|zHmkquBzXuVjE{C", + "gnyzH}asuBbGsA", + "yl{zHumruBdJyDxa@gHpOeD", + "k{xzH_gsuBnI_@", + "}mwzHyrsuBxO}FlMcG", + "_buzH{gvuBdB{J", + "wnvzHgctuByLzFmPdG", + "sywzHqmsuBgVdD", + "cpwzH_rsuBgEdB", + "apwzHsqsuBbAe@", + "asuzHibuuBs@|@", + "a_uzH{svuBcBzJ", + "_nwzHessuBcAd@", + "kvwzHynsuBgBf@", + "squzHux~uBsCne@}D|w@a@xODbK~@lLtBtJjB~ElRpa@nBtGfAnGr@lKCxKu@lJaCzN", + "ebuzH_hvuB_ChM{AvFeCzFyDvF", + "wv{zHmhruBmE|CaXzU", + "uh{zHqpruBpHmDfEoAnv@{L", + "cfyzHqdsuBjCe@", + "uq{zH{jruBhB}@", + "kn{zHylruBp@[", + "uh{zHqpruBuDhB", + "kn{zHgmruBgEpB", + "wayzHwesuBjEg@", + "{pxzHkhsuBoO~@", + "st{zHuiruBcAf@", + "sv{zH_hruB`Ag@", + "utuzHk`uuBiQdUwF|E", + "unvzH{btuB|FaFjQaU", + "{pxzH_hsuBlE]xOgC", + "qt{zHgiruBzAs@", + "squzHux~uBgGdhA", + "y`vzHqkqwBp@eJVqKGiI[kI_O}bB_AgQGwKR_Lx@eM~AoM", + "_yuzHuh|uBpDos@TeMp@qM", + "grvzHg`svBaCyQmH{ZwA{Iw@cKs@cOSqJC{L", + "yeuzH{z{wBhq@{bCjBcIfB_JtBuN|P}dBhBuNjCoL~BkHpCmGpEoI", + "s`vzHokqwBbAoQDmIOkIe@kIuNs_By@mQAkMb@qMv@sJvBoP", + "}euzHwy{wBJ_@", + "qeuzHwz{wBdq@{bClBcIfB_JtBwN~P}dBhBqNhCoLrAiEzDmJhEaI", + "efuzH{y{wBJ_@", + "uhvzHeuxwBxBgOtCuN~XwcA", + "}yvzHir|vB@lA", + "syvzH{o|vBAmA", + "ufuzHsugvBc@yJy@ci@m@eQsHanAgEuk@", + "qjvzH}kxwBzCkT`DuPtYweA", + "ofwzHedwvBTuQdIadB", + "y{vzH}{zvBiIdeBUpP", + "_lvzHcnjwB]wcAeBep@", + "uovzHwymwBpAzh@Tnv@", + "ukvzHs_iwBh@htBOjLsAnQoJno@s@~Ha@hLv@hoD", + "uyvzHir|vBw@ooDVgIn@cI~Jcr@pAmQLsNi@grB", + "a|uzHy_nvBbFdr@jHblAv@rTv@rg@|@bQ", + "}zuzHoymvBiVweD", + "{fwzHoovvBRnVf@|L|@|M`BhKbHxYhCnR", + "gmvzHsyowBiA|Jk@zKIxJPjK", + "mpvzHuhnwBQkKH{Jl@qLdA_J", + "mlvzHkxjwBDzJ", + "okvzHs_iwBK_a@", + "elvzH{cjwB?lA", + "glvzHoljwB@rG", + "y`vzHqkqwBeAjIgIpf@", + "amvzHoyowBfIof@dAoI", + "civzHksxwBLy@", + "_lvzHqljwB?q@", + "_auzH{ifvB~Dhi@TdMKfLyAz[qIv_AoAnRsCbj@mAdN", + "equzH}y~uBfA{LpC_j@pAqRhIc~@`Bq]LgLSeLcDad@", + "cfuzHcogvBbDfd@", + "w_uzHqcfvB}Eaq@", + "qrvzHo`svBnUt_D", + "s{vzH}{zvB`AcVAy[", + "{yvzH{o|vB?`]}@zT", + "elvzHmajwBNx`@", + "{kvzHsajwBC}I", + "cpvzHadnwBIsC", + "upvzHshnwBHpC", + "kpvzHadnwBPvG", + "mlvzHsdxwBhBwM", + "}jvzHijxwBJs@", + "yfwzHedwvBAtS", + "sfwzHoovvB@uK", + "qfwzHe|vvB@_G", + "yovzHi{mwBBp@" + ], + "unavailable": [], + "title": "Łódź Kaliska - Mikołajów", + "subtitle": "Łódź Kaliska - Dębica", + "link": "https://wiki.simrail.eu/en/Route/LK25" + }, + "33": { + "available": [ + "{{w}H_fauBgNdl@_G|\\", + "gq{}Hm|ytBm@cA", + "ezw}HijauBu@hC", + "gnz}Hi_ytBcF^qEeAwC_CuEiH", + "}a|}HguztBqGoKaEyFqDmDyH{F", + "c}y}HmyytBKr@", + "o}y}HywytBoAbGsAnDmBzCuBlB", + "csx}H{z~tB{EhY", + "_zx}Hq`~tBcb@bfC", + "kg{}HymytB{HsM", + "ur{}Hq~ytBgNuU", + "wiz}H{aytBoCpA", + "}_}}H{v{tBcLkI" + ], + "unavailable": [], + "title": "Kutno - Florek", + "subtitle": "Kutno - Brodnica", + "link": "https://wiki.simrail.eu/en/Route/LK33" + }, + "45": { + "available": [ + "ks}}Hshs_Cf@yC", + "yh}}Hort_CiH`d@", + "gr}}H}ms_ClHsd@", + "ub}}Hksp_CeJg\\cDiP_@mEo@mPL}Fp@iF", + "m~|}H_np_CsJ}_@wDeJuAeGc@gEo@oPJsFj@}E", + "os}}Hais_Cf@{C" + ], + "unavailable": [], + "title": "Warszawa Wschodnia - Warszawa Grochów", + "link": "https://wiki.simrail.eu/en/Route/LK45" + }, + "46": { + "available": ["oev}Hyx}~BoBuOgByJ", "glv}Hiu~~BcAcG", "uav}Hef}~ByBsQ"], + "unavailable": [ + "k`v}Ha`}~Bi@cE", + "k`v}Ha`}~BnFbb@", + "cnu}Hsyy~Be@uD", + "glv}Hiu~~BcAcG", + "qpu}Huez~BiBcZ", + "{su}Hy`{~Bs@gK", + "iou}Hi_z~Bg@kE", + "evu}H_q{~BuA}J", + "ouu}Ham{~BU}B" + ], + "title": "Warszawa Zachodnia - Warszawa Czyste (track 201, 2S)" + }, + "62": { + "available": [ + "oprrH{rexBpPmdAfMyrA~EkdAz@aLxBsSj@uIxAgy@", + "{yfrHmy`wBEl@", + "azfrH_x`wBkA|N_AnHsSzjA", + "ywgrHk||vBGd@", + "gv{qHy}rvBwy@eo@{GqD}GeBcIa@_Ir@uU`G{c@tQ}GfAoFH{qAkOcGiBw`@uO}E_C", + "}{lrHyokwBDT", + "w{lrHcokwBfc@zpCrDhNbElJ`ElGxDdEjPnLbzApn@|EvCbC`CdCfDbE~IrCnLr@bG\\|F", + "oprrH{rexBiGl`@kJhx@kJnj@a@hFK~EDnFZlFnAtIrBfHfBzDrH`MbBpEjArEx@jFd@rFj@v]vAvPxBtLnLtb@nBfG~ClHnd@fy@", + "_rzqHctusBaAgB", + "sqxqHagbtBMaJDaHzBo\\N_HYsLe@{EeAkGq^mxAqCgIiCaEmDkDgTcKkDcC", + "_~_rHuwwtBPkc@pEwmDxM}}CGqJoAwU@sH^{Gv@aGbAqErBgG", + "ci{qHuciuBx@aC", + "{}zqH{_gvB}@wNCaHLqF`LewA", + "gmxqHm}ysBG[", + "gb_rHmueuB|GcQxKsQfQaXtBaCtDoC", + "_d{qHywvsB|Nl_@", + "_d{qHywvsBm[ux@qC_G", + "{p}qH_zktBk]sj@uFiHmGaFsFgC{TaF", + "{|_rHiantBGC", + "}x`rHcjntB[G", + "qzzqHi~htBcEqFcVsa@", + "c}_rHmantByZuG", + "yy`rHkjntBoHkBmFeDaCiCsB_DyC{HkB_Jg@{FQwFJ}Jn@}Gj@iD", + "iqarHarqtBdg@cjC", + "_~_rHuwwtBfFwoEzMg`DEuJmAuU?sH`@}GbAiHxA}FfCeH", + "ouarHkeqtBJ_@", + "ci`rHe}utB`@uB", + "wprrH_sexBrPmdAtLwoApF_hAx@oKzBqSj@wIvAey@", + "izfrHax`wBkA|N}@lHaRjdAkEx[", + "axgrHo||vBGf@", + "czfrHqy`wBEn@", + "_|lrH_okwBtb@xnClDrNnBlFbC~EhDfF|DjE|ObLfzAvn@xFjDpCvC~BhD~DlJfCnLbAbM", + "uferH}`uvBxE~Bz`@vObGhBzqAjOlFGjHmAtc@qQdTqFzH_AdIRrGvAjGtC|{@vp@", + "c|lrHuokwBBT", + "wcnrH_mxwBj@`@", + "{cnrHslxwBl@`@", + "cvmrHktuwBgYxaAcCvKqAlJu@zLMlJTbL", + "womrHosvwB}AvRsA`IwGxV_Qhk@uCtM_AnHu@|KOjKR`L", + "ocsrHqp_xBfF`JxAfEhAzElA~Kd@r[^dHp@bHlChOhLza@lCjI`CjFnd@hy@", + "yrsrHekxxBgE~EqXd`@iD~CaEtB}Cr@}BN{Gk@}CiAgCaBaF{FgCiFwAoEsAaHq@iHMaKdBu`@AmNu@}M{Emb@a@oK?{J", + "ursrHyjxxBeEzEuXh`@iD~CyC`ByGrAcDAeDe@}CkAgCaBeF}FgCiFmBkGkAcHg@cGGyL|Aq[D{Nw@gPiDwXs@wHa@uK?wJ", + "_m}qHktktBS]", + "{kzqHgdlvBfEwd@", + "ezzqH}}htBKK", + "urzqHoxjvB_LdwAObHBrF|@vN", + "ii{qH{ciuBv@aC", + "gxyqH_{usB_FdGkB~AaBn@}AJgBUsAq@oB}B", + "gmxqHm}ysBxDnUb@~GFhGQzHw@tHmAxGgBjF", + "yw{qHohjtBmD{FcEeEqC_BwV}J{EeEaEcG", + "sl}qHysktBKQ", + "avxqHudwsBaGdJcYn]", + "qg{qH}giuBhSom@vAiG~@uGh@_HPiHJkaA", + "ig{qHwgiuBhSom@tAiG`AuGh@eHPiHJiaA", + "}pvrH{}|xBh@}NMkJaAwJsB_JqCsGyEkGqFkD_FiA", + "eqvrH}}|xBh@}NUiLwAgLuCqJiBoDgBgCsFsEaCeAeDq@qGA", + "olxqH}_~sBcDcfC", + "c~|qHcbhuBnRjAzDc@zDyApEkDzCcEdCmF|DgL", + "e~|qHuahuBrRhAzDe@`E{AnDkCzDcFdCoF|DgL", + "g`_rHayeuBvDyJfBiDdYuc@~FqG", + "oxgrHmz|vBgM~aAi@bIKxH", + "mhhrHoczvBJ`Fb@jGfC~O", + "igxqHshvuBt@{R`@ulA", + "{p}qHy{guBrCeBjCaAxCa@|C?", + "eyarH}zptBtBmI", + "au}qHmwguBrD_DlDiBvDw@`EE", + "anxqH{qwsB_GdL", + "omxqHi~ysB}BgO]iGE_Gd@gK`DgTp@wIDkF}@ml@", + "sm}qHiuktBgBuC", + "ah`rH{`vtBrD}RbA{Hn@uIXiM", + "wmxqHyguuBnCiP|@oN", + "skxqHmnuuBrAqIp@uJ", + "esxqHsttuBlDeR", + "_sxqHmttuBjF_Y", + "}iyqHgdruBvUkoA", + "wiyqHcdruBvUioA", + "qdxqHmwyuBk@gO{A_M", + "mgxqHudvuBnA}YRqnA", + "qhxqHyuzuBcDqQeAaE_BwE{GsOcBqFaBgIyAaM", + "yhxqHuuzuBoCqOwA{F{AsE_H{OcBoFcBkIwAaM", + "{pzqH{bkvBx@aK", + "__zqHcynvBoAjPqCrYaGdu@", + "iv{qHo}rvBf\\tYhDhEjC|EzDbLpGx[dAlI^jI", + "g~yqHy_pvBiAiJ_GgZoBcH{BsFkCsEsCiDi\\wY", + "ubhrHacyvB`F|X|AlGlLd[bItQ", + "o~frHymvvBaIgQsNq_@eBsGyDeT", + "sferHgauvBqj@c[_EgEiEeI", + "cagrHyqvvBfFjKhBfCfCdCrj@`[", + "ehhrHqczvBHsHj@cIfM_bA", + "ixgrHg{|vBEX", + "gxgrHiz|vBD[", + "awfrHc`bwBHpGGlEcBpV", + "yvfrHe`bwBH~EG`GcBtV", + "w`nrHwxnwB~Kxj@dBvFhKjWdBlH|CtR", + "q`nrH{xnwBfLlk@`BfFxHzQbBfFnAtFzCpR", + "oxnrH}rqwBr@`KhAhIxRxbA", + "mtnrHa}pwBzRdcA", + "krvrH}n|xBd@_N", + "crvrH}n|xBd@}M", + "a_rrHkmwxBs@cEoAsEyC_H{DeF}EeDkFyAsFGiFdAuFdD", + "i_rrHgmwxBkBaJsCeHuDmFyFeEkFwAqFIkFdAqFdD", + "i}qrH_hsxB}@_Lk@u]DaJdB{x@I_Iw@sI", + "c}qrHahsxB{@_Lk@s]DmHfBqz@KeIw@oI", + "a`qrHexoxB?oMcAqLmBiI}HuRsBoHuAaImFea@", + "y_qrHcxoxB?sMS_Eo@uFmBiIeH_QkCeJwA_ImFca@", + "ufnrHmnxwBxAx@", + "qfnrHwnxwBxAv@", + "eqprHe}xwBdC~D~CjDnCjBrDtAvCb@dEAxLkC", + "_qprHo}xwBhDlFhChCtD|BdEhA|CRbDQvP}D", + "a_orHqqxwB`Fg@vDDrDf@`ErA", + "u_orHkqxwBRE", + "__orHeqxwBdGi@zGb@", + "u_orH_qxwBTE", + "}tgrHwi}vB{AjL", + "wtgrHsj}vBEZ", + "isgrHiq}vBm@tE", + "asgrHur}vBGj@", + "wprrH_sexBuFt]_K`{@eH~`@", + "smsrHgvaxBqAdJ]`HAjH^jH~@~G~ApG`BbErC~E", + "ceorHaoxwBlD}@", + "}mnrHkqxwBfF|A", + "mbnrHqkxwBvDzDnCrEtBvFvApG", + "wqmrHwnwwBp@lFRpDDhESxF", + "_pmrHssvwB}ArReBrJ", + "kbnrH}kxwBvCpCnDxF", + "cxmrHq_xwBzB~FvAtG", + "oqmrH{nwwBn@`FVtE@pFQ`E", + "ixnrH_sqwBt@~JdA|H", + "cuarHkfqtBxBuJ", + "chzqHuynuBd]qiB", + "glzqHc|muBDoFVeGdB{L", + "{gzqHqynuBb]qiB", + "_lzqHa|muBFkHTiEdByL", + "wdyqHue}uBcx@eyH", + "c~zqHy_gvBdx@fyH", + "mrzqHmxjvBp@mI", + "cqzqH_ckvBq@nI", + "cnzqH}vkvB_B|R", + "aozqH}nkvBdBiT", + "sezqH_jmvBlAcO", + "g~yqHq`ovBWlF", + "c~yqHabovBCn@", + "_~yqHo`ovBLqF", + "q}yqHahovBB{LY{H", + "w}yqHyvovBKvS", + "eczqHczmvBzB_Yh@kK", + "qdxqHejyuB?gL", + "idxqHeoyuB?iHYsIi@aHcAsH", + "uowrHsh_yBiDIaLh@", + "_xwrHeh_yBgPt@", + "eahrHm~xvBcDwRg@_GSkH" + ], + "unavailable": [], + "title": "Tunel - Sosnowiec Główny", + "link": "https://wiki.simrail.eu/en/Route/LK62" + }, + "64": { + "available": [ + "ejksHcyxxBqHvByErBuJjHyqC`{CcPjQaDrEcF`KyBjG_CfJo^foB", + "mq|tH{xhwB_@}I{@oJeAkGmBsH", + "{ycsHesdyBgIkAkIUyHj@iIpB", + "yycsHqsdyBiImAiIUeIj@aIpB", + "safsH}vcyBka@zj@", + "wegsHwhbyBsFdJmDlIuCvJsBbKuAhLeXnoC_BxLuD`PkEbLwFnJqChDsQxQ_G`FuDvByMpE", + "_dgsHakbyBw@hA", + "ubesHwqdyBk@R", + "mafsHsvcyB{a@nk@", + "sbesHiqdyBi@R", + "oaksHa|xxBbA[", + "wbksHq{xxBf@O", + "oaksHm|xxBg@L", + "wbksH_|xxBmFzA", + "mgzsHonixBSH", + "_hzsH{mixBRI", + "kgzsHenixBdyDowA", + "idgsHcjbyBy@hA", + "emotHuszwB|}CssAfEsAn~Eep@", + "eqotH}qzwBzaDyuAfEuAr~Eap@", + "om`sHqbcyBgf@oU}SeJ", + "sm`sHabcyBc{@u`@", + "qaztHytowBbx@s`@dEmCdG}FzFsIpj@oiAtGmLhtByxCbGoFbEgCpm@}W", + "k_ksH}|xxBzKwDtD{BzF{E", + "}djsHmmyxBtQ{QtEcGtDwGdBgEfEgNtA{G|AwL|Zu|CfAgG~DwNlDmI`FkI", + "o}rsHgcnxBr^uoBbAkE|CmJjC_GjDcG`ScUzsC{|CrHmFxEsB|OsE", + "u}rsHkcnxBmElPuArD{F`L{D`FwGbGiDrBuIlD", + "imtsH_glxBcyDnwA", + "emtsHuflxBtGiChFwC~DgDnG}H`GcLpC}HpCgL", + "adbtHqu_xBtcCgsD", + "}cbtHgu_xBtcCisD", + "mhctHo|~wB~HcBrHgDxGmF|FgH", + "ohctHc|~wBbIcBrHeD|GoFzFiH", + "kvotHeozwBdDwA", + "y}otHikzwBrOkG", + "c_~sHejexBzmAgjBbGyFlIyErTcI", + "k_~sHyiexBFK", + "__~sH}iexBzmAejBbG{FfBiAbFkCrTeI", + "g_~sHqiexBFK", + "}y|tHiajwBwKi`@iB}Jm@qGUyGAsGToHj@iGrAcIjB}GbC_GzC}ErCaDbDeC~GqD", + "cf|tHolnwBhYmN", + "yk{tH}{nwBJE", + "mk{tHc|nwB~MyG", + "m|ztH}dowBJE", + "kh|tHeknwBfAi@", + "ykptH{czwBlTiJ", + "e~bsHikdyBsZgG", + "i~bsH_kdyBqZeG", + "uibsHgddyBoSaF", + "wibsHwcdyBqSgF", + "}cesHupdyBoEtBoFpDaFvEmG`I", + "adesHcqdyB}FtC}FfEsEvEaFnG", + "a|ztHceowBnYuN" + ], + "unavailable": [], + "title": "Kozłów - Koniecpol", + "link": "https://wiki.simrail.eu/en/Route/LK64" + }, + "65": { + "available": [], + "unavailable": [ + "mzgrHsxcwBgEyByuAwl@", + "oxgrHy||vB|Ee^jQ}aAlAuJ|@kL", + "mqnrHwopwBsCoOkAgLe@eMJiO~@cNzAiKdQyr@lAkGt@mGh@_MKyJu@cKcBqJsBaHsDyH{DgFgEiDuHwCuQeBsEw@cFwByFwEcE{Fge@oz@sC}F_CqGqPul@o[o}A", + "o|lrH}nkwBAG", + "yzfrH_x`wBF}@", + "yxgrHo{|vBHi@", + "a~yqHixouBCqE", + "kb_sHcgbyBDkC", + "_`}rH{swxBeNoJuE{EmD}E}CwFoDwIgCsIoBeJkA}HmA}MgR{kC]wOVqT", + "}psrHqfvxBcC}C", + "itwrHgivxBgA]", + "{~rrHgduxB[w@", + "w_srH_fuxB}IiUgEgI", + "i|vrH_`vxBuHeBiMaE", + "azvrHw_vxBgAG", + "ausrHokvxBeFgEmEoBqE}@cGIyGfAqo@pR{G~@mEA", + "u}zqHm{fvB{@_J[cHCeHReHrPcvBvA_XbJe_AjA}\\IcIg@oHs@eFgCwMcB_IgBeGiCwGoCgFmGuHcWyTk|@iq@}D{BqFeBgJy@mJp@wVvG{c@pQkF`AwEN}Gg@mjAwNuH}Bwd@cR", + "}tzqHwfiuBSeORiIp@qHbEsXv@aKLuHFed@RkIdAiL`F}W|@_I`@eJCcR", + "azqsHexiyBqDaC{CaDsC{DsBaE_FiOmHgS{G_UkN}b@_HqRwCaK", + "cyqsHuwiyB]O", + "mncsH_rdyBgqEobA}RwEgIuCcGqCoG{Dke@k^eC_CuE{FeNiUgEeF}FeE{FuBaIy@kDLw|@jJ", + "ka_sHk{byBBaB", + "eb_sHokbyBX{N", + "espsH_tiyBeLdA}E?eGs@sHgC", + "ga_sHm~byBNcQa@}K{AmLyBqI{CiHcEcGcFmEiGoCyBg@qFYcF\\wBh@mGtCsg@dYgGzBqEh@qEEyMeC", + "we_sHqa`yBjBqdA", + "qvwrHejvxBmGcBaGq@unAr@{EAgE_@}FqAkHcDyi@{\\", + "osqrH}`jxB|AiSnEa_AhDy]f@aIfAan@EkJY_HoAaMmCsMyd@gcBkEiMoHkR", + "ilsrHgq_xByBsMy@uKK{Mn@yN~@qHlIke@zJc{@|Vs}AjA{JtIc~@", + "q|lrHeokwBwAoIsB}IwLe^wCsK_[i~A", + "s|krHengwB{^w_C", + "yxfrH{fawBV_LYsKkA{KiCwKeCkGeF_IeEyDiHiE", + "kfhrH{{zvBpLs~@", + "ieyqHme}uBkw@_uH", + "cixqHmuzuB}BkMkB{H{JmVcBuFcBmIwAeM", + "gpyqHm|quB`DiIzAkFdO{v@", + "quxqH{ntuBJi@", + "euxqHeptuBfCwM", + "}pxqH}~tuBpDkS|AyP\\sLVkk@", + "cxxqH_ftuBpA{G", + "e~yqH{~ouBDaQlAyN`CyKfF{M", + "wfxqHc_xuBZw}@c@{KcAuI", + "ovgrHazwvB{JsXuAaGiA{Hq@oJSmLP_Kv@_L", + "keerHg_uvBoi@cZsC}BoCcD", + "_yfrHmcvvBeLaTiOq`@", + "gghrHqwzvBZiC", + "qzfrH}y`wBv@}K", + "owjrHejewB}D{CeEuEoDaFwCiFeCaGaBgFaBcHeBoK", + "k{krHaigwBg@cD" + ], + "title": "Sędziszów LHS - Sławków Południowy", + "subtitle": "broad gauge line", + "lkname": "LHS" + }, + "91": { + "available": [ + "a{lpHmnzxBrGqJjIsJfi@ox@~CiGvBkF`FsP", + "_gnpHwrxxBrZqd@", + "}pnpHgexxB|HoL", + "obmpHkdzxB~BmD", + "csppHa`wxBrUg@~D]jGiBlG{D", + "o~lpHyizxBZe@", + "curpH{yvxBpIuBbFU", + "k}jpHm`}xB{e@bt@", + "yyqpHc~vxBnP]", + "y{lpHmmzxBV_@", + "}{lpHwmzxBw@jA", + "egnpHcsxxB}HnL", + "e{lpHwnzxBW^", + "s}lpH_kzxBx@mA", + "u}lpHkkzxB[d@", + "okmpHsxyxBuZnd@", + "kcrpHw}vxBkL`A", + "mcrpHg~vxBrHM", + "yyqpHc~vxBqHJ", + "yyqpHu~vxBnPW", + "odopHolwxB\\[", + "ucopHwmwxB]Z", + "yeopHykwxBkGzDkGfB}D^wUf@", + "ueopHmkwxBd@a@", + "sdopH{lwxBe@`@", + "igqpHo_wxBC?", + "ihqpHa_wxB`@A", + "eeqpHe_wxBlKO", + "wxppHa`wxBqMP", + "cqnpHsexxBeLzPkD~D", + "qcopHkmwxBtDqE|KiP", + "}~lpHuizxBuJ|N", + "sjmpHwyyxB[b@", + "qjmpHmyyxBYb@", + "ggqpHc_wxB`AA", + "gsppHm`wxBoDJ", + "wxppHu_wxBrDK", + "ihqpHm_wxBZA", + "}njpHs~}xBaFdPkF~K", + "q~lpHejzxBKN", + "}cmpHmbzxBl@}@", + "qjmpHmyyxBrE_H", + "gdlpHik{xByDrFoGjHsGpJ" + ], + "unavailable": [], + "title": "Kraków Główny - Kraków Płaszów", + "subtitle": "Kraków Główny - Medyka", + "link": "https://wiki.simrail.eu/en/Route/LK91" + }, + "95": { + "available": [ + "egypHc__yBiEmRgAeJy@_L[iMR_]", + "otxpHckfyBmHtKgE|I}ClKsBbMk@lGYhHgBprA", + "gsxpHwlfyBg@r@", + "ktxpHyjfyBf@u@", + "erypHssayBQlOBdMTjHz@bM|B|OfHlY", + "yqypHawayB`BioAZcHd@sFvBwM|CkKdE}IlHsK" + ], + "unavailable": [ + "imwpHmsxxB?f@", + "gmwpH_zyxBBdB", + "_mwpH_zyxBc@w]i@qGkAkGyBsG_Re^kDeIeXmbA", + "}lwpHyvyxBAeB", + "{bypHcr~xBjQ`p@`BdFpCjGbRl^rBhGlAnGh@hGb@|]", + "cmwpHyvyxBEjb@", + "amwpHksxxBBmb@", + "amwpHcrxxB?g@" + ], + "title": "Kraków Mydlniki - Kraków Batowice", + "subtitle": "Kraków Mydlniki - Podłęże", + "link": "https://wiki.simrail.eu/en/Route/LK95" + }, + "118": { + "available": [ + "wrspHa`vxBqIlNyKn[gBpJkAlR", + "spspHgavxB`I{J", + "gnspHqevxBoBfC", + "wqspHiavxB_@f@", + "krspH}~uxB\\i@", + "_ntpHi}sxBlAmM|BcKhJyVxCcGbDcF", + "kcrpHs{vxBrHK", + "wyqpH_|vxBbHgA", + "k}rpHevvxBiDlB{C`D", + "qfspHcmvxB|CgCtJiFxIoAvFM", + "k}rpHevvxBfKuE", + "mqspHg`vxBX_@", + "qgspHumvxBuEbG" + ], + "unavailable": [], + "title": "Kraków Główny - Kraków Główny KGA", + "subtitle": "Kraków Główny - Kraków Lotnisko", + "link": "https://wiki.simrail.eu/en/Route/LK118" + }, + "133": { + "available": [ + "mgqpHo_wxB]?", + "ygirH_~otBzE|@dFT`UiAjQuCr[{H", + "cl_rHm~utBQC", + "oz{qHusttBsWaQ_JqDaFiA}eAyO", + "auxqHulrtB}FuAaFkCi`@kXey@{i@", + "ul_rH__vtBP@", + "ykirHy_ptBnH|AnE^hSs@rQgCd_@yI", + "ubnrH}cstBfq@ne@", + "ubnrH}cstBsAu@", + "}plrH_}qtBks@sg@", + "mdwqHicstBcFjFeVxNaCj@}BHiIgA", + "o`wqHshstBcHfKoBxB}QfLwCt@eCFeNwB", + "cjcrHeavtBJC", + "cjcrH{`vtBLC", + "uicrH_avtB|DS`vB`B", + "wicrHiavtB|DU`oBhA`FT", + "otfrHulptBp\\yM|FsCnF}EhGyJnDqJbCgLjM}hA", + "utfrHqlptBDC", + "mtfrHklptB`_@aOlDiBtF}EdG{JpDuJbCiLjM_iA", + "utfrHglptBFC", + "irkrHqdqtBs]mW", + "mplrHm}qtBtM~IbNdL", + "irkrHqdqtBrPxLnJ~EfPdGb[pH", + "srkrHgeqtB`QbMlJ~EpNlFvXzG", + "exxqHcmrtB{Cs@kCsA_c@kZat@}e@", + "q_|qH_xttBmRaMaJqDaFiA_fA_P", + "egdrHsuttBv@oG~@}ErAmExCkGxDsEdCiBzFkB", + "_gdrHquttBv@iG~@cFtAmEfB}DlBwCxDuDlC}AnDcA", + "srspHu_vxBeExGoCtFmJtW{BnKm@nGk@nK", + "sqspH}`vxB_@f@", + "gotpH}tsxBl@oKl@oGxBmKlJsWlCsFdEuG", + "uiqpHk_wxB{G_@gFD", + "orspHi_vxB^i@", + "kvrpHeyvxBaJnE_CpBgC~C", + "yyqpHe`wxBgCD", + "khqpHo_wxBeIk@gFB", + "mcrpHi`wxBrHM", + "qmspH_fvxBaC`D", + "okspH}gvxBgDjE", + "wtrpHozvxBnHiCxFo@", + "{ispHmjvxBrEeFzDcC", + "mcrpHy_wxBaFh@aEfAyD`B", + "k}rpHwuvxB~Au@", + "wpspHqavxBW\\", + "mgqpHo_wxB]?", + "skspHihvxBv@cA", + "uispHcjvxBy@dA", + "skspHihvxB}@hA", + "kzrpHmwvxB^O", + "kyrpH}wvxBrCqA", + "a~qpH_`wxBkDD" + ], + "unavailable": [ + "onupHuldxBgGlMqbAliBa~@`rA", + "motpH_usxBk@`Nk@pb@", + "ozypHi_~wBb@m@", + "}ytpHq{kxBMzp@hCnjACxKYvMaBfV{C~TyE|SyFzP", + "yutpHc|nxBk@|d@iAt_@MhU", + "}ytpHe_lxB?rB", + "qmupHqndxB]z@", + "}q|pH_muwB\\{E", + "_q|pH{suwBzEyq@|@kJtBoOfEkU", + "cdzpHsr}wB|@qA", + "ebzpHeu}wBtFcI", + "afbqHqsxuBfWk{B", + "imupHindxBtFsP|EiT|CiU~A_VZ{M@wKiCojAJ{p@", + "{l{pHkvzwBJk@", + "ol{pHwwzwBlI}a@`FiQhCcHvDiIbEgHtE}G", + "go|pH{vpwBEk@", + "mo|pHgxpwBuFcp@g@qLQ{LDwL\\sLzDyk@", + "g{vqHyostBOT", + "w{vqHcostBaAxA", + "cjvqH{ystB}IfCcBfAaBpB", + "shvqHmzstBo@P", + "y}vqHilstBuAtB", + "kf|pHcngwB~CsOrAsJ|@gJ|@{Oj@cT@uI_@{LoAgO", + "wg|pHcjgwBj@_C", + "qf~pHyqxvB?g@", + "sp|pHwsuwBjGs{@nB{NvEqW", + "wrtpHsmqxB`Aut@l@sP", + "}czpHkr}wB|@sA", + "gnupHmldxB\\{@", + "uytpHe_lxBArB", + "ozypHw~}wBb@o@", + "uytpHe_lxBLkUhAo_@j@ae@", + "_bzpH_u}wBnFwH", + "kyypHg`~wBl_A_tAlaAugBfGoM", + "ejtqHgkytBaEdO}AnIyK~aA", + "sq|pH{luwB^{E", + "wmdqHmdquBDW", + "_ndqHsdquBDW", + "o|eqH}lluBvSmk@tDmLjBwHjByJnCsT", + "y}iqH}zduBxiAi{Bhu@ssB", + "yzsqH{lztBXe@", + "if~pHsqxvB?g@", + "{zsqHgmztBXg@", + "wjsqH}a{tB`Wi`@", + "{iqqHcp}tBv}@am@", + "el{pHowzwBlIib@bFiQdH}PtEiIxE_H", + "ql{pHevzwBJi@", + "wukqHy~auBhv@uzA", + "sukqHq~auBjv@uzA", + "qg|pH}igwBl@}B", + "cf|pH{mgwBnB_J`CkP~@iJ|@yOj@mT@qIa@mMkAuN", + "smaqH{o|uBBU", + "omaqHqp|uB|OkuA`S}hAvAsKnA_Nr@_OV{N@o{B", + "kgbqHkkxuBvXocC", + "umaqHup|uB|OiuA`S_iAtAoKnAcNt@_OTyN@{zB", + "ymaqH}o|uBBW", + "ow_qHwjjvBfCmOvDsOvZk~@bDgL|BmKtAoI|BcTn@}KvIivBl@_XOyQo@aOoAwNeEa\\", + "aa`qHihgvB?}A", + "gw_qHwjjvBfCgOtDqOtZk~@fDiL|BqKtAoI|BeTn@}KvIgvBl@cXOyQ{@wQeAcLcEa\\", + "y``qH{hgvB?{A", + "mdqqHus}tBlx@ei@", + "ckoqHe~~tBNK", + "_koqH{}~tBNK", + "cb~pHy`wvBeAsJq@mKS}KDyJ", + "}a~pH_`wvBEY", + "cb~pHu_wvBEY", + "ib~pHo`wvBkAwKm@yJSuKDaK", + "go|pHkxpwBsFap@g@qLQwLDwL\\sL|Dwk@", + "_o|pH}vpwBGm@", + "q~tqHmsvtBpJ{y@lAmIjAeFnJ{\\hC_HpBaE", + "ajuqHy{ttB{@tHi@vCaAjCmApBkAjAcB|@kPtE", + "_~iqHc{duBxiAk{Bhu@qsB", + "_`uqHqmvtBl@{D", + "{bcqHmguuBjLsd@lBeJnBmMxE{a@", + "uc~pHkq}vBYcb@P}OpJitB|AeUbCsQtDeQfCwI|Tmq@", + "mc~pHmq}vBYab@`@{U~IknBhAiQ", + "g~{pH}xxwBNy@", + "w}{pHwzxwBzOsz@", + "_~{pHyxxwBNw@", + "o}{pHqzxwB|Osz@", + "mvdqHwrouBrCm]zAoM", + "_`uqHqmvtBIl@", + "ymdqHkequB~DwR~]e|A", + "errqH}c|tBbMkR|EaGhHwGjNqJ", + "urrqHgc|tBNU", + "{jsqHgb{tB~Vg`@", + "{rrqHoc|tBPU", + "ojoqHg~~tBhO}JpPyJv\\mPdPwJ", + "uylqHes`uBPM", + "sjoqHq~~tBjO}JrP{Jt\\mPdPwJ", + "wylqHqs`uBNK", + "gylqH}s`uB`HqFnGeH|GuJvG_M", + "_vkqHk~auBFM", + "cylqHss`uB~GqFrGeHzGwJvG_M", + "{ukqHc~auBFM", + "if~pH{rxvB`CszADe`@k@w`@", + "qf~pHasxvBb@yb@~Aw~@@aZi@u^", + "uj|pHianwB]yPDuZKqK_@sJeA}N", + "sj|pHw`nwBAQ", + "{j|pHganwB]yPC{c@e@eNcAwN", + "yj|pHu`nwBAQ", + "ertpHkbrxBWvS", + "}|{pHmdkwBuKypAe@mI", + "s|{pHodkwBsI}bAkBiW", + "gq|pHurfwBtHgV", + "mq|pH}rfwBtHeV", + "a_~pHmqvvBaBgM", + "y~}pHqqvvBcBmM", + "_zsqHanztBrHsK", + "qtsqHyuztBtHmK", + "g|eqHwlluBtTom@rD}LlEkT|BiR", + "uvdqH{rouB`Dy_@", + "qvdqH{qouBB[", + "yvdqH_rouBB[", + "yhcqHivtuBrAyF", + "sqdqHuspuBrB}O", + "}ndqHu_quBd@wC", + "qmdqHeequBdCeMl]ozA", + "y``qHwkgvB@eUVgO", + "_``qHerhvBBg@", + "aa`qHgkgvB@sUVkO", + "g``qHgrhvBBg@", + "c``qHoshvBhA}Q`E_b@", + "{_`qHmshvBhA}Q~Dab@", + "qw_qHmijvBHi@", + "ww_qHmijvBFi@", + "u|eqH{kluBL[", + "{|eqHalluBJ[", + "m~iqHozduBLS", + "g~iqHgzduBLU", + "irrqHed|tBxKuPbGuHnH}G~HsF", + "azsqHonztBnDiF", + "kpsqHuzztBrDgF", + "{zsqHgmztBaF~KgG~S", + "i`uqHclvtBwHho@", + "}jcqH{ntuB`GqW", + "ostpH_xpxBVsT", + "attpHahpxBP}N", + "}rtpHsmqxBi@nd@", + "wgbqHqixuBJy@", + "efcqHc~tuBvOqp@~BmLnBkMzFag@", + "{u}pHamcwB|@mIxA_KtDaQdYc|@", + "gttpHchpxBq@~j@", + "qutpHc|nxBn@}j@" + ], + "title": "Dąbrowa Górnicza Ząbkowice DZA - Kraków Główny", + "link": "https://wiki.simrail.eu/en/Route/LK133" + }, + "137": { + "available": [ + "egxqHyr{rBe@|B", + "q{vqHo~asByAvI_@tJ", + "a{vqHeu_sBPxFIzFYfDq@~Dw@fCoBfEoLrSmEtN", + "{gxqHon{rBf@}B", + "q~vqHis`sB@P", + "y~vqHks`sBZ|G", + "a~vqH{gasBh@sM|@yG", + "cvwqHgk}rB|EuO|KsRpBiEt@cCr@cE\\cFDwDQiG", + "q~vqHis`sBCsA", + "a_wqHyu`sBFjA", + "u~vqH}u`sBA_FT}I", + "yzvqHi_bsBR_B", + "k_wqHahasBQjGNdF", + "g|vqH}_`sBWeD", + "y~vqHms`sB?@", + "sfxqHmr{rBnOyw@", + "kvwqHmk}rByOrw@", + "o~vqHwr`sBPvC", + "m_wqHox`sBJnA", + "}}vqHmj`sBZjE", + "_}vqHce`sB]{G", + "a_wqH_v`sB?D", + "yzvqHiu_sBm@sI", + "a}vqHad`sB~@zM", + "{gxqHon{rBwDjQ", + "khxqH{n{rB{CfO" + ], + "unavailable": [], + "title": "Katowice - Katowice Towarowa KTC", + "subtitle": "Katowice - Legnica", + "link": "https://wiki.simrail.eu/en/Route/LK137" + }, + "138": { + "available": [ + "a|tqHggwsB_S~Wa_@`l@", + "e|tqHugwsB_S`Xe_@hl@", + "upvqHi`usByE|IcC`G", + "quvqHu|csB?fJ", + "gwvqHa}dsB{@g[yBuk@CyGXkS", + "uxvqHuabsBAT", + "c|vqH{gasBb@_Mh@}G", + "e|vqHm~gsBQvNB|GvBlk@x@h[", + "c}vqHir`sB?W", + "{uvqHw_dsB?j@", + "c{tqH_iwsBa@h@", + "a|tqHggwsB`@i@", + "_{tqHqhwsBzFoF|EyFnEqHpCwG", + "iatqHkjxsBqCrGmElH}EzF{FlF", + "ozsqHqvxsB^y@", + "qysqHyxxsBc@`A", + "{uvqHy{jsBJoSe@kWuNi_C", + "cpvqHeausBQZ", + "{pvqHo`usBNY", + "kfwqH_ipsBEi@", + "{ewqHejpsBDj@", + "qfwqHijpsB{AmPsA}SKeHLkLhAyVbA_KbB}IlG_V", + "uewqHyhpsBjCx`@l@|Q~GdfA`@rKP|NQbW", + "yzvqHogasBm@dQ", + "m|vqH}r`sBGdB", + "g|vqHiu`sBEjA", + "c}vqHas`sB?oA", + "c}vqHqu`sB^iQ", + "uyvqHy~asBBY", + "}xvqHo~asB{@~U", + "quvqHalcsBAl@", + "}uvqHglcsBCn@", + "avvqHwjcsBeBxg@", + "suvqHsjcsBaB|g@", + "wuvqHecdsB@nB", + "s{vqHimtsBGN", + "_|vqH_mtsBDO", + "{{vqHyltsBkG|UcBxIcA`KgAtVKlIJbKpAzShBtP", + "y{vqHomtsBdCcGvE{I", + "ifsqHumysBoHhFuH~L", + "}jsqHekysBeBnAkBvBaGbK", + "g|vqHechsBd@{WzAs^hAc_@", + "wxvqH_absBEnA", + "yuvqHexjsBmDpeA]dR", + "{uvqH_mcsBAV", + "quvqHmqcsB?jD", + "{uvqHi}csB?hO", + "}uvqHo`dsB?uA", + "}uvqHo`dsB@V", + "{uvqHk~csB?`@", + "suvqHi~csB@r@", + "uuvqHu_dsB@j@", + "}uvqHecdsBe@wV", + "cwvqH}zdsBCcA", + "}vvqH{zdsBd@tV", + "awvqH_}dsBBbA", + "uzsqHwvxsBw@`B", + "g|sqHmsxsBv@cB", + "_asqHmqysBiDvB", + "m|sqHusxsB{ChH", + "catqHejxsBzCgH", + "casqHcrysByH|E", + "qyvqHs_bsBHiA" + ], + "unavailable": [], + "title": "Szabelnia - Katowice", + "subtitle": "Oświęcim - Katowice", + "link": "https://wiki.simrail.eu/en/Route/LK138" + }, + "139": { + "available": [ + "y_uqHgs{rBA?", + "wxvqH_absBKlA", + "s|vqH_s`sB?mA", + "s|vqHmu`sB^iQ", + "}suqHau|rBeRi`@uDuJuDmPkFa_@", + "{suqHqu|rBcRc`@qDqJwDmPiF}^", + "}|vqH_hasBU~IFjF", + "k}vqHsu`sBDnA", + "cyvqHq~asBk@jHc@lL", + "wyvqHy~asBcAxIa@~J", + "qyvqHs_bsBEX", + "q{vqHo|_sBg@mICyF", + "szvqHax_sBs@gKMmJ", + "c}vqHir`sBAY", + "u|vqHwo`sB@gB", + "}|vqHwn`sBEqB", + "{yvqHqs_sBu@}G", + "syvqHss_sB_@mC", + "cjuqHgd|rByHyO", + "{suqHqu|rBrFfL", + "gluqHih|rBtAjC" + ], + "unavailable": [], + "title": "Katowice - Brynów", + "subtitle": "Katowice - Zwardoń", + "link": "https://wiki.simrail.eu/en/Route/LK139" + }, + "142": { + "available": [], + "unavailable": [ + "c}nqHgw~rBnCuE", + "a_oqHyw{rBaKcR_B{DoAmGYuDCyDJ_Ef@iElCyKlEsL|FwJ", + "sxnqH}}~rBdJcO" + ], + "title": "Katowice Ochojec - Staszic", + "subtitle": "Katowice Ligota - Tychy" + }, + "154": { + "available": [ + "ujbrHy_guBoMwh@cCwHwDoGeCgCuCiB_DcAqF_@uEl@uChAgEfDiB~B_DrGiGjV", + "}efrHa|euBh@E", + "_sirHecfuBbAB", + "{pirHacfuBjp@rB", + "imsrHg|~tBrNS", + "_dorHshauB|kAcyBdFkHfHkHtGsEhFcCvE{AnGeAzKYnf@|A", + "ypsrHc|~tBnBC", + "u}rrH{|~tBtAC", + "o}grHi_fuBrp@rB|DK", + "o_hrHm_fuB~@B", + "ayyrHiwkuBzTjW", + "ixurHcmcuBvAla@U`ZJtGjAxKlCvJjBxDxB~C`VxXzDxDhDrBrE~AbFh@`FC", + "}{xrHqyjuBmHyJa^{b@", + "_{drHyyguBjEwQbB_FpCgFvD_EbE}BnCs@`CQrF^tBl@tCzApBdBdC`DpBvD|AnElVbbApClLbAzFlAtL^|Oi@rWaAjP{BfSiWh`B", + "m}grHu_fuBpp@rBzDK", + "m}grHu_fuB_AC", + "_qirHmcfuBaAC", + "udfrHu|euBi@F", + "udfrHu|euBnEeAtE_C`DkCnE_GjBuDlBgFbIs\\", + "asirHqcfuBmf@}AsHF{HbAwGnBgFbCwGrEgHlHgFlH}kAbyB", + "_qirHmcfuBpp@rB", + "oizrHmiluBz@~@", + "q`}rHckouBhHrM~\\n`@fEtFrNpL", + "o~urHq~euB_A_To@yHeB_LoCiKuCqHqDoG_PkR", + "sybrHgr_uBxY}jBrBkUdAe[OePi@qIq@aGcAyFeKmb@", + "aoxrH}fjuBtDzFva@pf@tDhFzAjD`DnN~H|TlH|^n@lGnAtXfGhm@", + "syxrHqwjuBiA_A", + "_{rrH_}~tB|Wo@tF{@dHyB`JaFpe@m^", + "ecprHeh`uBeb@tZuFtCiErAqHbAmHAuG{@gHcCqFaD_PoMsD_CaHgCcMyBsEkBmFcEqE{F}BmEgBsEaBgG{@{E{BiSkBoa@", + "kc{rHwemuBnKzMjLlL", + "sgzrHmgluBpMbO", + "osxrHykjuBlCzC", + "ecyrH}~juBtNbR", + "iyurH_ucuBXdE", + "edorH{hauBuEvHuEvFoEbEcJ`H", + "q_prHuj`uB~GmFrEqE`EiFzDsG", + "wzdrHoyguBeIp\\kBfFmBvDqE`GaDlCwE~BoEdA", + "uvurHcmcuByFmpA", + "}dwrHc|huBus@mz@", + "oxurHyncuBDt@" + ], + "unavailable": [], + "title": "Łazy - Dąbrowa Górnicza Towarowa", + "link": "https://wiki.simrail.eu/en/Route/LK154" + }, + "156": { + "available": [ + "}rtqHkg~tBwDoe@mAyWq@mJqtAmsPuAaKuDwL", + "estqHgg~tBwDke@mA_Xs@uJmtAcsPwA_KqDwL", + "wzwqHe`suB[{@", + "m{wqHebsuBsC}H_BkGcA_Hg@yI", + "s{wqHabsuBuC}H_BkGcA_Hg@}I", + "szwqHk`suBYy@", + "ygxqHk|uuBxBsd@JoXQwY", + "qgxqHaavuBzAo]NwZGc_@", + "}hxqHajuuBBiIf@uK", + "uhxqHuiuuB?oGZeI", + "ufxqHihtuBgAw`@", + "mfxqHihtuBgAk`@" + ], + "unavailable": [], + "title": "Bukowno - Borowa Górka", + "subtitle": "Bukowno - Jaworzno Szczakowa", + "link": "https://wiki.simrail.eu/en/Route/LK156" + }, + "160": { + "available": [ + "gyurHwzcuBzBzk@I~`@\\dFp@nEz@pDlA|CbBvClBzBvB~A`CbAlGj@", + "gutrHqd`uB|KHrHjAhH|CpGlFhEtFjDvG~BlG|FnRdEdJvEvG~UjWtCxE`ChF`EzMbCbOrRdxCjBrPtCvO~CpLjClHzCzGxE~HzFhHxFpFpWvR", + "awtrHqd`uBx@?", + "q`}rHckouB~w@l~@", + "{}xrHqyjuBfDlE`NhO", + "}izrHmjluBx@|@", + "ks_sHizpuBzRu@`EL`El@jFdB~ErC`ElD~DpE", + "chzrHohluBhZh]", + "qg{rHukmuBr\\f`@", + "eeasHsupuBxp@uC", + "qixrHybjuBja@ze@", + "gbwrHwvhuBtDfEtI`M", + "gbwrHwvhuB}CeD", + "{qvrHmbhuBrAbCrAnDvDrN~AxIf@xEhAzPpAdZ", + "w}urHojeuB~B`i@", + "wyurHm`duBNtD", + "axtrHqd`uB^?", + "ylyrHejkuB|MrO", + "}x}rHifpuBjWdZ" + ], + "unavailable": [], + "title": "Zawiercie - Dąbrowa Górnicza Ząbkowice DZA (track 3)", + "link": "https://wiki.simrail.eu/en/Route/LK160" + }, + "162": { + "available": [ + "uuarHwdqtBcAxC", + "_hfrHorptB|NaDvC?bCd@zCbBd`@j]dFnD~DhBtDdAhEj@bFL", + "yhcrHahotBP?", + "ghcrHahotBxDS~Cy@bFsClCqCdF}IjNgYnBaF" + ], + "unavailable": [], + "title": "Dąbrowa Górnicza Strzemieszyce - Dąbrowa Górnicza Huta Katowice", + "link": "https://wiki.simrail.eu/en/Route/LK162" + }, + "163": { + "available": [ + "a|{qHyuktBNU", + "q{{qHovktBtt@kgAza@gh@", + "i|{qHquktBoDpE_DfCoErBsDb@gFOkFwAoCaBqEoF", + "qbyqHuhotBpD}FxAoEh@yCn@gIV{YXoHbAaHdBuFlBsDxBeCzIsEpQeLhC}ClCiF", + "_cyqHchotBLQ", + "a|{qHyuktBGF" + ], + "unavailable": [], + "title": "Sosnowiec Kazimierz - Sosnowiec Maczki", + "link": "https://wiki.simrail.eu/en/Route/LK163" + }, + "171": { + "available": [ + "oz`rHwphuBiEoWyB{HgByDwB}CoEwDsCoA{Cm@_DI}CXwC|@mCbBkCtC{ArC", + "ej_rHuaeuBaDcGkJ}L", + "oh_rHg~duBu@mB", + "{swqHynwsBQuA", + "mtwqHoqwsBuBoO", + "cxwqH_bxsBKo@", + "oxwqHocxsBsDoX", + "qlxqH{g~sBgDgiCF_HdCga@BgFQwGm@_HgAmGe\\yrAgB_NgAwO", + "o_zqHifntBAc@", + "ubcrHwxiuBk@dB", + "adcrHquiuB}AxI[bH", + "mo_rH_bvtBfEbE", + "oh_rHg~duBhCzI~ArKh@`JB`Lo@zKyIns@iAdOuFfrAgBpzA", + "sn{qHuittBvSzNtCfCtDrFfD`JtAxG~@vJpAxY`@x_@", + "}gcrHa`iuBJzF^jEhBzIfApCdBxCrGnH|A`C", + "{gcrHsaiuBAp@", + "qt{qHkpttBoZmSsJqEgHcBq~@wN", + "efzqH{jstBuBsF", + "ey_rHej{tBnBu`BnFcpAhAcOzIos@p@_LAcLu@eLgBoK{BqH", + "wk_rH_cvtBo@k@", + "sz_rHwweuBiA{A", + "ekxqHo~ysB_@eA", + "c~wqH_}xsBOgA", + "s~wqHg_ysBiB{IgHkS", + "kvyqHeditBeF}x@", + "etyqHkrhtBCc@", + "a}qqHs}fsBP_D", + "c|qqHirjsBvC|P", + "}wwqHebxsBtBlO", + "gxwqHwcxsBHp@", + "k~wqHk_ysBNfA", + "gtwqHwqwsBPvA", + "uswqH_owsB`Ihl@`AnErAzDdBbDvBfCbU|PtAlBrAlDj@~CVnDZb_@`@`Hp@rEjAhEnFhL", + "{}wqHc}xsBrDjX", + "awqqHg_jsB`AbHPpHm@vNsEdy@", + "y~sqH_eosBva@xz@dN`^dD~KjGv]", + "i_rqHk~jsBTpA", + "kwqqHk`jsBHb@", + "uotqHmbpsBVh@", + "}ntqHcapsBrNfZ", + "i_tqH{eosBNZ", + "e}qqHevjsB`@zB", + "s~qqHy{jsBl@rD", + "olxqHul~sBQ{XoCqjBH}GbCga@@wHYoGe@_FeAoGo[kpAwB{NmAcQ", + "_lxqH}`zsB^fA", + "_kxqHu~ysBfHjSjB|I", + "cj_rHqbeuBx@pB", + "y|_rHg{euBhAxA", + "yy`rH_ohuB}CkVmBsIcBkEsBuDaCuCsCyByCwAaDq@kPg@_CRyBp@eCtAsC|C", + "cj_rHqbeuByCsFqJgM", + "i}yqHe~jtBk@yLCyO", + "uazqHurptBH{}@UkGe@sF}AiH", + "i_zqHwgntBiA{gA", + "i_zqHqfntB?e@", + "a_zqHy|ktB@Y", + "}syqHmrhtBCe@", + "y~yqHy|ktB?[", + "sazqHspptBAaA", + "__zqHs}ktBVaZg@sl@", + "y~yqHu}ktBZq\\k@ij@", + "uotqHmbpsByj@onAcAmEu@uGk@sd@UiDk@}CqAiDwAmBaU{PwBiCiBgDsA}D_AoEaIgl@", + "w|pqH}e`sBwJseAySelBW_FOsMn@gM", + "}|_rHszeuBiG}IkBgE{AcFeAyFyK_u@", + "y|_rHg{euBeGwIkBeEyA}EiAyFiKas@", + "{izqHorstB{CcF_EqDmCsA_OsEkJ}F", + "ityqHoshtBaAuO", + "ei_rH{{utBfCvAdFtAbt@jHnJfBrE~AtGhDj[vT", + "atyqHsshtBwFo}@", + "gm_rHkdvtBkDoEeD_IqBaKm@eJ", + "o}_rHwkwtB`@vI|A`KpCtInDfG", + "od_rHg~utBgFwC", + "q_zqHmgntBgAchA", + "yazqHqpptBCcA", + "mq{qHwkttBxA`A", + "q}yqHc~jtBo@mO?gM", + "elxqHu`zsByA}Eu@aEe@iFKwFJyFZmEjD}Ub@cHDmFcAsr@", + "mlxqHcf~sBCw@", + "_lxqH}`zsByA{Es@_Ee@gFKuFJwFXkElD_Vf@aJkAw~@", + "wvbrHgehuBzC`M", + "u|_rH{kxtBYb_@", + "y|_rHclwtBTse@", + "iy_rHgn{tBkBjaB", + "c|_rHwrxtB|AmvA", + "y{yqHcrjtBo@aK", + "{qbrHewguB~AjI", + "grbrH_pguBjBfEdC|H", + "_vbrHuxiuB{BxHk@vEUfFFvFX|DbC|L", + "o}brHiajuBeDpG" + ], + "unavailable": [ + "qmpqHcw~rBPyC", + "}mpqHot~rBJsA", + "}mpqHot~rB_@bDaAdE}GrRwFfU", + "s~sqHgeosBva@zz@dN~]fD`LjGx]", + "_}qqHmvjsB`@|B", + "wntqHmapsBrNhZ", + "a_rqHo~jsBTpA", + "ewqqHo`jsBHb@", + "qotqHwbpsBXh@", + "k~qqH}{jsBj@nD", + "c_tqHcfosBNZ", + "}{qqHorjsBvC~P", + "g|pqHga`sBOuC", + "imuqHuxqsBv\\|t@", + "_mpqH}{~rBD_DMqFk@gGyAeVmOutAq@iXWqDuJux@aFcSiBoLSaE?}DxAk]", + "}aqqHo_}rBbBiGbFmUhAsJFuFMuEuE_h@", + "axqqHebhsBfBua@", + "ytqqH{disBNyK]_Fs@uE", + "asuqHecrsBvDnI" + ], + "title": "Dąbrowa Górnicza Towarowa - Panewnik", + "link": "https://wiki.simrail.eu/en/Route/LK171" + }, + "180": { + "available": [], + "unavailable": [ + "yzxqHoirtBh@p@", + "ov{qHepttBx[zTjSdM~d@h]nChC", + "euxqHsartBP^", + "aqxqH{xqtBvJh_@", + "stxqHs`rtBdBxE", + "mqxqHyyqtBJ\\", + "oyxqH}grtBhChE", + "y{{qH{sttBhDtB" + ], + "title": "Dorota - Mysłowice Brzezinka" + }, + "182": { + "available": ["upcsHwmpuBrDPlz@sD"], + "unavailable": [ + "wlasHcspuBvHM~Cr@hBlA`CdCnBbD|ArEdArEj@tFNrFd@`pA", + "soasHyrpuBzAI" + ], + "title": "Zawiercie R15 - Zawiercie R60", + "subtitle": "Tarnowskie Góry - Zawiercie" + }, + "183": { + "available": ["ellrHyvqtBkt@{i@", "_~krHokqtBeMiJ"], + "unavailable": [ + "k~jrHwyntBJcB", + "_~jrH{|ntBNsC", + "ellrHyvqtBkt@{i@", + "m}jrH}aotBVqHKwHg@_HcAiG}AuFwByEoBoCsEgE", + "o}jrHoaotB@M", + "gqkrHy_qtBwKuJ" + ], + "title": "Dąbrowa Górnicza Ząbkowice - Dąbrowa Górnicza Piekło", + "subtitle": "Dąbrowa Górnicza Ząbkowice - Będzin Łagisza" + }, + "186": { + "available": [ + "ubnrH}cstBaZwT{FsFiEkF}EsH_DuGoDyJaCuI}CqOaCqSuRcxCcCgOeBuGyBaGgCgFwCoEgSgTuEoGwE_KgHyUmBgFgCcF{DwFqEmEiGuD_FaB_NeC}GkDmD}CmCkDaCeEiCqGwAgF}@{EaC_TgJksB", + "o}{rHklnuBig@{j@eNeK", + "w{xrH{yjuBsEgJ{e@kl@gAcCwD}NqB_EmReT_CcA{HaAcBaAgCkC", + "k|}rHwkpuBiHeIkEwCwCw@eLo@iFCsgArF", + "_u}rHmdpuBsA_AwCiD", + "myxrH{vjuBiA_B", + "y~urHo~euB_A}Sk@}GgBwLsBgIsC{HiDoGaEyF_KiL", + "aewrH{{huBks@_z@" + ], + "unavailable": [], + "title": "Zawiercie - Dąbrowa Górnicza Ząbkowice DZA (track 4)", + "link": "https://wiki.simrail.eu/en/Route/LK186" + }, + "445": { + "available": [ + "gav}H}n}~BSwB", + "idv}Hoy}~BtAjN", + "icv}Haz}~BiBoMoCiL", + "sav}Hcj}~BdBtN", + "{av}Hur}~Bm@kF", + "ujv}Hwq~~BlBrI|ArL" + ], + "unavailable": [ + "ovt}Hcwx~B{CgEuBmE{AwFs@kFSuEUgRp@aYQaFi@_EoAkEaB_DqA{AyFqEeBeCiB_F{@kF", + "o}u}Hk{|~BkCiV", + "m~u}Hmz|~Bh@jE", + "c}u}Hat|~BhAjHbFtTnNreAhAjEvAzDpBpDzBvC" + ], + "title": "Warszawa Zachodnia - Warszawa Aleje Jerozolimskie" + }, + "447": { + "available": [ + "e{b}Higa}Bw~BcbK", + "iol}H_o~}B_@cB", + "koq}Haym~B`xB|qJ", + "wuj}H{_y}Bcl@ugC", + "{th}Hezr}BQs@", + "koq}Haym~BMi@", + "yoq}Hkzm~Bm`@mdBiN{o@sJu_@", + "eoq}H{zm~BsMei@_Nim@_BsKkAgQ", + "ynq}Hsym~BKg@", + "aol}Heo~}Ba@cB", + "evm}Hofb~BeqAazFwM{m@cMoh@qHu^", + "eeu}Hmsy~B@k\\p@oRImF_@_EwAyF{A{CiB{B{FsEqBaD{AsEoA_J", + "_eu}H{oy~BEqB", + "crs}Hkct~B|D~P", + "_xt}Huax~BjA~KvAnIfRbz@", + "s_t}Haou~BRx@", + "q~s}Humu~BQy@", + "c_t}Hoou~ByM{l@}Guf@iAcEgBoE", + "mxt}Hkdx~BLtA", + "}`v}Hqj}~BaBaN", + "ujv}Hwq~~BjAvGrDhZ", + "esj}H{xx}Ban@goC", + "qth}Hmzr}BQs@", + "uc`}Hc`y|BcDoO", + "ws_}H}nw|BgL_g@", + "yh`}Hspy|BG[", + "_{b}Hmga}BeOap@yGe[iHwYktAwaGuFwW", + "ki`}Hepy|BGY", + "}rs}Hyet~BXlA", + "gqs}Hyct~BYmA", + "gvs}H_st~BoCmM", + "ay`}Hq_{|Bc_@y_B", + "s~u}Hs_}~BiA}I", + "s}u}Hgu|~BfArHnD|NnAdHhDzV~Jr{@dAdE|CbIr@`D", + "ars}Hgft~BuBiJ", + "wqv}Hco__C~CfU", + "wqv}Hco__CW}C", + "ckv}H{u~~BaCyM", + "mts}Hqjt~Bn@vC", + "__t}Hgmu~BlAxF", + "o{s}H_du~BaBuH", + "mzr}Hamr~BeDwGeC_HuEyOwEeS", + "err}Hgrq~Ba@gGo@oEeAyDoBgE", + "si`}H_qy|BsD}O", + "}x`}Ha`{|Boa@agB", + "_|l}Hsv_~BeY{nA", + "ivm}Hcfb~BbYtnA", + "ifi}Hiot}B}a@qiB", + "uei}Hint}B_Pat@kQsu@", + "_a`}H}vx|BkGgX", + "gk_}Hmvv|BmWuhA", + "wzs}Hmau~BWqA", + "wus}Hqqt~BOm@", + "q|s}Hmeu~BzArH", + "uys}Hy{t~BfDfP", + "go`}H}az|ByHs\\", + "ai`}Hoqy|BqCyMiJw^", + "gbl}Hci}}ByKae@", + "{bl}Hqh}}BmKme@", + "ubv}Hum}~B`DlW", + "eov}Hud__CiBkN", + "o`b}Hiw~|BoYcoA", + "u`b}Hcw~|BoYeoA", + "g{f}Hmkm}Bsx@wmD", + "}zf}Hmjm}BI_@", + "uzf}H}km}BeKqb@ul@}iC", + "kzf}H}jm}BI_@", + "cuh}Ha|r}BqOgq@", + "muh}Hy{r}B{Oor@", + "wlv}H{x~~B`AbF", + "_dv}Hsy}~BeB{M}BkL", + "iyt}Hshx~BZfC", + "m{a}Hch~|BaDeN", + "m|t}Huqx~BcBcE_AsDmBmQ", + "eya}Hk`~|BoFwU", + "gij}H{yw}BoK_e@", + "aij}H_zw}BcI{]", + "wsl}Hq|~}BlBlI", + "{ul}H}c_~BcEuQ", + "e|l}Hmv_~BlGzX", + "cpl}Hir~}BwDsP" + ], + "unavailable": [], + "title": "Warszawa Zachodnia - Grodzisk Mazowiecki", + "link": "https://wiki.simrail.eu/en/Route/LK447" + }, + "448": { + "available": [ + "sxx}Hqwi_CsCcMsA_E", + "mgz}Hqsl_C_BaD{BsCcF}C", + "ot{}Hsdm_CfAV", + "_gz}Hgrl_CnRxe@", + "spy}H{ek_Cb@z@", + "ioy}Hedk_Cc@}@", + "isy}Hukk_CqRwe@", + "qfy}Hywj_CzCvG", + "wgy}Hczj_CqFaI", + "mpy}Hcfk_C{AqD", + "oay}Hioj_C{CwG", + "ooy}H_dk_CrFdI", + "osy}Hmkk_CzApD", + "_`y}Hokj_CrA~DpC`M", + "ouz}H{am_CbF|CxBpCdAnB", + "er{}Hgdm_CiAW", + "}`|}Hk{m_CnAdHnBnF", + "ef|}Hesn_CeCgO", + "ed|}Hkin_CyF}W", + "kn|}Hepo_CWoA", + "yz{}Hakm_CmBmF{AwI", + "ao|}H_lo_Cu@oD", + "{vz}Hmbm_Cj@P", + "muz}Hebm_Ck@Q", + "gr{}H{cm_C`ULhD^", + "yvz}Hwbm_CmDe@}TI", + "ot{}H_em_CsBoA", + "}z{}Hujm_CvAnB", + "ex{}Hegm_CtBpA", + "cx{}Hogm_CuAqB", + "co|}Huro_CaBcKkD}W", + "wp|}Hoqo_CgBmL", + "}e|}Harn_CGc@", + "ca|}Hg}m_CyCyS", + "}`|}Hk{m_CgB_M", + "qw|}Hwwp_CkBiN{AmHeMca@", + "khw}Hamb_CrU||A", + "orv}Hat__C{OudA", + "_l}}Hsrr_C_AwD", + "uv|}Hskp_C_CmQ_B_IsBeH{F{NwAsFs@}EiA}McCkQ", + "kcw}Hwya_CaL_|@", + "kj|}Hmco_CiBqI", + "_l|}Hibo_CaBuH", + "spw}Hsvc_CxBfTlChS", + "{gy}Hyyj_Ch@~@", + "kfy}Haxj_Ck@aA", + "{_y}Hukj_Cs@sB", + "uay}Haoj_Ct@pB", + "um|}H_no_CUeA", + "_t|}H}~o_CuAuK", + "khz}H{tl_Cj@rA", + "{fz}Hmrl_CQc@", + "_n}}Hkxr_CgDmU" + ], + "unavailable": [ + "mpw}Hwvc_CuPuqAa@oF[{K[gDsIyp@aHua@", + "yxx}Hmwi_C`Hta@~CxUjEb^NtOZ|D~A|LzBhLnJhu@" + ], + "title": "Warszawa Zachodnia - Warszawa Podskarbińska", + "subtitle": "Warszawa Zachodnia - Warszawa Rembertów", + "link": "https://wiki.simrail.eu/en/Route/LK448" + }, + "452": { + "available": [ + "qu|}Hgjp_CiCeSqAaH", + "_t|}H}~o_Cq@iJ", + "kj}}Hwit_Cq@`FeA~OAbOVhJr@jG`AnEfI`V`BxG" + ], + "unavailable": [], + "title": "Warszawa Wschodnia - Warszawa Grochów", + "link": "https://wiki.simrail.eu/en/Route/LK452" + }, + "457": { + "available": [ + "wtr}H_hq~Bs@rMm@`EkApE", + "otr}Hykq~BGxB", + "els}Hkqs~BjJjZjF|KvAlEdAhIHfEIfE" + ], + "unavailable": [], + "title": "Warszawa Włochy (track 3Ł)", + "link": "https://wiki.simrail.eu/en/Route/LK457" + }, + "458": { + "available": [], + "unavailable": [ + "qt}zHoaavBpAyj@", + "wq}zHwubvBEtF{Ank@", + "{w}zHmq_vBcG`zB", + "c_~zH{~{uBnFqqB", + "_`~zHkv{uBi@|ReB~\\_Apd@", + "ye~zHk}xuB`Amf@xAq]x@oZ", + "yt}zHqaavBaBbo@", + "sw}zHmq_vB`Bao@" + ], + "title": "Łódź Fabryczna - Łódź Widzew" + }, + "529": { + "available": ["wqf|H_uezBy@wW?{Hf@uIvBaOh@cG\\mVn@aS"], + "unavailable": [], + "title": "Skierniewice - Skierniewice M PZS", + "link": "https://wiki.simrail.eu/en/Route/LK529" + }, + "530": { + "available": [ + "a|b|Hm`{yBwJyBcFWmEv@oErCyCrDwApCmDvOkDpMsA|DeCjF", + "uyd|H__yyBvDsHjD_J|D{NjDuObBaDrDcE`FgCbF]dFl@vQnE" + ], + "unavailable": [], + "title": "Skierniewice P PZS - Skierniewice S PZS", + "link": "https://wiki.simrail.eu/en/Route/LK530" + }, + "531": { + "available": [ + "__b`Hunio@xDgB", + "amrkK{zpzC|D}HvCaKvBgNhAeP", + "avahKs`}hDk@oJ", + "yp}|HcowxBo@aEcC}HgPkz@", + "aeqkKamwzCh]c{D", + "afqkKqfwzC^oE", + "qepkKop}zCjOqeBr@kK|@iU~E}kC", + "wfpkKei}zCd@iF", + "}nniKy}~`DzgKmvThGsPzF}W", + "uwmhKe}vfDlCsG`FqHtGuFdBm@", + "sfzgKeeljDyz@rmBoCxKqBpM}@hLe@pO", + "__b`Hunio@uE|A", + "g}``Horjo@Re@", + "_fa`Hg`jo@Va@", + "}la`Huyio@tB{AfBuB", + "uxa`Hgrio@d@U", + "{|``H}sjo@sE`NcArB", + "sea`Hgajo@W`@", + "kfa`He`jo@_BlBsBxA", + "ch~|Hy|yxB[iHj@uGjAuDtGsL", + "{g~|Hk{yxBGm@", + "qlpjK_xq}CJ{C", + "wdpjKipu}CpA_e@", + "}dpjKamu}CDgB", + "y_pjK{zw}CbE}_BFmTg@mSaAcOiBsPcDkQ", + "c`pjKkvw}CHoC", + "}xpjKypo}CvCkO|A}K|@yJ~@cQ", + "impjKalq}CV}J", + "}_lkKatu{Cl@yB", + "o~kkK{wu{CbdAa~Dv`@uzAhCuH~sAqzC", + "msmjKket~C|DmVtDu]dBiYdAob@tAy}Nb@kUjB}X", + "qipjKeg~}CsAyF", + "ck_iKuhubDgBiV", + "ep_iKcmvbDiBiW", + "gh_iKustbDw@qK", + "sg_iKgotbDSmC", + "os_iKmewbDSoC", + "ct_iK}iwbDk@wH", + "swa`Hesio@g@V", + "gya`Hgrio@sIjD", + "mwahKcl}hDi@}KCwLXuJx@wK", + "cqahKaa`iDXqD", + "woahKsj{hDiE_u@", + "ybchK}c|fDzDmOdCsM~A_LjJky@nAeMhAwP`@eMB{PWkRgBsWwn@ksGuAgRu@iSa@u]Tw|BjJgmH", + "}cfhKyfvfDhpAg{ClJoUjCkI", + "uckhKikwfDbd@ru@lGvGjIpD|GTjl@wAjUyA|D{ApFaErFwG~D{H", + "uxmhKa{vfD^cA", + "mhnhKclufDv@oD", + "ufnhKsqufDfJsa@vAyE", + "emohKacqfDNqB", + "ma{hKmameD`o@u~C`Ic_@hDyLhFwMhqAkoCtDsKxFmTvlBeyJdz@eeDvDoObCwLdDyTpCk[bP_aC", + "orrkKqtpzClDiE", + "qf`iKuo{bDQ_C", + "cg`iKus{bDoAsQ", + "sjokKuff{CBkA", + "ojokKaif{CpAqr@", + "}gokKs|g{CHqE", + "sgokKech{C`EovBr@cPpAcR~CgYdD{QlN}j@", + "y{ekKq|c|C~a@e_A", + "}o_kKito|CtrBskGzAwDxL_Wh`CwsEjSsa@`aCy`HpEoP|DoQjm@}sC", + "qkpjKafr}CrE_fB", + "ebpjKivv}C^}N", + "{ggjKoye`DzXub@", + "_k`iK_p|bD{Dml@a@uOGaL~EahR", + "wv_iK{|wbDeGsz@", + "okohK}oqfDt@kJ~BuQj\\c}A", + "ulohKsfqfDd@iH", + "gcahK}_xhDuJybB", + "ylchKg`_hD?sPo@}ZqOcuDQiPD{Kp@_X|AiTpAsLltAoeKjA{R^eTSmRmAyV", + "ug_hK}eoiDjxAe{Q", + "in|gKcbbjDP}B", + "c}ugKghpjDaDtH}DfH_DhEyEtEeoAtv@{K`J}HjKuJ~R", + "wm|gKafbjD~@gORmGJkS{AsdB", + "aulhKqzwfDvTg@lDRdH|B~EhD~DrE", + "oqchK_}zgDtCgbC", + "gvahKg__iDbDy`@", + "i|qkKiqrzCxFqfAx@kJpFoc@`Dy\\", + "it_iKq}ydDR{A", + "ek`iKgdrcDtMymd@PkRt@{RhAyOrBmQ", + "g{ljKmhi_DFg@", + "gthjKoub`D`CwT`CmNdE_PtFuM", + "gea`Hiajo@pAwClDmK", + "us_iKm`zdDb|Aq}K", + "cb{hKc_meDTiA", + "eafjKyng`D|GgK", + "guejKg_h`DtMgS", + "i`mhKoxwfDfJaA", + "ug~|HozyxBE[", + "yr``Hudko@cCtE", + "_ma`H}yio@sIvE", + "owa`H}rio@pIwE", + "eya`H}qio@NI", + "{xa`Hmrio@KD", + "s|``Husjo@Vo@", + "}v``H_~jo@}D`I", + "{uaiKy_vaDrl@s`D", + "gh`iKma{aDxt@e~DpCaT|A{Qt@}Ml@qSJq[QiOkYggMi@aO}B_]", + "}~_iKoxybDsFev@", + "_nfjKe}f`DxKsP", + "spgjKome`DvG_K", + "g~gjKkzd`DjDuF", + "oqpiKad|`Dd^o`@bGyHjG_LzQm`@", + "qfejKosh`DbtB_`D`KuLfFwDjGwCxcCcbAxJcGheFesEhlC}vC", + "sm|gKi}fjD?pC", + "kn_iK_`vbDy@cL", + "_j_iKg`ubDc@mG", + "_{ljKuii_DveCyjX", + "a_qjKe_k~CvD_YxEcUzvAe_FdF{T", + "mopjK}x~}CcYanAuCkOcBcNy@eKi@sKW}KA}Tj@mSrOqhDfC_]", + "elpjK_o~}CgB}H", + "eepjKyy}}CkCkL", + "eapjKgfw}C`@cO", + "elpjK{|q}CReH", + "i~ekK{wc|CnAuC", + "yxdkKw|e|CtA}C", + "cvdkKuaf|CdyCswG~J_Y", + "wcnkK_xo{CxbAa{D", + "qv|hK__geDxO{gAtSydA", + "aq{hKumkeD|Mmp@", + "cd`hKkjiiDl[qzD", + "ipahKsf`iDdk@wbH", + "{xgjKabe`DfGmJ", + "gxejKa{g`D~AeC", + "ou_iKuswbDg@eH", + "si`iKif|bDk@uH", + "}nahKwc{hDY{E", + "mbahK{xwhDYaF" + ], + "unavailable": [], + "title": "Łowicz Główny R30 - Łowicz Przedmieście", + "link": "https://wiki.simrail.eu/en/Route/LK531" + }, + "532": { + "available": [ + "up}|HinwxBw@eEcC{HqEaU}A}E", + "u`~|Ho|xxBoCiEgCyBsCyAeE}@", + "a`~|Hk{xxBSc@", + "sz_}Hueg]jBfRxCfR", + "gz_}H{eg]zB|ShDnTjSv~@", + "o|~|H{{c]mS}~@_DkSaCwT", + "u}~|H{ad]yJge@uMs}@", + "sc_}Hqsd]gDwOgIie@", + "cs_}Hsjf]oCaMsDiL", + "s`_}Hofd]pBdJ", + "}|~|Ho{c]Rr@", + "s`_}Hofd]tB~I", + "u|~|Hu{c]Pr@", + "{{~|Ho|c]y@kD", + "g|~|Hc|c]kFmV", + "u}~|H{ad]}DuP", + "mr_}He_f]pCtNfL~g@", + "{o}|HujwxBYsB", + "a}~|Hi{c]Pp@", + "}{~|Hgzc]Qs@", + "w{~|Hmzc]Ou@", + "i{~|Hwzc]Qw@", + "u~_}Hedg]jEhOzDtS", + "gt~|HkkyxBcEm@cCNqCxAcC`D" + ], + "unavailable": [], + "title": "Łowicz Główny - Łowicz Przedmieście", + "link": "https://wiki.simrail.eu/en/Route/LK532" + }, + "533": { + "available": [ + "afnfK{rokD\\pD", + "{`ofKorqkDvDqAdCXbCtBhBbDpAlE|@rGzA`X", + "alg`Hidxr@zCkP", + "i|mfKelnkDpF|TjCzMzJhn@`FdX~Q~x@vFl[`Ep[xGls@~Hhp@pBvVr@nP`@zWA`ROtJcP`gH]jW@xWnBbsF", + "gjkfKekjjDb@jA", + "mjofKomqkDjB]", + "orkfKcqnjDl@ndB`@hJ`@dE", + "srkfK{wnjDBvE", + "cikfKyhjjDjDtF", + "}nkfKczjjDx@bFzAxF", + "agofKmnqkDdEaC", + "wv{|H{lz\\Ma@", + "kw{|Hwmz\\J`@", + "iw{|Hklz\\|CpJ", + "uw{|Hmmz\\J`@", + "gr{|Hacz\\eCaI", + "mv{|Hcmz\\Ma@", + "ibz|Hkax\\j@f@", + "gbz|Hwax\\j@h@", + "cbz|Habx\\j@f@", + "m_z|Hq_x\\LL", + "q_z|He_x\\LL", + "u_z|H{~w\\LJ", + "m`z|H_bx\\k@g@", + "q`z|Hqax\\k@i@", + "w~y|H{_x\\MK", + "s~y|Hg`x\\MM", + "iv{|Hunz\\iAkE", + "uu{|Hamz\\GQ", + "sz{|Hcsz\\p@~B", + "ex{|Hamz\\L`@", + "ay{|Hcoz\\Z`A", + "ce||Hsu{\\vLzf@", + "ew{|H}mz\\wLyf@", + "ybz|Hwex\\gKyIyKqM", + "eoy|Hanw\\_CwE}CuEuIgI", + "me||Hiu{\\hA|F", + "me||Hiu{\\tBfJ", + "ei||H{a|\\Tz@", + "uk||Hgj|\\nAjG", + "uk||Hgj|\\`EjQ", + "}`||Hwj{\\_C_J", + "}d||Hwu{\\UcA", + "oh||H_`|\\zAbG", + "wa||Haj{\\`Ir[", + "oh||H_`|\\jBjI", + "ce||Hsu{\\jBpJ", + "_w{|Hulz\\tCbJzCxHzJ`RxLhPrPhP", + "ww{|H_lz\\vAfE", + "cc||Hkm{\\zBbLrCbL", + "cc||Hkm{\\aAaE", + "syy|H_yw\\j@n@", + "}~z|H{_y\\vJbMzOjO", + "ml{|Hqty\\tEzIxExH", + "yo{|H}zy\\jBjE", + "_r{|H}_z\\dA~C", + "_r{|H}_z\\|GpO`KpPzIvKzNhN", + "kr{|Hy`z\\JZ", + "_u{|Hwez\\dDxI", + "_u{|Hwez\\rA|C", + "uq{|Hwaz\\Qi@", + "gr{|Hacz\\mB_I", + "uu{|Hamz\\bGlQ", + "iv{|Hunz\\J`@", + "sx{|Hauz\\}EuR", + "q_||Hwh{\\wDoO", + "ie||Hgy{\\y@uD", + "ie||Hgy{\\uAeF", + "{v{|Henz\\aIq[", + "}`||Hwj{\\aFuT", + "}az|H{bx\\eQuPmLwOiEmHeD{GeDmIoCyI", + "{{z|Hc_y\\mHaLgGmM", + "yaz|Hgcx\\sN_NyJ{LyJiPsGiO", + "qm{|Hszy\\cCcF", + "a_z|Hu`x\\k@i@", + "kny|Hopw\\gOwN", + "e_z|Hg`x\\k@i@", + "kny|Hopw\\kOkN", + "__z|Hc_x\\hOjN", + "w`z|Hy`x\\h@f@", + "c_z|Hw~w\\lO~M", + "{`z|Hm`x\\h@f@", + "g_z|Ho~w\\rDnD", + "}`z|Hc`x\\f@f@", + "}s||Hoa}\\nMdk@", + "ws||Hsa}\\pIv^", + "uk||Hgj|\\uFuV", + "_h||Hm`|\\eJu`@", + "gxy|Howw\\zDlFzCnG", + "qly|Hyhw\\sAgD", + "}jy|Hcmw\\mBkB", + "uny|Hwow\\nBhB", + "y{||Hga_yB|@zHbAxEnBrEzBrCzClBfDn@nDQbDqA", + "cenfKimokDlClRjCtL", + "chnfKicpkD`AlO", + "s{{|Hoc~xBdBwAxBwC", + "_c}|Hmv`yBt@~TnDd^" + ], + "unavailable": [], + "title": "Łowicz Główny R1 - Łowicz Główny R12", + "link": "https://wiki.simrail.eu/en/Route/LK533" + }, + "534": { + "available": [ + "klvzHak_xBePd]", + "aivzHyp_xBHS", + "whvzHmq_xBrQq_@", + "ecrzHy~exBu|@`pAuC|EsG|M", + "}suzH{u`xBjg@afA", + "wdwzHi`~wBcDnFyJhK", + "qktzH}|bxBnIcPr_A}sA", + "entzH{wbxBwd@~`A", + "uuwzHol}wBcCbAgDZeBKeFkA", + "q`rzHibfxBsAnB", + "cvuzH_r`xBdA{B", + "aivzHyp_xBiBvD", + "q}vzH{l~wBeFpK" + ], + "unavailable": [], + "title": "Koluszki - Mikołajów", + "link": "https://wiki.simrail.eu/en/Route/LK534" + }, + "535": { + "available": [ + "cgvzHqm|wBq@_KoAwGkCiGoD{D{DaBwEMeEfA}EfD", + "ynwzHol}wBcEdCkDh@iD_@oEaB" + ], + "unavailable": [], + "title": "Żak. Płd. Zieleń R7 - Koluszki", + "link": "https://wiki.simrail.eu/en/Route/LK535" + }, + "536": { + "available": [ + "clvzHeg~wBOuITyHz@kH`BeH", + "_gvzHgn_xBBK", + "{fvzHsn_xB~GeT", + "}tuzHcb|wBeHsE", + "qivzHkn}wBqAyW", + "c~uzHwh|wBmC}DqBiGw@eGu@eN" + ], + "unavailable": [], + "title": "Słotwiny - Koluszki PZS R154", + "link": "https://wiki.simrail.eu/en/Route/LK536" + }, + "537": { + "available": [ + "kgvzHgo_xBzD_M`FoK", + "ogvzH{n_xBBK", + "wfvzHwi|wBGgA", + "uhvzHeuxwBnEi^", + "cvuzH_r`xBiCfG", + "akvzHkt}wBaAeTCeIh@uJ`B{J", + "_kvzH{s}wBAO", + "cgvzHqm|wBQcGwAmW", + "ebvzHotywBBO", + "abvzH_uywBd@wJCqMwDmy@", + "_gvzH_l|wBCq@", + "{hvzHik_xBj@qB", + "mjvzHcn}wBQwD" + ], + "unavailable": [], + "title": "Żakowice Południowe - Słotwiny", + "link": "https://wiki.simrail.eu/en/Route/LK537" + }, + "538": { + "available": [ + "ygwzHkozwBkB_YCsI^yEz@cEbBeEhBeCdBwAnBw@tBYlBHzDjAjQpHfEhA", + "_jwzH}|zwBw@cPD_EX{Dx@kEdA{CbBwCrBsBnEcB|DD~UjJnD~@" + ], + "unavailable": [], + "title": "Koluszki PZS R145 - Koluszki PZS R154", + "link": "https://wiki.simrail.eu/en/Route/LK538" + }, + "539": { + "available": [ + "k`yzH}aouByAiKoD}Q", + "uhyzHeapuBq@iD", + "gjyzHofpuBsFeWaDyPe@iHFcH\\yEp@gEdAyDrA_D`B_CdB}ApG_C", + "mjyzHkfpuBp@hD", + "{hyzHaapuBdEfV", + "cfyzHqdsuBwBbAgBvA}AtBmAbC}BzIi@pESxED~Fj@zGjKjg@", + "kayzHkfsuBwCx@" + ], + "unavailable": [], + "title": "Łódź Kaliska - Retkinia", + "link": "https://wiki.simrail.eu/en/Route/LK539" + }, + "540": { + "available": [ + "i`}zHihcvBoCuI", + "ayzzHydbvBsa@eCuIiB}F}CsEeE{DoFoDkH", + "yd}zH_scvBeDgPkA{KKeLx@iP", + "wd}zHoscvBiC{LsAcK[gJTqK", + "g`}zHyhcvBoCuI", + "ypuzHs}~uBf@{KFmI[yHqAqJmBmHwCmGeEkF_EmCeHoBiaAaPsdBkKoGq@cGoB{GsEyFaHuEcJ", + "squzHux~uBt@uOJqHY{Iy@oHcBwHeCkGyDyFkEmDkDwAwDw@k^kFq^_HihAgH", + "equzH}y~uBJuB" + ], + "unavailable": [], + "title": "Łódź Chojny - Łódź Widzew", + "link": "https://wiki.simrail.eu/en/Route/LK540" + }, + "541": { + "available": [ + "gdwzH}huvBaAkA", + "mrvzHmasvBgEcl@s@qGsBiHsAcCuBkC", + "cdwzHehuvBzD~F~@jC~@lEnFtr@", + "cdwzHehuvBcAiA", + "cy{zHkunvB|Jyu@jA_H|AsGnDeKfQ{`@hd@onAtGcN`ByBlB_BzBeAtB_@|JF", + "chxzHstuvB_IMcD^{DnBcDxDqHtOoc@~lAeSvd@aDnK{BnLkTxaB", + "qs|zHymjvBw@nH", + "kr|zH{ujvBj@{F", + "_q|zHw}jvB~Cw^jHyj@", + "ifwzHikuvBuE{E_FuBiDQyMx@", + "chxzHgtuvB|Ls@`ENvEnBbFjF", + "kr|zH{ujvBe@`G", + "yb|zHoimvBkHzj@eEvf@", + "sb|zHiimvBnHak@" + ], + "unavailable": [], + "title": "Łódź Widzew - Łódź Olechów ŁOC", + "link": "https://wiki.simrail.eu/en/Route/LK541" + }, + "542": { + "available": [ + "ir_zH_}zrBr@`ShAhHz@|CxDzHpD~CvEfB|CPzGu@zDGzTvAxD_@jBi@pEmClCsCxBsDvE_L", + "ar|yHeezrBbYcu@vFyJ|I}L", + "ge{yHau|rBvNoRpFqF" + ], + "unavailable": [], + "title": "Gajewniki - Zduńska Wola Karsznice", + "link": "https://wiki.simrail.eu/en/Route/LK542" + }, + "543": { + "available": [ + "_vazHkovrBbF{CdDyEvPkj@pBgErD}DvOaK~BeCrAcCdBoFx@qFPuECcO" + ], + "unavailable": [], + "title": "Gajewniki - Dionizów", + "link": "https://wiki.simrail.eu/en/Route/LK543" + }, + "558": { + "available": [ + "m}e|HwqbzByCqOqD}V{@}Mc@aPCcOl@_z@x@{MjCaT", + "wde|Hq}_zBuWesA" + ], + "unavailable": [], + "title": "Skierniewice R24 - Skierniewice R402", + "link": "https://wiki.simrail.eu/en/Route/LK558" + }, + "570": { + "available": [ + "kvotHeozwBqu@bZkE|@_G@yDq@wDcBaCgBsDaEqEaJ_I}X", + "castHae{wB{Mke@" + ], + "unavailable": [], + "title": "Psary - Starzyny", + "link": "https://wiki.simrail.eu/en/Route/LK570" + }, + "571": { + "available": [ + "{bauHavnxBmV}R", + "izauH_joxBWS", + "a{auHsjoxB_q@gh@gFwFgCaFwIa[uCcGuF{GsI_HmCwC_DqF}AsDiB{GgAgH_@mFe@eQ", + "mneuHmvtxBMkL" + ], + "unavailable": [], + "title": "Czarnca - Knapówka", + "link": "https://wiki.simrail.eu/en/Route/LK571" + }, + "572": { + "available": [ + "wwiuHgsuxBrIrDlOtIvj@rb@n}@tt@pFtGjEbItCfIhBvHrtAniH", + "s`kuHugvxBzg@lS", + "iykuH}svxBtWfK" + ], + "unavailable": [], + "title": "Włoszczowa Północ - Żelisławice", + "link": "https://wiki.simrail.eu/en/Route/LK572" + }, + "573": { + "available": ["caayHoj`{B_vAelCaGsMkDsLwAmIaA}JaGu`AYkIBcJd@{IjEuY"], + "unavailable": [], + "title": "Idzikowice - Radzice", + "link": "https://wiki.simrail.eu/en/Route/LK573" + }, + "574": { + "available": [ + "alfyHkgc{BzLsh@nB_FlCiEnFuEdFeBbE[bBJ|D~@`\\lRvBbBnD~DnmAv|B" + ], + "unavailable": [], + "title": "Radzice Rd1 - Idzikowice", + "link": "https://wiki.simrail.eu/en/Route/LK574" + }, + "575": { + "available": [ + "}wc|Hes|{Bw`@gWyEkE_DqEmC}FcBiF}AgH", + "ydc|Huh|{BgHaD", + "anc|Hwm|{B{HmD", + "_de|Hs|a|BdBqL`AqJ", + "_pe|H{p~{B}@}Gg@uHK}IRiJjA}LpK}s@" + ], + "unavailable": [], + "title": "Szeligi - Marków", + "link": "https://wiki.simrail.eu/en/Route/LK575" + }, + "601": { + "available": [ + "ebtpHoguxBt@sDX{DBuNOcE{@yEkAyC{AwBcCeB", + "iktpHk{vxBaAk@", + "kmtpHw|vxB}PqK" + ], + "unavailable": [], + "title": "Kraków Przedmieście - Kraków Główny KGA", + "link": "https://wiki.simrail.eu/en/Route/LK601" + }, + "602": { + "available": ["kgtpHgfxxBiAnOc@|CqAhDcBhBsBt@yBAyMeG"], + "unavailable": [], + "title": "Kraków Przedmieście - Kraków Olsza", + "link": "https://wiki.simrail.eu/en/Route/LK602" + }, + "607": { + "available": ["ivxpHwhfyBuF|GqFjJgChBiCh@}D_@cD}BoBoD}CeK"], + "unavailable": [], + "title": "Raciborowice - Dłubnia", + "link": "https://wiki.simrail.eu/en/Route/LK607" + }, + "629": { + "available": [ + "_sppHu_wxBn[cAnGeBnG{D", + "menpHmsxxBnDmF", + "c}mpHcbyxB]f@", + "opnpHmdxxB`J_N", + "a~mpH{`yxBsH|K", + "sqnpHmfxxB{KdQkD|D", + "kcopH{lwxBvEyFbKwN", + "idopH}kwxB\\]", + "{copHinwxB]Z", + "}eopHklwxBkGzDiGjBcFd@uT`@", + "oeopH{jwxBd@a@", + "ydopHmmwxBc@`@", + "ugnpH}sxxB}HnL", + "y`qpH}~vxB`GI", + "uvppHs`wxBsOV", + "}_npH{zxxB~AaC", + "}|mpH}~xxB\\g@", + "wxppHg_wxBvDM", + "msppH{`wxBgBF" + ], + "unavailable": [], + "title": "Kraków Główny - Kraków Zabłocie", + "subtitle": "Kraków Główny - Kraków Bieżanów", + "link": "https://wiki.simrail.eu/en/Route/LK629" + }, + "652": { + "available": [ + "a}pqHaf`sBvAvJhAlKnA|FzPbb@lBdCvA|@", + "ezoqHk{}rBgBi@", + "c}nqHgw~rByOrVwB~AiA\\eEH" + ], + "unavailable": [], + "title": "Katowice Muchowiec KMB - Staszic", + "link": "https://wiki.simrail.eu/en/Route/LK652" + }, + "653": { + "available": ["_|pqHoa`sBWmC"], + "unavailable": [ + "yuoqHez|rBsEoLsLyd@kIqSmA}DcAoF_B_Q", + "gmoqHkl|rBqGyL", + "gmoqHkl|rBbDfE" + ], + "title": "Katowice Muchowiec - Katowice Ochojec" + }, + "654": { + "available": [], + "unavailable": [ + "gdwqHwwssBeGzVaF|X", + "}swqHwcrsB[zDExCp@~T", + "oswqH}ersBMdA", + "qawqHc~ssBuAjE" + ], + "title": "Szabelnia - Katowice Szopienice Północne" + }, + "655": { + "available": [ + "{ovqH_ausB`NyTrB_E", + "mpvqHc`usBP[", + "_puqHk|qsB}Oi\\iCkC}K_G_CiDmAuDe@gD_@oGBoDVuDh@kDfAiE|DmI" + ], + "unavailable": [ + "k|qqH_rjsB_@{B", + "k}qqH{ujsBo@yD", + "{~qqHu{jsBUoA", + "kwqqHa_jsBIe@", + "uwqqHg`jsBuCwP", + "__tqHudosBO[", + "o_tqHqeosBsNgZ", + "cotqHy`psBWg@", + "{otqHabpsBw\\}t@", + "q_rqHe~jsBkG{]cDyKyKgYcd@q_A", + "qyqqHysfsB}@mF}AmNg@iIJyK|@eJ", + "uwqqHk~hsB|@qFVcIMaE}@}G", + "k}qqH_mhsBtDkP", + "smuqH_xqsBkAkC" + ], + "title": "Mysłowice - Katowice Muchowiec", + "link": "https://wiki.simrail.eu/en/Route/LK655" + }, + "656": { + "available": [ + "wgwqHae~rBR~Gl@lEfBrF`CdDvBzArCt@|LNvFlAtDhCjB`CbBzC", + "}gwqH}i~rBDzC", + "ctuqHat|rB~HxN", + "g~vqHwn`sBAhF", + "}gwqH}i~rBLaJtF{_@l@kJ", + "a_wqH_v`sBFwJj@iPjAkK", + "mzvqHmbbsBTwE", + "a{vqHm_bsBR_B", + "a_wqHms`sBAW", + "c_wqHet`sB@s@", + "e~vqHsr`sBAzB", + "a_wqHyu`sB?E", + "i~vqHmg`sBW_K", + "wyvqHeibsBPoB", + "k~vqHga`sB@eE" + ], + "unavailable": [], + "title": "Katowice - Brynów", + "link": "https://wiki.simrail.eu/en/Route/LK656" + }, + "657": { + "available": [ + "qwqqH}~isBn@nETdDBfEWzE{@lFsFrQ}@bE{@fK@`IzBj\\x@rWxSdlBtJjeA", + "e_tqHmdosB~c@h_AzKnYbDtKlGz]", + "aptqHwapsBVf@", + "q|qqHyqjsBtCtP", + "u_tqHgeosBNX", + "iotqHo`psBrNfZ", + "c_rqHq{jsBp@~D", + "q}qqHqujsB^vB", + "{wqqHc`jsBHd@", + "w_rqHa~jsBRnA", + "mnuqHyxqsBgRi`@yBsBgJiEsDs@qEj@_DvBsFtG", + "aptqHwapsBk]av@" + ], + "unavailable": [ + "a}pqHaf`sBXxC", + "{rwqH}frsBnB}GnCqE", + "{rwqH}frsBWbB", + "sswqHycrsB]|DCtCh@dPH|I", + "{jwqHmvrsBh@m@" + ], + "title": "Katowice Szopienice Północne - Katowice Muchowiec KMB", + "link": "https://wiki.simrail.eu/en/Route/LK657" + }, + "658": { + "available": ["uzvqHc}ssBHbHm@lFmAhDaGpJ"], + "unavailable": [], + "title": "Stawiska Sk1 R3 - Stawiska Sk1 R2", + "link": "https://wiki.simrail.eu/en/Route/LK658" + }, + "660": { + "available": [ + "avxqHudwsByHfM{Yd^", + "q~yqHwqusBeAhCi@dDMpDJlDd@xDz@`D|@bBfCnC", + "wzyqHgwusByBnD" + ], + "unavailable": [], + "title": "Sosnowiec Południowy - Sosnowiec Główny", + "link": "https://wiki.simrail.eu/en/Route/LK660" + }, + "661": { + "available": [ + "yy`rH_ohuBmEsYmA{EaBiEsBoDeEoEsCcBkFqA{F@aFlAsw@h`@", + "ccdrHudiuBoF`EcEhGiBtEaAjD{ClO" + ], + "unavailable": [], + "title": "Dąbrowa Górnicza Towarowa DTA R5 - Kozioł", + "link": "https://wiki.simrail.eu/en/Route/LK661" + }, + "663": { + "available": ["cj{qH_titBuRi]aBcFe@cFLsG~@uEhBuD"], + "unavailable": [], + "title": "Sosnowiec Kazimierz SKz2 - Sosnowiec Kazimierz SKz1", + "link": "https://wiki.simrail.eu/en/Route/LK663" + }, + "705": { + "available": [], + "unavailable": [ + "}p_sHqzpuB_FbAeFjDaDdF}CtJw@`HQnGDv[KbH", + "ss_sHizpuBwDbA_EzCeDfFgCzHkA`JMxEFjb@" + ], + "title": "Zawiercie R125 - Zawiercie R97" + }, + "706": { + "available": [], + "unavailable": [ + "impqHgv~rBTcG?eFsAuN", + "ompqHat~rBDeA", + "q{oqHsc}rBoMcW{@oCg@aCUaDJuI", + "q{oqHsc}rB|CbG" + ], + "title": "Katowice Muchowiec - Katowice Ochojec" + }, + "707": { + "available": [], + "unavailable": [ + "izoqHy{}rBgBk@", + "q}oqHe}}rBwCgCcBkD", + "mepqHyf~rBcAsEo@yImBwPwPo{A}@cFiA_KUsEDoHWaLg@mGmI{r@eFaSqAkHk@eF", + "izoqHy{}rB`DBfDoApBuB|DoG" + ], + "title": "Katowice Muchowiec - Staszic" + }, + "739": { + "available": [ + "_n_zH_owrBBwGRkEl@_Gx@iEhDuJrA}BlCaDrFmDnHyAxDE|TxAvD[nBk@tEqCdEaFlBoDzFcO", + "uh_zHkurrB@mGwAqhA", + "io|yHgjzrBdU_m@fHcM`J{L", + "ul_zHukvrBi@ib@", + "kk_zHkgurBi@ic@", + "yd{yHgt|rBjSwW" + ], + "unavailable": [], + "title": "Zduńska Wola Karsznice - Zduńska Wola", + "link": "https://wiki.simrail.eu/en/Route/LK739" + }, + "810": { + "available": [ + "kxazHmnvrBlGgCxAsAzA}BrAgD`Nud@pCiGpB}B|BuAhCo@pCAvDbA~CfCjCjEbB`G|@|Ip@lh@^xI" + ], + "unavailable": [], + "title": "Zduńska Wola - Dionizów", + "link": "https://wiki.simrail.eu/en/Route/LK810" + }, + "830": { + "available": [], + "unavailable": [ + "szuzHkdlvBAoHgIshAq@sE}@wC", + "sfuzHajgvBqOwzAaBoT", + "ecwzHcwtvBgAuPcA{UEqJ\\wO", + "ipvzHqlpvBOeEgM}eB", + "mhvzH{bovB_AwD", + "gzuzHi{jvBKaD", + "mduzHm}fvBeAsK", + "eauzHmkfvBgB_Q", + "mjvzHshovBgAeEe@gD_@qLm@}I", + "{{uzHilkvBUgG|@yN", + "szuzHk`kvBg@}J", + "i_wzHe{svBcAiN", + "a_wzHuysvBGo@", + "mawzHojtvBw@sK" + ], + "title": "Łódź Olechów ŁOA - Łódź Olechów ŁOC" + }, + "831": { + "available": [], + "unavailable": [ + "mdvzHwwkvBoAuEo@mDyEwo@", + "kexzHotuvBxP`@vAXfB`AfBlBzAbD`AvE`@bF", + "usvzHotnvBSyHe@wGUuQkDsg@UoVg@oQ", + "odwzHoytvBm@aHq@{CaBoDkBqBuDqAoSe@", + "eawzHmatvBiBaW", + "}bwzHmptvBdAvN", + "s}vzH{qrvBv@bYPjTjDrg@RlPRjD", + "idwzHcztvB`@nF", + "gcwzHsrtvBHdA", + "{yuzH_vjvBo@mHcByG", + "o~uzHghkvB}DoN", + "govzHstmvBmC{^", + "o}vzHklrvBuBat@", + "w`wzHu`tvBbBxm@" + ], + "title": "Łódź Olechów ŁOC - Łódź Olechów ŁOA" + }, + "898": { + "available": [ + "{ioqH}d~rBlCsG`GoVl@{FLeFEqD_@gFiAuGoP_r@mDcRyAiKuGa^yE}_@mBmKiDaNiIuc@}BmR" + ], + "unavailable": [], + "title": "Staszic - Katowice Muchowiec Staszic", + "link": "https://wiki.simrail.eu/en/Route/LK898" + }, + "902": { + "available": [ + "ml}}H}qq_C]yC", + "gf}}Ho}p_CgCcK}@iG", + "y~|}Hokp_CoA{C", + "km}}Hwvq_CkAaMo@mYoCoT", + "ub}}Hksp_CqBcI", + "ia}}Hkpp_Ck@_B" + ], + "unavailable": [], + "title": "Warszawa Wschodnia - Warszawa Podskarbińska", + "subtitle": "Warszawa Wschodnia - Warszawa Antoninów", + "link": "https://wiki.simrail.eu/en/Route/LK902" + } + } +} diff --git a/packages/map/components/railData.json b/packages/map/components/railData.json index 2277ebf..6e56eb0 100644 --- a/packages/map/components/railData.json +++ b/packages/map/components/railData.json @@ -1,1251 +1,1672 @@ { - "version": 1, + "version": 2, "knownStations": [ + "baby", "baranówka", + "bednary", "bedoń", - "będzin ksawera", - "będzin miasto", + "bełchów", + "biała rawska", "bobrowniki", + "borowa górka", "borszewice", + "borszewice apo", "bratoszewice", + "brwinów", + "brynów", + "bukowno", "bukowno przymiarki", + "będzin", + "będzin ksawera", + "będzin miasto", + "charsznica", "chechło", + "chociszew", "chrusty nowe", "chruszczobród", "chrząstowice olkuskie", + "czarnca", + "dionizów", + "dobroń", + "dobroń apo", + "domaniewice", + "domaniewice centrum", + "dorota", + "dziadówki", + "dąbrowa górnicza", "dąbrowa górnicza gołonóg", + "dąbrowa górnicza huta katowice", "dąbrowa górnicza pogoria", + "dąbrowa górnicza południowa", "dąbrowa górnicza sikorka", + "dąbrowa górnicza strzemieszyce", + "dąbrowa górnicza towarowa", + "dąbrowa górnicza towarowa dta r5", + "dąbrowa górnicza wschodnia", + "dąbrowa górnicza ząbkowice", "dąbrowice skierniewickie", - "dobroń", - "domaniewice centrum", - "dziadówki", + "dłubnia", + "florek", + "gajewniki", "gajówka", + "gajówka apo", "gawrony", + "gałkówek", + "glinnik", "glinnik wieś", - "głowno północne", + "gniewięcin apo", "goszcza", + "grodzisk mazowiecki", "grotniki", + "góra włodowska", + "głowno", + "głowno północne", + "idzikowice", "izabelów", + "jackowice", "jaktorów", "jarosty", + "jaroszowiec olkuski", "jedlicze koło zgierza", "jesionka", "jeżówka", + "juliusz", "justynów", + "józefinów", "kamień łowicki", "kamieńczyce", + "katowice", + "katowice janów", + "katowice much. kmb", + "katowice muchowiec staszic", "katowice szopienice poludniowe", + "katowice towarowa ktc", + "katowice zawodzie", "klimontów", + "klimontów apo", + "knapówka", "kolumna", + "kolumna apo", + "koluszki", + "koniecpol", + "korytów", + "kozioł", + "kozłów", + "kraków batowice", "kraków grzegórzki", + "kraków główny", + "kraków główny kga", + "kraków olsza", + "kraków przedmieście", + "kraków płaszów", + "kraków zabłocie", "krosnowa", - "łaznów", + "krzewie", + "kutno", "lipce reymontowskie", - "łódź andrzejów szosa", - "łódź arturówek", - "łódź dąbrowa", - "łódź niciarniana", - "łódź olechów wiadukt", - "łódź olechów wschód", - "łódź olechów zachód", - "łódź pabianicka", - "łódź radogoszcz wschód", - "łódź radogoszcz zachód", - "łódź retkinia", - "łódź stoki", - "łódź warszawska", - "łódź zarzew", - "łuczyce", "maków", - "męcka wola", + "marków", + "miechów", + "mikołajów", + "milanówek", "międzyborów", "mokra", "moszczenica", + "myszków", + "myszków mrzygłód", + "mysłowice", + "męcka wola", + "męka", + "niedźwiedź", + "olkusz", + "olszamowice", + "opoczno południe", + "ostrowy", + "ozorków", "ozorków nowe miasto", + "pabianice", "pabianice północne", "parzniew", + "piastów", + "pilichowice", + "piotrków trybunalski", + "pruszków", + "przemiarki", "przyłęk duży", + "psary", + "puszcza mariańska", + "płyćwia", + "raciborowice", + "radzice", + "radzice rd1", + "radziwiłłów mazowiecki", + "retkinia", + "rogów", + "rokiciny", + "rozprza", + "sieradz", "sieradz męka", "sieradz warta", "sierakowice skierniewickie", "sierpów", + "skierniewice", "skierniewice rawka", - "słomniki miasto", "smardzew", "smroków", + "sosnowiec dańdówka", + "sosnowiec główny", + "sosnowiec kazimierz", + "sosnowiec maczki", "sosnowiec porąbka", + "sosnowiec południowy", + "sprowa", + "stara wieś", "stare grudze", + "starzyny", + "staszic", + "stawiska", + "stryków", + "strzałki", "sucha żyrardowska", "swędów", + "szabelnia", "szczepanowice", - "wągry", + "szeligi", + "sędzice", + "sędziszów", + "sędziszów towarowy", + "sławków", + "słomniki", + "słomniki miasto", + "słotwiny", + "tunel", + "warszawa centralna", + "warszawa gołąbki", + "warszawa grochów", + "warszawa główna towarowa woa", + "warszawa ochota", + "warszawa podskarbińska", "warszawa powiśle", - "warszawa śródmieście", + "warszawa praga wpt m", "warszawa stadion", + "warszawa ursus", + "warszawa ursus niedźwiadek", + "warszawa wschodnia", + "warszawa włochy", + "warszawa zachodnia", + "warszawa śródmieście", "wiesiółka", + "witonia", + "wolbrom", "wolbórka", - "żakowice", + "wągry", + "włoszczowa północ", "zarzecze", + "zarzecze apo", + "zastów", + "zawiercie", "zawiercie borowe pole", + "zduńska wola", + "zduńska wola karsznice", + "zgierz", "zgierz jaracza", + "zgierz kontrewers", + "zgierz północ", "zgierz rudunki", - "bednary", - "florek", - "jackowice", - "krzewie", - "ostrowy", - "stara wieś", - "katowice tow. ktc", - "brynów", - "mysłowice", - "szabelnia", - "staszic", - "stawiska", - "katowice janów", - "żelisławice", - "czarnca", - "sosnowiec dańdówka", - "myszków", - "przemiarki", - "radzice", - "marków", - "warszawa zachodnia", - "warszawa centralna", - "warszawa wschodnia", - "warszawa grochów", - "kozioł", - "dąbrowa górnicza towarowa", - "dąbrowa górnicza strzemieszyce", - "dąbrowa górnicza południowa", - "sosnowiec maczki", - "sosnowiec jęzor", - "olkusz", - "jaroszowiec olkuski", - "zarzecze apo", - "wolbrom", - "charsznica", - "sędziszów", - "gajówka apo", - "warszawa gł. tow.", - "warszawa praga", - "koniecpol", - "dłubnia", - "kraków główny", - "kraków olsza", - "kraków płaszów", - "kraków bonarka", - "borowa górka", - "rokiciny", - "mikołajów", - "łódź olechów", + "łask", + "łaznów", + "łazy", + "łazy ła", + "łazy łc", + "łowicz główny", + "łowicz przedmieście", + "łuczyce", + "łódź andrzejów", + "łódź andrzejów szosa", + "łódź arturówek", "łódź chojny", + "łódź dąbrowa", "łódź fabryczna", - "puszcza mariańska", - "bełchów", - "piotrków trybunalski", - "rozprza", - "kutno", - "dionizów", - "zduńska wola karsznice", - "sieradz", - "sędzice", - "sprowa", - "biała rawska", - "pilichowice", - "józefinów", - "gniewięcin apo", - "klimontów apo", - "radziwiłłów mazowiecki", - "słotwiny", - "łódź andrzejów", - "łódź dąbrowa pbsz", + "łódź kaliska", + "łódź lublinek", "łódź marysin", - "dobroń apo", - "kolumna apo", - "borszewice apo", - "męka apo", - "zgierz kontrewers", - "chociszew", - "ozorków", - "łęczyca", - "stryków", - "domaniewice", - "baby", - "będzin", - "bukowno", - "dąbrowa górnicza", - "dąbrowa górnicza huta katowice", - "dąbrowa górnicza wschodnia", - "dąbrowa górnicza ząbkowice", - "dorota", - "gajewniki", - "gałkówek", - "glinnik", - "głowno", - "góra włodowska", - "grodzisk mazowiecki", - "idzikowice", - "juliusz", - "katowice", - "katowice zawodzie", - "knapówka", - "koluszki", - "korytów", - "kozłów", - "kraków batowice", - "kraków przedmieście", - "łask", - "łazy", - "łazy ła", - "łazy łc", - "łódź kaliska", - "łódź lublinek", + "łódź niciarniana", + "łódź olechów", + "łódź olechów wiadukt", + "łódź olechów wschód", + "łódź olechów zachód", + "łódź pabianicka", + "łódź radogoszcz wschód", + "łódź radogoszcz zachód", + "łódź retkinia", + "łódź stoki", + "łódź warszawska", "łódź widzew", + "łódź zarzew", "łódź żabieniec", - "łowicz główny", - "łowicz przedmieście", - "miechów", - "niedźwiedź", - "olszamowice", - "opoczno południe", - "pabianice", - "płyćwia", - "pruszków", - "psary", - "raciborowice", - "retkinia", - "rogów", - "skierniewice", - "sławków", - "słomniki", - "sosnowiec główny", - "sosnowiec kazimierz", - "sosnowiec południowy", - "starzyny", - "strzałki", - "szeligi", - "tunel", - "warszawa włochy", - "witonia", - "włoszczowa północ", + "łęczyca", + "żakowice", "żakowice południowe", - "zastów", - "zawiercie", - "zduńska wola", - "zgierz", - "zgierz północ", - "żyrardów", - "brwinów", - "milanówek", - "myszków mrzygłód", - "piastów", - "warszawa ochota", - "warszawa ursus", - "warszawa ursus niedźwiadek", - "katowice towarowa ktc", - "kraków główny kga", - "kraków zabłocie", - "radzice rd1", - "sędziszów towarowy", - "warszawa gołąbki", - "warszawa główna towarowa woa", - "warszawa podskarbińska", - "warszawa praga wpt m", - "dąbrowa górnicza towarowa dta r5", - "katowice much. kmb", - "katowice muchowiec staszic", - "męka", - "kraków płaszów pzs kpa", - "piotrków trybunalski towarowy", - "koło", - "łódź dąbrowa pbs", - "radzice pzs r31", - "warszawa zachodnia peron 8", - "łódź olechów pzs r82", - "łódź olechów łoc", - "łódź olechów pzs r16", - "łódź olechów pzs r3", - "warszawa ursus północny", - "myszków nowa wieś", - "myszków światowit", - "warszawa główna towarowa", - "mysłowice wesoła" + "żelisławice", + "żychlin", + "żyrardów" ], "stations": { - "baranówka": [50.1465513, 20.0953448], - "bedoń": [51.7319797, 19.6423435], + "baby": [51.538214, 19.717352], + "baranówka": [50.146551, 20.095345], + "bednary": [52.10561, 20.06514], + "bedoń": [51.73198, 19.642343], + "bełchów": [52.026112, 20.033359], + "biała rawska": [51.794959, 20.439515], + "bobrowniki": [52.05751, 20.011205], + "borowa górka": [50.24579, 19.329324], + "borszewice": [51.609829, 19.034466], + "borszewice apo": [51.609471340189714, 19.03945052653515], + "bratoszewice": [51.93855, 19.652768], + "brwinów": [52.14196, 20.719318], + "brynów": [50.249369, 18.990872], + "bukowno": [50.264263, 19.45297], + "bukowno przymiarki": [50.275354, 19.40996], + "będzin": [50.309766, 19.140828], "będzin ksawera": [50.330655, 19.158452], "będzin miasto": [50.319012, 19.135451], - "bobrowniki": [52.0575101, 20.0112048], - "borszewice": [51.6098764, 19.0338649], - "bratoszewice": [51.9385499, 19.6527684], - "bukowno przymiarki": [50.2753542, 19.4099597], - "chechło": [51.6444521, 19.2851366], - "chrusty nowe": [51.694788, 19.794322], - "chruszczobród": [50.399604, 19.328349], - "chrząstowice olkuskie": [50.3443643, 19.6856811], + "charsznica": [50.396206, 19.939557], + "chechło": [51.64435, 19.284839], + "chociszew": [51.923248, 19.267458], + "chrusty nowe": [51.694958, 19.794407], + "chruszczobród": [50.399964, 19.328722], + "chrząstowice olkuskie": [50.344364, 19.685681], + "czarnca": [50.823658, 19.938047], + "dionizów": [51.62238, 18.962759], + "dobroń": [51.62937, 19.240821], + "dobroń apo": [51.62947132635339, 19.24113911101419], + "domaniewice": [52.019438, 19.817617], + "domaniewice centrum": [52.011937, 19.791867], + "dorota": [50.282961, 19.280411], + "dziadówki": [50.398898, 20.008407], + "dąbrowa górnicza": [50.330015, 19.186444], "dąbrowa górnicza gołonóg": [50.343838, 19.226037], - "dąbrowa górnicza pogoria": [50.350237, 19.240319], - "dąbrowa górnicza sikorka": [50.389004, 19.299082], + "dąbrowa górnicza huta katowice": [50.335171, 19.259999], + "dąbrowa górnicza pogoria": [50.350366, 19.240605], + "dąbrowa górnicza południowa": [50.309231, 19.287153], + "dąbrowa górnicza sikorka": [50.388982, 19.298907], + "dąbrowa górnicza strzemieszyce": [50.312553, 19.262902], + "dąbrowa górnicza towarowa": [50.31574, 19.34722], + "dąbrowa górnicza towarowa dta r5": [50.329112, 19.377906], + "dąbrowa górnicza wschodnia": [50.30374, 19.298948], + "dąbrowa górnicza ząbkowice": [50.362681, 19.261282], "dąbrowice skierniewickie": [51.933357, 20.102488], - "dobroń": [51.62937, 19.2408212], - "domaniewice centrum": [52.011937, 19.7918665], - "dziadówki": [50.3993312, 20.008304], - "gajówka": [50.3945896, 19.8789521], - "gawrony": [52.1125446, 19.2198483], - "glinnik wieś": [51.8826783, 19.482078], - "głowno północne": [51.9790616, 19.7219812], - "goszcza": [50.1848818, 20.0609885], - "grotniki": [51.8871008, 19.3111142], - "izabelów": [51.6099964, 18.9118596], + "dłubnia": [50.104257, 20.023993], + "florek": [52.256973, 19.31812], + "gajewniki": [51.612667, 18.983022], + "gajówka": [50.39459, 19.878952], + "gajówka apo": [50.398487, 19.860375], + "gawrony": [52.112545, 19.219848], + "gałkówek": [51.730285, 19.738486], + "glinnik": [51.88648, 19.495034], + "glinnik wieś": [51.882678, 19.482078], + "gniewięcin apo": [50.540889, 20.044266], + "goszcza": [50.18507, 20.06102], + "grodzisk mazowiecki": [52.11039, 20.622632], + "grotniki": [51.887294, 19.311072], + "góra włodowska": [50.584803, 19.463704], + "głowno": [51.95976, 19.702356], + "głowno północne": [51.979062, 19.721981], + "idzikowice": [51.450413, 20.313402], + "izabelów": [51.610118, 18.914337], + "jackowice": [52.158162, 19.790303], "jaktorów": [52.087289, 20.553817], - "jarosty": [51.46071, 19.69306], - "jedlicze koło zgierza": [51.869226, 19.3209098], - "jesionka": [52.014288, 20.333155], - "jeżówka": [50.3993066, 19.8156448], - "justynów": [51.7309353, 19.6836105], - "kamień łowicki": [51.9887485, 19.7531105], - "kamieńczyce": [50.3273019, 20.0058296], + "jarosty": [51.460912, 19.693091], + "jaroszowiec olkuski": [50.343138, 19.623685], + "jedlicze koło zgierza": [51.869226, 19.32091], + "jesionka": [52.014375, 20.333423], + "jeżówka": [50.399307, 19.815645], + "juliusz": [50.272327, 19.225066], + "justynów": [51.730858, 19.683927], + "józefinów": [52.184261, 20.846965], + "kamień łowicki": [51.988748, 19.75311], + "kamieńczyce": [50.327431, 20.005632], + "katowice": [50.257402, 19.019517], + "katowice janów": [50.237443, 19.079588], + "katowice much. kmb": [50.226501, 19.010042], + "katowice muchowiec staszic": [50.225629, 19.042456], "katowice szopienice poludniowe": [50.258939642857136, 19.091745171428574], - "klimontów": [50.5252201, 20.0300258], - "kolumna": [51.6149075, 19.1959259], + "katowice towarowa ktc": [50.26555168506183, 18.984058522155077], + "katowice zawodzie": [50.2575, 19.055322], + "klimontów": [50.52522, 20.030026], + "klimontów apo": [50.503057, 20.02247], + "knapówka": [50.800386, 19.904408], + "kolumna": [51.614829, 19.195641], + "kolumna apo": [51.61493724221378, 19.196057563524075], + "koluszki": [51.745896, 19.819545], + "koniecpol": [50.777988, 19.711021], + "korytów": [52.02011, 20.495002], + "kozioł": [50.30814, 19.381136], + "kozłów": [50.481606, 20.015664], + "kraków batowice": [50.105436, 19.987454], "kraków grzegórzki": [50.05706910967742, 19.948248961290325], + "kraków główny": [50.071625, 19.947113], + "kraków główny kga": [50.080479, 19.935271], + "kraków olsza": [50.080061, 19.953799], + "kraków przedmieście": [50.085294, 19.950127], + "kraków płaszów": [50.033428, 19.977001], + "kraków zabłocie": [50.047518, 19.957954], "krosnowa": [51.86214, 19.922935], - "łaznów": [51.631578, 19.755299], + "krzewie": [52.235733, 19.171079], + "kutno": [52.232454, 19.331266], "lipce reymontowskie": [51.904968, 19.941536], - "łódź andrzejów szosa": [51.7415683, 19.6129333], - "łódź arturówek": [51.8155838, 19.4564138], - "łódź dąbrowa": [51.7359028, 19.5105118], - "łódź niciarniana": [51.7668757, 19.5074416], - "łódź olechów wiadukt": [51.723709, 19.54368], - "łódź olechów wschód": [51.729815, 19.594761], - "łódź olechów zachód": [51.724984, 19.559483], - "łódź pabianicka": [51.726238, 19.445335], - "łódź radogoszcz wschód": [51.826684, 19.4434202], - "łódź radogoszcz zachód": [51.821962, 19.4157797], - "łódź retkinia": [51.7403316, 19.4065924], - "łódź stoki": [51.7765953, 19.5105897], - "łódź warszawska": [51.8078014, 19.4713727], - "łódź zarzew": [51.7517065, 19.5132107], - "łuczyce": [50.1627204, 20.0744128], - "maków": [51.941988, 20.047313], - "męcka wola": [51.6090884, 18.8466629], - "międzyborów": [52.064104, 20.484027], - "mokra": [51.9780281, 20.1009976], - "moszczenica": [51.503484, 19.700385], - "ozorków nowe miasto": [51.9589092, 19.2696778], - "pabianice północne": [51.6699326, 19.3420092], - "parzniew": [52.156474, 20.7634074], + "maków": [51.94209, 20.046686], + "marków": [51.970417, 20.488172], + "miechów": [50.354736, 20.011395], + "mikołajów": [51.707113, 19.86112], + "milanówek": [52.125131, 20.667928], + "międzyborów": [52.064087, 20.483851], + "mokra": [51.977926, 20.101102], + "moszczenica": [51.503312, 19.700301], + "myszków": [50.572292, 19.336048], + "myszków mrzygłód": [50.544017, 19.377101], + "mysłowice": [50.242903, 19.135227], + "męcka wola": [51.609112, 18.846964], + "męka": [51.609197, 18.788177], + "niedźwiedź": [50.208383, 20.08272], + "olkusz": [50.274521, 19.570186], + "olszamowice": [51.095323, 20.068597], + "opoczno południe": [51.361784, 20.235511], + "ostrowy": [52.300084, 19.190193], + "ozorków": [51.973182, 19.265706], + "ozorków nowe miasto": [51.958731, 19.269729], + "pabianice": [51.659544, 19.322187], + "pabianice północne": [51.669933, 19.342009], + "parzniew": [52.156474, 20.763407], + "piastów": [52.18255, 20.842576], + "pilichowice": [51.254611, 20.121653], + "piotrków trybunalski": [51.400739, 19.68316], + "pruszków": [52.166883, 20.794474], + "przemiarki": [50.386207, 19.339948], "przyłęk duży": [51.839978, 19.916591], - "sieradz męka": [51.6151908, 18.7765752], - "sieradz warta": [51.6029986, 18.7303875], - "sierakowice skierniewickie": [51.9994066, 20.0602021], - "sierpów": [52.0183434, 19.2225893], + "psary": [50.733458, 19.815967], + "puszcza mariańska": [51.975243, 20.33859], + "płyćwia": [51.91692, 20.002434], + "raciborowice": [50.110772, 20.028175], + "radzice": [51.474389, 20.369496], + "radzice rd1": [51.48165813004324, 20.34247106598081], + "radziwiłłów mazowiecki": [52.003437, 20.299895], + "retkinia": [51.742787, 19.414996], + "rogów": [51.82167, 19.891377], + "rokiciny": [51.668983, 19.781351], + "rozprza": [51.303744, 19.661877], + "sieradz": [51.597706, 18.713612], + "sieradz męka": [51.615141, 18.77687], + "sieradz warta": [51.602933, 18.730225], + "sierakowice skierniewickie": [51.999239, 20.060611], + "sierpów": [52.018343, 19.222589], + "skierniewice": [51.965772, 20.145594], "skierniewice rawka": [51.97806, 20.222803], - "słomniki miasto": [50.2357763, 20.0766057], - "smardzew": [51.8711594, 19.4675247], - "smroków": [50.2745963, 20.046833], - "sosnowiec porąbka": [50.2720763, 19.2162914], - "stare grudze": [52.048301, 19.9013762], - "sucha żyrardowska": [52.023372, 20.360957], - "swędów": [51.905759, 19.5401203], - "szczepanowice": [50.30121, 20.0245475], - "wągry": [51.792048, 19.850209], - "warszawa powiśle": [52.2336891, 21.0281391], - "warszawa śródmieście": [52.2268163, 20.9957829], - "warszawa stadion": [52.2442524, 21.0439984], + "smardzew": [51.871159, 19.467525], + "smroków": [50.274596, 20.046833], + "sosnowiec dańdówka": [50.265584, 19.176393], + "sosnowiec główny": [50.276124, 19.120806], + "sosnowiec kazimierz": [50.289702, 19.232596], + "sosnowiec maczki": [50.26329, 19.268852], + "sosnowiec porąbka": [50.272076, 19.216291], + "sosnowiec południowy": [50.27346, 19.121119], + "sprowa": [50.592031, 19.883141], + "stara wieś": [52.227603, 19.423731], + "stare grudze": [52.046687, 19.899911], + "starzyny": [50.712617, 19.80142], + "staszic": [50.217862, 19.002562], + "stawiska": [50.252812, 19.107883], + "stryków": [51.911112, 19.597301], + "strzałki": [51.64255, 20.404691], + "sucha żyrardowska": [52.023202, 20.360439], + "swędów": [51.905839, 19.540258], + "szabelnia": [50.25872557123517, 19.11115209337257], + "szczepanowice": [50.30121, 20.024548], + "szeligi": [51.94288, 20.458482], + "sędzice": [51.628832, 18.57005], + "sędziszów": [50.565696, 20.054352], + "sędziszów towarowy": [50.572604, 20.071579], + "sławków": [50.294707, 19.37499], + "słomniki": [50.248288, 20.064203], + "słomniki miasto": [50.235653, 20.076836], + "słotwiny": [51.723528, 19.837022], + "tunel": [50.432452, 19.990493], + "warszawa centralna": [52.229352, 21.00581], + "warszawa gołąbki": [52.207959, 20.86062], + "warszawa grochów": [52.256293, 21.082326], + "warszawa główna towarowa woa": [52.21101727347063, 20.882946579487534], + "warszawa ochota": [52.225767, 20.990298], + "warszawa podskarbińska": [52.257436, 21.073236], + "warszawa powiśle": [52.233689, 21.028139], + "warszawa praga wpt m": [52.262735, 21.057615], + "warszawa stadion": [52.244467, 21.044], + "warszawa ursus": [52.19663, 20.88613], + "warszawa ursus niedźwiadek": [52.191406, 20.869629], + "warszawa wschodnia": [52.252217, 21.054745], + "warszawa włochy": [52.206912, 20.916761], + "warszawa zachodnia": [52.219998, 20.964118], + "warszawa śródmieście": [52.229429, 21.007285], "wiesiółka": [50.41458, 19.348087], - "wolbórka": [51.593322, 19.723408], - "żakowice": [51.7324899, 19.792779], - "zarzecze": [50.3633645, 19.6989847], + "witonia": [52.157055, 19.276704], + "wolbrom": [50.376063, 19.7722], + "wolbórka": [51.592972, 19.723238], + "wągry": [51.792048, 19.850209], + "włoszczowa północ": [50.851324, 19.943555], + "zarzecze": [50.363365, 19.698985], + "zarzecze apo": [50.354085, 19.690808], + "zastów": [50.12165, 20.064985], + "zawiercie": [50.473418, 19.423964], "zawiercie borowe pole": [50.510796, 19.399036], - "zgierz jaracza": [51.8638125, 19.4224654], - "zgierz rudunki": [51.8612048, 19.4374136], - "bednary": [52.105425, 20.0648738], - "florek": [52.25793230000001, 19.3189092], - "jackowice": [52.156489, 19.797672], - "krzewie": [52.235733, 19.171079], - "ostrowy": [52.300084, 19.190193], - "stara wieś": [52.227524, 19.423094], - "katowice tow. ktc": [50.26514850583024, 18.985295214353926], - "brynów": [50.24781474793173, 18.988202633684438], - "mysłowice": [50.2377849, 19.1416162], - "szabelnia": [50.25921852453205, 19.110331512666356], - "staszic": [50.2185092, 19.0015504], - "stawiska": [50.2516826, 19.1046828], - "katowice janów": [50.2375633, 19.0795012], - "żelisławice": [50.8070182, 19.8696468], - "czarnca": [50.82365750853256, 19.938046723789427], - "sosnowiec dańdówka": [50.2656236, 19.1744767], - "myszków": [50.573785, 19.330974], - "przemiarki": [50.3858426, 19.3402444], - "radzice": [51.4734704, 20.3734172], - "marków": [51.9680077, 20.4987857], - "warszawa zachodnia": [52.219998, 20.964118], - "warszawa centralna": [52.2282727, 21.0007336], - "warszawa wschodnia": [52.2529551, 21.0585454], - "warszawa grochów": [52.25569542546427, 21.08321530028934], - "kozioł": [50.3086134, 19.3829383], - "dąbrowa górnicza towarowa": [50.3292899, 19.3772192], - "dąbrowa górnicza strzemieszyce": [50.3111948, 19.2674549], - "dąbrowa górnicza południowa": [50.3118019, 19.2873408], - "sosnowiec maczki": [50.2585664, 19.2726664], - "sosnowiec jęzor": [50.2653748, 19.1971938], - "olkusz": [50.2750194, 19.5664442], - "jaroszowiec olkuski": [50.3423169, 19.6217697], - "zarzecze apo": [50.3563167, 19.6919101], - "wolbrom": [50.3758608, 19.7724272], - "charsznica": [50.3964022, 19.9348343], - "sędziszów": [50.5658651, 20.0549968], - "gajówka apo": [50.3991802, 19.8576832], - "warszawa gł. tow.": [52.2133153, 20.8969579], - "warszawa praga": [52.2786919, 21.0211558], - "koniecpol": [50.7779877, 19.7110206], - "dłubnia": [50.1024409, 20.0265218], - "kraków główny": [50.0717489, 19.9471738], - "kraków olsza": [50.0800609, 19.9537993], - "kraków płaszów": [50.0376337, 19.9711962], - "kraków bonarka": [50.0291998, 19.9464366], - "borowa górka": [50.2457515, 19.3293388], - "rokiciny": [51.668957, 19.781429], - "mikołajów": [51.70729, 19.860878], - "łódź olechów": [51.731575, 19.600367], + "zduńska wola": [51.611172, 18.941961], + "zduńska wola karsznice": [51.586386, 18.997937], + "zgierz": [51.844516, 19.421224], + "zgierz jaracza": [51.864083, 19.421951], + "zgierz kontrewers": [51.864761, 19.337628], + "zgierz północ": [51.869048, 19.384353], + "zgierz rudunki": [51.861205, 19.437414], + "łask": [51.604022, 19.108768], + "łaznów": [51.631401, 19.755111], + "łazy": [50.431537, 19.393546], + "łazy ła": [50.454503, 19.419129], + "łazy łc": [50.416128, 19.362989], + "łowicz główny": [52.104325, 19.956554], + "łowicz przedmieście": [52.093439, 19.948601], + "łuczyce": [50.162601, 20.07454], + "łódź andrzejów": [51.74104, 19.617085], + "łódź andrzejów szosa": [51.741568, 19.612933], + "łódź arturówek": [51.815584, 19.456414], "łódź chojny": [51.725265, 19.495086], - "łódź fabryczna": [51.7695843, 19.4696149], - "puszcza mariańska": [51.9757175, 20.3291426], - "bełchów": [52.0227275, 20.0358665], - "piotrków trybunalski": [51.410379, 19.684733], - "rozprza": [51.301571, 19.660205], - "kutno": [52.2273464, 19.3469387], - "dionizów": [51.6238954, 18.9618302], - "zduńska wola karsznice": [51.588904, 18.994908], - "sieradz": [51.6288322, 18.5700496], - "sędzice": [51.6288322, 18.5700496], - "sprowa": [50.5928548, 19.8827475], - "biała rawska": [51.7943361, 20.4394064], - "pilichowice": [51.255534, 20.122262], - "józefinów": [52.186091, 20.853216], - "gniewięcin apo": [50.5407133, 20.0442128], - "klimontów apo": [50.5096673, 20.0245994], - "radziwiłłów mazowiecki": [52.000292, 20.290428], - "słotwiny": [51.726217, 19.8323151], - "łódź andrzejów": [51.741174, 19.6167956], - "łódź dąbrowa pbsz": [51.749532, 19.513492], - "łódź marysin": [51.8001538, 19.4861385], - "dobroń apo": [51.629363, 19.240834], - "kolumna apo": [51.614231, 19.193488], - "borszewice apo": [51.609461, 19.0395], - "męka apo": [51.609401, 18.787825], - "zgierz kontrewers": [51.8647786, 19.3403229], - "chociszew": [51.9244267, 19.2670788], - "ozorków": [51.9724733, 19.2659008], - "łęczyca": [52.0488396, 19.1936852], - "stryków": [51.910608, 19.5934069], - "domaniewice": [52.020613, 19.8210089], - "baby": [51.538214, 19.717352], - "będzin": [50.309683, 19.140707], - "bukowno": [50.2642404, 19.4527971], - "dąbrowa górnicza": [50.330066, 19.186722], - "dąbrowa górnicza huta katowice": [50.3348137, 19.2601185], - "dąbrowa górnicza wschodnia": [50.3035812, 19.2992962], - "dąbrowa górnicza ząbkowice": [50.362681, 19.261282], - "dorota": [50.2827597, 19.2802615], - "gajewniki": [51.6126401, 18.9832791], - "gałkówek": [51.7302647, 19.7381744], - "glinnik": [51.8864801, 19.495034], - "głowno": [51.9596105, 19.7023042], - "góra włodowska": [50.584838, 19.4637633], - "grodzisk mazowiecki": [52.11039, 20.622632], - "idzikowice": [51.4513162, 20.314863], - "juliusz": [50.2723591, 19.2253232], - "katowice": [50.2572002, 19.0192343], - "katowice zawodzie": [50.2575, 19.055], - "knapówka": [50.8004523, 19.9043886], - "koluszki": [51.745896, 19.819545], - "korytów": [52.0207323, 20.4952086], - "kozłów": [50.4815391, 20.0155617], - "kraków batowice": [50.105436, 19.9874537], - "kraków przedmieście": [50.085232, 19.9501464], - "łask": [51.6040465, 19.1084591], - "łazy": [50.4314788, 19.3937441], - "łazy ła": [50.4549209, 19.4201804], - "łazy łc": [50.4160383, 19.3629156], - "łódź kaliska": [51.7611254, 19.4278092], - "łódź lublinek": [51.7198164, 19.3579216], - "łódź widzew": [51.7642333, 19.5366811], - "łódź żabieniec": [51.7963307, 19.4058366], - "łowicz główny": [52.104484, 19.956327], - "łowicz przedmieście": [52.0934391, 19.9486011], - "miechów": [50.3545392, 20.0112964], - "niedźwiedź": [50.2080982, 20.0826558], - "olszamowice": [51.0953234, 20.0685972], - "opoczno południe": [51.3617013, 20.2353386], - "pabianice": [51.6595443, 19.322187], - "płyćwia": [51.91692, 20.002434], - "pruszków": [52.1666541, 20.7943392], - "psary": [50.7333464, 19.8156698], - "raciborowice": [50.1104728, 20.0272571], - "retkinia": [51.742938, 19.4153611], - "rogów": [51.821831, 19.891602], - "skierniewice": [51.965816, 20.145592], - "sławków": [50.2947074, 19.3749896], - "słomniki": [50.2484671, 20.0641448], - "sosnowiec główny": [50.2759502, 19.120997], - "sosnowiec kazimierz": [50.2897017, 19.2325962], - "sosnowiec południowy": [50.2732817, 19.1209594], - "starzyny": [50.7125208, 19.801415], - "strzałki": [51.6421429, 20.4045625], - "szeligi": [51.9433014, 20.4586874], - "tunel": [50.4324523, 19.9904935], - "warszawa włochy": [52.206754, 20.916761], - "witonia": [52.1568872, 19.2764976], - "włoszczowa północ": [50.8511152, 19.9433871], + "łódź dąbrowa": [51.735736, 19.510468], + "łódź fabryczna": [51.769292, 19.473525], + "łódź kaliska": [51.761319, 19.427673], + "łódź lublinek": [51.719907, 19.358036], + "łódź marysin": [51.801592, 19.481859], + "łódź niciarniana": [51.766898, 19.507082], + "łódź olechów": [51.73038799039985, 19.57974715859407], + "łódź olechów wiadukt": [51.723709, 19.54368], + "łódź olechów wschód": [51.729897, 19.595345], + "łódź olechów zachód": [51.724955, 19.559246], + "łódź pabianicka": [51.726238, 19.445335], + "łódź radogoszcz wschód": [51.826553, 19.443666], + "łódź radogoszcz zachód": [51.821962, 19.41578], + "łódź retkinia": [51.740408, 19.406855], + "łódź stoki": [51.776595, 19.51059], + "łódź warszawska": [51.807801, 19.471373], + "łódź widzew": [51.764184, 19.537014], + "łódź zarzew": [51.751499, 19.513186], + "łódź żabieniec": [51.800486, 19.40417], + "łęczyca": [52.045818, 19.197291], + "żakowice": [51.732435, 19.792439], "żakowice południowe": [51.729271, 19.79076], - "zastów": [50.1216503, 20.064985], - "zawiercie": [50.473426, 19.423966], - "zduńska wola": [51.6111345, 18.9420577], - "zgierz": [51.8445164, 19.4212242], - "zgierz północ": [51.8691324, 19.3837377], - "żyrardów": [52.053226, 20.451341], - "brwinów": [52.1419599, 20.7193178], - "milanówek": [52.1250509, 20.6680661], - "myszków mrzygłód": [50.544017, 19.377101], - "piastów": [52.1825184, 20.8426063], - "warszawa ochota": [52.2257198, 20.990075], - "warszawa ursus": [52.1966861, 20.8862952], - "warszawa ursus niedźwiadek": [52.1913033, 20.869316], - "katowice towarowa ktc": [50.26555168506183, 18.984058522155077], - "kraków główny kga": [50.0799061, 19.9367001], - "kraków zabłocie": [50.0475183, 19.9579544], - "radzice rd1": [51.48165813004324, 20.34247106598081], - "sędziszów towarowy": [50.5713769, 20.0676007], - "warszawa gołąbki": [52.208117, 20.86122], - "warszawa główna towarowa woa": [52.21101727347063, 20.882946579487534], - "warszawa podskarbińska": [52.25723683904977, 21.073280170163514], - "warszawa praga wpt m": [52.2627351, 21.0576148], - "dąbrowa górnicza towarowa dta r5": [50.3290134, 19.3782002], - "katowice much. kmb": [50.2265011, 19.0100419], - "katowice muchowiec staszic": [50.2254501, 19.041815], - "męka": [51.6092500705406, 18.78817312185351], - "kraków płaszów pzs kpa": [50.0376337, 19.9711962], - "piotrków trybunalski towarowy": [51.410379, 19.684733], - "koło": [51.869226, 19.3209098], - "łódź dąbrowa pbs": [51.7359028, 19.5105118], - "radzice pzs r31": [51.4802427, 20.3618057], - "warszawa zachodnia peron 8": [52.2199517, 20.9620569], - "łódź olechów pzs r82": [51.730661, 19.600515], - "łódź olechów łoc": [51.730661, 19.600515], - "łódź olechów pzs r16": [51.730661, 19.600515], - "łódź olechów pzs r3": [51.730661, 19.600515], - "warszawa ursus północny": [52.1966861, 20.8862952], - "myszków nowa wieś": [50.573785, 19.330974], - "myszków światowit": [50.573785, 19.330974], - "warszawa główna towarowa": [52.2102911, 20.8812915], - "mysłowice wesoła": [50.2377849, 19.1416162] + "żelisławice": [50.807018, 19.869647], + "żychlin": [52.212624, 19.622523], + "żyrardów": [52.053226, 20.451341] }, "segments": { - "warszawa grochów|warszawa wschodnia": "ce}}Hcyt_CM|@[hBQjASpA_@`C]xBWdBU~ASpAIn@Ij@E`@Gj@Gj@KtAEv@Ct@Al@Av@?t@?r@?bA@rA@xB?V@~@?N?X@r@B~@Dx@Dv@Dl@Dj@Fj@@LF`@D`@F`@Hf@Nr@BPH^Nl@Pr@Rn@Rl@fAbDx@~BjAfD~AxEd@|A@Dj@`CLl@R|@RlAPdARzAHp@Hf@\\bBtArK`AnHe@tA", - "warszawa centralna|warszawa wschodnia": "uyw}Hqud_CuAoKGk@uC{T]}AS_BSaBIk@Ee@Ga@Ec@Cc@C]A[Ae@Aa@Ac@?_@@_@?e@@e@@_@B_B@]?c@?a@Ao@A_@A]AYEk@Ci@Gk@Io@kHgk@K{@My@OaAM{@Kq@Ko@sD{TMq@Kk@Ke@Mm@Qq@{@uDYoA[oAk@{BU}@W{@Y}@GQOc@Qi@Sk@Q_@CISc@Se@[s@Yi@We@GKMWQWEGa@o@iCoDS[OWQ[OUO]S_@Ui@Se@q@cBcBcE}FyNoG{OUi@Sc@Qc@S]Yg@GIYa@W]UYSSYYSSWSUOWQWMSIWMWIYKQEMCMCMAUEWCYAUAUAS?S?{HAQ?SAW?Y?WAYAQAOCQAUCWCoAMUCUEUCQCMCMCMCOEECGAECGASIOIQKQMKIKIMMOOMOOQMSKOOYOYKQO[KUo@kBOa@IYKc@[uAe@uBa@oCUgAg@_CqAaGmB_J{BeKs@aFQmAYmBDeBW}AU{AGe@Io@SuA", - "warszawa centralna|warszawa zachodnia": "uyw}Hqud_CHj@Fd@Jn@Lp@Lj@Jd@\\vAp@nC`@dBH^HZFXF^FZDZF`@D\\`@~C\\nCBPF^Fh@H`ALlALfBH~@Fh@Dd@D`@@HPtA|@dHRxAHl@Jp@Hh@Jp@j@rDv@`FFZHh@`@pCTzAJn@Jn@V`BNfA~@nG`AtGd@`DtBtNNdAN|@Hd@F\\F^F\\P~@@FXxABRDTLr@Lx@Jx@\\hCb@rDDZhAjJF\\PvAHp@LbAFn@Dj@Fn@Dr@J`BFl@B^Fn@Hn@Fh@Jt@xAtLLhAR~AHh@@L", - "warszawa włochy|warszawa zachodnia": "ess}Hwht~BiAyEMc@I_@I[I_@Kg@Ke@YuA_@kBw@sBa@sBQ{@Q{@S{@SaAUaAQw@cAoE_Iq]_DiNuAkGGUu@eDS{@i@aCsAaGc@mB?AEOAEESGYIYGYGYEQAGGYGYGYGYCICQGYAAEWGYG[EYGYCMCMEYG[EYG[EYE[GYE[E[EYE[EWCUAIAKCOEYE[E[C[E[E[E[AKAOE[E[AKEc@Ea@?AMgA]yCCYE[E[CYE[E[?EEUC[E[CQAIE[C[E[E[E[C[E[E[EYE[E[C[E[E[E[ACCUE[E[E[E[EYE[CWACE[AICOG[?EEUEYG[EYG[GYEYCIKk@GYGYGYGW?AGYGYIYGYGWIYGYIYGWIYGUm@cCYiAGYIYGYGWQs@GYESI_@G[GYGYEYG[GYEYG[CKCMCUG_@G[EYEUCSCMEYE[a@wC_@gCAEWmBm@gEIo@{AeLGk@CM}AeM", - "józefinów|warszawa włochy": "aro}Hs{g~Ba@eBaDmN{A{GuAaGsAaGsAaG}FeWaAkEQu@sAaGsAcGuAaGsAaGq@wC]}ACKqA{FAEsAaGuAcGsA_Gi@cC[sAMk@Qw@Qw@UiAWiAYqAWsA]}AQw@YsAYmAMo@Mg@Ke@YqA]yAs@}Cg@}BWcAUcA_@aBYgAYkAYmAq@oCYgAWiAgAyE]yA]}ACK[uAAGuAcGw@mD[uAI[o@sCuAgGi@cCsA}Fo@sCS}@Ou@UiAy@{DoAeGWmAYuA]aB_@eBs@yCG]i@_Ca@eBo@qCe@qBQu@Qw@s@mCe@gBm@}BCGCMo@{B[mAOk@Qw@Ss@Mm@Mc@Kg@I]sAaGaAiEMi@YmA\\M[sA", - "józefinów|pruszków": "aro}Hs{g~Bn@vCt@~CVhAFVrA`Gp@tC`@jBjAdFFZl@lCb@vBNp@~@rELl@j@jCR|@BLH^n@rCZlAPt@b@hB^zARt@bAdE@@T`ANl@DPT~@Rz@FVT`Av@jDVhAz@vDf@tB?@l@jCrA`G\\xA?@v@fDl@pCd@nBtAbGh@bCh@`CtAbGrA`GjAdFH^Pt@`AjEtAbGvSj~@tAfGBJtBhJb@hBdAxET~@\\|AR@XhB~AbHLj@`AfEZrAVdATbATdAj@pC`@fBLn@Lj@f@h@~@`EVfA@Dj@hCJd@bDnN", - "grodzisk mazowiecki|pruszków": "}x`}Hmzz|BwCiMm@oCm@mCo@sCeAyE{@yDqA_GyCyM_CoKgBcIkBmIcBwHEQUeAEKYsA_@aBWmAYkAg@yBgG_XiLgg@uLmh@]yAgMej@[qA[sA]yAWgAuQuw@]{Asd@cqB_@{AyRa{@m@iCwDqPkBeI?CiB}HYsA[qAACgByHYkAYmA[sA]{AGYKa@FGkCkLqYsoAmDqO]yAmCqL]wA[wA[mAyAqGwBaJmDkOg@qB?CQs@k@cC[wAa@iBaD}NI]aGsW]yAaGqWyLci@EMwI{_@m@eC[qAAGiAuEg@uBWcAWgAEOg@{BeAsEMk@o@sCoCwL}AwGmGwX{BwJaAkEoCwLwAgGeEqU", - "grodzisk mazowiecki|korytów": "}x`}Hmzz|B\\xALh@\\zAXhABJNl@HX`@`BtB|HFRhAfEl@`C~@~DFXhAbFDLbBtHb@lBrB`JpAtFp@vCBHH\\nCpLjCjLpE|RNj@Jd@d@pBVdAR~@DN@B?B~@~DjA`FrD~OnT|_AfCvKZxAj@~BbSz{@lEhRFT|D~P`Mji@lAjFXnAnCnLJd@Ld@R|@Rz@Nr@Np@Pr@Nr@Jf@Jd@x@tDVpAJd@Jf@Pr@Nr@Nr@Nt@Nt@Nt@Ll@Ln@Ll@Ln@Jn@Ln@Jl@Jj@Jl@Jn@Jn@Jn@DXHh@F^Pf@Lz@Jx@Lx@Jz@Lz@Jz@NpANnAPrANpATrBVtBjAbKRhBRhBJv@Jx@Hx@PtAPtAJv@Jx@Jv@Jv@Lx@Jv@Jv@Lv@Lv@Hf@Hf@Hl@Jj@Lt@Nv@Lt@Lr@Nr@Lr@Nr@Nr@Nt@Nr@Pr@Nt@Pp@Pr@Np@Pp@Pn@Np@Rp@Pn@Pp@Rn@Nj@Tt@HTHXRl@Pl@Pj@Rh@Pf@Pj@Rh@Ph@Th@Rj@Rj@Th@Rj@Th@Tj@Vj@Th@Vl@Vh@Vj@Rd@Td@Zp@Vf@Td@Zl@Vd@Vf@Vd@Vd@Vd@Vb@V`@Tb@V`@PXRXPXPX\\h@TZV`@V^^f@\\f@TZTZX^X\\X\\X^X\\X\\h@n@h@l@Z\\\\^\\\\\\^\\\\^\\\\\\\\\\^Z\\\\^Z\\Z^Z^X^Z`@Z^X`@X^X`@V^X`@V^V`@V`@T`@V`@T`@T`@T`@RZPXLXNRH^P^P\\N|@^`@PTHTHXJXJ^L^L^L\\J^L^J^L^J^Jb@J`@J`@LXF|A^HBh@Lr@PbATVFhIlB|EhArQfETDn]dIr@Pvv@pQTDbUjFvD|@rYzGPDF@jQbE~A^hJvBtt@zP", - "korytów|szeligi": "qho|Ha~a|BjIlB|ItBNBtBf@vBf@nDx@tAZtA\\vDz@dK`CfAVxXrGvg@nLlGxAtb@zJ^HxBh@ZFZHt@Pn@Nn@Nn@Nl@Pn@Nn@Pn@Pl@Nd@NZJZHn@Rl@Rt@Vr@Vt@Vr@Xr@Xr@Xn@Vl@Vp@Zr@Zp@\\p@Zl@Zl@Zl@\\l@Zl@\\l@^PHb@Xd@Xj@\\h@\\n@b@n@`@j@`@j@`@TNXRn@d@r@f@r@f@b@Zb@\\bZjT`At@r@d@p@f@p@d@p@f@p@d@p@d@PJ^Vn@b@TLd@Zf@Zp@`@n@^r@`@p@^r@`@r@^t@\\r@^d@Tf@TXLr@Zr@Zt@Zr@Xt@Zr@Xt@Xr@X`@N^NhM~Ej`@fOnCdAjG`CnEdBbDnAz@\\fHnCd@P`C~@pHtCb`At^", - "biała rawska|szeligi": "sac{Hiaw{B{@CwHU_N_@ch@yAaHS}[_AwEO?KWA}sA{D_ACqx@}BgAEw@Cw@Cu@Cw@Cw@Ew@Ek@Ck@ESAa@Ca@Cc@Ea@Ea@Ca@Ec@E_AKm@Gm@Im@Im@Io@Im@Is@Ks@Kk@IoJsA_AOuOyBkSuC}Eq@cIkA}Eq@{e@}Gy@M{sAoRaAOcAMu@Mw@Ku@KKAk@GUCa@Gw@Iq@I_@CCAYCc@Cc@Ea@Ce@EI?[Ce@Cc@Cc@Cc@CC?c@Ag@C_@As@AQAa@?q@As@As@As@?u@As@?iAAku@SaA?wVGY?w|@W{WGi\\I}CAgBAmB?{AAgA?eAAiC?gVIuC?kLEu@?u@Aw@?u@Au@?w@Aw@Au@Ai@Cg@AYAc@Ac@Cc@CK?YCc@Ce@Cc@Ce@EC?_@Ee@Cc@Ec@Ge@Ec@Ee@Gc@Gc@G_@EEAc@Gc@Ge@Ic@IWEMCc@Ic@Ic@Ic@Ic@Ke@Kc@Kc@Kc@Ke@Ku@Su@Ss@Us@S_@Ma@Mg@Ou@Wu@Ws@Ws@Wu@Ys@Yu@Yu@Ya@Os@YsFuBqJsDoEeBa@OwGiCgHoC", - "biała rawska|strzałki": "sac{Hiaw{BtM`@b@@fLZ~HTlDJdTn@dDHn@Bn@Bv@Bv@Bv@Bx@Bv@Dv@BbB@xBN|BP~Cd@pC^nC^t@LdF~@t@NpCn@rBf@nD`ArH~BdaAr^tAf@zMlFxgBlq@ht@pXxBt@lBp@dCp@jBf@jGvAdB^bC^|B\\xBZ|BT|BNzBD|B@bb@l@`FJpx@bBn@@vV^n@@`e@t@t@@n^j@rdAvArgAlBfELpEZpKtAnHlA^HhATps@vOlAVrDx@n@L|Cp@jh@dLdATfQxDbDr@", - "idzikowice|strzałki": "wa`yH{v~zBsFkKYk@iDsGg@_AyE_JoAaCEGuc@oz@aTca@oQ_]sf@c_AqNiX_EwHc@y@}BkEwLwUmIeOaHoKsDkFcIeJcImIuImHsG_FsGsEuGuE_JoGeAu@}ImG}KgIgJuGgLmImA}@kJyG_JoGaJcGiH_EcFaCqG{BuFgBsF{AkGkA}HkAcKs@wAK{c@yAWA}CQ}I[_Y_AiCIqTw@kCKaV_Ae`@wA{YeAi\\iAgw@mCcGUco@}BaJ]sX_AcEOmLc@kIYYAuHYkb@{AuJ_@oIYkSs@uLc@sn@{BsGUwEQkYgAcVy@sDMgXcAkXcAyCMwHq@wHw@yCc@gIeBeIgBaE{@{Dw@s@OcTuEoAY", - "idzikowice|opoczno południe": "wa`yH{v~zB~NzXz\\ho@f@~@b@z@p@nAt@tAfCzEFJ|BhEz@`BT`@Vz@Zl@v@zAn@lAPXvE|IzAnCrCtE~@zAzBjD~CfEzArBdC`DrCpDxCbDnKbKjEpD~ErD~PhLfUjOlSzMpW~PvUrOjn@na@l`@lWjJdGxRnMvb@fY|DdC|A`A`B~@`B~@dBz@hEpBdCdAtBx@vBt@~OhFlCx@\\JvJ|C\\JzCfAfFrBvL~FrC~A^V|DjC|EnDvDvCdErDvEtEjEvEzF|GrDpExMfP", - "opoczno południe|pilichowice": "sqnxH{eozB`@f@|D|Ej@t@nAzA|KbNfLjNpIjKbFhGnDjEfHzItMnPdHpItJjLlE~EpErErHtGzHbG~g@|_@lmAz}@xs@`i@lg@r_@rGpFvFtFrFzFfHzIzJtNdm@|eAfZ`i@~c@fx@Vd@vBtDdO~WfOxWnD~FpDzFzExGbFnGrFjGxF~FvHxGbHhFhHxEhq@z_@x@d@", - "olszamowice|pilichowice": "wpzvHwsnyBsA?qQ@mX@qJ?sF@qC?u@?gG?qH@_IEqFKoFQcEYcEe@eEk@eEu@eE_AcEeAkE}AyFqB}i@kTwCkASIkd@{QuL{EgSeIqLyE{y@w\\mMeFch@oSe@S{_Aw_@aAa@om@kV_JmDc`@{OiMqEECwC_A{EuA{EkAwGqAsAWyNgBSC_MaA_j@wD}Fa@sgAwHkf@gDmRsAcg@mDaGa@cFa@QCoFo@gEo@wGqAsG}AgFgBcFkBeHaDaHqDgSeLeSiLqBeAaGiD", - "olszamowice|włoszczowa północ": "wpzvHwsnyBfL?vCAvn@CdI?zmAGhVAvJArdDO~F?hS?|QAbA?li@CjKN`FV~E`@xH`AlHpA|LbDnF~AhEnA`OjEnJpCbjA~\\~C~@nu@|T|UdHpYrIlRxF~@XlMvDXHtLjDfGjB`Bf@nOpEdOrEnDpAjDtAlB~@jGxCxElCtExCrFzDpFnEtFbF~S~Sj[l[xBxBlWtWnFpFpXzXfGjG~FvGbM~OlDvEbJzLxn@pz@j\\pc@jA|AbArA~_@dh@j]xd@tP|TvAlB`g@|p@xK~NpKlNDF`DbEfDzDjDtD~BbCdC~BjC|BlCzBhCnBjCjBxE|C|EpCtDnBxDfB|DbB`E~AvHzClTtItShIvEhB|X~Kt@X|GlC|OnGvGjCjGbCzUjJlDtAlNtF", - "knapówka|włoszczowa północ": "y}`uHmqnxBeAw@aDeCoEmD{MgKWSoAeA_E{CcMuJeMyJu[oVwHaGwH_GuLkJ}D}Ce@]go@}f@yJuHaDeCaEaDaK_IcHoFi@c@aBoAaBsA}AmAaBoAmA_AcAw@uB{AoE{Ck@]oAy@aAi@kAq@uAu@iCqAgB{@mBy@yAm@sIiDkBu@wOkGkDuA", - "knapówka|psary": "y}`uHmqnxB~BhB~@r@tT|Pj`@pZ|HdGJHdIrGnDzChD`DvGxGxOlQrOjQ`]l`@xR|Tpt@lz@pQpSxj@ro@pKjMbDnEtHfL`FxIlBpDrDpHPb@rDnIvDxJhFhOlEnOtEpP\\nA~BpIxVd~@lKz_@r@fCHB", - "psary|starzyny": "mzstH}f}wB~BpI^tAlDfMPp@Rn@Pj@x@fCTr@rI`[xDdNv@rCb@bBh@~Av@nBbBbDt@lAx@bAz@`A|@z@|@r@bAr@VNRJj@X~Al@zA\\|ARbADbABvBKx@Kx@OvAa@hM}E~KsEpOuGfAa@pEmA", - "sprowa|starzyny": "ilxsHejjxBw@XEByDtAmI|C{g@lRSHmFpBkBp@wBv@aFhBcFjCgBhAyCjCiBnBwAlBwOzUcMhREFal@h|@KBkXna@}PlWoWh`@o]rh@}JdOkF~HaNdSq@`AuBlCuAvA{AtA}ApA_BdAcB`AcBr@C@gBn@{Ad@{Bd@iBb@}h@bHyVdDovA`R_~@vL}B^iB`@gBf@_Bj@_`@pPoiBtw@mRjIaJzD", - "kozłów|sprowa": "stbsHghdyBuBe@a@IyBg@A?]IyEeAwGyAmAWiB[mB[{AW]DmCe@w@Kq@Ks@Gw@Iu@Es@Cy@Au@Ay@@u@Bs@Bu@Dw@Hm@Fs@Jm@Jg@Ju@Ne@Ls@Pq@Rq@Ti@ROFq@Xo@Xm@Zo@\\s@`@m@^q@d@k@b@o@d@o@h@i@b@o@n@k@j@k@l@m@p@i@n@g@n@g@p@eB|B_ClCaApA_FtGeIbLyHxKo@|@w@hA]f@qApBcAbB_AfBy@bBy@nBYt@_@bAs@tBq@zBo@dCm@`Cc@|Ba@bC]jCe@zDQ`BqFnj@{Grq@}Dv`@gAxKQxB]tC]nCc@rCg@lCk@hCo@fCq@`Cq@pBq@jBq@`Bu@bBy@~A{@zA}@xAcAxAgAvAA@gAnAkElEgKjKqAnAwAjAuAdAyA~@{Av@yAp@aBl@aBf@{DhAg@LmFdBoHzByErByCfByCdCmAlAmBpB}DlEo@r@sGbHMLo}BfeCiLdMwBdC_BvBmAlB}AtCiA|BaA`CwA~DeAlDcAjEqAxGmBfKwVrtA{@~DyArGw@rCqC|H{BxEeChEqCtD}BfCaCrBw@l@EDcBfAeCnA{D|AyAj@cPbGqSxH{f@zQC@mE`Bib@zOuFtB", - "kozłów|tunel": "stbsHghdyBdCh@n@Nb@Jj@P`@L\\LLFHB^Nx@^`EdBDB^N|@`@fAd@vB~@|Ar@|FlCvBbAbChAj@Vr@\\vBfAPHr@^j@Xd@Vf@Vf@Vn@Z|FlCZNfCjAvCtA|SvJ`RrIl@Xh@Vh@Rf@Rj@Pf@Nh@JTDXDd@Fl@Df@Dd@@\\?^?b@Af@Cl@G\\ENAf@Kh@Kf@Ol@Qd@Sf@Sh@Wf@Yd@[h@_@d@]d@a@`@a@f@i@\\a@b@i@^i@`@k@^m@^q@Zm@\\u@Xo@Zy@JAPg@Vy@Xy@ZkA|AsFRu@Ro@Vw@Vq@Xw@Ti@Xm@\\m@Zk@\\g@JQLOFKZa@\\c@X[XY\\[b@_@b@]d@[`@Ud@Wb@Qf@Sd@Od@Mh@Kd@If@Gh@Ef@Cd@?h@?f@Bd@Bh@Ff@HXHLBf@L`@Lf@Rd@Rf@Vb@Xd@Xd@^`@\\`@^^`@`@d@^d@Zb@`@l@Zj@\\l@Xl@Zr@Vn@Vt@BDPh@Rr@Rr@Rx@TbARbAN~@PhAN|@J`An@fGPzAHx@Lz@Jv@Nx@Px@Nt@T|@\\pAfJj[zElP`CjIL^b@dAZp@P\\R^Vd@Vb@Zb@X`@X^XZ\\\\ZZ\\X`@Z`@Z`@V^R`@Td@TfClApDhBfBz@x@`@`@Tb@R", - "miechów|tunel": "{zirHsmcyBuBy@sC}@mBy@cBq@kAe@_@O}D_B_Bg@}A[{AMoACkFLaGReBDwBHa@@_A@wBCeBKsGu@i@BkR}ByR_CcCMcCByBTMDqBb@uBt@sBhA_C`BwBbBuB`Bm@d@]XuDtCcE`D}BbB_B|@kAd@uA^gBTS@c@By@?sAE{ASwA]sAi@eI}DsFsC}@a@w@Wo@SaAQcAKeBCoBH{AVaAVs@VMDw@^uAv@oC~A}@j@yDxByDtBcA`@gA`@kBb@eCb@eANwEr@oFt@UDeNrBgBTsCb@yB\\wBf@oAb@kAh@s@^w@d@o@f@aBvAaAdAaAjAs@dA}@zA[n@_@p@_AjB_FxJm@lA_MtVqCvFa@x@_@n@]j@[f@[b@a@f@Y\\a@`@]Z_@Z_@XIFUN_@TEBWNe@Re@Ra@Nc@La@Jk@LeEv@iNnCeF`AgNpCaARe@JgATe@Hg@Ha@Hq@Hy@Hg@DwBReBN]BgE^_DVe@BS@W?e@?e@A_@Ae@Ga@Eg@Kg@KKESGa@Mg@Sa@QoCsA", - "miechów|słomniki": "{zirHsmcyBzAl@dLtEnDdBvInDVL`Bn@|Al@pBx@|B`A|A|@nA|@`A~@z@`AdAzA|@~Az@hB~@~BzB`Gl@rAp@vArAvBnA|A`BxA`Ar@bBz@n@V`B`@b@FrANzA@tAGjBYvBs@pB{@~@a@vDeBb@QdDwAvT}JbH_D~GiDv@e@zAeAVQdAw@fDgCtA}@~CgBnJaFvHcE|AcA`Au@bC{BzDgDfBwApA}@|C{AlD_AbDi@jFy@nEiAfDgB`DkCxCcDjMqNrFeGz@}@dByAxAcAvEqCtCeB~CiBnGuDjBoAf@]`Au@z@w@JIdCiCjMmPxC}DrCuD`AkAdAiAdAaA|@w@xB{AzGeEPIvA_Ad@YfE{B`DoBpAs@pAm@fFgBhAa@pHeCtHiClGyBf@QxFoBvAk@vAq@v@g@l@c@zAoA~AgB`BqBdQyTvFiHbAkA~@iAhAiAFGr@m@z@o@jAy@|BuAjEaCdB_A`B_AtL{GrBkA|GwDnC{AhAo@dAo@nPgJvGsDlC}APIRM`BcAv@k@t@q@`@c@nA_BjAkBhBgDn@iAr@gAh@s@d@i@l@o@l@e@j@c@j@_@xAs@f@Sd@Ob@OnBk@JEjBi@ZW^MZIdBg@`A[hA[pHwBj@Q|EwAdA[TGr@O", - "niedźwiedź|słomniki": "sgmqHskqyBiE{AmAc@eBm@oCaAwAe@eAUuAQoAGkA@kAFgARgAV{@X}@b@{A|@{A`AeElCwExCwD~BeAf@}@\\{@Z{@RyAVeAJmAFcA?y@CcAGsFg@mBSuGo@sGq@}Fk@gHs@wBSwAMcAE}@@qAHw@Lu@NaAXaA`@{@d@y@h@o@f@_Az@{AjBo@bAw@vAuAtCm@tA{BdFq@~A{AfD}@tB_AhBmAhBgArAuJtKgCpCgCpCa@d@{ElFo@r@}AdByAjByAhBm@n@o@h@u@n@cB`AaDlAMD{Af@kA`@i@Pc@Ni@Ni@LoCn@", - "niedźwiedź|zastów": "sgmqHskqyBzDtAfDdAxBp@x@XbExAlFjBfDpApDxAtChA`A^fKxDx@XrE|AjAd@|@b@z@f@t@j@lAdA^`@d@h@`AtA~@`BdA`Cr@pBl@xBd@`CTvARzANxAF~@Lt@@ZJhCHxCFzCJnDJbCJnAV|B^bCf@zB`@|A`@pAf@nAz@bBx@tApAhBj@l@p@n@bAv@`Al@fBz@h@NrBb@fAJfA@fBEfBY~Bq@xAq@~A_ArAu@t@c@b@W\\SbCyAxAy@fBu@rEiB|@]x@WvA[~Co@~A]x@U`A[~@c@bAi@r@g@z@q@z@y@~ByBjAiAdCcCfA_Az@m@t@e@x@c@|@_@v@YzKyCtDaApD}@jBi@`AYt@YpAk@hAo@zBwAdBmAdCcBjCmBjAy@VQh@]bBmAbAs@~@w@hAgAn@s@l@q@b@m@h@q@`A{Aj@aAf@_AjAeCrCkGtEcKXm@dAaC`A{Bt@qBb@wAd@iB\\iBb@}CVcCViBH_Ab@gFZaETeCVmCVkBZcBDQZyAd@cBd@sAj@wAt@{Az@uAd@q@t@_Aj@k@dA}@v@m@fAk@p@YbA[~@U~@On@EnACjA@rBH~BJxBJjBHxAFZ@l@@nERvCJzBJfEPhEPxAHxAL`AJtARz@Lz@LnC`@nBXtBXdANr@Nz@Tj@Rf@Pn@Zp@^|@p@|@v@z@|@x@dAz@tAx@|Az@jBlAxCP`@t@dBdAfCbA`CrB|EtBbFRd@JTr@bBr@bBvBbFzClH|ArD|ArDrL`YjBpEJT^z@xCfHXr@`FzLnCtGnClGpAzC`CpFjAlC", - "raciborowice|zastów": "mezpHkqfyBsIo_@{DcQyBsJ_AmESmAEUMs@g@yCmAsHqFy\\}Fi^Mu@cHec@{@gF}@qFm@oDk@mCo@kCm@uBe@uAe@oAe@kAy@qBAAy@mBWo@", - "kraków batowice|raciborowice": "_fypHqx~xBmCaKcA{Ds@wCUkAc@_Ca@uCUoBKeAIeAMeBIwAGwACwACmAAaB?iA?iABwCNyMJyHD_I@mEDiCDiCD}BDqBFyCFwCJuF@gBDqCDmC@oABsB@M@gAB_C@_A?[?s@A}@Cu@Cw@?EEs@IoAMkAKeAOeAO_AQaAeAyEgA{EkBkIkBiIa@eBe@wB_AcEi@cCq@yC", - "kraków batowice|kraków przedmieście": "_fypHqx~xB`@xAp@`CPp@bA|Dr@lBr@jCnD`NpBpHv@zCf@fBV`Al@vBp@rBdApClA|CjAzCjIdTjC|GdHtQh@rAbAhClA`DfCpGnC~G~AbE~@~Bj@vAb@bA^v@^r@Tb@\\j@Vf@NVz@vAp@jAbAhBzAhCbBzCb@r@pA`CXf@~ApCx@xAh@`AXf@V`@TZLRTZVZVXRTVVVTTTXTTPRNRLzA~@lBjAl@\\PJ`B`A", - "kraków główny|kraków przedmieście": "msrpHy|vxBSLOJQJy@`@]Py@\\m@XoAh@MFMFg@Tm@XWJSJ[LMFu@\\[LKDw@^a@PSFYH[HYDC?SBW@O@U?QAQAUC[EWEKCMCw@Q}@QOEk@Mg@Ki@OICWIa@O_@Qa@SYOMGk@[cDoBWOuAy@cAm@wBqAmJuFgAo@yCgBeBeA]U", - "kraków główny|kraków zabłocie": "msrpHy|vxB`As@d@_@b@[b@[TO?Ab@UDCPIHEXKXK\\IXG\\Ed@E`AChDGhCCVA\\?^AR?ZBJBF?b@JVHVJJDJDNJLHPH`@RNFVJPFb@Ld@JNDPBFTj@AJARKL?|BC`DGL?v@A`@AhBERAVAH?j@CXA~AGVAXAf@Al@AdFG^AfEGf@C^Ch@Eh@Gb@Gb@Gd@Kd@Kb@Mb@Md@Qf@Qf@Sf@Uh@Yb@Wf@[b@[b@[d@_@PR`@E\\]\\]d@i@f@m@^g@jA{A~@sAd@m@|BaDfA}ApAmBDG|HoLBE^i@@CdCqDf@w@`BcCZe@", - "kraków płaszów pzs kpa|kraków zabłocie": "e~kpH_s{xBW`@kBnCkC|DILMRSXSXQRORUXGHIF]`@g@h@c@b@c@f@_@`@a@d@]d@_@f@_@h@k@z@]d@INaC~CABSh@y@lA]XKNW`@yAfCm@|@gBlCmBfCgA~AgOrSb@|@", - "góra włodowska|psary": "gzvsHooxuBrCon@lDow@FmAvAm[hDiu@\\}HP_FZcMJsHFsH@cF?cFIgMUqMa@oMgAuSkBmUsBgRgBeMqB_MwB_LaBsHAAgBsH_@{AyAqF}AoFaBkFcBiFqK_\\sAgE{AeFMc@iDmMsCcMsAyGoA}GiA_HcAaHkA}IiAiKGi@s@sHi@uGc@uGUkDQkDWwFUwFUgKKqGIuGAmH?mH@uAXg]LsMLqNF_F?i@FoG\\w_@VqTBqAH_FTkIV}H\\cI?QDs@fCmj@b@kJdFqgAx@_QpDuw@j@cN@c@XgJPgKFmK?oKIiMUeMY_JCu@g@sKo@eKu@aKkAsLg@wEi@uEuBaPa@yCgQerAaMi_AaD_VoCqSwCuTmA{IsA{IoAqHe@gCo@iDaB_IiB}HoD_NOk@iFmP_CwGgBuE]{@}DeJgE}I}@eBgDeGmD_GoDuFuDkFyD_F_E{EcEkEkEgEqE_EwEuD{EgD_F}CeE_CSKwDkBkD}AyEiB{E_ByEsA_FiA{Cm@{Ce@}Cc@}C[_DU_DQ}HSsDAcEFU@}ADwBJaEXmD\\mDd@yIzAoTvEovAvZqK~B[FgLfCgLdCYF}IjB}IvA_Gp@_G`@aGP_GBeEEcEKeEWeE_@qFo@oF_AmFkAkFyAcH}B_HqCyGcDuGyD{E_DmBsAiBwAsEwDsEyDyKqJoD_DqPwNiC_CgCaCgCeCaCiCwA{AOQqB{B{BwCgCeDaG{ImDyFACeD_GeDoG}CuG{BeFyBmFgFsNeC}H_@iA{CoKqHgXwAkFSw@cJg\\yDkNkKs_@gL_b@wH{XcGkTc@}AcF{Q}@eDcC{IgYodAy@wC_HoW", - "góra włodowska|zawiercie": "gzvsHooxuBIhBiAvV{EbfAk@tMEbAm@zOa@pOKpJEnJBfMPhM@n@b@dPx@jQh@|Hl@|Hr@|Hv@xHbAzHPvAxAnKvBvL~BtLlDjO|AbGbB|FNd@rAlE@@tAfEvDjKpB`FpCvGtDzHzDtHdEfHtBhDpAtBxDfGdL|PpBvChBfCjB~BlB~BpBxB^`@pCrCxDhDjCzBlCtBzBbB|B|AnErCrEfCzDnBbAb@zB`ArHlCrDfAvD`AzCn@|Cj@`H|@p@Hj@DVBVBz@F^Bp@Dl@Dz@Dn@B~@Bt@Bt@@t@@t@?t@?v@?r@Av@Az@Ar@Ct@Ar@Et@CzBOj@Ev@Gt@Gv@It@Kt@It@Kv@Kt@Mr@Kx@Ov@Ov@Qt@Ov@Qr@QNEh@Mx@Ut@Sv@Uv@Wt@Ur@WdA]hKuDjKwDzCiAff@gQdKsDhG{BnOuFrEaBp@Wx@[t@[p@Yh@Wn@Yr@a@r@_@p@a@r@a@t@e@l@a@v@k@r@i@n@g@p@m@n@i@n@k@n@o@j@k@f@i@v@y@l@s@j@q@j@u@h@q@l@w@f@q@r@cAxFgIvAqB~BeDnFoHhA}AfFiHvAoBj@u@j@u@|G_JX_@|AsBv@gAPUn@{@LShBqBj@u@R[bKmNvQyV\\W`RgWrBqC`EwFp@aAj@y@h@y@`@k@DGn@m@hBsCf@w@b@s@d@q@Za@^e@\\]Z[XW\\[XSVQDCZS\\SZO\\OZMZK`@MRETGb@If@IFA`@Cl@Eh@CbBG^AXQxBI|CKfBU\\A^AHMvBIv@Cx@En@Ev@EdAKbAId@Ed@Ch@C~Kg@nBIbH[nFWtDQx@E|@EnDWdCOp@EtCMj@C\\Ab@?jCA|@?d@A`@A", - "zawiercie|łazy ła": "}aasHyvpuBd@A|AGTA~AIrBIdS}@tDQ~G[jJa@~BKx@C\\AJAr@An@@l@@t@Br@Dl@Hl@Hr@JZFnAZf@Nl@Pb@PFBr@Zh@Vp@\\d@XRL\\Rf@\\l@f@l@d@j@f@VVRRXXVXVXN?`BjBb@h@PR\\XRP`@RxAz@v@p@dAz@", - "łazy|łazy ła": "w{xrH{yjuBk@}@GMGKKWMWKWUq@MYISMWOYKQEES]Y_@eBsBm@s@sG_IKM{CuDuCmDmCgDaGgHa@i@S[U[S]Q_@Qc@Oa@Ok@Ka@}BcJOi@Ma@Oc@Qa@Qa@Q[U_@U[g@m@kAsAOQkFcG_DqD[]WYOMEESOUOWO[MYK[IYG]EYCyBM[C[G[G[MWKYOYSWQWUWWWY_AcA_BeBa@c@u@w@g@k@MMIKMOKMOUY]]]i@m@_LyLq@u@q@w@u@{@s@y@uFoGa@g@SS_@[[Wc@[]QUQUOOK_Aw@", - "łazy|łazy łc": "w{xrH{yjuBZd@PXJLNPpAzAxAbBr@x@zBhCRTh@l@n@x@|C|Dd@j@VXHJz@bA`LpMvNpPDDrGrH|@bAl@p@f@p@HHPTNPb@n@^f@h@|@`@n@b@v@`@r@`@|@^t@^|@Zz@^`AZ|@Z`AV`AX`ARx@XfAR`ARhARdAPlANbANjAHl@BZLhA@NFt@JlA@PDl@FfANlDDr@TjFDnADv@pBfd@", - "dąbrowa górnicza ząbkowice|łazy łc": "wmkrH_~ptBAAc@c@oAmAaB_Bg@e@SUe@c@oAmAUSQOECKKUQSOoA_AkEcDaD_CSOCCo@e@KWeBqA_CeBiBsAwDoCcS{NeBoAYS]Uc@YuA{@}@k@}@k@_@Ya@WoCsBi@m@mBwAqMqJo@g@g@_@g@a@c@_@i@e@w@q@s@s@m@m@w@y@]a@YYo@w@o@w@q@_Ao@{@m@{@m@aAg@{@i@}@k@gAg@cAe@cAe@eAe@iAe@oAa@eAa@oA_@iASo@YaAMa@I[a@yAYkAQs@K_@[{A[}AI]Ms@Ms@Ki@UsAG_@M}@Ks@Ge@OaAGm@AIMcAAOOuAMsAOaBM{AOqBIqAa@qGQqCSuCSgDEi@W}DIkAEs@c@uGa@sGe@kHAUk@yIm@qJw@yLC_@IiAyBo]IqAI}@AQImAKgAOuAMgAQuAO_AGa@EUEYSeAUkAUeAYkAU_A[iASm@EQ]eA[{@_@aA_@}@c@cA]u@c@y@a@s@g@y@_@m@CGi@u@a@i@g@m@i@o@m@o@g@k@cKmKaAcAY[UYY[W[U[CCYa@g@u@]g@KSGIS_@_@q@e@}@Sc@KSISSe@Wm@Si@Se@Sm@M_@Sm@Sm@Oi@Qi@gC{IYaAY}@Qi@O_@Uo@Um@_@_A_@y@_@u@a@y@e@y@GK[g@e@u@c@m@g@q@e@m@g@k@g@i@i@g@II_@]m@g@i@a@k@a@m@_@o@_@OI[Qi@Uo@YA?k@Ui@Qm@Qc@KEAi@Km@Mm@Kc@GgC_@YEOCOCe@KGC_@Ie@Oi@QUIUKSKOGUKYOo@_@a@WSOMK_@Wa@]_@]e@c@EE_@_@e@g@a@i@c@i@a@o@AAOUOUa@q@_@s@[o@AA]s@Yo@[w@Yy@[{@Wy@Ok@Ok@Oi@Ok@Mk@Kk@Mk@Ko@Ig@Kk@Io@Io@Im@AEK_AMeAKeACMEe@ACEg@Gk@Gm@Ei@Go@Eo@AKGgAGyAIyA?OE}@UyEe@wKYaGEmAEw@eBo`@Es@", - "dąbrowa górnicza|dąbrowa górnicza ząbkowice": "}aerH_lbtBNoAJ{@Hu@Fm@Da@D_@Dc@Dg@Be@Ba@Dg@@a@@]BW@]?[@]@_@?a@@_@?c@?_@?_@?]Aa@?[Ac@Ac@A_@Cc@Ci@Ck@A[C_@C[Eg@Ee@Gg@Ee@Ge@Gc@E[G[EYE[G]GYGYG_@IYEWI[IYGUGWGSK_@Ma@Oe@Oc@Qe@?WuDuK[y@{AmE{AkEWs@cKcZiCmHu@{BqAuDyAgEwAeEqCcIc@qAeJ}WuA_EOc@KYqCeI}C_JaBwEaByEmAoDaByEmBsF{AmE}ByGcCiHs@oBqDoKIQgLs\\a@kAg@{Ak@}Ae@uAyCwIaC_HcKaZyJgYY{@[y@[y@Yw@Yo@Wo@]w@]w@[m@[m@Yk@[i@]m@_@k@a@q@a@i@a@k@a@k@KMOSUYW[UYUWwAcBsB}BY]YYoB{Ba@c@KKWWeAgA[YSSe@c@YYm@k@]]_@_@a@_@_@_@", - "będzin|dąbrowa górnicza": "obarHmlysBkA~@gAx@KFaBlA}AhAiBvAoC|BcBbAcAz@cAx@a@X_@VYR]Ta@V_@T]Pu@\\s@Za@N]LQFk@Pq@No@Lm@Ji@Fq@Fw@F]Bg@Bk@@]?q@?w@Aa@Ae@As@Eu@G_@Ek@Go@Io@Kk@Mm@Mm@Om@Uo@Wc@Q[OYOCAa@Sm@_@k@]o@c@o@e@k@e@m@i@m@g@i@k@m@o@g@k@g@o@a@i@i@u@e@s@c@q@_@s@a@u@e@_Aa@}@a@{@a@cA]aA]_A_@kA[eA[eACKOm@Qs@Qu@S}@Oy@Q{@QgAO}@QkAGg@CWOeAk@uEcAiIK_AgA_Jm@aFcAkI]oCY{BUiCC[i@kGQsB_@qECQCa@MoAyC_^Gq@Eg@Ek@Ek@Eu@Gy@KoBc@eI]gG[gGCq@Ci@CYA[?[Ac@A_@?]?_@?[?a@@a@?[@[?A@O?Q@U@WBY@[BS@UBS@UD_@Fm@BSFmAHw@~@iI?G`@iDFi@Fm@@IFm@VkCl@_GHu@NuAnBgQh@uENoALoA", - "będzin|sosnowiec główny": "obarHmlysB|DcDj@g@n@k@t@q@dBcBx@s@z@q@\\W`Ao@dB}@l@Wh@UjDeAvAa@FAnA]t@Q|@QvBSn@At@?nBH`BPbFh@`Gp@hALfMtAH@tEh@zBX`AJlAHfBRh@DzAPx@HhAL~DXz@JJ@l@HbALp@Jb@Lz@RzBt@rAp@rAv@`D~Br@p@z@~@j@r@d@v@\\j@Zn@b@`A`@bAN^x@tBp@fBb@x@NZj@bAVp@Xr@pA`D~AdEpAdDFPzAvDrAjDbBhErAjDfApCfBpEhBvEbDlInA`DHV@@N\\rAjDVr@z@vBdAlC`AfBT^VZZ^", - "katowice zawodzie|sosnowiec główny": "k|vqHwthsB?_CB{AD}ALsDRsFDoAHoAL_B`@sEPaC@kBLgEL{EVaHH_EF}FDyC?qDG}FKyFSqGYqGi@wIm@cJcDif@UkDOyBMyCOuCo@aIu@cJa@cFCa@YiEM_CIcAEw@W}D]sD]kD]iEw@{KWiC[mBe@uB]mA}@oCeA_Di@{AcAgCkAgCqAyBi@y@{@kAmA{ASUw@}@cAgAkC{BoCqBqLwIeHeFsCsBe@]uCcC_BkA{B_BwAeAAAi@c@i@e@i@i@k@q@q@eA_AeB_AwBi@wAoA_Do@cBUe@cB{H", - "katowice|katowice zawodzie": "ozvqHeuasBFcAV_D@CF_A@CH_ABc@FmBJmCf@qORoFLwDBgB@m@?kD@U?wA?cB?CAc@?kB?AIu@?k@AW?uAC{DEmBKuEOwFCcA{@g[g@oLw@}RMgDIqCAm@CwC?aCDaEHwEDeDBkABqAEq@ByCAsCC_C", - "włoszczowa północ|żelisławice": "ozjuHeevxBjDtAvOjGjBt@rIhDxAl@lBx@fBz@hCpAtAt@jAp@`Ah@nAx@j@\\Zd@|CtBhAx@dDdChCrB|AjAbBpA`BpAdBtAdFzDnFfEhBxAzCdCpAdAzCdCfA|@rAfAzAlAlQtNpR|Ob@`@`@^d@f@b@d@b@h@^f@^f@`@l@^j@\\j@Zh@^p@Xj@Zn@Zr@Xn@Vp@Zz@Xv@Vx@Tv@V|@T|@Tz@R~@P~@TjAR`A|RzdAtBzKbq@jnD~AnIxBnLR~@Lh@Nr@T`APv@Ln@Nt@", - "grodzisk mazowiecki|żyrardów": "}x`}Hmzz|B\\xALh@\\zAXhABJNl@HX`@`BtB|HFRhAfEl@`C~@~DFXhAbFDLbBtHb@lBrB`JpAtFp@vCBHH\\`@bBLf@Jb@Rt@z@hDTx@Rx@d@nBr@zCn@hCRv@xA|FNl@Nj@\\zADNd@rBdApEXjA~@`EdFtTXnArK`e@jE`RZrAXpAXnAzCvM\\xAfZfqAFT`FfT^dBDNjZlqAbAjEdBtHlAjFZtAb@hBRz@zKxe@pS||@\\zAtCdMlDdOxEpStUlcA\\xAlChLjJba@bEpQ|AxGFTdBvGx@pDzCrM`CbK\\xApCxLhBzHhBzHrAzFtAdG@FJ^BJBHpMzj@dDnNbClKd@rBzApGbAjENr@HXbAnE~@|DfAtEnCrLFXlHh[lBhIt@bDrEzR^|AJf@", - "radziwiłłów mazowiecki|żyrardów": "yhk|He~yzBQu@kA{E_BeHi@cCGUS{@[sAe@yBQs@k@iCmBoIk@kCU_AS_AYkAYoAoAsFe@sBCMwBmJiDgO{@uDe@qBe@uB{AyG[oAuCmMe@qByBuJo@oC{EcT]yAs@}CS{@g@wBeIg^iDgOeDyN_@aBqAyFeAuEOs@GWI[sDgP]yAcCqKmAqF{AuGiAeFcAmE}@{DuAkGy@kDy@qDyD}PgD_OyHc]WcAAICIGWAGAGOq@cAoEuAaGo@wC}A{G[yAs@yCsMsk@aAiEeBwHw@iDgDeO}B_KI]S{@yEwSYuAq@uCqA}FYqAYoASy@Oq@Oo@UcA]wAgBwHWoAYmA[qAYqAmK{d@qFeV]{A{@wD[qAYqA[qAYqAwKge@yGoYkDcO}FuVCMWkAwBaJkWihAmAiFiB{He@qB_@}AEUw@gDmBiIEQeAqEgAyEo@qCqCuL{BsJYkAkBaI", - "radziwiłłów mazowiecki|skierniewice": "yhk|He~yzBBJBHlBfIZtAZpAXpALh@Nn@TdAZnAXnAjBlIZtAZpA`@hBlBnInIz^Lh@ZxAxEvSnCpLZvAlChLXrAZrAlBhIZrA@FXjAbAtFNn@r@|CNp@XlAXlArE~RZnAXlABP\\xAJb@hDdOrC`Mb\\zwARz@Nj@ZxAf@vB`BjHtFlVn@pCxJvb@vCjM@JBHH\\tAdGPt@Px@Nn@Ln@Nt@@DLj@Lt@Lt@Lt@Lt@L|@Jp@Hr@Jv@Jx@@HFh@Fr@Ht@H~@Fp@Fv@Dp@@R@JTjDX~DT~CF~@F~@Dv@Fx@Dx@Bt@Dv@D~@Bz@Bv@@v@Bt@@v@@z@?r@@z@?|@?h@?dA?~@AvA?\\EdRCfG?^ArGClHCfIIt^If_@CzE?|A?r@@t@?x@@v@?t@@t@@v@@v@Bt@@v@Bt@Bt@Bt@Bv@Bt@Bt@Dv@Dt@Dv@Dr@Fr@Dr@Fr@Hr@Fr@Hr@Hp@Hr@Hp@Jp@Jp@Jp@Jp@Lp@Jl@Ll@Jj@@@RfATfAJf@bC|LZ`BfBzI\\dBv@zDfChMhClMhEjTvBpKBJH`@Jd@P|@P|@Hd@Hd@Hd@Jh@Hh@Hh@Hl@Fj@Hl@Fd@RbBDZF`@Fb@Hh@Hh@DZBLJh@Hb@Jj@BLFXF^TfAtA|GFZNr@lAhGl@vC`@tBJb@n@dD", - "płyćwia|skierniewice": "w_{{HevayBsBaEGMAA}@gB}A}CUc@g@aAg@aAuAoCaEaI}@eBUc@iAyBWUMWi@cAc@{@c@w@OWKSS]S[Wc@W]U]W]W]Y]W[Y[Y[WYYYYY[W]YWSYW[U[S]UWQYO[Q]Q]Q_@Q_@Oa@Qa@Qa@OkKeEc]cNq@c@}D_ByImDoAg@m@Uo@Yo@Y]O_@Q_@QWOYO_@U[S]U[S[UYW[W[WYWYYY[YYY[Y[Y]W]Y]W_@W_@Wa@Yc@S[OYOWIOYg@ISIOUe@Uc@Se@M[EISe@Qg@Sg@Qg@GQK[Oc@Qi@Oi@GOIYOk@GSAIEMMi@Om@Mk@Mk@Mm@AKGYKk@Ki@Ik@Ii@Ik@G[AMGi@Ii@Go@Io@Gq@Ea@AMEq@Go@Eq@Eo@Eq@AW?OCe@Cc@Ac@Cq@Aq@Aq@As@Aq@?q@?q@?q@?q@@s@@q@@q@@q@Bq@@q@@W@YDo@Bq@Ds@Fq@Du@Fq@Ds@Fs@LuALsAJyBJeArBqULoAZmDBUp@wHv@uI~BsWx@eJZkDZmDZoDZgDFo@Da@JiAv@yIVqCrBiULsAfA{LLuAtB_VxAaPpCc[Fm@fAuLzAwPDg@zAsPt@oILuAtF_n@NcBLsADg@Dk@Fu@Fu@Du@Ds@Ds@Du@Bs@Bs@Bu@?A@e@?KBu@@u@?]@U?u@@u@?O?c@As@?u@Au@As@Au@?K?OAMCy@Cy@Cm@Ck@A]AWEq@Eo@Em@Eo@Em@Go@Gq@Go@Iq@Gq@Im@Io@Io@Km@Ko@Km@Km@Km@Km@GWEUMk@CMIa@Oo@Om@YgAWiAsMyg@w@wCOk@Ok@Ok@Oe@Me@Oe@Oe@Oe@CIK[Oc@AAOa@Oc@Se@Se@Se@Ue@Se@Uc@Uc@ACS]KQIQOUGKU_@Wa@U[ACW_@W]Y]W]Y]SUEE[[Y[ECSU[Y[YGESQ[W[U[U]U[SCOWOYQA?OIMG]Q]O]O]O_@M]M_@M_@M_@Kq@Us@QuDgAyh@oO_HqBwBm@{Bq@eA[qBk@wKaDOE_@M_@K_@M]M[M[M[MYOYMQKIE[Q[SYQ[SYU[UYUYUYWGGQQYWWWUWWW[_@EGSUOSW]W]W]U_@W_@U_@S]U_@CEO[Q]Q]Q]O[AAO_@Q]M[O]M]M_@M_@M_@K[K[I]K[I]Om@Mk@Mm@Om@Mo@Km@AEKe@c@}AMq@Oq@Ic@_@qBEQOw@a@sBQw@a@sBACsAyG", - "płyćwia|rogów": "w_{{HevayB~A|Cd@~@b@|@dBfDdBhDzElJl@lAbNdX`DlGl@fA`EdIzBlEBFP\\`CvEzAvCZl@`@v@^t@Td@Td@R`@FNLVRd@Rb@Xr@N^N`@Tl@Rh@L`@Ph@Pj@Nf@Nf@Lf@Ld@H\\DPJ`@Hb@Lf@Jf@Hd@Ln@Jl@Jl@DZDVJp@Ht@Jp@Hv@Hr@Ft@D\\BXDp@Fx@Dt@Dr@Dt@Bt@Dv@@v@Bt@@t@@z@@r@?t@?t@?v@Av@Ax@At@Ar@CzACvAQrIY~NCvAm@j[CtAe@xU]pQMnHEnBCjAG`DI~DG|CA^IvDOnIChAAfAAl@Al@?l@?l@?n@?n@?j@?H@p@@n@@d@?N@t@Br@Bt@Dr@Br@Dh@@Z@J@J@LFx@Ft@Ft@Hr@Fp@Jv@Hp@Jr@Jr@Jr@BHHf@Lp@Lp@Jj@Lj@@DJb@Lh@Lb@H\\HZNf@Lf@Nd@Nf@JXDJNd@Pd@Pd@Pd@Rd@LZDFPb@Td@Td@Vd@Td@HLLTT`@Xb@V`@V^V^X`@V\\Z^X\\ZZRVTTTRRT\\XFFRP\\XZVZT\\TZR\\RZR^R\\P\\PNDNH^N\\L^L^L\\J`@H`@J\\FB@H@b@HF@VDHBRB~@NNBlDf@|ATvARr@L~^nFnEn@xCb@dP`CbNpBnHfAt@JhFt@xNvBfJrAl[tEF@hJrAnFv@t@LtWvDD@F@\\DTDpDf@lARH@nBX|RrCfJtAhMhBt@Jv@LzAT`IhAhIlA\\DxYhEnC`@v@Vn@JF@l@Hp@Lp@L^JB?ZH^J\\JB?^L^NPFLF`@N\\P^P^P^RTNNJFBDBPJVPZV^VRNFFf@`@XVVVTTZZXX^`@PTPTRVTVRXX`@X^JPd@p@d@r@n@bAhAfBdA`BzK~Pl@n@pSv[t@jArEhHXd@vCpExA|BpArBrAtBjAhBfGpJh@x@T\\RZd@r@lAnBHLb@p@hAfBrBbDb@n@pDxFbBjCNTnBzC^l@", - "koluszki|rogów": "{ryzHe_~wB]Qg@YUMSKwBoAoAs@SMcB_As@c@i@YcEaCaB_AiEaCkEeCSMuAu@kGoDu@a@qF_D_B}@}A{@aCuAc@WwAy@mAq@cAm@_Ai@WOe@WcBaAg@YEC}b@mVe`@uTo@k@y@c@GEe@WeEaCqI{EqMqHs@a@mDoBoI{E}@i@OICAsI}EcE_CkIyEeK{Fs@c@mHcEa@WiDmBu@a@s@c@c@Wa@Wc@YGCWSa@W_@Ya@Y_@[EC[Wc@_@EEIGQOYY[Y[[[[_@_@]_@]_@]a@]a@]c@[a@]c@[c@[c@[e@Yc@i@w@i@y@wHsLqG_Kk@}@wJiOsGaK_D_FeF_Io@cAe@u@i@y@me@yt@{IeNk@{@k@}@a@o@c@o@oCgEa@o@e@s@g@u@]k@uBcD_MqRc@s@gFcIcCyDqHiLcNcT", - "koluszki|rokiciny": "{ryzHe_~wB\\P\\PZNZNPHVJr@Zr@Xh@R~An@VJ`A`@zGlCXJXJf@Pf@Nd@Lv@Tl@Nh@Nd@LhAZ`@JFBLDVHVHVHTJd@Pb@PnDvA`@PhAb@`Bn@f@RlCfAfU`J`@P^L\\Nh@Pf@Rh@R|@Z|@Zl@Tf@Rd@Pt@Xt@X|@^|@\\z@\\z@^l@Xl@Vl@Vh@Vl@Vj@TZNn@VjCdAhDtApAf@`LnENHxj@zTp@XjMbFlAf@hBf@pPzG`c@|Prn@rVFBrAh@dBr@ji@fTzDzAlDvAdM`FzH|CzClAnAd@jAf@dG~BlEfBtAj@pAf@vPzGf_@`O`C~@", - "baby|rokiciny": "y`qyHm`jwBsp@mWwHwCYMcE_B}D}Ayu@}YaE_BcE}Aq@Wm@Uq@Uq@So@Qo@Ms@Mo@K_@E_@E[Cw@Em@Aq@Aq@@u@Bm@Ba@DWBSBS@s@Jo@Lq@Nq@Pm@Po@Vk@Rg@Rub@pQuv@~[o@Vs@Xo@Ro@Ry@To@Ni@He@Ha@D}@Hs@Do@Bq@?o@?q@Ao@Es@Gm@Gu@Mk@Km@Mm@Oa@O[Ig@Qa@Ow@Ym@WuNsFOGiEaB}CkA[KmDuAgDoAcE_BwFyBwAg@wHuCy@o@gf@_RwBy@cC_Am@Wi@Uo@[g@Ww@c@w@c@}@k@o@c@}@m@u@i@{@q@s@k@s@m@o@k@o@o@m@m@s@s@e@i@yOwPmI_Joc@qe@sLkMqAwAqAwAe[y\\uJiKwFgG{A_BoW_Ymm@ep@KMa@_@o@q@c@a@s@q@w@q@y@o@w@k@w@k@w@g@}@k@u@a@k@[o@[_FqBiBq@kGeCyEiBgEaBik@uToHsCmXoKiJsDGCcFmBqGgCQI", - "baby|piotrków trybunalski": "y`qyHm`jwBZLbC`A`@NpEfBhDpAt@XnC`AnAd@z@Zx@ZfBp@vLvEj@Rl@VxqAlg@xk@|TjBr@jAd@dFnBd@PrKfElAf@bI|CfCbAn@Tl@TfA\\x@Tv@T~@T|@N|@Nf@HPBn@Hh@Fj@DzCVpo@nFtBRfdDnXJ@N@`MfAbDXrZdCbBNdBN|s@tGjZpCrGl@xYlC|W`CnIv@vP|Ah]~CF@D?fZnCpSlB`Hn@^D~BRfBP^Dl@F`@DhK`A", - "piotrków trybunalski towarowy|rozprza": "{axxHqtcwBpDZd@FJ@J@vIv@v@FL@bBPp@DxCXlFXxBPdAJlCV|o@`GzKbAP@hCV^BfCTtFh@zJ~@pEb@L@pE`@|v@dHtTpBrEb@fCTjD\\tDZzBRnALjCVp@FlCTvBRpW`CbVvBzNpAxD\\xEb@hEb@~SlBlGl@hRdBb[rCzv@dH|v@dHtCXnc@|DbBPrBPzAP\\Dv@Ln@J^HXDx@Px@T|@Tx@Vx@Vx@Xx@\\t@Z~@b@r@\\z@d@d@Xl@\\p@`@p@d@nI|FZT|B`BzIhGxB|A~AfAbBlAbEtCbJpG", - "warszawa gołąbki|warszawa włochy": "w{s}Hsmi~B_@sGc@_HA[k@aJEq@Eq@IsAGq@Gq@Gm@Ek@Iq@Iq@Ge@UwASuAk@wDyAoJMw@E_@Ig@Gi@Gg@Ee@Gg@Ei@?GC_@Ek@Cg@Ck@Am@Ae@Ae@?OAW?m@?a@?a@@]?_@@i@Bi@@e@Bg@Bi@Dk@Fo@B[B[J}@L}@D[F]DYD[FYJe@He@Jc@Lc@Ja@Ja@Pi@Pk@fKs\\hB}FzBkHxBcHrGySzEqORo@n@qBNg@BKHUFUBKH]Ha@F[He@Fc@F_@F_@Da@Fg@Ba@D]Be@Ba@B]@a@@a@@_@@Y?[@c@Ae@?e@Ae@A_@Cc@Aa@C_@Ec@E_@Ee@E]E]Ie@G[EYMq@Om@[yAUkAQs@aAmEsAcGAIk@iCc@qB_@{As@_D_@uA[mA[kAqAwEOi@Om@I]K]Ia@J]Mc@Kg@I]sAaGaAiEMi@YmA\\M[sA", - "bednary|warszawa gołąbki": "}y_}Hm|myBc@eCc@eCgAiGUkAWoAUoAWoAmAkGMs@Q]mBsKs@eEqAoHg@uCeA_GSiAIa@c@cCg@oC}@eFSgAeIkd@UmAUmAMm@Kk@S_AQs@Oq@Qq@YgA[oAwAwFqOmm@]sAQo@iAoE{FaUw@{CWgAq@iCy@cDq@iCWcAoG}VqEiQOo@kCcK[oAsD{NoByH[mAWcA[iAQm@Om@Qm@Qk@So@Sm@Oc@CICGM_@O_@GQKYSi@Ui@Sg@Wi@Sg@Ue@Se@Ue@{EgKu@aBsD_ImC_Gc@_Ag@gAmAgC?A_CaFWk@?AkAeCcKqTwByEiAaCg@eAQa@sAsCkEmJuFsLu@aB_AoB]u@c@}@Ue@Uc@Qa@CCUa@Wi@Yg@KQMSS]S]Ya@W_@W_@U[W[ACY]W]WYWY[][[]][YYW][[UYWQMMKm@e@m@e@u@i@q@g@oByAaD_CaDaCe@]MK{JoHyFgE{EmDIGgIeGqEgDoDmCWQ]W[UcAw@i@a@[W]UUSIG]Y[YOMMM[Y[Y[[Y[[[AAWYUWUYSUSWOSOSGGOSU]GGQYQWGIYc@Ye@Ye@OUKQYg@[k@[k@c@u@EI[m@GICEsAcCaCmEgFkJqEkI[k@We@CEuCmFiAsBa@u@c@w@EGyN{WUa@Q]aHgMgBaDg@_Ag@}@eDeGMUOWiL}S_@q@eBaDoCaFQ[cB}Co@iAg@aAi@aAuAeCm@iAkEaICCcCsEoDsGsAcCcGyKiE}HeG{KqCgFqBsDg@_Ac@u@c@w@U_@Ua@Wa@W_@Wa@U]QUACUWEGEEGKGIWYWYWYY[YYYY[WYW[W[W[U[Wa@Y_LeI{@o@aHaFaHcFiE}CgCiBgAw@aGiEGG}C{BaD_CGE{CyBm@c@]W_@W]UYSGCYSYQYOYQ[O]OWMWMOGa@Oa@O_@M[K]MgRaGECeBi@_@K_@M_@Mk@Uo@Wu@]g@Wk@_@k@]sAcAaA{@EE_Ay@kBeBkCeCuHgHs@s@u@y@s@y@q@{@g@u@U]Wa@a@o@c@{@a@s@_@u@{@mB_@aA_@aA]aA[cAy@oCaAcD[aAI[sAuECIwAcFuAmFgCyIoCcJeAmDuAiEaCiHsAcEaAeDi@eBa@sAm@sB[gAUu@Su@Qq@Mo@Qy@Mw@QiAOeAOyAKyAI_BEyACsAAoA@sA@oAF_BFyAH{AJ{An@qJV}DHeCFw@vB{[tKkaBnBqY`@oGjGw_ArCwb@NiCJ}BFmAD}AFaBFyBD_CFmCjAcl@nDkgBp@s\\`Bex@DwAHiEL_GB{@?MD{AF{ADoAHgBJaCL{Bz@}OfGsiAlDkp@jB}]l@qKzDut@@I`HwpA\\kGnBy^FsAdFe`AlAwTFgA\\oGTgExDws@pOcuCtFmdAn@oLlOcsCvAyWpB{^fBo\\dC_d@`AwQdBo[pB__@\\_Hb@sH?M@IlBy]zA}Xf@gJhAaTv@oNl@}K^eH`Coc@tCuh@ToELcCFgAF{AFsADoADqAD}A@cAB_B?kA@_B?yA?aBAcBY_k@?SEiJ?OEcHC}EA{CGiJEuJYci@AeAAsCw@kfBGwLEyJA_@?M?SIkRG_LAaAOi^GmM?MEqHGiMGgMCeACiAEmAEgAMeCKoAKoAMyAOmAOqAQsAIg@QcASiAa@uBc@mBe@sByByI_@}AsAmFEOwJy`@oNkk@kKub@q@mCwCwLwGeXm@iCa@uBUuAQmAMcAKoAGeAGiAGqACmAAqAA{D?gFA{_@A}J@_BBwCBcBF}AHaBd@_K`@oIDoBBwAB{A?eB?{ACwACmBGsBIgBKoBeAaPu@aLsBg[e@uHoBoZw@wLiAkPI}@QkBUiBq@iEq@kEwByMo@iEe@yDYiCWoCiBmX{Ems@iDqg@uBm[g@sHa@eG}@gNoAmRo@uJa@aGSeDGy@Ck@Ck@Es@C}@E}@C{@Cw@AaACaAAaA?{@?c@?Y?}@?_A?}@@oA?y@@y@BmDZg_@BoDNgQP{TDiF@qBDeFB{A?}AByA@yA@}ADwEBmCFiI@cA@eA@{A@yA@wA@wA@qEFoO@eB@eB?K?K?]@sB@}A@iB?UFcHFcH@}BXg]@aB@yAB{A@eA@eARgPFcGD}C@c@?MB}AJyI?K@qAB}A@uABwA@}BH_IV_[P{T?K^we@BiB@kBBeB@iB@sA@uAHcJ@q@@s@d@qj@DeG@uA?sA?w@?y@?w@Aw@Aw@Aw@Aw@Ai@AMCw@Cy@Ew@Cw@E{@Eu@AICi@C]a@}GWgE?AS}Ca@eHG_AGw@Ei@Gu@Gq@Gs@Gy@Ea@W_DOaBI}@OmBk@wGGu@Gw@Ek@G{@Gu@Es@C]", - "bednary|łowicz główny": "}y_}Hm|myB@D|@~EHd@RbAPhAPhAPjAJn@Hp@Hd@Hf@DVVtA@LBJH^Hd@nGh^X|AdFjYzCrPTrARhA|@`FhAfI~@hFdAdGrC~Op@tDpFjZ|Fb\\RfAX|AnAbHhEzUvChP\\hBRjARhAJn@Jn@Lv@Hj@@BHp@Jr@Hr@Hn@Fp@BTDXBZ@J@JBTBZDf@Dr@Fx@Bf@Bb@Bd@Bd@Bj@Bt@Bp@B~@@f@@j@@p@@p@?t@@r@BdBDvE@hB?b@BbBB~C@fAB|ABlAF~D@R@`ABxABvA@xADvD@dAFnIP~QDdF?h@BzB@z@@p@@p@@v@@v@Bv@Bn@Br@Bp@Dl@Dl@Bj@Dj@Dh@Fj@Dh@Fh@Fp@JlALjAhBjRVnC@FH|@JdAFd@Dd@Dl@Dj@Dl@Dh@Bh@Bf@Bj@Bj@Bh@@h@@h@@h@@h@?p@?r@?Z?h@?h@Aj@?\\Cn@An@Ch@Ah@Cj@CZA\\C^Cb@Ef@Eh@Eh@Eh@Gh@Gd@E^CVG`@E^Gb@Ib@Ih@Ib@I`@Kl@Kf@Kb@Kd@I^I\\Qn@K`@M^M`@Qj@Qh@Sh@Qd@GPKTSf@Uj@Wh@OXOXMVS\\QZWb@QXQXU^{@tAABILiBvCGJy@nA]j@]j@W^GJ]j@cCzDW^}@vAiAfBaBlCc[zf@U`@W^oApB_CxDk@~@g@t@e@t@U^}@vAcA~AcA~A}@xA", - "jackowice|łowicz główny": "ayi}HmvywBxAmKvAcK\\aCdCkQ`Fe^|CuTbAmHnA{IlA}I|CuTlFo_@nA_JpAgJpAcJnAeJf@sDb@sDPaBNcB^cEr@gIh@mGFy@dBqSjEah@nBgULaB`@wEV}CV{CxH{}@l@oHh@iGLsAp@eIn@aIdB}RnC}[j@{GHaA`BsRJoALoAJ}@Fq@Ho@Hu@@QFa@Hs@Ju@Jq@Ju@Fa@BOLq@F_@BQLq@Lo@Lq@Nq@Nq@Lm@Nm@Nm@H_@FQNq@Ro@Li@Pm@Pk@Po@L_@l@uBfCoInAiErAmEdB_GbDqKdEmNfH}Ut@eCtFaR^mApDwLbCgIz@sChCuIfEoNbAgD@G~DyMzDoMJ]bHsUtBcHrB}GrL{`@Rq@DMZcAX}@V}@Pi@Ne@FSFQNe@Na@Na@Rm@L]L]Ti@Rg@P_@Vk@Xm@JSRa@Ra@Ta@Vc@Vc@R]LSZe@Ze@Xa@T]V[HMBC\\c@\\a@V[VWTYNORSRSRSVUXWVUTQXUXSXUZSXQPKVQVOXOj@]l@[r@_@FCFE\\QhB}@`@S`@SxAu@lDuBPKB?ZQ^S^Uf@Yl@a@TOZU\\UDEXSXSXUz@q@XWRQTSTS^_@RSRSPQPQPQZ]Z_@p@u@X]PURUNSj@s@f@u@\\e@Ze@NSDIf@u@Xe@JOv@oAbA_BfAeB", - "jackowice|stara wieś": "ayi}HmvywBsAtJuAtJ{@fG{@fGwBnOgAxHIr@UvA{DzXeB~Lq@`Fs@xEg@dD_@zBYxAYxAs@`Dk@xBm@vB[bAMb@M\\y@bCyArDk@xAm@vAcNd\\qFpMoDpIaA~BsO|^gG~NeC~FaA~BaA~B]z@aAbCoAdD_@lAa@jAs@dCu@pCs@rCiBdIGVuHr\\oBrIwH|\\aFvTqBxIw@lDw@jDmAnFuFjV_DlNaDnNkBdIgDfOgLpg@aL~f@yG~YmMhk@cBnHcCtKqBbJuBfJuBtJw@~Ds@~DmExViDnRyDrT{DvT{DnTgOzz@uEnWkCbOaJvg@kFfZAFUlAk@~Ca@~Bc@`Ce@`Ca@hCa@dCSrASvAa@fDYlC[rDYvDWtDYvDgA|OEd@u@pKe@tG_@jFWpDUbDeA`OcAlNiArOEl@YbEOxBMvBSdEGtAE|AGlCAfAAnAExCAvCAvKGzKIfTAxCi@puAKn[Wfs@ErISrh@U`PG`BI`BKfBKbB{AjRqGby@qCx]cL`xAeBhT_IpbAyIbhAq@tIW~CcBfT_IvbAsBlWoHn_AgArNyAlRUdEOdEI`FCtE@~CH|EZdIZrFhAtSxA|UDn@`@rGp@lLTrDbAlPt@vL|Cvg@Fz@", - "kutno|stara wieś": "}sw}HkuauBWM@EjAyEbB{GDOH[Ja@R{@T}@VgAHYFWNs@Rw@Lm@Jc@BONm@^gBf@eCFUd@eCPaAJg@PcALm@Jo@Jo@Lm@Jo@Jq@F_@BSLs@Hg@?CJs@Js@Hm@Hu@Hs@Hq@Hs@Fq@De@@IDo@Do@@EBe@Ds@Ds@Bo@Bq@Bs@Bs@DqA@i@@i@@a@@c@ByADuCBo@D_DBqA@o@@c@?WHyEDaBv@wf@^eTBoABwA@wABwABwA@y@?y@@y@?y@@w@A}@?{@?{@Aw@Au@A{@C{@C}@Cw@Cu@Co@Ce@Ag@Eq@GwACa@Es@IuAIuAu@mLWsEGu@Eu@{H{oAw@{Li@yIgGubAAKsB}\\", - "krzewie|kutno": "ihy}Hgj_tBM_EMyDKqDOsE]sKC}@E}ACo@Cm@C_AC_AA}@CgACy@A{@C_BA}AAwAKoKKaKKcKWgYg@oi@CiBUeXQiQAaAYmZq@cu@CeBEsEa@yb@?o@CqCAiACiAGcHQwQOiP?a@]m^AgBY_[Ya[}@caAEwFCgBMmMc@qf@AyACwAAy@Ay@Au@Cy@A{@Cq@C{@Ey@Cs@Ey@E{@Eq@Ca@CWGy@Eo@G{@Iy@E]AOIu@Gu@Iu@OqAEa@Io@SiBY{Bu@wGQ_Bw@wGu@uGE]Iq@CYEWIw@Im@Go@Iw@Iu@Gs@Gm@Gu@CSCc@Ek@Cc@AOEq@Es@Es@Cu@Cs@Cq@Cu@Am@Cq@Au@?i@Aq@?s@?k@Au@@w@?o@@s@@u@@q@@}@Bq@Bq@Bs@Bs@Bo@Dq@Dq@Bk@@KFu@Du@Fm@Fu@Fq@Hq@Hy@Hk@Hk@Ho@Hq@Jq@Jo@Jq@F]BORmARoAn@yD|AiJlAeH`AcGRgABM|@mFrAgIJm@dAgGDWfAwGn@wD`FcZhA}G^yBf@wCb@qCFWnAuHp@cEjB}KLo@`B_K^wBDUn@wDbDwRBOxAyI`@aCN_AFYHe@Jm@Jk@Je@Jo@Lo@Lm@Lm@Lm@DWDQLm@Nm@No@RaALi@HYVcAVgARu@zAiG|BgJZmAZsADQHYJ_@Ja@J]DMFUTs@n@mBNc@FUFMNi@HWFSNi@BKLc@Jg@FQDQ?C", - "gałkówek|koluszki": "cqvzHqbnwBG}BIaDCaBCsB?gB?yA@iAD_CDsADsAH{AHqAFaAHkAXwC\\uC`@wC\\yB^uB|@mFxByM~@uF@IT_BR_BLgAJiAJgAHgAHgAFkAFgADgADgABgABmC@mA?kACsCGwCK}CQuCUcDMsAKiAsDya@Ea@OcBkD_`@yAoPOuAKuAMsAMsAMuAKsAMsAMsAMuAMuAMwAyFqo@AMAGAEAOCSEi@k@oGg@uFEk@Go@qCc[MsAMsAKgAMyAMuACUKaAM{Aq@sH}A_QeAsLEa@I}@I}@Gc@Ec@Gc@Ge@Ic@Ga@Ic@Ic@Ia@Ka@Ic@K_@Ka@Ma@K_@M_@M_@K[KYOa@O_@O[O]O[KQS_@S_@OYQYSWQWSYEGKMSWSUSS]]]]OMQMWSSOSMSMYQYOYOc@Se@Sa@QIEWKiBw@y@q@u@[u@[{Am@u@YmFwBkBu@OGe@a@WK_Bo@i@Ss@Ys@[WKQI[O[O]Q]Q", - "gałkówek|łódź andrzejów": "cqvzHqbnwBBhAl@rT`@xNNdGBxABlABxA@pAJh_@@dC?zAD|JBdK?|ABtIBlHFdRf@ljB@fDAbDE|CGtCMrCQxCUjCWjC]jCa@rCyAnJAB?DCJmAzHkA~HQnAQhAOjAKdAMjAKhAIfAKlAGjAGjAEhAElAClAAhAApAApA?tA?jA@rDJv`@@nD@tD@pD@tDJb`@@tDD|N@jD@hEDvODjM@tE@lA@nF@vA?nAArAAfAAlAChAGhBBl@?DMlCIjAIbAKfAI|@AFKbAMhAId@U`Ba@fCUfASbAi@fCo@nCmIz^_FjTOj@c@lBc@pBaA~Dw@vCgAtDo@pBw@zBcD`JaNp_@", - "łódź andrzejów|łódź widzew": "iuxzH_lvvB}@bCgCdHCHCHyJnX}@bCQf@oIrUo@dB_DvImE|L}KzZcAhCaAdCsE`KiEpJgBbE}@|B]~@[~@[bA[bAYbAWdAm@lCShASbAe@tCa@tCoDtXkDzW_ErZoFva@cBrMc@`DIv@WtBQ|AMrAGn@WfCYlDwAlQEp@y@`Kg@rGGn@QzBuAzQs@rIo@nIyA~Q_B`SYlDs@zIg@hG", - "łódź fabryczna|łódź widzew": "{f~zHatyuBF}CHaE@k@@i@Bk@@g@@e@Be@Ba@Dq@Dk@B[B[r@eJl@uHFq@D_AD_AHqCf@gQBo@HoEJ_GRuFHeCjCqbAh@kSBm@?OL{EZgLFyBHyBFgB@]F_CR}GRgIPwGDgBDgAFgCJeEJgELoDLuE@q@zAsk@XiKBuARkHHyBDsAFoAJyBJ_B`@uFVkDFo@pAmPFo@l@uH", - "mikołajów|żakowice południowe": "qarzHoafxBOVc@|@w@vAaApBq@vAo@xAWl@Wl@k@~AsAjEiAvEaAvEy@vFo@|FcB~P}JtbA{AfOw@zF}@xFgB~IkBbIeEbOcJf\\sKd`@gF`RmFlR}AtFwAbFK^yAnFK^Uv@wQbp@Ux@Uz@Md@GTS|@Uz@S|@UbAS`ASbAQv@Ov@O|@Q~@O~@O~@O~@M~@O`Ak@dEMx@y@bG", - "gałkówek|żakowice południowe": "cqvzHqbnwBG}BIaDCaBCsB?gB?yA@iAD_CDsADsAH{AHqAFaAHkAXwC\\uC`@wC\\yB^uB|@mFxByM~@uF@IT_BR_BLgAJiAJgAHgAHgAFkAFgADgADgABgABmC@mA?kACsCGwCK}CQuCUcDMsAKiAsDya@Ea@BQFWm@qGyDcc@MuAMuAGw@Gy@CUCc@Gy@Ey@Ey@Ey@Cy@Ey@C_AAaAAq@Aw@Ay@?y@?{@?{@@}@?y@@w@By@B{@B{@B}@Dw@Dy@Dw@Dy@Fy@Fw@Hw@Fw@Hy@D[@KHw@Jy@PoAPqARyAn@sE", - "łódź marysin|łódź widzew": "}ed{Hk{|uBlAiFLg@fCwKtDwO^}AXaAV}@Pg@Ne@Z}@Pc@Na@N]L[\\u@Vm@Xi@\\o@Zm@~@{AfA}At@_A`@e@r@u@^_@f@c@pAeA\\WdAw@|L{Id@[`@WLILGPKPKNINGPKJEJEJERKHCb@QRG^MVIb@Kb@Kf@Kf@Id@Gt@Gr@Gp@Cl@?j@?x@@t@D|FR\\@V@t@B~@?\\An@Ap@Er@Gt@K`@I`@G^IbAYPEbBo@l@Wj@Yd@Yb@Wj@_@`@Yh@c@f@c@j@g@h@g@h@m@l@s@d@k@n@_A`@m@PWR_@Va@b@w@P]`@y@Zq@Zs@\\{@Vs@Pg@`@iAV}@X_Ah@wB^yA`AaE`A{DjA{EzAiGfBgHNm@V_Ax@iCVq@`@eA~@wBl@sA`@{@|@kBDIDIp@wAl@mAzGoNl@oAtAwCtAuCfCmFzHkPbAuBvCiG@CFKtBmEz@kB`@{@^_ANa@Nc@Nc@Ng@Je@Jc@VmARqAFg@Fi@PaBRkCr@oB", - "zgierz|łódź marysin": "g{l{HsepuBx@bAfAr@l@`@VNRJXNXJTHVJZHVDbANZBj@B|@?b@ATA\\Cf@G^Ej@MVGZK^M\\MZMVOXO^S\\WZU^[^[`@a@X[\\a@\\c@\\g@Xe@\\k@Zm@Zq@h@iA~@yBnBsE`A{BBEp@_BBGbGgNrEqKpFeMfAgCHOJYd@eAp@_Bn@yAh@kAvAeDb@cAl@wAN_@x@kBx@kBbA_Cb@eAlBoEjEaKb@_A|@uBd@eA`CuFBGbA_C`B{Dl@sAdAaCP]HQ@Cj@kAVg@@AZg@^q@PYLSj@y@Za@Za@^e@\\_@d@e@\\_@ZYt@q@tE_E|EaErLcK~@w@jB_Br@m@XWdC}Bj@k@TYf@k@f@q@b@o@RY^k@\\m@Vc@Ve@Ve@Tc@\\u@Zw@p@_BTq@Vs@X}@ZgAZiAXkAXmA`@gBxBmKd@qBb@oBT}@Nk@DMRs@ZeAVs@Tq@Tm@`@aATk@h@gA^u@`@w@Zg@Xe@^m@Xa@\\e@\\c@d@k@f@m@b@g@h@i@fAkAhCoCXYlEwEb@e@b@i@X]V]b@m@^m@j@_Ah@_A`@u@PYv@wA\\o@Xm@^w@~@yBNc@\\_Ap@uBTw@^uALi@Lk@jA}EpJka@", - "zgierz|zgierz północ": "g{l{HsepuBe@e@mCaCyCmCkSaRw@c@w@q@yAoA_Ay@_Ay@][u@q@_A{@SQy@w@a@_@g@e@c@_@YY][cA}@][]Ya@Wa@UOGSIa@Oe@Me@Ma@I_@Ga@Ec@Ce@Cg@AU@K?K?k@DWBWBq@Je@Jg@Lg@Pe@PYLYNs@b@q@d@q@f@qDnCwAfAEDqAdAWVYVe@d@g@h@e@j@e@l@e@n@c@p@a@l@SZOZOXQX_@v@MVKVs@|AWl@Q`@}CnHgC`GmHbQ[t@O`@IRUn@Wv@Up@Ut@Ut@St@S|@Op@Qt@Ov@Q|@Ox@Kp@OdAMhAMbAKbAI~@I~@IdAEbAG`AIdC{@`Y_@~LIvCAr@Cv@Ar@Ax@?x@?pBBbCBv@Bv@J~Cb@rLBp@\\bJDdABbABbA@fA@hA?~@?p@Aj@?j@C~@C`ACdACz@E~@G`AQvCAF]|EUvC{@lLq@nJ", - "zgierz kontrewers|zgierz północ": "{yp{H_l`uB?kACmAAiAAi@C{@EaAE_AEcAG}@QaCIu@Go@K}@M_AUeBKo@Ms@Mu@Ou@Qw@Qs@Sy@Qs@Uy@W{@Y{@Us@ACeA_DmGiReBiFiC{Ha@qAYy@Qk@Su@[kAQs@WkASaAQy@{B_M_@wBESSyAQ_BGk@Ec@IqAGgAAq@EcB?iA?cA@w@B_ADoAVoEXkElCw^Dm@`AuMjDue@PcCNmBHoAJkA", - "chociszew|zgierz kontrewers": "un|{HgbrtBzBg@zD{@vMuC~A]l@Mp@O~SwEhAUta@aJjCm@lDw@vA]j@Sh@SbAc@`Ae@TMJE^W~@m@r@k@r@m@p@o@p@q@p@w@p@y@n@}@n@_Aj@_Aj@eA`AoB^y@\\{@h@wAh@yAb@yAPm@Nm@^{A^aBToAToAVaBTcBNoALqANeBNiB@E\\kEj@gHj@iHxAqQ|@_L|@_Lj@iHXuC\\qC?AV_BZgB\\iB`@eBb@cBl@qBn@mB~AsEdB}Er@mBXw@J[JYdAkCVk@Vm@n@mA`@u@P[NUb@q@b@q@b@k@`@i@b@i@d@g@X[Z[Z[ZYRQv@m@h@_@j@_@vAw@n@[VMVKj@Sl@Sh@Oh@M~A[l@In@IlBWlAO`Dc@PCDAnGy@jC_@zDg@xASpEk@jHaA`AQhCo@TIZKXMd@Sd@UtBeA|BgAzBiApE{BzGgDzQaJzAw@vBeAl@]l@_@l@_@j@c@h@c@h@e@j@i@j@k@n@s@r@_A`@i@^k@\\i@b@q@Xi@b@w@Zo@\\u@b@_ABK^_Ad@mAL_@Pe@J[Z_Af@yArAaEh@cBf@cBPq@Nm@Nq@Lo@Li@Ji@|@mFjAoHN_ALy@L{@L_AJaAJ_AJcAFy@HaAHmAL_CNkCDy@Ba@Be@DaAB}@B_A@eA@{@?gAA{JA}E", - "chociszew|ozorków": "un|{HgbrtBg@JwAXw@Ny@Jo@Fe@Dc@BU@o@@o@@o@A_DQ_BKwBM}CYkFi@yLmAwAOoEc@cBS{JcAw^wDsAOyYyCsO_BiGo@aCUAAaAKaAIkBKi@AS?U?m@?m@Bg@Bg@D]B[B]F]Dy@N}@N_AP}@PeGfAaCd@w@LiATkB\\iEx@qAVaLrBaKjBQD{VpEyB^kBZyHvAiHtA", - "ozorków|łęczyca": "}ze|H{zqtBC@}AV{[dGwAVu@N{E|@oCl@mCl@uAZ}Af@_Bn@yAv@eBlAcJdHkHtFaq@`h@oTtPwDvCyAnAwApAqBrBmBzB}BzCyBbDW\\k@|@cA`BeC`E_CxDaHbLaHbL}JlPkHpLoCrEqCpE_MhSwFhJu@lAs@lAgBrC_A~AcA|Ai@v@i@t@k@p@UXIJMLUTWVo@n@m@f@q@f@SNaAp@gG|D}OfK_DtBoCfBaU~NwKfH{E~CuL|H_Ar@_Av@sBrB{AhBwAlBq@t@_RrUgElFsEzFkM`PiQzTeIbKiDhE", - "witonia|łęczyca": "q{i}Hc}stBhAzAjAzA~QlVr@~@rAhBhDpE~G~I|@nA|@lA~PvXjCfE|ItNtF~IdGxJjFlI~FpJdi@h{@@DnFtIzDhGj@x@j@v@xAlBbLvMnK`MRTtl@dr@fM`O~QfTB@xKlMbO`QxShVbAjAbAjAtAxAj@j@`@^JHx@t@z@r@vBfBhMlKFDnFnEdBxAfBxAnErDlErDDB~AtAr@j@r@j@bCpBhA`Ad@`@b@`@l@j@j@j@tAzAZ\\|@`A|@`AnUfWbK`LfBnBhBlBpE~ErEbFdBnBlBpB|BfCnApAf@d@\\ZLJ|@p@`@Xb@XfAl@~At@rBn@`@J^J~@P^F^D`@D\\Df@Bh@Bf@@h@?r@?t@AjBAtEGfLM~@A|JMj`@a@`EEvBCd@AhEEnGGhCCjCG^AfAGpBWvAWz@Sv@UXG~@_@`Aa@hAo@`Am@dAu@`A{@dAcAx@_A|DaFrBiCjFyG~AqB~GuI", - "kutno|witonia": "}sw}HkuauBjAyEDOxA}FLe@DSDSJ_@FY@IJe@Je@Je@?ANy@j@mCP}@Jm@DUNs@Ns@@CLk@Li@?EBGHa@Nk@Nk@Le@Le@La@@EJYL_@L_@Na@Pa@L[P]DMJSTc@f@_AFKFIP[HKHOBAHODGTYR[PSd@k@\\a@FI^e@LM`@e@dBuBTWNQX[X[TWVWVURQZURQTOTMTMPKDCXOZMRIJELEXITGXGVEXGZCXEXAZAV?T?D?T?X@^BXBXDXDZFXFVFVJZJVJTJXLZPVNVPVPTPVRVTPPNNVXVZNNRXRXRXNVV^T`@Zj@BDxAjCd@z@dCpENXhApBn@hAl@fATb@h@bADFP^BDRb@d@bAjAhCvCrG|GlObF~Kx@jB`F|K~EzKvBxEfB|DnEzJ\\v@\\v@^v@^t@b@x@d@x@b@r@`@n@BBbAtAdArAhC~CtEvFhBzB`AhA~@jAbCvCrAbBnGzHz@jAz@nAd@x@f@x@Xf@jIdOfJpPjJrPpFtJtBxDfJpPrGhLfCtEbAhBfAfB^n@`@l@`@n@b@n@lAbBlA|A@B~CdE~Yh`@tKpNjMvPvRjWrI`LnCpDbNtQdArAnCrDvBrCt@`AbHhJbC`Dh@r@~CdElE~FhB~BbBzB", - "kraków główny|kraków płaszów pzs kpa": "msrpHy|vxB`As@d@_@b@[b@[TO?Ab@UDCPIHEXKXK\\IXG\\Ed@E`AChDGhCCVA\\?^AR?ZBJBF?b@JVHVJJDJDNJLHPH`@RNFVJPFb@Ld@JNDPBFTj@AZAB?h@?~ACLAX?zBED?dAA~@AVAn@AR?TAJAh@C^ArAGZCZAh@Aj@AdFI`@?dEIf@A`@Ah@Eh@Gb@Eb@Id@Gd@Mb@Kb@Mf@Qf@Qf@Sf@Uj@[`@Uf@[b@Yd@]b@_@DC^]\\[Z[j@m@`@g@^e@`@g@`@m@dA_BvHeLDG|HoL\\i@n@_A`@m@Zc@b@m@bCsDtOuUj@{@\\YjBqCfBmCl@}@|A_CZe@DGZe@x@mAV_@@E|BgDHO\\e@j@{@^i@^g@\\e@`@e@^a@b@g@b@c@f@i@\\a@HGFITYNSPSRYRYLSHMjC}DjBoCVa@", - "warszawa praga wpt m|warszawa wschodnia": "cq~}Hayo_CP_AReAnBsKd@eCVqALq@BKJe@Lg@Ni@Pg@@AN_@N_@Rc@@CR_@T_@RYNQRWPSJKJI^]fA{@JIr@g@RM\\SXMVIVITGB?JCPCVA\\AV?Z@\\DZFPDFBD@PHXJZPRL^Z^Xb@b@bA`Ap@l@RTTTRXPXRXJPLTLVLVP`@?BBD@DFPJXHXNh@Nj@`@xAFVLd@Rt@V~@J^Nd@`@jAn@nBb@?Rd@Zt@pAW", - "katowice zawodzie|mysłowice": "k|vqHwthsBb@yBDoBT_GPyEPmET{DJoC\\aKVsHRmIFsCBaD?eD?sDE_GK{FSoGYoGg@yIo@cJaD}e@Y}DK{BQ}EOcDW{DyAeTg@_IEi@BiBSiBi@iEYsCm@{IUsDCu@IuAGoCCsC?_BBgDFeDP}DPyDPkEFwAHyAJoAJqALkANoALcANaAPaATmAViAR}@T{@tBoI^wAr@gCj@qBFOd@oAd@kAv@eBjA}Bl@iA~AuCP[p@mA\\m@pAuB`KaPlDoFvBcDvDyFbA{AnGoInBiC~B_Dv@wA`@i@JMX]^_@f@a@~@y@lAeAxA_B~AoBb@k@^i@tAyBn@gAf@aAb@{@`@_A`@_Ah@wAHUn@cB`BoDv@aBd@s@n@qAt@sA|BqDn@_A`@g@f@k@VSVSXQ|DcCpAy@rAsA", - "katowice|katowice tow. ktc": "ozvqHeuasBFcAV_D@CF_A@CQGo@b@WbBQpAALE`@Eb@Ez@E|@?HWjHAZKrCExAArAA|A@xA@f@BrA@PFhABVDt@I`@HnADr@TvCVnDVvDJlABd@@JDp@Br@BdA@`A?dAEvBC|@MdBK`AM|@Q`AQ~@[fA[~@e@jAiAzB}BzDqBfDyAdC_@n@e@|@MXQ`@Yt@Yx@m@pBu@~BYbAStA[tAgAxFc@zBm@jDwAzHeArF_ArEc@vB]~Ay@dEg@|BUjA]vAa@bBYtAKb@Mh@", - "kraków główny|sosnowiec maczki": "msrpHy|vxBSLOJQJy@`@]Py@\\m@X_@j@g@b@c@Rg@VUNe@ZYTYT[XSPUTGHMLSRUXCBW\\q@z@w@bAILs@z@ORGHg@p@i@r@W\\_@f@UZa@l@e@r@e@r@c@v@]n@S^U^c@|@_@v@a@~@IPUh@]|@_@`A{BhGo@hB_@bAWx@Sl@Wx@Sp@U~@Sz@Ol@Mr@Oz@ObAWbCKhAI`AG|@GbA[lGOxCItAEbA?JAPCx@EtACpAOdLGxDAp@?ZGnEE`DA`AErBCvBG~EChCEzBC|CItGUpQ?l@WdTYxUMnKUfS?JCrACdAClAEpAEnAe@|MCnAGxAClACnAClBAz@?T?jAAjAA|AArFA^?rBOx_@?lBA~A?rA?j@?j@@tA@pA?PBpA@Z@r@BrABnA@RLjFBt@JjEH`CNfGBv@Bx@JzEBt@JdE@^FvBDtA@lABzABnA@xA?rA?rA?L?x@A~AAhA?`@An@ClAClAClACp@AXEnAGtAGnAIvAIrAKrAIpAKnAMlAEb@Gl@MjAMrAOhACRM|@QpAQjAALO|@QdAUrAm@|CWnAS`ACHS~@On@On@YdA[nAQl@K\\Qn@]hA]hAYz@GN]bA_@fA_@`A_@~@]z@]v@]x@IRQ^[p@_@v@S`@GJ[p@_@r@[h@qChFyDdHc@x@i@`AmDrGcAhBy@zA_CfEYh@CDwSt_@uLrT?@c@v@e@z@e@z@i@|@e@t@c@r@QVU^SXSZg@r@mAfBiCtDcB`Ca@l@oFxHePnUiCtDiCrDEFw@hA_KfOc@n@oFvH}@rA}AvBm@|@a@l@k@z@e@v@i@z@c@x@a@t@a@t@]n@g@dA_@x@c@`Aa@|@]z@_@~@[z@a@fA[|@[`A]bAY~@]hA[hAAF[hA[nA[lAId@Oj@UhAWjAeAlFa@rB[|AGZm@`DkAbGKh@c@xBOp@aClMeAvFiAfGsEhVCNOv@kB`K[bBUhASlAMn@ETQlAQdAOdAQhAOfAE^Gf@OjAMhAMlAKhAKjAMxAMxAUbDg@fHEn@a@vFQnCKvAg@rHIjAOxBCd@_@zEIhAIrAk@lHKjA_AvMKvAItAIjAItAGvAGvAErAEzAErACvAAbA?PAxAAtA?zA?tA@vA@tABtABxADxA?HDjADrAFxABXDx@HxAHrADh@Dn@LxARdCj@lGPjB\\bEtAvO?@B~@Dj@L`BXlDZfFPdEL|DD`BBdB@`E@~DE`J?~B@pE@hDHxDNzD@X@PLtCVvDbAxLtGvv@XrD`@rEh@dGd@`GNdDHfCDlC@vEC|BEpBe@pPMhCS|DYhEAH[jDa@zDg@zDk@vDo@tDq@hDw@dDELe@dCWbA]lAaA~CeBhFwAjEiBtFsQti@eAhDaAlD{@nDeAzEs@tD[pBSjAi@`Eg@vEUtBc@tFUbEOnCaDzq@q@nNyB|e@Q`EM~DIfEG`E?rAA|@@nDHvLF|HDzDXvP@n@FdEDfC@`A?~@?`A?fEA~K?`@?fDA|AArA?rACrAAnAArACvACvA_@zSOlJEnACjACpAKrCGnCCdACjAE`DA\\AjBEdC?n@GfF?f@CfCAjA?pA?rA@rA@nADvABhADvAFhAFrAHnAJnAJnAJrANlANpAJ~@BNHn@DXz@xG^vDXtBhCdSNlAPvANpALpALpAJvAJrAJtAHpAHtAFrAFxADpADxADtABpA@j@?~@@`A@tA?xA?rAArAApACrAAxAEpAE|AEnAQjEaEzaAuAv\\w@tRG~AGlAGjAI|AIpAKrAKxAMjAEf@AJSpBQ~AOjAEXM`AQnASrASrAUnAWvAUlAWlA_@dB[rASv@U~@]lA]nAW|@[~@]jAc@pA_Vds@[`A]bA]hA[bAW`A]jAWfA]rAWfAYlAYrAUlAUpAUjAUrAStAQhAIl@Gh@QpAQxAOrAOzAObBmB~SKxAKlAKpAIvAIxAIrAG|ACf@Ab@CjAEhACnACxAApAAtAArA?pA?lP?|A?fn@?tp@?fI?vG?zA?bAA|AApAArACrACvACnAEvAGzAGpAGtAIrAGnAKvAKpAKpAKlAKjA_@dDKdAQrAQlAStAQpASjASjAUpAaNlu@QhAWrAQhASnAQnASpAOlAOnAmE~_@cCfTAJAJsCxVCVWrBcJ`x@oD`[qA`LUzBY`CoA~KIr@_A`IMjAK~@_@dDS`Bc@zDe@`Ec@lDy@vFObAShAQdAShAUjAS~@SdAWhAUfAU`ASx@uEbRm@hC}C~MkAfFsAxFCL_A~EGXa@dBcAnEi@tBu@vCs@vCu@|C}@vDsA~F_AbE{@pDiIl^}@~Ds@`Dc@zBETWtAOz@EVYbBKr@QnAM`AOjAOpAUnAMhAKnAMvAW~CcAfMKjAIfAGj@CZKhAKfAMhAOnAOjAS|AQhAOhAShASjAShASbAUhAYtAWhA[rAYdA]rA[bA]jA]hA]fAa@hA]`Aa@jAuR`i@KZwDjKmL|[q@fB_@bA_@dAy@`CoJ|WuB~F_E~KiBbFYt@Un@Ul@Wn@EL]x@e@dAa@~@c@~@c@~@c@z@gAvBmG|LsH~NiC~EcDnGsg@hbAMRyAtCqb@zy@}Ob[GLiAxB_@r@c@x@_@r@c@x@e@v@_@p@c@p@a@n@g@t@e@r@o@|@g@p@q@x@e@l@s@x@g@j@s@v@i@h@o@n@m@h@m@h@q@h@o@f@k@b@a@VUNOJQLq@b@m@^uG~Ds@b@q@^w@`@m@\\s@^}CxAqI`EaAd@OHA?oAl@q@\\m@ZQHCBi@V_@TULaB`Ao@^w@d@yFfDm@\\k@^q@b@i@\\kLdIOJyFvDye@n[aBfAwFtDaG|De@Zm@`@q@d@q@d@q@h@k@d@i@b@m@h@e@b@o@l@c@b@WXSRs@v@i@n@i@n@k@t@i@r@i@t@e@r@i@t@c@p@iHpKQTeA`BkOxUg@x@Y^OTi@v@i@v@GJ[b@e@n@mB|CaCdDmAbBa@n@c@n@]h@Yd@Q\\_@r@a@x@]t@_@z@[v@Wr@Yv@[~@W|@[`Am@xBQj@I\\e@`B[fA{@|COh@_AbDc@`BSt@Qx@Qt@S~@Q`AMv@In@EROhAMdA_BfN}A`Ns@dG]pC[lC}@`IGh@G^EVEVGXG`@In@Il@Kv@EZOr@E\\GXCXIp@_Er]y@hHkAzJYpAY|@g@lAc@x@i@v@c@f@g@b@q@b@q@Xu@ViBf@E@uBj@wF|AWHcIzB[HGBe@No@\\WP[VUTWXWZ[d@qAnBaBfCeAzA", - "dorota|sosnowiec maczki": "gz{qHstttB`C`Br@d@vE~C|@h@tAr@tAf@zAd@rFzAj@Rl@Td@Rb@R`@R`@V`@XXRDD^Z`@`@ZZ^b@X^\\d@Xd@Xf@n@nA^x@Zv@`@`@n@b@h@^|AhA`EzCj@b@v@h@p@f@r@d@n@b@t@f@pDbChErC`BfAf@\\j@\\TLVLXLVJVHVHVFXFn@JHBbBLfEt@d@Fb@Dv@Bp@?VAZCVCZEXGVGXI@?VKVKTKVMXQ^SlOmJ~@m@VQZUXWVUVYnAsAPUZc@j@{@", - "dorota|dąbrowa górnicza południowa": "gz{qHstttBaIoFq@e@oFqDuA}@yA{@c@WmAi@eBs@aA_@gA[qBg@mB_@_UgDCAe`@aG}AU}AYkA[YVyB[_BQQAs@Go@Em@C{@ASAw@?kHEkAA{GEmCAa@A{IE}MIoDCG?Q?", - "dąbrowa górnicza huta katowice|dąbrowa górnicza południowa": "q_frHwvptBv@[pBy@ZMlAg@pAi@l@Wl@[h@Yf@[d@Yb@]`@[^[f@g@d@g@BAV[X_@X_@T]n@_AVc@T]f@_AXi@Zq@Zo@Xq@Xo@HWL[Ts@Ne@Nc@Rq@Rs@Ru@Lm@Ps@Nu@Ls@Lu@N}@NeAPqAJ_AfEk_@r@kGVcCZmCTuBXeCXgCb@yDNqADYJ{@L}@Fc@\\uB`@mBd@aBn@kBp@cBt@yAn@gA|@oAz@cAZ[`@a@~@s@dAu@fAg@fAc@jAYZELC`@QhAInAC|WNfA@z@@^?L?F?nBBpCBP?tKF", - "dąbrowa górnicza huta katowice|dąbrowa górnicza ząbkowice": "q_frHwvptBgCbAeCbA_@NqBx@o@VgAb@k@T[L}@NEBe@Li@NEBc@JsA\\s@RK@aAV{@TgDv@I@YFeB`@s@Ps@NqBb@mB^sB`@}@N{@Ny@L{@L{@J{@Jy@H}@F[B{AJqAHgCLiBH]@[@Y?[?[?U?U?MAG?O?EAWAWAEAQAWCUCWCUCEAOCYE[G[GYGa@IEAOEKJsA[m@Ou@QeAWyA]qBe@WGqEgAiAWo@Og@Om@Oy@W_A]i@Qk@Ue@Q{@]aA]yAk@k@Wm@Ua@Q_@Qa@Q_@QWMWMUOWM_@SYOEEg@Ye@Ye@[e@[c@[c@[e@]k@a@GEs@i@QM}AiAa@[}@q@e@h@nAlAb@b@@@", - "myszków|zawiercie": "eutsHqq~tBnDcRrBwKtGq]zAaIHc@RcAfA}EFWlCuNd@eCtNkv@~D}StAoHBMd@_CVkAVmAT_AXeATy@X{@Vw@Vw@Zy@Xs@\\w@Zs@\\s@^s@^s@^o@b@q@^k@`@m@`@i@d@k@b@g@`@e@f@g@d@c@f@c@b@_@l@e@`@Yj@_@f@Yh@Yl@[f@Ul@Wn@W~SwHPUJE`@Ol@Uvt@aXvEcBvFuBnPcGfMqEpFoBrEcBzCiApBs@fE}AVIt[iL~Am@~GcCfE}AbDiAnLiEvEcBr@Yv@Yp@Yl@Wr@]n@Yr@_@r@a@FCj@]p@a@r@e@p@c@t@i@r@i@n@i@r@k@n@k@l@k@j@i@p@q@h@k@r@w@l@s@l@s@j@s@h@s@h@q@h@s@rOaT~B_DpC{DdE}FpAgB~@oAzJeNXa@fI_Lj@u@R[bKmNvQyVX_@fJkMjJoM`EwFt@cAh@u@h@y@^m@DGh@y@z@cAp@gAh@y@`@o@d@q@\\a@^e@\\_@XYZY\\YXUXSDAXS^SLGNGZQZKZKd@OPETEd@Kd@GFAb@El@EbBGn@Cr@CxBI|CKfBU\\A^AtBIbACl@Cj@Eb@Cb@CfBQ`@Cf@Eb@CrJc@N?lCMl@EjEQtIa@f@C~COfBG`Oq@j@CnAIjAEr@ChBK", - "myszków|rozprza": "cutsHqq~tBuBzKk@xCqA`HmBbKq@lDUdAUjAYrAWhAU`A]vA[jA]pA[lA]lA_@nA]hAa@pA[bAa@hA_@jAa@fA]`Ae@lAc@dAa@dAIP[v@c@`Ae@dAg@dAe@`Ae@bAg@~@uMnWEJiNlXc[|m@mA|Bc@x@c@x@g@z@k@`Ai@z@i@z@]h@OTg@t@m@x@g@r@m@v@g@r@m@r@k@r@k@n@o@r@g@f@a@`@GDOLq@n@m@f@q@h@q@f@iFzDWP{IvGs@f@m@d@q@b@q@b@c@VQLk@\\u@`@u@`@_QjJYPoYvOSJYPkQ~JGB}\\|QID[Pid@pVSHsDpBGBsC|A{EhCgAl@eVrMqJhFyDtB{Av@ob@jUeOdIcOdImFtCs@`@u@b@u@b@s@b@s@b@s@d@o@b@s@f@eBnAo@f@o@f@o@f@s@l@k@f@o@j@o@l@m@j@m@j@q@p@o@p@m@p@e@XIHoBxBy@|@EDe@j@SVk@p@k@v@[^_@h@_@f@g@p@m@|@uAnBeVr]ie@rq@sCdEk\\te@iFtHkElGeSvYiHbKaHdJ}@pA{@jA]h@sAnBaAvAe@r@c@p@mApBcBhCEHGHkEnGcFpHq@~@}MvRg]~f@{AzBQToAhByE~GaN|RgTh[oEnG{AxBiGrHiCnCiCjC_IfGeCdBgCxA}Az@}Av@sClAsCjAaCx@gCp@yDx@}Dt@k]pFiSbDcb@vGqNzBmKbBmZ|EqCb@gBXgA\\_a@rGwCd@E@y_@fG{_@hGym@xJ_d@jHgTjDmBZUDG@o@Lg@La@He@Li@Nw@Ro@Ro@TI@k@Rk@Rk@Pq@Xe@Rg@Ti@Vc@Tc@Tc@V{@f@]RaAh@aAj@mAt@}A`AuK~G{XbQeNrIGD{IrFe@X{DbCeBhAgAz@m@d@g@b@m@h@e@b@e@b@q@r@i@j@e@j@W\\_@h@a@h@]j@c@v@g@~@{@`BaAhByBfEwE~I{@jBe@fAa@fAk@hBa@|A[rAWjAqCpNgAfG}@rF{AxJg@|Cg@tD}@nGa@bDc@~CWjBWhBs@vESxAU~Aq@rEu@nEwArKMx@Mn@Mr@Mp@k@fC[tAMh@Qr@Oj@Ql@Oh@Sj@Sf@Qb@Wh@EFO\\U`@U^W`@W^W\\WZ[\\YXg@d@c@`@w@n@wAlAs@l@YTUPYRYPc@Tc@R[J[H_@Jc@Ha@De@De@Bi@?}BCmACgAAqGIgDEyFIeBAwACgLOaFGqACyCEa@?qDGg@A_@Cc@Ce@Ce@Go@Gi@IQC]Gg@Km@Oi@Mu@Sk@Qq@WaA[{Ai@oBq@o@Um@Wk@Ug@Wg@Wc@Ug@Ya@We@[a@Yk@c@c@]i@c@e@c@k@i@g@g@m@o@i@m@g@k@UYY]m@u@c@o@g@s@i@y@]g@MSe@u@e@y@e@{@i@cAa@w@e@_A_@}@e@cA_@_Ac@eA]_A_BeEEKCIgE_L_LaZGOcLgZ_AgCaAgCiA{CsBoFeCuGw@uBy@wBu@qB_@cAg@uAqBkFSi@EM]w@[w@]w@Yo@]s@_@s@_@q@_@m@a@o@c@m@a@m@g@o@a@g@c@g@c@c@g@g@e@e@g@c@e@a@m@c@c@[i@]g@[g@[k@YqAu@iGiD}L}G{b@aViAo@gm@u\\yDwBoC}AmBeA_Ai@wNaI}GwDoAs@i@[_@Wa@Y]Wa@]][_@_@[_@a@c@Ya@[a@]g@q@cA?A]i@]i@sAuB_@m@[i@[k@Wi@Yi@Wm@Yq@Sk@Yu@Uq@W}@Wy@U}@U}@WcAQy@UiAO{@QaAOcAOaAK_AMeAKaAOwAKaA}BaVE]uGuq@{D_a@uMutAAG_E{a@iB}QMuAOwA_@eDQwAMqAuAcNAOEg@oAgMaA}Jc@iEo@_HsDw_@y@qIcBiQEg@k@cGMmAKqAKuAKqAYkDMoAMsAw@kI[_DyBcUu@uHOyAMoAMwAOqAMkAQwAOsAQoA_CaRcCoRgBmNgCcSgLo}@Iq@mIkp@a@gDc@eDcDmW{Gyh@m@eFmFeb@gNggAa@cDc@eDIu@oCqTy@qGOeAMaAIi@EYO}@QcAO{@Mk@Ia@Oq@U_AU{@W}@U{@Y{@Wq@[{@Yw@]y@[s@[q@[o@_@u@_@q@a@s@]k@e@q@[e@EG_@e@_@e@c@k@c@e@a@c@c@c@g@e@g@c@e@_@GE_@Yi@_@e@Yg@[i@Yg@Wg@Si@Ui@Sc@Oe@Mc@Mg@Ki@Mg@KoGgAm@MkASqJaBsXyEeCc@gEu@sEw@}Ds@yFaAeBYaDk@sX{EsSmD}Ba@gVeEGA}ZoFkXyE_]_G}KmB[GaKgBo\\{FeTsDaRaDUEmM{Bw@Ow@Ow@Qs@Q[Ik@Og@M_@M]Ko@SSIUIa@Oi@Se@Si@UyBcAy@a@q@_@s@c@q@_@q@c@q@e@o@c@u@i@uNkKuOcLeBqAIEc]yV]WuGyEgE}CsCsBUQaHcFaSwNaYqS_D}BeCiBa@YwImGqByAcq@qf@mo@ee@u@i@iUqP_@YkWgRmA{@i[kUIGqMmJsDmCgGqEwDsC}d@{\\qp@}e@WUkq@sf@{\\qVmScOqSeOGEoXcSy@k@q@g@UQoA_Aw@i@i@a@o@c@k@_@k@_@q@_@o@]IEGC_@Qk@Wo@Wk@Ss@UKESGy@So@Ok@Ms@Mk@Im@Ig@Gm@EIAG?m@Cq@Cg@Ag@?e@?e@@{@@w@Bu@BiBFoADs@BI@I?gCJaI^qERyKh@qCNeOp@qPt@W@oI^iCLaCPi@D}@F_AFc@B_@Ba@@qJd@E?W@av@hDM?uKf@y@Dy@By@B{@?q@?u@?s@Ao@Cm@Ck@Cm@Gq@Ik@Im@Ko@Ko@Oq@So@Qs@Wq@Ue@Q[Om@Wy@]s@_@w@a@s@]AA}r@c_@cUuLuEcCsKwF_JwEoGgDu@a@u@a@s@c@m@a@u@i@i@c@q@i@i@e@o@m@k@m@i@k@k@q@m@u@g@q@k@y@g@s@g@y@e@w@k@cAa@u@g@eA_@{@e@eAa@aAa@gA_@eA[_AOe@Me@AC]kAYeAYcAUcAWiASeAUmAUmAUsASuAuEiZ}Ea[UsACOQ}@WsAUmAYsAYoA[uA[oA[qA]oA]mA_@sAe@_BW{@a@qA_@gAa@mAa@gAa@gAa@aAe@gA_@}@g@aAe@_Ai@_Ag@y@k@_Ai@{@q@}@g@u@m@u@k@u@[_@SUm@q@o@o@m@m@s@o@q@i@s@k@o@e@w@i@s@g@_@SkAw@s@c@u@c@q@_@q@]k@Wo@Wm@Uo@Uk@Qo@Qm@Oq@O_AQwM{Bkw@yMIAmCe@_Di@kF}@GAWEaBYmWgEoGiAcPqC}Ey@mJ}A}NeCq@Mm@K]GOEk@Mk@Oi@Qm@Si@Sg@Sk@Ui@Yq@_@k@]m@]g@_@k@c@k@e@g@e@i@g@e@g@g@i@c@g@c@k@e@m@]i@_@m@iAkBc@w@_@w@a@{@]y@_@y@]cAWo@Oe@Sk@Y{@Uw@U{@U{@Sy@?EEKMo@S{@QaAOu@SiASkAQiAU{AQmAaNe~@}CwS{M{}@kNu_AoC_RwC_SoAoI}@eGuI_l@{RsrAo@kEiQilAwIal@SuASoASmASmAESQy@SaASaAU_AYeAW_AY_AYaAYw@Yu@]{@Yq@_@w@AC[o@_@s@_@q@a@q@]m@e@s@_@k@c@k@a@i@e@i@c@e@e@e@g@a@k@e@e@]o@e@g@]gBkAo@c@m@a@q@g@g@_@k@g@i@e@k@k@e@i@]_@EISSW_@g@q@e@q@e@u@c@s@e@{@a@u@OYsAcC}AuCoA_C_D{F_CiEmBqDYg@sBuDe@w@]m@i@{@i@y@k@y@i@u@m@w@o@u@m@w@m@s@o@s@o@s@q@s@EGg@g@q@q@q@o@q@m@q@k@q@i@o@e@m@a@o@c@_Ak@gDuB}@k@aEiCyCiBiCcB{JmGo@a@_F_Dgd@oYkFgDal@c_@eEkCyQmLsD_CeEkCuSwMir@qc@iZoReMaIOIiHuEuGeEu@e@{@i@y@e@{@e@w@a@}@a@_Ac@{@]WMm@Uo@Ug@Qg@Qa@MICi@Qi@Mk@Om@Oe@Ke@KcAS}@QaAQ}@OsEw@q\\uFaLmB{@Os@Ou@Ow@Q}@UaAWw@WGAw@Yu@Ws@YcAa@gAg@y@a@o@]w@c@{@i@y@g@w@g@k@a@g@_@iPgLu@g@sE_Da@YgAs@eBkAcD{BOM_@WmFuDaD}B", - "gałkówek|rokiciny": "cqvzHqbnwBG}BIaDCaBCsB?gB?yA@iAD_CDsADsAH{AHqAFaAHkAXwC\\uC`@wC\\yB^uB|@mFxByM~@uF@IT_BR_BLgAJiAJgAHgAHgAFkAFgADgADgABgABmC@mA?kACsCGwCK}CQuCUcDMsAKiAsDya@Ea@BQMsAeD__@E_@yAoPMuAMuAMuAKsAMsAMsAKsAMuAMsAMwAMuAWsCwBcVu@iIs@gIAGAKAI?CEg@yAmPGk@{BaWcAaL_@gEO_BEg@Eg@Ca@QsDC_@Ca@C[Eg@Eg@[qDCa@Ec@Cg@Eo@A[Cg@AMA_@A_@?_@?_@?_@?_@@a@@a@@Y@_@B]B_@B]D]D]Da@F[D[F]H[F[H[HYH[JYJYJWJYLWLULULULSNSLSNQNQNONORQRQHIPKPMPIRKPIPGRGPGLCDAREPCRCPCTAP?R?R@R@J@RBRBRDRFRFZJXJt@Xt@XzB|@z@\\z@\\l@Xl@Xj@Vj@Vj@Xj@TTHTHB@TFXHdATRFNDRFhDtApAf@`LnENHxj@zTp@XjMbFlAf@hBf@pPzG`c@|Prn@rVFBrAh@dBr@ji@fTzDzAlDvAdM`FzH|CzClAnAd@jAf@dG~BlEfBtAj@pAf@vPzGf_@`O`C~@", - "łódź chojny|łódź widzew": "}quzHis~uB@ITiEJuBFwAH{AH{AJkCBkABkA?}@?{@?{@Cm@Ao@Cw@Cm@Eq@GcAIw@Iw@Gi@Ik@Gk@SkAOs@WoAOm@Ok@Qm@Ma@Us@Se@s@gBWe@_@w@Wa@]k@a@k@Y_@_@e@WYs@s@o@i@_@We@[YQo@]YMe@QWKUIME]IeAUeASkDk@o@MeCa@}@OwCg@_Eq@iAQ{AY{AUcCc@kCc@QC[GsAUyB_@{AWeBYk@KiEs@s@Kg@Go@Iy@GaBMoF[iBM_BKkCOiEW}CSwDUsDUkBKs@EqBMaBK_EWeDS}@Ge^wBw@Eu@Go@Gm@Ig@I[G[Gm@Oe@OYIg@Qc@Qm@Yk@Y]S]S[Se@[e@]]Y][OMc@a@a@c@[]UYWYc@k@c@m@a@o@c@q@]k@[m@[m@[o@_@}@_@{@Wo@Uq@]eA[cASs@Su@YgAWkAUcAScAOu@]iBWaBMy@My@Kw@Iy@I{@G{@E{@E{@Cy@C{@?}@?{@?{@@w@DoAF{ADu@As@TgEHmAKq@`@gFc@wGNg@Je@Jc@VmARqAFg@Fi@PaBRkCr@oB", - "retkinia|łódź chojny": "k`yzH_aouBMo@kAeGqAuGyBcLq@kDCcCMm@{A}Gq@yC[sA[{Au@sDw@aE[aBG_@COKq@K}@IaAC_@Cc@Ca@Aa@Aa@?e@A]?C?a@?Y?M@c@@c@@g@Ba@Bg@Bg@B]BW@QDa@D_@Fa@Fa@D_@F[FYFYBSHYHa@La@Ja@J_@JYL]L]LYJSHSHOHQLSLUBCNUNSNSPSNQJIJMJKLIPODCJIRMPKNIPGJGRIPGFCFA@?l@STITGRGFANCHCh@GFA@?FARCNC\\CTCl@GHA\\CNAPAPAXARA@?PA`@AnCKXATAVCb@C`@E^E^E^G|IsAh@I\\G\\I\\GVGRERGNEVITG`@M`@Q\\O\\MXMp@[bAe@VKPI@A\\OZOXKb@Q`@Q^Mx@YlCy@LE\\M`@O\\ORIPG\\QpEoBl@Y`@S^QTMHEXQLINIXSXSTQ\\Wf@e@t@s@f@k@`@g@t@}@p@}@p@{@r@}@bAqAPUvCwD~@kAl@w@p@}@r@}@f@s@BA\\i@d@s@Xg@\\q@Rc@Ra@Pc@N]L_@HWHWNe@Lc@Lg@Nk@Lm@Je@^oBX}A`AyFdB{JnAoHN{@Fc@RmAJ{@J{@B_@Hq@Ba@Bg@Du@Ba@Bg@BgA@y@@}@?Q?K?Y?s@Aw@CeAAc@Eo@Eu@E{@KkAKcAIw@M{@Ig@WwAYmAKe@K_@K_@Qk@IYm@cB[y@g@iA}@mBuCiGcD}G}B}Ee@eAc@aASc@Ws@KYY{@Oe@GSCIESGQI_@S_AYyAMq@Ko@Ky@Iw@KgAIcAAYEe@Cg@Ae@Cs@AeAAuAAy@@iA?m@By@@]Bw@Ba@Bg@Dc@Dg@JmAZwDJiAHsAJ}AJaBLmCr@_Nj@_Lz@cQFoAL{BDsADsB@}@@U@{@@w@?Y@[B_@T}E", - "retkinia|łódź lublinek": "k`yzH_aouB|@lE@JBHh@rCnB~J~C|On@bDtAbH|A`Iv@~DRdAdCjMj@tCjBnJrCxNBLBJdOhv@|CvOzCvOpD|QnDzQ~BjLP~@TbANl@\\pAXbAZdATp@b@jAFRVn@Rd@P`@HPFNb@~@Zn@Zj@Zj@d@t@Zf@d@r@`ApA|BbDj@t@Z`@f@r@pD`FNB|\\be@BB~AzBnAdBb@l@", - "pabianice|łódź lublinek": "cwhzHuz|tBg@kAYq@i@oAUk@a@{@cA_C_A_C}@yBy@uBe@gASm@Uk@k@}AgAwCcAqCsCeHgHqQSi@oBaFGMGMqBeFyFuNmA{CWk@Se@Ug@Sc@Ue@MWQYO[U]OWU[EGGISWMOOSSSOQQOOOQQMKQMOOQKQMOKQKOKMGIEIESIYMYM_@M[I]I]Ic@I[E_@E_@Eg@Ga@Eo@Ga|@aImTqBoRgBWC{Fi@oTqBgCU{Gy@UCm^eDwSoBw@GUC_@C}@Gm@Cw@Cu@Cq@Ay@?s@?w@@kQP_@?_@A_@Aa@A_@E]Ea@G_@G_@I_@M[Ka@O_@QQISKUM[S]U[Y[W]YYY[]Y[?AW[Y][e@]e@oCsDmAcBg@s@]e@yEuGcDqEaByB{AwB}CgEu@eAGG", - "dobroń|pabianice": "qzbzHc~ltBuCwLCMiDmNEUgKyb@i\\{tAEOuRwx@gRmw@iEoQ_@}Ae@mBS}@Sw@S{@YgAWcA[mAWaA]iA]kA{@uC}Nig@_N{d@IWkKi^mGmTkA_EIWq@}BaAcD[eA[eA]gA]aA_@eAa@eA_@eAkDuIgAqCaAeCeAiCw@oBq@eB", - "dobroń|kolumna": "qzbzHc~ltBjB|HdF~SlOdo@tId^Pv@|I`_@tPxr@VfAVjAVjAThAVvAP`A\\jBH`@lNtw@pAjH", - "kolumna|łask": "e``zHqedtBlA|GBHjDzRDRhB`KTrARnAVzAPjAPrAPrANnAPxANvALrANtAJtAvFdr@vBrWL`BJnAJrAHxAJvAFtAHxAFtAD|ADrADxABtABxABvAb@b[VtR@d@V`MB~ABjADzADtADzAFrAHtAHxAHvAJtA@LJhALtALvANrAPvANnATxAPlARnATrAh@hDrFl\\`EfVz@dFhFf[F`@lAhILr@Jt@Nz@Jz@Jr@H|@Hv@Hz@HbAFz@DbAD|@DfABz@@|@BdA?hA?~@?VAt@A~@ArAChACpAIhDCdAG`EEvAEpAGrBm@~POlEKpCg@dOWbHa@nL", - "borszewice|łask": "w`_zHspdsB\\iJh@{OjAy]rCoy@?AZ{IdBah@vAab@Bs@hBii@bAu\\By@d@qMn@oRjByi@lCcw@n@qRZoIBm@PeFNmERcG", - "borszewice|gajewniki": "w`_zHspdsBUfHuBrm@qBjl@yB`p@?TAXgEdoAG`BEnAEzAA^At@CzAArAAvAAzA?xA?xA?xA@vAB~A@rAf@~a@@p@HnG", - "gajewniki|zduńska wola": "_r_zHotzrBHbHT`Rp@`i@JvJFfDPbM@fAHlFHbGBtCTpR@t@VxR@r@R~OLjK@BDlEFjEFdEBbDHtF\\fZ@d@@h@", - "sieradz|zduńska wola": "ewbzHy}ipBJi@xC}NLo@dAiFdFoVNo@jLsj@^gBNs@Lu@Ls@Lm@PiAPoANiANsALkAJsAHiAJuA`@iG@ErEur@h@eIHiAJkAHiALmALiANmALeAPoAVaBTaBD]lKuu@xE{\\dCgQPgAPiALw@P}@Rw@Ry@Ru@Tw@Rm@To@N_@N]N]LYN[Ra@Ra@\\m@`AkBTa@nMeVla@cv@lDuGpEqILUnGaMfXkg@pBuD`@u@b@y@^u@Xm@Xq@Vk@Xu@Ts@Ru@Tu@Rw@VeAVgAXoAR{@z@sDPy@Pw@Nw@Nw@Ly@J{@Hu@J_AFw@FaAD{@D_A@{@B_A?{@@_A?cD?qE@qg@Bcx@Bky@?{A?yAAqACsAAqAEyAAk@AUg@iSEmBE{AI{C]sJCuAMiFq@eXW}Ka@sPIaEOsFGeCO{DI}BEeBQsGEgBM_DMsDKmCCq@GaAG{@Gw@Gg@Gk@Io@Ik@QkAMs@Os@Oq@Qm@K_@K_@]eA[}@Qa@[w@Wg@Sa@Wg@S]wAeCuAaC[k@_@s@Wc@]s@]s@Ys@[w@Ww@Y{@Uu@YaAw@wCOm@a@uA[kA[cAWs@Uq@i@qAIQYo@Yk@g@_A[k@i@aAcF{IgIiOgEqHk@cAi@cA[o@Wk@Yq@Wq@Uu@Us@Uw@Qu@Qy@Ow@Y{AY_BEU}H{d@s@cEs@_EeBeKwDuTUsAcHsa@c@mCSoAQmAQmAOoAOsAKmAKqAIqAGoAGsAGuACoACoAAuA?mA?yA@k@?i@BwAB_ABc@By@DcADgAHeAJeBFw@J_BNiBJuARwBN}A`@iEz@aJLqAJcAJ_AL}@L{@N{@Nw@Lg@Lg@Pq@Le@J]DKNe@Tm@Rk@Vk@\\s@Xk@NWLUZg@^k@Zc@`@i@hGyHlDkEjAyA`@k@Za@^k@\\m@p@oA\\u@Xu@Zw@Vw@X}@T_AR{@R{@P_ANaAL}@J_ALmAJoAFmADkABe@@i@@qAB_B?_B@}DD}JF}VNye@BaH?WZwcA@oE?oAAsA?IAgACuACqAEuAOgE_@iKiAc\\McDWsHi@}OG}AUsGUaHqAg^WyGWmHq@gRo@aRIiBGcBEcBE_BEsAAqAAqA?sA@uA@wAViRZgV`BqoAJqHb@y\\FmE@iA@{A@qA?qAAoAAsAC}ACaB_@mRcAsj@}Acz@[cQAUaA_i@k@_\\Y{NIoECaBEkB?y@Ak@?{@?oA@qA@oE@_BAiB?{ACmBc@y^CuBAKCqCUgR", - "łódź chojny|łódź dąbrowa pbs": "}quzHis~uB@IFaDVqERoEHsBBw@DuA@w@?c@?gAAoACgACu@E{@Ck@Ee@Es@Ee@Iy@Io@Io@O{@SmAMk@Oq@Qs@Mg@Qo@Ma@_@cAQe@c@cAO[Q_@[m@[g@[g@KQa@g@]c@Y]_@a@[Yg@e@e@]a@Y_@Sg@Y_@Qk@SIEWIUG]Ks@OeB[m@MqB[qASo@IMA}Da@gAOcDi@sDm@}AWeCc@", - "łódź dąbrowa pbs|łódź widzew": "ktwzHusavBiCc@i@KwAUqDs@qCo@QEiBa@_AS_BUgAO_@Es@G_COyBMwAKcEWaO{@oAImHe@sAIaAGo@CwBOkAIkCOeDS{@Gg^wBu@Eu@Go@Go@Ig@IYG[Go@Oe@O]Kc@Qc@Qm@Wk@Y]S]S[Sg@]e@]]Y][OOc@_@a@c@[]WYUYc@k@c@m@c@o@a@q@]m@]m@[m@[o@]w@]y@@OWo@Uq@]eA[cASs@Su@YgAWkAUcAScAOu@]iBWaBMy@My@Kw@Iy@I{@G{@E{@E{@Cy@C{@?}@?{@?{@@w@DoAF{ADu@As@TgEHmAKq@`@gFPeApAmPFo@l@uH", - "kraków główny kga|sosnowiec maczki": "mftpHk{txBSn@Wv@Wv@]pAOj@On@Op@Kn@Oz@O`AYbCKfAGbAGz@GdA]lGOxCGrAE`AANEpA?RCx@CrAOdLG|DKpH?J?d@E`CGzECtAKxH?BCxBEzCIvGC`CQ|Nm@ph@AjAMvKW~RA`BCfACjAEnAEnAe@|MErAErACrAChAEjD?TA`A?tAA|ACrF?^ArBEtOGbOAjB?`B?tA?h@?j@@rA@rA@P@lABpABrADnABrAHbCDrBFpBPfHBdAHvCTlILbFFvBBtABlAB|A@nA@xA@pA?tA?L?~@AxAAfACvAAjACjAEhACv@AXEnAGtAEjAInAGlAKxAKnAMxAKhAEd@Gj@MnAOzAOfAQvAQjAQjAALO~@EVKn@UnAOz@]dBUjAYnAS~@Ol@Mh@YfAWbA[fAYdA_@jA]fAY|@]dAc@jASl@]x@O`@]z@a@`Ae@dAe@bAa@z@a@x@i@bAYj@Q\\sChFuD|Gi@`Ae@z@qDvG{BbE_ChE[h@CD}@bBwQp\\wLvTA@ABc@v@a@t@e@z@g@z@e@t@c@t@QTU^UZSZg@r@mAdBiCtDcB`Ca@l@oFxHcJpMaE|FgCtDiCrDEFw@hAeK~Nc@n@oFvH}@rA}AvBm@|@a@l@k@z@e@v@i@z@c@x@a@t@a@t@]n@g@dA_@x@c@`Aa@|@]z@_@~@[z@a@fA[|@[`A]bAY~@]hA[hAAF[hA[nA[lAId@Oj@UhAWjAeAlFa@rB[|AGZm@`DkAbGKh@c@xBOp@aClMeAvFiAfGsEhVCNOv@kB`K[bBUhASlAMn@ETQlAQdAOdAQhAOfAE^Gf@OjAMhAMlAKhAKjAMxAMxAUbDg@fHEn@a@vFQnCKvAg@rHIjAOxBCd@_@zEIhAIrAk@lHKjA_AvMKvAItAIjAItAGvAGvAErAEzAErACvAAbA?PAxAAtA?zA?tA@vA@tABtABxADxA?HDjADrAFxABXDx@HxAHrADh@Dn@LxARdCj@lGPjB\\bEtAvO?@B~@Dj@L`BXlDZfFPdEL|DD`BBdB@`E@~DE`J?~B@pE@hDHxDNzD@X@PLtCVvDbAxLtGvv@XrD`@rEh@dGd@`GNdDHfCDlC@vEC|BEpBe@pPMhCS|DYhEAH[jDa@zDg@zDk@vDo@tDq@hDw@dDELe@dCWbA]lAaA~CeBhFwAjEiBtFsQti@eAhDaAlD{@nDeAzEs@tD[pBSjAi@`Eg@vEUtBc@tFUbEOnCaDzq@q@nNyB|e@Q`EM~DIfEG`E?rAA|@@nDHvLF|HDzDXvP@n@FdEDfC@`A?~@?`A?fEA~K?`@?fDA|AArA?rACrAAnAArACvACvA_@zSOlJEnACjACpAKrCGnCCdACjAE`DA\\AjBEdC?n@GfF?f@CfCAjA?pA?rA@rA@nADvABhADvAFhAFrAHnAJnAJnAJrANlANpAJ~@BNHn@DXz@xG^vDXtBhCdSNlAPvANpALpALpAJvAJrAJtAHpAHtAFrAFxADpADxADtABpA@j@?~@@`A@tA?xA?rAArAApACrAAxAEpAE|AEnAQjEaEzaAuAv\\w@tRG~AGlAGjAI|AIpAKrAKxAMjAEf@AJSpBQ~AOjAEXM`AQnASrASrAUnAWvAUlAWlA_@dB[rASv@U~@]lA]nAW|@[~@]jAc@pA_Vds@[`A]bA]hA[bAW`A]jAWfA]rAWfAYlAYrAUlAUpAUjAUrAStAQhAIl@Gh@QpAQxAOrAOzAObBmB~SKxAKlAKpAIvAIxAIrAG|ACf@Ab@CjAEhACnACxAApAAtAArA?pA?lP?|A?fn@?tp@?fI?vG?zA?bAA|AApAArACrACvACnAEvAGzAGpAGtAIrAGnAKvAKpAKpAKlAKjA_@dDKdAQrAQlAStAQpASjASjAUpAaNlu@QhAWrAQhASnAQnASpAOlAOnAmE~_@cCfTAJAJsCxVCVWrBcJ`x@oD`[qA`LUzBY`CoA~KIr@_A`IMjAK~@_@dDS`Bc@zDe@`Ec@lDy@vFObAShAQdAShAUjAS~@SdAWhAUfAU`ASx@uEbRm@hC}C~MkAfFsAxFCL_A~EGXa@dBcAnEi@tBu@vCs@vCu@|C}@vDsA~F_AbE{@pDiIl^}@~Ds@`Dc@zBETWtAOz@EVYbBKr@QnAM`AOjAOpAUnAMhAKnAMvAW~CcAfMKjAIfAGj@CZKhAKfAMhAOnAOjAS|AQhAOhAShASjAShASbAUhAYtAWhA[rAYdA]rA[bA]jA]hA]fAa@hA]`Aa@jAuR`i@KZwDjKmL|[q@fB_@bA_@dAy@`CoJ|WuB~F_E~KiBbFYt@Un@Ul@Wn@EL]x@e@dAa@~@c@~@c@~@c@z@gAvBmG|LsH~NiC~EcDnGsg@hbAMRyAtCqb@zy@}Ob[GLiAxB_@r@c@x@_@r@c@x@e@v@_@p@c@p@a@n@g@t@e@r@o@|@g@p@q@x@e@l@s@x@g@j@s@v@i@h@o@n@m@h@m@h@q@h@o@f@k@b@a@VUNOJQLq@b@m@^uG~Ds@b@q@^w@`@m@\\s@^}CxAqI`EaAd@OHA?oAl@q@\\m@ZQHCBi@V_@TULaB`Ao@^w@d@yFfDm@\\k@^q@b@i@\\kLdIOJyFvDye@n[aBfAwFtDaG|De@Zm@`@q@d@q@d@q@h@k@d@i@b@m@h@e@b@o@l@c@b@WXSRs@v@i@n@i@n@k@t@i@r@i@t@e@r@i@t@c@p@iHpKQTeA`BkOxUg@x@Y^OTi@v@i@v@GJ[b@e@n@mB|CaCdDmAbBa@n@c@n@]h@Yd@Q\\_@r@a@x@]t@_@z@[v@Wr@Yv@[~@W|@[`Am@xBQj@I\\e@`B[fA{@|COh@_AbDc@`BSt@Qx@Qt@S~@Q`AMv@In@EROhAMdA_BfN}A`Ns@dG]pC[lC}@`IGh@G^EVEVGXG`@In@Il@Kv@EZOr@E\\GXCXIp@_Er]y@hHkAzJYpAY|@g@lAc@x@i@v@c@f@g@b@q@b@q@Xu@ViBf@E@uBj@wF|AWHcIzB[HGBe@No@\\WP[VUTWXWZ[d@qAnBaBfCeAzA", - "kraków główny|kraków główny kga": "msrpHy|vxBSLOJQJy@`@]Py@\\m@X_@j@g@b@c@Rg@VUNe@ZYTYT[XSPUTGHMLSRUXCBW\\q@z@w@bAILs@z@I\\q@x@i@t@W\\_@h@UXa@l@c@p@w@pAq@hAS^S^c@|@_@v@a@|@MZQ`@]x@_@bAeB|EeAtC_@bA", - "łódź fabryczna|łódź niciarniana": "{f~zHatyuBF}CHaE@k@@i@Bk@@g@@e@Be@Ba@Dq@Dk@B[B[@mBj@wGTkCVkDFaAFoAB}@~@s]FeERaGH_CxDwvAB{@^yNFiDDiBDsC?SHkEFoCFoC", - "łódź niciarniana|łódź widzew": "_v}zHo`avBNaGDcAFoBDyAH{BTyFHoBBy@B{@P}ELmEF_CHO@q@zAsk@XiKBuARkHHyBDsAFoAJyBJ_B`@uFVkDFo@pAmPFo@l@uH", - "warszawa podskarbińska|warszawa wschodnia": "wn}}H_{r_CH`@Lp@Jf@Np@Nj@Rp@HXJ\\JZPf@Nf@hBvFvAlE~@rCHV^jA`@pAX`AXlA\\tAPz@Nr@Lp@Lt@RtAPlAl@tEL|@Hp@tArK`AnHe@tA", - "lipce reymontowskie|płyćwia": "aux{HsyuxBIs@Is@Gu@Iu@Gu@Ca@CYAOAK?IC[Cg@Es@Cu@E}@Aq@Cq@Aq@Aq@Aq@?q@?o@?q@?o@@m@?m@@m@BiA@iAPoIFuD@a@F}CH}DJoFDoBNoH\\oQb@yUDwAj@k[^uQNmIByAByAB{@@w@@y@?u@?u@?y@?q@As@Aw@Ay@As@Cy@Cu@Eu@Cu@Gu@Eu@Gw@Eq@CWE]Gw@Is@Iu@Ks@Is@Ko@EWCUKm@Km@Kk@Ki@Kg@Kg@Ke@Me@Ke@Om@Me@Oe@Oi@Qk@Qi@Oc@Qk@Uk@Oa@Qc@Wm@Qc@Ue@MWGOSa@Ue@Ug@a@w@a@w@Yk@{AuCIOqBqEQ]CG{BmEaEeIm@gAaDmGcNeXm@mA{EmJeBiDeBgDc@}@e@_A_B}C", - "lipce reymontowskie|rogów": "aux{HsyuxBDVDZHt@Lp@?DJl@Lr@Jp@Jd@@JLj@Lj@Lh@Lh@Jb@J\\HZNh@Nf@Nf@Nf@HVDJNd@Pd@Pd@Rd@Pd@NZBFPb@Td@Vd@Td@Td@HLLTVb@V`@V`@V`@X^X`@X\\X^X\\XZVVTVRRRR\\XFFRP\\X\\VZTZT\\TZR\\P\\R^P\\PNFNF^N^N\\L^J^J`@J`@J`@Ht@LVDF@RD~@L|GbAtARt@J~^pFhJrAbP`C|MnBtHhAt@JdVlDnG~@vARt[vEhJrAnFv@t@JdJrAjBXxAR?@pDf@RD^DF@F@l`@xFdJrA~B\\jIlAr@Jv@L`@F|JvAdJrAj^hFv@Ln@JF@l@Hp@Lp@L^JB?ZH^J\\JB?^L^NPFLF`@N\\P^P^P^RTNNJFBDBPJVPZV^VRNFFf@`@XVVVTTZZXX^`@PTPTRVTVRXX`@X^JPd@p@d@r@n@bAhAfBdA`BzK~Pl@n@pSv[t@jArEhHXd@vCpExA|BpArBrAtBjAhBfGpJh@x@T\\RZd@r@lAnBHLb@p@hAfBrBbDb@n@pDxFbBjCNTnBzC^l@", - "bedoń|łódź andrzejów": "{{vzHsk{vBKfAI|@AFKbAMhAId@U`Ba@fCUfASbAi@fCo@nCmIz^_FjTOj@c@lBc@pBaA~Dw@vCgAtDo@pBw@zBcD`JaNp_@", - "bedoń|justynów": "{{vzHsk{vBHcAHkALmC?ECm@FiBBiA@mA@gA@sA?oAAwAAoFAmAAuEEkMEwOAiEAkDE}NAuDKc`@AuDAqDAuDAoDKw`@AsD?kA?uA@qA@qA@iABmADmADiAFkAFkAJmAHgAJiALkAJeANkAPiAPoAjA_I", - "gałkówek|justynów": "cqvzHqbnwBBhAl@rT`@xNNdGBxABlABxA@pAJh_@@dC?zAD|JBdK?|ABtIBlHFdRf@ljB@fDAbDE|CGtCMrCQxCUjCWjC]jCa@rCyAnJAB?DCJmAzH", - "gałkówek|żakowice": "cqvzHqbnwBG}BIaDCaBCsB?gB?yA@iAD_CDsADsAH{AHqAFaAHkAXwC\\uC`@wC\\yB^uB|@mFxByM~@uF@IT_BR_BLgAJiAJgAHgAHgAFkAFgADgADgABgABmC@mA?kACsCGwCK}CQuCUcDMsAKiAsDya@Ea@OcBkD_`@yAoPOuAKuAMsAMsAMuAKsAMsAMsAMuAMuAMwAyFqo@AMAGAEAOCSEi@k@oG", - "koluszki|żakowice": "{ryzHe_~wB\\P\\PZNZNPHVJr@Zr@Xh@R~An@VJd@`@NFjBt@lFvBt@XzAl@t@Zt@Zx@p@hBv@VJHD`@Pd@Rb@RXNXNXPRLRLRNVRPLNL\\\\\\\\RRRTRVJLDFRXPVRVPXNXR^R^JPNZN\\NZN^N`@JXJZL^L^J^L`@J`@J^Hb@J`@H`@Hb@Hb@F`@Hb@Fd@Fb@Db@Fb@H|@H|@D`@dArL|A~Pp@rHLzAJ`ABTLtALxAJfALrALrApCb[Fn@Dj@f@tF", - "koluszki|wągry": "{ryzHe_~wB]Qg@YUMSKwBoAoAs@SMcB_As@c@i@YcEaCaB_AiEaCkEeCSMuAu@kGoDu@a@qF_D_B}@}A{@aCuAc@WwAy@mAq@cAm@_Ai@WOe@WcBaAg@YEC}b@mVe`@uTq@_@u@c@q@_@gEaCoI{EsMoHs@a@kDqBqI{EoAs@sI_FcE}BmIyEcK}Fu@c@kHcE}D{Bo@]m@_@_@S_@U_@U]S[U[S[U[U[U[W[W[WSQGGIGMMYUQQUUWWWWQS]]", - "rogów|wągry": "mmh{HoalxBbNbTpHhLbCxDfFbIb@r@~LpRtBbD\\j@f@t@d@r@`@n@nCfEb@n@`@n@j@|@j@z@zIdNle@xt@h@x@`@|@tGdK~C|E^l@rFrItJjOl@|@dQjXd@t@d@t@X^V`@X`@\\d@\\d@JNPRZ`@\\`@Z`@\\\\JLNP", - "przyłęk duży|rogów": "{~k{Hu}pxBLJNN\\\\\\\\\\^TVTXVZRVZ^X`@Xb@V\\T\\T\\RZzBlD|F`J`F|Hh@x@pSv[t@jArEhHXd@vCpExA|BpArBrAtBjAhBfGpJh@x@T\\RZd@r@lAnBHLb@p@hAfBrBbDb@n@pDxFbBjCNTnBzC^l@", - "krosnowa|przyłęk duży": "kip{HkerxBlARH@nBX|RrCfJtAhMhBt@Jv@LzAT`IhAhIlA\\DxYhEnC`@\\D~@N`ANp@Jp@N^H^H^J^JB@^L\\L^N^Nd@TXLZNb@VTLNJFBDDPJVP\\T\\V\\X\\X\\Z", - "krosnowa|lipce reymontowskie": "kip{HkerxBqDg@UE]EGAEAuWwDu@MoFw@iJsAGAm[uEgJsAyNwBiFu@u@KoHgAcNqBePaCyCc@oEo@__@oFs@MwAS}AUmDg@QD_AMSEGAWEu@Ma@Ia@Ka@K_@K_@K]M_@O_@OOGOG]Q_@Q]S]Q[S]U[U[U]W]YSQGG]YSSSSUWWWY[Y]Y_@Y]Ya@Y_@Wa@Wa@Wa@Wc@MUIMUe@Ue@We@Ue@Qc@CGO[Qe@Se@Qe@Qe@Oe@EKIWOg@Og@Og@Oi@I[K]Kc@Mi@Mi@Mk@Mk@AKKe@Kq@Ms@Km@?EMq@Iu@E[EW", - "maków|płyćwia": "m|_|HunjyBq@vHCT[lDMnAsBpUKdAKxBMrAMtAGr@Er@Gp@Et@Gp@Er@Cp@En@AXAVAp@Cp@Ap@Ap@Ap@Ar@?p@?p@?p@?p@@p@@r@@p@@p@Bp@@b@Bb@Bd@?N@VDp@Dn@Dp@Fn@Dp@@LD`@Fp@Hn@Fn@Hh@Fh@@LFZHj@Hh@Hj@Jh@Jj@FX@JLl@Lj@Lj@Nl@Lh@DL@HFRNj@HXFNNh@Ph@Nb@JZFPPf@Rf@Pf@Rd@DHLZRd@Tb@Td@HNHRXf@HNNVNXRZXb@V`@V^V^X\\V\\X\\XZXZXXXZXXXVZVZVXVZTZR\\TZR^TXNVN^P^P\\Nn@Xn@Xl@TnAf@xIlD|D~Ap@b@b]bNjKdE`@N`@P`@P^N^P\\P\\PZPXNVP\\TZRZTXVVR\\XZVXXXXVXXZXZVZX\\V\\V\\T\\V\\Vb@RZR\\JRNVb@v@b@z@h@bALVVThAxBTb@|@dB`E`ItAnCf@`Af@`ATb@|A|C|@fB@@FLrB`E", - "dąbrowice skierniewickie|maków": "of~{HqguyBEb@?NAt@?t@AT?\\At@Ct@?JAd@?@Ct@Cr@Cr@Et@Er@Er@Et@Gt@Gt@Ej@Ef@MrAObBuF~m@MtAu@nI{ArPEf@{AvPgAtLGl@qCb[yA`PuB~UMtAgAzLMrAsBhUWpCw@xIKhAE`@Gn@[fD[nD[lD[jDy@dJ_CrWw@tI", - "dąbrowice skierniewickie|skierniewice": "of~{HqguyB?s@?u@Au@Au@Au@?IAQ?KCy@C{@Cm@Ki@A]AWEq@Eo@Em@Eo@Em@Go@Gq@Go@Iq@Gq@Im@Io@Io@Km@Ko@Km@Km@Km@Km@GWEUMk@CMIa@Oo@Om@YgAWiAsMyg@w@wCOk@Ok@Ok@Oe@Me@Oe@Oe@Oe@CIK[Oc@AAOa@Oc@Se@Se@Se@Ue@Se@Uc@Uc@ACS]KQIQOUGKU_@Wa@U[ACW_@W]Y]W]Y]SUEE[[Y[ECSU[Y[YGESQ[W[U[U]U[SCOWOYQA?OIMG]Q]O]O]O_@M]M_@M_@M_@Kq@Us@QuDgAyh@oO_HqBwBm@{Bq@eA[qBk@wKaDOE_@M_@K_@M]M[M[M[MYOYMQKIE[Q[SYQ[SYU[UYUYUYWGGQQYWWWUWWW[_@EGSUOSW]W]W]U_@W_@U_@S]U_@CEO[Q]Q]Q]O[AAO_@Q]M[O]M]M_@M_@M_@K[K[I]K[I]Om@Mk@Mm@Om@Mo@Km@AEKe@c@}AMq@Oq@Ic@_@qBEQOw@a@sBQw@a@sBACsAyG", - "puszcza mariańska|skierniewice": "gof|Hcpa{BA^YnOEfCCbBEdDCxAy@|b@QpI_ChoASjK_Arg@InEGlCCjBAdBAnB?dB@lF@pEHx[@bEBrKDhR@rEF~O?JJpa@Rjd@Jh]DbQDrPHxV?pAB|AB~ADdBFtBFdBJnBJfBLfBNfBN`BPbBThBR|APpATvA\\lBd@fCjBtJrAdHdApF~@zEXrAJh@v@nFNr@DPHb@v@xDP`AlBzJP`APz@N|@N|@Lv@L~@Jv@Hv@Hl@Hr@Fr@BVHz@Fz@Fx@Fx@Dv@Dz@?FBb@@`@Br@Bj@@j@@n@@X@`@@|@?z@@`A?~@?DAp@?z@Ax@C|@A|@E~@Cx@ATCf@Ez@Ez@aAdRw@fO[xF}@`QYfFe@dJCXCh@Ef@AXC^Gp@En@Gn@Gl@Kz@Gj@Kx@In@Ih@Mt@Mt@EVG^GXG\\GZu@|DOx@Or@Kh@Kd@K^Mf@EPCLK`@Mb@Mb@Od@Od@Ut@_@jBUr@Of@Of@Qj@K^Kb@Md@I\\I`@I`@I^EZIh@Gb@Gd@E\\E\\E`@Ej@C^C`@?BCd@Cb@A`@Af@Ab@?d@?b@?j@?b@?F@f@@^@n@HfDN~FTnJLrFDfA\\`OBr@Bt@Br@B~@Dr@Br@Fx@Dv@Fp@Fx@Fv@Fl@Hx@Hx@Jv@Jr@Hr@Jp@Lt@Jr@Jl@Nt@Nt@jHf_@`C|L^hBv@`E`GrZ`A|E`A~EnAtG`BnIFTJn@Ln@Lp@Ln@Lp@l@hDjAzGLn@Jl@Ll@@FNv@P~@b@xB`@jBLp@@FJf@Jb@J`@Jd@Ld@Ld@\\vAd@fBH\\FVFVJ\\FXJf@Jd@Jf@r@rCJb@n@dD", - "koluszki|żakowice południowe": "{ryzHe_~wB\\P\\PZNZNPHVJr@Zr@Xh@R~An@VJ`A`@zGlCXJXJf@Pf@Nd@Lv@Tl@Nh@Nd@LhAZ`@JFBLDVHVHVHTJd@Pj@Eh@RzAl@LFD@HBTHTFRFRDRBJBJ@XBP@Z@L?D?PAB?TCRARETCRGRGRGHEHCNINGHEPIRMRMROZUZWzBaBf@]RMRMPKVKTKTINGNENCNETETETATCTAR?V?T@T@TBTBPBTBRFTFTFJDFBRJTHRLRJTNRPNJRPPPNPPRPRPTNRNTHNDHNVLVNXLVJZLZN`@L`@FPJ^H\\H\\H\\F^H^D\\F^D^F`@D`@Bd@D`@B`@B`@N~CD`AFfAR`EjCxj@D`AD`ADdA@b@Bb@@n@@l@?J@`@@t@?t@?v@?t@At@At@Ct@Cr@Cd@?NCb@Cd@El@Cd@Gx@CNEj@Gf@Ip@Ip@Ip@Mx@c@`DSvAs@fFEZEZCXEf@CZE\\In@Mx@y@bG", - "idzikowice|radzice pzs r31": "wa`yH{v~zBsFkKYk@iDsGg@_AyE_JoAaCEGuc@oz@aTca@oQ_]sf@c_AqNiX_EwHc@y@}BkEwLwU", - "łowicz główny|łowicz przedmieście": "_t_}HavxxB|@yAbA_BbA_B|@wAT_@d@u@|@DZIPYR[NULMDIDELORUPQROTQVONIVKPGTIREVERARAJAL?T@R@RBzCf@zAVTDPDRFRFXHLFTHTJTLRJZPRNJFHHNJHFHHh@b@b@d@b@h@`@j@^n@h@bARb@Pb@N`@HTFTPj@V~@R`AnAhGlAjGTfAH`@Jb@L`@L`@`@jA\\`AL`@Lb@R|@Jb@H`@Hf@BXF\\@HNjAFz@Fd@D`@DX", - "stare grudze|łowicz przedmieście": "{tt|Hs~mxBiAaA}SaRmHsGiOwMgIiHqUoSgJeI}CoCkE{DsB}AUQi@_@i@]sA}@aBaAwAu@aBw@mBw@_Bm@sBo@uBo@uDgAkDeAaBe@SGsDgAoCy@mJqCgHuBqEsAeC{@aBo@oAm@y@a@yAu@y@e@IGaBcAm@c@i@_@iA{@gA{@sDaDoBaBgGkF{DeDcDsCsBgBoAqAMMUY_@g@[e@U_@GGYi@OYEIUc@k@qAe@oAYy@y@}COq@Ou@Ic@SgAw@_GiF_`@iCoRyA}KCQoAiJ", - "domaniewice|stare grudze": "ygo|Hih~wBkDoNcDwMu@yCgRiv@qAoFwDkOy@eDmB}HoBaI}E_S{Jaa@{@mDK_@Mi@WeA[yAOw@Mu@OcAMcAKeAIeAGgAGaACaAA}@AgA?eA?s@ByC?o@BaC?_A?}@?m@?k@Am@Ai@Cq@Ak@Eo@Cm@I_AG}@K}@Ky@M_AQ_AUmAUiAs@{CAIaDqN_@}AcEyQcEwQeD{N_@{Ay@wDe@sBq@uCWkAWiAQu@Qs@a@iBcAsEkCgLiCgLcAsEcAqEwCoMkCeLOq@Qm@e@{A]iA_@eAaAeCgAaCu@uAqA{BiBiCyBgCiAgAeB{AaIeH", - "domaniewice|domaniewice centrum": "ygo|Hih~wBhNhk@|BjJ~@vDbAdEnAbFrCjLbB~G`B|Gl@bCb@nBPt@Lt@H\\DZLx@Jv@Jx@@HFp@F~@F~@Dz@H~BFrCDpCHxBLzBL|AP~ARtARrAPx@Pv@Pv@Rp@\\jAN`@Nd@f@pA~@|B", - "domaniewice centrum|kamień łowicki": "sqm|HerxwB`C`GtDdJn@~A`@bAtAdDx]x{@L\\|AvDt@jBt@hBl@pAl@pAh@jAl@jAr@rAr@nAtA~BzFtJ|BzD`CzDxEbI|]tl@rIvN~CjFxFrJvBnD", - "głowno północne|kamień łowicki": "cdg|Hk}jwBSu@]}A]}A]}A[_BY}AY}Aq@cEcByJG_@}AgJ{A_Jy@aF{B{M{A_J{A_JwD}TaA_G_@}Ba@{B_@_Ca@}BIe@WwAO_AS_AScAUaAKa@I_@K_@K_@YcA[aAc@sAo@cBa@cAe@eAa@{@a@w@m@gAi@_AcCaE", - "głowno|głowno północne": "qjc|HkbgwBiBc@}FsAqKeC{Bg@iSsEmBe@oBe@OCqA[eA[cAa@y@c@s@e@gA{@eAcAcAmAeA_Bo@kAcAoB[q@kCwF_FiKoBiEw@aB[q@MWMWaCeF}B}Ek@mAi@oAe@gAe@kAo@_Bi@{Ak@}Ae@yAGOQk@Wy@W}@Wy@i@oB]uAMg@", - "bratoszewice|głowno": "}f_|Hyl}vBWeASy@Sy@Sy@Oq@Ok@a@cBaA_EaA}Da@_BOo@Oo@YgAYeA[eAMa@Ma@[aA_@aA_@_Aa@_Aa@}@OYISIOQ[Q[e@w@c@u@g@u@o@aA[a@W]uF}HwCcEaGgI_GiIsMwQEGi@u@g@y@Y_@Yc@c@u@e@y@c@y@c@{@a@}@a@aA_@_A]cA]eA]eAYcAYeAMg@Mi@Kg@Mi@ScAQaAIc@Ii@QiAa@{C[_DKqAIsASqDm@sLyAgZy@uO[mG]mGOoCMyBU_CM_AM}@e@iCg@{B_@uAEKk@}Au@iBcCqEi@w@i@u@]e@UUIIe@c@g@_@c@Yg@We@SEAQG_@K_@I_AS", - "bratoszewice|stryków": "}f_|Hyl}vB~BtJtEjRjNrk@j@|B^zA\\|AVdARdAP|@BLPhAPfANjANlALjALlAJlAHnAHnAJxBNpFJtCJzBPxBJz@Hz@Lz@Nz@Nz@Px@Pv@Rv@Tx@Tt@Tp@Vp@Xr@Zp@Zh@Vh@x@rA`AnAv@z@FH`@^b@^dAv@hAl@^R`@PpUfJJD|CnAn@Zn@Zn@\\l@^j@`@l@d@tAjAx@x@d@f@VZLLb@j@d@l@jAbBjAbB`BbCr@`Ar@bAvB~CtE|GjBlCjBlCvGrJvB`D|CpE^l@\\n@Zj@Xn@Xp@Vp@Vr@Tp@Tv@Pt@Rv@Px@Nz@Nx@D^F\\D\\D\\Fl@Fl@Fp@JlANvBBj@LhBB`@~Bx]tBv[", - "stryków|swędów": "ixy{HyyqvB~@dNLhBJhBRdCpAzRLjBJlBLhBFbA@b@@R@LFvABnABnA@pA?pA?hAAdCG~BGdCEfBEhBw@d[u@vZALoBnw@?JaAf`@a@~OCpACrAApA?nA@h@?d@BlADdABb@Bd@HbAD`@Db@B\\D\\Jz@F^F^L|@Nt@Pt@Rz@Tx@Rt@Tr@Vp@Xp@Xp@Xj@^t@^n@^j@`@f@X`@Z\\Z\\\\ZjAdATTRNt@n@~CpCn@t@b@l@`@n@^r@^t@", - "glinnik|swędów": "oau{H}r~uBKcA[eCm@iF{AgMwAuLCMoBwPqBwP[kCWuBUqBWmBQeAQeAWqA[qAm@wBI[g@uAi@sASe@EIYm@g@y@g@w@g@q@i@q@]a@_@_@o@i@i@a@k@a@cAi@]O_@Qi@Qm@OWGYGs@KoAK_FQaBGgAM}@O{Ac@aAc@y@c@y@g@u@m@kAgA}BgC}AaBqF_GuB{Bi@m@g@q@a@m@_@m@c@w@Ym@Ym@Yq@Wo@Ws@Us@Su@Sw@Sw@Q{@Oy@My@M{@K}@K{@G}@I}@E}@Eu@Cw@CgAAeA?cA@aA@gABeAHwB@WD_BHwBD{@By@DsABsA@_A@aA?}@A_AC_AA_@Aa@E_AG}@C_@C_@I}@K}@K}@M{@Mw@Q{@Ow@Sy@Sw@IYKYI[KYUm@Sk@Si@Ug@_@w@", - "glinnik|glinnik wieś": "oau{H}r~uB|@tHTdBT~AJl@Hd@Jh@H`@T`APp@HXb@tAt@nB|A~Dn@`BDLb@tA\\jAHVNp@Pv@Nx@Jp@Lp@TfBj@vEThBThB\\tC\\pC", - "glinnik wieś|smardzew": "wit{H_b|uBRzANnARtAF\\FZLt@XnALj@Ld@Lf@Pj@ZdAbBrF`BnFX~@V`ADP@DFVNn@Nn@Lp@RjAPfAJj@Hj@TtA\\vBFZFZNz@Nn@Ll@Nj@Nh@Pl@Rj@Pf@Tj@\\x@\\t@LVNVZh@l@`Ap@|@f@l@h@j@`@^`@\\`@Zb@X\\RZPPHNH`@PlA`@n@Ln@J|@JP@P@b@@N?P@F?XAJ?HCP?f@E`@E^I^I`@I~E}A\\KZIXGXGLALC", - "smardzew|zgierz rudunki": "war{H_gyuBZEFAL?VCh@Cb@?X?j@@h@DVBVDn@Jh@Jh@PVHVHj@VTLVLj@\\v@j@t@p@j@j@j@n@RVPTd@p@l@bAj@dAP`@R`@Tj@LXRj@Rh@h@vAf@tAf@tAn@hBXt@Tt@Tx@Tx@Nl@Pz@P`ATtAJn@Fl@Hv@Hx@Fx@Fx@D|@B|@Bt@@v@@`A@`A?NBpBD~FLrN@zB@d@@vABzBB|BBxADzADzAFzADnAFpA@b@Dh@FnAFv@Dt@Dv@D\\Dn@BZDr@NdBH`AHbAFdAJbAH`AJbAJ|@L`AF`@F^N|@F^H`@H^H`@Ld@Jd@J`@Ld@JZJ\\J\\J\\N`@N`@P`@P`@", - "zgierz|zgierz rudunki": "g{l{HsepuBe@e@mCaCyCmCkSaRuAkAyBmB{BqBKI_EsDGE}@{@y@w@YWs@o@}@w@o@m@YWMKe@c@a@[a@]a@]a@[yAqAwAsAk@g@gGwFuI_IyBsBe@e@c@c@a@g@OQOS]g@_@k@[i@OUMUS_@CIMWSa@O_@", - "zgierz|łódź radogoszcz wschód": "g{l{HsepuBxApAf@d@l@`@VNRJXNXJTHVJZHVDbANZBj@B|@?b@ATA\\Cf@G^Ej@MVGZK^M\\MZMVOXO^S\\WZU^[^[`@a@X[\\a@\\c@\\g@Xe@\\k@Zm@Zq@h@iA~@yBnBsE`A{BBEp@_BBGbGgNrEqKpFeMfAgCHOJYd@eAp@_Bn@yAh@kAvAeDb@cAl@wAN_@x@kBx@kBbA_Cb@eAlBoEjEaKb@_A|@uBd@eA", - "łódź arturówek|łódź radogoszcz wschód": "kfg{HqawuBk@j@eC|BYVs@l@kB~A_Av@sLbK}E`EuE~Du@p@[X]^e@d@]^_@d@[`@[`@k@x@MRQX_@p@[f@A@Wf@k@jAABIPQ\\eA`Cm@rAaBzDcA~BCFaCtF", - "łódź arturówek|łódź warszawska": "kfg{HqawuBTYf@k@f@q@b@o@RY^k@\\m@Vc@Ve@Ve@Tc@\\u@Zw@p@_BTq@Vs@X}@ZgAZiAXkAXmA`@gBxBmKd@qBb@oBT}@Nk@DMRs@ZeAVs@Tq@Tm@`@aATk@h@gA^u@`@w@Zg@Xe@^m@Xa@\\e@\\c@d@k@f@m@b@g@h@i@fAkA", - "łódź marysin|łódź warszawska": "}ed{Hk{|uBqJja@kA|EMj@Mh@_@tAUv@q@tB]~@Ob@_AxB_@v@Yl@]n@w@vAQXa@t@i@~@k@~@_@l@c@l@W\\Y\\c@h@c@d@mEvEYXiCnC", - "łódź marysin|łódź stoki": "}ed{Hk{|uBlAiFLg@fCwKtDwO^}AXaAV}@Pg@Ne@Z}@Pc@Na@N]L[\\u@Vm@Xi@\\o@Zm@~@{AfA}At@_A`@e@r@u@^_@f@c@pAeA\\WdAw@|L{Id@[`@WLILGPKPKNINGPKJEJEJERKHCb@QRG^MVIb@Kb@Kf@Kf@Id@Gt@Gr@Gp@Cl@?j@?x@@t@D|FR\\@V@t@B~@?\\An@Ap@Er@Gt@K`@I`@G^IbAYPEbBo@l@Wj@Yd@Yb@Wj@_@`@Yh@c@f@c@j@g@h@g@h@m@l@s@d@k@n@_A`@m@PWR_@Va@b@w@P]`@y@Zq@Zs@\\{@Vs@Pg@`@iAV}@X_Ah@wB^yA`AaE", - "łódź stoki|łódź widzew": "wr_{HetavB`A{DjA{EzAiGfBgHNm@V_Ax@iCVq@`@eA~@wBl@sA`@{@|@kBDIDIp@wAl@mAzGoNl@oAtAwCtAuCfCmFzHkPbAuBvCiG@CFKtBmEz@kB`@{@^_ANa@Nc@Nc@Ng@Je@Jc@VmARqAFg@Fi@PaBRkCr@oB", - "słotwiny|żakowice południowe": "{wuzH_o`xB{@jBeBnD]hAg@fAe@`AGNKTQ`@M\\M\\KZKZwArEo@vBCJM^IZIZIXKb@I^I^I^G\\G`@G^If@E^E^In@Gj@Ed@?BEl@Ej@Cn@Ep@Ap@Cp@Ar@?p@?p@?r@@l@@d@@d@@b@Bd@FrAr@fORfE^jHD|@Dz@TbDDf@Bl@Dv@Dt@B\\@^@`@@Z@h@?^@XBb@Bp@FfAR`EjCxj@D`AD`ADdA@b@Bb@@n@@l@?J@`@@t@?t@?v@?t@At@At@Ct@Cr@Cd@?NCb@Cd@El@Cd@Gx@CNEj@Gf@Ip@Ip@Ip@Mx@c@`DSvAs@fFEZEZCXEf@CZE\\EVQpAy@bG", - "mikołajów|słotwiny": "qarzHoafxBs@tAuDnFcRdXaa@tk@q@`Ag@r@i@x@e@v@g@x@]p@a@v@a@x@sArC{BvECFw@bBeCfFaIpPyA|Cc@|@}BzEyGlN}CrGu@|AO\\w@~A", - "sędziszów towarowy|warszawa zachodnia peron 8": "cftsHomnyB}CcPuEyToD_QkDqP}@iEaCmLkBcJ_AqE{@yEeA{H{Dc`@cCyUq@sGwCgViCoSmByOi@iGqBk\\wB{]k@yI[}Fq@mJ_@aEc@cDm@qDy@yD_A}DkCmLaCmK}BqKwAuKoAoMSyBm@}Go@oGEc@YoB_@uEWuEIeF@cDBsA`@kVT}KBgEEqEg@{I]iDk@sD{CgMaAaEe@eBkEuPoCiIgBgDqBsC{A{AoCiBoAm@eBi@yB]a@AsACyBDgCl@gCx@eC|AiB|AkF`FwFbEsCfA{B`@sBLwAGwAGmDy@_Bu@yCuBqC}C_BeCiBeEaBuF{AsGkDuP}@oEmUehAyFoXs@qCk@qBg@wACIe@kAm@oAm@oA_D{Fk@eAUe@Se@Se@Si@a@kAa@oAYiAKe@Ic@]gBMw@OaASuBMyBmBmd@u@sRc@}Hs@sHCUkAsKuAgLeAoFqAcFoA}D_AaC_LmXmKiWeR{d@eB}EGOeBwF{AyFqA_GcAeF}@kF[oBkAuJm@mFo@cGGi@_AsIwNksA_@eD[cC]uB]cBa@_Bg@cBi@_By@kB}@eBoAqBuAeBgDqDiAmA_@a@WYcFoFaG_GsAuAiCqCkCsCeBoBuA}Ai@o@aCoCu@w@y@}@kAqAoAsAY[qA_Bo@}@k@_Ae@}@a@_Ac@gAa@kAIUQi@WcA}@aE}@gEeDyOWiBi@wCg@cD_@_DW{CUmDMgDGeEGkE?kCF_c@?iFCyEIwDOcDQqCWwC]uC_@kCc@cC]aB?Au@_De@aBc@sAcAwC}@sB}@oBy@yA{@yAuBcDqKePkAaBkAyAgBkBkAcAaAw@gBkAkBcAaC_AmA]iBa@{AWsBWsDa@gGy@YOceAyLgBSiBMwAGsEIsB@eJ\\kBCwBI{@I{@MqAWoA]_DiA}UaJsBs@oBi@wAWcBS{UwAk`@_C_BQ}AWwA_@mA_@kD{AgIoE{BwA_CmBaCeC{BwCoDsF_LaQiBiCyA_BuAoAsAcAoAu@qAm@i@Ug@QuAc@mHcB}Ai@iB{@eAs@q@i@{B}BcBgC_BaDkAaD{@cDe@{B[wBW{BOyBI{BMeCgAm^EuCAsCDqEJgEPmJHwEHyDLmELoENqEJoE@e@D_CHcDNcDNcCZcD\\iCPmARgA^sBZuAx@uDl@eCNs@xBwJl@wCd@yCf@wDTiCTyCN_DHaDDiDGmV?iA?kDBmCHoDP_DRyCXyC^wCb@yCh@sCv@kDtO{p@nCoLl@oCh@qC`@sC`@uCd@iEdAyIX}B^sBb@qBf@gBl@iBt@eBt@{AnAyBrAwBhAsBt@yAt@cBl@eBj@qBd@oB\\oBXwBT}BN{BHaCDaC?cBIyCK}BS_CWwB[wBc@wBg@mBk@gBq@gBw@aBw@sAaA{Ay@aAgAgAgAy@gAs@oAk@kAc@oBe@cLcBmIqAkEq@mEq@gBYmCUeCAwBLqERqFVy@Dso@zC{AFs@DsLf@kBDuBBcBIiBQkB]cBe@aBk@iBy@_BaA_BgAyAoAyAyAsAyAwAkBqAsBiAsBaAwBcAaC{@iCy@kCs@qCk@wCk@_D{@gFsCyPi@wCo@uCu@qCw@kCaAiCeAeCgAwBiAoBqAoBoAcBuA_ByAuA}AoAiBsAgN_KeBoAcA{@kAsAy@cA}@sAw@wAu@cBm@cB}@{Cq@cD_@wBUoBOmBM}BEuBA}BBsBNwDZeFPiCBe@VkDP}B\\sDRqCfAiPVgERmEPaDh@sIP_CNeCL}CHyD?gCCcCG_DOgEQwCU{CYiC_@uCe@qCi@oCm@mCq@aCi@aBOk@qH}UqPai@w@iCkXm{@mA_DqA{CqAqC}AuC}AcCaBaC}B{C{@}@UYmBmBohAiaAu@q@o@k@SSSSWWSUSUSSY]W[_D}DGG}AmBUYaAkAaKgMkM}Oa@g@a@g@g@s@_@i@]g@]m@[k@Ym@Ym@Yo@Ys@Uq@Us@Uu@WaAU}@s@yCw@iDSq@Qq@_@qA[eAe@qAc@mAa@aAe@gAa@{@c@y@e@{@g@y@g@w@k@{@e@m@g@m@k@q@i@m@k@i@k@i@k@c@i@c@q@e@m@a@o@_@m@[o@]y@_@y@]u@[uIuDGAqa@eQaAa@gAe@k@Se@Os@So@Os@Oo@Mu@Io@Gq@Gw@Co@Aq@?u@@u@B_GVeAD_AFo@Dk@Fs@Jm@Jm@LsDx@UF}EdAcATC@cJnB_Cf@c@HyATyBZcFn@_H|@cIbAi@Hq@Lc@H_@Jc@JoA^oF|AsA^_@J}FbBc@Ng@Rg@Rg@Vg@Va@Vg@\\c@Zg@d@_@\\c@b@_@b@SVWZW\\Yd@U\\c@r@gAjB}B`EGJ{@|AaBtCiAhBk@z@a@j@i@r@e@j@w@|@q@r@a@d@_@^]^c@d@c@d@_@Zc@`@a@Za@Ze@Xc@Vg@Vq@XYHe@NG@GBYFi@Je@Fi@Fe@@i@Bg@Ak@Ae@Ci@Ge@Ig@Ie@Mk@Qa@Og@Uc@Ug@Ya@We@_@a@[e@e@_@_@a@c@[c@a@i@[g@_@m@[k@[o@Yk@i@kAi@qAi@mAi@mAc@_A]s@_@s@Wa@s@kA_@m@qJ}Nc@q@_@k@_@o@_@q@MUGMe@}@aUid@wAwCa@y@[w@_@_A[y@[_AY_AUu@cHoVmAiEqJu\\uC_Kk@sBIWaG_Tm@yB[oAS_AACUgAWoAQeAOcAQsAOeAOuAKgAIkAKoAGsAGkAGsAUcFOiD}@wSCm@u@iPe@{KGqAIoAIsAKmAMsAKiAQoAOkASqAQgA{CcQSe@{K_o@[cBUmAUeAMk@I[Kc@Me@Uy@Ss@Sm@Ww@Uo@Qi@Yo@Um@Sg@[q@[q@c@{@_@s@e@w@c@q@QYOUe@o@e@o@i@o@g@m@k@o@mIkJ_A_AiA_A_@Ym@e@g@]c@Wa@We@Ue@Wo@Yi@Sk@U_A]}@[m@SqBcAgBo@uAg@}@[YKyCgAq@WeC}@mE_BqAe@kMuEcC}@_Cy@}DyA}Bw@s@YaBk@OGmBs@uSsH{NoFSGwCgAiC_AgE}AkE}A}EcBmBq@uAg@wDuA_DiAg@SsWmJq@Uq@Um@Om@Om@Mm@Km@Iu@Im@Eg@C]A[A_@?k@?e@@U?U@s@Fw@Fu@Jq@Js@Nq@Ps@Rq@To@Vq@X_CbAgAf@s@X_@P}CrA{RpI{O`HqKtEoAh@iH~CYLWLc@Tc@Tg@\\]Ve@\\]Za@`@]^c@h@]b@[d@]h@[j@Yh@[p@Wj@Wp@Wn@Yv@mAbDoDvJsBpFoBlFaKnX]|@cD|I{BdGCJ_@~@a@~@Wl@[n@_@p@Yh@]f@_@h@_@d@_@b@e@f@c@^]\\c@Zc@Zc@Vm@Zg@Ty@\\m@Tg@Pe@Ne@Lg@Hi@Je@Dg@Di@@g@@g@Ai@Cg@Ee@Ge@Ii@Mc@MwBo@sBm@]Ka@Ke@Ke@Ii@Ge@Ee@Ck@?e@?k@BC?e@De@Fq@Ho@JuF`Ao@Jg@Fi@Dg@Bg@@g@?g@Ai@Ce@Ee@Ig@Ig@Mg@Qe@Oe@Ug@Uc@Wa@We@[c@]a@_@c@e@_@a@]c@]c@a@m@_@k@[k@[k@Yo@Yq@Wq@Ws@a@kA{AyE]_A[}@[w@Wi@]q@[k@]k@_@k@a@k@]c@_@c@]]a@]_@]GEc@[a@Yc@Wg@Wg@Uc@Oe@Qg@Mk@Me@Gi@Gg@Eg@Ag@Ae@@i@Bm@De@Ha@Fi@Ji@Nc@Ni@Rc@Rg@XEB_@Te@Za@Zo@h@m@f@sBjBiB~Ak@f@k@d@k@b@o@b@s@d@k@Zq@^m@Xif@|UqLzFsEzBo@Zo@Xc@Pg@Pe@Lg@Li@Hg@Fk@Fc@@e@@i@?c@CG?c@Cg@Gg@Iy@Qi@Oa@M[Mc@Se@U_@Uc@Ye@]a@]o@m@e@g@s@{@a@k@[g@]k@]o@Wg@_@w@Ys@Wu@Us@Wy@Uw@Qu@S{@Q{@O_AM}@K{@K_AI{@Gy@G_AC}@EgACmAAcA?cACaLAgB?cB@iB@gBByABiB@m@JoETkJB{@@gA@{@?_AAu@?i@A]C}@E}@E}@G}@Iy@Iu@K_AO}@O{@Oy@Qw@Os@aB{GUaAUgAQs@Gc@GWM_AMcAK}@I}@KqAK{AYuDGeAKeAKiAM_AM_AUoAScAMi@Mk@Uu@Qm@Y}@]aAaBqEYu@Y{@Um@Qq@Ma@I_@Sy@Qw@O{@Oy@K}@M}@I}@I{@G_AE}@EaAC{@AcAAy@?cA@_AB_AB_AD_AF}@HcAFy@J_ALy@Hi@N_ARgAReATiAdDsOLo@Nq@Ls@N{@L{@Jy@Jw@JmAHaAFcAD{@BcA@y@@aA?aA?yA?yK?m@@s@?O?I@q@Bs@Bs@D}@Ds@Fs@l@gIZ}DFm@Dg@h@yFH{@z@oK~@wLPoBFq@Hw@Ju@Hw@N}@PeA|AcInAmGd@eC`AwEVmANq@Pq@Ro@Rq@Rm@Vm@Ri@Xo@b@{@\\u@xA{C^w@^_AXs@X{@Rq@Pm@Ni@R{@Ny@P_AJo@Js@LgAP_B|B_VJ_ANmAJw@N}@Ns@Nu@Pq@Ry@Pm@Rs@pBsG\\iAXeAPw@Pw@Nq@Ly@N{@L_AH}@H{@F_AF_ADy@BcA`@ePJqDBiA@kA@gA?mAAgAAkAEgDCkACkAC}@E{@E{@G}@Gw@I{@Ky@Kw@iAuHG]M{@AKQmAKy@I}@Gw@Gy@Eu@E_ACy@A{@Ay@?}@@y@@_ABmADqAVwKBy@?aA@y@AaAA}@C}@E_AE{@Gw@G}@K{@Ky@Kw@Ky@gCsOYeBSuAQmAOmAMkAMoAKkAIoAImAGsAEiAEsAAiACsAAoA?sA@mA@qARkKj@mZDeBJkF@s@@gA@}@?_AA}@AaAC}@E}@E}@G_AI_AIu@K}@My@M{@Ow@Ow@Sw@Su@Sw@[}@]gA}@aC_DuIUs@Wu@Ss@Sy@Qu@Qy@Ow@M_AMy@K}@Iy@I_AG}@G_AC}@CaAA{@AaA@{@@aA@}@DaADcAFgAr@qKD{@D_ABaABy@@aA?_A?}@A_AC{@EcAE_AGw@GaAKiAu@oK[uDe@eGIgAGkAGaAEiACmAEsAIeDCuAEsAE_AE}@G}@I_AI_AK}@My@M}@Oy@Q{@Qy@Sw@U{@Qi@GUUm@Um@Wo@Ym@[o@]m@[i@]e@a@k@_@g@g@k@q@q@m@g@a@Yc@Ye@Yg@Wa@Qg@Sg@Og@Mg@Kg@Is@Iq@EaCOu@Cs@Gm@Gm@Mm@Om@Qk@Uk@Um@Wm@_@g@]g@a@e@c@g@e@g@i@e@g@c@m@a@o@a@q@_@u@_@u@]w@]{@Yy@So@EOY}@Sy@UeAUmAUmA_AgFO_AS_AOw@Sw@Sy@So@Uq@Wu@Wq@Yo@[o@Yi@]k@[i@_@g@_@c@_@c@_@c@w@s@q@q@gB}Ae@a@c@a@a@c@]_@_@c@]c@]g@_@k@Yg@_@o@Wm@Sc@Wm@Yy@Uq@Sq@U}@UcAS}@QeAUsAW_B}@_HQqAkDcXS_BMeAOkAKgAMoAYuCSaCCi@Eg@Ew@CcAC}@A_AAq@?s@@y@FgCPeHFeBN}FDiB@y@@cA?{@A}@A}@CaAE}@GaAEq@G}@UqCg@_GKqAKkAIu@K_AK_AMu@Ks@Q}@Qy@Qs@Qu@Wy@Ws@Uq@Wo@Ys@[k@Yi@[k@U_@IK_@g@]e@_@e@_@_@a@_@_@]c@]c@[g@Yc@Uc@Sa@Qg@Oi@QiEiAg@Og@Q]Mc@Q]Q[O[Ua@W]W][][YYY]]_@Y]W_@Ya@Ua@Wc@CEUa@Ue@Ug@MW_CqFWi@Ug@Wg@Wc@Wg@Ya@Yc@Y_@[a@[_@UEQSQOYW_@[]W[Sa@U[Q_@Q]O_@Oa@M_@Ka@IiE}@_@I_@Kc@Kc@Ma@Qa@O]Q_@S]S[SKIUQa@Ya@]_@]{BqBi@g@]Yc@]_@Y]U]S_@S_@Sa@Q]K_@Ma@Ma@I_@Gk@Ig@Ee@Cg@Ag@@e@@k@Dq@Hg@H]F[H[HwElAm@Nk@La@Hk@He@De@Ba@B_@@]?A?e@@]?_@?_@Aa@A]E_@E_@E_@I_@IYIWIg@Qe@Sc@Q_@QqAo@uJwEc@U_@U_@S_@Wc@[a@[KKw@u@_@c@]e@e@m@g@s@i@w@{BcDEGu@eAa@m@a@g@[c@c@e@_@a@_@][[c@]a@[c@]a@We@Yc@U_L}Fk@Yq@_@e@[i@]e@]c@_@a@]c@a@_@a@_@a@a@e@a@i@_@e@Wa@W_@a@q@[m@a@u@a@w@sAmCyAwC]o@]q@We@Ye@Yc@Ya@[c@Y]]a@YW[YYW_@Ya@Yc@Yg@YuAw@qMcHg@We@Ua@Qc@Og@Qa@Ko@Mg@K]Eo@GIAk@Ei@?o@Ak@Be@@c@De@DeALaBRkHx@w@Jo@JsCb@qBZq@JcAJg@H{@JeAJc@Dc@DcAHoAHwANuD`@m@Ha@Da@H_@Da@H[HYH]L[JYL[NYPYP[T_@Va@X_@ZgBtAmA`Ac@Zc@Za@Ta@T]P]L]N_@Ja@L_@Ha@Hc@Fa@Dc@Dc@Ba@?c@?a@Ac@Ca@Ee@E_@Gc@Kc@Ka@M]Ma@O_@Qc@U]Uc@Wa@[_HgF_@Y]U]W[Q_@S[Oa@Q[M_@M]Ka@K]Gc@G]E_@E_@Cc@Ac@?c@?e@BgI\\c@@a@@a@?[?M?QA]A[C]CGAUE[EYIe@Ka@Ma@Mc@Qa@SmAm@wFuCc@Ue@Uc@W_@U_@W]Wa@[][][]_@]a@c@g@}BoC_@c@[[]][[]Y_@Y_@Y_@U_@U_@S_@Q_@O_@O]M}Ai@wBu@a@O_@K]M_@I[G[G]G_@C]E_@Aa@A_@AQ?iCCa@Ae@Ac@Aa@Ee@E_@Ea@Ic@Ka@Ka@Ma@Q_@Oa@U_@S_@U_@Wa@Ya@[wEqD_@Y]U]U_@S]S]Qa@OWICA_@Ma@Ka@Ka@G_@E]E]C_@Ac@?_@?_@@c@Ba@Ba@Fa@F_@H_@Ja@Ja@N]Na@P]R_@T]R_@X[V]Z]\\[Z]`@[`@]b@eAhA_B|B}@pA[`@WZWX[^[Z[XYVYRa@Xc@X_@T_@Pa@Pa@Na@N]Ja@Ha@HWDm@Ha@B[@G@a@@c@A_@?_@Ca@Cc@G_@Gc@Ia@Ka@K_@Mc@QWKWO_@Q[S_@U_@YYUCCYU_@]a@c@c@e@a@c@iOwPoC{CY]]a@QSKMYc@[c@Wc@Ye@Wg@q@wA_@_AUi@o@cBm@aBUq@Wo@Uk@Ug@Ug@Yk@Ye@Ye@Wc@[c@[a@[a@]][]WWc@_@_@Y_@YaAu@qCuBuAcAk@c@q@g@eAw@e@]{AcAkBkA]UYS[U}AiAgA{@{EqD[W_@Wa@][Y[YYYY[SY]a@W_@Wa@_@o@KSUa@Uc@Uk@Qa@[y@Uo@mAwCGUu@_CaAyCWs@kDuKKWyB_H]kAe@_B[eA[kA[cAq@uBsCwIgBuFsAaEK]w@aCq@wBa@oAUs@Um@Qg@Wm@Ug@Ym@Wi@Wc@Ye@Wa@_@k@i@o@[_@[]_@]][YU]UWQg@[k@[e@Ue@Qe@Oe@Me@Kg@Ia@Ga@Ek@Ci@Ac@?g@?_BDe@@sCDG?kABo@@k@Aq@Ag@Co@Gi@Ig@Gk@K{PsCaHkAoCe@yCg@y@OaASWG{Be@SEYI_HyAcQsD{HcBaCg@eCe@oHmA}Ey@qEu@_Dk@o@Mm@Mo@QyAe@qHgCkJaDkAa@cBk@q@UKEcCiAqC_Ao@Sq@Qa@Kg@Ka@Ga@IaZaFoe@_IkCc@uqCie@iEs@s@Mu@Ou@Qo@Qs@Us@Wq@Ym@Yu@_@m@]u@e@k@a@q@g@i@e@o@i@k@k@k@m@m@q@m@u@c@k@k@y@g@s@g[}e@i@y@i@u@_@g@]c@_@c@a@c@_@]e@_@a@[e@[e@Wc@Ue@Ue@Qe@Mg@Og@Ie@Ig@Gg@CqAIgCMgCKWAiCMUCSAeD[_@C_@Co@Eo@CcFUc@Cc@AyDK_ACaAE}FWQAYAwJe@uAIc@C]Cg@Ei@Ie@Ig@Ke@Mg@Qe@Se@Uc@Ua@Ui@_@a@]a@]g@g@[[_@e@_@e@_@g@a@o@[i@[m@Wk@Wi@[u@Ws@Wy@So@Uu@Qy@Qu@Q{@O_AMw@M{@K}@I_AI{@G}@E}@E_AC{@AaA?aA?}@@qA@iAPaKBuA@_B?cA?aA?}@CaAC_AEcAEs@C_@ASCSGy@Iw@K}@My@M{@Q}@Q}@Qw@U{@Ss@Uu@Uo@[y@Yq@Ys@Wm@y@kBs@}A_@{@]s@]o@[m@a@s@[g@]e@a@g@c@g@]_@c@c@a@]a@[e@]e@Yc@Ue@Ue@Si@Qe@Mg@Mg@Ig@Gg@Eg@Ci@Ak@?e@@g@Dg@Di@He@Jg@Lg@Ni@Pc@Pm@Xm@XaErBeClA}@b@m@Zm@Vg@Ti@Rc@Ng@Ni@La@Fg@Fi@Fe@Bg@@i@?e@Ai@Ei@Eg@Ge@Ki@Me@Oc@Qg@Si@Wc@Uc@Ya@[e@_@c@_@a@a@a@e@]c@a@g@]g@]i@]m@Ym@Yk@Yq@Yq@Wu@Wu@Us@Sy@Qs@Qy@Qy@O_AMy@M}@Iw@I{@I_AG_AE{@EgACy@CmAAkAC{AC}AEoEUkTAoAEuAEuAEqAIwAGqAKoAKmAOsAOuAQuAQkASmASmAG]Q{@S}@WeAYmA[gA]iAa@sAe@wAqJqZa@mAa@sAkC{IsAqEe@{Ai@aBwMab@qP}h@iAgDe@uA[_AQk@_DmJkVwv@[_A[_A[{@a@iA_@{@a@aAa@y@Ug@a@w@Yg@[i@i@{@e@s@k@w@e@m@k@s@g@k@i@m@k@k@m\\y]}h@uj@{[e]cDiDkz@_}@s@u@u@y@w@w@u@u@m@k@k@g@k@c@m@c@m@_@o@a@q@]o@[o@Wq@Yg@Ok@Q}@YiDaAmEoAi^gKYIiWoH{Bo@gFyA{IgCq@Qo@Oo@Mg@Gk@Im@G_BMiKu@aCQuBO_@E_@Cc@Gu@Kq@Kq@Oq@Ou\\wHeGyAoMuCs@Oq@Mo@Ku@Ku@Gs@Ei@Cy@As@@q@@s@Dq@Dm@FsZjDaAJ_AJu@Hu@Fu@Dq@Bu@@s@?q@Cw@CaBG[Cw@Cw@Eg@Ek@Ek@Ig@Ii@Mc@Kk@Se@Qg@Se@Wi@[e@Y_@We@_@y@s@u@m@wBkByEeEk@g@i@i@c@e@e@i@c@i@c@k@c@m@_@k@c@u@]m@[m@c@y@a@y@Wm@Yo@]}@[y@Yw@Oc@[cAkB{GCIiDaMi@oBIYmAoEYcAYiAQo@S{@Om@Mi@Ms@Qy@QeAO_AOcAM_AMcAKaAWyBmScrB_NisAMiAI_AI}@IcAQeCI{@E_AIqAK}AImBGqAI{BGyBGuBCkAIkAUwMImECmAEkAC}@GaAG}@I_AGs@MgAM_AKy@QkAGYIi@e@kCqN}y@wAiI_AwFiD_SGa@QaAUkAMs@SaASw@Sw@Uw@Us@Wu@Wo@[s@Yo@[m@[k@_@k@[g@a@i@_@e@]a@e@a@i@g@YUc@[c@Yc@We@Ug@Se@Qg@Oe@Mm@Oq@MMCYGqJgBuCi@sLyB{JiBo@Mq@My@MaA_@k@K{MeCa@ISEYG]Gk@Ki@IQAWEi@Eg@Cm@A[?M@k@@k@Dg@De@Fm@Lg@Jk@Pe@Pi@Rg@Tg@Xg@VmC~Ai@Ze@Xe@Ti@Ta@Pg@Pe@Lk@Lc@H]DWBYBg@Bg@@c@?i@Ac@Ci@Gi@Gg@KOEWGe@O_@Mk@Ua@QCCc@W]Si@_@a@[MKWUc@c@a@c@]a@Y_@g@s@]k@]k@]q@IOQa@[o@Yq@Qa@kAuCGMwAuCYu@Ui@s@gBoByEEKuAeDa@aA]u@Wi@g@_Aq@iA_@i@e@q@eAwAIKuAiBk@w@o@mAi@u@EEa@k@c@o@Yc@Wc@Wc@S_@MYQ_@O]O_@Oa@KYQg@Ss@CGOg@Mk@Sw@eA_Fu@gDm@mCqAaGa@gBk@mCsAcGOs@I]Mk@Ke@Ss@S{@EMOm@{AmFs@cCk@uB_@oA]mAW}@S[oBaHW_A[eASk@GQKWUk@Ys@AE]w@Ym@Ym@{@aBcFuJcCyEU_@AEWe@_@m@_@q@Ye@MSS]S]Q_@Ua@S_@OYuAoCkCaFy@aB}B}Ec@aA_@y@]s@cAoBsAmC}CaGg@aAMU{AyCaAiBcFuJeBiDi@eA]m@]k@[e@]i@a@g@_@a@a@c@a@_@e@a@OKSOc@Y]Sc@Ug@Se@Sc@Mg@Me@Ii@Ig@EKAYAe@Ag@?i@@g@Be@DWDQ@G@gALoAP_BPoANcBRM@q@FM@q@FaAFi@DSBc@Dc@DkDPeBRo@H]D_BRw@JWBmAPs@Jm@Fm@FsD`@_D\\S@{AP{@Ju@L{@L}@LSBsAPkGt@gMxAeALmPnBI@iBTu@Fu@Fs@Fw@Bq@@s@@w@?q@As@Aw@CmFQeAE}K_@}I[q@Ca@AmDMwDM_HUgAEkHW{La@cUw@sGUaDMgJ[oCKgACmNg@kW}@q@Cs@EA?w@Gw@Is@Is@Ko@Ms@Q_@IOEu@Uq@SYKWKm@U_CaAoCkA_KiEeAc@}EsBoCkAsB{@oAi@mQuH_Aa@IEa@Oe@Ga@Qq@Uu@Ws@UGAg@My@SMCc@Iy@Ow@KWE_@Ey@I}@EWC_@Ai@AUAs@?W?S?]?A?e@@s@B]B_@Ba@DW@u@Hk@HUDe@FQDa@Hu@Ns@P_@JUFcDz@i@NI@iO~DyKtCG@yHrBMDG@aBb@eFrAaKjCk@NoJfCkG`BqFvAo@Py@Rq@Pq@Nu@Nq@Jo@Ju@HYDg@De@Bs@Ds@Bs@Bs@BoWr@eBFyDJcEJeDJI?E?s@Du@Bq@DSBa@Bw@Hm@He@FC@w@Lq@Nq@NODe@Js@REBsB^u@RqA^{Ab@ODg@Ly@Vu@Ru@Vq@To@VWJ[Lo@Xq@\\s@^m@Z[RUNm@`@o@`@o@b@uG~EiAv@}B`Bc@ZIFo@b@o@`@q@`@GDg@Xq@^q@\\[NULq@Xu@Zk@T[JGBo@Ti@Pi@Pq@Rw@Rs@Py@Pq@Lk@J_@Fi@Hg@Ho@Fi@FyD`@w@HyEh@{Ef@iBRQByCZa@DeBPi@F]Da@Bq@Fw@DG?e@@w@@C@{@?U?[AwCCmACeFI{ACiCEeJQoBCgJQkDEuDGqDG[AE?GAiKOu@CsNUcJOs@AiKQuJQmGKeJO_@A}@AyYg@wR[cJOyNWqACcAA_MScHMeJOoEIiJOyACE?a@AqDGuDGkACeACk\\i@iR[}ACqACI?}@C{@Aq@?G?g@?w@@y@BY@}BFs@BmADgCFig@tAwCHmELkWr@mADm@BkM\\eJVoUn@yd@pAwADiGPgBDO@uBFkCFkBFs@BI?}@BiDJK@_DNYBI?s@F_CRcIr@iDZ{D\\}D\\wIv@{Jz@u@HgGh@_@BkJz@K@cQ|Ac@B}Eb@oh@tEu^bDgAHkUrBw@Fu@Fw@Dw@Bw@Bw@?y@?s@Cu@Cq@Go@Gu@Is@Ks@Mq@Ms@Qq@QOGa@Ms@Wo@Ue@QOGm@WeBu@kD{Ae@Sw@[q@W]MYKe@OMEq@Qq@Qo@MMCg@Ks@Ks@I_@EQAu@Go@Cy@Cq@Au@@y@@M@_@@s@Du@Fs@Fq@FuLnAkJ`A_P`BgALcAJmBR{@HuBTaAJE@_@Bq@HYBc@Bu@Fw@D_@@Y@s@@{@?u@?aA?sJAyJAG?}CHa@?mJAgA?_@?K?iKAS?O?qD?uDA{C?}TCeA?s@?]?[?A?w@?w@Aw@CI?m@Cq@CWAc@CYCC?[Cu@Io@Go@IMAo@KIAk@IqO}Bi@IaBUaG}@gDg@mImAcJsAwHiAeDg@eAO{O_CIA{Es@eC_@{Dk@a@GsLgBqEq@aPaCa@GgAOwB[uAUwGaAmPcCkDg@sEq@qFy@wASqO}BgAQo@IgLeBc@GeC_@wDk@e@GWE_De@g@I}Ce@_C]_C]aBU{Es@m@KuK_BsDi@s@KiJuAyAUmBY{F{@iBWsPgCqDi@cAOq@Io@IKAg@Eq@Go@Ei@AI?u@Co@?I?a@?W@a@@e@@O@m@Ds@Do@HM@e@Ho@Jq@Lq@Lm@Ns@Ro@RYJUHo@Vo@Vq@XA@m@XoFlC_NvGyBdA_HhDiFfCs@^u@`@{C~AuAr@{@`@aAd@eBz@gDbBcAf@kAj@WLiDbBiAj@w@^m@XoAn@o@Zo@Xm@Tk@Ri@NOFSDEBi@J_@H{@Ns@Hi@Dm@Di@Be@@q@@oABI?m@@m@Bg@Bi@Do@Hi@Fg@J]HQDi@Lm@Pk@R_@NGBGBk@Vo@Zi@ZWPQJg@\\e@\\SPSNYTML]\\a@^c@d@g@j@i@p@Y^MPcAtAiBhC[PyEtGoAfBsEnGsEnGIJwApBcRlWuApBuBrCoFrHW^sBrC]f@sIrLY^eDvEaDlEaHrJgDvEsX|_@qPnUw@fAqFvHmCtDW\\qBrCm@v@m@v@m@t@m@r@o@p@s@v@g@h@s@r@yMzMC@uHvHgJfJ]^{@z@iCfCoApAmDlD_E`EMJEDe@d@q@p@IHC@c@b@k@f@MJc@^s@h@k@b@o@b@e@XC@EDq@^s@\\m@Xo@Vq@Vo@Rg@NUHq@RSDg@LyD~@uCp@aMzC_GtAeAVcSzEqCr@oDx@{Bj@s@P[H}FtAeCl@yD~@C@aDv@}Cr@a@LcATsHhByJ~BeAXaB^w@RiKdCE@cJxBODuA\\a@J}HjBc@JgBb@aJxBcCj@oHfBq@PiAViOrDaHbBcDv@oDz@oDz@]HYH{J`CKBcJxBgFnAuJ~Bu@PIB{@RcOpDwJ~BqAZwJ~Bw@RgY~G{JbC{D~@iBb@iCn@G@uKjCgAXG@IBkHdB_UpFiDz@uD|@aCj@gGzAYFc@JGBc@JoCp@w@PsCr@{D~@a@JcAVwBf@}U|F}D|@eDz@iOrDaJxB}OxD}@TaAT_JxBYFoDz@oD|@]HG@GBab@`K{EjAUF}G`ByA\\u@Ri@LoJhCcBb@oDz@_Dt@w`@rJqHhBGBm@LkEfAiGzAGBgEbAiDx@}@TSDqG|A_@JiKfCUF_IlBQFqDz@mDz@gBd@sAZuEhA]HoCp@wEjAg@L_@HwBh@_AVA?}@TiA^u@Vu@Xu@Zq@Zq@Zs@\\QHa@Tu@^sBbAgDbBiAj@g@Vc@Tw@`@iCnAqJ|EaBx@o@ZuGdD]Pu@^wE`CgBz@]R_D|AwDlBy@`@sFpCo@\\q@\\eEvB_@RiI|Di@XyC|AoAp@_GzCqBdAcB|@s@^{DpBuOfIwAv@k@XEBULmJ~EiB`Au@^qAp@kAl@[PmDjBcDbBa@RwH~DaDbBsM~GiIhEcAh@_HnD{C~AqInEgB~@oAp@cJxE}EfCqInEQHoInEmHxDaAf@cDbBcVfMk\\`QeDdBiDhB]NOJIBm@\\cB|@_IbEiB`A{H`EoLhGgDdB_DbBoDjBmNnHaAf@gDfBeCpA_@RsBdAs@^A@q@\\a@PSJq@XMFe@Pq@Vs@Vu@Vs@RSFA?C@UFu@Ru@Pi@JG@u@Ns@L}@PSB{Cj@oDz@QB[F_@F}Bb@mM|Bq@Nq@Lo@No@Po@Po@Rm@Rs@Vq@Zo@Xm@Zs@^o@^q@`@q@d@s@d@mDbCe@ZqAr@uKpHu@h@]Re@\\y@h@cAp@y@h@uA|@g@Zg@\\WN{@l@i@^m@d@k@`@c@`@g@b@m@h@m@j@m@l@k@j@{A`BEBm@n@yA~A{@|@s@t@o@r@[ZmApAu@x@MLeAjAc@d@s@x@gAlAgAlAsAvA}AbByA~AwD|DoEvEqBtBmBpBuCzCg@h@cDjDGDOP{B~B{C`DoExE_A~@cBfBuNfOUTYZo@l@ML_@Zm@h@m@f@UR_@X{BfBWRoCvB]VGD{AjAkA~@cBpAaDdCEBqG`FsDrCw@j@g@\\w@f@o@\\IDi@X{@^o@Xo@Ti@Ps@Rw@T_@HEBG@u@NcARq@Lw@Lw@J{@J_AJm@Dy@Fw@Dw@Bu@B}EN{@Bq@Bu@Du@Dw@Bu@FU@wAH_CL_BHU@cAF{BLsFXyG^eIb@}G^gETgH^uCPW@sDRqDRC?uBJuAHwBLwId@gJd@cAFuCPyCNcH`@_CJSBsAFcETiAHkDP_BHa@B}Jh@uBJ{DTqET{AHK@I@k@B_DPgETE?sJh@aKh@yAHcAFa@BkCPkAHmF^s@DiH`@gE`@a@BaJf@G?G?sCPyQ`AaETyEVI@oAFwAHgDPO@q@DcBJyDRcBJ{BJcAFeFXcGZqFZwAFaDRcCLw@DiAFuBLcDPeAFQ@[@]BK?e@B{@Dw@B_ABiBD}CBeC@oEDY@gGDw@@o@?cA?mAAaAAo@?m@?qA@kA@{AB]?aBBS?oA@i@@S?M?wA@kDDU?_@?uBBqGF{CBuB@kEDoDDI?}CDmDBaGFkEDaA?uD?cFBgC@kFFoMJaABk@@g@Ba@B_@Dc@Ha@Ha@La@Na@P_@Rc@V[T]X_@\\]\\KLON[`@[`@Yb@Yd@Wf@Wh@GLMXWl@Qh@Od@ABOj@Qn@Ml@Mh@QbAYjBy@hF_ArGG\\}@`G{AxJiC~PqAxIq@xEuAxIQdAOfASlAQdAi@dDu@dFi@pDQnAKt@Kv@}AzLe@dDe@fDuDvWeHhg@e@dDG`@If@CPIf@G\\Kd@S`ASv@Sl@Qf@Qd@Ud@Q^U^Yf@]d@eAnAy@|@e@d@i@j@i@h@]\\WRMLk@d@]VMJSPuAfA]ZSP{@~@qCtCeDjDa@b@wAzA[V]Z_@X]T_@Ta@R]Nc@L_@Ja@Ha@FG@g@DS@Y@U?SAYAUAUCWCUEWG[ISGSGe@SaCaAe@SQIa@Q]OSKOKOKKGECOKOMAAMKMMGGMMIIMOOOIMCCMOMSCCIMEGCECEKSMSKSKSCEEKACKUWm@CGq@aBYu@Qc@g@{AWKKWIWGOCEIWIYGWIYEQAGGYAAEWGYG[EYAGAMAEE[AGASE[?GCSC]AKAMC]C[A[CWCa@?EEo@IiAAOA[C]C[AKEk@?CCYEYAQAKC[E[Gi@CMEYE[E[G[EYG[G[EWGYEQAGGWG[IYGYGYIWCIMi@Mg@CIIYCMCIIYGWIYg@iBGUEKKa@IWIWGW?AIYGWIYEQAGGYGYG[CKAMGWO{@Ku@Ig@Ii@Iu@SoBOsAGg@Gi@Kw@Ik@c@qCWeBOaAE]Ie@SeAoBeL", - "sędziszów|sędziszów towarowy": "ucssHw~kyBoD{IqC_JgHmTyC_JQi@m@gBQg@w@aCqBgGmAiE", - "gniewięcin apo|sędziszów": "mfnsHi{iyBiB_@iB[oBOkBGsAB_ABsCV}Hz@sRtBmPhBmPhBaBLeBDkBAgBImB[{AYuAa@qBy@mAo@WOiAw@}AiA}A{AoAwA_AoA_AsA_BkCiDoIeDwJ]aA_@kA{DmLSk@GUqCiI", - "gniewięcin apo|klimontów apo": "mfnsHi{iyBAJdBl@dBr@tC`BnCrBvApAvA|ANPdChDdFzIzAjCnBnCzAhBnApAlAbAzQtN`NbKvCzBjAz@pAx@pAv@l@\\bAh@x@b@d@RhBz@D@zBz@vBp@bDz@pJrB|D~@B@PDjGtA`KxB|VtFtFnA~AZtCn@", - "klimontów apo|kozłów": "mdhsHw`fyB~PxD~KdC|KbClE`AxJxBjCt@vAj@vAt@`CbBpBjBbBdBxB|BhAjAh@h@d@`@d@`@j@d@n@`@f@Zh@Xb@Td@Rf@Pb@Nd@Nd@Jb@Jj@H`@Fl@Fh@Df@@j@@h@Af@Ah@Ch@Gj@Gd@Gf@If@K|Bc@vAWl@KJC^Gf@Gf@Ef@Eh@Ch@A`@@f@@L?H?L@d@Bd@DD@j@Hj@Hf@JxBGbB\\lE`ArAj@\\H@?xBf@`@HtBd@", - "charsznica|tunel": "o`rrHuotxBCeA?y@AsA@kA?eAB{@@_AHqEJiETwJVwLHmDDwAJgF@cAB}@?}@?{@A_AC{@Cy@?OEs@Es@KgAI}@Go@Mu@OcAO}@S_AOs@Ss@Sw@Uq@Yw@Sm@Wk@KWKU_@s@[i@[i@]i@_@e@[a@c@g@a@_@c@a@g@c@_@Wa@Ye@Wc@Ug@Sg@Qg@Oe@Mg@Ke@Gi@Ge@Ei@Ai@?i@@c@Bg@Dg@Fg@Je@Jg@Ne@Ne@Rg@Tc@Tc@Va@Ze@^SPQ?c@b@a@b@a@f@UVW^c@j@iA~AySfZm@v@_@d@]`@c@b@c@`@a@\\a@Xg@\\c@Vg@Ve@Rg@Rg@Ng@Lg@Je@Hi@Fk@Dg@@i@?g@Ag@Cg@Eg@Gi@Kg@Ke@Mi@Qe@Sg@U[S_@Qe@]e@]_@[a@a@_@a@_@a@_@g@a@i@]g@Wc@We@c@y@Ys@Yq@Wq@Uq@Uu@Su@Sw@S{@Ow@My@M{@Kw@K}@Iy@Gy@G_AE_AC_ACaAAaA?_A@}@@}@By@DeABu@D{@FeAn@kKDiAFiABcAD{AB_A@aB?yA?kAA}@AYCmACqAGkAGsAImAKqAKkAMmAMoAQuAqA_KQoAUoBMmAOqAIkAKmAIqAGoAEoAEqACkAAsAAoA?mA@oA@y@@Y@_AD{ADaATeFPgGBm@Bq@Bs@@o@@s@?q@?aAA{@AaAC{@E_AG{@Ei@AUIy@K_AKy@M{@My@Q}@Os@Ok@Qq@Qm@EMK]Qi@Sg@Ys@M[IQ]q@Wi@[e@KSKOYc@Y_@[_@Y]]_@MMMK_@]_@Ya@Y]U_@S]S]Oa@Qc@O]Ka@Ka@Ia@Ia@E]Ea@Cg@Ac@?e@?e@BY@_@BeBJU@eAH_@B[D]D[@[@E?_@@eB@U?U@[B_DVe@BS@W?e@?e@A_@Ae@Ga@Eg@Kg@KKESGa@Mg@Sa@QoCsA", - "charsznica|gajówka apo": "o`rrHuotxBLzIBhB@RHnE?b@DfAB~@D~@FbAFbAJbAJfAJ~@BJTfBjBlNpA|JJv@Lx@Lz@N~@PbARdAPz@T`ATz@V|@Tt@X|@Zx@Xt@Zv@f@jA~ArDZt@Xp@Vt@Tn@Tt@Rp@Rx@Np@P~@Lt@N|@J~@Hz@Hx@F|@F|@@X@f@Bz@@`A@b@?vAArAClAAr@c@zX]zTClAEpAEvAEtAItAIrAKpAKzAMhAE`@Gn@{@pHQdBQ|AQpBKtAM~AIlACXIfBIvA[vGaClh@Cp@KjBIdBK|AItAO`BM|A{@lJK~@a@jEmAtMMpAsCzZE\\OzAQ`BQzASbBSvAW`BU~AWxA_AzFoDhTkCbP{AhJADc@nD", - "gajówka apo|wolbrom": "{qrrHomexB_CnNW`BObAQdAQpAQrAQrAOnAaGvh@OpAQtASrAQpAQnASlAUrAUnAG^kE~UQbAOx@Kv@Kx@K|@Ir@Ix@Ex@G`ACp@Cx@Cx@?x@?v@?h@?d@@j@Bz@D|@Dx@Dz@Hx@H|@Jx@Hl@N~@Nz@Nr@Px@V`AV|@Xx@Vr@Vp@Vj@Xl@\\n@`@p@Vd@\\f@dBlCd@t@Zh@Xh@Xh@\\x@Tl@Xv@Tp@Rl@Pr@Rz@Pt@Nv@N|@Lx@Jz@Jz@Hv@F`AF|@Dz@Bx@B~@@dA@bAHpJ@lABjABbADfAFnADp@Dr@Df@HfAJdAFj@Ff@J~@Jv@L~@RnAPfAThATjAXfAVfAXbAZhA`J~[X~@ZdAX|@^bA\\~@^|@`@~@Zr@b@z@b@x@d@z@`Vxb@bKvQTb@Zh@Xd@\\f@^j@^d@b@f@`@`@d@d@\\Xd@^^V`@Vb@Th@Vf@Rd@Nl@P`@Hf@Hh@Hd@Bd@Bf@@d@?l@Cf@Cf@Id@Gh@K`@Id@M|HoBv@Sh@MTDREd@In@Ih@Ej@Eb@A`@Ap@?f@@J@l@Bh@DZDPBn@Jn@Lh@Lf@NVJNDd@RVJJFh@Xb@VTNVPTR`@\\^^`@`@^`@\\d@^f@\\f@Zh@Xh@JTNXXn@Xp@Vp@Tp@Rp@Rt@Pp@Pv@FTH`@Lx@Nz@J|@Jx@Hx@Dp@Fr@DjABfA@`A?~@C~@At@E~@GbAIjAKnAMjBa@~EKjAK~@Kz@Kv@Ot@Kn@Ot@Qr@Ol@?@SvAeDdMcApDY~@g@dB", - "wolbrom|zarzecze apo": "c`nrHuxtwBi@jB_@jAkAtDy@dCY|@[dAqCjJKZyAbFUv@Sv@U~@Or@UbAMl@SfAMv@YlBQpASnBMpAKjAK~AGpAGlACdAC~@CbAA~@Ap@?N?L?p@@vA@|ABfAB`AFnA?PFjABRDv@F~@Fl@Dj@LlAPzAJz@L~@XdBTrANx@R~@`Qv|@pFpYf@fCdAnFVhA@F^`Bd@~Af@bBVr@\\z@Zv@`@`An@zAvB|E\\x@Zx@Xt@Xx@Vv@Tz@T|@Rv@R~@Pz@N~@`@hCpAdIXdBBT|AtJjOhaAl@zDvA|IhDjT~AhKtAvIRhAPfARdAVjAVjAVbAXdAXbAVv@DNZ|@\\`A\\z@Vp@Td@BFf@dAb@z@\\n@Zh@Xb@`@p@f@r@h@r@f@n@`@d@d@f@d@d@f@f@j@f@j@d@n@d@p@f@bEtCh@^`@VDDf@Xd@Xf@Vj@Xb@RhDvA", - "jaroszowiec olkuski|zarzecze apo": "ongrHakwvBeBqEwAuDwAyDYy@Uw@Us@Qu@Sw@Os@Qw@_@qBm@gDMu@Oy@Ms@EYw@iEi@{CaAmFO{@Ks@Mu@Gc@Ea@MeAI}@I_AGcAGiAC{@C}@AiAA]?c@?eA@eABeADcAB{@FcAH_AHiAHy@PsARaBx@kGfJ}s@DYFg@d@kDh@iE~@gHRuAPmANeADQPkAVsAbNyu@TmAToAPcAToAPmANiALeALoAHw@BSJsAp@}IDo@dAcNJmAFcAD}@B}@@e@Bs@@y@?y@?o@?gACcACeAAOCs@EaAIcAGaAKcAMgAM{@M{@QeAQ}@S}@Sy@U{@W{@Yy@GUKWWq@[w@a@y@IQSa@]m@[g@[g@i@u@]c@_@e@e@g@c@c@II][_@[e@[a@Yk@]]Se@Ua@QmF{BaDsAECgN}FgN}FiVcKOImMoFWK", - "jaroszowiec olkuski|olkusz": "ongrHakwvBfBpE`@dAb@bAfA`C~BdFj@nAHRf@dAj@nAz@fBZp@^r@Zf@\\h@b@n@f@l@h@l@\\Z^^^Zd@Zj@^f@Xx`@pTnDpBNFZRl@Zr@\\j@Vn@Xr@Xf_@|N~@\\j@Rp@Rr@RRD\\Hp@Lr@J|@JfLtAzc@jFrRzBp@Jv@Hn@Fv@Dl@Bz@@r@?t@A^Cf@Cj@G`@Ej@Il@K`@Gd@Kz@Uh@Or@Wl@U`Aa@r@[dBs@~TmJr@Yx@Yp@Uz@U|@U`M}Cv@Qn@On@Mr@Ij@In@EjAGp@An@?h@?l@@j@Dn@Dn@Fj@Hj@Jn@Ll@Ll@Pn@Rr@Vn@Vn@Xx@b@|@f@~@n@t@j@v@l@nPhM|@r@~@p@n@h@p@f@`ObL|C`C~C`C~CbC\\X^X^X^X\\Z^Zn@j@n@j@pAlAhNbMZVXXXXVXXZVZV\\X\\T\\V\\T^T\\P\\PZP\\P\\Vh@P\\N^@DLZP`@Rh@JZNb@L^Nf@Lb@Ld@Ld@Jd@J`@H`@Np@Lp@Nr@nArGDNbAfFBNFZLn@Ln@DTDXHd@Fd@Hd@D^D`@F`@Db@Bb@Db@BV@VB^B^@XB`@@b@@b@@V?Z@Z?Z@^?\\?\\?b@?X?\\?ZAd@?h@?b@ARAt@Av@Ar@Cp@An@ABDl@ANAj@Ez@Ch@El@?JCb@El@En@El@Ep@KdAIbA}@~Ka@bFGn@eArMIdAKdAGx@Ix@Ix@Iz@Kx@Ix@a@zDIr@I|@", - "bukowno|olkusz": "ofxqH_kvuBVeFHqAFuAD_AB}@BeA@_ADuKDgGByEAyBAoG?uA@{A@aHGaC?c@E{F?M?eA@gC?sI?sAAkACmAEiAEgAGgAGgAIkAIeAMeAKcAOkAQmAQgACMKmAkBcKQ_AQcAMg@]wAYaAUu@Y}@Qc@]_A[u@{AkDkBaE]y@Yu@[_AYw@W{@U}@U_AU_ASeAQ}@OcAQgAMaAKaAm@uFiA{Kwn@meGoAqLo@mGq@mGo@mGGe@Ee@Gm@Eo@Go@Eo@Cm@Eq@Cm@Ao@Co@Ao@Aq@?o@?o@?o@?o@@q@@o@Bq@@m@Bo@Do@Bo@Fo@Dq@Dq@Fq@~Fet@f@gGh@_Hh@qGn@aI@KHaAl@oH@O^{Eb@cF`@iFBY\\eEDa@Ba@Da@Ba@Hw@", - "bukowno|sławków": "ofxqH_kvuBYjAYnFKdBM~AIx@K`AObAQbAQ`AoA|GaBxIeApGwUhoAc]piBOr@O|@Mt@Kr@Mx@Ir@Iv@Iv@Et@Ev@En@Cj@Ax@C~@?jAApAGPAxHGhm@?nDAjA?jAAjACjACbAGlAGdAIlAKfAKbAMfAMdAQbAQbASbAUbAS~@Y`AY`AWz@_Ln\\wD`Lw@`CeDrJWr@Wp@[r@Wj@]n@[j@[h@]f@]d@_@d@c@d@_@^c@`@a@Z_@Xg@Zc@Vc@Ta@Pa@Pm@Pe@Li@Jc@Fe@Fe@Da@@O@]?i@Ai@Ak@Ek@EqBOuEc@e@Cg@Eg@Ae@Ae@@i@@m@FWBk@Jg@Hc@La@Nc@Na@Rc@Re@Xa@Vg@^gCfBm@f@m@n@i@l@]b@a@j@_@j@c@n@_AvAc@p@kC~D", - "dąbrowa górnicza wschodnia|sławków": "k|_rHskxtBFcF@kB@aAp@el@^{ZF}Gc@_DBy@F}CD_DFcFBwAf@yc@^o[B_ABuADgADkA\\cInAsYd@oKjAeX`@_Jv@}Q~As^^kIDcAD_AB_ABy@@{@?}@A_A?{@C{@C_AE}@Ew@]qFG_AGy@E}@E{@EeACu@A{@?}@?_A@y@@_AB}@DaAFy@Ds@Fm@H{@Hq@Jq@Ho@Lq@Lq@Lm@Lm@VaA@ARu@Vw@To@L_@b@iAhA{CrAqD`@eAXs@Tg@Rg@Xk@Xi@^o@`@o@jAiBj@{@j@_AxCcFh@{@l@_ANUrAsBt@iA", - "dąbrowa górnicza strzemieszyce|dąbrowa górnicza wschodnia": "}karHqdrtBVwAf@iCv@aERgATgATmAZaBbAiFlB}JbCiM~AkItAeHF_@zEuVdBcJJg@bAiFjAmGb@wBf@mCTkATmAPeAHk@Jk@Jw@Jw@Jy@Hy@JcAHcAHeAHgAD_AD_ABs@Bg@@i@BaA@aAB_CTc@BsBFwFPmF", - "dąbrowa górnicza strzemieszyce|sosnowiec kazimierz": "}karHqdrtB_AxEWrAQ|@aAbF_@pBI^I^ETGVQl@On@a@vAERW~@Md@a@xAI\\IZGZKb@SbAWdBUnBKlAM~AGlBC~@AX?xA@zAD`BDvAD|@HnALrANvAV~ALp@TdALj@FVXbA\\fAp@jB`@`Af@dAt@lA|@pAx@`AfAfAdBpAl@^l@Zj@Vl@RjA\\fATx@PnAXhB`@~E`AnPpDFB`MdCtD~@bAZpAf@B@rAn@hAl@x@h@t@h@hBzAr@p@jAnAfAtAxAxBFHFHzC`F~L`SXf@fBrCnArBHJFJbC|D|@xA|@xAJPz@rA\\j@^h@RZZ`@VZ\\\\", - "sosnowiec kazimierz|sosnowiec maczki": "se}qHwjktB\\MTNh@Xb@Rf@R`@Nf@Nd@L@?d@Jj@H\\DTBZ@b@@h@@d@@b@Ab@Ab@C`@Ed@Kb@K`@M`@Qt@]v@a@\\S^WTQZUXWZWVWXYTWT[z@iAl@y@FGT[X_@nAcBl@_Ah@u@~GeKle@es@jA_Bv@aAZa@dBwB|TqXrAcBbAuALQfBcCd@y@b@_A^aA\\gAZeATkARmAJw@DWLuAHsADmABqABaEJ_NBgBBgBFcBLcBP_BT_BZaB\\sA^kABKTm@L[d@eAl@kAXa@Zc@l@u@n@k@t@g@z@e@f@Ux@_@r@[ZOXO\\Sb@W|DcCvFiD\\Wb@YZUXW\\]Z[X]X_@Ze@f@y@j@kAx@cB", - "chrusty nowe|żakowice": "msozHoaywBeBs@sAi@GCsn@sVac@}PqP{GiBg@mAg@kMcFq@Yyj@{TOIaLoEqAg@iDuASGOESGeAUYIUGCAUIUIk@Uk@Yk@Wk@Wm@Ym@Y{@]{@]{B}@u@Yu@YYK[KSGSGSESCSCKASASAS?Q?U@QBSBQBSDE@MBQFSFQFQHSJQHQLQJIHSPSPONONOPOPMRORMRMTMTMTMVKXKVKXKXIZIXIZGZIZG\\EZGZE`@E\\E\\C\\C^C\\A^AXA`@A`@?^?^?^?^@^@^@LBf@@ZDn@Bf@Db@B`@ZpDDf@Df@BZB`@B^PrDB`@ETLzAJ`ABTLtALxAJfALrALrApCb[Fn@Dj@f@tF", - "chrusty nowe|rokiciny": "msozHoaywBji@fTzDzAlDvAdM`FzH|CzClAnAd@jAf@dG~BlEfBtAj@pAf@vPzGf_@`O`C~@", - "rokiciny|łaznów": "_rjzH}pvwBPHpGfCbFlBFBhJrDlXnKnHrChk@tTfE`BxEhBjGdChBp@~EpBn@Zj@Zt@`@|@j@v@f@v@j@v@j@x@n@v@p@r@p@b@`@n@p@`@^JLlm@dp@nW~XzA~A", - "wolbórka|łaznów": "gy{yHifkwBgDoAcE_BwFyBwAg@wHuCy@o@gf@_RwBy@cC_Am@Wi@Uo@[g@Ww@c@w@c@}@k@o@c@}@m@u@i@{@q@s@k@s@m@o@k@o@o@m@m@s@s@e@i@yOwPmI_Joc@qe@sLkMqAwAqAwAe[y\\uJiKwFgG", - "baby|wolbórka": "y`qyHm`jwBsp@mWwHwCYMcE_B}D}Ayu@}YaE_BcE}Aq@Wm@Uq@Uq@So@Qo@Ms@Mo@K_@E_@E[Cw@Em@Aq@Aq@@u@Bm@Ba@DWBSBS@s@Jo@Lq@Nq@Pm@Po@Vk@Rg@Rub@pQuv@~[o@Vs@Xo@Ro@Ry@To@Ni@He@Ha@D}@Hs@Do@Bq@?o@?q@Ao@Es@Gm@Gu@Mk@Km@Mm@Oa@O[Ig@Qa@Ow@Ym@WuNsFOGiEaB}CkA[KmDuA", - "baby|moszczenica": "y`qyHm`jwBZLbC`A`@NpEfBhDpAt@XnC`AnAd@z@Zx@ZfBp@vLvEj@Rl@VxqAlg@xk@|TjBr@jAd@dFnBd@PrKfElAf@bI|C", - "jarosty|moszczenica": "m|ayHshewBaDYaMcAOA{NmA{v@uG}v@sG_e@{DuBSgMeAga@gD}CYi@Ek@Gm@I{@A}@O}@O_AUw@Uy@UgA]m@Uo@UgCcA", - "jarosty|piotrków trybunalski": "m|ayHshewBlSdBdFb@bBLdBNnd@dEzCXtIv@rLfAzCXjDZjBP|Gn@`E^|AND?`Jx@tHr@pRfBxBRrGl@|ANzMlAf]~CF?F@tIv@pOvAlW~Bd@DhK`AZPl@F`@DhK`A", - "gawrony|witonia": "kfa}Ha{htBCA_RgTgMaOul@er@SUoKaMcLwMyAmBk@w@k@y@{DiGoFuIAEei@i{@_GqJkFmIeGyJuF_J}IuNkCgE_QwX}@mA}@oA_H_JiDqEsAiBs@_A_RmVkA{AiA{A", - "gawrony|łęczyca": "kfa}Ha{htBxKlMbO`QxShVbAjAbAjAtAxAj@j@`@^JHx@t@z@r@vBfBhMlKFDnFnEdBxAfBxAnErDlErDDB~AtAr@j@r@j@bCpBhA`Ad@`@b@`@l@j@j@j@tAzAZ\\|@`A|@`AnUfWbK`LfBnBhBlBpE~ErEbFdBnBlBpB|BfCnApAf@d@\\ZLJ|@p@`@Xb@XfAl@~At@rBn@`@J^J~@P^F^D`@D\\Df@Bh@Bf@@h@?r@?t@AjBAtEGfLM~@A|JMj`@a@`EEvBCd@AhEEnGGhCCjCG^AfAGpBWvAWz@Sv@UXG~@_@`Aa@hAo@`Am@dAu@`A{@dAcAx@_A|DaFrBiCjFyG~AqB~GuI", - "sierpów|łęczyca": "syn|HelitBm@f@q@f@SNaAp@gG|D}OfK_DtBoCfBaU~NwKfH{E~CuL|H_Ar@_Av@sBrB{AhBwAlBq@t@_RrUgElFsEzFkM`PiQzTeIbKiDhE", - "ozorków|sierpów": "}ze|H{zqtBC@}AV{[dGwAVu@N{E|@oCl@mCl@uAZ}Af@_Bn@yAv@eBlAcJdHkHtFaq@`h@oTtPwDvCyAnAwApAqBrBmBzB}BzCyBbDW\\k@|@cA`BeC`E_CxDaHbLaHbL}JlPkHpLoCrEqCpE_MhSwFhJu@lAs@lAgBrC_A~AcA|Ai@v@i@t@k@p@UXIJMLUTWVo@n@", - "ozorków|ozorków nowe miasto": "}ze|H{zqtBhHuAxHwAjB[xB_@zVqEPE`KkB`LsBpAWhEy@", - "chociszew|ozorków nowe miasto": "un|{HgbrtBg@JwAXw@Ny@Jo@Fe@Dc@BU@o@@o@@o@A_DQ_BKwBM}CYkFi@yLmAwAOoEc@cBS{JcAw^wDsAOyYyCsO_BiGo@aCUAAaAKaAIkBKi@AS?U?m@?m@Bg@Bg@D]B[B]F]Dy@N}@N_AP}@PeGfAaCd@w@LiATkB\\", - "chociszew|grotniki": "un|{HgbrtBzBg@zD{@vMuC~A]l@Mp@O~SwEhAUta@aJjCm@lDw@vA]j@Sh@SbAc@`Ae@TMJE^W~@m@r@k@r@m@p@o@p@q@p@w@p@y@n@}@n@_Aj@_Aj@eA`AoB^y@\\{@h@wAh@yAb@yAPm@Nm@^{A^aBToAToAVaBTcBNoALqANeBNiB@E\\kEj@gHj@iHxAqQ|@_L|@_Lj@iHXuC\\qC?AV_BZgB\\iB`@eBb@cBl@qBn@mB~AsEdB}Er@mBXw@J[JYdAkCVk@Vm@n@mA`@u@P[NUb@q@b@q@b@k@`@i@b@i@d@g@X[Z[Z[ZYRQv@m@h@_@j@_@vAw@n@[VMVKj@Sl@Sh@Oh@M~A[l@In@IlBWlAO`Dc@PCDAnGy@", - "grotniki|jedlicze koło zgierza": "keu{HmuztBjC_@zDg@xASpEk@jHaA`AQhCo@TIZKXMd@Sd@UtBeA|BgAzBiApE{BzGgDzQaJzAw@vBeAl@]l@_@l@_@j@c@h@c@h@e@j@i@j@k@n@s@r@_A`@i@^k@\\i@b@q@Xi@", - "jedlicze koło zgierza|zgierz kontrewers": "uuq{Hur|tBb@w@Zo@\\u@b@_ABK^_Ad@mAL_@Pe@J[Z_Af@yArAaEh@cBf@cBPq@Nm@Nq@Lo@Li@Ji@|@mFjAoHN_ALy@L{@L_AJaAJ_AJcAFy@HaAHmAL_CNkCDy@Ba@Be@DaAB}@B_A@eA@{@?gAA{JA}E", - "zgierz jaracza|zgierz północ": "ysp{HmmpuBgC`GmHbQ[t@O`@IRUn@Wv@Up@Ut@Ut@St@S|@Op@Qt@Ov@Q|@Ox@Kp@OdAMhAMbAKbAI~@I~@IdAEbAG`AIdC{@`Y_@~LIvCAr@Cv@Ar@Ax@?x@?pBBbCBv@Bv@J~Cb@rLBp@\\bJDdABbABbA@fA@hA?~@?p@Aj@?j@C~@C`ACdACz@E~@G`AQvCAF]|EUvC{@lLq@nJ", - "zgierz|zgierz jaracza": "g{l{HsepuBe@e@mCaCyCmCkSaRw@c@w@q@yAoA_Ay@_Ay@][u@q@_A{@SQy@w@a@_@g@e@c@_@YY][cA}@][]Ya@Wa@UOGSIa@Oe@Me@Ma@I_@Ga@Ec@Ce@Cg@AU@K?K?k@DWBWBq@Je@Jg@Lg@Pe@PYLYNs@b@q@d@q@f@qDnCwAfAEDqAdAWVYVe@d@g@h@e@j@e@l@e@n@c@p@a@l@SZOZOXQX_@v@MVKVs@|AWl@Q`@}CnH", - "zgierz|łódź radogoszcz zachód": "g{l{HsepuBxApAf@d@RRr@p@^\\RRDF`@b@VXXX^^ZZdCzBrBnB~@z@`Az@RNVRRNVRZRXPZPXNXN^NDBPHVJ\\LTFXH`@J\\H\\H`@FTD\\D^B^D@?`@@f@@j@?r@Aj@CbAIbBQ`D]nCYfAKFAz@Ix@Kp@Gz@Kx@InAMv@IdAMv@IdAKt@I\\C^EnAIt@Er@Cf@Af@?D?`@Al@@`@?~@Bx@Bz@BlAHF?nG`@z@Hb@Bn@H`@F`@Fb@Fr@NfAVh@Pj@Pl@Rh@TTJJDDBD@FBJFNFLHNFNH", - "łódź radogoszcz zachód|łódź żabieniec": "gnh{HscouBDBJFLHLFPJPJh@ZhHlE~AbAjAp@pAv@rAx@tAx@jBbApE`CdCrA`DbBfAl@bQdJBBrGhDxDrB|Ax@bBz@|BnA^RhB`Ap@\\hAl@fDfBxAt@h@Tv@\\t@Tp@Rl@Pl@Lp@Ll@HD?h@Fr@FdBF\\?h@?r@Ab@Ap@Ep@Gp@Kp@Kn@Mx@Sl@OzQiG", - "łódź kaliska|łódź żabieniec": "ar|zHynquByCjBMHwHzEqIlFSLYN_@R[NWJYJUHUFUF{@RWFWF[JWJIBMFYNWLWNQJEBSLo@`@g@JIFOJGBGDKFwChBQJCBgC|AgC|AMHGDGDGBGDGDGDIDGBGDiCxASLOHIDoBfAKFGDGDGDIBGDA@EBGDGDGBGDIDGDGDGDGDMFMHeC~AKDGDGDGDGDGDGDGDIBGDGDGDGDGBGDGDA?GDGDE@A@GDGDOFu@b@]R[PSLYP]P_@TED]T_B`AuBpAy@f@mBlAWN]TGBYR[Ra@TeAp@aF|CqFhDoMbIcDrBcDrBIDyCjBiC~Ag@ZkAt@o@^y@h@ULSLOHQHULYL[Nc@Pu@VcEvAYHuBr@cDfAeH`CeCx@gFdBgA^sBp@", - "łódź kaliska|łódź pabianicka": "ar|zHynquBRe@bA_Az@u@bAaAFGnCmCXYFERQXYBCZYFElAeAVU@AJIVUJIRQLKJINOHGJIHGJIFENMRMDCNKHEPKLILIHENINIRILIbAe@VMhB}@~Au@|BiALGTKDATKTKXKVIZITGXGTEr@M|NeCfB[jCc@`F{@`@I^Gb@KjBa@dE_AFAFAjCk@zA_@HAt@Q@?`@IbAUhAS`@I^GHCh@GFA@?FARCNC\\CTCl@GHA\\CNAPAPAXARA@?PA`@AnCKXATAVCb@C`@E^E^E^G|IsAh@I\\G\\I\\GVSRERGPERGXKZKb@Q\\M^QVKp@[bAe@TKPIBATKb@QXMb@Q`@O^Ov@W|Bs@^M^M^OZMTIPI\\OnEqBn@Yh@W\\QNIJGZQHGPKZSVQj@e@l@i@t@w@`@c@b@g@t@aAl@u@f@q@|@kAxAkBvC{D", - "łódź chojny|łódź pabianicka": "}quzHis~uBU|EC^AZ?XAv@Az@ATA|@ErBErAMzBGnA{@bQk@~Ks@~MMlCK`BK|AIrAKhA[vDKlAEf@Eb@Cf@C`@Cv@A\\Cx@?l@AhA@x@@tA@dABr@@d@Bf@Dd@@XHbAJfAHv@Jx@Jn@Lp@XxAR~@H^FPDRBHFRNd@Xz@JXVr@Rb@b@`Ad@dA|B|EbD|GtChG|@lBf@hAZx@l@bBHXPj@J^J^Jd@XlAVvAHf@Lz@Hv@JbAJjADz@Dt@Dn@@b@BdA@v@?r@?X?J?PA|@Ax@CfACf@C`@Et@Cf@C`@Ip@C^Kz@Kz@SlAGb@Oz@oAnHeBzJaAxFY|A_@nBKd@Ml@Oj@Mf@Mb@Od@IVIVM^O\\Qb@S`@Sb@]p@Yf@e@r@]h@C@g@r@_@L[b@}ApB_AjA", - "łódź chojny|łódź dąbrowa": "}quzHis~uB@IFaDVqERoEHsBBw@DuA@w@?c@?gAAoACgACu@E{@Ck@Ee@Es@Ee@Iy@Io@Io@O{@SmAMk@Oq@Qs@Mg@Qo@Ma@_@cAQe@c@cAO[Q_@[m@[g@[g@KQa@g@]c@Y]_@a@[Yg@e@e@]a@Y_@Sg@Y_@Qk@SIEWIUG]Ks@OeB[m@MqB[qASo@IMA}Da@gAOcDi@sDm@}AWeCc@", - "łódź dąbrowa pbs|łódź zarzew": "ktwzHusavBiCc@i@KwAUqDs@qCo@QEiBa@_AS_BUgAO_@Es@G_COyBMwAKcEWaO{@oAImHe@sAIaAGo@CwBOkAIkCOeDS", - "łódź widzew|łódź zarzew": "me}zHgwfvBm@tHGn@s@jHo@fIa@fFJp@IlAUfE@r@Et@GzAEnAAv@?z@?z@?|@Bz@Bx@Dz@Dz@Fz@Hz@Hx@Jv@Lx@Lx@V`B\\hBNt@RbATbAVjAXfARt@Rr@ZbA\\dATp@Vn@AN\\x@\\v@Zn@Zl@\\l@\\l@`@p@b@n@b@l@b@j@TXVXZ\\`@b@b@^NN\\Z\\Xd@\\f@\\ZR\\R\\Rj@Xl@Vb@Pb@P\\Jd@Nn@NZFXFf@Hn@Hn@Ft@Ft@Df^vBz@F", - "sosnowiec dańdówka|sosnowiec kazimierz": "coxqHo_`tBCgAC}AAkDAwAA}Ag@s]EiDAkACgCAuBAsAImEIaFC_C?CAaBB}AB}AHqBNgCd@}GTgCN}ALgBFiAFuAB_ABkA?}@?{AAkAEcBIeBGaAKoAKeAE_@Ge@Ik@O_AMw@Oy@Mm@U_Am@_C[oA}WyeAMg@q@kCCKo@cC]sAUu@Uo@Uo@Wk@Yq@[k@Ye@Ua@QWOS[a@SWOQOQSSKKGGYWWS_@[e@[eAm@{@c@_Aa@qJgEi@Wc@Sc@Ua@Ya@Y_@Yc@_@KKo@q@_@c@]c@AAYc@]g@[i@o@cAo@iAEIGG_EcHeAgBkDaGcEeHsBkD_@k@Yc@c@i@[_@_@c@a@]a@]_@[g@]_@Ue@Wc@SMGSIc@Q}HwCkCaAwAi@g@Sm@Y[Q]U]Ua@[}@u@i@g@UW", - "sosnowiec dańdówka|sosnowiec południowy": "coxqHo_`tBFdFDrCPhLHxFFpDLxHHfFH~FDtCJlFR~L@|@HpFJxH?r@?x@C`AAz@Ez@E~@Gt@Ix@Gr@Kv@QlAUxAsAjIQpAKt@Gj@IbAIdAEbAE`AAv@C~@?P?p@@xBB`AB|@D~@F|@HjA@@N|A^dCZfB`@vBV~Af@rCl@jDl@fDLv@N~@Lx@Ht@Fp@Hz@Dv@Dx@Bf@@V@L@z@@`A@~@?|@?~@A|@C~@C~@G|@Gz@I~@MfAIp@M~@Mz@Oz@Mt@Ml@ADQv@Sr@Sn@M\\_@dAQb@{@nBMXUb@m@fAs@nA}@~A}@zAiApBkAnBa@n@c@n@_@h@c@j@mB|BGFILaFdGiFlGiEfFa@h@aBhCWd@MV", - "katowice zawodzie|sosnowiec południowy": "k|vqHwthsB?_CB{AD}ALsDRsFDoAHoAL_B`@sEPaC@kBLgEL{EVaHH_EF}FDyC?qDG}FKyFSqGYqGi@wIm@cJcDif@UkDOyBMyCOuCo@aIu@cJa@cFCa@YiEM_CIcAEw@W}D]sD]kD]iEw@{KWiC[mBe@uB]mA}@oCeA_Di@{AcAgCkAgCqAyBi@y@{@kAmA{ASUw@}@cAgAkC{BoCqBqLwIeHeFsCsBe@]uCcC_BkA{B_By@{@s@u@Y]MSIOYk@KSIWKYGQQq@Kk@Ko@QyAGo@Eq@Ck@Ao@?_@?_@@M@s@Ds@B[BY@K@KFYFa@F[H[HYN_@L[N[", - "warszawa gołąbki|łowicz główny": "w{s}Hsmi~BB\\Dr@Ft@Fz@Dj@Fv@Ft@j@vGNlBH|@N`BV~CD`@Fx@Fr@Fp@Ft@Dh@Fv@F~@`@dHR|C?@VfE`@|GB\\Bh@@HDt@Dz@Bv@Dv@Bx@Bv@@L@h@@v@@v@@v@@v@?v@?x@?v@?rAAtAEdGe@pj@Ar@Ap@IbJAtAArAAhBCdBAjBChB_@ve@?JQzTW~ZI~HA|BCvAAtAC|AApA?JKxIC|A?LAb@E|CGbGSfPAdAAdACzAAxAA`BYf]A|BGbHGbH?TAhBA|AArB?\\?J?JAdBAdBGnOApEAvAAvAAxAAzAAdAAbAGhIClCEvEA|AAxACxA?|ACzAEdFApBEhFQzTOfQCnD[f_@ClDAx@?x@AnA?|@?~@?|@?X?b@?z@@`AB`A@`ABv@Bz@D|@B|@Dr@Bj@Bj@Fx@RdD`@`Gn@tJnAlR|@fN`@dGf@rHtBl[hDpg@zEls@hBlXVnCXhCd@xDn@hEvBxMp@jEp@hEThBPjBH|@hAjPv@vLnBnZd@tHrBf[t@`LdA`PJnBHfBFrBBlBBvA?zA?dBCzACvAEnBa@nIe@~JI`BG|ACbBCvCA~A@|J@z_@?fF@zD@pABlAFpAFhAFdAJnALbAPlATtA`@tBl@hCvGdXvCvLp@lCjKtb@nNjk@vJx`@DNrAlF^|AxBxId@rBb@lB`@tBRhAPbAHf@PrANpANlALxAJnAJnALdCDfADlABhABdAFfMFhMDpH?LFlMNh^@`AF~KHjR?R?L@^DxJFvLv@jfB@rC@dAXbi@DtJFhJ@zCB|EDbH?NDhJ?RX~j@@bB?`B?xAA~A?jAC~AAbAE|AEpAEnAGrAGzAGfAMbCUnEuCth@aCnc@_@dHm@|Kw@nNiA`Tg@fJ{A|XmBx]AH?Lc@rH]~GqB~^eBn[aAvQeC~c@gBn\\qBz^wAxWmObsCo@nLuFldAqObuCyDvs@UfE]nGGfAmAvTeFd`AGrAoBx^]jGaHvpAAH{Dtt@m@pKkB|]mDjp@gGriA{@|OMzBK`CIfBEnAGzAEzA?LCz@M~FIhEEvAaBdx@q@r\\oDjgBkAbl@GlCE~BGxBG`BE|AGlAK|BOhCsCvb@kGv_Aa@nGoBpYuKjaBwBz[Gv@ObCY|Do@pJIxAK|AGzAG~AAnAApA@pABrADzAH|ALzANzALfAPfALv@Px@Ln@Pr@Rt@Tv@Tx@hCpI|@xCjAzDxBnHrAnEdAlDlC~IhCxIvDfMBHb@rAX`Ap@|BdB|Fb@tAZbA\\bA^`A^`A\\v@\\t@^t@^r@d@x@d@t@R\\T\\h@t@p@z@r@x@t@x@t@r@tHfHlCfCfD~CDB~@x@vAfAvA|@n@\\l@Vh@T~@\\^LXHVHjBl@tQxFh@P`@N^L^Lb@PZLXLJFZNXNZNXPVPZPDDXP^V\\V\\Vl@b@zCxBFD`D~BhBpAr@f@HFfI`GhCjBfEzCbQfMz@l@`LfIVPDD\\V\\VZVXTZVXXXVXXXZXZPRPRPRFHDDDFRXTXT\\V^V`@V`@T^T`@`@t@b@t@zCtFpCdFdG|KhEzHbGzKlAzB`@r@pCfFrIvOn@hArAdCh@`Ah@`Al@hAdB|CPZlC`FfB`DXf@|L`ULRdDdGf@~@f@|@hBbD~GdMR\\T`@vNxWDHb@v@fCtExB`EBDXf@Zj@pEhIfFlJ`CjErAbCBDDH\\n@DF`@v@Zj@Zh@Zf@JRLTZd@Xd@Xb@FHPVPVFHPXRTRXRXRRPTTXTVXZ@@Z\\XXZZZXZXLLNL\\XZXDBZVZV\\Vf@^dAv@v@l@XRnDjCpEfDdIdGJF|BdBpU~PNJb@\\bD`C`D`ClBvAp@f@t@h@l@d@n@d@LJNLZVXV\\XXXZV\\\\XXVXZ\\X\\VZV\\BBVZTZV^V^V`@LPFJNVPXNXT`@Vb@Tb@@DR^Td@Td@`@z@\\r@~@pBt@`BtFtLlEjJbBrDf@fAbE|ItChGnFlLfA|B?@Xj@|B`FlAjCf@dAb@~@lC|FjFdLxDjI`@x@Tf@Tf@Pb@LVLXL\\Tf@Th@Rh@Rj@JVHRFRBFVv@Ph@Ph@Pj@DLH^Pj@Pl@XhAZhAzA`G\\tANh@rDzNfDrMNn@pEhQbF`Sj@zBVbAn@hClBlHVfAzHrZfAdEJb@\\rAhCbK`Ndi@XhAXjAPp@Np@Pr@Px@Ln@Ll@TjATnAdIhd@RhA|@bFf@pCTpATpAbCfNHh@r@zDjBtKzBjMjElVb@bCb@dC@DfAfGHf@DPnBxKVxABJBLl@lD`AfF`AtFfAjGNt@RjATlA`Ltn@XbBz@tEvA|H~@hFdAdGrC~Op@tDpFjZ|Fb\\RfAX|AnAbHhEzUvChP\\hBRjARhAJn@Jn@Lv@Hj@@BHp@Jr@Hr@Hn@Fp@BTDXBZ@J@JBTBZDf@Dr@Fx@Bf@Bb@Bd@Bd@Bj@Bt@Bp@B~@@f@@j@@p@@p@?t@@r@BdBDvE@hB?b@BbBB~C@fAB|ABlAF~D@R@`ABxABvA@xADvD@dAFnIP~QDdF?h@BzB@z@@p@@p@@v@@v@Bv@Bn@Br@Bp@Dl@Dl@Bj@Dj@Dh@Fj@Dh@Fh@Fp@JlALjAhBjRVnC@FH|@JdAFd@Dd@Dl@Dj@Dl@Dh@Bh@Bf@Bj@Bj@Bh@@h@@h@@h@@h@?p@?r@?Z?h@?h@Aj@?\\Cn@An@Ch@Ah@Cj@CZA\\C^Cb@Ef@Eh@Eh@Eh@Gh@Gd@E^CVG`@E^Gb@Ib@Ih@Ib@I`@Kl@Kf@Kb@Kd@I^I\\Qn@K`@M^M`@Qj@Qh@Sh@Qd@GPKTSf@Uj@Wh@OXOXMVS\\QZWb@QXQXU^{@tAABILiBvCGJy@nA]j@]j@W^GJ]j@cCzDW^}@vAiAfBaBlCc[zf@U`@W^oApB_CxDk@~@g@t@e@t@U^}@vAcA~AcA~A}@xA", - "kutno|łowicz główny": "}sw}HkuauBjAyEDOxA}FLe@DSDSJ_@FY@IJe@Je@Je@?ANy@j@mCP}@Jm@DUNs@Ns@I[BMTcA?CP}@RaAPaAJe@F[Ji@Jm@\\iBDULw@F]Jo@Hg@@GLu@DUFa@Hi@Hi@Ho@Ho@Jy@Hs@BM?CDa@Hs@Fq@Dc@@KDo@Dm@Dm@Dq@Ds@Bq@Ba@@M@o@@A@s@DsA@g@Bi@?UD}BFcD@s@NuIHyE?IBoAvAg|@@o@@a@BuABwABwA@wA@y@@y@?{@@w@?w@?}@Ay@?{@Ay@As@A}@C{@A{@Cy@Ey@Cq@Cg@Ag@Ci@IuACa@Es@IuAIuAmAaSEs@Gu@{HcpAu@uLsHqmA}AuVe@_IyCcf@sBm]YmEq@kLaAyO_AiOgBi[YeIIcFA{CBkEHmFPiETcEtAmRxJcoArLc{AnD}c@n@eIhRoaCzSelClJolAJeBJeBFcBFcBV}OVes@Ves@t@irBJyXD{KDmL@sCBmC@iABkADqCF_BF{AFcBJeBLwBNwB^kFf@gHd@qHxAsRJ{Av@{KRmC\\kFd@sGl@gIvAoSXwDVsDXwDZsDXqC`@cDRwARwA`@gCb@gCrAoHF]BObAwF~@iFvDaT`Jug@`Jsg@`UmpA|DuTxDuTvJij@r@_Ev@_ErBuJtBgJrBaJfFeUjMgk@zT}aAxT_bAhBaIx@qD~CiNbI_^x@kDv@mDnByIbFwTfLug@tHq\\FUjBiIp@qCr@qCt@gC`@kA^kAnAgD~A_E`A_CbA_CbC_GhG_OpO{^pFsMpFqMbNe\\l@yAl@wAvAsDx@aCZcAZaAl@yBh@wBt@aDXyAXwA\\yBh@eDn@mEl@kEzA{KpDmWx@aGzCkTlAwIlAuIdAqHLaAtAyJtDcXx@{FbBwLbFg^bFi^nA{IlA{I|CyT|Hqj@pAeJpAcJnAaJd@sDb@sDPaBPaB^cEp@gIr@gIdBqSjEah@lBgUn@yHX}CV{CvH{}@xA{PJqAp@eIp@_IbBaSfEag@t@wIl@eHJmALmAFq@Hu@Hu@Hq@@IFi@Hq@Js@Hq@Jq@Hc@BOJq@Fa@DQLq@Lo@Lq@Lq@Nq@No@Nm@Lk@J_@DQPq@Pq@Ng@Pm@Pm@Pm@J_@l@sBjHcV`BuFtAuErAmEdEkNfH}UjHgV^mApDyLbCgIz@qChCwIjGwS@E~DyMzDoMJ]bHsUtBcH|Oai@X_ADMV{@X_AVy@La@Pk@Pk@Pg@Pi@Pe@Ts@Pa@Nc@Ti@Rc@Pa@Tg@Tg@P[N]Ve@Vc@Tc@T_@T_@HKZi@\\g@T[T]V]NS\\a@Za@VYVYTWNQTSRSRSVUXWXURQXUZUXSXSZSNKXOVQXOj@[j@[r@_@FCFC^SfG}CnDiBPKB?ZQ^S^Uf@Yl@a@TOZU\\UDEXSXSXUz@q@XWRQTSTS^_@RSRSPQPQPQZ]Z_@p@u@X]PURUNSj@s@f@u@\\e@Ze@NSDIf@u@Xe@JOv@oAbA_BfAeB", - "łódź andrzejów szosa|łódź widzew": "ywxzHysuvBQDOHQFGBQHKFQHQLSLWR[V]\\WXWZW\\a@n@U`@[n@i@dAsAnCg@fA_@x@Wj@a@~@o@dBmCrH{CrI}CrI_DpI}@`CaAdCm@bBo@bB}AhE{AhEo@dBo@`Ba@~@a@`AwDpIcFbLgB~D}@~B]~@[`A[`A[bAWbAWbAm@jCUhAQdAe@rCa@rC{Ihq@mHzj@gFj`@a@`Da@lDa@pD]xDYjDs@bJw@zJCX[vDEn@Gp@E^]nCE^El@Gn@QzBuAzQs@rIo@nIyA~Q_B`SYlDs@zIg@hG", - "łódź andrzejów szosa|łódź olechów pzs r82": "ywxzHysuvBPGPEPELCJAJADALCRAXAVAZ?`@?jABD?H?J@R?fBD\\@XAd@CtAKpEY~@Gp@Ej@?^@V@`@Db@FZH`@JZJ`@Nd@VZP`@XLHXVZZd@d@XZpAzA`AjABVt@~@TVTZT^PXXf@Vh@Rf@Tl@Tt@Tx@Nr@Lp@Jl@Hj@Hr@Fl@JnAZjEZhErBnZ", - "łódź olechów wschód|łódź olechów łoc": "knvzHgbrvBg@cH?EWaDWqDGu@]qEGaAEe@Ec@E_@Ge@Gg@", - "łódź olechów pzs r16|łódź olechów wschód": "ssvzHgfsvBFf@Fd@D^Db@Dd@F`A\\pEFt@VpDV`D?Df@bH", - "łódź olechów pzs r16|łódź olechów zachód": "ssvzHgfsvBFf@Fd@D^Db@Dd@F`A\\pEFt@VpDV`D?Df@bHh@dHNhBHlAVpDP~BHz@J~AH|@dApNzAtS~Cnb@n@xI^`F`@zFFr@|@vLVnDBXjAxOB`@\\xELdBLfBJbB@FJzAx@|MJdB^~F@PV|D", - "łódź olechów wiadukt|łódź olechów zachód": "ehuzH_chvBAw@IuE?O?OAUKuHIqFGcECuACuAAs@C}@C}@Ck@?EC}@E{@Ak@E_AE_A?GEm@C{@Gy@E}@AYC[Eu@KgBKeBc@yGEu@Cc@KuA?KW}DK}AI}A", - "łódź olechów pzs r3|łódź olechów wiadukt": "ssvzHgfsvBFf@Fd@D^Db@Dd@F`A\\pEFt@VpDV`D?Df@bHh@dHNhBHlAVpDP~BHz@J~AH|@dApNzAtS~Cnb@n@xI^`F`@zFFr@|@vLVnDBXjAxOB`@\\xELdBLfBJbB@FJzAx@|MJdB^~F@PV|DH|AJ|AV|D?JJtABb@Dt@b@xGJdBJfBDt@BZ@XD|@Fx@Bz@Dl@?FD~@D~@@j@Dz@B|@?DBj@B|@B|@@r@BtABtAFbEHpFJtH@T?N?NHtE@v@", - "łódź chojny|łódź olechów pzs r3": "}quzHis~uB@ITiEESPcBPeBJeAJmAHkAFaALqCt@uNH{A|@}Pd@wHh@wHl@iHjAuMnAwMp@eH`AqKRgCNkCDu@PcETwEFaBHcBBy@D}@@}@By@@{@@}@@_A?y@?{@?S?m@Aw@Au@A_AC_ACw@Co@Cm@Ci@C_@?G?CEw@G{@G{@MgBUwCS_CW_D{@sKUoCEq@_@sEGs@OkB[yDIgAImAEk@Eq@Gq@IqAIwAMwBa@kGCa@Ca@AUAOCg@Ac@Ci@Ci@Am@Cw@Aw@IuE?O?OAUKuHIqFGcECuACuAAs@C}@C}@Ck@?EC}@E{@Ak@E_AE_A?GEm@C{@Gy@E}@AYC[Eu@KgBKeBc@yGEu@Cc@KuA?KW}DK}AI}AW}DAQ_@_GKeBy@}MK{AAGKcBMgBMeB]yECa@kAyOCYWoD}@wLGs@a@{F_@aFo@yI_Dob@{AuSeAqNI}@K_BI{@Q_CWqDImAOiBi@eHg@cH?EWaDWqDGu@]qEGaAEe@Ec@E_@Ge@Gg@", - "retkinia|łódź pabianicka": "k`yzH_aouBMo@kAeGqAuGyBcLq@kDCcCMm@{A}Gq@yC[sA[{Au@sDw@aE[aBG_@COKq@K}@IaAC_@Cc@Ca@Aa@Aa@?e@A]?C?a@?Y?M@c@@c@@g@Ba@Bg@Bg@B]BW@QDa@D_@Fa@Fa@D_@F[FYFYBSHYHa@La@Ja@J_@JYL]L]LYJSHSHOHQLSLUBCNUNSNSPSNQJIJMJKLIPODCJIRMPKNIPGJGRIPGFCFA@?l@STITGRGFANCHCh@GFA@?FARCNC\\CTCl@GHA\\CNAPAPAXARA@?PA`@AnCKXATAVCb@C`@E^E^E^G|IsAh@I\\G\\I\\GVSRERGPERGXKZKb@Q\\M^QVKp@[bAe@TKPIBATKb@QXMb@Q`@O^Ov@W|Bs@^M^M^OZMTIPI\\OnEqBn@Yh@W\\QNIJGZQHGPKZSVQj@e@l@i@t@w@`@c@b@g@t@aAl@u@f@q@|@kAxAkBvC{D", - "retkinia|łódź retkinia": "k`yzH_aouBz@nDFT@JBHBJpAxGrGp\\f@fCl@|C", - "łódź lublinek|łódź retkinia": "{otzH_zcuBc@m@oAeB_B{BCC}\\ce@KMwByC[a@mFoHu@cAi@u@e@q@[g@c@u@U_@_@s@]q@Ug@MWUg@O_@Uk@M[Ws@Qe@]cA[eAY_A]sAWiAQs@Mq@}BkLqD{QwAkHwAqH}CwO{CuOkJwe@wCkOCMCMuC{NkBoJi@oCeB}IYuA]gBYuAi@qCqAwG", - "pabianice północne|łódź lublinek": "axjzHqv`uBMKQOQMOMSMOKOKOIOIIEIEQIYM[K]M]K_@K]G_@G]Ga@E]Eg@Ec@Eo@G}_@oDe[sCkTqBgCUeNoAWCuFi@uTqBgCWiGk@SAUCm^eDwSoBw@GUC_@C}@Gm@Cw@Cu@Cq@Ay@?s@?w@@kQP_@?_@A_@Aa@A_@E]Ea@G_@G_@I_@M[Ka@O_@QQISKUM[S]U[Y[W]YYY[]Y[?AW[Y][e@]e@oCsDmAcBg@s@]e@yEuGcDqEaByB{AwB}CgEu@eAGG", - "pabianice|pabianice północne": "cwhzHuz|tBg@kAYq@i@oAUk@a@{@cA_C_A_C}@yBy@uBe@gASm@Uk@k@}AgAwCcAqCsCeHgHqQSi@oBaFGMGMqBeFyFuNmA{CWk@Se@Ug@Sc@Ue@MWQYO[U]OWU[EGGISWMOOSSSOQQOOOQQBI", - "chechło|pabianice": "yxezHcsutB{AkG_@}Ae@mBS{@Sy@S{@YgAUcA]mAWaA]iA]iA{@wCqHgWkEaOeNud@IWkKi^mGmTkA_EIWq@}BaAcD[eA[eA]gA]aA_@eAa@eA_@eAkDuIgAqCaAeCeAiCw@oBq@eB", - "chechło|dobroń": "yxezHcsutB`D|MrPtr@jHlZhIf]DNnOjo@xKnd@fKxb@DTbDrNBLtCvL", - "izabelów|zduńska wola": "oa_zHcvlrBaA_i@k@_\\Y{NIoECaBEkB?y@Ak@?{@?oA@qA@oE@_BAiB?{ACmBc@y^CuBAKCqCUgR", - "izabelów|męcka wola": "oa_zHcvlrB@TZbQ|Abz@bArj@^lRB`BB|A@rA@nA?pAApAAzAAhAGlEc@x\\KpHaBpoA[fVWhRAvAAtA?rA@pA@pADrAD~ADbBFbBHhBn@`Rp@fRVlH", - "męcka wola|sieradz męka": "y{~yHs~_rBVxGpAf^T`HTrGF|Ah@|OVrHLbDhAb\\^hKNfEDtABpABtA@fA?H@rA?nAAnE[vcA?VC`HOxe@G|VE|JA|D?~AC~AApAAh@Cd@EjAGlAKnAMlAK~@M|@O`AQ~@Sz@Sz@U~@Y|@Wv@[v@Yt@]t@q@nA]l@_@j@[`@a@j@kAxAmDjEiGxHa@h@[b@_@j@[f@MTOVYj@]r@Wj@Sj@Ul@Od@KDK\\Mb@Qr@Md@Mh@Ov@Q|@Mz@M`AKz@KbAMrA{@~I", - "sieradz męka|sieradz warta": "}a`zHshrqBa@jEOzAQhBMbBOhBK`BIhAItAGbAGfAE`AC|@A\\C`ACxAAvAAtA@pA@vA@nADlADtAFtAFnAHpALpAJrANnALlAPnAPlARnAd@lCbHra@jEhWfBbKp@bEr@~DbIre@Z`BVxANv@Rz@Pv@Tt@Tv@Tp@Vr@Xn@Xp@Zl@h@bAh@bAfEpHrItNbFzIf@~@\\l@BDb@z@Xj@Xl@JRf@pAVr@Tr@", - "sieradz|sieradz warta": "ewbzHy}ipBJi@xC}NLo@dAiFdFoVNo@jLsj@^gBNs@Lu@Ls@Lm@PiAPoANiANsALkAJsAHiAJuA`@iG@ErEur@h@eIHiAJkAHiALmALiANmALeAPoAVaBTaBD]lKuu@xE{\\dCgQPgAPiALw@P}@Rw@Ry@Ru@Tw@Rm@To@N_@N]N]LYN[Ra@Ra@\\m@`AkBTa@nMeVla@cv@lDuGpEqILUnGaMfXkg@pBuD`@u@b@y@^u@Xm@Xq@Vk@Xu@Ts@Ru@Tu@Rw@VeAVgAXoAR{@z@sDPy@Pw@Nw@Nw@Ly@J{@Hu@J_AFw@FaAD{@D_A@{@B_A?{@@_A?cD?qE@qg@Bcx@Bky@?{A?yAAqACsAAqAEyAAk@AUg@iSEmBE{AI{C]sJCuAMiFq@eXW}Ka@sPIaEOsFGeCO{DI}BEeBQsGEgBM_DMsDKmCCq@GaAG{@Gw@Gg@Gk@Io@Ik@QkAMs@Os@Oq@Qm@K_@K_@]eA[}@Qa@[w@Wg@Sa@Wg@S]qAmCuAcC]k@_@s@Uc@]q@]s@Wq@]{@Yw@Ww@Y_AUw@gAeEa@uA]mAYaA", - "retkinia|łódź kaliska": "k`yzH_aouBMo@kAeGqAuGyBcLq@kDq@gD[uA[sAa@}A[iAW}@a@oA]cA]_A]}@Ys@_@{@Yq@[o@Yi@Wg@[m@a@u@_@o@Wc@]e@Q[W][c@EG_@g@_@g@_@c@]_@WY[]_@a@QOECWW[[WS_@[[We@_@CAYSYQUQUMYO[MOGMG]Ma@M]K]GYGQCIA[CYCa@C]?W?Y?C?U@C?U@WBC?WBWDA?u@HC@sANqANk@`@MBMDSFg@JQFKBODQHg@Rk@TWJeCdA_@NIDi@TqDxAYLi@Tk@TqAh@eBt@_A^QHQHWLYNIDSJYPo@b@q@`@", - "bełchów|skierniewice": "auo|HeghyBNIJIXQXQ`BcA~AeArAy@NKRMFE|AaAh@]FEVQVOp@c@VQRKDCNKlAw@dFaDpAy@tFoDhIiFhIgFfIiFPKd@[d@[f@[h@_@d@]b@]^YTQTQLKVUb@_@f@a@d@c@f@c@f@e@^_@VWTW^_@\\_@d@g@b@g@b@e@`@e@`@e@`@i@TYf@q@f@o@^g@^i@f@s@^i@^m@`@m@`@o@`@q@Zk@b@s@\\m@Zm@\\o@^o@HORc@Xk@Xk@`@{@Xm@Xo@Xk@\\{@HQN_@dB}DrB}EN]`B}D@AbC{FfBgE`CsFx@oBVm@|BmFVo@dB_Ebd@yeA~@wBxa@kaAxh@mnAb@eAlBsEDIlAsCd@iAlDiIrB}EnDmIxIqSpEmK|R_e@tCyGHS~AuDFMfCeGTe@pEoKPc@Pc@Pe@HWJWL_@La@Ni@Ng@Ni@n@cCr@kCLc@Lc@Je@Lc@Je@Jg@Jg@Jg@Hc@He@Fe@Hg@Fg@Fg@Fe@De@Dc@Di@Dg@Dg@Do@Dm@Bo@Dm@Bo@Bo@Bk@@m@@m@Bm@?m@@m@@k@?m@?m@?o@Am@?o@?MAc@?MAK?UAc@Ak@Cm@Cm@Ak@Em@Ck@Cm@Ek@Em@Gk@Ek@Gk@E_@AEGg@Gg@Ig@Ii@Ig@Ia@Ga@Ic@GWG[Ic@]cBwBoKKi@CQGWKk@Ou@]eBCKESCSEUEUE]EWEYCOAa@", - "bednary|bełchów": "}y_}Hm|myB@D|@~EHd@RbAPhAPhAPjAJn@Hp@Hd@Hf@DVVtA@LBJH^Hd@nGh^X|AdFjYzCrPTrARhA|@`FrAnHn@lDpCbPt@~Dj@bD`B`J`Gf\\fAjGZdBZ`BLv@BJhAhGzAnI~CdQfDfRhAhGz@~EJj@F^Jl@Jx@Hj@Hn@Hl@Db@@J@LDb@Db@Fp@Fp@Dp@Dp@Dr@Bp@Bp@Bp@Br@@f@@h@@v@@h@B|BJ~L?V@f@@bBJtK^va@B~CFfHBnC@f@D`E?`@@Z@XBb@@X@\\@\\@vA@L@d@@f@@d@Bl@Br@Dr@Bl@Dh@Dd@Dh@Dj@Fj@J|@Hz@`@zDbA|J^nDBNVdCD`@D`@F^D`@F^F^DXFXDTFTFVHZFRDPJZLZJZLXJTP^LVNVNVNRLRHJHJPRRRRRNNRNRNPLTLRJPHTJTHPFVFTDXFP@NBT@T@R?R?RAVAVCVETETGLCLEJCPIRIPINIPIHG@A\\URO@ALKPSPOJOt@}@NQJQNSJQnC{Dv@oAdC}Dj@}@hIsMbA_BhTg]f@u@f@w@V_@T]Ze@\\e@X_@Xa@\\c@^g@^c@`@g@\\a@^c@^c@^c@\\_@`@a@^_@Z]b@a@DGXW^]VWj@g@`@]`@]`@]JIVS`@[\\YBC`@Y`@Y`@Y^Wr@e@l@a@BAxA_Af]mTnb@eXtEwCDC`HmEdh@e\\hIiFnAy@rA{@nAw@pBqAr@c@rA{@jAaAtA{@^WhHqEfIiFhIiFhIiFfIgFjAu@hAu@rD}B|AcAvD_Cb@YHGDCh@]n@a@TOxEyCzBwAt@e@fAq@h@_@d@YDCnBoApEuCPM`@W^Wb@Y`@Wb@Y~@q@VQVQPMFEZSb@[^U`@W^WxCkBHG@?^W^Uj@]h@[TM^U`@U`Ai@ZS@?\\Sl@_@\\Ub@Y|CoB", - "warszawa stadion|warszawa wschodnia": "q}z}H_dm_CaC?aCAM?O?M@O?S@U?S?{CAS?U?SAO?QAKAMAMAKCKCIAICICECGCSIOIQKMIUQQOMOOQMQMQOWKSIQOYM]Ui@_@mAOk@Mi@Mm@Km@Mo@M{@Qi@{@aGIc@Ge@My@CUGc@G_@G[Ia@aCsK}AkHaBuHu@oDSgAW}AU{AGe@Io@SuA", - "warszawa powiśle|warszawa stadion": "q{x}H{`j_CMk@g@mBc@wA]aAQe@Qi@a@iA_@aAAEg@eAi@eAg@cAAAi@_A]g@_@k@uAiBW]W_@Ye@S_@Q]Q_@Ue@Se@q@eBcBaE_G_OmGuOQc@GQQ]Qa@S_@_@o@a@m@QWW[UWYYc@a@]Ys@e@YOUKUKUKQGMEOEMEGAQGSEQCOCMC]ESAMAO?MAM?M?", - "warszawa powiśle|warszawa śródmieście": "q{x}H{`j_CEB|AhHDdALl@Jd@Jj@Lp@rD|TJn@Jp@Lz@N`ALx@Lz@xAjLlEf]BRFn@Fj@Dh@Bl@BX@\\@`@?n@?`@?b@?\\E`BA^?d@Ab@?^?^?b@@^Bd@@^BXB`@Fb@Dd@Fb@Fh@JdBR~A\\|AtCzTID|AzLHh@Fh@Fb@F^Jh@Jf@Jd@H`@VbAv@pB`@dBH^HZFXF^FZDZF`@D\\VrCPF", - "warszawa ochota|warszawa śródmieście": "wiw}H_sb_CSwAcAeIIm@Is@MmAI_AOgBEi@Ek@KcAE_@Ga@Gm@YsB", - "warszawa ochota|warszawa zachodnia": "wiw}H_sb_CHn@Jl@Hj@Hj@@F^|BJr@v@`FD\\l@zDdA|GNfA`B~K^dClD|UL|@N`AP|@P~@Jh@Nv@Nx@?DHd@Jp@Jz@NfAThBTnB\\pCf@`EHj@F^DZBJHh@DRDRP|@Iz@Fn@Dj@Fn@Dr@J`BFl@B^Fn@Et@Vb@Jt@xAtLLhAR~AHh@@L", - "warszawa ursus północny|warszawa włochy": "itq}Hkjn~BI_@K_@WgAQm@Om@[iA]qAw@yCU{@Mg@GWSw@Mk@Qq@Mi@Mg@?Cs@_DYmACO_@{Au@gD]{AACsAcGsAcGOm@WgAYsAQw@Mq@Mq@QeAQeAG_@Kw@Y}BGs@MmAEo@Gu@Ew@IuAG_AOqCw@wAAu@Es@Ek@Go@Iw@Gi@Ko@Mo@Kk@Om@Qm@Og@Si@Sg@Se@Wg@m@mAc@y@Wg@Sa@Ue@Sg@Qe@Si@Uu@{@sCkAwDk@iBSq@Sq@Su@Oi@Oi@Ok@Mg@Oo@Me@Mi@Mg@]{Ac@oBKc@Oq@Qq@Qu@Ke@ACACYmA[sA", - "warszawa gołąbki|warszawa ursus północny": "w{s}Hsmi~B_@sGc@_HA[k@aJEq@Eq@IsAGq@Gq@Gm@Ek@Iq@Iq@Ge@UwASuAk@wDyAoJMw@E_@Ig@Gi@Gg@Ee@Gg@Ei@?GC_@Ek@Cg@Ck@Am@Ae@Ae@?OAW?m@?a@?a@@]?_@@i@Bi@@e@Bg@Bi@Dk@Fo@B[B[J}@L}@D[F]DYD[FYJe@He@Jc@Lc@Ja@Ja@Pi@Pk@fKs\\hB}FzBkHxBcHrGySzEqORo@n@qBR[J]Lc@J[H]J_@J]F]H]F]H_@Fa@F]D_@D_@D]D_@Ba@De@Bg@Bg@Dk@@i@H{BnBKFt@Dn@LlAFr@X|BJv@F^PdAPdALp@Lp@Pv@XrAVfANl@rAbGrAbG@B\\zAt@fD^zABNXlAr@~C?BLf@Lh@Pp@Lj@Rv@FVLf@Tz@v@xC\\pAZhANl@Pl@VfAJ^H^", - "warszawa ursus|warszawa włochy": "itq}Hkjn~BI_@K_@WgAQm@Om@[iA]qAw@yCU{@Mg@GWSw@Mk@Qq@Mi@Mg@?Cs@_DYmACO_@{Au@gD]{AACsAcGsAcGOm@WgAYsAQw@Mq@Mq@QeAQeAG_@Kw@Y}BGs@MmAEo@Gu@Ew@IuAG_AOqCI}AEm@Ei@Ek@Ee@Eg@Ik@Ik@Ig@Kg@Ke@Ia@Oi@Ma@Qe@Oa@Oa@S_@Q_@Sa@Ua@k@gAc@y@]q@]s@Yo@]y@Yw@Yw@?AYy@Yy@k@kBQk@Qm@K]K]Uu@Qk@Qk@Qo@Ok@Qm@Mi@Ok@GYIYWkAYmAg@wBKe@Oo@Oq@Qu@Kc@AEAAYmAc@oA", - "warszawa ursus|warszawa ursus niedźwiadek": "itq}Hkjn~BVbARz@Jf@f@tBR`A`@dBLh@SNLh@Ll@XnAXnAPx@Px@Pz@TdATfAVjAVhANv@Pt@Lh@dAxEtA`GrA`GrA`G@Fx@jDVlADL^`Bn@pCd@rBl@lCpAxF", - "piastów|warszawa ursus niedźwiadek": "w{n}Hiye~Bs@}CEQMm@U_AIa@e@qBgAwEMi@sAaGESmAmFa@eBs@{CsAaGCMoAsFqA}F]wAI]_@aBwDqPk@gCg@yBsAaGsAaG{D{PMo@Ok@Kk@UeAKi@o@gDOu@_@mBWkAWkAWgAUeA}@kB", - "piastów|pruszków": "w{n}Hiye~B\\zALl@Nj@Ln@XnAHZh@`Ch@~BLj@FTTbAf@zBDPnArFVfA?@z@vDtAbGDT@@jAhF\\zAv@fDj@fCf@xBtAbGrAbGtAdGrA`GhA~EJb@Px@bAhErAbGn@nCvNbo@XlAVlAt@~C@HDNvAhGBJx@rDd@pBhA`FlBpI`@bBbBlHZvAPr@r@pCVbAPr@Rv@Px@`@`BLj@b@hBNn@Jh@Rx@~@`EVfA@Dj@hCJd@bDnN", - "parzniew|pruszków": "}xi}Hijv}BeAsEOk@Sy@Kc@EMg@mB[kAYkA[mAWeAs@aDaEmQEQI[yAuGiC_LWmAg@uBI_@ESqAuF}@}DiAaFmAkFoF{UiGgXiAaFWmAWiAk@mCk@qCm@mCeC}KCK", - "brwinów|parzniew": "g~f}Hwvm}BQs@I]Oo@[mAYgAiAuEYgAYiAYkAYkAcN_m@_CcKmDkO_@eB}Mkl@[uAYkAaBmHKg@ACQs@Q{@[qAWgAyDmP[sA_BcHuCkMk@eCk@eCsDaP[sACOUaAWqAq@mDScAWiAWmAs@}C[sAWgAWkACKS}@", - "brwinów|milanówek": "g~f}Hwvm}BPt@Pv@`AbEJf@H^Nl@n@|C~AzHXrAZtA^dBfAzEjBfI`@dBXnApCzLH\\h@~BrSn}@\\zA~CbNpYloA|A|GdBrHNr@Ld@jFlUbCjKR|@T|@XfAnBvHFZXdAZtAXfAJb@", - "grodzisk mazowiecki|milanówek": "}x`}Hmzz|BwCiMm@oCm@mCo@sCeAyE{@yDqA_GyCyM_CoKgBcIkBmIa@qDgAyEg@yB[wA{AsGCICM_GgWsKce@wCkMc@mBgAoFyKwe@]}AS_AOo@Mo@WkAs@iDWsAYoAYsAYsA[sAYoAQw@", - "grodzisk mazowiecki|jaktorów": "}x`}Hmzz|B\\xALh@\\zAXhABJNl@HX`@`BtB|HFRhAfEl@`C~@~DFXhAbFDLbBtHb@lBrB`JpAtFp@vCBHH\\`@bBLf@Jb@Rt@z@hDTx@Rx@d@nBr@zCn@hCRv@xA|FNl@Nj@\\zADNd@rBdApEXjA~@`EdFtTXnArK`e@jE`RZrAXpAXnAzCvM\\xAfZfqAFTdAvDrB`Jl@hC`@dBtQhw@xAnG", - "jaktorów|międzyborów": "qh||Hklm|BnApF@FdJt`@\\vA`@hBRx@xFnV~C`NrSd}@\\zAvCdMH^`DdNxEpSvMlk@~F~VZxAlCfLjJda@|@zDfCtKbBnH~A|Gx@pDzCrM`CbK\\xApCxLhBzHhBzHrAzF", - "międzyborów|żyrardów": "sww|Hex_|BtAdG@FJ^BJBHpMzj@dDnNbClKd@rBzApGbAjENr@HXbAnE~@|DfAtEnCrLFXlHh[lBhIt@bDrEzR^|AJf@", - "sucha żyrardowska|żyrardów": "ayo|H_wg{BuAaGo@wC}A{G[yAs@yCsMsk@aAiEeBwHw@iDgDeO}B_KI]S{@yEwSYuAq@uCqA}FYqAYoASy@Oq@Oo@UcA]wAgBwHWoAYmA[qAYqAmK{d@qFeV]{A{@wD[qAYqA[qAYqAwKge@yGoYkDcO}FuVCMWkAwBaJkWihAmAiFiB{He@qB_@}AEUw@gDmBiIEQeAqEgAyEo@qCqCuL{BsJYkAkBaI", - "jesionka|sucha żyrardowska": "i`n|Hgib{BeAuEOs@GWI[sDgP]yAcCqKmAqF{AuGiAeFcAmE}@{DuAkGy@kDy@qDyD}PgD_OyHc]WcAAICIGWAGAGOq@cAoE", - "jesionka|radziwiłłów mazowiecki": "i`n|Hgib{BpAxF^`BdDxNhDfOdIf^f@vBRz@r@|C\\xAzEbTn@nCxBtJd@pBtClMZnAzAxGd@tBd@pBz@tDhDfOvBlJBLd@rBnArFXnAXjAR~@T~@j@jClBnIj@hCPr@d@xBZrARz@FTh@bC~AdHjAzEPt@", - "radziwiłłów mazowiecki|skierniewice rawka": "yhk|He~yzBBJBHlBfIZtAZpAXpALh@Nn@TdAZnAXnAjBlIZtAZpA`@hBlBnInIz^Lh@ZxAxEvSnCpLZvAlChLXrAZrAlBhIZrA@FXjAlAlFNn@r@zCNp@XnAXlApE`SNp@Nn@R|@DNZxAJb@hDdOrC`MjMvj@vM`l@@@Px@Nl@\\zAd@tBJd@~FfWlAjFn@pC~Hn]XlAtAdG", - "skierniewice|skierniewice rawka": "kqd|H}t}yBo@eDKc@a@uBm@wCmAiGOs@G[uA}GUgAG_@GYCMKk@Ic@Ki@CME[Ii@Ii@Gc@Ga@E[ScBGe@Im@Gk@Im@Ii@Ii@Ki@Ie@Ie@Ie@Q}@Q}@Ke@Ia@CKwBqKiEkTiCmMgCiMw@{D]eBgB{I[aBcC}LKg@UgASgAAAKk@Mm@Km@Mq@Kq@Kq@Kq@Kq@Iq@Is@Iq@Is@Gs@Is@Gs@Es@Gs@Es@Ew@Eu@Ew@Cu@Cu@Cw@Cu@Cu@Cu@Aw@Cu@Aw@Aw@Au@?u@Aw@?y@Au@?s@?}AB{EHg_@Pm^BkI@qH@w@@{E@gHDmO@mE@_A?eA?i@?}@A{@?s@A}@Au@Cw@Aw@Cu@C}@EaAEy@Cq@Eq@Eq@?KG{@GaAG}@o@aJGgAOoBAQCa@AOIy@Eq@I{@Iw@Iu@Gi@?GKy@Ky@Iq@Ks@O}@Ku@Ms@Oy@Ms@Ic@CI?EOu@Oo@Mo@Sy@qBwIAICKKa@sA_G", - "mokra|skierniewice": "u}f|Hg~tyBlAsCd@iAlDiIrB}EnDmIxIqSpEmK|R_e@tCyGHS~AuDFMfCeGTe@pEoKPc@Pc@Pe@HWJWL_@La@Ni@Ng@Ni@n@cCr@kCLc@Lc@Je@Lc@Je@Jg@Jg@Jg@Hc@He@Fe@Hg@Fg@Fg@Fe@De@Dc@Di@Dg@Dg@Do@Dm@Bo@Dm@Bo@Bo@Bk@@m@@m@Bm@?m@@m@@k@?m@?m@?o@Am@?o@?MAc@?MAK?UAc@Ak@Cm@Cm@Ak@Em@Ck@Cm@Ek@Em@Gk@Ek@Gk@E_@AEGg@Gg@Ig@Ii@Ig@Ia@Ga@Ic@GWG[Ic@]cBwBoKKi@CQGWKk@Ou@]eBCKESCSEUEUE]EWEYCOAa@", - "mokra|sierakowice skierniewickie": "u}f|Hg~tyB?RsCvGSd@eC|FuB`F_Vvj@gInRmZfs@mFbM}@vBwX`p@}IxSgFzLy@lBWl@}BlF", - "bełchów|sierakowice skierniewickie": "auo|HeghyBNIJIXQXQ`BcA~AeArAy@NKRMFE|AaAh@]FEVQVOp@c@VQRKDCNKlAw@dFaDpAy@tFoDhIiFhIgFfIiFPKd@[d@[f@[h@_@d@]b@]^YTQTQLKVUb@_@f@a@d@c@f@c@f@e@^_@VWTW^_@\\_@d@g@b@g@b@e@`@e@`@e@`@i@TYf@q@f@o@^g@^i@f@s@^i@^m@`@m@`@o@`@q@Zk@b@s@\\m@Zm@\\o@^o@HORc@Xk@Xk@`@{@Xm@Xo@Xk@\\{@NKN]bB}DtB}EpB{E@AN_@dC}FlAuCRe@Xq@", - "bełchów|bobrowniki": "auo|HeghyB}CnBc@X]Tm@^]RA?[RaAh@a@T_@TULi@Zk@\\_@T_@VA?IFyCjB_@Va@V_@Tc@Z[RGDQLWPWP_Ap@c@Xa@Vc@X_@Va@VQLqEtCoBnAEBe@Xi@^gAp@u@d@{BvAyExCUNo@`@i@\\EBIFc@XwD~B}AbAsD|BiAt@kAt@gIfFiIhFiIhFgIhFiHpE_@VuAz@cDrBq@b@]RsAz@cDtBqAv@gIhFgj@t]", - "bobrowniki|łowicz główny": "mnv|H_mcyB_F|CEDmgAjr@yA~@C@o@^q@d@a@X_@Va@Xa@ZCB_@Va@\\WRIFc@\\a@\\a@^k@f@WT_@\\WXGFc@`@[Z_@`@_@`@]^a@b@_@b@_@b@_@b@_@d@_@d@_@d@]d@Y^Y^]d@[d@U^W^g@t@g@v@iTf]mKpPk@|@uHvLSZsD~F{CzEyPfXqAtBsAvB{@rAYb@g@z@i@x@e@x@{BtDu@lAMRQZMPGLYd@Yf@w@tAGLA@oAxBg@|@Yf@CB]j@YIiBvCGJy@nA]j@]j@W^GJ]j@cCzDW^}@vAiAfBaBlCc[zf@U`@W^oApB_CxDk@~@g@t@e@t@U^}@vAcA~AcA~A}@xA", - "gniewięcin apo|klimontów": "mfnsHi{iyBAJdBl@dBr@tC`BnCrBvApAvA|ANPdChDdFzIzAjCnBnCzAhBnApAlAbAzQtN`NbKvCzBjAz@pAx@pAv@l@\\bAh@", - "klimontów|klimontów apo": "seksHubgyBx@b@d@RhBz@D@zBz@vBp@bDz@pJrB|D~@B@PDjGtA`KxB|VtFtFnA~AZtCn@", - "dziadówki|tunel": "yrrrH{zbyBoFt@UDeNrBgBTsCb@yB\\wBf@oAb@kAh@s@^w@d@o@f@aBvAaAdAaAjAs@dA}@zA[n@_@p@_AjB_FxJm@lA_MtVqCvFa@x@_@n@]j@[f@[b@a@f@Y\\a@`@]Z_@Z_@XIFUN_@TEBWNe@Re@Ra@Nc@La@Jk@LeEv@iNnCeF`AgNpCaARe@JgATe@Hg@Ha@Hq@Hy@Hg@DwBReBN]BgE^_DVe@BS@W?e@?e@A_@Ae@Ga@Eg@Kg@KKESGa@Mg@Sa@QoCsA", - "dziadówki|miechów": "yrrrH{zbyBvEs@dAOdCc@jBc@fAa@bAa@xDuBxDyB|@k@nC_BtAw@v@_@LEr@W`AWzAWnBIdBBbAJ`APn@Rv@V|@`@rFrCdI|DrAh@vA\\zARrADx@?b@CRAfBUtA_@jAe@~A}@|BcBbEaDtDuC\\Yl@e@tBaBvBcB~BaBrBiAtBu@pBc@LExBUbCCbCLxR~BjR|Bh@CrGt@dBJvBB~@A`@AvBIdBE`GSjFMnABzAL|AZ~Af@|D~A^NjAd@bBp@lBx@rC|@tBx@", - "kamieńczyce|miechów": "spdrHmkbyBeAv@WP{AdAw@d@_HhDcH~CwT|JeDvAc@PwDdB_A`@qBz@wBr@kBXuAF{AAsAOc@GaBa@o@WcB{@aAs@aByAoA}AsAwBq@wAm@sA{BaG_A_C{@iB}@_BeA{A{@aAaA_AoA}@}A}@}BaAqBy@}Am@aBo@WMwIoDoDeBeLuE{Am@", - "kamieńczyce|szczepanowice": "spdrHmkbyBfDgCtA}@~CgBnJaFf@WrG_D|AeA`Au@bCyBzDgDfBwApA_AzCyAlD_AHA|Ci@dFw@pEiAfDgBbDkCxCeDlMqNbBmBlCwCz@{@dByAxAcAtEqCvCcB~CkBnGsDjBmAh@[`Aw@z@u@", - "smroków|szczepanowice": "ggzqHukjyBgAhAaAhAaAlA}Xd^aBpB_BfB{AlAm@b@u@d@wAr@yAj@wFnBuHjCuHhCqHdCiA`@gFfBsAl@qAr@aDnB_EpCe@Xm@`@k@\\OJ{GdEyBzA}@t@eA`AeAhA_AjAuCtDyC|DgMpPi@j@{A~AMJ", - "smroków|słomniki": "ggzqHukjyBHIr@k@|@s@hAw@~BoAhEaCdBaAbB_AhPeJ|GyDlC{AhAo@fAm@lPgJvGuD~CgBTK`BcAt@k@t@s@`@a@lA_BjAkBhBgDn@iAr@gAj@s@d@i@l@q@l@e@j@c@l@_@xAu@XK^O\\KXKpBk@HCjBi@\\K^MZIdBg@`A[hA[pHwBj@Q|EwAdA[TGr@O", - "słomniki|słomniki miasto": "}cuqH{wmyBnCo@h@Mh@Ob@Oh@QjAa@zAg@LE`DmAbBaAt@o@n@i@l@o@xAiBxAkB|AeBn@s@zEmF`@e@fCqCfCqCtJuKfAsAlAiB~@iB|@uBzAgDp@_B", - "niedźwiedź|słomniki miasto": "sgmqHskqyBiE{AmAc@eBm@oCaAwAe@eAUuAQoAGkA@kAFgARgAV{@X}@b@{A|@{A`AeElCwExCwD~BeAf@}@\\{@Z{@RyAVeAJmAFcA?y@CcAGsFg@mBSuGo@sGq@}Fk@gHs@wBSwAMcAE}@@qAHw@Lu@NaAXaA`@{@d@y@h@o@f@_Az@{AjBo@bAw@vAuAtCm@tA{BdF", - "goszcza|niedźwiedź": "ovhqHedmyB_B~@m@Zi@RcCv@iBViBFgACiAIwBc@g@QcByAaAm@cAw@q@o@k@m@qAiBy@uA{@cBg@oAa@qAa@}Ag@{B_@cCW}BKoAKcCKoDG{CIyCKiCA[Mu@G_AOyAS{AUwAe@aCm@yBs@qBeAaC_AaBaAuAe@i@_@a@mAeAu@k@{@g@}@c@kAe@sE}Ay@YgKyDaA_@uCiAqDyAgDqAmFkBcEyAy@YyBq@gDeA{DuA", - "goszcza|łuczyce": "ovhqHedmyBrAw@t@c@b@WPMJGbDqBnAw@lAi@rEmB|@Yx@WvA[~Cq@~A[x@U`A[`Ac@bAk@r@g@|@q@z@y@|ByBlAiAtAuAn@m@dA}@z@m@r@e@z@c@|@_@t@YzKyCtDaApD}@jBi@`AYt@YrAk@hAo@h@]pAy@dBmAdCeBjCmBhAw@XSd@i@bBmAbAs@~@w@hAgA", - "baranówka|łuczyce": "}faqH{zsyBoESm@A[AyAGkBIyBK_CKsBIkAAoABo@D_AN_ATcAZq@XgAj@w@l@eA|@k@j@u@~@e@p@{@tAu@zAk@vAe@rAe@bB[xAEP[bBWjBWlCUdC[`Ec@fFI~@WhBWbCc@|C]hBe@hBc@vAu@pBaAzBeA`CYl@uEbKsCjGkAdCg@~@k@`AaAzAi@p@c@l@m@p@o@r@", - "baranówka|zastów": "}faqH{zsyBvCJzBJfEPhEPxAHxAL`AJtARz@Lz@LnC`@nBXtBXdANr@Nz@Tj@Rf@Pn@Zp@^|@p@|@v@z@|@x@dAz@tAx@|Az@jBlAxCP`@t@dBdAfCbA`CrB|EtBbFRd@JTr@bBr@bBvBbFzClH|ArD|ArDrL`YjBpEJT^z@xCfHXr@`FzLnCtGnClGpAzC`CpFjAlC", - "czarnca|knapówka": "{neuHycuxBLjL@z@Bn@@`AJvDF~AH~BLxBPrB`@xCd@lCp@rCv@fC|ArDdBdDx@jAz@dApApAtAhA|FtEvBzB|B~ChA~BjAbCv@jCr@lCfDjMbAzCt@`BpA~BhBzB|BzBtCzBlG|EhMxJdMvJjGzEAPAJVRzMfKnElD`DdCdAv@", - "dorota|juliusz": "gz{qHstttB`C`Br@d@vE~CYt@~DrCdBnAxDlCtBtA\\Tb@\\r@h@^\\`@^^^\\`@\\`@TZZd@V`@T^Xj@Vf@Xp@Xr@Zv@Tr@Tr@Rr@Rx@Pv@Px@Lr@Nx@Jv@L`AHx@JbAFx@FdAx@rPFtAF`BBv@Bt@B|@BjB@zAVrWH`Az@ny@J~K@j@?d@HbHVpTFzF?lA@hAApA?tA?nAAvAA`AA~@S~M?ZC`B?pA?dB@tA@vABpADxAFtAFrATtDn@`KDh@jApR", - "juliusz|sosnowiec dańdówka": "gyyqHg}itBRxC?H@Jx@xMJ~A?v@`AtOBb@b@`HJ|ALtAH`ALnABVLdAPrANfARnAPdAThAThAXjA\\xA\\tA~Uf`Al@~BT`ALl@Px@Lx@N~@Hj@Ff@D^HdALnAF`AHfBDbB@jA?|A?~@ChAC`AGtAGhAMhBM|ASdCu@`LKtBCzAC|A?dBLpHGn@HlE@rA@tBBfC@jADhDf@r]@|A@vA@jDB|ABfA", - "charsznica|gajówka": "o`rrHuotxBLzIBhB@RHnE?b@DfAB~@D~@FbAFbAJbAJfAJ~@BJTfBjBlNpA|JJv@Lx@Lz@N~@PbARdAPz@T`ATz@V|@Tt@X|@Zx@Xt@Zv@f@jA~ArDZt@Xp@Vt@Tn@Tt@Rp@Rx@Np@P~@Lt@N|@J~@Hz@Hx@F|@F|@@X@f@Bz@@`A@b@?vAArAClAAr@c@zX]zTClAEpAEvAEtAItAIrAKpAKzAMhAE`@Gn@{@pHQdBQ|AQpBKtAM~AIlACXIfBIvA[vGaClh@Cp@KjBIdBK|AItAO`BM|A{@lJK~@a@jE", - "gajówka|gajówka apo": "euqrHmrixBmAtMMpAsCzZE\\OzAQ`BQzASbBSvAW`BU~AWxA_AzFoDhTkCbP{AhJADc@nD", - "gajówka apo|jeżówka": "{qrrHomexB_CnNW`BObAQdAQpAQrAQrAOnAaGvh@OpAQtASrAQpAQnASlAUrAUnAG^sExUO|@Q`AKv@Mx@Iv@Kz@Gx@Gv@E|@Cv@Cx@Cz@Ax@?z@@d@?f@@j@Bz@Dz@D`AFt@Fz@H|@DVD`@Jt@Lx@Nv@Nv@Px@Rr@Rt@Tt@Tp@Xp@Vp@Xl@Xj@Zl@\\j@Zf@b@p@tAvBb@r@Zh@Zl@Xj@Zp@Vn@Vp@Rp@Tr@Rt@Rv@Nr@Px@Lx@Lz@Jv@J|@Hz@F|@Fx@B~@Dx@@~@BdA?V?h@JpJ@lABjABdAFjADhADp@Dv@", - "jeżówka|wolbrom": "urrrHwf}wBDd@HfAJdAFj@Fh@J~@NjARpAPdARlATjAVhAT`AZhAXfAZdAvFjS~AvFZdAV~@Z`A^`A\\`A^z@^~@^v@`@v@`@x@f@z@`Vzb@JNvJfQZXZh@Xd@\\f@^j@^d@b@f@`@`@d@d@\\Xd@^^V`@Vb@Th@Vf@Rd@Nl@P`@Hf@Hh@Hd@Bd@Bf@@d@?l@Cf@Cf@Id@Gh@K`@Id@M|HoBv@Sh@MTDREd@In@Ih@Ej@Eb@A`@Ap@?f@@J@l@Bh@DZDPBn@Jn@Lh@Lf@NVJNDd@RVJJFh@Xb@VTNVPTR`@\\^^`@`@^`@\\d@^f@\\f@Zh@Xh@JTNXXn@Xp@Vp@Tp@Rp@Rt@Pp@Pv@FTH`@Lx@Nz@J|@Jx@Hx@Dp@Fr@DjABfA@`A?~@C~@At@E~@GbAIjAKnAMjBa@~EKjAK~@Kz@Kv@Ot@Kn@Ot@Qr@Ol@?@SvAeDdMcApDY~@g@dB", - "wolbrom|zarzecze": "c`nrHuxtwBi@jB_@jAkAtDy@dCY|@[dAqCjJKZyAbFUv@Sv@U~@Or@UbAMl@SfAMv@YlBQpASnBMpAKjAK~AGpAGlACdAC~@CbAA~@Ap@?N?L?p@@vA@|ABfAB`AFnA?PFjABRDv@F~@Fl@Dj@LlAPzAJz@L~@XdBTrANx@R~@`Qv|@pFpYf@fCdAnFVhA@F^`Bd@~Af@bBVr@\\z@Zv@`@`An@zAvB|E\\x@Zx@Xt@Xx@Vv@Tz@T|@Rv@R~@Pz@N~@`@hCpAdIXdBBT|AtJjOhaAl@zDvA|IhDjT~AhKtAvIRhAPfARdAVjAVjAVbAXdAXbAVv@DNZ|@", - "zarzecze|zarzecze apo": "_rkrHsmfwB\\`A\\z@Vp@Td@BFf@dAb@z@\\n@Zh@Xb@`@p@f@r@h@r@f@n@`@d@d@f@d@d@f@f@j@f@j@d@n@d@p@f@bEtCh@^`@VDDf@Xd@Xf@Vj@Xb@RhDvA", - "chrząstowice olkuskie|zarzecze apo": "g{grHozcwBaDsAECgN}FgN}FiVcKOImMoFWK", - "chrząstowice olkuskie|jaroszowiec olkuski": "g{grHozcwBlFzB`@Pd@T\\Rj@\\`@Xd@Z^Z\\ZHHb@b@d@f@^d@\\b@h@t@Zf@Zf@\\l@R`@HP`@x@Zv@Vp@JVFTXx@Vz@Tz@Rx@R|@P|@PdALz@Lz@LfAJbAF`AHbAD`ABr@@NBdABbA?fA?n@?x@Ax@Cr@Ad@C|@E|@GbAKlAeAbNEn@q@|IKrACRIv@MnAMdAOhAQlAUnAQbAUnAUlAcNxu@WrAQjAEPOdAQlAStA_AfHi@hEe@jDGf@EXgJ|s@y@jGS`BQrAIx@IhAI~@GbACz@EbACdAAdA?dA?b@@\\@hAB|@Bz@FhAFbAH~@H|@LdAD`@Fb@Lt@Jr@Nz@`AlFh@zCv@hEDXLr@Nx@Lt@l@fD^pBPv@Nr@Rv@Pt@Tr@Tv@Xx@vAxDvAtDdBpE", - "bukowno|bukowno przymiarki": "ofxqH_kvuBYjAYnFKdBM~AIx@K`AObAQbAQ`AoA|GaBxIeApGwUhoAc]piBOr@O|@Mt@Kr@Mx@Ir@Iv@Iv@Et@Ev@En@Cj@Ax@C~@?jA", - "bukowno przymiarki|sławków": "}kzqHg_nuBApAGPAxHGhm@?nDAjA?jAAjACjACbAGlAGdAIlAKfAKbAMfAMdAQbAQbASbAUbAS~@Y`AY`AWz@_Ln\\wD`Lw@`CeDrJWr@Wp@[r@Wj@]n@[j@[h@]f@]d@_@d@c@d@_@^c@`@a@Z_@Xg@Zc@Vc@Ta@Pa@Pm@Pe@Li@Jc@Fe@Fe@Da@@O@]?i@Ai@Ak@Ek@EqBOuEc@e@Cg@Eg@Ae@Ae@@i@@m@FWBk@Jg@Hc@La@Nc@Na@Rc@Re@Xa@Vg@^gCfBm@f@m@n@i@l@]b@a@j@_@j@c@n@_AvAc@p@kC~D", - "sosnowiec kazimierz|sosnowiec porąbka": "se}qHwjktBTVh@f@|@t@`@Z\\T\\TZPl@Xf@RvAh@jC`A|HvCb@PRHLFb@Rd@V^Tf@\\^Z`@\\`@\\^b@Z^b@h@Xb@^j@rBjDbEdHjD`GdAfB~DbHFFDHn@hAn@bAZh@\\f@Xb@@@\\b@^b@n@p@JJb@^^X`@X`@Xb@Tb@Rh@VpJfE~@`@z@b@dAl@d@Z^ZVRXVFFJJRRNPNPRVZ`@NRPVT`@", - "sosnowiec dańdówka|sosnowiec porąbka": "coxqHo_`tBCgAC}AAkDAwAA}Ag@s]EiDAkACgCAuBAsAImEIaFC_C?CAaBB}AB}AHqBNgCd@}GTgCN}ALgBFiAFuAB_ABkA?}@?{AAkAEcBIeBGaAKoAKeAE_@Ge@Ik@O_AMw@Oy@Mm@U_Am@_C[oA}WyeAMg@q@kCCKo@cC]sAUu@Uo@Uo@Wk@Yq@[k@Ye@", - "łódź chojny|łódź kaliska": "}quzHis~uBU|EC^AZ?XAv@Az@ATA|@ErBErAMzBGnA{@bQk@~Ks@~MMlCK`BK|AIrAKhA[vDKlAEf@Eb@Cf@C`@Cv@A\\Cx@?l@AhA@x@@tA@dABr@@d@Bf@Dd@@XHbAJfAHv@Jx@Jn@Lp@XxAR~@H^FPDRBHFRNd@Xz@JXVr@Rb@b@`Ad@dA|B|EbD|GtChG|@lBf@hAZx@l@bBHXPj@J^J^Jd@XlAVvAHf@Lz@Hv@JbAJjADz@Dt@Dn@@b@BdA@v@?r@?X?J?PA|@Ax@CfACf@C`@Et@Cf@C`@Ip@C^Kz@Kz@SlAGb@Oz@oAnHeBzJaAxFY|A_@nBKd@Ml@Oj@Mf@Mb@Od@IVIVM^O\\Qb@S`@Sb@]p@Yf@e@r@]h@C@g@r@s@|@q@|@m@v@_AjAwCvDQTcApAs@|@q@z@q@|@u@|@a@f@g@j@u@r@g@d@]VUPYRYROHMHYPIDUL_@Pa@Rm@XqEnB]PQFSH]Na@N]LMDmCx@y@X_@La@Pc@PYJ[N]NA@QHWJcAd@q@ZYL]L]Na@Pa@LUFWHODSFSDWF]F]H]Fi@H}IrA_@F_@D_@Da@Dc@BWBU@Y@oCJa@@Q@A?S@Y@Q@Q@O@]BI@m@FUB]BOBSBG@A?G@i@FIB_@Fa@HiARcATa@HA?u@PI@{A^kCj@G@G@eE~@kB`@c@J_@Fa@HaFz@kCb@gBZ}NdCs@LUDYFUF[HWHYJUJUJE@UJMF}BhA_Bt@iB|@WLcAd@MHSHOHOHIDMHMHQJIDOJEBSLOLGDKHIFKHIFONKHMJSPKHWTKHA@WTmAdAGD[XCBYXSPGDYXoClCGFcA`A{@t@cA~@Sd@", - "zgierz|łódź żabieniec": "g{l{HsepuBxApAf@d@RRr@p@^\\RRDF`@b@VXXX^^ZZdCzBrBnB~@z@`Az@RNVRRNVRZRXPZPXNXN^NDBPHVJ\\LTFXH`@J\\H\\H`@FTD\\D^B^D@?`@@f@@j@?r@Aj@CbAIbBQ`D]nCYfAKFAz@Ix@Kp@Gz@Kx@InAMv@IdAMv@IdAKt@I\\C^EnAIt@Er@Cf@Af@?D?`@Al@@`@?~@Bx@Bz@BlAHF?nG`@z@Hb@Bn@H`@F`@Fb@Fr@NfAVh@Pj@Pl@Rh@TTJJDDBD@FBJFNFLHNFNHDBJFLHLFPJPJh@ZhHlE~AbAjAp@pAv@rAx@tAx@jBbApE`CdCrA`DbBfAl@bQdJBBrGhDxDrB|Ax@bBz@|BnA^RhB`Ap@\\hAl@fDfBxAt@h@Tv@\\t@Tp@Rl@Pl@Lp@Ll@HD?h@Fr@FdBF\\?h@?r@Ab@Ap@Ep@Gp@Kp@Kn@Mx@Sl@OzQiG", - "dąbrowa górnicza gołonóg|dąbrowa górnicza ząbkowice": "_xgrHwajtBmBsF{AmE}ByGcCiHs@oBqDoKIQgLs\\a@kAg@{Ak@}Ae@uAyCwIaC_HcKaZyJgYY{@[y@[y@Yw@Yo@Wo@]w@]w@[m@[m@Yk@[i@]m@_@k@a@q@a@i@a@k@a@k@KMOSUYW[UYUWwAcBsB}BY]YYoB{Ba@c@KKWWeAgA[YSSe@c@YYm@k@]]_@_@a@_@_@_@", - "dąbrowa górnicza|dąbrowa górnicza gołonóg": "}aerH_lbtBNoAJ{@Hu@Fm@Da@D_@Dc@Dg@Be@Ba@Dg@@a@@]BW@]?[@]@_@?a@@_@?c@?_@?_@?]Aa@?[Ac@Ac@A_@Cc@Ci@Ck@A[C_@C[Eg@Ee@Gg@Ee@Ge@Gc@E[G[EYE[G]GYGYG_@IYEWI[IYGUGWGSK_@Ma@Oe@Oc@Qe@?WuDuK[y@{AmE{AkEWs@cKcZiCmHu@{BqAuDyAgEwAeEqCcIc@qAeJ}WuA_EOc@KYqCeI}C_JaBwEaByEmAoDaByE", - "będzin ksawera|dąbrowa górnicza": "seerHi{|sB_@uEAMQqBu@wJc@iG_@sEOuBOuBGo@Cg@Ek@Ce@Eq@I{Ac@eI]gG]gGCo@Ck@AYB]?[Ac@A_@?]?_@?[?a@@a@?[@[?A@O?Q@U@WBY@[BS@UBS@UD_@Fm@BSFmAHw@~@iI?G`@iDFi@Fm@@IFm@VkCl@_GHu@NuAnBgQh@uENoALoA", - "będzin ksawera|będzin miasto": "seerHi{|sBPpBj@pGPlBVvBR`BTbBb@xCh@nDl@|EZfCl@`FL|@`AbIj@rENjANnALv@NbAP`ANx@Px@R~@Rz@R|@Nh@V`A^jAb@rAXv@^bA^bA`@|@`@|@d@|@`@v@b@r@^l@f@x@f@p@b@j@f@l@f@l@j@l@l@j@j@h@j@f@n@h@l@b@n@b@l@^l@\\^R\\PZNb@Pp@Xl@Rl@Rj@Nl@Nn@Ll@Jl@H^Db@Fd@B`@Bb@B", - "będzin|będzin miasto": "obarHmlysBkA~@gAx@KFaBlA}AhAiBvAoC|BcBbAcAz@cAx@a@X_@VYR]Ta@V_@T]Pu@\\s@Za@N]LQFk@Pq@No@Lm@Ji@Fq@Fw@F]Bg@Zk@B]?u@@s@Ac@A", - "myszków mrzygłód|myszków światowit": "c{nsH{qguBwFtBwEbBwt@`Xm@Ta@NKDQT_TvHo@Vm@Vg@Tm@Zi@Xg@Xk@^a@Xm@d@c@^g@b@e@b@g@f@a@d@c@f@e@j@a@h@a@l@_@j@c@p@_@n@_@r@_@r@]r@[r@]v@Yr@[x@Wv@Wv@Yz@Ux@YdAU~@WlAWjAe@~BCLuAnH_E|SuNjv@e@dCmCtNGVgA|ESbAIb@{A`IuGp]sBvKoDbR", - "myszków mrzygłód|zawiercie borowe pole": "c{nsH{qguBnPcGfMqEpFoBrEcBzCiApBs@fE}AVIt[iL~Am@~GcCfE}AbDiAnLiEvEcBr@Yv@Yp@Yl@Wr@]n@Yr@_@r@a@FCj@]p@a@r@e@p@c@t@i@r@i@n@i@r@k@n@k@l@k@j@i@p@q@h@k@r@w@l@s@l@s@j@s@h@s@h@q@h@s@rOaT~B_DpC{DdE}F", - "zawiercie|zawiercie borowe pole": "}aasHyvpuBiBJs@BkADoAHk@BaOp@gBF_DNg@BuI`@kEPm@DmCLO?sJb@c@Bg@Da@BgBPc@Bc@Bk@Dm@BcABuBH_@@]@gBT}CJyBHs@Bo@BcBFm@Dc@DG@e@Fe@JUDQDe@N[J[J[POFMF_@RYRE@YRYT]X[XYX]^_@d@]`@e@p@a@n@i@x@q@fA{@bAi@x@EF_@l@i@x@i@t@u@bAaEvFkJnMgJjMY^wQxVcKlNSZk@t@gI~KY`@{JdN_AnAqAfB", - "wiesiółka|łazy łc": "crurHq|auBIu@Gw@Gi@Eq@AICa@Em@Aa@Es@IeBAMEeAIyAGyAAOE}@SyE_AwS_@oIEgAq@cOGkAOeG", - "chruszczobród|wiesiółka": "otrrHea~tBoCuC_DaDwE_FwC{CoJyJ}TsUMOk@m@sFwFu@y@e@e@m@o@q@u@c@g@o@w@a@g@g@s@e@q@e@s@c@u@c@w@]s@a@y@_@y@]w@[y@[}@]_AY_AW_AYaAUaAWgAOu@Mq@Oq@Mw@Ik@G_@Ga@McAKo@AMCUEa@", - "chruszczobród|dąbrowa górnicza sikorka": "otrrHea~tBIR~@x@\\\\h@d@d@f@n@l@z@|@pEvEpL|Lf@h@j@n@j@p@d@j@b@l@d@r@`@l@f@z@JPT^b@|@\\t@b@~@\\z@^bA\\~@Z`AVx@ZjAV`AVhAT`AThAPbATpANfAPpALfALpAH`AHx@@TJlAHpAbC|_@@LLjBzA`VF`AFv@FbAJzBD~@ZpGFbAFdAPjC", - "dąbrowa górnicza sikorka|dąbrowa górnicza ząbkowice": "grprHgjxtBFdAFdAHdAHbADr@Dd@Dd@JlAVvCFv@Hz@Dh@Bb@Db@LvBNvBHrAHtAJvAJtANrBJbBN|ALrARfBHv@@HJz@Fb@DZJv@Lz@N`ATtAJj@Nt@VvAZxAZxA\\tAVbA\\rARn@Nj@Rp@Tt@^hA`@lA`@fAd@lAf@jAd@dAd@dAf@bAl@hAf@|@j@~@j@|@h@v@t@`Ap@|@l@x@t@z@t@x@p@t@r@r@t@r@r@n@j@f@d@^f@`@f@^h@b@tMrJtAv@fAx@rCtB^V^VdBfAlBnADB`@TVPVPr@f@r@f@bS|NjGrE~AhAjDhCn@d@BBRN`D~BjEbDnA~@RNTPJJDBPNTRnAlAd@b@RTf@d@`B~AnAlAb@b@@@", - "dąbrowa górnicza pogoria|dąbrowa górnicza ząbkowice": "_`irH_{ltByCwIaC_HcKaZyJgYY{@[y@[y@Yw@Yo@Wo@]w@]w@[m@[m@Yk@[i@]m@_@k@a@q@a@i@a@k@a@k@KMOSUYW[UYUWwAcBsB}BY]YYoB{Ba@c@KKWWeAgA[YSSe@c@YYm@k@]]_@_@a@_@_@_@", - "dąbrowa górnicza gołonóg|dąbrowa górnicza pogoria": "_xgrHwajtBmBsF{AmE}ByGcCiHs@oBqDoKIQgLs\\a@kAg@{Ak@}Ae@uA", - "łódź dąbrowa|łódź zarzew": "ktwzHusavBiCc@i@KwAUqDs@qCo@QEiBa@_AS_BUgAO_@Es@G_COyBMwAKcEWaO{@oAImHe@sAIaAGo@CwBOkAIkCOeDS", - "kraków płaszów|kraków zabłocie": "e~kpH_s{xBW`@kBnCkC|DILMRSXSXQRORUXGHIF]`@g@h@c@b@c@f@_@`@a@d@]d@_@f@_@h@k@z@]d@IN}BfDADW^y@lA[d@EF[d@}A~Bm@|@gBlCkBpC]Xk@z@gOrSb@|@", - "gajewniki|zduńska wola karsznice": "_r_zHotzrBHJBpABbADdAFbAHdANlANhARfAThAZnALd@Pf@\\`A`@`AfAjBp@jA`@\\`@b@dA~@f@\\h@Zf@Tf@R~@V\\H^BZF^@`ABhAIfAOhC[pAIhB@|AHdBNdLz@pA@nAEhBYjBi@|@a@lAu@dAu@bAaAhAqAt@gAbAkBdA{B~@{BpAgDbHcRjI}T`AiCr@iBXq@Zs@f@gAf@cA`@u@`@s@d@w@n@eAt@mAx@oAl@}@xBuCzByCTL|EqG", - "glinnik|zgierz": "oau{H}r~uB|@tHTdBT~AJl@Hd@Jh@H`@T`APp@HXb@tAt@nB|A~Dn@`BDLb@tA\\jAHVNp@Pv@Nx@Jp@Lp@TfBj@vEThBThB\\tC\\pCRzANnARtAF\\FZLt@XnALj@Ld@Lf@Pj@ZdAbBrF`BnFX~@V`ADP@DFVNn@Nn@Lp@RjAPfAJj@Hj@TtA\\vBFZFZNz@Nn@Ll@Nj@Nh@Pl@Rj@Pf@Tj@\\x@\\t@LVNVZh@l@`Ap@|@f@l@h@j@`@^`@\\`@Zb@X\\RZPPHNH`@PlA`@n@Ln@J|@JP@P@b@@N?P@F?XAJ?HCP?f@E`@E^I^I`@I~E}A\\KZIXGXGLALCZEFAL?VCh@Cb@?X?j@@h@DVBVDn@Jh@Jh@PVHVHj@VTLVLj@\\v@j@t@p@j@j@j@n@RVPTd@p@l@bAj@dAP`@R`@Tj@LXRj@Rh@h@vAf@tAf@tAn@hBXt@Tt@Tx@Tx@Nl@Pz@P`ATtAJn@Fl@Hv@Hx@Fx@Fx@D|@B|@Bt@@v@@`A@`A?NBpBD~FLrN@zB@d@@vABzBB|BBxADzADzAFzADnAFpA@b@Dh@FnAFv@Dt@Dv@D\\Dn@BZDr@NdBH`AHbAFdAJbAH`AJbAJ|@L`AF`@F^N|@F^H`@H^H`@Ld@Jd@J`@Ld@JZJ\\J\\J\\N`@N`@P`@P`@N^R`@LVBHR^LTNTZh@^j@\\f@NRNP`@f@b@b@d@d@xBrBtI~HfGvFj@f@vArAxApA`@Z`@\\`@\\`@Zd@b@LJXVn@l@|@v@r@n@XVx@v@|@z@FD~DrDJHzBpBxBlBtAjAjS`RxClClC`Cd@d@", - "glinnik|stryków": "oau{H}r~uBKcA[eCm@iF{AgMwAuLCMoBwPqBwP[kCWuBUqBWmBQeAQeAWqA[qAm@wBI[g@uAi@sASe@EIYm@g@y@g@w@g@q@i@q@]a@_@_@o@i@i@a@k@a@cAi@]O_@Qi@Qm@OWGYGs@KoAK_FQaBGgAM}@O{Ac@aAc@y@c@y@g@u@m@kAgA}BgC}AaBqF_GuB{Bi@m@g@q@a@m@_@m@c@w@Ym@Ym@Yq@Wo@Ws@Us@Su@Sw@Sw@Q{@Oy@My@M{@K}@K{@G}@I}@E}@Eu@Cw@CgAAeA?cA@aA@gABeAHwB@WD_BHwBD{@By@DsABsA@_A@aA?}@A_AC_AA_@Aa@E_AG}@C_@C_@I}@K}@K}@M{@Mw@Q{@Ow@Sy@Sw@IYKYI[KYUm@Sk@Si@Ug@_@w@_@u@_@s@a@o@c@m@o@u@_DqCu@o@SOUUkAeA][[][]Ya@a@g@_@k@_@o@_@u@Yk@Yq@Yq@Wq@Us@Su@Uy@S{@Qu@Ou@M}@G_@G_@K{@E]C]Ec@Ea@IcACe@Cc@EeACmA?e@Ai@?oA@qABsABqA`@_P`Ag`@?KnBow@@Mt@wZv@e[DiBDgBFeCF_C@eC?iA?qAAqACoACoAGwAAMASAc@GcAMiBKmBMkBqA{RSeCKiBMiB_AeN", - "głowno|stryków": "qjc|HkbgwB~@R^H^JPFD@d@Rf@Vb@Xf@^d@b@HHTT\\d@h@t@h@v@bCpEt@hBj@|ADJ^tAf@zBd@hCL|@L~@T~BLxBNnC\\lGZlGx@tOxAfZl@rLRpDHrAJpAZ~C`@zCPhAHh@Hb@P`ARbALh@Jf@Lh@Lf@XdAXbA\\dA\\dA\\bA^~@`@`A`@|@b@z@b@x@d@x@b@t@Xb@X^f@x@h@t@DFrMvQ~FhI`GfIvCbEtF|HV\\Z`@n@`Af@t@b@t@d@v@PZPZHNHRNX`@|@`@~@^~@^`AZ`AL`@L`@ZdAXdAXfANn@Nn@`@~A`A|D`A~D`@bBNj@Np@Rx@Rx@Rx@VdA~BtJtEjRjNrk@j@|B^zA\\|AVdARdAP|@BLPhAPfANjANlALjALlAJlAHnAHnAJxBNpFJtCJzBPxBJz@Hz@Lz@Nz@Nz@Px@Pv@Rv@Tx@Tt@Tp@Vp@Xr@Zp@Zh@Vh@x@rA`AnAv@z@FH`@^b@^dAv@hAl@^R`@PpUfJJD|CnAn@Zn@Zn@\\l@^j@`@l@d@tAjAx@x@d@f@VZLLb@j@d@l@jAbBjAbB`BbCr@`Ar@bAvB~CtE|GjBlCjBlCvGrJvB`D|CpE^l@\\n@Zj@Xn@Xp@Vp@Vr@Tp@Tv@Pt@Rv@Px@Nz@Nx@D^F\\D\\D\\Fl@Fl@Fp@JlANvBBj@LhBB`@~Bx]tBv[", - "domaniewice|głowno": "ygo|Hih~wBhNhk@|BjJ~@vDbAdEnAbFrCjLbB~G`B|Gl@bCb@nBPt@Lt@H\\DZLx@Jv@Jx@@HFp@F~@F~@Dz@H~BFrCDpCHxBLzBL|AP~ARtARrAPx@Pv@Pv@Rp@\\jAN`@Nd@f@pA~@|B`C`GtDdJn@~A`@bAtAdDx]x{@L\\|AvDt@jBt@hBl@pAl@pAh@jAl@jAr@rAr@nAtA~BzFtJ|BzD`CzDxEbI|]tl@rIvN~CjFxFrJvBnDbC`Eh@~@l@fA`@v@`@z@d@dA`@bAn@bBb@rAZ`AXbAJ^J^H^J`@T`ARbAR~@N~@VvAHd@`@|B^~B`@zB^|B`A~FvD|TzA~IzA~IzBzMx@`FzA~I|AfJF^bBxJp@bEX|AX|AZ~A\\|A\\|A\\|ARt@Lf@\\tAh@nBVx@V|@Vx@Pj@FNd@xAj@|Ah@zAn@~Ad@jAd@fAh@nAj@lA|B|E`CdFLVLVZp@v@`BnBhE~EhKjCvFZp@bAnBn@jAdA~AbAlAdAbAfAz@r@d@x@b@bA`@dAZpAZNBnBd@lBd@hSrEzBf@pKdC|FrAhBb@", - "domaniewice|łowicz przedmieście": "ygo|Hih~wBkDoNcDwMu@yCgRiv@qAoFwDkOy@eDmB}HoBaI}E_S{Jaa@{@mDK_@Mi@WeA[yAOw@Mu@OcAMcAKeAIeAGgAGaACaAA}@AgA?eA?s@ByC?o@BaC?_A?}@?m@?k@Am@Ai@Cq@Ak@Eo@Cm@I_AG}@K}@Ky@M_AQ_AUmAUiAs@{CAIaDqN_@}AcEyQcEwQeD{N_@{Ay@wDe@sBq@uCWkAWiAQu@Qs@a@iBcAsEkCgLiCgLcAsEcAqEwCoMkCeLOq@Qm@e@{A]iA_@eAaAeCgAaCu@uAqA{BiBiCyBgCiAgAeB{AaIeHiAaA}SaRmHsGiOwMgIiHqUoSgJeI}CoCkE{DsB}AUQi@_@i@]sA}@aBaAwAu@aBw@mBw@_Bm@sBo@uBo@uDgAkDeAaBe@SGsDgAoCy@mJqCgHuBqEsAeC{@aBo@oAm@y@a@yAu@y@e@IGaBcAm@c@i@_@iA{@gA{@sDaDoBaBgGkF{DeDcDsCsBgBoAqAMMUY_@g@[e@U_@GGYi@OYEIUc@k@qAe@oAYy@y@}COq@Ou@Ic@SgAw@_GiF_`@iCoRyA}KCQoAiJ", - "bełchów|mokra": "auo|HeghyBNIJIXQXQ`BcA~AeArAy@NKRMFE|AaAh@]FEVQVOp@c@VQRKDCNKlAw@dFaDpAy@tFoDhIiFhIgFfIiFPKd@[d@[f@[h@_@d@]b@]^YTQTQLKVUb@_@f@a@d@c@f@c@f@e@^_@VWTW^_@\\_@d@g@b@g@b@e@`@e@`@e@`@i@TYf@q@f@o@^g@^i@f@s@^i@^m@`@m@`@o@`@q@Zk@b@s@\\m@Zm@\\o@^o@HORc@Xk@Xk@`@{@Xm@Xo@Xk@\\{@HQN_@dB}DrB}EN]`B}D@AbC{FfBgE`CsFx@oBVm@|BmFVo@dB_Ebd@yeA~@wBxa@kaAxh@mnAb@eAlBsEDI", - "koluszki|słotwiny": "{ryzHe_~wB\\P\\PZNZNPHVJr@Zr@Xh@R~An@VJ`A`@zGlCXJXJf@Pf@Nd@Lv@Tl@Nh@Nd@LhAZ`@JFBLDVHVHTCLDLDLDLBp@NrAXTDLDB?JBL@J@N@H?F@P?J?L?NAL?NANATCVCJCPCNENCNELGLELGLGNGZSNKLKLKNMLMLO^a@f@i@lBuBX[LMX]TWRWTYLQLSNSFKDGLUJSTa@b@{@dFqKx@eB~@mBjLqVzA_DLWN]pBgEFMzByE|B{EdBoDz@kB", - "bełchów|płyćwia": "auo|HeghyBNIJIXQXQ`BcA~AeArAy@NKRMFE|AaAh@]FEVQVOp@c@VQRKDCNKlAw@dFaDpAy@tFoDhIiFhIgFfIiFPKd@[d@[f@[h@_@d@]b@]^YTQTQLKVUb@_@f@a@d@c@f@c@f@e@^_@VWTW^_@\\_@d@g@b@g@b@e@`@e@`@e@`@i@TYf@q@f@o@^g@^i@f@s@^i@^m@`@m@`@o@`@q@Zk@b@s@\\m@Zm@\\o@^o@HORc@Xk@Xk@`@{@Xm@Xo@Xk@\\{@HQN_@dB}DrB}EN]`B}D@AbC{FfBgE`CsFx@oBVm@|BmFVo@dB_Ebd@yeA~@wBxa@kaAxh@mnAb@eAlBsEDIlAsCd@iAlDiIrB}EnDmIxIqSpEmK|R_e@xCqGJS~AwDDMb@cA~AsDFOFMHQJQHSv@yABCR_@@CHOHOJSJUHQ`A{BPe@Pc@Pe@Na@Na@HWHWNi@Ni@Ni@n@}BnAyELe@Je@Lg@Je@Jg@Ji@ZeBF]H]F]FWHYFWHWHUHWJUHUJULSJSLSLQJQLQt@_APSNSPQRSRSROJIHITORMRMTMRKRKRGRIRGRGRETERERCRCTARATAN?B?T?R@R@T@VBTBVBP@JB\\DVFD?ZHZH\\HTFt@TPFPDPDNDp@Nb@Jb@L^JB@p@PJBJDJBPBNDn@JPBNDLBJBHB~Ad@dAZrF~A~GpBpn@tQp@Rp@R^L^L^L^L\\L\\N\\L\\PZNNHLF@@ZPTNFBZR\\TZTZTZVRPFDZXZXRTDBXZZZDDRTX\\V\\X\\V\\V^@BTZV`@T^FJNTHPJPR\\@BTb@Tb@Rd@Td@Rd@Rd@Rd@Nb@N`@@@Nb@JZBHNd@Nd@Nd@Ld@Nd@Nj@Nj@Nj@v@vCrMxg@VhAXfANl@Nn@H`@BLLj@DTFVJl@Jl@Jl@Jl@Jn@Jl@Hn@Hn@Hl@Fp@Hp@Fn@Fp@Fn@Dl@Dn@Dl@Dn@Dp@@V@\\Bj@Bl@Bx@Bx@@L?N?J@t@@r@@t@?t@@r@?b@?NAt@?t@AT?\\At@Ct@?JAd@?@Ct@Cr@Cr@Et@Er@Er@Et@Gt@Gt@Ej@Ef@MrAObBuF~m@MtAu@nI{ArPEf@{AvPgAtLGl@qCb[yA`PuB~UMtAgAzLMrAsBhUWpCw@xIKhAE`@Gn@[fD[nD[lD[jDy@dJ_CrWw@tIq@vHCT[lDMnAsBpUKdAKxBMrAMtAGr@Er@Gp@Et@Gp@Er@Cp@En@AXAVAp@Cp@Ap@Ap@Ap@Ar@?p@?p@?p@?p@@p@@r@@p@@p@Bp@@b@Bb@Bd@?N@VDp@Dn@Dp@Fn@Dp@@LD`@Fp@Hn@Fn@Hh@Fh@@LFZHj@Hh@Hj@Jh@Jj@FX@JLl@Lj@Lj@Nl@Lh@DL@HFRNj@HXFNNh@Ph@Nb@JZFPPf@Rf@Pf@Rd@DHLZRd@Tb@Td@HNHRXf@HNNVNXRZXb@V`@V^V^X\\V\\X\\XZXZXXXZXXXVZVZVXVZTZR\\TZR^TXNVN^P^P\\Nn@Xn@Xl@TnAf@xIlD|D~Ap@b@b]bNjKdE`@N`@P`@P^N^P\\P\\PZPXNVP\\TZRZTXVVR\\XZVXXXXVXXZXZVZX\\V\\V\\T\\V\\Vb@RZR\\JRNVb@v@b@z@h@bALVVThAxBTb@|@dB`E`ItAnCf@`Af@`ATb@|A|C|@fB@@FLrB`E", - "bełchów|łowicz główny": "auo|HeghyB}CnBc@X]Tm@^]RA?[RaAh@a@T_@TULi@Zk@\\_@T_@VA?IFyCjB_@Va@V_@Tc@Z[RGDQLWPWP_Ap@c@Xa@Vc@X_@Va@VQLqEtCoBnAEBe@Xi@^gAp@u@d@{BvAyExCUNo@`@i@\\EBIFc@XwD~B}AbAsD|BiAt@kAt@gIfFiIhFiIhFgIhFiHpE_@VuAz@kA`AsAz@s@b@qBpAoAv@sAz@oAx@iIhFeh@d\\aHlEEBuEvCob@dXg]lTyA~@C@m@`@s@d@_@Va@Xa@Xa@XCB]Xa@ZWRKHa@\\a@\\a@\\k@f@WV_@\\YVEFc@`@[\\_@^a@`@]^_@b@_@b@_@b@]`@a@f@_@b@_@f@]b@Y`@Y^]d@[d@U\\W^g@v@g@t@iTf]cA~AiIrMk@|@eC|Dw@nAoCzDsD~F{CzEyPfXqAtBsAvB{@rAYb@g@z@i@x@e@x@{BtDu@lAMRQZMPGLYd@Yf@w@tAGLA@oAxBg@|@Yf@CB]j@[f@[f@}BtD[f@SZKR_@n@y@rAUb@iAnB_BnCe@x@g@v@c@t@c@p@Yf@oU|^c@r@c@r@a@n@_@n@]l@]j@MRWb@[f@a@r@c@p@mB~@k@~@g@t@e@t@U^}@vAcA~AcA~A}@xA", - "józefinów|warszawa główna towarowa": "aro}Hs{g~Bc@UQk@Qi@Oc@EKKUWm@O]_@s@a@q@IM]g@]a@Y]UUGG[Y[W]W_@U[Qa@SWKEA]Mc@M_@GOCMCCAa@E]A_@A]?_@?_@B[B[F]D]H[JQFC@[JWL[NYPWNGDeErCiBlAcBjAaAn@a@Xa@V_AXs@Zs@X_Cz@oC`AkBp@OFk@RgBn@_A\\aCx@q@Ra@Lc@Jm@Lo@Hg@Dk@Di@@g@?g@?[CUAg@Ei@Ek@Ka@IICg@Mk@Qi@Sg@Si@Yg@Yg@[_@WKI]We@c@c@a@c@c@KMW[a@g@OQQYa@m@_@m@_@o@Uc@GM]s@[s@Wq@Yu@AEY{@Uu@Uy@Su@EQKc@Ke@G[G[Ic@GWEYCOKu@G_@Iq@EWIo@KeA_@cDW}BAKGi@Ee@Ee@Ee@Ca@Cc@G}@_@gGcAwPUoDyB{^a@cH_@iGEq@w@oMMwBG_As@kL", - "dłubnia|raciborowice": "gsxpHwlfyBg@r@y@jAUXOTSTKJ[^i@l@SVWXUVQVUZSZS^e@z@{@`BUb@S\\U\\QTUZUTURUPYRWNSHe@Pe@Li@FS@U@a@?]Ca@EQCOEc@M[OUKa@UYSa@c@SSY_@Yc@S_@Sc@Sg@Uo@So@[eAQk@[gAi@kB]_Ai@cCDEw@sC", - "marków|szeligi": "a_e|Hmtb|Bq@nHEVCTaBzK_ApGcHfe@m@bEUdBQzAKdAKtAK~AGvAEbBCrAAxA?`B@pABrADtAFpAFhAJnAJhALjANnAPhALv@F\\Jj@DTDTNn@Rz@XdAV~@X|@Xv@Vr@Zv@Xn@^x@Vf@^r@b@r@\\h@^h@d@j@V\\f@j@d@d@f@d@b@`@`@X\\VdBhAfBjAxDdClQfLVPVNVPXNLJNHJFLF\\P\\PNFFBRJZLZJRHnAf@ZLXLZLXNnAl@XNZNt@XbDnAz@\\fHnCd@P`C~@pHtCb`At^", - "przemiarki|łazy łc": "o~orHok`uBuChBcJbHq@f@iBpAsPrLq@b@m@^u@b@u@^c@Rw@\\i@Ru@Vu@Rs@Rw@Pc@Hi@H_@Fu@Hu@F_@BW@s@B{@?w@?C?q@Aw@Ew@Gc@ESCy@Ku@Mu@Ou@Sw@Ss@Wo@Ui@Uk@Wi@Wm@[u@c@m@a@u@g@o@g@m@e@uK}Ik@c@i@a@m@a@m@_@m@[m@[m@Wa@QOGq@Um@Qs@Qo@Ms@Mo@K}B[m@Ii@Km@Ok@Ok@Qi@Si@Si@Wi@Yi@[e@[i@a@c@]_@[IIe@e@e@e@e@i@UWKO_@g@a@k@a@o@Ye@EG_@s@]s@_@w@Qa@IQ[y@Yw@Um@Qm@Qm@Ma@Oi@Mi@Qu@Oq@Mq@Km@Ig@Ga@Mw@K{@Ge@CUKy@W}BUqBIy@Gy@I{@GgAGiAK_C]cII_Bg@qHYaGEmAEw@eBo`@Es@", - "dąbrowa górnicza towarowa dta r5|przemiarki": "i{drHwxguBiCzKkA`Fq@pCq@`Cu@zBw@jBm@rA}@`Bi@z@i@t@s@~@gAlAo@n@i@b@gAv@i@\\y@d@e@T]Nm@Ts@TkAXoATi@FoAH{@@o@?qp@sB_ACqp@sBwIKaZaAuBG}@Aw@?_BB{AFiBNyBXyAX{@P_Cp@A@uAf@cA`@iBz@{@d@w@d@iBlAw@j@{@r@{@t@i@f@a@`@aA`A}AhBm@v@q@|@gA|A}@vA_A`Ba@r@aAdB}DnH{Wpf@_CjEeCrEwB`EwAhCiYxh@i@`Ag@|@EHk@|@w@jA[d@[`@c@j@i@p@{@bAs@v@_@^SR}@z@m@h@k@f@w@l@yC|B", - "dąbrowa górnicza towarowa|dąbrowa górnicza towarowa dta r5": "a}drHsrguBv@cE", - "rokiciny|słotwiny": "_rjzH}pvwBaC_Ag_@aOwP{GqAg@uAk@mEgBeG_CkAg@oAe@{CmA{H}CeMaFmDwA{D{Aki@gTeBs@sAi@GCsn@sVac@}PqP{G{CkA_A_@eLsEq@Ww_@kOaJqDOGmBu@e@Qg@Ui@So@Yo@Wg@Ss@YiEcB[OMEKGMGMIw@g@QKYOKIe@Y[UUQUQQQa@c@MOMQSYMUOUMWOYKWMWM[IWKWEOCIK[I]AEGUI]G]G[G]G_@E[Ea@AMCSEm@Eo@Cc@Cc@IsA]yGSkEy@wOCu@E}@Cm@Ac@Ae@Ak@?e@Ae@@g@?g@@e@@e@@g@Bg@@e@@MBYBg@De@De@De@Fe@De@BQDSFc@Hc@?AHa@Fa@Jc@Je@Ja@Ja@La@DOJ_@BKtD_MJ_@J]J[L[J[JWL[P_@\\iAdBoDz@kB", - "dorota|dąbrowa górnicza wschodnia": "gz{qHstttBaIoFq@e@oFqDuA}@yA{@c@WmAi@eBs@aA_@gA[qBg@mB_@_UgDCAe`@aG}AU}AYkA[iAe@iAo@cAs@OMo@k@y@}@]c@GGQW]g@[e@Wi@Wc@Wm@Wk@Wo@Uo@Ww@GWIYSw@Os@Qw@Mu@My@M{@K}@Gw@G{@G{@E{@C{@A_AA}@?k@?i@@qABwFJqM", - "sosnowiec dańdówka|stawiska": "coxqHo_`tBFdFDrCPhLHxFFpDLxHRnADtCJpHDbBHlFP`MJnHLvH?t@?x@AbAC|@Cx@G`AEx@Ix@Gr@Kv@EZKr@UxAsAlIQnAKv@Gf@KpAGt@EbAE~@At@C~@?L?r@BvBBdABv@F|@H~@Ht@Hr@Jv@Jj@Ln@Lj@Nl@Tv@Vt@TfA^dAtF~Op@jBb@`B^bBd@tCNfArDnXJn@tBnOPtA`Ifl@ZhBb@dBf@`Bj@zAp@tAv@pAx@dA|@bA~@t@zElDfHhFTPZTZVXVTTTVTVT\\T^P\\N\\N`@Nb@Nf@Jd@Jd@Hd@Hj@Df@Fl@Bj@Bf@@^@b@?r@@x@RpV@~ABz@Dx@Dx@Fx@RnBJt@Lt@Lt@Pr@Pr@Pn@HTHTRd@L\\Td@b@~@", - "katowice janów|stawiska": "w_sqH{mmsBoMcX}Om\\OYgN{ZWi@_FaKg@gAk@oA{Uai@g@iAa@y@g@iAc@aAcBmD", - "katowice janów|katowice much. kmb": "w_sqH{mmsBr@zAtArCf@fARd@Tf@\\x@^~@rHfS|@fCx@lCj@~Bh@jCbFnYRnAp@~D^vBdDlPHb@`@jCNfANnAHxABp@Bp@?x@?x@G~Be@vJ[~FwDdq@Q~C[tEK`CGnB@fB@rBJvFF~AFnAFn@N|AfIxs@^fDj@nGZrCxDx\\^fD\\hDB`@tIf_AVlCT~ATvA", - "katowice much. kmb|staszic": "szpqHw{_sBHl@Ff@NzAR|BNlAL|@N~@Pz@Pt@ZjAf@vAd@lAn@zAvHdRbAdC^z@`@x@d@v@b@f@b@d@vA|@fBh@d@Ff@@h@Ad@Ef@KhA]v@e@~@y@t@_Ad@q@d@w@d@w@", - "gałkówek|łódź olechów łoc": "cqvzHqbnwBBhAl@rT`@xNNdGBxABlABxA@pAJh_@@dC?zAD|JBdK?|ABtIBlHFdRf@ljB@fDAbDE|CGtCMrCQxCUjCWjC]jCa@rCyAnJAB?DCJmAzHkA~HQnAQhAOjAKdAMjAKhAIfAKlAGjAGjAEhAElAClAAhAApAApA?tA?jA@rDJv`@@nD@tD@pD@tDJb`@@tDD|N@jD@hEDvODjM@tE@lATrBBfN@n@?n@?VAz@?v@ExBAl@Cz@Cl@EbAC`AGpAAPMbCQtDkEx}@yAvZE~@I`BAJAVAVCp@IbBGfBC`ACz@A~@Ax@?vAAxA?^?rB?zA?t@?~CAnF?zB?V?h@?z@?z@@`A@`A@`A@x@B~@B~@Bx@B~@D`ABz@D|@D|@D|@FdAFdAD~@HnAJnADn@Dl@Fj@Dl@Hj@Fl@Hj@Hj@DVDTHh@Jj@Lh@Jh@Lh@Nl@~CfMRx@Rx@Nj@Ll@Hb@Jd@H`@H`@Hb@Hh@NfAJj@l@rE", - "dionizów|gajewniki": "kxazHmnvrB`@ITIRIb@QPKp@_@f@YZSZUZYXWTWZa@Xa@R]T_@Tg@Pc@Re@Tu@Vw@l@qB`Kc]X_AX}@\\}@N[L[Xi@NUJQ\\g@\\e@`@c@NONOt@k@v@k@v@g@pBoAdFaDnA{@nAmAV[V[j@}@Ra@Rc@b@eANa@J]Lc@Lc@Ha@H]Hc@Fa@Lw@D]B]DY@YFu@Bg@@g@@u@?s@?y@EkD?_@?[?]@u@?[?Y?c@As@?_E", - "kraków olsza|kraków przedmieście": "kgtpHgfxxBs@`JO|BEn@Iv@Kx@Mj@IXK\\KZM\\OZQZSXQTUVSPSNWNWLUHWFUD[BU@Q?QAKAWCUG[I]OWMmAs@s@a@[O[O[OiBs@OGQIOI]U", - "sosnowiec główny|sosnowiec południowy": "uozqHgqusBbBzHTd@n@bBnA~Ch@vA~@vB~@dBp@dAj@p@h@h@VQIOYk@KSIWKYGQQq@Kk@Ko@QyAGo@Eq@Ck@Ao@?_@?_@@M@s@Ds@B[BY@K@KFYFa@F[H[HYN_@L[N[", - "sosnowiec dańdówka|sosnowiec maczki": "coxqHo_`tBCgAC}AAkDAwAA}Ag@s]EiDAkACgCAuBAsAImEIaFC_C?CAaBB}AB}AHqBNgCd@}GTgCN}ALgBFiAFuAB_ABkA?}@?{AAkAEcBIeBGaAKoAKeAE_@Ge@Ik@O_AMw@Oy@Mm@U_Am@_C[oA}WyeAMg@q@kCCKo@cC]sAUu@Uo@Uo@Wk@Yq@[k@Ye@Ua@QWOS[a@SWOQOQSSKKGGYWWS_@[e@[eAm@{@c@_Aa@qJgEi@Wc@Sc@Ua@Ya@Y_@Yc@_@KKo@q@_@c@]c@AAYc@]g@[i@o@cAo@iAEIGG_EcH[k@KUYo@KUOWsC}EkGqKeAkB[i@Uc@O]O[Qa@IWCIMa@I]Ie@Ic@Ge@Ge@Ec@Cg@Ag@Ag@?g@?g@@c@Bi@Ba@Dk@Fe@Fc@He@Je@Lc@J[HUJYL[P]Ta@LSNUFGT[X_@nAcBl@_Ah@u@~GeKle@es@jA_Bv@aAZa@dBwB|TqXrAcBbAuALQfBcCd@y@b@_A^aA\\gAZeATkARmAJw@DWLuAHsADmABqABaEJ_NBgBBgBFcBLcBP_BT_BZaB\\sA^kABKTm@L[d@eAl@kAXa@Zc@l@u@n@k@t@g@z@e@f@Ux@_@r@[ZOXO\\Sb@W|DcCvFiD\\Wb@YZUXW\\]Z[X]X_@Ze@f@y@j@kAx@cB", - "borowa górka|bukowno": "}rtqHkg~tBOi@u@gJU{Cq@wHOmBKsAKmAIqAIqAOwC?E_@qJS}DW{D[yDgGmu@AMqF_q@mDub@_LcuAaLcuAaLcuAaLcuA}JanAWeCSwAIc@a@}Bg@uBk@sBw@{Be@qA[{@aB}Ek@cBUs@Ss@Sw@Qs@Ow@Ou@O}@Kw@M{@Iw@Iw@G}@Gw@E}@EeAAg@I[[eKQkGQuGC_AAs@AOAw@?aA@}@@}@BcABaADgAD}@VmE`@}H", - "dłubnia|kraków batowice": "gsxpHwlfyBg@r@y@jAgBhC_ApAe@t@e@v@[f@IN_@t@_@t@c@|@_@|@]|@]`AAFWt@Sj@GTYbA[jASz@WnAS`AQbASjAMdASzAGn@Gl@MvAEd@Gp@IzACn@Ch@ErAA^Ct@C|BEzCExC?BC`CItFGjDEdDGhDGjECjBE`CCdBCdBC|ACfBA`BAx@ExDClBCvAAdAApAUXOxMCvC?hA?hA@`BBlABvAFvAHvALdBHdAJdATnB`@tCb@~BTjAr@vCbAzDlC`K", - "koniecpol|starzyny": "mq|tH{xhwBUeGIwAK{AIcAKeAKcAMeAOaAOeAOy@UiAS_AU}@]qAe@cBi@iBaG}S]mA[kAYgAW_AS{@Q{@ScAO}@QaAMaAMgAKcAIcAIaAGgAEcAEkAAaACkA?cA?iA@y@@}@Bs@Bw@DkADy@Fy@HaA@GJaAJcAL}@L{@PgAPaAR_AVgAZkAZeAZcAZ}@Zw@Xq@Zo@Tg@Tc@Zg@Zk@T]T]`@i@b@k@`@g@b@e@h@g@d@c@f@a@h@_@j@_@d@Yl@[r@_@vC{A|C{ArV{LjN_HxLcG`LwFze@uUbLuFlAq@tAu@`BaAbBkAvAmAzAwApAwAvAiBlAoBtAyB|E{JvTid@zMiXf@_AfAwBxAgCjAmBbBaC`_@ki@Xa@fi@mv@vIcMtV}]nAcBbAuAtAuA~@}@HGbBsAbBgA~A_AnB_Afg@kTxAq@~LmF~CgAPG", - "katowice muchowiec staszic|staszic": "atpqHkbfsB`BxIR~@R~@l@xBh@rBT|@Rt@VvAf@nCZbBP`ATzAR`Bj@tEl@~E\\dDb@tDRlAJn@n@hDz@xEjB~J^nBP|@h@vEVvAVxAp@rD`BzIXrA`@~Av@dDtBtIxD|OtAzFnAhFXnAP|@PjAJz@LfAFdAHxABjA@dBAnACz@Ev@A`@InAMlAU|AUvAUdAc@`BIZqB`Iu@pCOf@Qf@{@lBI\\", - "dąbrowa górnicza wschodnia|kozioł": "k|_rHskxtBFcF@kB@aAp@el@^{ZF}GCaCXmUNgOr@{m@B{ADcBD{AFgBF}AHeBlEecAFyAH}AHsAJ{AJoANyALmANqAnHyl@LaAJaAJeAHcAFaAFeADgABaA@cA@gA?gA?cACeACcAEiAEeAGiAIeAKaAI{@OiAOeAOeAQ}@ScASy@U_AW{@Y_AUu@Wo@Yw@[u@_@y@AA{@gBcA_BcAwA}EoGiAuAiA{AaC}D_AuA_AwAu@{Au@iBm@kBk@qBg@_Ca@yBa@uCwGyc@g@eDIo@]{BUw@i@sD", - "dąbrowa górnicza towarowa|kozioł": "a}drHsrguBv@cEHa@tCyL^{ATaA`@qA^iA`@cAd@cAd@}@`@s@b@q@f@q@j@o@|@{@d@a@d@[~@m@x@a@b@Qx@WtA[nAMp@Cx@Av@D`@Bl@Hp@LjAZh@Pj@V`@R^Rf@ZR?DgBFwALcBR_BDYPeAp@yCj@eBPg@h@oAp@mAv@kAf@q@j@o@~@{@bAm@`Ag@fAa@p@Ot@KhAGlAAtHRtAFpALpATnAZFBdAb@jAn@jAv@fA`A`AhA~@jA|@xAt@zAr@`Bn@hBj@vB`@fB^rB|@`GJp@Hr@Jv@A~A", - "mysłowice|stawiska": "casqHcrysBsArAqAx@}DbCYPWRWRg@j@a@f@o@~@}BpDu@rAo@pAe@r@w@`BaBnDo@bBITi@vAa@~@a@~@c@z@g@`Ao@fAuAxB_@h@c@j@_BnByA~AmAdA_Ax@g@`@_@^Y\\KLa@h@w@vA_C~CoBhCoGnIcAzAwDxFwBbDmDnFy@~A_IhMaDnFQZk@bAYh@Yh@OXSb@Uj@Qd@Qd@Od@Mf@Oh@Kd@Mj@Kh@Ih@Ij@Ij@Eh@Gn@Eh@Cp@Cj@Al@?h@@j@Bt@Dz@RhC@RFh@Fj@Jh@Hf@Ld@Lf@N`@Nb@P`@P^T^R\\TZTVVVVTZTTNb@T\\PbAd@zAp@r@Z`@TZPVRVRVTTXTVTZR^Xf@h@fAzBvEhAdB", - "dąbrowa górnicza towarowa dta r5|kozioł": "i{drHwxguBHa@tCyL^{ATaA`@qA^iA`@cAd@cAd@}@`@s@b@q@f@q@j@o@|@{@d@a@d@[~@m@Zq@fB}@r@_@bAg@`FeCrBcArBcAvBcA`FcCnWmMjAc@nAYdAOvAKpA?pAHnAPlAZlAb@hAl@hAt@bA|@bAdA|@jA|@tAt@xAp@bBn@dBj@tB`@dBZhB@FnBtN", - "kutno|ostrowy": "}sw}HkuauB?BEPGPKf@Mb@CJOh@GRIVOh@GLGTOb@o@lBUr@GTELK\\K`@MFYJMj@YpAMn@Qx@Kd@Kf@Qr@GTw@|CGVw@`Dq@lCi@xBMf@U|@U~@GROn@Kb@K`@G^Op@Ot@Ml@Kn@Ib@CJWvAGb@CNuAbIsB|LO|@]vBEVm@lDcAbGCLe@nCiA`Ho@rD_@|B[jB[jBuD|Tg@tCa@bCa@`CCNc@jCe@rCkA~Gw@xEwE|XuBbMEVy@|ESnASjAWvAg@vCkAdHq@`E}B|MY`BWbBeNdy@k@lCG^WvAeAlGKp@YbBYbBETG\\Ot@Ov@Q~@I`@K^Ml@Mf@Of@Oh@Of@Of@Sl@Ob@Q`@IVQ`@MZOZ[t@_@p@]n@a@n@a@n@a@n@gClDiCjDqGzIiPvTOd@yNxR}b@|k@g\\fd@k\\`d@}AxByA~BuAdCoAjCkAnCgAxC{f@|vA}f@dwAyYfz@e@rA_@dAe@nAa@dAi@nAg@hA{JhT{AnCaAtByAvCoCzFw@bBsAvCOZiK|T[n@wAxCyClG[r@{B|E[r@y@hB", - "dionizów|zduńska wola": "kxazHmnvrB`@ITIRIvAg@^OXOXQTOTOTUTSVYV[T]Va@Ta@Vg@Rg@Tk@Pk@hA{DzJw\\ZaAZ_AL_@L[N[N[Zk@\\i@d@q@d@g@RQPQj@a@p@a@^Q^Od@Mb@I^G^C^A\\?X@X@\\D\\F^J^H\\N\\Nb@V`@Vf@`@XXVZTXTXXb@Vb@Vd@Th@Rf@Pf@J\\J\\Ld@Ld@Hh@Jj@Jl@Hn@Df@Df@Dh@Bh@Dn@BpABdBBpAFhFFdFBdBBnBJbI@x@Bh@FdA@\\LlCB\\?^FzDBhCTrQBvA?dABfDB|E@fABzCVjRFpFDhBDjBJrE@r@DhB@bAF|E@d@Hh@", - "dąbrowa górnicza huta katowice|dąbrowa górnicza strzemieszyce": "q_frHwvptBPf@jAY\\Gf@MXEXEVEXA\\C\\?^@`@Bb@DH@RD`@H^L^N\\L^TZR`@Z\\X~CnCtDfDdIjHzClCxClCLLf@b@h@b@b@\\XR?@JFd@Zb@Xf@Xd@Vd@Vd@R@?d@Rd@PJDHB\\L`@Lp@Pl@LD@j@Jn@JfBPlCHtABP?xDSnAWnAa@lAg@lAs@fAw@bAcAhAmA`AuAf@}@x@{Av@}AHOpBcEFMpJuR~@}BVs@L[HSHUFQHSDODIBIFONi@DS`@wANo@Pm@FWDUH_@H_@^qB`AcFP}@VsA~@yE", - "zduńska wola|zduńska wola karsznice": "qh_zH{rrrBAi@Ae@Ay@@_@?[@}@@c@?]AWIeHIiHAk@E}BE_DA_BCw@A_AC_ACyAA{Ac@i]GkFYiUGsE]wXGkFCeA?mC?cABeAD}ALmBFy@HaAZcCN{@Nw@XuANk@ZiAPg@f@yAbA}B`@s@p@iAt@cAf@m@n@o@z@w@x@g@z@i@`Ac@zAg@~@QrC_@nAEhB?zAHfBNdL|@rA@nAEfBUnBk@|@a@nAs@fA{@bAaAbAkA|@sAt@oAv@_B`A}Bv@qB`CsGhAyCt@qB~KiZ`AkC^_Ad@gA\\u@\\u@d@{@`@u@Ta@`@o@~AmCh@{@b@m@b@o@b@m@tFoHFK|EqG", - "idzikowice|radzice": "wa`yH{v~zBsFkKYk@kAeBcIoOoBsDuAiCgCgGmoAiaC}@eBsCuFs@yAkAaCcA_C}@wBaAmCw@uCq@oCq@cDe@iDQwAOuAIu@Gq@MgBGw@Eu@MkBEy@G_AO{Bq@_LkAiRe@mHc@mHGiAEgAG_BCyAAgA?cA?iA@eABgABcAFgAFeAFaAHgAJ_AJcA\\aCPeAPiAT_Bx@cFLu@" + "baby|moszczenica": "y`qyHm`jwBbyEpiB", + "baby|piotrków trybunalski": "y`qyHm`jwBh|EbkBtKzCh{Glk@xgGvj@^Dxa@vDL@xf@nE", + "baby|rokiciny": "y`qyHm`jwBykCedAqF_BwFo@wGJuHvAg_B|p@_I|B{Gb@iHe@mFuA}RuHOGsbBmo@sGiDqHoF}GuG_kE}vEsKiJoKqFqeC{`A", + "baby|wolbórka": "y`qyHm`jwBykCedAqF_BwFo@wGJuHvAg_B|p@_I|B{Gb@iHe@mFuA}RuHOGkNmF", + "baranówka|zastów": "}faqH{zsyBzXlAhVfDrFfBhFfEtBzCtBhEbsAh`D", + "baranówka|łuczyce": "}faqH{zsyBmYkAkEFcE`AyBdA_FvEwCbFaDtJkA~IgC`ZaAfGiA`EmSrd@uC|EsCjD", + "bednary|bełchów": "oz_}Hq~myBlFp[diA`oG~@xJ\\vI|A|cBt@~TvE~d@jAtGlAhDpBfDpBjBjCnAtC^xCSvCgA|BqB|FcIxm@_aApKiMlKkJb}G}iE", + "bednary|bobrowniki": "oz_}Hq~myBlFp[diA`oG~@xJ\\vI|A|cBd@`QdG~l@nBfHnCnEbEvC|Dp@|D_@rDmB~CuDvp@keAjGgIdGuGrMoKrtAy{@", + "bednary|warszawa gołąbki": "a{_}Hc~myBsf@ipCqkAsuEcG_PkkA_gCcGsJkGuGapA}_AeFwEwEyFyG{Ks{CsuFcHeKkGwFokAyz@kGwCy\\uKeFkCiWsUoEcF}EkIiEgL{Omj@oV{w@}AmHs@_HUgK\\oKne@cjHjMskGl@eRtrCwth@|@mQVoNyEykKIgMYgJkAaNcB_Ku_AcyDoA}Fy@mGc@iLEgz@HcHfBsc@AgIWgIqO_aCs@yGkG{`@yAqMo[czEq@eNO}ThBq}BtAcaAz@yjBrD}sEIkKa@iKiC{b@oDge@", + "bednary|łowicz główny": "a{_}Hc~myBzMlu@z}@pdFdC|Qt@vJZrJvBdrBj@nJhFzj@ZfHDhH_@pMqAvL_C~KcDbJ{ErImeAdcB", + "bednary|łowicz przedmieście": "oz_}Hq~myBlFp[diA`oG~@xJ\\vIdBfmBThIh@dHfEnb@jBfLlDjMlKrV|ApEhBtIv@tIPtIUbJ{@jIiBbIeDzHg^zp@_BtD_BzFuAbJe@~JFxJr@rI", + "bedoń|justynów": "{{vzHsk{vBl@wLFiK_AgyDTaK|@gNtCiS", + "bedoń|łódź andrzejów": "{{vzHsk{vBq@zGwAvIuXnmAoD~LcTtl@", + "bełchów|bobrowniki": "ejp|HowgyBgcEliC", + "bełchów|mokra": "ejp|HowgyBtcB{fAlNcMnFoG`GoIpFkJxFsL`yCkdH", + "bełchów|płyćwia": "ejp|HowgyB`eB}gAhGkFlGsG~FqHlFeIxEsIhEiJj|EkdLbGeMvA}DnDuMhCcMdAcDdEcGlEyC~EaA|Gb@rRxEniAl\\lHbDtGnFxCnD`DhFpCdGpBbGjTpz@dBpJjA`Kt@fNJvMUfLkAnQe{@vrJ[dPT|MlAxNzBvMfDfLdEfJ`FlHhG|FtH`EnfA|b@hDlB|DbDnD`EbDdFf]dq@", + "bełchów|sierakowice skierniewickie": "ejp|HowgyB~_BodAlGwEnG_GvKoMfJaO~FqL~T}h@", + "bełchów|skierniewice": "ejp|HowgyB|~AgcAvIuGhJaJxHwJjI{M~FwL~cF{rL~BkGtEeQzA_JbAgOL{N[eM}@aKyJug@", + "bełchów|łowicz główny": "ejp|HowgyBewGleEaH`FiFvE}GpHcGbIgl@p~@_h@dy@{d@bw@sq@lgA", + "bełchów|łowicz przedmieście": "ejp|HowgyByxGrfEwLtJ}LfNqxAl}Bib@js@eGxKgAtCo@tDOrDHdDl@`GxO|w@bC|Hl@`E", + "biała rawska|strzałki": "oec{H_bw{BnzAhEhPbBdVtEdN`EdaAl^tnD~sAvMdErNtCvNzA~`JfObRlBnIbBvdCni@", + "biała rawska|szeligi": "oec{H_bw{BaoGcRwPmB{pEgo@mSiBsPW}kGaByQe@cRwBsP{Dg}@w\\", + "borowa górka|bukowno": "estqHgg~tBoDse@mAyWq@mJqtAmsPuAaKuAgFwHoTeAyE}@aHa@_IeAcb@H_IdAkS", + "borszewice|gajewniki": "m`_zHmtdsBaRftFKfTt@`v@", + "borszewice|łask": "m`_zHmtdsBhc@koM", + "bratoszewice|głowno": "}f_|Hyl}vBoKac@sBmG}BkFqEmHgo@c}@mEgI}BkG{CwLuBuOuHuxAc@yFaAgGgAqEgBsEwE_IoDcDcGkB", + "bratoszewice|stryków": "}f_|Hyl}vBl^b{AjBtOfA|Wf@pFpAdHlBjGbDlG`CtCjCvBv`@lPxDzB|DjD`FnGhk@|y@|CbHpAvEv@nEv@tHvDvk@", + "brwinów|milanówek": "g~f}Hwvm}BpJpc@r|Ar{G", + "brwinów|parzniew": "g~f}Hwvm}BsGwW}VugAco@eqC_I}^", + "brynów|katowice": "qiuqH}c|rBm]ss@uDsKsCoMwFq`@eAaNMiE@}KbAs\\", + "bukowno przymiarki|sławków": "}kzqHg_nuBWzfAWbHo@`HoArHkB`Ha[`~@kCxEaCpCqDjC{DxAsGb@kSmA{CXuDhAuJfH}KbP", + "bukowno|bukowno przymiarki": "sfxqHalvuBaAfPw@bGm}@t{EkA|JUxI", + "bukowno|olkusz": "sfxqHalvuBp@mPPy\\Dkz@QcIc@cHqA{JqEqUwByGqIkSyAyFgAoG_z@}bI_AkLM_K\\qLfW}bD", + "bukowno|sławków": "sfxqHalvuBaAfPw@bGu~@x`Fc@xEUlGIfu@UnW_AtLq@lEwAhG_[x~@eClF{DbFwFrDiFlAiED{PmAuCN}DbAuDxBcF~D}KbP", + "będzin ksawera|będzin miasto": "seerHi{|sBfBhRxK`{@nC|MtD`LjCpFvDxFhDtDtD~CdFvCpDrAvDx@|Eb@", + "będzin ksawera|dąbrowa górnicza": "seerHi{|sB}Dah@qCwh@M{Hh@cKrLceA", + "będzin|będzin miasto": "acarHemysBsX`UyEzC{D~A{Dz@STeE`@wE@", + "będzin|dąbrowa górnicza": "acarHemysBsX`UoGxDqDrAoCh@yE^uEA{E]gFaA}EuBeFmDsDmDaEoF}CyFoCaHoC{JwAyH{Kk}@yHa~@kCsf@A}FXsG`MqgA", + "będzin|sosnowiec główny": "acarHemysBvOiM`F}CzLyDlFy@tEFnfAdLtEz@nEfBpHlFbEdGby@xtB", + "charsznica|gajówka": "i_rrHgmuxB]rPAvHd@vYp@pK~Hrk@jBrH`G|NlCzItA`Jb@rJ}AxcAm@vIeDx\\yEpbA}Cl^", + "charsznica|gajówka apo": "i_rrHgmuxB]rPAvHd@vYp@pKzFrc@vA~HjCdJlGjOtBfIfAlJPnM_Bh}@k@tIyBrS{@`L_FjdAqLroAwA`KqK`p@", + "charsznica|tunel": "i_rrHgmuxBjAil@WkJ{@qHkCiK}CsGkF_G_FgCeEy@kEAaEr@aEjBgF~Ek[rc@sDzCaEfB}Gr@wGy@uCoAiCiByEcGgCwFgBqGcAcH_@sFE_KNgGfAsSFcNs@yO_Ek\\}@_NGsPfAiXFkG[_J_A_IyBsIwCkG_DeEyEiDcDiAmEe@qU~@", + "chechło|dobroń": "exezHgqutBr|AbrG", + "chechło|pabianice": "exezHgqutBwIa^e~@{}CyDaLeNm]", + "chociszew|grotniki": "ig|{HsdrtBt|A}\\|IkEnHmHvDaG~BgFhCyHdB{HpB}OhKiqAv@gHvC}NhKmZdDsHjCkEdE_FxEuDvDmBlDeA|WsD", + "chociszew|ozorków": "ig|{HsdrtBkJrBkFj@{M_@woC{XoHWmHr@wqB|^", + "chociszew|ozorków nowe miasto": "ig|{HsdrtBkJrBkFj@gDBuJk@csCiYwIZeZnF", + "chociszew|zgierz kontrewers": "ig|{HsdrtBt|A}\\|IkEnHmHvDaGhD_InCkJbBcJbAkJhKiqAv@gHpAsHrB{HnGuQpCqH`C}EnDkFzCeDfDiClE}BlGaBbs@iJ`FkAnw@_`@tHuFpEuFxDcHpHwSbCyI`EaV`AwHrA{SPiM", + "chrusty nowe|rokiciny": "otozHabywBjaDrpA", + "chrusty nowe|żakowice": "otozHabywBqaEa`BiEkAiSmI_E_@gBR}B|@wBfB{AvBmApC{@dDg@rDSxDBbFj@`LlJfgA", + "chruszczobród|dąbrowa górnicza sikorka": "wvrrHoc~tBfd@~e@tFnKjDfKvBbKrA~KpGhbAjBb]", + "chruszczobród|wiesiółka": "wvrrHoc~tBo_AmaA}FaHsEaImDiJ}BsJ}AqK", + "chrząstowice olkuskie|jaroszowiec olkuski": "g{grHozcwBtHbDpDbCnDzD|CfFbCjGnBnIfAhJ\\rIAjFWxG_Etf@ySzkAcQjsAeBdRKvMV~Ff@jFfJhh@rA|EpCrH", + "chrząstowice olkuskie|zarzecze apo": "g{grHozcwBy{@a_@", + "czarnca|knapówka": "{neuHycuxBPvOn@rQxAzKhBzG|ArD~CpFlCvCrI~GtFzGtCbGvI`[fC`FfFvFbaApu@`GfF", + "dionizów|gajewniki": "{nazHgtvrBdBsBdBoDtNcf@pB}EvAuBtBoBnQuLtBoCjAkCtAkFn@_GBiS", + "dionizów|zduńska wola": "qnazH{svrBrBiCvA_DrN_f@rB_FnCgD|CeBhDe@lCP~ClAfDbDrB~DzAdGp@pHp@lh@^xI", + "dobroń|kolumna": "qzbzHc~ltBjcApgEnUxpA", + "dobroń|pabianice": "qzbzHc~ltByfB}nHe_AgaDkD}JeNm]", + "domaniewice centrum|kamień łowicki": "sqm|HerxwBzq@lcBzDxIdwA~aC", + "domaniewice|domaniewice centrum": "o`o|Hcs}wBn_@d}AtAvKn@zSl@xH|ArIxDtK", + "domaniewice|głowno": "o`o|Hcs}wBn_@d}AtAvKn@zSZxEjAbIhC|Int@thBzDxIh{A`hCzCzFzC`IbBfGlAdGtd@rnCrFtTbGrPd`@|y@vBjDhCpCtDdChC|@`x@xQ", + "domaniewice|stare grudze": "o`o|Hcs}wB}mAmbF{@uFe@uGGm^_@iGu@wFuz@gvDoCgJ_E}I{DeGiHkH", + "domaniewice|łowicz przedmieście": "o`o|Hcs}wB}mAmbF{@uFe@uGGm^_@iGu@wF_{@cwDeBeGiDmIqF{IcEoE}xBmmBaJsFoH}Cmz@yVqJ{DaLgHwc@_`@}B}CqBcEuA_EcAoEwRuwA", + "dorota|dąbrowa górnicza południowa": "i{{qH{tttBcXuPoFyBgHgBsdAuO{s@k@", + "dorota|dąbrowa górnicza wschodnia": "o{{qHquttBqSgNsJqEgHcBe|@{MwCcA{CoBaDmDaCiEoBwFqAqGk@mFQsFLkZ", + "dorota|juliusz": "o{{qHquttBnO~JxPvFnFbDrCfDdCvEhBlFhAtFl@vHPfIQdu@xBjvB[tm@ZlL|Cdg@", + "dorota|sosnowiec maczki": "i{{qH{tttB|t@vf@bQfM~RhMxE|A|J`BtDEfEqA", + "dziadówki|miechów": "cprrHq{byBxLuBjCcAnUsMbCu@jEa@hDNhD|@vRrJjDfAnDXxE[`GcCp\\cWhF_CxF_AfGHfs@hIf\\s@hDP|DbA~UxI", + "dziadówki|tunel": "cprrHq{byBwd@|GgEjAgFvCcD|CsDlF{`@xw@sDnEcEjCyDjA{r@dNyRjBqF\\sDQqCs@yEyB", + "dąbrowa górnicza gołonóg|dąbrowa górnicza pogoria": "_xgrHwajtByg@_zA", + "dąbrowa górnicza gołonóg|dąbrowa górnicza ząbkowice": "_xgrHwajtBwlAqkDgEoIyE{GuMgOgKaK", + "dąbrowa górnicza huta katowice|dąbrowa górnicza południowa": "yafrH_vptBvMqFjGcE`CkClC_ExEmKlB{GzAsIzLsfAzA}JfAoE`BoEdBaDxBsCzBqBnC}ArC}@vC[peAz@", + "dąbrowa górnicza huta katowice|dąbrowa górnicza strzemieszyce": "abfrHqtptBxIcB|BBbCd@xD|Bf_@p\\bFnD`EhBfFrAvC\\|IF`De@|CiAtCkBlCqCbDoFlPu\\rD{J", + "dąbrowa górnicza huta katowice|dąbrowa górnicza ząbkowice": "yafrH_vptBaSzH_^jIuO~ByNx@mE@}IgA}_@oJwRaIyPyK", + "dąbrowa górnicza pogoria|dąbrowa górnicza ząbkowice": "y`irHw|ltBy_@ehA{EiLqDoGeEsFgLqMgKaK", + "dąbrowa górnicza sikorka|dąbrowa górnicza ząbkowice": "crprHeixtBrFxt@fAvJzAnJtCnM|C`KtChHlElIfHpJpIhIf_BtjAxMfM", + "dąbrowa górnicza strzemieszyce|dąbrowa górnicza wschodnia": "mtarHchqtBhq@amDdAsIh@qIf@a]", + "dąbrowa górnicza strzemieszyce|sosnowiec kazimierz": "mtarHchqtBwCdLaAxGg@tJFvGr@pKpAzGjCxHzCdFfFzEtDfBvw@~PlFtBxD`ChF|E`DnEtd@bu@dC`D", + "dąbrowa górnicza towarowa dta r5|kozioł": "_{drHyyguBvAcIdDaMrC}FvDqEpDeCrw@i`@`FmAxFAlFpArCbBdEnErBnDlC~HnFv\\", + "dąbrowa górnicza towarowa dta r5|przemiarki": "}{drH}vguBeHvYmBfFaCrEyD`FuDzCaEnBoEdAeFRmpCcIwEJ}HbAsGlBiFbC{JnHaEnEgDrEspAd`C_E|FmE`FsLrJ", + "dąbrowa górnicza towarowa|dąbrowa górnicza towarowa dta r5": "khbrHcwauBdGy_@zBaS~@kPf@kRMePi@qIq@aGcAyFi\\}rAeB}DaCqDeCiCsBsAwB}@kEu@aD?cDh@uChAkCjBgBjBwBdDqCbHcGvU", + "dąbrowa górnicza towarowa|kozioł": "ujbrHy_guBeC}HkBgE}AaCsGoHeByC}BaHgAwHUmKZcHj@_Ep@yCfB}EpCkEjBkBdCuAnD}@vCIjKZrF~@xCvArCxB`CtCrBtDnCbI~B|M|BdR", + "dąbrowa górnicza wschodnia|kozioł": "m|_rHoixtB~E_eEzF_rAt@sIjJuv@`@yHAcL]_HgAyIeByHkBmFuDkHaUyZyCqHuBkJkJeo@", + "dąbrowa górnicza wschodnia|sławków": "k}_rHmixtBrE_~DzMg`DEuJmAuUAsFRwFv@oHjAsFpI}U|AaDjRc[", + "dąbrowa górnicza ząbkowice|łazy łc": "wmkrH_~ptByMgMm`BukA{FsF_GoHiDsFaDwGoDwJaDoLkBmJgBiMmAoN}PulC{AeM_CiK_BcF_CuFcGiJmeB{hBcEmF}DmHcCkGaBcG}AeI_AqHcA{NgFqjA", + "dąbrowa górnicza|dąbrowa górnicza gołonóg": "saerHgjbtBxAoONmMu@sMsBkLksAq{D", + "dąbrowa górnicza|dąbrowa górnicza ząbkowice": "saerHgjbtB~AgQJgGGqF[_Gu@kG{@qE{AmFk}Cs_J_EwIaFwHgOcQgKaK", + "dąbrowice skierniewickie|maków": "of~{HqguyB]pOaAfNqr@|{H", + "dąbrowice skierniewickie|skierniewice": "of~{HqguyBOiLk@}JgAeKcBqJiUg}@sDyJkEwHoCmDiDcDmDcCqDeBg|A_d@eEcByE_DmDgDcDkEoC{E_CqF_CwI{Iwc@", + "dłubnia|kraków batowice": "s~xpH}|eyBkDtHgChIeB`JmAjLa@vKoBd}ADtQlAbThBzMbFxT", + "dłubnia|raciborowice": "g_ypH}}eyBaD|FiBlBqClAuD@sD}AiB{BqA{CgCuI", + "florek|kutno": "am}}Hga|tB|UfQtEvEjGlJfb@js@dCbDhCdBfDv@zCC|Cw@lCgBtBgCvAwClAiEbi@s`D", + "gajewniki|zduńska wola": "er_zH{rzrBrBnlBl@l\\nAnlAx@dg@", + "gajewniki|zduńska wola karsznice": "uq_zHctzrBLzE`@vEx@zEz@|CxDxHhCbCxBnA`FbAxO{@zTxAxD_@hDkAvEmDbEeGvE_LdVuo@fDgHtGmKlV_\\pFqF", + "gajówka apo|jeżówka": "qmrrHk~exBuIfi@}J~z@sIvf@q@~GS`HDnFZlFn@dFhAjFxBhG`K~QlB|FbA`FbAbL\\lW\\bI", + "gajówka apo|wolbrom": "qmrrHk~exBuIfi@}J~z@wHdc@}@|G_@`HCzFVzGx@~GhAjF`B|E`KjQdBpEjArEx@jFd@rFj@v]vAvPpC|N~Lnc@tBdGpBlEzf@z|@`DbEjCvB|DhBfEr@vGSpOuDdEi@hFL`Fv@bEbBhDjCxDbF`ClFrBzH~@fHVxFIvHyAvR_AxG_DbMyFxR", + "gajówka|gajówka apo": "euqrHmrixBwHby@sM|x@", + "gawrony|witonia": "mfa}Ha{htBmlBgzBqxBylDen@gy@", + "gawrony|łęczyca": "mfa}Ha{htBby@v_A|aAny@nlAxqAvFzDtG|B|Dh@xEJleBiBrFQtIaBnG_DlEuDrp@}y@", + "gałkówek|justynów": "iqvzHqdnwBtBfz@pAd~EMhJu@xLuFl`@", + "gałkówek|koluszki": "iqvzHqdnwBSwRf@_PhA{LxIoi@bAqI~@cQEsQaAkPmm@c}GqA_IaC_IsC{FcE}EoCmBkHcDY_@wa@{P", + "gałkówek|rokiciny": "iqvzHqdnwBS{Sn@}PbBqOvHwd@v@gGfAeQDcOSuHu@mKce@_lFiBcXEoJVwDf@sC~BwGxAuBbByA`CeAtBYlBHdCp@z|Jh}D", + "gałkówek|łódź andrzejów": "iqvzHqdnwBtBfz@pAz_FMrHu@xLmAxJwHxg@{@pJ_@|JEnK`AjpDUzQeA~McB~K{WbkAkEhO{Szl@", + "gałkówek|łódź chojny": "kpvzHadnwBhBru@pAdiFS|Gq@tJ_Kvs@s@bI_@jIGpK`AhbEc@xNkJzoBOxKAhc@l@bUzAbTnAnHbHvYdCvQ`\\fnEnIhuAf@hOjAto@`BfXhGfw@j@rKNlJGlHsAh\\}IdcAqApRqC~i@_BnS", + "gałkówek|żakowice": "iqvzHqdnwBS{Sn@}PbBqOvHwd@v@gGfAeQDcOSuHu@mKa\\krD", + "gałkówek|żakowice południowe": "kpvzHadnwB[oTNwHd@kIhA}J|Jon@`AsLVqKQqNe@eIkN{}A_AgQEoOb@qMx@}J|BaQ", + "glinnik wieś|smardzew": "wit{H_b|uBv@`GdAjF`Jd[jElVlBbGbDjGbCvCdDfCnDvA|Cf@|FIjMgD", + "glinnik|glinnik wieś": "oau{H}r~uB|AjMlApGlHvShAlErEx]", + "glinnik|stryków": "oau{H}r~uBqQq{AwAoH_BiF}AqDaDuEmBkByCmB{F_BwOcAqGsCoViWgDsFcBcEqAyE}@kFi@uFSaMt@qW@_Gg@}JuAcJ}BuHkDcHcCsCyHyGcE}FkCoGuBuJ{@iJIiK~IkrDHoI_@ePkIioA", + "glinnik|swędów": "oau{H}r~uBqQq{AmBmJgD}IaFwGeGyD}D}@wOcAqGsCoViWmCeE}BqFaCiKo@sFWiFA{Iv@mY_@}Lo@uFcAeFuAoEmBqE", + "glinnik|zgierz": "oau{H}r~uB|AjMlApGlHvShAlEvFdc@jAtGvIhZrF`Z|AvErBhEhClDnCdC`DdBlD|@fDPrCQtKyChD]bEP~EtAfEtCxD~ElCpFhFxNvBtIlAxKhAf~@j@tMxA`Sp@dGdAbGvAjFrBfF~BbEhD~Dx|A~uA", + "gniewięcin apo|klimontów": "qgnsHu{iyBtGfCzInGjFxGbIfNxGhIbh@x`@|I`G", + "gniewięcin apo|klimontów apo": "qgnsHu{iyBtGfCzInGjFxGbIfNxGhInj@tb@nI|EfK|DlWpGzbB~^", + "gniewięcin apo|sędziszów": "qgnsHu{iyB_H_A_G?cgAjLyHE_HwAwEyBgDaCmFcG_D_FiDoIkP}d@", + "goszcza|niedźwiedź": "uwhqHkdmyByGlCoE^oCM}Cu@iDgBkC}BgBaC}CiGsCkLc@oEeAg[_BoKgDmJgEcGeCsBcEoBieAa_@", + "goszcza|łuczyce": "uwhqHkdmyBhMoHxH_DjOuD`C_ArDcCtMaMjDwBd^}JhE_BnX_RdFmE", + "grodzisk mazowiecki|jaktorów": "}x`}Hmzz|BxKzb@dPfs@jNdk@~aBvhH", + "grodzisk mazowiecki|korytów": "}z_}Hibx|BnoBnrIlH|\\jFrZrM`eApF|YlF`SrGzQrHdPrItNjLzNrLtKrMjI~N`Gx_Ht_B", + "grodzisk mazowiecki|milanówek": "_x`}He|z|Ba|AkxG", + "grodzisk mazowiecki|pruszków": "}x`}Hmzz|B_kAghF{oDwvOecB_pH", + "grodzisk mazowiecki|żyrardów": "}x`}Hmzz|BxKzb@dPfs@jNdk@zvHfi\\", + "grotniki|jedlicze koło zgierza": "qfu{HeuztBf_@cF`H}Bhv@y_@dGcF`GoI", + "góra włodowska|psary": "_zvsHcoxuBjQq|DjA_^Tq`@_@y[i@sO_AsQkBmUuBiReBeMkFaZiEiRwE}PwWgy@{Hq[mFuYoC_SoD{^cBcZw@s[Ie]dB_mBx@mh@j@oPnSymEdAoZZgd@KiMs@}Yo@uM_BgU}CaZwt@otFcDoSwDqRyG}WyF{QeMq[eGcMsIgOaP_UqQqReS}OsRwK_ReH{L_DyHsAyRgBsNUoL\\_PzAyI|Au_Dtq@{QjCaOr@eM?iKe@wLoA{MmCoOwE}GsCqPyIeIuFyw@mq@iR}RcG{HqLuQkIsOyG{NaJ_V_IwWu|BckI", + "góra włodowska|zawiercie": "_zvsHcoxuBqKpbCm@`[?vXt@|_@x@hQvA|R`Eh_@zAnKtFjZjGnWhEpNlGrQxFdN~DnI`KzQr[fg@bIfKbHnHdIdHfIhGnG`EnKvFjUhInRtDjTxAtQMjIi@zJqA`LcCrJyC`vBqv@lGeDfFoDrF{EdFuFd_CyaD`KsOlEoEjE{BjEw@f\\iAvdAoF~JK", + "głowno północne|kamień łowicki": "cdg|Hk}jwB}DkR}c@{kCkBgHsB{FyB{E{EiI", + "głowno|głowno północne": "okc|HwbgwBax@yQcEaBaEeD{DyF__@sw@yFgOuD{M", + "głowno|stryków": "okc|HwbgwBbGjBnDbDvE~HfBrEfApE`AfGb@xFtHtxAtBtOxD|NdD~HfClEds@nbApDlHrClIfj@z|BhAhHp@nGlAbY\\tDhAhHfBpGzD~H`CtCjCvBv`@lPxDzB|DjD`FnGhk@|y@|CbHpAvEv@nEv@tHvDvk@", + "idzikowice|opoczno południe": "a|_yHwm~zBzjA|xBlKtOzIdLvCbD~QpPzW~QxuF`sDbHvDdMtFzd@~N`LfEvL~FpJ~FvKlIzKfKba@ze@", + "idzikowice|radzice": "caayHqj`{BmoAgaCqIwPcEeK{CiMgAwI}Fw}@q@_MMaGH_J`@wG", + "idzikowice|strzałki": "a|_yHwm~zBmyDqmHmIeOwM{ReSsTiRmOufBqoAaJcGmOaI{V_IiQwC{M_A_dTav@iWmCe{@{Q", + "izabelów|męcka wola": "gb_zHsemrBbGrfDwEtwDNjLlClv@", + "izabelów|zduńska wola": "gb_zHsemrBiCisA?wXgAq}@", + "jackowice|łowicz główny": "ocj}HkhxwB``Ae~Gxp@i~HlBeQhCqNtEyPvmBqqGnGiRzFsKvGkIjGcF~XmObJwGnKkLfLmQ", + "jackowice|żychlin": "ocj}HkhxwBcRlrAsAnHmCrKwFvO{bA~aCqC~HiBvGcfCx|KaFtVqoAngHmCbRoBlV", + "jaktorów|międzyborów": "qh||Hklm|B~oChtL", + "jarosty|moszczenica": "u}ayHyhewBqqFcd@oIuA}JgD", + "jarosty|piotrków trybunalski": "u}ayHyhewB~jHpp@^Dxa@vDL@xf@nE", + "jaroszowiec olkuski|olkusz": "ssgrH_wwvBxJjWhJnShCnE`DlDtCpBvj@xZfj@`TbmA~NzH\\fLkAtc@qQlR_FvFcAfGOpGh@~GrBfFtCz{@xp@xWvUnGtHlEhJzB~HdG`[x@|G^jIAhMc@xMqA|PgD`^", + "jaroszowiec olkuski|zarzecze apo": "ssgrH_wwvBqCsHsA}E}Icg@i@mE[gG@yM|@wKxRu{A`RodAfAuH`Eij@DmIe@qK}AwKyCaKwDiHeFyF_FwCscAwb@", + "jedlicze koło zgierza|zgierz kontrewers": "uuq{Hur|tBdDiHhFkObByF~A_InC{P~@aIfAwQPiM", + "jesionka|radziwiłłów mazowiecki": "{`n|H{jb{BjcAnpE", + "jesionka|sucha żyrardowska": "{`n|H{jb{Bcv@{gD", + "jeżówka|wolbrom": "urrrHyf}wBfAvKfBzJ~L|c@lCjIhFpKpb@dv@xCfEbC~BnDrBvCz@vCXnFStSyEnEOhFb@nEpAtDzB`EnEhCxE`CpHlAbHl@lJIvHyAvR_AxG_DbMyFxR", + "juliusz|sosnowiec dańdówka": "ayyqHu{itBrEft@jBlPvAdHxY~kAfAlGd@|EVlGArHyBp]SnH|AzhA", + "józefinów|pruszków": "sfo}Hqtf~BtPxq@xTt`AbdArrE", + "józefinów|warszawa włochy": "sfo}Hqtf~BmN}j@kHc]aJye@yi@_cC{YkpA{Oot@cRmw@", + "kamieńczyce|miechów": "mqdrHejbyB{CvByIjEqo@~XcFlAeGIeCi@sCsAsFkFeCoEeH_QcC{D}BaCmD{Byn@uW", + "kamieńczyce|szczepanowice": "mqdrHejbyBzGaFfYmOxSuPzCyAlD_A~QmDfDgBbDkCxY}[`DuCvZyQrGwE", + "katowice janów|katowice much. kmb": "__sqHmnmsBjExJ`GtOrDbKfBtGhOv{@jAfIP|DGrFsHrtAGxELjJh@|HhSfiBvJreAn@zI", + "katowice janów|stawiska": "__sqHmnmsBuv@a_Bcb@}~@kBiG{@oG", + "katowice much. kmb|staszic": "szpqHw{_sBrAzLnA|FxOj`@nC|DvA|@lCp@vBEpBi@lD_DrFkJ", + "katowice muchowiec staszic|staszic": "eupqHkffsBdCxMhD`NlBlKvE|_@dOzz@hQpt@hAvG^fFDpDYtHw@bGkFtS", + "katowice zawodzie|mysłowice": "k{vqHmvhsBnDkdAJ{MEsLm@sVwGccAm@}QqCeb@iBuPqA{SKcKJmI|@{Sn@gIlBoLrFiT~B}GpDmHtSe]`PiVhR}VnF_F~FeHlDeGpCwG", + "katowice zawodzie|sosnowiec główny": "k|vqHwvhsBj@aT|AcU|@iZJoLSkTm@cPqGsaAu@oPyC_d@_CcTkAmPs@yFqAoF{CgJsCiGyDiG{CqDoE{Dor@ah@}C}EeKoW", + "katowice zawodzie|sosnowiec południowy": "k|vqHwvhsBj@aT|AcU|@iZJoLSkTm@cPqGsaAmAoVaC_^_CcTcByTmB}I{CgJgFgKgE_GiGyFwk@eb@uCcDo@oA{@aDe@yDKmCTcG`@sBv@qB", + "katowice|katowice zawodzie": "w{vqH_wasBdAsOnBqm@W_\\qAae@yBok@C_Hb@k\\EsI", + "klimontów apo|kozłów": "c{fsHmseyB`eCpi@", + "klimontów|klimontów apo": "seksHubgyBjIpDzGlBfvBfe@", + "knapówka|psary": "m}`uHqqnxBfpAfbArRzQbeElzExQdUtHhLrIlOtJ`TzDzJfFlOnElOzo@l`C", + "knapówka|włoszczowa północ": "m}`uHqqnxBoxFcmEqK_HcHuDcn@{V", + "kolumna|łask": "u_`zHwcdtBrJri@bChQnMv}AbAlVdBjmAf@rLp@zIzBlQr[rmBvA|MZrOc@nXyDxiA", + "koluszki|rogów": "{ryzHe_~wBwmGepDiLoIiGyGgFmH}lD_rF", + "koluszki|rokiciny": "{ryzHe_~wBdWnKhPzEz{@|\\jyJl|D", + "koluszki|słotwiny": "mixzHgl}wBdHtAlFc@~CkB`JcK~BcEt|@akB", + "koluszki|wągry": "{ryzHe_~wBynGopDaH{EqFgF", + "koluszki|żakowice": "}ryzHw~}wBz_@zOzKtFrCxBjBtBlEdI`C~HpA~HjPviB", + "koluszki|żakowice południowe": "cfxzHak}wBvFnBfEHrDmAlHgFhCiAxD]jEp@hEvCdB`CtAxCz@rCr@xDv@~K", + "koniecpol|starzyny": "mq|tH{xhwBu@}NeAwIoAaGaOwi@qAmIs@aL@gM`@yHt@gGnAqGrAuElBwExB}DjEiFhE_DraCwkAdGiDxEwDfF{FbDiFpj@oiAtGmLhtByxCbGoFbEgCn`A}a@", + "korytów|szeligi": "udo|Hw|a|BzoDxy@fTjGhL`FtLxGdu@di@dSfLdvDvxA", + "kozłów|sprowa": "stbsHghdyBqZkGiQuCoG]sFJaIfAgKrDcJlG}GlHiPpT{Y~a@uF|KkEfNqAbGeBjMyXprC}AvLuAzGuC`KyClHsDvGuEbGuQzQwI|GuGxCiZvIyErBsHlF{sCz|CaSbUmDbGiC~F}ClJcAjEy\\tiBkEfRqC|H{BxEeChEoG|H_EfDiFvCuaCj}@", + "kozłów|tunel": "aubsH{hdyBvHhB~RpIfZdNpMfHrs@n\\nEtApE`@tDMvEaAzEeCfE}DbCmDtBeE~G{TbBcEtCuErCuC|EkCfE}@pFAlFnA|D~BdCdCvCtEpBxE|AbGtE|WrAbGjVrz@vAzDrBnDlCvCzErCHd@|MxG", + "kraków batowice|kraków przedmieście": "_fypHqx~xBxVz~@lt@rkBz]|m@`ExDvJ~F", + "kraków batowice|raciborowice": "_fypHqx~xBqE}PmBcJcAkIk@gKGoJf@yl@nAmy@MuJuAiLeSc}@", + "kraków główny kga|sosnowiec maczki": "_jtpHmrtxBeBrKaAzOm@rPeEbkDcAt[OjMUx~@bCzdA@vV_@xM}@lNyAfNmBxL_CxKgCdJmCdIyDbJ_eA|mBkFhIiiAp`BcFtIiEjJwCbImChJ{Hb_@uXvyAwBxNqArMmLpbBg@`RBdRz@xTbGnr@hAdRRvJ?|c@j@fRzNjfBZ`IB|Mk@lT_AxOeBdPkCvOcFfRa]jdAcExPoCtPuBfWqJzrB_@zURd\\p@rd@Cn_@QpQyAlt@]d]BhIZlJp@lJfIdo@dBfQv@jPRpPY`SkJ|}Bo@|K}@zJuA`KoBzKuEjQ}Xbz@kC|IoDdPmCjRyDfc@y@rSKl|C]tQy@xNiApLqAlJqPb_AqBvMgn@|qF{CvTwBfKaJr]yS`}@_VreA_D~TkFpl@qBtMsChMsD|LucA`sCmDnJsDlI}bChyEqE|H}F`IoHtHqHrFaNdIq[tOwQpK_zAfbA}FpF}E`Gwb@lp@gPnUiDpGiC~GoJz\\}AfHmLfbAkBbM_Idr@cAtEuB~D_CnBy_@fLyBtBcEjGyClEkDpD{ThN", + "kraków główny|kraków główny kga": "asrpH_{vxBuJlEuCpBgOdRgEdHeCpF}GdR}AlF", + "kraków główny|kraków przedmieście": "urrpHm|vxBwVxKsB^mBGoIgBcCaA}f@cZ", + "kraków główny|kraków płaszów": "wrrpH_{vxBtJcB|kAyBlHyApGcDhDwCpDqErgAoaBvKuM|b@{o@", + "kraków główny|kraków zabłocie": "igqpH{_wxBxi@eAfGy@dFiB|DeCpDgD\\XRWvKeOfVm^", + "kraków olsza|kraków przedmieście": "kgtpHgfxxBiAnOc@|CqAhDcBhBsBt@yBAyMeG", + "kraków płaszów|kraków zabłocie": "_|mpHe`yxB", + "krosnowa|lipce reymontowskie": "kip{HkerxB}wE{q@oH}AyEsB}EkDkEsEiDgFwCcG{BkGuDqOo@oE", + "krosnowa|przyłęk duży": "kip{HkerxBftBnZxInClItF", + "krzewie|kutno": "ihy}Hgj_tBgBmk@YyPyO}|PWqIy@aMqKuaAm@kMIoNl@qRlByQjt@mlE", + "kutno|ostrowy": "etx}Hut~tB_dAbhGqGn^gDlLuAfDcDpFqpClvDmG`KcFtLulB`qF{{@zkB", + "kutno|stara wieś": "ysx}Hms~tB|EuYdCaMn[_qAbFyU|B}MvAqKv@iKXoJxCmiBByKM_Js@aPq[uhF", + "kutno|witonia": "s{w}H}aauBxDcMtFwTlHa]jC_H|CeFfM_O|CuBlDmAtD]tE\\lDnAhD`CbElFpQ`\\jz@dkBrDvFpf@pm@~kAjvBv_DzeE", + "lipce reymontowskie|płyćwia": "aux{HsyuxBgAcNUaOlGujDOaPkAyOcAaHuAwGqB}GsBoFyHePov@k{A", + "lipce reymontowskie|rogów": "aux{HsyuxBn@nEtDpOhCfHxDlHjEzFfE|DlElCxEfBbqIrnAdGjA|F|BvGvE~GbIlhBlrC", + "maków|płyćwia": "a}_|HyjjyBwGlw@_@`MBrKp@nNfBjN~CzM~DhKzCrFlDvE|CzCfExCnjAhe@jEzBdDbClEvEjDjFv]|q@", + "marków|szeligi": "cne|Har`|BcBpLu@vIQnGB`Jf@dJbAbI|AfH~B`HrElIxF|Fbb@jXtQbI", + "miechów|słomniki": "c|irHgncyBxn@tWlDzB|B`CbCzDdH~PdCnErFjFrCrAxEx@pDEbFmAlx@u^pN{JfYmOxSuP|CyAlD_A~QmDfDgB`DkCxY{[`DwCvZ{Q|GeFdCiCzXm^hEcEf_@gUpn@mT~FwCpEgE`^ed@fEiEfCkBxuAcw@zEaFdIyMzEeEjEiBbh@_O", + "miechów|tunel": "c|irHgncyB_VyI}DcAiDQg\\r@kw@wI}FXuF~AsFjDqX`TkDbB}Dt@eE?sDq@mS{JeDmAkFa@kE`@{DtAwSrLkCbAqr@rKgEjAwDnBsEdEsDlF{`@xw@sDnEcEjCyDjA{r@dNyRjBqF\\sDQqCs@yEyB", + "mikołajów|słotwiny": "m`rzH_cfxB}aAxwAub@x|@", + "mikołajów|żakowice południowe": "m`rzH_cfxBqEnIqClG_CjHkCnLiBtN}P|dBuBtNgB~IkBbIkjAxdE_EnRaEdY", + "międzyborów|żyrardów": "qww|Haw_|BzbAdjE", + "mokra|sierakowice skierniewickie": "a}f|H{~tyBedC`|F", + "mokra|skierniewice": "a}f|H{~tyBjjAknCtBmGxEiRjA{Ip@cMJ}KWgMe@yGw@iG}Iad@", + "myszków mrzygłód|zawiercie borowe pole": "c{nsH{qguBtdCa}@vK_FdJkGbJ}Ize@wo@", + "myszków|myszków mrzygłód": "yktsHiq_uB`m@y`D~A_H~AeFlFeLzCkEdDoDfEcDbGaDv{Aij@", + "myszków|rozprza": "yktsHiq_uBoFjYmPd{@_GdTgFxN{GbOo}@`gByFnJmHvJqIdIg[dUouGxnDkNbJ_KrIoKfLsFdHq`Ht}JkGrHuG|GeMlJcGhDgJ~DeMdD}mJp{AmKzBmJhDaMbHamAzu@iIjHkFlHsP|[uCxIkIlc@gT~yAeCxKiAjDcCvE}BpCsJ`I_DjAqCXahAuA}Fi@wGcBoLgEuIoFsI{IaI{LyGcO}}@}aCqDyHuFyH_EwDkEuC{zCgcB}EoEaEeG}EmIoCqHqCyLgBgNyqAy_N_zAenLeCyLuC}IcEoIyE}GyDwDeEuCmEoB_EeAqdJo~AiKeCoJyD{K}GunRsjNqDcCoFiCyDkAiF_AgEWwE@e`EzQsHJkFU}GoAsJuDisByfAcGsDwFeFiF}GcEqHiDqIsBaH{AwG_PecAwBsKoDiNcEkMwEqKoH_L{GkHiOaK{DcBkFyA{xDap@_G}BkGeEmGaHkEsHiFiNsAsFeBmJs}BatOeCqNyDwMuF_L{FkHgOwKiG_He^wo@cEuGcL{MgE{D_EuCssHozEsJoEyIkCq|@kO{KsCqMgGeXcRyl@}a@", + "myszków|zawiercie": "yktsHiq_uBzk@y|CjByIxBkHlDaIfEyG`FiFfEyC|E{BlaFkhBnH_DrHmE|IqHfJsKryB}zCrLuQpC{CpCmBhDoAzDg@rlB{I", + "mysłowice|stawiska": "e}uqHy|usBkVjb@sBtGeApHOvDJdEd@rF~@`EjAdCvAhBlGjD", + "męcka wola|męka": "}{~yHo``rBbJ~lCPpNgAhmD_@tHw@lGgBnH_CzF", + "męka|sieradz": "o|~yHcqtqBsBhDcTlXaCbFcCbJeAzH{BzU_BdUUxPNjIf@hIfClRz_@z{BnAdGxArEbBpDz]|n@`BhE~GnUbKlRtB`FtBlI|@rHxArb@", + "męka|sieradz męka": "o|~yHcqtqByCtE_QlTqC~EeBzEkA~EeCtT", + "męka|zduńska wola": "o|~yHcqtqB~B{FfBoHv@mG^uHfAyoDQaLgOslEtE{|DaKkwFCi\\gAq}@", + "niedźwiedź|słomniki": "kimqH_lqyBuRsGcDYuCJiGfBsYnQuDlAoFj@cEI_s@aHqEFoDt@eFxCkEhFaOf\\sChEeh@hl@_FrDaKnDcFpA", + "niedźwiedź|słomniki miasto": "kimqH_lqyBuRsGcDYuCJiGfBsYnQuDlAoFj@cEI_s@aHqEFqFvAcFpDgE|FeFbL", + "niedźwiedź|zastów": "kimqH_lqyBheA`_@bEnBdCrBfC`DvAlC`BfErAzF`AlIhAx[|AbKjBbGfElHdFhErClAvBb@zFDvGcBlQoK`HwChOqDbC_AtDeCrM_MjDwBb^}JjE_BnXaR|FiFzBsCvC}EnSud@fAaEbAiG~Co^tA{HjAwD`BsDvCgElCaCxEwB~Fo@tx@lDhStCzCv@hCnAzBhBpDxExvArfD", + "olszamowice|pilichowice": "wpzvHwsnyB{xAFqPQwRqAqQaDiSuGqh@uS{kJuvDaYkJgQuDmOkBotFc`@oSaCkPoD}SeI_y@gd@", + "olszamowice|włoszczowa północ": "wpzvHwsnyBh~Lg@jKN`Mx@fRrC|LbDtnHlxB`ZzJxJxEnLfH`LnIxH~Gr~Ab_Bh^j_@|dG|cIhI`KnLrLnPxMvLnHpJxErvDpzA", + "opoczno południe|pilichowice": "crnxH}fozB~|AxlBvJnL|KrLnRtOtsEpiDrGpFjNrNfH|IzJtNjrC|aF`JxN|EzG`FnGjNhOvHxGbHhF`YbQ`h@|Y", + "ozorków|ozorków nowe miasto": "k_f|HuyqtBhyAcX", + "ozorków|sierpów": "k_f|HuyqtBij@lKaIpByDfB{bBzpAuE~D_FnF{HzKcxAn`CwCjEwDbE", + "ozorków|łęczyca": "k_f|HuyqtBij@lKaIpByDfByfBhtAwH`I{HzKcxAn`CcFbHaH|Fa}AtcAoE|Eo`A|lA", + "pabianice północne|łódź lublinek": "axjzHqv`uBuEuCuFoA}iEu`@{Je@oXPaE_@yEiB_FiEyd@ao@", + "pabianice|pabianice północne": "cwhzHuz|tBmK}V}g@orAqDqH_E{E", + "pabianice|łódź lublinek": "cwhzHuz|tBeJoTmk@qxAoBuDeBaCuFoEmCaA{Do@wjEw`@_I]qVPaGk@yEiB_FiEyd@ao@", + "parzniew|pruszków": "}xi}Hijv}BmGeW{v@ajD", + "piastów|pruszków": "}{n}Hcye~BtaBpjH", + "piastów|warszawa ursus niedźwiadek": "}{n}Hcye~Bkv@ahD", + "piotrków trybunalski|rozprza": "sevxHwjcwBruO`wAjLdCrKtErl@`a@", + "przemiarki|łazy łc": "y`prHui`uBef@x^eHtDcJjCaK~@wm@z@cHy@iHeDgFyEaXg[eDkG}B{HcA_H[uFGuETaZ}Acc@u@eKkDc\\", + "przyłęk duży|rogów": "{~k{Hu}pxBzDdEzDrFteBvnC", + "psary|starzyny": "apstHmk|wBrVh|@`BnEpEtHvDpD|ChBzDhA`DZnHc@pv@kZ", + "puszcza mariańska|skierniewice": "glf|Hekc{BgMf`H~A|uGX|Kd@dInBdQ~VbsApAbJlAtOV~P]vOcIjzAiA~IiClNiC|KoCdJeAlFs@~HGzJtBbz@v@jL`AdIjc@b|BhGd]|Kpg@", + "płyćwia|rogów": "w_{{HevayBx_A`kB|E~MdBxH|@pFz@`I^jGPpG@jIgGrcDCzHJvHb@bIv@zH~@~FzA~GhBdGdCdGjCzEtC`EbEdEhExCxErBxEfAflIdmAdGjA`DhAtInF|H~IlhBlrC", + "płyćwia|skierniewice": "w_{{HevayBc^qr@wDsFsEuEsIeF}fAec@gFwCuEeEuGeJ_FaLwDsNuBmOm@sJQgLJ_Jb@aJzz@moJbAeNZ}Ra@wPaBaQqC_O{Tg{@wE{KcG_JsG_GiHqDg{Aqc@eEcB_EiCoDeDeDcEsC}EcCoF_CiIiJee@", + "raciborowice|zastów": "igzpHcwfyBwSc_A}a@ihCiCoK_GcO", + "radziwiłłów mazowiecki|skierniewice": "o|k|Hky{zBrcDzsNxCnOdAhIt@dJhBvX^fMe@dhCNfX|@hS~@bJhAdHt`@tpBdEbZjKth@", + "radziwiłłów mazowiecki|skierniewice rawka": "o|k|Hky{zBr}Cz`N", + "radziwiłłów mazowiecki|żyrardów": "o|k|Hky{zBisEshS{aB{gH", + "retkinia|łódź chojny": "k`yzH}aouBiBcMsPiy@iAcIQsGX_I~@{GnBoGfDgFbEeCjEeAtRmA`SaDl[uL~IaE~DkCfDmDnSuWnEsHrAwDdAkE|Iah@r@iINuJe@oKeAwHoA_FsAwDcQc_@uBoF{BeKw@eJKoHJgG|AwShBc^`B{[n@cU", + "retkinia|łódź kaliska": "m_yzHw~nuB{Lcn@{A_GgCuHoDeI_FaIwEoFwFuEcEkBoEm@aDHgLpAeDz@y^nO", + "retkinia|łódź lublinek": "m_yzHw~nuBliAb}FrC|LlDrJvDbHvs@dbA", + "retkinia|łódź pabianicka": "k`yzH}aouBiBcMsPiy@iAcIQ{HZiHdAcHpBiGnAyBdBqBfBkAxCeAlG}@nI_@fVqDnZaL`J}DvDuBfDyC`OiR", + "retkinia|łódź retkinia": "m_yzHw~nuBzMzq@", + "rogów|wągry": "mlh{Hc`lxBhlDbqFdGbJrB`C", + "rokiciny|słotwiny": "crjzHmpvwB{rIwhDwNkGcFaDeBiB}AoCeAyC}@oEaB_YmAuYP_JfAwJnEePlDmK", + "rokiciny|łaznów": "crjzHmpvwBpeCz`AvIhEdL~IjkAxoA", + "sieradz męka|sieradz warta": "sa`zHmjrqB}B~Wg@jNEtIPjId@fIfCjR|_@x{BbBzHzDlJr[`k@bDfI", + "sieradz|sieradz warta": "ut|yHa_fqBqAw`@i@wFy@}EwAgF{CqHaGkKqBsEuFsR", + "sieradz|sędzice": "ut|yHa_fqBfHdtCKlnDQrHe@nFkA|GuEtR{AjEuClGoeB~bDuBtEsAjEkBxJqY~sBiJxsAcAfK}AdJ{\\|`B", + "sierpów|łęczyca": "syn|HelitBwbBfhAoE|Eo`A|lA", + "skierniewice|skierniewice rawka": "aqd|H}t}yBkKuh@eEcZu`@upBiAeHw@qHw@aNY{Ql@wlCSoP}Be_@sAmN{BeNiGiX", + "smardzew|zgierz rudunki": "war{H_gyuB|EMrDf@~EvBxChCvBnC|BlEvFhOjBlGbAbGr@pIv@rv@dAxVdCzXbBnI~BbH", + "smroków|szczepanowice": "ggzqHukjyBkb@xh@{DtDuGhDgm@tSkR|KaMlIcCvB}Zz`@sCvC", + "smroków|słomniki": "ggzqHukjyBdEaDxuAcw@zEaFdIyMzEeEjEiBbh@_O", + "sosnowiec dańdówka|sosnowiec kazimierz": "moxqHmk`tBuA{hANmH~Bs]@qHWkGe@}EeAiGe`@w|AiDqHkE}EkCeB_RoIeEkDqC_EwY_g@{D{EsEyC}TuIwFoE", + "sosnowiec dańdówka|sosnowiec maczki": "moxqHmk`tBuA{hAVqJjByVN{Jk@kMyAsJq^mxAqCgIiCaEmDkDkUyKgCmB{BgCg_@ap@}@aCe@mCUqGh@kGn@{B`AuBjv@siAv_@qe@xDkFfAyBzAoEhA}HRuFZc\\b@uFp@aEdBuFhCwErCiClFgC", + "sosnowiec dańdówka|sosnowiec porąbka": "moxqHmk`tBuA{hANmH~Bs]@qHi@_KcBsKg^mwA_BiFgBoD", + "sosnowiec dańdówka|sosnowiec południowy": "moxqHmk`tBzCj{Bk@|KwDbXWbGAzFp@hLfGf^x@|GXzLYvJo@xFmAxGgBjFmCtFsJtO_a@nf@", + "sosnowiec dańdówka|stawiska": "{nxqHmk`tBpCj{Bi@`LyC~Rm@lHGpJb@rHdB|IzJhYbAdE~TjaBfBpHrCbGxBhCvUrQrArBjApDd@~CP`DXb^VhF", + "sosnowiec główny|sosnowiec południowy": "uozqHgqusBxBrAdCT|AWrCiB", + "sosnowiec kazimierz|sosnowiec maczki": "af}qHilktBnC`BvC`AfC^rDDtEq@lDgBfCmBlIqKrs@afAdc@}i@fCcGvAoH`@iI^u]^cEp@aEdBuFhCwErCiClFgC", + "sosnowiec kazimierz|sosnowiec porąbka": "se}qHwjktBvFnE|TtIrExCzDzEvY~f@pC~DdEjDdT|JjCvBzC~D", + "sprowa|starzyny": "egxsHsljxBmuA|g@kItEcGzFktE~`HiEdF}GnFsHdDcIbBo~Edp@gErAqnD~{A|CqA", + "stara wieś|żychlin": "ouw}HiupuB_QguCe@cPJwQd@kKbBuTjsAw{Pf@eVhCq|GfAyV|N}sB", + "stare grudze|łowicz przedmieście": "yjt|HmumxBmqBagB}EmDmGuDoH}Cmz@yVqJ{DaLgHob@u^kByB_C_EkB{EyAeGwRuwA", + "stryków|swędów": "m{y{HcrrvBjIhoA^dPInIwIfmDIfIJdF`@nF~@lGnA`FxBtF|CzE`LdKdD`F", + "sucha żyrardowska|żyrardów": "_xo|Hwsg{BizA{uGk_Bg`H", + "sędziszów|sędziszów towarowy": "sbssHuzkyBob@yqAsF{W", + "słomniki|słomniki miasto": "ybuqHgxmyBbFqA`KoDhE{Czh@am@lCqEdFmL", + "słotwiny|żakowice południowe": "cvuzH_r`xBkJvSwEfOeB`Js@`JGzFJvFfDpp@zEviAAdIc@`JuEn_@", + "warszawa centralna|warszawa wschodnia": "m`x}Hiue_C_CwRGiDHoIQaF{Hcn@_Hqb@iEyQsByGaDeH_IcMeV{l@yAuC{AmBqCsBwC_AiQSkHu@gCaAgBkBqB}D{@kCwN}r@", + "warszawa centralna|warszawa zachodnia": "m`x}Hiue_ChFha@vEnTjGti@vVpaB", + "warszawa gołąbki|warszawa włochy": "wzs}H{ii~BOcDqCec@}Fq`@m@{FWyK\\uJ~@kHtA_Gjk@ijBr@yD`@eEl@eQQuHoAkIiAgD_EeIoAmDoGcT_HuY", + "warszawa grochów|warszawa wschodnia": "yh}}Hqst_CcJdl@c@nF@zFr@~Nt@xFhAbEhDbIrJ|_@", + "warszawa ochota|warszawa zachodnia": "ajw}Hktb_ChWfdB", + "warszawa ochota|warszawa śródmieście": "ajw}Hktb_CqEga@qJiu@wCsP", + "warszawa podskarbińska|warszawa wschodnia": "_p}}Hwzr_Cl@|T|@~HfE|S`HlXzHxT`ClN", + "warszawa powiśle|warszawa stadion": "q{x}H{`j_Cu@yCiD{JeDqGuG_KgV_m@wAoC{BsC{DiCcD}@sDO", + "warszawa powiśle|warszawa śródmieście": "q{x}H{`j_CvAlHnHnc@lIdp@XzEHvLxApM", + "warszawa praga wpt m|warszawa wschodnia": "cq~}Hcyo_CpFsYzBcGtBmCzEmD`Cq@fCBfBh@nBtAbE~DnBdDdEzNlF~OfDfO", + "warszawa stadion|warszawa wschodnia": "}~z}H_dm_CgRGgC{@oBqByA_D}@cDgAqFwB{NcH{[", + "warszawa ursus|warszawa ursus niedźwiadek": "}sq}Hiin~BtElSlKhh@nLjh@", + "warszawa ursus|warszawa włochy": "}sq}Hiin~B{HwZmN{n@yAuK_BuVaA{G{AwEsF{KeC_HuEyOeGoW", + "warszawa włochy|warszawa zachodnia": "ets}Hwht~BmIga@{_@qdBiBsL_Iup@wAyHcFwSwAoHqKyw@", + "wiesiółka|łazy łc": "crurHq|auBmAqPgFqjA", + "witonia|łęczyca": "s|i}Hk~stBdn@fy@hqBtbDlJhNh~CrqDhFdFt~@nv@vhA`nAbGjFjE|BrCz@zI`AjhBiBrFQhEo@jCq@lEqBnGcFrp@}y@", + "wolbrom|zarzecze": "kanrHgwtwBuNrf@mBxIiA`Iw@`LSrLTbLr@`KjBhMt]hgBfC`JvIxSdCbJbg@n`DhBnJbCpI", + "wolbrom|zarzecze apo": "kanrHgwtwBgOdh@cBdJmA`Ko@pMCzLh@bM`BdNl_@rmBvBfHrIpSdCfJdg@n`DlA~GdBxGtBdGhDbH|CtExDdEjPnLlUxJ", + "wolbórka|łaznów": "aw{yHgekwBeoA_f@qJ}E}GyEiHwGeaCuhC", + "włoszczowa północ|żelisławice": "{{juHievxBrj@|T|KxFpJhGxe@|^j|@rs@rFhGtDlGvDrJ~BnJrtAniH", + "zarzecze|zarzecze apo": "arkrHumfwBxEpKtEjG~DbE`OfKlUxJ", + "zawiercie|zawiercie borowe pole": "{aasHwvpuB}qAjGwYbAeD\\aEvAoClBsC`DuLrQ{xAlqB", + "zawiercie|łazy ła": "{aasHwvpuBv_AcEfEDbEd@`HvBhGvDvDlD~P~R", + "zduńska wola|zduńska wola karsznice": "uh_zHkurrB@mGkDstCHgF^iFz@wFvAsFjBwEpDoF`FyD|CkArEq@xDEhRvAbDCtGcBzEqD`C_DxCcGpXqt@fDoHnI}M`[ga@", + "zgierz jaracza|zgierz północ": "oup{HejpuB_K|UoCzHqC`MwAhMg@tKiBhr@JdJzArb@@~Mm@dNqCx_@", + "zgierz kontrewers|zgierz północ": "wyp{He{_uBUe\\o@yJqAyJwCyLqV}u@kFsXkAwLE{I`@_JbNelB", + "zgierz|zgierz jaracza": "e{l{HcepuBmx@et@oD}AsEm@cFXuDjAeQtMyChDaD`F{JfU", + "zgierz|zgierz północ": "e{l{HcepuBow@ks@eCyAoCu@mGOgC^iDnAqOlLmCrCeDxE_DtGcVxk@yCpLeB`Mu@pMoBrr@FfJ~Ajd@@~Mm@dNqCx_@", + "zgierz|zgierz rudunki": "g{l{HsepuBy|A_vAiD_EeDeG", + "zgierz|łódź marysin": "e{l{HcepuBlDhClClArCb@bD?fDg@hDuAxCyBtCkDxC{FfqAsyC`DkFzCqDzg@oc@dDmD|CuEvCaGxBcGfJca@`EsLxFyJzTmVvH_MxBuE|BsGnFuT", + "zgierz|łódź radogoszcz wschód": "e{l{HcepuBlDhClClArCb@bD?pC_@dDmArCmBvC_DvDcHvbAu~B", + "zgierz|łódź radogoszcz zachód": "g{l{HsepuBnYbXtEhCdFrAjIRfg@eF~JUnUvAjFhAbGbC", + "zgierz|łódź żabieniec": "g{l{HsepuBnYbXlFtCbFlAtHLhe@{E~G_@zFD~Lp@rJvAlHtClY`QtpAnq@lExA|Dl@`FNrEW", + "łazy|łazy ła": "c|xrHuxjuBonC{~C", + "łazy|łazy łc": "c|xrHuxjuBxaA|iA~EbHdDzGxDxLpArG~@`Hz@nL`D`t@", + "łowicz główny|łowicz przedmieście": "eg_}HmdyxBpBoCpAcAdBm@nBIhKjBrCxAfCxBzBdDlBdFhF`WvCxJ|@zF", + "łódź andrzejów szosa|łódź olechów wschód": "ywxzHysuvBtDg@xIJ~Lw@hDRzBn@jCdBjKfMtBnFlAjHjIbkA", + "łódź andrzejów szosa|łódź widzew": "ywxzHysuvBqCrAaC~BiIbPac@zkAwR|c@wB~FgBlG}CbQs[rcCaBxOcF|l@", + "łódź andrzejów|łódź widzew": "otxzHymvvB}x@~{BiUdi@qBfGsB`J{AnJu]rnCsVz}C", + "łódź arturówek|łódź radogoszcz wschód": "kfg{HqawuBgm@~h@yFtIoM|Y", + "łódź arturówek|łódź warszawska": "kfg{HqawuBrF_IfEoJbCoItGeZjDgKvE}IxHcJ", + "łódź chojny|łódź dąbrowa": "squzHux~uB`A{UEcGYwFs@{FqAgGuB_GuByDoF{FmFgCig@}H", + "łódź chojny|łódź kaliska": "}quzHis~uBo@bUcAnSgCnf@aBnUEhGRbIfAxJzB~I~Svd@pBbGjBfKb@`GLpEOtJgAvKiIre@eAjEsAvDcD|F}UrZyDnDeFrCq_@lOaElAaQjCiTxAa[vGce@jIaU|K}WbV", + "łódź chojny|łódź olechów wiadukt": "}quzHis~uBbAqMfDcp@nAoRpIw_AnAcXRiJAeJ_@cLeH}}@qBa_@", + "łódź chojny|łódź pabianicka": "}quzHis~uBo@bUaBz[iBb^}AvSI`IL|GlA~KzB~IzOh]zCnH|AbF`A|En@pFZ~FBtEQhHk@fGgKfl@oAdEoBfEwItL", + "łódź chojny|łódź widzew": "squzHux~uBx@mQDaH]gJgAkI}BmIoC{F}D_FwE}CiIqByQaC}l@qKujBiLyGiB}GcEcFoF{EgIeDaJuCcMiBsLa@kH@cJt@qN", + "łódź dąbrowa|łódź zarzew": "kswzHmsavBm_@}GaaAaG", + "łódź fabryczna|łódź niciarniana": "ae~zHolzuBhBmUTqG`HmjCz@if@", + "łódź fabryczna|łódź widzew": "ae~zHolzuBhBmUTqGbSssHd@}JrEgl@", + "łódź kaliska|łódź pabianicka": "}r|zHqnquB|WcV`U}Kbe@kI`[wGzOgAnUiDb\\wLlKyErDcChDmDzL}O", + "łódź kaliska|łódź żabieniec": "gs|zH}mquByYtQqKvD_cCvyAiaAp\\cFbA", + "łódź lublinek|łódź retkinia": "mptzHwzcuBws@ebAiDkG_DeIkCiKu{@anE", + "łódź marysin|łódź stoki": "}nd{Hs`|uBrVydAjEmLrCcF|B}ClFeFbPkLxD{BxCiAnDw@`E[rP`@rFQfH_BzFyC`HsGjFiIbEaK|DqO", + "łódź marysin|łódź warszawska": "}nd{Hs`|uBoFtTyExL{HpMsMnN", + "łódź marysin|łódź widzew": "}nd{Hs`|uBxTy_A`BeGlBcFhCkFrGuI`VqQdIsDxIiArP`@~DGlDe@bEmAdFoC~CiCfDuDvBeDdDwGbC_HvN}k@zCoJ|u@}_BrByIpAaO", + "łódź niciarniana|łódź widzew": "cv}zHg~`vBjHocC`A_PpDqd@", + "łódź olechów wiadukt|łódź olechów zachód": "ehuzH_chvBkAwp@mDqn@", + "łódź olechów wschód|łódź olechów zachód": "{nvzH{ervBnX~tDjDpj@", + "łódź radogoszcz zachód|łódź żabieniec": "gnh{HscouBlY`QtpAnq@lExA|Dl@`FNrEW", + "łódź stoki|łódź widzew": "wr_{HetavBpIi]zCoJ|u@}_BrByIpAaO", + "łódź widzew|łódź zarzew": "}j}zHsoevBo@lLKpFLlHn@fHtBzLlClKdDjI~DvGpCbD|D`DpDlBzDnArFr@bc@hC" }, "segmentColors": { - "warszawa grochów|warszawa wschodnia": [[0, 0]], - "warszawa centralna|warszawa wschodnia": [[0, 0]], - "warszawa centralna|warszawa zachodnia": [[0, 0]], - "warszawa włochy|warszawa zachodnia": [[0, 0]], - "józefinów|warszawa włochy": [[0, 0]], - "józefinów|pruszków": [[0, 0]], - "grodzisk mazowiecki|pruszków": [[0, 0]], - "grodzisk mazowiecki|korytów": [[0, 0]], - "korytów|szeligi": [[0, 0]], - "biała rawska|szeligi": [[0, 0]], - "biała rawska|strzałki": [[0, 0]], - "idzikowice|strzałki": [[0, 0]], - "idzikowice|opoczno południe": [[0, 0]], - "opoczno południe|pilichowice": [[0, 0]], - "olszamowice|pilichowice": [[0, 0]], - "olszamowice|włoszczowa północ": [[0, 0]], - "knapówka|włoszczowa północ": [[0, 0]], - "knapówka|psary": [[0, 0]], - "psary|starzyny": [[0, 0]], - "sprowa|starzyny": [[0, 0]], - "kozłów|sprowa": [[0, 0]], - "kozłów|tunel": [[0, 0]], - "miechów|tunel": [[0, 0]], - "miechów|słomniki": [[0, 0]], - "niedźwiedź|słomniki": [[0, 0]], - "niedźwiedź|zastów": [[0, 0]], - "raciborowice|zastów": [[0, 0]], - "kraków batowice|raciborowice": [[0, 0]], - "kraków batowice|kraków przedmieście": [[0, 0]], - "kraków główny|kraków przedmieście": [[0, 0]], - "kraków główny|kraków zabłocie": [[0, 0]], - "kraków płaszów pzs kpa|kraków zabłocie": [[0, 0]], - "góra włodowska|psary": [[0, 0]], - "góra włodowska|zawiercie": [[0, 0]], - "zawiercie|łazy ła": [[0, 0]], - "łazy|łazy ła": [[0, 0]], - "łazy|łazy łc": [[0, 0]], - "dąbrowa górnicza ząbkowice|łazy łc": [[0, 0]], - "dąbrowa górnicza|dąbrowa górnicza ząbkowice": [[0, 0]], - "będzin|dąbrowa górnicza": [[0, 0]], - "będzin|sosnowiec główny": [[0, 0]], - "katowice zawodzie|sosnowiec główny": [[0, 0]], - "katowice|katowice zawodzie": [[0, 0]], - "włoszczowa północ|żelisławice": [[0, 0]], - "grodzisk mazowiecki|żyrardów": [[0, 0]], - "radziwiłłów mazowiecki|żyrardów": [[0, 0]], - "radziwiłłów mazowiecki|skierniewice": [[0, 0]], - "płyćwia|skierniewice": [[0, 0]], - "płyćwia|rogów": [[0, 0]], - "koluszki|rogów": [[0, 0]], - "koluszki|rokiciny": [[0, 0]], - "baby|rokiciny": [[0, 0]], - "baby|piotrków trybunalski": [[0, 0]], - "piotrków trybunalski towarowy|rozprza": [[0, 0]], - "warszawa gołąbki|warszawa włochy": [[0, 0]], - "bednary|warszawa gołąbki": [ - [0, 0], - [12, 1], - [707, 0] - ], - "bednary|łowicz główny": [[0, 0]], - "jackowice|łowicz główny": [[0, 0]], - "jackowice|stara wieś": [ + "baby|moszczenica": [[0, 0]], + "baby|piotrków trybunalski": [ [0, 0], - [9, 1], - [163, 0] + [4, 1], + [5, 0], + [6, 1], + [7, 0] ], - "kutno|stara wieś": [[0, 0]], - "krzewie|kutno": [[0, 0]], - "gałkówek|koluszki": [[0, 0]], - "gałkówek|łódź andrzejów": [[0, 0]], - "łódź andrzejów|łódź widzew": [[0, 0]], - "łódź fabryczna|łódź widzew": [[0, 0]], - "mikołajów|żakowice południowe": [[0, 0]], - "gałkówek|żakowice południowe": [[0, 0]], - "łódź marysin|łódź widzew": [[0, 0]], - "zgierz|łódź marysin": [[0, 0]], - "zgierz|zgierz północ": [[0, 0]], - "zgierz kontrewers|zgierz północ": [[0, 0]], - "chociszew|zgierz kontrewers": [[0, 0]], - "chociszew|ozorków": [[0, 0]], - "ozorków|łęczyca": [[0, 0]], - "witonia|łęczyca": [[0, 0]], - "kutno|witonia": [[0, 0]], - "kraków główny|kraków płaszów pzs kpa": [[0, 0]], - "warszawa praga wpt m|warszawa wschodnia": [[0, 0]], - "katowice zawodzie|mysłowice": [[0, 0]], - "katowice|katowice tow. ktc": [[0, 0]], - "kraków główny|sosnowiec maczki": [ + "baby|rokiciny": [ [0, 0], - [69, 1], - [988, 0] + [11, 1], + [12, 0] ], - "dorota|sosnowiec maczki": [[0, 0]], - "dorota|dąbrowa górnicza południowa": [[0, 0]], - "dąbrowa górnicza huta katowice|dąbrowa górnicza południowa": [[0, 0]], - "dąbrowa górnicza huta katowice|dąbrowa górnicza ząbkowice": [[0, 0]], - "myszków|zawiercie": [[0, 0]], - "myszków|rozprza": [ + "baby|wolbórka": [ [0, 0], - [1, 1], - [1148, 0] + [11, 1], + [12, 0] ], - "gałkówek|rokiciny": [[0, 0]], - "łódź chojny|łódź widzew": [[0, 0]], - "retkinia|łódź chojny": [[0, 0]], - "retkinia|łódź lublinek": [[0, 0]], - "pabianice|łódź lublinek": [[0, 0]], - "dobroń|pabianice": [[0, 0]], - "dobroń|kolumna": [[0, 0]], - "kolumna|łask": [[0, 0]], - "borszewice|łask": [[0, 0]], - "borszewice|gajewniki": [[0, 0]], - "gajewniki|zduńska wola": [[0, 0]], - "sieradz|zduńska wola": [[0, 0]], - "łódź chojny|łódź dąbrowa pbs": [[0, 0]], - "łódź dąbrowa pbs|łódź widzew": [[0, 0]], - "kraków główny kga|sosnowiec maczki": [ - [0, 0], - [17, 1], - [927, 0] + "baranówka|zastów": [[0, 0]], + "baranówka|łuczyce": [[0, 0]], + "bednary|bełchów": [[0, 0]], + "bednary|bobrowniki": [[0, 0]], + "bednary|warszawa gołąbki": [[0, 1]], + "bednary|łowicz główny": [ + [0, 1], + [1, 0] ], - "kraków główny|kraków główny kga": [[0, 0]], - "łódź fabryczna|łódź niciarniana": [[0, 0]], - "łódź niciarniana|łódź widzew": [[0, 0]], - "warszawa podskarbińska|warszawa wschodnia": [[0, 0]], - "lipce reymontowskie|płyćwia": [[0, 0]], - "lipce reymontowskie|rogów": [[0, 0]], - "bedoń|łódź andrzejów": [[0, 0]], + "bednary|łowicz przedmieście": [[0, 0]], "bedoń|justynów": [[0, 0]], - "gałkówek|justynów": [[0, 0]], - "gałkówek|żakowice": [[0, 0]], - "koluszki|żakowice": [[0, 0]], - "koluszki|wągry": [[0, 0]], - "rogów|wągry": [[0, 0]], - "przyłęk duży|rogów": [[0, 0]], - "krosnowa|przyłęk duży": [[0, 0]], - "krosnowa|lipce reymontowskie": [[0, 0]], - "maków|płyćwia": [[0, 0]], - "dąbrowice skierniewickie|maków": [[0, 0]], - "dąbrowice skierniewickie|skierniewice": [[0, 0]], - "puszcza mariańska|skierniewice": [[0, 0]], - "koluszki|żakowice południowe": [[0, 0]], - "idzikowice|radzice pzs r31": [[0, 0]], - "łowicz główny|łowicz przedmieście": [[0, 0]], - "stare grudze|łowicz przedmieście": [[0, 0]], - "domaniewice|stare grudze": [[0, 0]], - "domaniewice|domaniewice centrum": [[0, 0]], - "domaniewice centrum|kamień łowicki": [[0, 0]], - "głowno północne|kamień łowicki": [[0, 0]], - "głowno|głowno północne": [[0, 0]], + "bedoń|łódź andrzejów": [[0, 0]], + "bełchów|bobrowniki": [[0, 0]], + "bełchów|mokra": [[0, 0]], + "bełchów|płyćwia": [[0, 0]], + "bełchów|sierakowice skierniewickie": [[0, 0]], + "bełchów|skierniewice": [[0, 0]], + "bełchów|łowicz główny": [[0, 0]], + "bełchów|łowicz przedmieście": [[0, 0]], + "biała rawska|strzałki": [[0, 0]], + "biała rawska|szeligi": [[0, 0]], + "borowa górka|bukowno": [[0, 0]], + "borszewice|gajewniki": [[0, 0]], + "borszewice|łask": [[0, 0]], "bratoszewice|głowno": [[0, 0]], "bratoszewice|stryków": [[0, 0]], - "stryków|swędów": [[0, 0]], - "glinnik|swędów": [[0, 0]], - "glinnik|glinnik wieś": [[0, 0]], - "glinnik wieś|smardzew": [[0, 0]], - "smardzew|zgierz rudunki": [[0, 0]], - "zgierz|zgierz rudunki": [[0, 0]], - "zgierz|łódź radogoszcz wschód": [[0, 0]], - "łódź arturówek|łódź radogoszcz wschód": [[0, 0]], - "łódź arturówek|łódź warszawska": [[0, 0]], - "łódź marysin|łódź warszawska": [[0, 0]], - "łódź marysin|łódź stoki": [[0, 0]], - "łódź stoki|łódź widzew": [[0, 0]], - "słotwiny|żakowice południowe": [[0, 0]], - "mikołajów|słotwiny": [[0, 0]], - "sędziszów towarowy|warszawa zachodnia peron 8": [ - [0, 0], - [1, 1], - [4570, 0] - ], - "sędziszów|sędziszów towarowy": [[0, 0]], - "gniewięcin apo|sędziszów": [[0, 0]], - "gniewięcin apo|klimontów apo": [[0, 0]], - "klimontów apo|kozłów": [[0, 0]], - "charsznica|tunel": [[0, 0]], - "charsznica|gajówka apo": [[0, 0]], - "gajówka apo|wolbrom": [[0, 0]], - "wolbrom|zarzecze apo": [[0, 0]], - "jaroszowiec olkuski|zarzecze apo": [[0, 0]], - "jaroszowiec olkuski|olkusz": [[0, 0]], + "brwinów|milanówek": [[0, 0]], + "brwinów|parzniew": [[0, 0]], + "brynów|katowice": [[0, 0]], + "bukowno przymiarki|sławków": [[0, 0]], + "bukowno|bukowno przymiarki": [[0, 0]], "bukowno|olkusz": [[0, 0]], "bukowno|sławków": [[0, 0]], - "dąbrowa górnicza wschodnia|sławków": [[0, 0]], + "będzin ksawera|będzin miasto": [[0, 0]], + "będzin ksawera|dąbrowa górnicza": [[0, 0]], + "będzin|będzin miasto": [[0, 0]], + "będzin|dąbrowa górnicza": [[0, 0]], + "będzin|sosnowiec główny": [[0, 0]], + "charsznica|gajówka": [[0, 0]], + "charsznica|gajówka apo": [[0, 0]], + "charsznica|tunel": [[0, 0]], + "chechło|dobroń": [[0, 0]], + "chechło|pabianice": [[0, 0]], + "chociszew|grotniki": [[0, 0]], + "chociszew|ozorków": [[0, 0]], + "chociszew|ozorków nowe miasto": [[0, 0]], + "chociszew|zgierz kontrewers": [[0, 0]], + "chrusty nowe|rokiciny": [[0, 0]], + "chrusty nowe|żakowice": [[0, 0]], + "chruszczobród|dąbrowa górnicza sikorka": [[0, 0]], + "chruszczobród|wiesiółka": [[0, 0]], + "chrząstowice olkuskie|jaroszowiec olkuski": [[0, 0]], + "chrząstowice olkuskie|zarzecze apo": [[0, 0]], + "czarnca|knapówka": [[0, 0]], + "dionizów|gajewniki": [[0, 0]], + "dionizów|zduńska wola": [[0, 0]], + "dobroń|kolumna": [[0, 0]], + "dobroń|pabianice": [[0, 0]], + "domaniewice centrum|kamień łowicki": [[0, 0]], + "domaniewice|domaniewice centrum": [[0, 0]], + "domaniewice|głowno": [[0, 0]], + "domaniewice|stare grudze": [[0, 0]], + "domaniewice|łowicz przedmieście": [[0, 0]], + "dorota|dąbrowa górnicza południowa": [[0, 0]], + "dorota|dąbrowa górnicza wschodnia": [[0, 0]], + "dorota|juliusz": [[0, 0]], + "dorota|sosnowiec maczki": [[0, 0]], + "dziadówki|miechów": [[0, 0]], + "dziadówki|tunel": [[0, 0]], + "dąbrowa górnicza gołonóg|dąbrowa górnicza pogoria": [[0, 0]], + "dąbrowa górnicza gołonóg|dąbrowa górnicza ząbkowice": [[0, 0]], + "dąbrowa górnicza huta katowice|dąbrowa górnicza południowa": [[0, 0]], + "dąbrowa górnicza huta katowice|dąbrowa górnicza strzemieszyce": [[0, 0]], + "dąbrowa górnicza huta katowice|dąbrowa górnicza ząbkowice": [[0, 0]], + "dąbrowa górnicza pogoria|dąbrowa górnicza ząbkowice": [[0, 0]], + "dąbrowa górnicza sikorka|dąbrowa górnicza ząbkowice": [[0, 0]], "dąbrowa górnicza strzemieszyce|dąbrowa górnicza wschodnia": [[0, 0]], "dąbrowa górnicza strzemieszyce|sosnowiec kazimierz": [[0, 0]], - "sosnowiec kazimierz|sosnowiec maczki": [[0, 0]], - "chrusty nowe|żakowice": [[0, 0]], - "chrusty nowe|rokiciny": [[0, 0]], - "rokiciny|łaznów": [[0, 0]], - "wolbórka|łaznów": [[0, 0]], - "baby|wolbórka": [[0, 0]], - "baby|moszczenica": [[0, 0]], - "jarosty|moszczenica": [[0, 0]], - "jarosty|piotrków trybunalski": [[0, 0]], + "dąbrowa górnicza towarowa dta r5|kozioł": [[0, 0]], + "dąbrowa górnicza towarowa dta r5|przemiarki": [[0, 0]], + "dąbrowa górnicza towarowa|dąbrowa górnicza towarowa dta r5": [[0, 0]], + "dąbrowa górnicza towarowa|kozioł": [[0, 0]], + "dąbrowa górnicza wschodnia|kozioł": [[0, 0]], + "dąbrowa górnicza wschodnia|sławków": [[0, 0]], + "dąbrowa górnicza ząbkowice|łazy łc": [[0, 0]], + "dąbrowa górnicza|dąbrowa górnicza gołonóg": [[0, 0]], + "dąbrowa górnicza|dąbrowa górnicza ząbkowice": [[0, 0]], + "dąbrowice skierniewickie|maków": [[0, 0]], + "dąbrowice skierniewickie|skierniewice": [[0, 0]], + "dłubnia|kraków batowice": [[0, 0]], + "dłubnia|raciborowice": [[0, 0]], + "florek|kutno": [[0, 0]], + "gajewniki|zduńska wola": [[0, 0]], + "gajewniki|zduńska wola karsznice": [[0, 0]], + "gajówka apo|jeżówka": [[0, 0]], + "gajówka apo|wolbrom": [[0, 0]], + "gajówka|gajówka apo": [[0, 0]], "gawrony|witonia": [[0, 0]], "gawrony|łęczyca": [[0, 0]], - "sierpów|łęczyca": [[0, 0]], - "ozorków|sierpów": [[0, 0]], - "ozorków|ozorków nowe miasto": [[0, 0]], - "chociszew|ozorków nowe miasto": [[0, 0]], - "chociszew|grotniki": [[0, 0]], + "gałkówek|justynów": [[0, 0]], + "gałkówek|koluszki": [[0, 0]], + "gałkówek|rokiciny": [[0, 0]], + "gałkówek|łódź andrzejów": [[0, 0]], + "gałkówek|łódź chojny": [[0, 0]], + "gałkówek|żakowice": [[0, 0]], + "gałkówek|żakowice południowe": [[0, 0]], + "glinnik wieś|smardzew": [[0, 0]], + "glinnik|glinnik wieś": [[0, 0]], + "glinnik|stryków": [[0, 0]], + "glinnik|swędów": [[0, 0]], + "glinnik|zgierz": [[0, 0]], + "gniewięcin apo|klimontów": [[0, 0]], + "gniewięcin apo|klimontów apo": [[0, 0]], + "gniewięcin apo|sędziszów": [[0, 0]], + "goszcza|niedźwiedź": [[0, 0]], + "goszcza|łuczyce": [[0, 0]], + "grodzisk mazowiecki|jaktorów": [[0, 0]], + "grodzisk mazowiecki|korytów": [[0, 0]], + "grodzisk mazowiecki|milanówek": [[0, 0]], + "grodzisk mazowiecki|pruszków": [[0, 0]], + "grodzisk mazowiecki|żyrardów": [[0, 0]], "grotniki|jedlicze koło zgierza": [[0, 0]], + "góra włodowska|psary": [[0, 0]], + "góra włodowska|zawiercie": [[0, 0]], + "głowno północne|kamień łowicki": [[0, 0]], + "głowno|głowno północne": [[0, 0]], + "głowno|stryków": [[0, 0]], + "idzikowice|opoczno południe": [[0, 0]], + "idzikowice|radzice": [[0, 0]], + "idzikowice|strzałki": [[0, 0]], + "izabelów|męcka wola": [[0, 0]], + "izabelów|zduńska wola": [[0, 0]], + "jackowice|łowicz główny": [[0, 0]], + "jackowice|żychlin": [[0, 0]], + "jaktorów|międzyborów": [[0, 0]], + "jarosty|moszczenica": [[0, 0]], + "jarosty|piotrków trybunalski": [ + [0, 0], + [1, 1], + [2, 0], + [3, 1], + [4, 0] + ], + "jaroszowiec olkuski|olkusz": [[0, 0]], + "jaroszowiec olkuski|zarzecze apo": [[0, 0]], "jedlicze koło zgierza|zgierz kontrewers": [[0, 0]], - "zgierz jaracza|zgierz północ": [[0, 0]], - "zgierz|zgierz jaracza": [[0, 0]], - "zgierz|łódź radogoszcz zachód": [[0, 0]], - "łódź radogoszcz zachód|łódź żabieniec": [[0, 0]], - "łódź kaliska|łódź żabieniec": [[0, 0]], - "łódź kaliska|łódź pabianicka": [[0, 0]], - "łódź chojny|łódź pabianicka": [[0, 0]], - "łódź chojny|łódź dąbrowa": [[0, 0]], - "łódź dąbrowa pbs|łódź zarzew": [[0, 0]], - "łódź widzew|łódź zarzew": [[0, 0]], - "sosnowiec dańdówka|sosnowiec kazimierz": [[0, 0]], - "sosnowiec dańdówka|sosnowiec południowy": [[0, 0]], + "jesionka|radziwiłłów mazowiecki": [[0, 0]], + "jesionka|sucha żyrardowska": [[0, 0]], + "jeżówka|wolbrom": [[0, 0]], + "juliusz|sosnowiec dańdówka": [[0, 0]], + "józefinów|pruszków": [[0, 0]], + "józefinów|warszawa włochy": [[0, 0]], + "kamieńczyce|miechów": [[0, 0]], + "kamieńczyce|szczepanowice": [[0, 0]], + "katowice janów|katowice much. kmb": [ + [0, 0], + [14, 1] + ], + "katowice janów|stawiska": [[0, 0]], + "katowice much. kmb|staszic": [[0, 0]], + "katowice muchowiec staszic|staszic": [[0, 0]], + "katowice zawodzie|mysłowice": [[0, 0]], + "katowice zawodzie|sosnowiec główny": [[0, 0]], "katowice zawodzie|sosnowiec południowy": [[0, 0]], - "warszawa gołąbki|łowicz główny": [ + "katowice|katowice zawodzie": [[0, 0]], + "klimontów apo|kozłów": [[0, 0]], + "klimontów|klimontów apo": [[0, 0]], + "knapówka|psary": [[0, 0]], + "knapówka|włoszczowa północ": [[0, 0]], + "kolumna|łask": [[0, 0]], + "koluszki|rogów": [[0, 0]], + "koluszki|rokiciny": [[0, 0]], + "koluszki|słotwiny": [[0, 0]], + "koluszki|wągry": [[0, 0]], + "koluszki|żakowice": [[0, 0]], + "koluszki|żakowice południowe": [[0, 0]], + "koniecpol|starzyny": [[0, 0]], + "korytów|szeligi": [[0, 0]], + "kozłów|sprowa": [[0, 0]], + "kozłów|tunel": [[0, 0]], + "kraków batowice|kraków przedmieście": [[0, 0]], + "kraków batowice|raciborowice": [[0, 0]], + "kraków główny kga|sosnowiec maczki": [ [0, 0], - [4, 1], - [697, 0] + [2, 1], + [124, 0] ], - "kutno|łowicz główny": [ + "kraków główny|kraków główny kga": [[0, 0]], + "kraków główny|kraków przedmieście": [[0, 0]], + "kraków główny|kraków płaszów": [[0, 0]], + "kraków główny|kraków zabłocie": [[0, 0]], + "kraków olsza|kraków przedmieście": [[0, 0]], + "kraków płaszów|kraków zabłocie": [[0, 0]], + "krosnowa|lipce reymontowskie": [[0, 0]], + "krosnowa|przyłęk duży": [[0, 0]], + "krzewie|kutno": [[0, 0]], + "kutno|ostrowy": [[0, 0]], + "kutno|stara wieś": [[0, 0]], + "kutno|witonia": [[0, 0]], + "lipce reymontowskie|płyćwia": [[0, 0]], + "lipce reymontowskie|rogów": [[0, 0]], + "maków|płyćwia": [[0, 0]], + "marków|szeligi": [[0, 0]], + "miechów|słomniki": [[0, 0]], + "miechów|tunel": [[0, 0]], + "mikołajów|słotwiny": [[0, 0]], + "mikołajów|żakowice południowe": [[0, 0]], + "międzyborów|żyrardów": [[0, 0]], + "mokra|sierakowice skierniewickie": [[0, 0]], + "mokra|skierniewice": [[0, 0]], + "myszków mrzygłód|zawiercie borowe pole": [[0, 0]], + "myszków|myszków mrzygłód": [[0, 0]], + "myszków|rozprza": [ [0, 0], - [116, 1], - [245, 0] + [1, 1], + [131, 0] ], - "łódź andrzejów szosa|łódź widzew": [[0, 0]], - "łódź andrzejów szosa|łódź olechów pzs r82": [[0, 0]], - "łódź olechów wschód|łódź olechów łoc": [[0, 0]], - "łódź olechów pzs r16|łódź olechów wschód": [[0, 0]], - "łódź olechów pzs r16|łódź olechów zachód": [[0, 0]], - "łódź olechów wiadukt|łódź olechów zachód": [[0, 0]], - "łódź olechów pzs r3|łódź olechów wiadukt": [[0, 0]], - "łódź chojny|łódź olechów pzs r3": [[0, 0]], - "retkinia|łódź pabianicka": [[0, 0]], - "retkinia|łódź retkinia": [[0, 0]], - "łódź lublinek|łódź retkinia": [[0, 0]], + "myszków|zawiercie": [[0, 0]], + "mysłowice|stawiska": [[0, 0]], + "męcka wola|męka": [[0, 0]], + "męka|sieradz": [[0, 0]], + "męka|sieradz męka": [[0, 0]], + "męka|zduńska wola": [[0, 0]], + "niedźwiedź|słomniki": [[0, 0]], + "niedźwiedź|słomniki miasto": [[0, 0]], + "niedźwiedź|zastów": [[0, 0]], + "olszamowice|pilichowice": [[0, 0]], + "olszamowice|włoszczowa północ": [[0, 0]], + "opoczno południe|pilichowice": [[0, 0]], + "ozorków|ozorków nowe miasto": [[0, 0]], + "ozorków|sierpów": [[0, 0]], + "ozorków|łęczyca": [[0, 0]], "pabianice północne|łódź lublinek": [[0, 0]], "pabianice|pabianice północne": [[0, 0]], - "chechło|pabianice": [[0, 0]], - "chechło|dobroń": [[0, 0]], - "izabelów|zduńska wola": [[0, 0]], - "izabelów|męcka wola": [[0, 0]], - "męcka wola|sieradz męka": [[0, 0]], - "sieradz męka|sieradz warta": [[0, 0]], - "sieradz|sieradz warta": [[0, 0]], - "retkinia|łódź kaliska": [[0, 0]], - "bełchów|skierniewice": [[0, 0]], - "bednary|bełchów": [[0, 0]], - "warszawa stadion|warszawa wschodnia": [[0, 0]], - "warszawa powiśle|warszawa stadion": [[0, 0]], - "warszawa powiśle|warszawa śródmieście": [[0, 0]], - "warszawa ochota|warszawa śródmieście": [[0, 0]], - "warszawa ochota|warszawa zachodnia": [[0, 0]], - "warszawa ursus północny|warszawa włochy": [[0, 0]], - "warszawa gołąbki|warszawa ursus północny": [[0, 0]], - "warszawa ursus|warszawa włochy": [[0, 0]], - "warszawa ursus|warszawa ursus niedźwiadek": [[0, 0]], - "piastów|warszawa ursus niedźwiadek": [[0, 0]], - "piastów|pruszków": [[0, 0]], + "pabianice|łódź lublinek": [[0, 0]], "parzniew|pruszków": [[0, 0]], - "brwinów|parzniew": [[0, 0]], - "brwinów|milanówek": [[0, 0]], - "grodzisk mazowiecki|milanówek": [[0, 0]], - "grodzisk mazowiecki|jaktorów": [[0, 0]], - "jaktorów|międzyborów": [[0, 0]], - "międzyborów|żyrardów": [[0, 0]], - "sucha żyrardowska|żyrardów": [[0, 0]], - "jesionka|sucha żyrardowska": [[0, 0]], - "jesionka|radziwiłłów mazowiecki": [[0, 0]], + "piastów|pruszków": [[0, 0]], + "piastów|warszawa ursus niedźwiadek": [[0, 0]], + "piotrków trybunalski|rozprza": [[0, 0]], + "przemiarki|łazy łc": [[0, 0]], + "przyłęk duży|rogów": [[0, 0]], + "psary|starzyny": [[0, 0]], + "puszcza mariańska|skierniewice": [[0, 0]], + "płyćwia|rogów": [[0, 0]], + "płyćwia|skierniewice": [[0, 0]], + "raciborowice|zastów": [[0, 0]], + "radziwiłłów mazowiecki|skierniewice": [[0, 0]], "radziwiłłów mazowiecki|skierniewice rawka": [[0, 0]], + "radziwiłłów mazowiecki|żyrardów": [[0, 0]], + "retkinia|łódź chojny": [[0, 0]], + "retkinia|łódź kaliska": [[0, 0]], + "retkinia|łódź lublinek": [[0, 0]], + "retkinia|łódź pabianicka": [[0, 0]], + "retkinia|łódź retkinia": [[0, 0]], + "rogów|wągry": [[0, 0]], + "rokiciny|słotwiny": [[0, 0]], + "rokiciny|łaznów": [[0, 0]], + "sieradz męka|sieradz warta": [[0, 0]], + "sieradz|sieradz warta": [[0, 0]], + "sieradz|sędzice": [[0, 0]], + "sierpów|łęczyca": [[0, 0]], "skierniewice|skierniewice rawka": [[0, 0]], - "mokra|skierniewice": [[0, 0]], - "mokra|sierakowice skierniewickie": [[0, 0]], - "bełchów|sierakowice skierniewickie": [[0, 0]], - "bełchów|bobrowniki": [[0, 0]], - "bobrowniki|łowicz główny": [[0, 0]], - "gniewięcin apo|klimontów": [[0, 0]], - "klimontów|klimontów apo": [[0, 0]], - "dziadówki|tunel": [[0, 0]], - "dziadówki|miechów": [[0, 0]], - "kamieńczyce|miechów": [[0, 0]], - "kamieńczyce|szczepanowice": [[0, 0]], + "smardzew|zgierz rudunki": [[0, 0]], "smroków|szczepanowice": [[0, 0]], "smroków|słomniki": [[0, 0]], + "sosnowiec dańdówka|sosnowiec kazimierz": [[0, 0]], + "sosnowiec dańdówka|sosnowiec maczki": [[0, 0]], + "sosnowiec dańdówka|sosnowiec porąbka": [[0, 0]], + "sosnowiec dańdówka|sosnowiec południowy": [[0, 0]], + "sosnowiec dańdówka|stawiska": [[0, 0]], + "sosnowiec główny|sosnowiec południowy": [[0, 0]], + "sosnowiec kazimierz|sosnowiec maczki": [[0, 0]], + "sosnowiec kazimierz|sosnowiec porąbka": [[0, 0]], + "sprowa|starzyny": [[0, 0]], + "stara wieś|żychlin": [[0, 0]], + "stare grudze|łowicz przedmieście": [[0, 0]], + "stryków|swędów": [[0, 0]], + "sucha żyrardowska|żyrardów": [[0, 0]], + "sędziszów|sędziszów towarowy": [ + [0, 0], + [1, 1] + ], "słomniki|słomniki miasto": [[0, 0]], - "niedźwiedź|słomniki miasto": [[0, 0]], - "goszcza|niedźwiedź": [[0, 0]], - "goszcza|łuczyce": [[0, 0]], - "baranówka|łuczyce": [[0, 0]], - "baranówka|zastów": [[0, 0]], - "czarnca|knapówka": [[0, 0]], - "dorota|juliusz": [[0, 0]], - "juliusz|sosnowiec dańdówka": [[0, 0]], - "charsznica|gajówka": [[0, 0]], - "gajówka|gajówka apo": [[0, 0]], - "gajówka apo|jeżówka": [[0, 0]], - "jeżówka|wolbrom": [[0, 0]], + "słotwiny|żakowice południowe": [[0, 0]], + "warszawa centralna|warszawa wschodnia": [[0, 0]], + "warszawa centralna|warszawa zachodnia": [[0, 0]], + "warszawa gołąbki|warszawa włochy": [ + [0, 1], + [1, 0] + ], + "warszawa grochów|warszawa wschodnia": [[0, 0]], + "warszawa ochota|warszawa zachodnia": [[0, 0]], + "warszawa ochota|warszawa śródmieście": [ + [0, 0], + [1, 1] + ], + "warszawa podskarbińska|warszawa wschodnia": [[0, 0]], + "warszawa powiśle|warszawa stadion": [[0, 0]], + "warszawa powiśle|warszawa śródmieście": [ + [0, 0], + [1, 1] + ], + "warszawa praga wpt m|warszawa wschodnia": [[0, 0]], + "warszawa stadion|warszawa wschodnia": [[0, 0]], + "warszawa ursus|warszawa ursus niedźwiadek": [[0, 0]], + "warszawa ursus|warszawa włochy": [[0, 0]], + "warszawa włochy|warszawa zachodnia": [[0, 0]], + "wiesiółka|łazy łc": [[0, 0]], + "witonia|łęczyca": [[0, 0]], "wolbrom|zarzecze": [[0, 0]], + "wolbrom|zarzecze apo": [[0, 0]], + "wolbórka|łaznów": [[0, 0]], + "włoszczowa północ|żelisławice": [[0, 0]], "zarzecze|zarzecze apo": [[0, 0]], - "chrząstowice olkuskie|zarzecze apo": [[0, 0]], - "chrząstowice olkuskie|jaroszowiec olkuski": [[0, 0]], - "bukowno|bukowno przymiarki": [[0, 0]], - "bukowno przymiarki|sławków": [[0, 0]], - "sosnowiec kazimierz|sosnowiec porąbka": [[0, 0]], - "sosnowiec dańdówka|sosnowiec porąbka": [[0, 0]], - "łódź chojny|łódź kaliska": [[0, 0]], - "zgierz|łódź żabieniec": [[0, 0]], - "dąbrowa górnicza gołonóg|dąbrowa górnicza ząbkowice": [[0, 0]], - "dąbrowa górnicza|dąbrowa górnicza gołonóg": [[0, 0]], - "będzin ksawera|dąbrowa górnicza": [[0, 0]], - "będzin ksawera|będzin miasto": [[0, 0]], - "będzin|będzin miasto": [[0, 0]], - "myszków mrzygłód|myszków światowit": [[0, 0]], - "myszków mrzygłód|zawiercie borowe pole": [[0, 0]], "zawiercie|zawiercie borowe pole": [[0, 0]], - "wiesiółka|łazy łc": [[0, 0]], - "chruszczobród|wiesiółka": [[0, 0]], - "chruszczobród|dąbrowa górnicza sikorka": [[0, 0]], - "dąbrowa górnicza sikorka|dąbrowa górnicza ząbkowice": [[0, 0]], - "dąbrowa górnicza pogoria|dąbrowa górnicza ząbkowice": [[0, 0]], - "dąbrowa górnicza gołonóg|dąbrowa górnicza pogoria": [[0, 0]], - "łódź dąbrowa|łódź zarzew": [[0, 0]], - "kraków płaszów|kraków zabłocie": [[0, 0]], - "gajewniki|zduńska wola karsznice": [[0, 0]], - "glinnik|zgierz": [[0, 0]], - "glinnik|stryków": [[0, 0]], - "głowno|stryków": [[0, 0]], - "domaniewice|głowno": [[0, 0]], - "domaniewice|łowicz przedmieście": [[0, 0]], - "bełchów|mokra": [[0, 0]], - "koluszki|słotwiny": [[0, 0]], - "bełchów|płyćwia": [[0, 0]], - "bełchów|łowicz główny": [[0, 0]], - "józefinów|warszawa główna towarowa": [[0, 0]], - "dłubnia|raciborowice": [[0, 0]], - "marków|szeligi": [[0, 0]], - "przemiarki|łazy łc": [[0, 0]], - "dąbrowa górnicza towarowa dta r5|przemiarki": [[0, 0]], - "dąbrowa górnicza towarowa|dąbrowa górnicza towarowa dta r5": [[0, 0]], - "rokiciny|słotwiny": [[0, 0]], - "dorota|dąbrowa górnicza wschodnia": [[0, 0]], - "sosnowiec dańdówka|stawiska": [[0, 0]], - "katowice janów|stawiska": [[0, 0]], - "katowice janów|katowice much. kmb": [[0, 0]], - "katowice much. kmb|staszic": [[0, 0]], - "gałkówek|łódź olechów łoc": [[0, 0]], - "dionizów|gajewniki": [[0, 0]], - "kraków olsza|kraków przedmieście": [[0, 0]], - "sosnowiec główny|sosnowiec południowy": [[0, 0]], - "sosnowiec dańdówka|sosnowiec maczki": [[0, 0]], - "borowa górka|bukowno": [[0, 0]], - "dłubnia|kraków batowice": [[0, 0]], - "koniecpol|starzyny": [[0, 0]], - "katowice muchowiec staszic|staszic": [[0, 0]], - "dąbrowa górnicza wschodnia|kozioł": [[0, 0]], - "dąbrowa górnicza towarowa|kozioł": [[0, 0]], - "mysłowice|stawiska": [[0, 0]], - "dąbrowa górnicza towarowa dta r5|kozioł": [[0, 0]], - "kutno|ostrowy": [[0, 0]], - "dionizów|zduńska wola": [[0, 0]], - "dąbrowa górnicza huta katowice|dąbrowa górnicza strzemieszyce": [[0, 0]], + "zawiercie|łazy ła": [[0, 0]], "zduńska wola|zduńska wola karsznice": [[0, 0]], - "idzikowice|radzice": [[0, 0]] + "zgierz jaracza|zgierz północ": [[0, 0]], + "zgierz kontrewers|zgierz północ": [[0, 0]], + "zgierz|zgierz jaracza": [[0, 0]], + "zgierz|zgierz północ": [[0, 0]], + "zgierz|zgierz rudunki": [[0, 0]], + "zgierz|łódź marysin": [[0, 0]], + "zgierz|łódź radogoszcz wschód": [[0, 0]], + "zgierz|łódź radogoszcz zachód": [[0, 0]], + "zgierz|łódź żabieniec": [[0, 0]], + "łazy|łazy ła": [[0, 0]], + "łazy|łazy łc": [[0, 0]], + "łowicz główny|łowicz przedmieście": [[0, 0]], + "łódź andrzejów szosa|łódź olechów wschód": [[0, 0]], + "łódź andrzejów szosa|łódź widzew": [[0, 0]], + "łódź andrzejów|łódź widzew": [[0, 0]], + "łódź arturówek|łódź radogoszcz wschód": [[0, 0]], + "łódź arturówek|łódź warszawska": [[0, 0]], + "łódź chojny|łódź dąbrowa": [[0, 0]], + "łódź chojny|łódź kaliska": [[0, 0]], + "łódź chojny|łódź olechów wiadukt": [[0, 0]], + "łódź chojny|łódź pabianicka": [[0, 0]], + "łódź chojny|łódź widzew": [[0, 0]], + "łódź dąbrowa|łódź zarzew": [[0, 0]], + "łódź fabryczna|łódź niciarniana": [[0, 0]], + "łódź fabryczna|łódź widzew": [[0, 0]], + "łódź kaliska|łódź pabianicka": [[0, 0]], + "łódź kaliska|łódź żabieniec": [[0, 0]], + "łódź lublinek|łódź retkinia": [[0, 0]], + "łódź marysin|łódź stoki": [[0, 0]], + "łódź marysin|łódź warszawska": [[0, 0]], + "łódź marysin|łódź widzew": [[0, 0]], + "łódź niciarniana|łódź widzew": [[0, 0]], + "łódź olechów wiadukt|łódź olechów zachód": [[0, 0]], + "łódź olechów wschód|łódź olechów zachód": [[0, 0]], + "łódź radogoszcz zachód|łódź żabieniec": [[0, 0]], + "łódź stoki|łódź widzew": [[0, 0]], + "łódź widzew|łódź zarzew": [[0, 0]] + }, + "joins": { + "bełchów|skierniewice|radziwiłłów mazowiecki": { + "cut": [5, 3], + "points": "med|HiqzyB~@wMP{N[uN}@aKsU_mAiFa_@u`@upB", + "colors": [[0, 0]] + }, + "bełchów|łowicz główny|jackowice": { + "cut": [1, 4], + "points": "}_~|Hu}zxBqy@trAqCtDiK`KoG~Ea]xQ", + "colors": [[0, 0]] + }, + "bełchów|łowicz przedmieście|domaniewice": { + "cut": [5, 1], + "points": "_i~|HiezxBJxDz@dHhOdv@rCzJpUdeB", + "colors": [[0, 0]] + }, + "biała rawska|szeligi|marków": { + "cut": [1, 2], + "points": "wc~{Hwzy{BqOoFeqCgfAoPuHsa@_X", + "colors": [[0, 0]] + }, + "borowa górka|bukowno|olkusz": { + "cut": [6, 3], + "points": "kaxqHkosuBuAwG}@{IwAkh@H_IlCsj@JoXYy]Bk[", + "colors": [[0, 0]] + }, + "borszewice|gajewniki|dionizów": { + "cut": [1, 6], + "points": "{s_zH}i|rB|@d}@B~Ma@jHi@zCaAhDoCdFgBhByO`K", + "colors": [[0, 0]] + }, + "borszewice|gajewniki|zduńska wola karsznice": { + "cut": [1, 9], + "points": "{s_zH}i|rBp@|k@`@vNdAhJnBhHzCvFhCbC`DbBzFp@zGs@zDI", + "colors": [[0, 0]] + }, + "brynów|katowice|katowice zawodzie": { + "cut": [4, 3], + "points": "azvqHgu_sBeAaNMmJ~E}wACy\\OaBOsH", + "colors": [[0, 0]] + }, + "będzin|sosnowiec główny|sosnowiec południowy": { + "cut": [1, 2], + "points": "{j|qH{eysBlIjSjk@byAvAfCxA|ArAp@dCT", + "colors": [[0, 0]] + }, + "charsznica|tunel|kozłów": { + "cut": [7, 7], + "points": "wrvrHof~xByBsIwCkG{D_F{E_DgDcAkD[k\\|AaEe@aFaBoTsKeEqC}C}DyBwEoWg}@", + "colors": [[0, 0]] + }, + "czarnca|knapówka|psary": { + "cut": [2, 1], + "points": "amcuH{spxBz_DpdC", + "colors": [[0, 0]] + }, + "dionizów|zduńska wola|męka": { + "cut": [7, 2], + "points": "wa`zHgtxrB`EdBxAvA|AxBdChHbAvIv@|i@^xIfAfeA|BfbBFx_@", + "colors": [[0, 0]] + }, + "domaniewice|łowicz przedmieście|łowicz główny": { + "cut": [1, 6], + "points": "g{||HamtxBeUkcBcD}KgEaTeAwD_C}EmEoE", + "colors": [[0, 0]] + }, + "dorota|dąbrowa górnicza wschodnia|sławków": { + "cut": [6, 1], + "points": "yp_rHmhvtByCuF{BuHgAaHc@gJNo\\pB}fB[]|A}rA", + "colors": [[0, 0]] + }, + "dąbrowa górnicza huta katowice|dąbrowa górnicza strzemieszyce|dąbrowa górnicza wschodnia": { + "cut": [6, 1], + "points": "}_crHmiotB|CiAtCkBnEgFnSoa@hDaJjBqHno@ugD", + "colors": [[0, 0]] + }, + "dąbrowa górnicza huta katowice|dąbrowa górnicza ząbkowice|łazy łc": { + "cut": [3, 2], + "points": "wfirHc~otBy]qIqNmFaHiD}U{PwSqPiJ}Fg_@kXgTeNiRqN", + "colors": [[0, 0]] + }, + "dąbrowa górnicza południowa|dorota|juliusz": { + "cut": [2, 5], + "points": "}{|qHkjutBxGrCpTxNXQzOlKjDzAhLjDlCrA~DpDzD|G", + "colors": [[0, 0]] + }, + "dąbrowa górnicza strzemieszyce|dąbrowa górnicza huta katowice|dąbrowa górnicza ząbkowice": { + "cut": [5, 3], + "points": "cidrH{totBe`@k]{CcBeDi@gDNmNzCyKdE_WfGoL|BeIdA", + "colors": [[0, 0]] + }, + "dąbrowa górnicza strzemieszyce|dąbrowa górnicza wschodnia|kozioł": { + "cut": [2, 1], + "points": "}_`rHy`wtBv@yOhB{`B^[lCczB", + "colors": [[0, 0]] + }, + "dąbrowa górnicza strzemieszyce|sosnowiec kazimierz|sosnowiec maczki": { + "cut": [2, 9], + "points": "oo~qH}emtBza@bq@xDvEfDxB~DlAhEXrDKjBe@lDgBnEwD|GgJzr@aeA", + "colors": [[0, 0]] + }, + "dąbrowa górnicza towarowa dta r5|kozioł|dąbrowa górnicza wschodnia": { + "cut": [7, 4], + "points": "mcbrHmhjuBxFAlFpAvE`D`CpCrBnD`BhElAzEvQtmAtBjJbBrEtBtD`S`X", + "colors": [[0, 0]] + }, + "dąbrowa górnicza wschodnia|dorota|sosnowiec maczki": { + "cut": [4, 1], + "points": "cb_rHk}utBfFx@PVdt@zK`FhAnFlBbHxD`gAft@", + "colors": [[0, 0]] + }, + "dąbrowice skierniewickie|skierniewice|puszcza mariańska": { + "cut": [6, 3], + "points": "coc|Hkk{yBiEgEiEiGaDsG_CkHcHk]UOkFwW_EmPin@acD", + "colors": [[0, 0]] + }, + "dłubnia|kraków batowice|kraków przedmieście": { + "cut": [5, 2], + "points": "}nypHwcdyBoBd}ADtQv@jO|@lJ|AbJlCxKlE|PMn@~Q~q@lt@rkB", + "colors": [ + [0, 0], + [6, 1], + [8, 0] + ] + }, + "dłubnia|raciborowice|zastów": { + "cut": [4, 2], + "points": "{qypHapeyBsD}AiB{B{@kBkDsKuVwgAgBeJ_a@wdC", + "colors": [[0, 0]] + }, + "florek|kutno|stara wieś": { + "cut": [1, 3], + "points": "}~y}HyrytB|q@abEbOco@pI{\\vCqIJF", + "colors": [[0, 0]] + }, + "gałkówek|koluszki|rogów": { + "cut": [5, 1], + "points": "k{wzHk||wBeD_EmDkCcf@yRes@aa@yKgHorEoiC", + "colors": [[0, 0]] + }, + "gałkówek|żakowice południowe|koluszki": { + "cut": [6, 6], + "points": "g`vzHa}rwBsNs_Bm@uKQyKRwOx@eMlLq~@d@mMIiKqEsaAm@oGiAiFyBgFuCmDsCaB", + "colors": [[0, 0]] + }, + "gałkówek|żakowice południowe|słotwiny": { + "cut": [6, 4], + "points": "g`vzHa}rwBkN{}Aq@sKS_JDuMr@kOx@cIpJct@v@{MGuNqEgdA", + "colors": [[0, 0]] + }, + "góra włodowska|zawiercie|łazy ła": { + "cut": [2, 1], + "points": "uscsH}npuB``AaFzP[r~@_E", + "colors": [[0, 0]] + }, + "jackowice|łowicz główny|łowicz przedmieście": { + "cut": [4, 6], + "points": "}qa}Hm~vxBlZ}OlMoJbLcLhSg\\zCiDzB}@bCGfIvA`EjB", + "colors": [[0, 0]] + }, + "jaktorów|grodzisk mazowiecki|milanówek": { + "cut": [2, 0], + "points": "}z_}Hibx|ByJ}b@Dm@mPos@", + "colors": [[0, 0]] + }, + "juliusz|sosnowiec dańdówka|sosnowiec południowy": { + "cut": [3, 1], + "points": "kmxqHk}ctBeCfa@G~GpAjoAtCtqB", + "colors": [[0, 0]] + }, + "justynów|gałkówek|żakowice południowe": { + "cut": [2, 5], + "points": "akvzHcjewBg@csBRk@k@ylBaC}aAAuJ\\iKbAqLxKer@", + "colors": [[0, 0]] + }, + "katowice janów|katowice much. kmb|staszic": { + "cut": [3, 5], + "points": "y|qqHyvesBhSfiBvJreAFjAnCtTnA|FxOj`@jBvCzBbB", + "colors": [ + [0, 0], + [2, 1], + [3, 0] + ] + }, + "katowice janów|stawiska|mysłowice": { + "cut": [2, 5], + "points": "yyuqHmnrsBO?sEgJyAeBcKiFmCgCmA_C{@sC{@eI", + "colors": [[0, 0]] + }, + "katowice much. kmb|staszic|katowice muchowiec staszic": { + "cut": [5, 6], + "points": "m}oqHu|}rBfBh@vBFlAQ`CcA~@y@~BiDnCuGjFuSbAsILeFOkGa@iE}@{E", + "colors": [[0, 0]] + }, + "katowice zawodzie|sosnowiec południowy|sosnowiec dańdówka": { + "cut": [9, 2], + "points": "clxqHqgssBqm@ad@{AgBmAuC{@eFS}DBaCV{Ct@sCbAuB`BiCzZo_@jKmQ", + "colors": [[0, 0]] + }, + "katowice|katowice zawodzie|mysłowice": { + "cut": [4, 3], + "points": "kyvqHgyesBuBgi@GgJfAil@zAs^pAwc@A{V", + "colors": [[0, 0]] + }, + "knapówka|psary|starzyny": { + "cut": [1, 3], + "points": "_lutHgjaxBprAb{E`BnEpEtH", + "colors": [[0, 0]] + }, + "koluszki|gałkówek|łódź chojny": { + "cut": [4, 2], + "points": "qcvzHuaqwBmI|g@Fd@yApPUlKJ|LxBd}@pAdiF", + "colors": [[0, 0]] + }, + "koniecpol|starzyny|sprowa": { + "cut": [1, 2], + "points": "kzqtH}jywBbkFk|B", + "colors": [[0, 0]] + }, + "korytów|grodzisk mazowiecki|pruszków": { + "cut": [1, 1], + "points": "mj||Hynm|Bu~Bw`KaJw]{FsVsa@gjBgd@opB", + "colors": [[0, 0]] + }, + "kozioł|dąbrowa górnicza towarowa dta r5|przemiarki": { + "cut": [6, 7], + "points": "ojbrH_fjuBsw@h`@iCbBqCnCwCvEiBrEeCvJoAlHyGfYgB|FgB~DoCrEuE`FoF`D}FzA", + "colors": [[0, 0]] + }, + "kraków batowice|kraków przedmieście|kraków olsza": { + "cut": [2, 3], + "points": "{yupHc}wxBtH|F|HvEvKhFnCVnCy@", + "colors": [[0, 0]] + }, + "kraków główny kga|kraków główny|kraków płaszów": { + "cut": [3, 2], + "points": "usspHy}uxB~K}NrCmCrLaGrG}ArD_@`kAwB", + "colors": [[0, 0]] + }, + "kraków przedmieście|kraków główny|kraków płaszów": { + "cut": [3, 2], + "points": "oqspH{nvxBfEKnUcK\\ZbJmBpmA_C", + "colors": [[0, 0]] + }, + "kraków przedmieście|kraków główny|kraków zabłocie": { + "cut": [3, 3], + "points": "oqspH{nvxBfEKnUcK\\ZbJmBdkAcCfGy@dFiB", + "colors": [[0, 0]] + }, + "krzewie|kutno|witonia": { + "cut": [1, 5], + "points": "eiz}H_fxtBv}@qoFdNkk@lDcLtFwT~Gy[lCsHhDyF", + "colors": [[0, 0]] + }, + "mikołajów|słotwiny|rokiciny": { + "cut": [1, 6], + "points": "kctzHejcxBgq@fvAyGbOiIfX{@vEi@bFUlLbC~h@j@nH", + "colors": [[0, 0]] + }, + "mikołajów|słotwiny|żakowice południowe": { + "cut": [1, 5], + "points": "kctzHejcxBgq@fvAiKrUiEhNmAxFaAfJQ|I", + "colors": [[0, 0]] + }, + "mokra|skierniewice|skierniewice rawka": { + "cut": [5, 3], + "points": "gcd|H_c{yBJ}KOmJe@kI_AqHwTkiAiFa_@u`@upB", + "colors": [[0, 0]] + }, + "męka|zduńska wola|zduńska wola karsznice": { + "cut": [2, 2], + "points": "mf_zHkvorBCi\\cAsaA@oFkDstC", + "colors": [[0, 0]] + }, + "olszamowice|włoszczowa północ|żelisławice": { + "cut": [1, 2], + "points": "kspuHyayxBtnEpfBb@RNf@xP~G|KxF", + "colors": [[0, 0]] + }, + "opoczno południe|idzikowice|radzice": { + "cut": [1, 1], + "points": "ep}xHyszzBq_BmzCy_Bq|C", + "colors": [[0, 0]] + }, + "ostrowy|kutno|stara wieś": { + "cut": [1, 3], + "points": "eyz}HqkvtBty@o`FZYzPicAtDyPzXeiA", + "colors": [[0, 0]] + }, + "ostrowy|kutno|witonia": { + "cut": [1, 5], + "points": "eyz}HqkvtBty@o`FZYdRugAdNkk@lDcLtFwT~Gy[lCsHhDyF", + "colors": [[0, 0]] + }, + "przemiarki|łazy łc|łazy": { + "cut": [4, 4], + "points": "gvurHsoauBTaZ}Acc@Tg@qHgbBiAqLsBaL", + "colors": [[0, 0]] + }, + "psary|starzyny|sprowa": { + "cut": [1, 2], + "points": "uoqtH_sywB`P_Gp\\iNfJyCpfDexA", + "colors": [[0, 0]] + }, + "puszcza mariańska|skierniewice|płyćwia": { + "cut": [3, 6], + "points": "ikf|HayczBhn@`cD~DlPjFvWTNbHj]~BjHtDpHtDjFbF|E", + "colors": [[0, 0]] + }, + "retkinia|łódź chojny|łódź widzew": { + "cut": [4, 8], + "points": "w|uzHml{uBhByV~D}w@TeM|Aw^@qKYwFs@{FcA_FmA}DsBsEcCmD}B_CoDwB", + "colors": [[0, 0]] + }, + "retkinia|łódź kaliska|łódź żabieniec": { + "cut": [4, 2], + "points": "a|zzHyfruBkLz@kFrAcTrIcf@xZqLjE", + "colors": [[0, 0]] + }, + "rogów|koluszki|słotwiny": { + "cut": [1, 3], + "points": "sab{HkpcxBtdGtiDxr@~XtE~@fC@fDo@bC}A", + "colors": [[0, 0]] + }, + "rogów|koluszki|żakowice południowe": { + "cut": [1, 6], + "points": "sab{HkpcxBffGpjD|o@pWlK~CfC@xBc@xLyH`Cs@bCM", + "colors": [[0, 0]] + }, + "sosnowiec kazimierz|sosnowiec dańdówka|stawiska": { + "cut": [3, 1], + "points": "smxqHk}ctB_Cr]OrKbBfaAtCx_C", + "colors": [[0, 0]] + }, + "sprowa|kozłów|tunel": { + "cut": [4, 3], + "points": "srdsH{udyBlHIdGf@xOhCvUfFRWdJrBhUnJfZdN", + "colors": [[0, 0]] + }, + "stare grudze|łowicz przedmieście|łowicz główny": { + "cut": [1, 6], + "points": "g{||HamtxBeUkcBcD}KgEaTeAwD_C}EmEoE", + "colors": [[0, 0]] + }, + "warszawa centralna|warszawa wschodnia|warszawa grochów": { + "cut": [6, 4], + "points": "ii{}Hyam_C}Gq@}Bs@_C}BkCsFuSeaAkHkUmLyd@sEkLm@kCg@iE", + "colors": [[0, 0]] + }, + "warszawa centralna|warszawa wschodnia|warszawa praga wpt m": { + "cut": [6, 6], + "points": "ii{}Hyam_C}Gq@}Bs@qBiB_CqEwAaFwQy{@_HkTyC}KgAmCsAuBsHuG", + "colors": [[0, 0]] + }, + "warszawa centralna|warszawa zachodnia|warszawa włochy": { + "cut": [1, 3], + "points": "_jw}Hyrb_CxUf}AbEp\\lAxN|Fle@tFla@zBlMpFdU", + "colors": [[0, 0]] + }, + "warszawa gołąbki|warszawa włochy|warszawa zachodnia": { + "cut": [6, 2], + "points": "ktr}Huyq~Be@aE{@wDqHwPsI}Y}Ik_@aS_~@WKcSs}@", + "colors": [[0, 0]] + }, + "warszawa grochów|warszawa wschodnia|warszawa stadion": { + "cut": [4, 4], + "points": "ks}}H_gr_Cf@hEx@nDfEfKlLxd@xF~PdTzbA|@tC\\C", + "colors": [[0, 0]] + }, + "warszawa ochota|warszawa zachodnia|warszawa włochy": { + "cut": [0, 3], + "points": "wqv}Hco__C|CrXdAhM|Fle@tFla@zBlMpFdU", + "colors": [[0, 0]] + }, + "warszawa ursus|warszawa włochy|warszawa zachodnia": { + "cut": [5, 2], + "points": "cur}Hebr~B{AwEkHmOcHgU_XclA_@E_ZsrA", + "colors": [[0, 0]] + }, + "wągry|koluszki|żakowice": { + "cut": [1, 4], + "points": "ubb{HupcxBpsExiCxKfHho@r^~H|Dd_@xNxCnBxC`D", + "colors": [[0, 0]] + }, + "wągry|koluszki|żakowice południowe": { + "cut": [1, 6], + "points": "ubb{HupcxBprEdiCvs@t`@|o@pWlK~CfC@xBc@xLyH`Cs@bCM", + "colors": [[0, 0]] + }, + "zgierz jaracza|zgierz|łódź radogoszcz zachód": { + "cut": [1, 4], + "points": "stn{HizquBl|@lw@lUjT|DzB|DnAtDf@tEA", + "colors": [[0, 0]] + }, + "zgierz północ|zgierz|łódź żabieniec": { + "cut": [1, 5], + "points": "usn{HoyquBn{@rv@lSvR|FnDrGfBhGPtf@_F", + "colors": [[0, 0]] + }, + "zgierz rudunki|zgierz|łódź radogoszcz wschód": { + "cut": [1, 5], + "points": "ayo{Hs|ruBz`BvyAlCxA~Bl@hDNlEc@", + "colors": [[0, 0]] + }, + "łódź andrzejów szosa|łódź widzew|łódź niciarniana": { + "cut": [3, 1], + "points": "on{zHugpvBw]rnCaGvr@kTpoC", + "colors": [[0, 0]] + }, + "łódź andrzejów|gałkówek|żakowice południowe": { + "cut": [2, 5], + "points": "akvzHmhewBg@ytBRk@k@ylBaC}aAAuJ\\iKbAqLxKer@", + "colors": [[0, 0]] + }, + "łódź andrzejów|łódź widzew|łódź chojny": { + "cut": [1, 7], + "points": "om|zHexkvBe\\lcEcAhVFjH\\nFjAhIvAhHzAbGhBnFrBnEbDhF", + "colors": [[0, 0]] + }, + "łódź andrzejów|łódź widzew|łódź marysin": { + "cut": [1, 3], + "points": "om|zHexkvByFzr@sC~VwL|{AaAlHcC`Imt@z|A", + "colors": [[0, 0]] + }, + "łódź andrzejów|łódź widzew|łódź stoki": { + "cut": [1, 2], + "points": "om|zHexkvByFzr@sC~V_Mn}Ay@zFsA~E", + "colors": [[0, 0]] + }, + "łódź andrzejów|łódź widzew|łódź zarzew": { + "cut": [1, 7], + "points": "om|zHexkvBe\\lcEaAlTJbLhA|KxD|QdBjFnBtE", + "colors": [[0, 0]] + }, + "łódź chojny|retkinia|łódź lublinek": { + "cut": [3, 1], + "points": "swyzHotquBhAbIrPhy@hBbMjjAh`G", + "colors": [[0, 0]] + }, + "łódź chojny|łódź kaliska|łódź żabieniec": { + "cut": [3, 2], + "points": "y}yzH_}ruB_b@fHeEtA_RjJ{[fYeVdOqKvD", + "colors": [[0, 0]] + }, + "łódź dąbrowa|łódź chojny|łódź pabianicka": { + "cut": [5, 4], + "points": "wtuzHqo`vBpAfGr@zF\\~H?rFcBla@UdM_E|w@iBxV", + "colors": [[0, 0]] + }, + "łódź kaliska|łódź chojny|łódź widzew": { + "cut": [4, 8], + "points": "{|uzHuj{uBlBqX~D}w@TeM|Aw^@qKYwFs@{FcA_FmA}DsBsEcCmD}B_CoDwB", + "colors": [[0, 0]] + }, + "łódź pabianicka|retkinia|łódź retkinia": { + "cut": [3, 0], + "points": "swyzHotquBhAbIrPhy@fChP", + "colors": [[0, 0]] + }, + "łódź pabianicka|łódź kaliska|łódź żabieniec": { + "cut": [3, 2], + "points": "y}yzH_}ruB_b@fHeEtA_RjJ{[fYeVdOqKvD", + "colors": [[0, 0]] + } } } diff --git a/packages/map/components/stations.json b/packages/map/components/stations.json index 4754f1d..b91d158 100644 --- a/packages/map/components/stations.json +++ b/packages/map/components/stations.json @@ -1,14 +1,26 @@ [ { - "Name": "Katowice Tow. KTC", + "Name": "Bednary", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 52.106057636302864, + "Longitude": 20.06670102760546, + "id": "" + }, + { + "Name": "Borowa Górka", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.26528905318747, - "Longitude": 18.98548711536283, + "Latititude": 50.2456314057292, + "Longitude": 19.3284180981526, "id": "" }, { @@ -19,200 +31,200 @@ "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.248255774194334, - "Longitude": 18.988992476762228, + "Latititude": 50.24846066961753, + "Longitude": 18.98940371784291, "id": "" }, { - "Name": "Mysłowice", + "Name": "Charsznica", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.23790508562325, - "Longitude": 19.141623443140155, + "Latititude": 50.396195294189205, + "Longitude": 19.93944483888986, "id": "" }, { - "Name": "Szabelnia", + "Name": "Czarnca", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.25921852453205, - "Longitude": 19.110331512666356, + "Latititude": 50.8239525670773, + "Longitude": 19.944061127588398, "id": "" }, { - "Name": "Staszic", + "Name": "Dąbrowa Górnicza Południowa", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.218462541767884, - "Longitude": 19.001465526694027, + "Latititude": 50.30914125666676, + "Longitude": 19.287149241688184, "id": "" }, { - "Name": "Stawiska", + "Name": "Dąbrowa Górnicza Strzemieszyce", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.251940600103836, - "Longitude": 19.104384301176534, + "Latititude": 50.31212346604001, + "Longitude": 19.26245705325985, "id": "" }, { - "Name": "Katowice Janów", + "Name": "Dąbrowa Górnicza Towarowa", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.23756415590628, - "Longitude": 19.07915703523147, + "Latititude": 50.31754191249444, + "Longitude": 19.348403140601814, "id": "" }, { - "Name": "Żelisławice", + "Name": "Dąbrowa Górnicza Towarowa DTA R5", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.80337865175368, - "Longitude": 19.858169169133415, + "Latititude": 50.32914136549077, + "Longitude": 19.377909409750956, "id": "" }, { - "Name": "Czarnca", + "Name": "Dionizów", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.823959976470775, - "Longitude": 19.94521227641923, + "Latititude": 51.622484582037465, + "Longitude": 18.963203198008706, "id": "" }, { - "Name": "Sosnowiec Dańdówka", + "Name": "Dłubnia", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.26578, - "Longitude": 19.17415, + "Latititude": 50.10422905239111, + "Longitude": 20.023966868181382, "id": "" }, { - "Name": "Myszków", + "Name": "Florek", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.57391, - "Longitude": 19.33097, + "Latititude": 52.25816255550225, + "Longitude": 19.319099541883322, "id": "" }, { - "Name": "Przemiarki", + "Name": "Gajówka APO", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.385874, - "Longitude": 19.340057, + "Latititude": 50.39851174564296, + "Longitude": 19.86032977269081, "id": "" }, { - "Name": "Radzice", + "Name": "Jaroszowiec Olkuski", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.47348405723441, - "Longitude": 20.37363669889725, + "Latititude": 50.34297595390515, + "Longitude": 19.62373530987442, "id": "" }, { - "Name": "Marków", + "Name": "Katowice Janów", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.96781803398308, - "Longitude": 20.49848973897488, + "Latititude": 50.237616854116126, + "Longitude": 19.07943786193079, "id": "" }, { - "Name": "Warszawa Zachodnia", + "Name": "Katowice Much. KMB", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 52.2199119, - "Longitude": 20.9634155, + "Latititude": 50.226543196828615, + "Longitude": 19.009959342274435, "id": "" }, { - "Name": "Warszawa Centralna", + "Name": "Katowice Muchowiec Staszic", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 52.22812, - "Longitude": 21.00163, + "Latititude": 50.22566864191895, + "Longitude": 19.04250965449192, "id": "" }, { - "Name": "Warszawa Wschodnia", + "Name": "Katowice Towarowa KTC", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 52.25305636317541, - "Longitude": 21.058287726145462, + "Latititude": 50.26555168506183, + "Longitude": 18.984058522155077, "id": "" }, { - "Name": "Warszawa Grochów", + "Name": "Koniecpol", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 52.25382855010197, - "Longitude": 21.09513806297933, + "Latititude": 50.77668522258335, + "Longitude": 19.70204014442906, "id": "" }, { @@ -223,524 +235,524 @@ "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.30827041951533, - "Longitude": 19.383104570811348, + "Latititude": 50.308063572891264, + "Longitude": 19.38135770796104, "id": "" }, { - "Name": "Dąbrowa Górnicza Towarowa", + "Name": "Kraków Główny", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.32932205558977, - "Longitude": 19.377640767189607, + "Latititude": 50.07149062273884, + "Longitude": 19.946144659998435, "id": "" }, { - "Name": "Dąbrowa Górnicza Strzemieszyce", + "Name": "Kraków Główny KGA", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.31140078325932, - "Longitude": 19.267317086518855, + "Latititude": 50.07980087803615, + "Longitude": 19.934818510106254, "id": "" }, { - "Name": "Dąbrowa Górnicza Południowa", + "Name": "Kraków Olsza", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.312566909772805, - "Longitude": 19.287130878339372, + "Latititude": 50.07810632289425, + "Longitude": 19.96095820321322, "id": "" }, { - "Name": "Sosnowiec Maczki", + "Name": "Kraków Płaszów", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.258592821403184, - "Longitude": 19.272513244520184, + "Latititude": 50.033663473350366, + "Longitude": 19.977226847748504, "id": "" }, { - "Name": "Sosnowiec Jęzor", + "Name": "Kraków Zabłocie", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.243520135290744, - "Longitude": 19.203652380369107, + "Latititude": 50.04713324746583, + "Longitude": 19.958692739441002, "id": "" }, { - "Name": "Olkusz", + "Name": "Krzewie", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.27514549908266, - "Longitude": 19.566628609427177, + "Latititude": 52.23517536673269, + "Longitude": 19.162929558007654, "id": "" }, { - "Name": "Jaroszowiec Olkuski", + "Name": "Kutno", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.34229, - "Longitude": 19.62181, + "Latititude": 52.23184135087721, + "Longitude": 19.33089852631579, "id": "" }, { - "Name": "Zarzecze APO", + "Name": "Łódź Fabryczna", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.35678857895427, - "Longitude": 19.69180795502556, + "Latititude": 51.76917938239094, + "Longitude": 19.47356575687203, "id": "" }, { - "Name": "Wolbrom", + "Name": "Łódź Olechów", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.3759, - "Longitude": 19.7723, + "Latititude": 51.73038799039985, + "Longitude": 19.57974715859407, "id": "" }, { - "Name": "Charsznica", + "Name": "Marków", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.396613769760606, - "Longitude": 19.934853049956352, + "Latititude": 51.97009621707232, + "Longitude": 20.487815577878653, "id": "" }, { - "Name": "Klimontów", + "Name": "Męka", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.5267955564464, - "Longitude": 20.03191066771161, + "Latititude": 51.6092500705406, + "Longitude": 18.78817312185351, "id": "" }, { - "Name": "Sędziszów", + "Name": "Mikołajów", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.56586, - "Longitude": 20.05488, + "Latititude": 51.70436933343535, + "Longitude": 19.86366812774895, "id": "" }, { - "Name": "Gajówka APO", + "Name": "Mysłowice", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.399026, - "Longitude": 19.857738, + "Latititude": 50.24291628556453, + "Longitude": 19.13515356853341, "id": "" }, { - "Name": "Warszawa Gł. Tow.", + "Name": "Myszków", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 52.2133153, - "Longitude": 20.8969579, + "Latititude": 50.57229755097035, + "Longitude": 19.336057034487816, "id": "" }, { - "Name": "Warszawa Rembertów", + "Name": "Olkusz", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 52.2574687, - "Longitude": 21.1548932, + "Latititude": 50.27456140699555, + "Longitude": 19.570105054134807, "id": "" }, { - "Name": "Warszawa Praga", + "Name": "Ostrowy", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 52.2786919, - "Longitude": 21.0211558, + "Latititude": 52.29894285317692, + "Longitude": 19.192108018046426, "id": "" }, { - "Name": "Koniecpol", + "Name": "Piotrków Trybunalski", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.777658, - "Longitude": 19.7093066, + "Latititude": 51.40079861937474, + "Longitude": 19.68306790590759, "id": "" }, { - "Name": "Dłubnia", + "Name": "Przemiarki", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.1024073, - "Longitude": 20.0267566, + "Latititude": 50.386106695251975, + "Longitude": 19.339949294196305, "id": "" }, { - "Name": "Kraków Główny", + "Name": "Puszcza Mariańska", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.0718154, - "Longitude": 19.9476078, + "Latititude": 51.97531594509063, + "Longitude": 20.338748151304262, "id": "" }, { - "Name": "Kraków Olsza", + "Name": "Radzice", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.0758212, - "Longitude": 19.9689934, + "Latititude": 51.474138170504766, + "Longitude": 20.36946425984361, "id": "" }, { - "Name": "Kraków Płaszów", + "Name": "Radzice Rd1", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.0374077, - "Longitude": 19.9711116, + "Latititude": 51.48165813004324, + "Longitude": 20.34247106598081, "id": "" }, { - "Name": "Kraków Bonarka", + "Name": "Rozprza", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.0291998, - "Longitude": 19.9464366, + "Latititude": 51.303670379604725, + "Longitude": 19.661946149775623, "id": "" }, { - "Name": "Borowa Górka", + "Name": "Sędzice", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.245239, - "Longitude": 19.327073, + "Latititude": 51.629993553193096, + "Longitude": 18.56635808751955, "id": "" }, { - "Name": "Rokiciny", + "Name": "Sędziszów", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.66906, - "Longitude": 19.780959, + "Latititude": 50.56561600461014, + "Longitude": 20.054269331634696, "id": "" }, { - "Name": "Mikołajów", + "Name": "Sędziszów Towarowy", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.707381, - "Longitude": 19.861068, + "Latititude": 50.57260517567, + "Longitude": 20.07154295685518, "id": "" }, { - "Name": "Łódź Olechów", + "Name": "Sieradz", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.731575, - "Longitude": 19.600367, + "Latititude": 51.59808603087883, + "Longitude": 18.713413576725245, "id": "" }, { - "Name": "Łódź Chojny", + "Name": "Sosnowiec Dańdówka", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.725194, - "Longitude": 19.494981, + "Latititude": 50.26555166470513, + "Longitude": 19.176353655194056, "id": "" }, { - "Name": "Łódź Fabryczna", + "Name": "Sosnowiec Maczki", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.769555, - "Longitude": 19.469606, + "Latititude": 50.26344689523806, + "Longitude": 19.269658440488485, "id": "" }, { - "Name": "Puszcza Mariańska", + "Name": "Staszic", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.97553, - "Longitude": 20.329363, + "Latititude": 50.21783450402833, + "Longitude": 19.00267324850273, "id": "" }, { - "Name": "Bełchów", + "Name": "Stawiska", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 52.022929, - "Longitude": 20.035983, + "Latititude": 50.254744187281574, + "Longitude": 19.107305252540616, "id": "" }, { - "Name": "Piotrków Trybunalski", + "Name": "Szabelnia", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.410472, - "Longitude": 19.684662, + "Latititude": 50.25872557123517, + "Longitude": 19.11115209337257, "id": "" }, { - "Name": "Rozprza", + "Name": "Warszawa Centralna", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.30153, - "Longitude": 19.660109, + "Latititude": 52.22918974227494, + "Longitude": 21.006061489129902, "id": "" }, { - "Name": "Bednary", + "Name": "Warszawa Główna Towarowa WOA", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 52.105549, - "Longitude": 20.064796, + "Latititude": 52.21101727347063, + "Longitude": 20.882946579487534, "id": "" }, { - "Name": "Jackowice", + "Name": "Warszawa Gołąbki", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 52.156928, - "Longitude": 19.795845, + "Latititude": 52.207962870510315, + "Longitude": 20.860641771557987, "id": "" }, { - "Name": "Stara Wieś", + "Name": "Warszawa Grochów", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 52.227415, - "Longitude": 19.423632, + "Latititude": 52.25356298893073, + "Longitude": 21.10067927486635, "id": "" }, { - "Name": "Kutno", + "Name": "Warszawa Podskarbińska", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 52.226998, - "Longitude": 19.346715, + "Latititude": 52.257049739260005, + "Longitude": 21.073353577942353, "id": "" }, { - "Name": "Florek", + "Name": "Warszawa Praga WPT M", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 52.256806, - "Longitude": 19.318026, + "Latititude": 52.262717941371, + "Longitude": 21.057668148013047, "id": "" }, { - "Name": "Ostrowy", + "Name": "Warszawa Wschodnia", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 52.298848, - "Longitude": 19.192289, + "Latititude": 52.25200145679036, + "Longitude": 21.0549169696481, "id": "" }, { - "Name": "Krzewie", + "Name": "Warszawa Zachodnia", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 52.235465, - "Longitude": 19.166905, + "Latititude": 52.21984957927749, + "Longitude": 20.964114547732947, "id": "" }, { - "Name": "Dionizów", + "Name": "Wolbrom", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.623984, - "Longitude": 18.96163, + "Latititude": 50.376155908206826, + "Longitude": 19.772340415184715, "id": "" }, { - "Name": "Zduńska Wola Karsznice", + "Name": "Zarzecze APO", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.589007, - "Longitude": 18.994707, + "Latititude": 50.35412440740131, + "Longitude": 19.69087025585767, "id": "" }, { - "Name": "Sieradz", + "Name": "Zduńska Wola Karsznice", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.628875, - "Longitude": 18.570001, + "Latititude": 51.58027202912519, + "Longitude": 19.00707575018461, "id": "" }, { - "Name": "Sędzice", + "Name": "Żelisławice", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.628891, - "Longitude": 18.56999, + "Latititude": 50.805892199965406, + "Longitude": 19.865575788214503, "id": "" } ] diff --git a/packages/map/components/stationsPassenger.json b/packages/map/components/stationsPassenger.json new file mode 100644 index 0000000..92016e2 --- /dev/null +++ b/packages/map/components/stationsPassenger.json @@ -0,0 +1,1154 @@ +[ + { + "Name": "Baranówka", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.146691291122025, + "Longitude": 20.095421321916447, + "id": "" + }, + { + "Name": "Bedoń", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.73191830411205, + "Longitude": 19.642306445511945, + "id": "" + }, + { + "Name": "Będzin Ksawera", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.33051257221028, + "Longitude": 19.157932841266483, + "id": "" + }, + { + "Name": "Będzin Miasto", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.31883445019655, + "Longitude": 19.135529284679006, + "id": "" + }, + { + "Name": "Bobrowniki", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 52.05865422521243, + "Longitude": 20.01035548260656, + "id": "" + }, + { + "Name": "Borszewice", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.60975384239747, + "Longitude": 19.035593394540836, + "id": "" + }, + { + "Name": "Bratoszewice", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.9385324, + "Longitude": 19.6528184, + "id": "" + }, + { + "Name": "Brwinów", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 52.141968148134275, + "Longitude": 20.719194410468486, + "id": "" + }, + { + "Name": "Bukowno Przymiarki", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.27537256265537, + "Longitude": 19.409752538731837, + "id": "" + }, + { + "Name": "Chechło", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.64488410538385, + "Longitude": 19.286356414166157, + "id": "" + }, + { + "Name": "Chrusty Nowe", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.694704071197144, + "Longitude": 19.79424127922396, + "id": "" + }, + { + "Name": "Chruszczobród", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.40009649831787, + "Longitude": 19.32931420338169, + "id": "" + }, + { + "Name": "Chrząstowice Olkuskie", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.34435489415277, + "Longitude": 19.68571699147693, + "id": "" + }, + { + "Name": "Dąbrowa Górnicza Gołonóg", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.343771680943156, + "Longitude": 19.225753569014817, + "id": "" + }, + { + "Name": "Dąbrowa Górnicza Pogoria", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.35048447689653, + "Longitude": 19.24080055927813, + "id": "" + }, + { + "Name": "Dąbrowa Górnicza Sikorka", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.38878348750731, + "Longitude": 19.298174870031133, + "id": "" + }, + { + "Name": "Dąbrowice Skierniewickie", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.93334955099502, + "Longitude": 20.1023074790667, + "id": "" + }, + { + "Name": "Dobroń", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.62939187249293, + "Longitude": 19.240939064161868, + "id": "" + }, + { + "Name": "Domaniewice Centrum", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 52.01201883333334, + "Longitude": 19.792092933333333, + "id": "" + }, + { + "Name": "Dziadówki", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.39914242370052, + "Longitude": 20.008382897059523, + "id": "" + }, + { + "Name": "Gajówka", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.394603164947924, + "Longitude": 19.87881337524256, + "id": "" + }, + { + "Name": "Gawrony", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 52.11232741783339, + "Longitude": 19.219556161648676, + "id": "" + }, + { + "Name": "Glinnik Wieś", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.88263531221122, + "Longitude": 19.482054464260894, + "id": "" + }, + { + "Name": "Głowno Północne", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.97903585236179, + "Longitude": 19.72205831610756, + "id": "" + }, + { + "Name": "Goszcza", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.185007005868854, + "Longitude": 20.06098573247669, + "id": "" + }, + { + "Name": "Grotniki", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.88723658083468, + "Longitude": 19.311029940873883, + "id": "" + }, + { + "Name": "Izabelów", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.61012412129792, + "Longitude": 18.914219357510415, + "id": "" + }, + { + "Name": "Jaktorów", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 52.08665261532609, + "Longitude": 20.551824962419214, + "id": "" + }, + { + "Name": "Jarosty", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.461597623838934, + "Longitude": 19.693160447702294, + "id": "" + }, + { + "Name": "Jedlicze koło Zgierza", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.86930167549174, + "Longitude": 19.3209187688166, + "id": "" + }, + { + "Name": "Jesionka", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 52.014795205491104, + "Longitude": 20.334610466048485, + "id": "" + }, + { + "Name": "Jeżówka", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.39926841321836, + "Longitude": 19.81565657973849, + "id": "" + }, + { + "Name": "Justynów", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.730831555663336, + "Longitude": 19.683573962509886, + "id": "" + }, + { + "Name": "Kamień Łowicki", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.9887324, + "Longitude": 19.7531472, + "id": "" + }, + { + "Name": "Kamieńczyce", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.32726569209577, + "Longitude": 20.00582007607637, + "id": "" + }, + { + "Name": "Katowice Szopienice Poludniowe", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.258903179906184, + "Longitude": 19.09206620756764, + "id": "" + }, + { + "Name": "Klimontów", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.52533942635535, + "Longitude": 20.03013671609695, + "id": "" + }, + { + "Name": "Kolumna", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.61494979711046, + "Longitude": 19.196104818228314, + "id": "" + }, + { + "Name": "Kraków Grzegórzki", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.05709109623892, + "Longitude": 19.94806926791373, + "id": "" + }, + { + "Name": "Krosnowa", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.863342479323265, + "Longitude": 19.92318871444777, + "id": "" + }, + { + "Name": "Lipce Reymontowskie", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.905151727112205, + "Longitude": 19.943345936178492, + "id": "" + }, + { + "Name": "Łaznów", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.63114003945656, + "Longitude": 19.75478574478225, + "id": "" + }, + { + "Name": "Łódź Andrzejów Szosa", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.74158098881131, + "Longitude": 19.61289689936735, + "id": "" + }, + { + "Name": "Łódź Arturówek", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.81544821706302, + "Longitude": 19.45663354690811, + "id": "" + }, + { + "Name": "Łódź Dąbrowa", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.73588611622502, + "Longitude": 19.510602533275524, + "id": "" + }, + { + "Name": "Łódź Niciarniana", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.76681101317622, + "Longitude": 19.50745460500938, + "id": "" + }, + { + "Name": "Łódź Olechów Wiadukt", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.72366240072698, + "Longitude": 19.543642480971105, + "id": "" + }, + { + "Name": "Łódź Olechów Wschód", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.72976520088911, + "Longitude": 19.594756175572556, + "id": "" + }, + { + "Name": "Łódź Olechów Zachód", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.72491382532339, + "Longitude": 19.559001684134078, + "id": "" + }, + { + "Name": "Łódź Pabianicka", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.726436020918854, + "Longitude": 19.445035712306534, + "id": "" + }, + { + "Name": "Łódź Radogoszcz Wschód", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.8266993783616, + "Longitude": 19.443281564010547, + "id": "" + }, + { + "Name": "Łódź Radogoszcz Zachód", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.82199002922968, + "Longitude": 19.415749619461405, + "id": "" + }, + { + "Name": "Łódź Retkinia", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.740250409165434, + "Longitude": 19.406247692926094, + "id": "" + }, + { + "Name": "Łódź Stoki", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.776557364149916, + "Longitude": 19.510546108674035, + "id": "" + }, + { + "Name": "Łódź Warszawska", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.808045334656896, + "Longitude": 19.47124329223667, + "id": "" + }, + { + "Name": "Łódź Zarzew", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.75170324548729, + "Longitude": 19.513244133071154, + "id": "" + }, + { + "Name": "Łuczyce", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.16271952924165, + "Longitude": 20.07447600653026, + "id": "" + }, + { + "Name": "Maków", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.942221182346096, + "Longitude": 20.045655134291387, + "id": "" + }, + { + "Name": "Męcka Wola", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.60909653885142, + "Longitude": 18.846654904141555, + "id": "" + }, + { + "Name": "Międzyborów", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 52.06361849985121, + "Longitude": 20.482497374168826, + "id": "" + }, + { + "Name": "Milanówek", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 52.125072019592174, + "Longitude": 20.667955314275716, + "id": "" + }, + { + "Name": "Mokra", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.97876868587519, + "Longitude": 20.0995133124333, + "id": "" + }, + { + "Name": "Moszczenica", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.50364725628575, + "Longitude": 19.70050590761728, + "id": "" + }, + { + "Name": "Myszków Mrzygłód", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.54390634, + "Longitude": 19.37711306, + "id": "" + }, + { + "Name": "Ozorków Nowe Miasto", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.95891866960752, + "Longitude": 19.269625326030507, + "id": "" + }, + { + "Name": "Pabianice Północne", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.66992324480552, + "Longitude": 19.341948767770308, + "id": "" + }, + { + "Name": "Parzniew", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 52.15644389879894, + "Longitude": 20.76314048611473, + "id": "" + }, + { + "Name": "Piastów", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 52.18252746758873, + "Longitude": 20.842556397046103, + "id": "" + }, + { + "Name": "Przyłęk Duży", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.84100155610682, + "Longitude": 19.917241649054994, + "id": "" + }, + { + "Name": "Sieradz Męka", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.615145459337015, + "Longitude": 18.776620006337538, + "id": "" + }, + { + "Name": "Sieradz Warta", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.60295086775663, + "Longitude": 18.730296414766894, + "id": "" + }, + { + "Name": "Sierakowice Skierniewickie", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.998660556862404, + "Longitude": 20.061659874935195, + "id": "" + }, + { + "Name": "Sierpów", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 52.0182690697196, + "Longitude": 19.22275595150834, + "id": "" + }, + { + "Name": "Skierniewice Rawka", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.977636725993214, + "Longitude": 20.2213380253853, + "id": "" + }, + { + "Name": "Słomniki Miasto", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.235856147124885, + "Longitude": 20.07639868658027, + "id": "" + }, + { + "Name": "Smardzew", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.87108598571428, + "Longitude": 19.467449142857145, + "id": "" + }, + { + "Name": "Smroków", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.27474651883033, + "Longitude": 20.04657051979918, + "id": "" + }, + { + "Name": "Sosnowiec Porąbka", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.27216118106094, + "Longitude": 19.21627510911655, + "id": "" + }, + { + "Name": "Stare Grudze", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 52.046634843129176, + "Longitude": 19.899922218168058, + "id": "" + }, + { + "Name": "Sucha Żyrardowska", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 52.02287654638554, + "Longitude": 20.35942291182826, + "id": "" + }, + { + "Name": "Swędów", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.90585632, + "Longitude": 19.540179360000003, + "id": "" + }, + { + "Name": "Szczepanowice", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.301212487249295, + "Longitude": 20.024600477905025, + "id": "" + }, + { + "Name": "Warszawa Ochota", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 52.22571241877746, + "Longitude": 20.99025551132413, + "id": "" + }, + { + "Name": "Warszawa Powiśle", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 52.233693725751614, + "Longitude": 21.02803574436993, + "id": "" + }, + { + "Name": "Warszawa Stadion", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 52.24479898194331, + "Longitude": 21.043977459658965, + "id": "" + }, + { + "Name": "Warszawa Śródmieście", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 52.22939085688454, + "Longitude": 21.007642709677157, + "id": "" + }, + { + "Name": "Warszawa Ursus", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 52.19668853829668, + "Longitude": 20.88611333086377, + "id": "" + }, + { + "Name": "Warszawa Ursus Niedźwiadek", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 52.19139253111789, + "Longitude": 20.869760780383483, + "id": "" + }, + { + "Name": "Wągry", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.79099949711505, + "Longitude": 19.849333282887123, + "id": "" + }, + { + "Name": "Wiesiółka", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.41465736306353, + "Longitude": 19.348943114788113, + "id": "" + }, + { + "Name": "Wolbórka", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.59331557617909, + "Longitude": 19.72347846500562, + "id": "" + }, + { + "Name": "Zarzecze", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.36335781600445, + "Longitude": 19.699029931266153, + "id": "" + }, + { + "Name": "Zawiercie Borowe Pole", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 50.51106907693612, + "Longitude": 19.398647921166667, + "id": "" + }, + { + "Name": "Zgierz Jaracza", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.8639657345236, + "Longitude": 19.422133179232446, + "id": "" + }, + { + "Name": "Zgierz Rudunki", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.8612103097603, + "Longitude": 19.437586340703987, + "id": "" + }, + { + "Name": "Żakowice", + "Prefix": "", + "DifficultyLevel": 0, + "MainImageURL": "", + "AdditionalImage1URL": "", + "AdditionalImage2URL": "", + "DispatchedBy": [], + "Latititude": 51.732191623903866, + "Longitude": 19.791030887129892, + "id": "" + } +] diff --git a/packages/map/components/stationsRemote.json b/packages/map/components/stationsRemote.json index d667b0d..1be6bae 100644 --- a/packages/map/components/stationsRemote.json +++ b/packages/map/components/stationsRemote.json @@ -1,254 +1,254 @@ [ { - "Name": "Sprowa", + "Name": "Biała Rawska", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.59304492206253, - "Longitude": 19.88301571264459, - "id": "Starzyny" + "Latititude": 51.79491778480914, + "Longitude": 20.43956584807154, + "id": "LCS Strzałki" }, { - "Name": "Biała Rawska", - "Prefix": "BR", + "Name": "Borszewice APO", + "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.7944183, - "Longitude": 20.4394425, - "id": "Strzałki" + "Latititude": 51.609471340189714, + "Longitude": 19.03945052653515, + "id": "Łask" }, { - "Name": "Pilichowice", - "Prefix": "Pi", + "Name": "Chociszew", + "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.2556656, - "Longitude": 20.1223774, - "id": "Olszamowice" + "Latititude": 51.92335344444446, + "Longitude": 19.267590166666665, + "id": "LCS Zgierz Północ" }, { - "Name": "Józefinów", + "Name": "Dobroń APO", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 52.18587897581022, - "Longitude": 20.85313515843776, - "id": "Pruszków" + "Latititude": 51.62947132635339, + "Longitude": 19.24113911101419, + "id": "Łask" }, { - "Name": "Gniewięcin APO", + "Name": "Domaniewice", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.540835, - "Longitude": 20.044427, - "id": "Kozłów" + "Latititude": 52.01946372727272, + "Longitude": 19.81767, + "id": "LCS Głowno" }, { - "Name": "Klimontów APO", + "Name": "Gniewięcin APO", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 50.509156, - "Longitude": 20.024466, + "Latititude": 50.54092704719152, + "Longitude": 20.044271155660287, "id": "Kozłów" }, { - "Name": "Radziwiłłów Mazowiecki", + "Name": "Józefinów", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 52.000331, - "Longitude": 20.290474, - "id": "Żyrardów" + "Latititude": 52.18425134938244, + "Longitude": 20.847039523996006, + "id": "LCS Pruszków" }, { - "Name": "Słotwiny", + "Name": "Klimontów APO", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.726321, - "Longitude": 19.832398, - "id": "Żakowice Południowe" + "Latititude": 50.50308084604363, + "Longitude": 20.022472911524392, + "id": "Kozłów" }, { - "Name": "Łódź Andrzejów", + "Name": "Kolumna APO", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.741028, - "Longitude": 19.617146, - "id": "Gałkówek" + "Latititude": 51.61493724221378, + "Longitude": 19.196057563524075, + "id": "Łask" }, { - "Name": "Łódź Dąbrowa PBSZ", + "Name": "Łęczyca", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.749532, - "Longitude": 19.513492, - "id": "Łódź Widzew" + "Latititude": 52.04580888888889, + "Longitude": 19.19734888888889, + "id": "LCS Witonia" }, { - "Name": "Łódź Marysin", + "Name": "Łódź Andrzejów", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.800167, - "Longitude": 19.486152, - "id": "Łódź Widzew" + "Latititude": 51.740956836659734, + "Longitude": 19.617115614203538, + "id": "LCS Gałkówek" }, { - "Name": "Dobroń APO", + "Name": "Łódź Marysin", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.629363, - "Longitude": 19.240834, - "id": "Pabianice&Łask" + "Latititude": 51.80195053199693, + "Longitude": 19.482038124189177, + "id": "LCS Łódź Widzew" }, { - "Name": "Kolumna APO", + "Name": "Łódź Żabieniec", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.614231, - "Longitude": 19.193488, - "id": "Pabianice&Łask" + "Latititude": 51.80058278423401, + "Longitude": 19.405663488673184, + "id": "LCS Zgierz" }, { - "Name": "Borszewice APO", + "Name": "Ozorków", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.609461, - "Longitude": 19.0395, - "id": "Gajewniki&Łask" + "Latititude": 51.97315929411764, + "Longitude": 19.26577494117647, + "id": "LCS Witonia" }, { - "Name": "Męka APO", + "Name": "Pilichowice", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.609401, - "Longitude": 18.787825, - "id": "Zduńska Wola" + "Latititude": 51.25456315745891, + "Longitude": 20.12154503772685, + "id": "LCS Olszamowice" }, { - "Name": "Zgierz Kontrewers", + "Name": "Radziwiłłów Mazowiecki", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.864796, - "Longitude": 19.34032, - "id": "Zigerz Północ" + "Latititude": 52.00354502760056, + "Longitude": 20.299758525776596, + "id": "LCS Żyrardów" }, { - "Name": "Chociszew", + "Name": "Słotwiny", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.92411, - "Longitude": 19.266932, - "id": "Zigerz Północ" + "Latititude": 51.72343556417874, + "Longitude": 19.83679192252276, + "id": "LCS Żakowice Południowe" }, { - "Name": "Ozorków", + "Name": "Sprowa", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.972469, - "Longitude": 19.266291, - "id": "Witonia" + "Latititude": 50.59200317431349, + "Longitude": 19.883138215762575, + "id": "LCS Starzyny" }, { - "Name": "Łęczyca", + "Name": "Stryków", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 52.049236, - "Longitude": 19.193252, - "id": "Witonia" + "Latititude": 51.91120810526316, + "Longitude": 19.59744942105263, + "id": "LCS Glinnik" }, { - "Name": "Stryków", + "Name": "Zgierz Kontrewers", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 51.910582, - "Longitude": 19.593419, - "id": "Glinnik" + "Latititude": 51.86542191666666, + "Longitude": 19.337538875, + "id": "LCS Zgierz Północ" }, { - "Name": "Domaniewice", + "Name": "Żychlin", "Prefix": "", "DifficultyLevel": 0, "MainImageURL": "", "AdditionalImage1URL": "", "AdditionalImage2URL": "", "DispatchedBy": [], - "Latititude": 52.020445, - "Longitude": 19.821213, - "id": "Głowno" + "Latititude": 52.212511071085366, + "Longitude": 19.622430974815753, + "id": "LCS Jackowice" } ] diff --git a/packages/map/lib/trainRoute.ts b/packages/map/lib/trainRoute.ts index a56b3bf..33c4e6f 100644 --- a/packages/map/lib/trainRoute.ts +++ b/packages/map/lib/trainRoute.ts @@ -10,12 +10,43 @@ export interface ColoredSegment { interface RailData { knownStations: string[]; stations: Record; + /** Polyline per station pair "a|b" (a < b), drawn from a to b. */ segments: Record; + /** Colour runs per segment: [first point index, colour code]. */ segmentColors: Record; + /** + * Replacement for the joint between two legs "p|s|n" (p < n) where plain + * concatenation would be wrong: drop `cut[0]` points from the end of the + * p→s leg and `cut[1]` from the start of the s→n leg, and put `points` + * (drawn p-side to n-side, colour runs in `colors`) in between. + */ + joins: Record< + string, + { cut: [number, number]; points: string; colors: [number, number][] } + >; } +/** Map colours of route pieces, shared with the Playable area layer. */ +export const ROUTE_COLORS = { + green: "#2ecc71", + red: "#e74c3c", + grey: "#888888", +} as const; + const COLOR_NAMES = ["green", "red", "grey"] as const; +/** Colour of each stretch between consecutive points, from colour runs. */ +function stretchColors( + pointCount: number, + runs: [number, number][], +): ColoredSegment["color"][] { + return Array.from({ length: Math.max(0, pointCount - 1) }, (_, p) => { + let code = runs[0][1]; + for (const [start, c] of runs) if (start <= p) code = c; + return COLOR_NAMES[code] ?? "grey"; + }); +} + const railData = railDataJson as unknown as RailData; const knownSet = new Set(railData.knownStations); @@ -26,7 +57,7 @@ function normalizeName(name: string): string { return name.normalize("NFC").trim().replace(/\s+/g, " ").toLowerCase(); } -function decodePolyline(str: string): RoutePoint[] { +export function decodePolyline(str: string): RoutePoint[] { let idx = 0; let lat = 0; let lon = 0; @@ -111,6 +142,7 @@ interface ResolvedStop { coord: RoutePoint; name: string; isKnown: boolean; + line: number; } const routeCache = new Map>(); @@ -137,10 +169,13 @@ async function computeRoute(train: { const norm = normalizeName(name); const coordArr = railData.stations[norm]; if (!coordArr) continue; + // A station listed twice in a row is one stop, as in the generator. + if (resolved[resolved.length - 1]?.name === norm) continue; resolved.push({ coord: [coordArr[0], coordArr[1]], name: norm, isKnown: knownSet.has(norm), + line: stop.line ?? 0, }); } @@ -157,8 +192,21 @@ async function computeRoute(train: { const effective = resolved.slice(first, last + 1); if (effective.length < 2) return null; - const segments: ColoredSegment[] = []; - let prevConnected = false; + // The route as one point list; colors[i] is the colour of the stretch + // from points[i] to points[i + 1], null where nothing is drawn. + const points: RoutePoint[] = []; + const colors: (ColoredSegment["color"] | null)[] = []; + const append = ( + pts: RoutePoint[], + pieceColors: ColoredSegment["color"][], + ) => { + pts.forEach((p, i) => { + if (i > 0) colors.push(pieceColors[i - 1]); + points.push(p); + }); + }; + // Whether the previous leg ended at the current stop along the tracks. + let prevLegRouted = false; for (let i = 0; i < effective.length - 1; i++) { const a = effective[i]; @@ -168,48 +216,82 @@ async function computeRoute(train: { const encoded = railData.segments[key]; if (!encoded) { - segments.push({ color: "grey", points: [a.coord, b.coord] }); - prevConnected = false; + prevLegRouted = false; + // Skip grey lines when either stop has line 0 (off the drivable + // network). These stations often have wrong wiki coordinates + // (e.g. Koło is misplaced near Łęczyca), creating misleading + // long grey lines. + // Also skip them at the beginning or end of the route — there's + // nothing to connect to, so they just dangle. + if ( + a.line === 0 || + b.line === 0 || + i === 0 || + i === effective.length - 2 + ) { + continue; + } + if (points.length > 0) colors.push(null); + append([a.coord, b.coord], ["grey"]); continue; } - const reversed = a.name > b.name; - const allPts = decodePolyline(encoded); - - const boundaries = railData.segmentColors?.[key] ?? [[0, 0]]; - - const subs: { - color: "green" | "red" | "grey"; - points: RoutePoint[]; - }[] = []; - for (let bi = 0; bi < boundaries.length; bi++) { - const [startIdx, colorCode] = boundaries[bi]; - const endIdx = - bi < boundaries.length - 1 ? boundaries[bi + 1][0] : allPts.length; - const subPts = allPts.slice( - startIdx, - bi < boundaries.length - 1 ? endIdx + 1 : endIdx, - ); - subs.push({ - color: COLOR_NAMES[colorCode] ?? "grey", - points: subPts, - }); - } - if (reversed) { - subs.reverse(); - for (const sub of subs) sub.points.reverse(); + let legPts = decodePolyline(encoded); + let legColors = stretchColors( + legPts.length, + railData.segmentColors[key] ?? [[0, 0]], + ); + if (a.name > b.name) { + legPts.reverse(); + legColors.reverse(); } - for (const { color, points: subPts } of subs) { - const lastSeg = segments[segments.length - 1]; - if (prevConnected && lastSeg && lastSeg.color === color) { - lastSeg.points.push(...subPts.slice(1)); - } else { - segments.push({ color, points: subPts }); + const prev = effective[i - 1]; + if (prevLegRouted && prev && prev.name !== b.name) { + const forward = prev.name < b.name; + const join = + railData.joins[ + forward + ? `${prev.name}|${a.name}|${b.name}` + : `${b.name}|${a.name}|${prev.name}` + ]; + if (join) { + const [cutIn, cutOut] = forward ? join.cut : [join.cut[1], join.cut[0]]; + points.splice(points.length - cutIn); + colors.splice(colors.length - cutIn); + const joinPts = decodePolyline(join.points); + const joinColors = stretchColors(joinPts.length, join.colors); + if (!forward) { + joinPts.reverse(); + joinColors.reverse(); + } + points.pop(); // the join starts on it + append(joinPts, joinColors); + legPts = legPts.slice(cutOut); + legColors = legColors.slice(cutOut); } - prevConnected = true; } + + if (prevLegRouted) { + // The previous piece ends where this one starts. + points.pop(); + } else if (points.length > 0) { + colors.push(null); + } + append(legPts, legColors); + prevLegRouted = true; } + const segments: ColoredSegment[] = []; + for (let i = 0; i < colors.length; i++) { + const color = colors[i]; + if (color === null) continue; + const lastSeg = segments[segments.length - 1]; + if (lastSeg && lastSeg.color === color && colors[i - 1] === color) { + lastSeg.points.push(points[i + 1]); + } else { + segments.push({ color, points: [points[i], points[i + 1]] }); + } + } return segments; } diff --git a/packages/map/package.json b/packages/map/package.json index ec51afe..999da1d 100644 --- a/packages/map/package.json +++ b/packages/map/package.json @@ -7,7 +7,9 @@ "build": "next build", "start": "next start", "lint": "pnpm --workspace-root exec oxlint packages/map", - "generate:rail-data": "node scripts/generate-rail-data.mjs" + "generate:rail-data": "node scripts/generate-rail-data.mjs", + "generate:stations": "node scripts/generate-stations.mjs", + "check:routes": "node scripts/check-routes.mjs" }, "dependencies": { "@mantine/carousel": "^7.17.8", diff --git a/packages/map/public/markers/icon-station-passenger.png b/packages/map/public/markers/icon-station-passenger.png new file mode 100644 index 0000000..2c8df0b Binary files /dev/null and b/packages/map/public/markers/icon-station-passenger.png differ diff --git a/packages/map/public/markers/icon-station-remote.png b/packages/map/public/markers/icon-station-remote.png index ad9f407..052add5 100644 Binary files a/packages/map/public/markers/icon-station-remote.png and b/packages/map/public/markers/icon-station-remote.png differ diff --git a/packages/map/scripts/check-routes.mjs b/packages/map/scripts/check-routes.mjs new file mode 100644 index 0000000..90dcc49 --- /dev/null +++ b/packages/map/scripts/check-routes.mjs @@ -0,0 +1,214 @@ +#!/usr/bin/env node + +/** + * check-routes.mjs — Sanity-checks components/railData.json by drawing the + * route of every cached timetable with the app's own code + * (lib/trainRoute.ts) and measuring the result against the track network. + * + * Run automatically at the end of generate-rail-data.mjs, or on its own: + * pnpm check:routes + * It reads the generator's cache (scripts/.cache), so generate first. + * + * Checks (any failure → exit code 1): + * - Off-track jumps: a straight stretch longer than 100m of a green/red + * route that leaves the tracks (>50m from any track). The symptom of a + * route hopping between lines or across a bridge. + * - Hairpins: the route turns back on itself (>150°) with both arms longer + * than 30m. The symptom of legs overshooting a station and coming back. + * Reported only: + * - Grey lines: legs drawn as straight lines because there's no track + * data for them (e.g. lines missing from the wiki). + * + * The route code runs in Node (which strips the TypeScript types itself); + * the only changes are the railData.json import, pointed at the file on + * disk, and `fetch`, which serves the cached timetables. + */ + +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath, pathToFileURL } from "node:url"; + +import { + buildRailGraph, + haversineKm, + nearestNode, + parseWikiRoute, + waysFromRouteGeoJson, +} from "./rail-helpers.mjs"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const CACHE_DIR = path.join(__dirname, ".cache"); +const RAIL_DATA_PATH = path.join( + __dirname, + "..", + "components", + "railData.json", +); +const TRAIN_ROUTE_PATH = path.join(__dirname, "..", "lib", "trainRoute.ts"); + +const JUMP_MIN_KM = 0.1; +const OFF_TRACK_KM = 0.05; +const HAIRPIN_MIN_ARM_KM = 0.03; +const HAIRPIN_COS = Math.cos((150 * Math.PI) / 180); +const MAX_EXAMPLES = 10; + +const readJson = (file) => JSON.parse(fs.readFileSync(file, "utf8")); + +function loadTrackGraph() { + const wikiMapData = readJson(path.join(CACHE_DIR, "wiki_map_data.json")); + const ways = []; + for (const route of wikiMapData.routes) { + const lk = parseWikiRoute(route); + const file = lk && path.join(CACHE_DIR, lk.cacheName); + if (!file || !fs.existsSync(file)) continue; + ways.push(...waysFromRouteGeoJson(readJson(file), lk.line, lk.available)); + } + return buildRailGraph(ways); +} + +async function loadGetTrainRoute(timetables) { + const source = fs + .readFileSync(TRAIN_ROUTE_PATH, "utf8") + .replace( + /import railDataJson from "[^"]+";/, + `import fs from "node:fs";\nconst railDataJson = JSON.parse(fs.readFileSync(${JSON.stringify(RAIL_DATA_PATH)}, "utf8"));`, + ); + const copy = path.join(CACHE_DIR, "trainRoute.check.mts"); + fs.writeFileSync(copy, source); + const byTrainNo = new Map(timetables.map((t) => [t.trainNo, t.timetable])); + // trainRoute.ts fetches `${EDR_TIMETABLE_URL}/${server}/${trainNo}`. + globalThis.fetch = async (/** @type {string} */ url) => { + const timetable = byTrainNo.get(decodeURIComponent(url.split("/").pop())); + return { ok: !!timetable, json: async () => timetable }; + }; + // Fresh module instance per run: it caches routes internally. + const mod = await import(`${pathToFileURL(copy).href}?${Date.now()}`); + return mod.getTrainRoute; +} + +export async function checkRoutes({ log = console.log } = {}) { + const timetables = readJson(path.join(CACHE_DIR, "all_timetables.json")); + const railData = readJson(RAIL_DATA_PATH); + const graph = loadTrackGraph(); + const getTrainRoute = await loadGetTrainRoute(timetables); + + const onTrack = (p) => nearestNode(graph, p, null, OFF_TRACK_KM) >= 0; + const nearestStation = (p) => { + let best = null; + let bestKm = Infinity; + for (const [name, coord] of Object.entries(railData.stations)) { + const km = haversineKm(p, coord); + if (km < bestKm) [best, bestKm] = [name, km]; + } + return `${best} (${Math.round(bestKm * 1000)}m)`; + }; + const stationAt = new Map( + Object.entries(railData.stations).map(([n, c]) => [c.join(), n]), + ); + + let routes = 0; + let drawnKm = 0; + const jumps = new Map(); // location → { km, trains } + const hairpins = new Map(); + const greys = new Map(); + const note = (map, key, trainNo, extra = {}) => { + if (!map.has(key)) map.set(key, { trains: [], ...extra }); + map.get(key).trains.push(trainNo); + }; + + for (const { trainNo } of timetables) { + const segments = await getTrainRoute({ + ServerCode: "check", + TrainNoLocal: trainNo, + }); + if (!segments) continue; + routes++; + for (const { color, points } of segments) { + for (let i = 1; i < points.length; i++) { + const [a, b] = [points[i - 1], points[i]]; + const km = haversineKm(a, b); + drawnKm += km; + if (color === "grey") continue; + if (km > JUMP_MIN_KM) { + const samples = Math.ceil(km / OFF_TRACK_KM); + let off = 0; + for (let s = 1; s < samples; s++) { + const t = s / samples; + if (!onTrack([a[0] + (b[0] - a[0]) * t, a[1] + (b[1] - a[1]) * t])) + off++; + } + // One stray sample can be a curve cut by simplification. + if (off > 1) + note( + jumps, + `${nearestStation(a)} → ${nearestStation(b)}`, + trainNo, + { km }, + ); + } + const c = points[i + 1]; + if (!c) continue; + const v1 = [b[0] - a[0], b[1] - a[1]]; + const v2 = [c[0] - b[0], c[1] - b[1]]; + const cos = + (v1[0] * v2[0] + v1[1] * v2[1]) / + (Math.hypot(...v1) * Math.hypot(...v2)); + if ( + cos < HAIRPIN_COS && + km > HAIRPIN_MIN_ARM_KM && + haversineKm(b, c) > HAIRPIN_MIN_ARM_KM + ) { + note(hairpins, `near ${nearestStation(b)}`, trainNo); + } + } + if (color === "grey") { + const [a, b] = [points[0], points[points.length - 1]]; + note( + greys, + `${stationAt.get(a.join()) ?? a} → ${stationAt.get(b.join()) ?? b}`, + trainNo, + { + km: haversineKm(a, b), + }, + ); + } + } + } + + const report = (title, map, describe) => { + const total = [...map.values()].reduce((n, v) => n + v.trains.length, 0); + log(` ${title}: ${total} in ${map.size} places`); + const worst = [...map].sort( + (a, b) => b[1].trains.length - a[1].trains.length, + ); + for (const [where, v] of worst.slice(0, MAX_EXAMPLES)) { + log( + ` - ${where}${describe ? describe(v) : ""}: ${v.trains.length} trains (e.g. ${v.trains[0]})`, + ); + } + }; + log( + ` Routes drawn: ${routes}/${timetables.length}, ${Math.round(drawnKm)} km`, + ); + report("Off-track jumps", jumps, (v) => ` [${Math.round(v.km * 1000)}m]`); + report("Hairpins", hairpins); + report("Grey lines (no track data)", greys, (v) => ` [${v.km.toFixed(1)}km]`); + + const ok = jumps.size === 0 && hairpins.size === 0; + log(ok ? " Route check passed" : " Route check FAILED"); + return { + ok, + routes, + jumps: jumps.size, + hairpins: hairpins.size, + greys: greys.size, + }; +} + +if ( + process.argv[1] && + path.resolve(process.argv[1]) === fileURLToPath(import.meta.url) +) { + const { ok } = await checkRoutes(); + process.exit(ok ? 0 : 1); +} diff --git a/packages/map/scripts/generate-rail-data.mjs b/packages/map/scripts/generate-rail-data.mjs index 80f43d0..d86c8fa 100644 --- a/packages/map/scripts/generate-rail-data.mjs +++ b/packages/map/scripts/generate-rail-data.mjs @@ -1,21 +1,127 @@ #!/usr/bin/env node +/** + * generate-rail-data.mjs — Precomputes the train route geometry the map + * draws for a selected train (lib/trainRoute.ts). + * + * pnpm generate:rail-data # uses scripts/.cache where present + * pnpm generate:rail-data --refresh # re-downloads everything + * + * Output: components/railData.json, components/playableArea.json + * + * ── Inputs ──────────────────────────────────────────────────────────────── + * - SimRail wiki map (wiki.simrail.eu/map): one GeoJSON per railway line + * (LK1, LK4, …), split into the part available in the game and the part + * that isn't, plus station shapes. Line geometry is raw OpenStreetMap: + * one feature per track (a double-track line is two parallel ways), + * only `usage=main` tracks — so the crossovers between them are missing + * — and bridges/tunnels tagged `bridge`/`tunnel`/`layer`. + * - Station coordinates: wiki station shapes, local stations*.json, the + * SimRail panel API and scripts/station-overrides.json (wins). + * - Timetables of every train on one server (official API, community EDR + * as fallback). Each point has a name and `line`: the line the train + * departs that point on. Most points (junction posts, "PZS …") have no + * coordinates, but their line numbers still tell us every line a train + * uses between two stations. + * + * ── Pipeline ────────────────────────────────────────────────────────────── + * 1. Fetch the inputs (cached in scripts/.cache). + * 2. Collect station pairs: consecutive timetable points that have + * coordinates form a leg A→B. For each pair, record the lines its legs + * use, the line at A and at B. Legs touching line 0 or a line the wiki + * doesn't have are left out: there's no track to draw them on. + * 3. Build the track graph (rail-helpers.mjs, buildRailGraph). Lines join + * only where OSM gives them a shared node, i.e. real junctions — never + * where they merely cross, as on a bridge. Connectors stand in for what + * the export lacks: crossovers between tracks of one line (≤20m apart, + * parallel, not on bridges/tunnels), clipped way ends (≤30m), and + * "line connectors" between different lines running side by side, + * which only line changes may use (below). + * 4. Route each leg with A* strictly on its timetable lines, from the + * track of A's line nearest to A to the track of B's line nearest to B. + * 5. Join consecutive legs. Where two legs meet at station S, simply + * concatenating them can be wrong: the train may change lines at S + * (the legs end on different tracks), or S's nearest track may not be + * the one the train passes on (the legs overshoot and come back). For + * every (previous station, S, next station) seen in a timetable, the + * last ~1km into S and first ~1km out of it are re-routed as one path. + * Only here, within 2km of S, may the route use S's other lines and + * switch between side-by-side lines. The result is stored only where it + * differs from plain concatenation. + * 6. Write railData.json; stations are placed on their busiest line. + * 7. Write playableArea.json: every track of every wiki line, for the + * map's "Playable area" layer. + * 8. Draw every timetable's route with the app's code and check it for + * off-track jumps and hairpins (check-routes.mjs). Exits with code 1 if + * the check fails. + * + * ── Output (railData.json) ──────────────────────────────────────────────── + * stations name → [lat, lon] + * knownStations names the route may start/end at + * segments "a|b" (a < b) → encoded polyline (precision 1e5), a→b + * segmentColors "a|b" → [[first point index, 0 = available | 1 = not + * available in the game], …] + * joins "p|s|n" (p < n) → { cut: [points to drop from the end of + * the p→s leg, points to drop from the start of the s→n + * leg], points: encoded polyline p-side → n-side, + * colors: colour runs of points, as in segmentColors } + * + * ── Output (playableArea.json) ──────────────────────────────────────────── + * lines line number → { title, subtitle?, lkname?, link?, + * available: encoded polylines (one per track), + * unavailable: encoded polylines } + * + * ── Reading the log ─────────────────────────────────────────────────────── + * "off the wiki network" legs over lines the wiki lacks — expected; the + * app draws them grey or skips them. + * "failed" a leg whose stations aren't near its lines or + * whose lines don't connect: usually a wrong + * station coordinate (fix in station-overrides + * .json) or a gap in the wiki geometry. + * "Dropped" a station with no track within 3km — again + * usually a wrong coordinate. + * Route check failures list where jumps/hairpins happen and an example + * train; render that train on the map to see what's wrong. + */ + +import { execFileSync } from "node:child_process"; import fs from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; +import { checkRoutes } from "./check-routes.mjs"; import { - buildGraphFromRoutes, + buildRailGraph, encodePolyline, + findPath, haversineKm, - makeNearestNode, - makeRouter, + nearestNode, normalizeName, + parseWikiRoute, + simplifyIndices, + waysFromRouteGeoJson, } from "./rail-helpers.mjs"; const __dirname = path.dirname(fileURLToPath(import.meta.url)); const CACHE_DIR = path.join(__dirname, ".cache"); const OUTPUT_PATH = path.join(__dirname, "..", "components", "railData.json"); +// The repository formatter; generated files are committed, so they're kept +// in its format (`pnpm format:check` runs in CI). +const OXFMT = path.join( + __dirname, + "..", + "..", + "..", + "node_modules", + ".bin", + "oxfmt", +); +const PLAYABLE_AREA_PATH = path.join( + __dirname, + "..", + "components", + "playableArea.json", +); const OFFICIAL_TIMETABLE_BASE = "https://api1.aws.simrail.eu:8082/api/getAllTimetables"; @@ -25,7 +131,19 @@ const WIKI_MAP_DATA_URL = "https://wiki.simrail.eu/map/main-files/map-data.json"; const WIKI_BASE = "https://wiki.simrail.eu"; const USER_AGENT = "simrail-app-map-route-generator/1.0"; +// Max distance from a station's coordinate to the track it's placed on. const SNAP_MAX_KM = 3.0; +// Douglas-Peucker tolerance for the output polylines. Also smooths out the +// few-metre hops between parallel tracks. +const SIMPLIFY_KM = 0.005; +// Radius around a station in which a join may use the station's other +// lines and switch between side-by-side lines. +const STATION_AREA_KM = 2; +// How far into and out of a station a join re-routes the legs. +const JOIN_KM = 1; +// segmentColors codes. +const GREEN = 0; // available in the game +const RED = 1; // not available const TIMETABLE_SERVER = "int1"; fs.mkdirSync(CACHE_DIR, { recursive: true }); @@ -192,27 +310,21 @@ async function main() { ); log(" [wiki] Fetching route geometries..."); - const routeFeatures = []; - await pool(wikiMapData.routes, 10, async (route) => { - const match = route.name.match(/^LK(\d+)$/); - if (!match) return; - const lineNo = match[1]; - const isAvailable = route.available !== false; - const cacheName = `wiki_route_${route.name.replace(/[^a-zA-Z0-9]/g, "_")}_${isAvailable ? "avail" : "notavail"}.json`; + // Kept in the wiki's route order, not fetch completion order: the + // graph's node numbering (and so path tie-breaks) follows it. + const waysByRoute = wikiMapData.routes.map(() => []); + await pool(wikiMapData.routes, 10, async (route, i) => { + const lk = parseWikiRoute(route); + if (!lk) return; try { - const gj = await cachedFetchJson(WIKI_BASE + route.url, cacheName); - for (const f of gj.features || []) { - routeFeatures.push({ - geometry: f.geometry, - refs: [lineNo], - available: isAvailable, - }); - } + const gj = await cachedFetchJson(WIKI_BASE + route.url, lk.cacheName); + waysByRoute[i] = waysFromRouteGeoJson(gj, lk.line, lk.available); } catch (err) { log(` [wiki] Failed ${route.name}: ${err.message}`); } }); - log(` [wiki] Route features: ${routeFeatures.length}`); + const routeWays = waysByRoute.flat(); + log(` [wiki] Track ways: ${routeWays.length}`); log(" [wiki] Fetching station coordinates..."); const stationCoords = new Map(); @@ -241,7 +353,7 @@ async function main() { wikiMapData, stationCoords, knownStations, - routeFeatures, + routeWays, wikiLoopCentroids, }; })(); @@ -312,25 +424,22 @@ async function main() { wikiMapData, stationCoords, knownStations, - routeFeatures, + routeWays, wikiLoopCentroids, } = await wikiPromise; await timetablesPromise; log("Step 1b: Supplement station coordinates from local files + API"); - const localBundled = JSON.parse( - fs.readFileSync( - path.join(__dirname, "..", "components", "stations.json"), - "utf8", - ), - ); - const localRemote = JSON.parse( - fs.readFileSync( - path.join(__dirname, "..", "components", "stationsRemote.json"), - "utf8", + const localCatalogs = [ + "stations.json", + "stationsPassenger.json", + "stationsRemote.json", + ].flatMap((file) => + JSON.parse( + fs.readFileSync(path.join(__dirname, "..", "components", file), "utf8"), ), ); - for (const s of [...localBundled, ...localRemote]) { + for (const s of localCatalogs) { if (s.Name && s.Latititude && s.Longitude) { const norm = normalizeName(s.Name); if (!stationCoords.has(norm)) { @@ -392,533 +501,382 @@ async function main() { log(` Loop-centroid fallbacks (no game coordinate): ${loopFallbackCount}`); } - log("Step 2: Collect segments from timetables"); + log("Step 2: Collect station pairs from timetables"); const allTimetables = JSON.parse( fs.readFileSync(path.join(CACHE_DIR, "all_timetables.json"), "utf8"), ); - const wikiStationList = wikiMapData.stations; - - function resolveStationCoords(rawName) { - const norm = normalizeName(rawName); - if (stationCoords.has(norm)) return norm; - for (const ws of wikiStationList) { - const sn = normalizeName(ws.name); - if (sn.includes(norm) || norm.includes(sn)) { - const c = stationCoords.get(sn); - if (c) { - stationCoords.set(norm, c); - knownStations.add(norm); - return norm; - } - } - } - return null; - } - - const segments = new Map(); - for (const tt of allTimetables) { - const entries = tt.timetable; - if (!Array.isArray(entries)) continue; - let lastResolved = -1; - for (let i = 0; i < entries.length; i++) { - const name = entries[i].nameOfPoint || entries[i].nameForPerson; - if (!name) continue; - const resolved = resolveStationCoords(name); - const hasCoords = !!resolved; - if (hasCoords && lastResolved >= 0 && lastResolved !== i) { - const fromName = - entries[lastResolved].nameOfPoint || - entries[lastResolved].nameForPerson; - const fromResolved = - resolveStationCoords(fromName) || normalizeName(fromName); - const key = - fromResolved < resolved - ? `${fromResolved}|${resolved}` - : `${resolved}|${fromResolved}`; - const line = Number(entries[lastResolved].line) || 0; - const toLine = Number(entries[i].line) || 0; - const allLines = new Set(); - if (line > 0) allLines.add(String(line)); - if (toLine > 0) allLines.add(String(toLine)); - for (let j = lastResolved + 1; j < i; j++) { - const midLine = Number(entries[j]?.line) || 0; - if (midLine > 0) allLines.add(String(midLine)); - } - if (!segments.has(key)) { - segments.set(key, { - key, - from: fromName, - to: name, - allLines: [...allLines], - label: `${fromName} → ${name}`, - }); - } else { - const existing = segments.get(key); - for (const l of allLines) { - if (!existing.allLines.includes(l)) { - existing.allLines.push(l); - } - } - } - } - if (hasCoords) lastResolved = i; - } - } - log(` Unique segments: ${segments.size}`); - - const workSegments = []; - let noCoordsCount = 0; - for (const seg of segments.values()) { - const fromCoord = stationCoords.get(normalizeName(seg.from)); - const toCoord = stationCoords.get(normalizeName(seg.to)); - if (!fromCoord || !toCoord) { - noCoordsCount++; - continue; - } - seg.from = fromCoord; - seg.to = toCoord; - workSegments.push(seg); - } - log(` Work segments: ${workSegments.length} (skipped ${noCoordsCount})`); - - const wikiLineNumbers = new Set(); - for (const r of wikiMapData.routes) { - const match = r.name.match(/^LK(\d+)$/); - if (match) wikiLineNumbers.add(match[1]); + /** The timetable's points that have a position: { name, index }[]. */ + function timetableStations(timetable) { + const out = []; + timetable.forEach((entry, index) => { + const raw = entry.nameOfPoint || entry.nameForPerson; + if (!raw) return; + const name = normalizeName(raw); + // Points without coordinates (junction posts, PZS…) are skipped. + if (!stationCoords.has(name)) return; + if (name !== out[out.length - 1]?.name) out.push({ name, index }); + }); + return out; } - const servedLines = new Map(); - for (const seg of segments.values()) { - const [a, b] = seg.key.split("|"); - if (!servedLines.has(a)) servedLines.set(a, new Set()); - if (!servedLines.has(b)) servedLines.set(b, new Set()); - for (const l of seg.allLines) { - if (wikiLineNumbers.has(l)) { - servedLines.get(a).add(l); - servedLines.get(b).add(l); + // A timetable point's `line` is the line the train departs it on, so a + // leg A→B leaves A on A's line and arrives at B on the line of the point + // before B. Intermediate points (junction posts, PZS…) have no + // coordinates but still tell us every line the leg uses. + const wikiLines = new Set(routeWays.map((w) => w.line)); + const lineOf = (entry) => String(Number(entry.line) || "") || null; + const count = (map, key) => map.set(key, (map.get(key) ?? 0) + 1); + // Line counts, most frequent first; ties by line number, so the result + // doesn't depend on the order the timetables come in. + const byFrequency = (counts) => + [...counts.entries()] + .sort((a, b) => b[1] - a[1] || Number(a[0]) - Number(b[0])) + .map(([line]) => line); + const mostCommon = (counts) => byFrequency(counts)[0] ?? null; + const pairs = new Map(); + for (const { timetable } of allTimetables) { + if (!Array.isArray(timetable)) continue; + const stops = timetableStations(timetable); + for (let k = 1; k < stops.length; k++) { + const from = stops[k - 1]; + const to = stops[k]; + const legEntries = timetable.slice(from.index, to.index); + const fromLine = lineOf(timetable[from.index]); + const toLine = lineOf(timetable[to.index - 1]); + const [a, b, aLine, bLine] = + from.name < to.name + ? [from.name, to.name, fromLine, toLine] + : [to.name, from.name, toLine, fromLine]; + const key = `${a}|${b}`; + let pair = pairs.get(key); + if (!pair) { + pair = { + key, + a, + b, + aLines: new Map(), + bLines: new Map(), + lines: new Set(), + }; + pairs.set(key, pair); } + // Skip timetables where part of the leg runs on track the wiki + // doesn't have (line 0 = outside the playable area); other trains + // may still run the same leg on known lines. + const legLines = legEntries.map(lineOf); + if (legLines.some((line) => !line || !wikiLines.has(line))) continue; + if (aLine) count(pair.aLines, aLine); + if (bLine) count(pair.bLines, bLine); + for (const line of legLines) pair.lines.add(line); } } + log(` Station pairs: ${pairs.size}`); - const graphAvail = buildGraphFromRoutes( - routeFeatures.filter((f) => f.available), - ); - const graphFull = buildGraphFromRoutes(routeFeatures); - const nearestAvail = makeNearestNode(graphAvail, 0.02, SNAP_MAX_KM); - const nearestFull = makeNearestNode(graphFull, 0.02, SNAP_MAX_KM); - const routerAvail = makeRouter(graphAvail); - const routerFull = makeRouter(graphFull); - log( - ` Graph avail: ${graphAvail.coords.length} nodes, full: ${graphFull.coords.length} nodes`, - ); - - const coordKey = (lat, lon) => `${lat.toFixed(6)},${lon.toFixed(6)}`; - const nodeIndexFor = (graph, coord) => - graph.coordIndex.get(coordKey(coord[0], coord[1])) ?? -1; - - log(` Snapping ${servedLines.size} stations to canonical nodes...`); - const canonicalNodes = new Map(); - const droppedStations = []; - for (const [name, lines] of servedLines) { - const anchor = stationCoords.get(name); - if (!anchor) continue; - let snap = null; - let snapGraph = null; - if (lines.size > 0) { - snap = nearestAvail(anchor, lines); - snapGraph = graphAvail; - if (snap.index < 0 || snap.distKm > SNAP_MAX_KM) { - snap = nearestFull(anchor, lines); - snapGraph = graphFull; - } - } - if (snap === null || snap.index < 0 || snap.distKm > SNAP_MAX_KM) { - snap = nearestFull(anchor, null); - snapGraph = graphFull; - } - if (snap.index >= 0 && snap.distKm <= SNAP_MAX_KM) { - const nodeCoord = snapGraph.coords[snap.index]; - canonicalNodes.set(name, nodeCoord); - stationCoords.set(name, nodeCoord); - } else { - droppedStations.push(name); - stationCoords.delete(name); - knownStations.delete(name); - } - } - if (droppedStations.length > 0) { - log( - ` Dropped stations (no track within ${SNAP_MAX_KM}km — likely bad source coordinates):`, - ); - for (const name of droppedStations) log(` - ${name}`); - } + log("Step 3: Build track graph"); + const graph = buildRailGraph(routeWays); log( - ` Canonical nodes: ${canonicalNodes.size}, dropped: ${droppedStations.length}`, + ` Nodes: ${graph.stats.nodes}, edges: ${graph.stats.edges} (track connectors: ${graph.stats.trackConnectors}, line connectors: ${graph.stats.lineConnectors}, dead-end connectors: ${graph.stats.deadEndConnectors}, ignored fragments: ${graph.stats.fragments})`, ); - const workSegmentsPruned = []; - for (const seg of workSegments) { - const [a, b] = seg.key.split("|"); - if (canonicalNodes.has(a) && canonicalNodes.has(b)) { - workSegmentsPruned.push(seg); + // Lines each station is served by, busiest first. + const stationLineCounts = new Map(); + for (const pair of pairs.values()) { + for (const [name, lines] of [ + [pair.a, pair.aLines], + [pair.b, pair.bLines], + ]) { + if (!stationLineCounts.has(name)) stationLineCounts.set(name, new Map()); + const counts = stationLineCounts.get(name); + for (const [l, n] of lines) counts.set(l, (counts.get(l) ?? 0) + n); } } - log( - ` Work segments after prune: ${workSegmentsPruned.length} (was ${workSegments.length})`, + const stationLines = new Map( + [...stationLineCounts].map(([name, counts]) => [name, byFrequency(counts)]), ); - const workList = workSegmentsPruned; - - log("Step 3: Compute A* routes"); - - const routeSegments = {}; - const segmentLines = {}; - const segmentUsedFullGraph = new Set(); - let computed = 0; - let fallback = 0; - let computedAvail = 0; - let computedFull = 0; - - function tryRoute(seg, graph, router) { - const [aName, bName] = seg.key.split("|"); - const fromIdx = nodeIndexFor(graph, canonicalNodes.get(aName)); - const toIdx = nodeIndexFor(graph, canonicalNodes.get(bName)); - if (fromIdx < 0 || toIdx < 0) return null; - - const lines = seg.allLines; - const fromCoord = graph.coords[fromIdx]; - const toCoord = graph.coords[toIdx]; - const straightKm = haversineKm(fromCoord, toCoord); - let pathIndices = null; - - function pathKmOf(indices) { - let total = 0; - let prev = fromCoord; - for (const idx of indices) { - total += haversineKm(prev, graph.coords[idx]); - prev = graph.coords[idx]; - } - total += haversineKm(prev, toCoord); - return total; - } - function acceptPath(indices) { - if (!indices || indices.length < 2) return false; - if (straightKm > 0) { - const maxPathKm = straightKm * 2 + 5; - if (pathKmOf(indices) > maxPathKm) return false; - } - return true; + // A station's point on a given line: the track of that line nearest to + // the station. + const stationNodeCache = new Map(); + const stationNode = (name, line) => { + const key = `${name}|${line}`; + if (!stationNodeCache.has(key)) { + const anchor = stationCoords.get(name); + stationNodeCache.set( + key, + anchor + ? nearestNode( + graph, + anchor, + line ? new Set([line]) : null, + SNAP_MAX_KM, + ) + : -1, + ); } + return stationNodeCache.get(key); + }; - const timetableLines = new Set(lines); - function usesOnlyTimetableLines(indices, allowedLines) { - if (!indices) return false; - if (allowedLines.size === 0) return true; - const nonTtKm = new Map(); - for (let i = 0; i < indices.length - 1; i++) { - for ( - let p = graph.start[indices[i]]; - p < graph.start[indices[i] + 1]; - p++ - ) { - if (graph.adjOther[p] !== indices[i + 1]) continue; - const refs = graph.erefs[graph.adjEdge[p]]; - if (!refs || refs.length === 0) continue; - for (const r of refs) { - if (!allowedLines.has(r)) { - const edgeKm = graph.adjDist[p]; - nonTtKm.set(r, (nonTtKm.get(r) || 0) + edgeKm); - } - } - break; - } + // Turns a path into its simplified vertices (node ids) plus colour runs + // [first vertex index, colour]. Connectors take the colour of the track + // before them. + const simplifyPath = (from, edgePath) => { + const nodes = [from]; + const colors = []; + for (const e of edgePath) { + const edge = graph.edges[e]; + nodes.push(edge.a === nodes[nodes.length - 1] ? edge.b : edge.a); + colors.push(edge.line === null ? null : edge.available ? GREEN : RED); + } + for (let i = 0; i < colors.length; i++) { + colors[i] ??= + i > 0 ? colors[i - 1] : (colors.find((c) => c !== null) ?? GREEN); + } + const keep = new Set([0]); + const runStarts = []; + for (let i = 0; i < colors.length;) { + let j = i; + while (j < colors.length && colors[j] === colors[i]) j++; + runStarts.push([i, colors[i]]); + const run = nodes.slice(i, j + 1); + for (const k of simplifyIndices( + run.map((n) => graph.coords[n]), + SIMPLIFY_KM, + )) { + keep.add(i + k); } - for (const km of nonTtKm.values()) { - if (km > 5) return false; - } - return true; - } - - if (lines.length > 0) { - const p = router(fromIdx, toIdx, lines); - if (acceptPath(p) && usesOnlyTimetableLines(p, timetableLines)) - pathIndices = p; - } - - if (!pathIndices) { - const p = router(fromIdx, toIdx, null); - if (acceptPath(p) && usesOnlyTimetableLines(p, timetableLines)) - pathIndices = p; + i = j; } - - if (!pathIndices || pathIndices.length < 2) return null; - - const usedLineSet = new Set(); - for (let i = 0; i < pathIndices.length - 1; i++) { - for ( - let p = graph.start[pathIndices[i]]; - p < graph.start[pathIndices[i] + 1]; - p++ - ) { - if (graph.adjOther[p] !== pathIndices[i + 1]) continue; - const refs = graph.erefs[graph.adjEdge[p]]; - if (refs) for (const r of refs) usedLineSet.add(r); - break; - } + const kept = [...keep].sort((a, b) => a - b); + const vertexOf = new Map(kept.map((k, v) => [k, v])); + return { + nodes: kept.map((k) => nodes[k]), + boundaries: + runStarts.length > 0 + ? runStarts.map(([i, color]) => [vertexOf.get(i), color]) + : [[0, GREEN]], + }; + }; + const polylineKm = (nodes) => { + let km = 0; + for (let i = 1; i < nodes.length; i++) { + km += haversineKm(graph.coords[nodes[i - 1]], graph.coords[nodes[i]]); } - - const points = pathIndices.map((idx) => graph.coords[idx]); - - let changed = true; - while (changed && points.length > 2) { - changed = false; - for (let j = 1; j < points.length - 1; j++) { - const a = points[j - 1], - b = points[j], - c = points[j + 1]; - const dot = - (b[0] - a[0]) * (c[0] - b[0]) + (b[1] - a[1]) * (c[1] - b[1]); - if (dot < 0) { - points.splice(j, 1); - changed = true; - break; - } - } + return km; + }; + const encodeNodes = (nodes) => + encodePolyline(nodes.map((n) => graph.coords[n])); + + log("Step 4: Route legs between stations"); + // A leg runs strictly on the lines its timetable points are on, from + // the departure line's track at A to the arrival line's track at B. + const legs = new Map(); + const failures = []; + let offNetwork = 0; + for (const pair of pairs.values()) { + if (pair.lines.size === 0) { + offNetwork++; + continue; } - - const deduped = []; - let lastRlat = null; - let lastRlon = null; - for (const p of points) { - const rlat = Math.round(p[0] * 1e5); - const rlon = Math.round(p[1] * 1e5); - if (rlat !== lastRlat || rlon !== lastRlon) { - deduped.push(p); - lastRlat = rlat; - lastRlon = rlon; + const endOn = (name, preferred) => { + for (const line of new Set([preferred, ...pair.lines])) { + if (!line) continue; + const node = stationNode(name, line); + if (node >= 0) return node; } - } - - return { - encoded: encodePolyline(deduped), - usedLines: [...usedLineSet], + return -1; }; - } - - for (let i = 0; i < workList.length; i++) { - const seg = workList[i]; - - const hasHints = seg.allLines.length > 0; - const hasWikiLine = seg.allLines.some((l) => wikiLineNumbers.has(l)); - if (hasHints && !hasWikiLine) continue; - - let result = tryRoute(seg, graphAvail, routerAvail); - let usedFull = false; - - if (!result) { - result = tryRoute(seg, graphFull, routerFull); - usedFull = true; + const from = endOn(pair.a, mostCommon(pair.aLines)); + const to = endOn(pair.b, mostCommon(pair.bLines)); + if (from < 0 || to < 0) { + failures.push(`${pair.key}: station not near its lines`); + continue; } - - if (!result) { - fallback++; + // It may switch between two of its lines where they run side by side + // (the switch is at a timetable point without coordinates). + const onLeg = (node) => + [...graph.nodeLines[node]].some((l) => pair.lines.has(l)); + const edgePath = findPath(graph, from, to, (e) => + e.line === null + ? !e.crossLine || (onLeg(e.a) && onLeg(e.b)) + : pair.lines.has(e.line), + ); + if (!edgePath) { + failures.push( + `${pair.key}: no path on lines ${[...pair.lines].join(",")}`, + ); continue; } - - routeSegments[seg.key] = result.encoded; - segmentLines[seg.key] = result.usedLines; - if (usedFull) segmentUsedFullGraph.add(seg.key); - computed++; - if (usedFull) computedFull++; - else computedAvail++; + legs.set(pair.key, { ...simplifyPath(from, edgePath), lines: pair.lines }); } log( - ` Computed: ${computed} (avail: ${computedAvail}, full: ${computedFull}), Fallback (grey): ${fallback}`, + ` Routed: ${legs.size}/${pairs.size}, off the wiki network: ${offNetwork}, failed: ${failures.length}`, ); - - log("Step 4: Compute per-segment availability"); - - const lineAvailableFeatures = {}; - const lineNotAvailableFeatures = {}; - for (const routeEntry of wikiMapData.routes) { - const match = routeEntry.name.match(/^LK(\d+)$/); - if (!match) continue; - const lineNo = match[1]; - const isAvailable = routeEntry.available !== false; - const cacheName = `wiki_route_${routeEntry.name.replace(/[^a-zA-Z0-9]/g, "_")}_${isAvailable ? "avail" : "notavail"}.json`; - try { - const gj = JSON.parse( - fs.readFileSync(path.join(CACHE_DIR, cacheName), "utf8"), + for (const f of failures) log(` - ${f}`); + + log("Step 5: Join consecutive legs at stations"); + // Two legs meeting at S each end on their own line's track nearest to + // S, which needn't be where the train passes: it may change lines at S, + // or S's nearest track may be a parallel one. A join replaces the last + // ~1km of the leg into S and the first ~1km of the leg out of it with + // the shortest path between those points. It may use the station's + // other lines — and switch between lines running side by side — only + // within the station area. + const orientedLeg = (from, to) => { + const leg = legs.get(from < to ? `${from}|${to}` : `${to}|${from}`); + if (!leg) return null; + return { ...leg, nodes: from < to ? leg.nodes : [...leg.nodes].reverse() }; + }; + const joins = {}; + const seenTriples = new Set(); + let joinFailures = 0; + for (const { timetable } of allTimetables) { + if (!Array.isArray(timetable)) continue; + const names = timetableStations(timetable).map((stop) => stop.name); + for (let i = 1; i < names.length - 1; i++) { + // Canonical direction: from the alphabetically smaller neighbour. + // A train reversing at S (same neighbour both sides) keeps its + // out-and-back. + const [prev, station, next] = + names[i - 1] < names[i + 1] + ? [names[i - 1], names[i], names[i + 1]] + : [names[i + 1], names[i], names[i - 1]]; + const key = `${prev}|${station}|${next}`; + if (prev === next || seenTriples.has(key)) continue; + seenTriples.add(key); + const inLeg = orientedLeg(prev, station); + const outLeg = orientedLeg(station, next); + if (!inLeg || !outLeg) continue; + + // Reach back at most to the middle of each leg, so the joins at + // both ends of a short leg never overlap. + const inMid = Math.ceil((inLeg.nodes.length - 1) / 2); + const outMid = Math.floor((outLeg.nodes.length - 1) / 2); + let cutIn = inLeg.nodes.length - 1; + while (cutIn > inMid && polylineKm(inLeg.nodes.slice(cutIn)) < JOIN_KM) + cutIn--; + let cutOut = 0; + while ( + cutOut < outMid && + polylineKm(outLeg.nodes.slice(0, cutOut + 1)) < JOIN_KM + ) + cutOut++; + + const center = graph.coords[inLeg.nodes[inLeg.nodes.length - 1]]; + const stationOwn = new Set(stationLines.get(station) ?? []); + const inArea = (e) => + haversineKm(graph.coords[e.a], center) <= STATION_AREA_KM; + const edgePath = findPath( + graph, + inLeg.nodes[cutIn], + outLeg.nodes[cutOut], + (e) => + (e.line === null && !e.crossLine) || + inLeg.lines.has(e.line) || + outLeg.lines.has(e.line) || + ((e.crossLine || stationOwn.has(e.line)) && inArea(e)), ); - const target = isAvailable - ? lineAvailableFeatures - : lineNotAvailableFeatures; - if (!target[lineNo]) target[lineNo] = []; - for (const f of gj.features || []) { - const g = f.geometry; - if (!g) continue; - let lines = []; - if (g.type === "LineString") lines = [g.coordinates]; - else if (g.type === "MultiLineString") lines = g.coordinates; - else continue; - for (const line of lines) { - if (line.length >= 2) { - target[lineNo].push(line.map((c) => [c[1], c[0]])); - } - } + const legsMeet = inLeg.nodes[inLeg.nodes.length - 1] === outLeg.nodes[0]; + if (!edgePath) { + if (!legsMeet) joinFailures++; + continue; } - } catch {} + const { nodes, boundaries } = simplifyPath(inLeg.nodes[cutIn], edgePath); + const concatKm = + polylineKm(inLeg.nodes.slice(cutIn)) + + polylineKm(outLeg.nodes.slice(0, cutOut + 1)); + // Only worth storing where plain concatenation is wrong. + if (legsMeet && polylineKm(nodes) > concatKm - 0.02) continue; + joins[key] = { + cut: [inLeg.nodes.length - 1 - cutIn, cutOut], + points: encodeNodes(nodes), + // A join may cross track that isn't available in the game. + colors: boundaries, + }; + } } log( - ` Available lines: ${Object.keys(lineAvailableFeatures).length}, Not-available lines: ${Object.keys(lineNotAvailableFeatures).length}`, + ` Joins: ${Object.keys(joins).length} (of ${seenTriples.size} station passes), unroutable line changes: ${joinFailures}`, ); - function distToLineKm(point, line) { - let min = Infinity; - const cosLat = Math.cos((point[0] * Math.PI) / 180); - const px = point[1] * cosLat * 111.32; - const py = point[0] * 111.32; - for (let i = 0; i < line.length - 1; i++) { - const ax = line[i][1] * cosLat * 111.32; - const ay = line[i][0] * 111.32; - const bx = line[i + 1][1] * cosLat * 111.32; - const by = line[i + 1][0] * 111.32; - const dx = bx - ax; - const dy = by - ay; - const len2 = dx * dx + dy * dy; - let t = len2 === 0 ? 0 : ((px - ax) * dx + (py - ay) * dy) / len2; - t = Math.max(0, Math.min(1, t)); - const fx = px - (ax + t * dx); - const fy = py - (ay + t * dy); - min = Math.min(min, Math.sqrt(fx * fx + fy * fy)); - } - return min; - } - - function decodePolyline(str) { - let idx = 0; - let lat = 0; - let lon = 0; - const pts = []; - while (idx < str.length) { - let shift = 0; - let result = 0; - let byte; - do { - byte = str.charCodeAt(idx++) - 63; - result |= (byte & 0x1f) << shift; - shift += 5; - } while (byte >= 0x20); - lat += result & 1 ? ~(result >> 1) : result >> 1; - shift = 0; - result = 0; - do { - byte = str.charCodeAt(idx++) - 63; - result |= (byte & 0x1f) << shift; - shift += 5; - } while (byte >= 0x20); - lon += result & 1 ? ~(result >> 1) : result >> 1; - pts.push([lat / 1e5, lon / 1e5]); - } - return pts; - } - + log("Step 6: Write output"); + const segments = {}; const segmentColors = {}; - let availCount = 0; - let notAvailCount = 0; - for (const [key, encoded] of Object.entries(routeSegments)) { - if (!segmentUsedFullGraph.has(key)) { - segmentColors[key] = [[0, 0]]; - availCount++; - continue; - } - - const lines = - segmentLines[key] || - (segments.get(key)?.allLines.filter((l) => wikiLineNumbers.has(l)) ?? []); - const availTracks = lines.flatMap((l) => lineAvailableFeatures[l] || []); - const notAvailTracks = lines.flatMap( - (l) => lineNotAvailableFeatures[l] || [], - ); - - if (availTracks.length === 0 && notAvailTracks.length === 0) { - segmentColors[key] = [[0, 2]]; + for (const [key, leg] of legs) { + segments[key] = encodeNodes(leg.nodes); + segmentColors[key] = leg.boundaries; + } + const stations = {}; + for (const [name, coord] of stationCoords) { + const lines = stationLines.get(name); + if (!lines) { + stations[name] = coord; continue; } - if (notAvailTracks.length === 0) { - segmentColors[key] = [[0, 0]]; - availCount++; + // Draw the station on its busiest line. + const node = [...lines, null] + .map((line) => stationNode(name, line)) + .find((n) => n >= 0); + if (node === undefined) { + log(` Dropped (no track within ${SNAP_MAX_KM}km): ${name}`); + knownStations.delete(name); continue; } - - const pts = decodePolyline(encoded); - const pointColors = pts.map((pt) => { - let minAvail = Infinity; - for (const track of availTracks) { - const d = distToLineKm(pt, track); - if (d < minAvail) minAvail = d; - if (minAvail < 0.05) break; - } - let minNotAvail = Infinity; - for (const track of notAvailTracks) { - const d = distToLineKm(pt, track); - if (d < minNotAvail) minNotAvail = d; - if (minNotAvail < 0.05) break; - } - if (minAvail > 0.05 && minNotAvail < 0.2) return 1; - return 0; - }); - - const boundaries = [[0, pointColors[0]]]; - for (let i = 1; i < pointColors.length; i++) { - if (pointColors[i] !== pointColors[i - 1]) { - boundaries.push([i, pointColors[i]]); - if (pointColors[i - 1] === 0) availCount++; - else notAvailCount++; - } - } - if (pointColors[pointColors.length - 1] === 0) availCount++; - else notAvailCount++; - - segmentColors[key] = boundaries; + stations[name] = graph.coords[node]; } + // Sorted by plain code-unit order (not locale-aware), so regenerating + // only produces a diff when the data changes. + const byName = (a, b) => (a < b ? -1 : a > b ? 1 : 0); + const sortKeys = (obj) => + Object.fromEntries(Object.entries(obj).sort(([a], [b]) => byName(a, b))); + const output = { + version: 2, + knownStations: [...knownStations] + .filter((name) => name in stations) + .sort(byName), + stations: sortKeys(stations), + segments: sortKeys(segments), + segmentColors: sortKeys(segmentColors), + joins: sortKeys(joins), + }; + fs.writeFileSync(OUTPUT_PATH, JSON.stringify(output)); + execFileSync(OXFMT, [OUTPUT_PATH], { stdio: "ignore" }); log( - ` Available sub-segments: ${availCount}, Not available: ${notAvailCount}`, + ` Written ${OUTPUT_PATH} (${(fs.statSync(OUTPUT_PATH).size / 1024).toFixed(0)} KB)`, ); - log("Step 5: Write output"); - - const GREY_RISK_KM = 50; - const greyRisk = []; - for (const seg of workList) { - if (routeSegments[seg.key]) continue; - const [a, b] = seg.key.split("|"); - const ca = stationCoords.get(a); - const cb = stationCoords.get(b); - if (ca && cb && haversineKm(ca, cb) > GREY_RISK_KM) { - greyRisk.push(seg.label); + log("Step 7: Write the playable area"); + // Every track of every wiki line, for the map's "Playable area" layer. + // Parallel tracks of a line are kept (they overlap at map scale), so the + // layer shows exactly what the wiki shows, split by availability. + const lines = {}; + for (const route of wikiMapData.routes) { + const lk = parseWikiRoute(route); + if (!lk) continue; + // The available and unavailable parts of a line are separate wiki + // entries; merge their info (e.g. LK1's "Wiedenka" is only on one). + const info = (lines[lk.line] ??= { available: [], unavailable: [] }); + for (const field of ["title", "subtitle", "lkname", "link"]) { + if (route[field] && !info[field]) info[field] = route[field]; } } - if (greyRisk.length > 0) { - log( - ` GREY RISK — ${greyRisk.length} uncomputed pairs > ${GREY_RISK_KM}km apart:`, + for (const way of routeWays) { + const kept = simplifyIndices(way.coords, SIMPLIFY_KM).map( + (i) => way.coords[i], + ); + lines[way.line][way.available ? "available" : "unavailable"].push( + encodePolyline(kept), ); - for (const label of greyRisk) log(` - ${label}`); - } else { - log(` Grey-risk report: none > ${GREY_RISK_KM}km`); } + fs.writeFileSync(PLAYABLE_AREA_PATH, JSON.stringify({ lines })); + execFileSync(OXFMT, [PLAYABLE_AREA_PATH], { stdio: "ignore" }); + log( + ` Written ${PLAYABLE_AREA_PATH} (${Object.keys(lines).length} lines, ${(fs.statSync(PLAYABLE_AREA_PATH).size / 1024).toFixed(0)} KB)`, + ); - const output = { - version: 1, - knownStations: [...knownStations], - stations: Object.fromEntries(stationCoords), - segments: routeSegments, - segmentColors, - }; - const json = JSON.stringify(output); - fs.writeFileSync(OUTPUT_PATH, json); - log(` Written ${OUTPUT_PATH} (${(json.length / 1024).toFixed(0)} KB)`); + log("Step 8: Check the routes (scripts/check-routes.mjs)"); + const { ok } = await checkRoutes({ log }); + if (!ok) process.exitCode = 1; log(`Done in ${((Date.now() - t0) / 1000).toFixed(1)}s`); } diff --git a/packages/map/scripts/generate-stations.mjs b/packages/map/scripts/generate-stations.mjs new file mode 100644 index 0000000..3e3a147 --- /dev/null +++ b/packages/map/scripts/generate-stations.mjs @@ -0,0 +1,340 @@ +#!/usr/bin/env node + +/** + * generate-stations.mjs — Generates the station marker JSON databases from the + * SimRail wiki (source of truth — it gets constantly updated). + * + * Outputs: + * - components/stations.json → "Unplayable dispatch stations" layer + * - components/stationsPassenger.json → "Passenger stations" layer + * - components/stationsRemote.json → "Remote dispatch stations" layer + * + * Data flow: + * 1. Fetch the wiki map station list (map-data.json: entries with + * type "po" | "border" | playable:false) — these are the unplayable + * stations drawn as shapes on the wiki map. + * 2. Fetch the wiki playable station list (stations/poland/stations.json) + * — dispatch stations. Stations listed in a parent's `map.controlled` + * array are remote dispatch stations (e.g. Żychlin is controlled by + * LCS Jackowice). + * 3. For each station shape, fetch its GeoJSON and compute the area + * centroid (same method as the wiki map: turf.centroid → for polygons + * an area-weighted centroid, for lines the vertex average). + * 4. stationsRemote.json: entries from `controlled` arrays, keyed with + * id = parent station name (the controller shown in the popup). + * 5. All wiki map stations that are NOT playable anywhere: not a + * dispatch station in the playable list, not a controlled (remote) + * station, and not present in the stations-open API (dispatch + * stations reported by live game servers). Passenger stops (wiki + * type "po", przystanek osobowy) go to stationsPassenger.json, the + * rest (border and other dispatch stations) to stations.json. + * + * Usage: + * node scripts/generate-stations.mjs [--refresh] [--dry] + */ + +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const CACHE_DIR = path.join(__dirname, ".cache"); +const STATIONS_OUT = path.join(__dirname, "..", "components", "stations.json"); +const PASSENGER_OUT = path.join( + __dirname, + "..", + "components", + "stationsPassenger.json", +); +const REMOTE_OUT = path.join( + __dirname, + "..", + "components", + "stationsRemote.json", +); + +const WIKI_MAP_DATA_URL = + "https://wiki.simrail.eu/map/main-files/map-data.json"; +const WIKI_STATIONS_URL = + "https://wiki.simrail.eu/stations/poland/stations.json"; +const WIKI_BASE = "https://wiki.simrail.eu"; +const PANEL_BASE = "https://panel.simrail.eu:8084"; +const USER_AGENT = "simrail-app-map-station-generator/1.0"; + +fs.mkdirSync(CACHE_DIR, { recursive: true }); +const refresh = process.argv.includes("--refresh"); +const dry = process.argv.includes("--dry"); + +async function cachedFetchJson(url, cacheName) { + const cachePath = path.join(CACHE_DIR, cacheName); + if (!refresh && fs.existsSync(cachePath)) { + return JSON.parse(fs.readFileSync(cachePath, "utf8")); + } + const res = await fetch(url, { headers: { "User-Agent": USER_AGENT } }); + if (!res.ok) throw new Error(`HTTP ${res.status} for ${url}`); + const json = await res.json(); + fs.writeFileSync(cachePath, JSON.stringify(json)); + return json; +} + +function normalizeName(name) { + return name.normalize("NFC").trim().replace(/\s+/g, " ").toLowerCase(); +} + +/** + * Computes the centroid of a station's GeoJSON shape, mirroring how the + * wiki map places its station labels (turf.centroid): + * - Polygons: area-weighted centroid (polygon centroid formula). + * - LineStrings / MultiLineStrings: vertex average (turf centroid of a + * line is the vertex centroid). + */ +function stationCentroid(gj) { + let sumArea = 0; + let cx = 0; + let cy = 0; // signed area × centroid, accumulated per ring + let lineLat = 0; + let lineLon = 0; + let lineN = 0; + + const ringCentroid = (ring) => { + // ring: [[lon, lat], ...] (closed or open) + // Returns [S, Σ(x0+x1)·cross, Σ(y0+y1)·cross] where S = Σ(x0·y1−x1·y0). + // Polygon centroid: Cx = Σ(x0+x1)·cross / (3S), Cy = Σ(y0+y1)·cross / (3S). + let a = 0; + let x = 0; + let y = 0; + for (let i = 0; i < ring.length - 1; i++) { + const [x0, y0] = ring[i]; + const [x1, y1] = ring[i + 1]; + const cross = x0 * y1 - x1 * y0; + a += cross; + x += (x0 + x1) * cross; + y += (y0 + y1) * cross; + } + return [a, x, y]; + }; + + const addPolygon = (rings) => { + for (let r = 0; r < rings.length; r++) { + const [a, x, y] = ringCentroid(rings[r]); + // Holes wind opposite to the outer ring, so the signed sums already + // have opposite signs; normalise each ring's winding first, then + // add the outer ring and subtract the holes. + const sign = Math.sign(a) * (r === 0 ? 1 : -1); + sumArea += sign * a; + cx += sign * x; + cy += sign * y; + } + }; + + for (const f of gj.features || []) { + const g = f.geometry; + if (!g) continue; + if (g.type === "Polygon") { + addPolygon(g.coordinates); + } else if (g.type === "MultiPolygon") { + for (const poly of g.coordinates) addPolygon(poly); + } else if (g.type === "LineString") { + for (const c of g.coordinates) { + lineLat += c[1]; + lineLon += c[0]; + lineN++; + } + } else if (g.type === "MultiLineString") { + for (const ls of g.coordinates) { + for (const c of ls) { + lineLat += c[1]; + lineLon += c[0]; + lineN++; + } + } + } else if (g.type === "Point") { + lineLat += g.coordinates[1]; + lineLon += g.coordinates[0]; + lineN++; + } + } + + if (sumArea !== 0) { + // Polygon centroid (area-weighted, holes subtracted): + // [lat, lon] = [Σ(y0+y1)·cross, Σ(x0+x1)·cross] / (3 · ΣS) + return [cy / (3 * sumArea), cx / (3 * sumArea)]; + } + if (lineN > 0) { + return [lineLat / lineN, lineLon / lineN]; + } + return null; +} + +const makeEntry = (name, coord, extra = {}) => ({ + Name: name, + Prefix: "", + DifficultyLevel: 0, + MainImageURL: "", + AdditionalImage1URL: "", + AdditionalImage2URL: "", + DispatchedBy: [], + Latititude: coord[0], + Longitude: coord[1], + id: "", + ...extra, +}); + +async function main() { + // 1. Wiki data (source of truth) + const mapData = await cachedFetchJson( + WIKI_MAP_DATA_URL, + "wiki_map_data.json", + ); + const playableStations = await cachedFetchJson( + WIKI_STATIONS_URL, + "wiki_playable_stations.json", + ); + console.log( + `Wiki: ${mapData.stations.length} map stations, ${playableStations.length} playable stations`, + ); + + // 2. Live dispatch stations from the panel API (all active servers) + const serversResp = await cachedFetchJson( + `${PANEL_BASE}/servers-open`, + "servers.json", + ); + // Requests that failed. The catalogs are only written from complete data: + // a missing shape would drop a station, and a missing server could mark + // a dispatchable station as unplayable. + const failures = []; + const liveStations = new Set(); // normalized names currently dispatchable somewhere + for (const server of serversResp.data.filter((s) => s.IsActive)) { + try { + const resp = await cachedFetchJson( + `${PANEL_BASE}/stations-open?serverCode=${server.ServerCode}`, + `stations_${server.ServerCode}.json`, + ); + for (const s of resp.data || []) { + if (s.Name) liveStations.add(normalizeName(s.Name)); + } + } catch (err) { + failures.push(`server ${server.ServerCode}: ${err.message}`); + } + } + console.log(`Live dispatch stations across servers: ${liveStations.size}`); + + // 3. Playable + remote sets from the wiki + const playable = new Map(); // norm name → playable station (dispatch) + const remote = new Map(); // norm name → { name, controller } (remote dispatch) + for (const s of playableStations) { + playable.set(normalizeName(s.name), s); + if (s.map?.controlled) { + for (const c of s.map.controlled) { + remote.set(normalizeName(c.name), { name: c.name, controller: s.name }); + } + } + } + + // 4. Fetch shapes + centroids for all wiki map stations AND all + // controlled (remote) station shapes — the controlled entries have + // their own geojson URLs, separate from map-data.json. + const centroids = new Map(); // norm name → [lat, lon] + const shapeUrls = new Map(); // norm name → geojson URL + for (const station of mapData.stations) { + shapeUrls.set(normalizeName(station.name), station.url); + } + for (const s of playableStations) { + if (s.map?.controlled) { + for (const c of s.map.controlled) { + shapeUrls.set(normalizeName(c.name), c.url); + } + } + } + await pool([...shapeUrls.entries()], 10, async ([norm, url]) => { + const cacheName = `wiki_station_${norm.replace(/[^a-zA-Z0-9]/g, "_")}.json`; + try { + const gj = await cachedFetchJson(WIKI_BASE + url, cacheName); + const c = stationCentroid(gj); + if (c) centroids.set(norm, c); + } catch (err) { + failures.push(`shape ${url}: ${err.message}`); + } + }); + console.log(`Station centroids computed: ${centroids.size}`); + + // 5. Build stationsRemote.json + const remoteOut = []; + for (const [norm, info] of remote) { + const coord = info.coord || centroids.get(norm); + if (!coord) { + console.log(` ! remote station without shape: ${info.name}`); + continue; + } + remoteOut.push(makeEntry(info.name, coord, { id: info.controller })); + } + remoteOut.sort((a, b) => a.Name.localeCompare(b.Name, "pl")); + + // 6. Build stations.json (unplayable) and stationsPassenger.json + // A station is unplayable if it is on the wiki map but NOT: + // a playable dispatch station, a remote (controlled) station, or a + // live dispatch station from the API. Passenger stops ("po") are + // listed separately. + const unplayableOut = []; + const passengerOut = []; + for (const station of mapData.stations) { + const norm = normalizeName(station.name); + if (playable.has(norm)) continue; + if (remote.has(norm)) continue; + if (liveStations.has(norm)) continue; // became playable (API) + const coord = centroids.get(norm); + if (!coord) continue; + const out = station.type === "po" ? passengerOut : unplayableOut; + out.push(makeEntry(station.name, coord)); + } + unplayableOut.sort((a, b) => a.Name.localeCompare(b.Name, "pl")); + passengerOut.sort((a, b) => a.Name.localeCompare(b.Name, "pl")); + + console.log(`\nRemote stations: ${remoteOut.length}`); + console.log(`Unplayable dispatch stations: ${unplayableOut.length}`); + console.log(`Passenger stations: ${passengerOut.length}`); + + if (failures.length > 0) { + console.error( + `\n${failures.length} request(s) failed — not writing the catalogs:`, + ); + for (const f of failures) console.error(` - ${f}`); + process.exitCode = 1; + return; + } + if (dry) { + console.log("(dry run — no files written)"); + return; + } + fs.writeFileSync(REMOTE_OUT, JSON.stringify(remoteOut, null, "\t") + "\n"); + fs.writeFileSync( + STATIONS_OUT, + JSON.stringify(unplayableOut, null, "\t") + "\n", + ); + fs.writeFileSync( + PASSENGER_OUT, + JSON.stringify(passengerOut, null, "\t") + "\n", + ); + console.log( + `Written:\n ${REMOTE_OUT}\n ${STATIONS_OUT}\n ${PASSENGER_OUT}`, + ); +} + +async function pool(items, limit, fn) { + let idx = 0; + const workers = Array.from( + { length: Math.min(limit, items.length) }, + async () => { + while (idx < items.length) { + const i = idx++; + await fn(items[i], i); + } + }, + ); + await Promise.all(workers); +} + +main().catch((err) => { + console.error("FATAL:", err); + process.exit(1); +}); diff --git a/packages/map/scripts/rail-helpers.mjs b/packages/map/scripts/rail-helpers.mjs index 9406737..3c86c19 100644 --- a/packages/map/scripts/rail-helpers.mjs +++ b/packages/map/scripts/rail-helpers.mjs @@ -37,448 +37,456 @@ export function encodePolyline(points) { return out; } -export function decodePolyline(str) { - let idx = 0; - let lat = 0; - let lon = 0; - const pts = []; - while (idx < str.length) { - let shift = 0; - let result = 0; - let byte; - do { - byte = str.charCodeAt(idx++) - 63; - result |= (byte & 0x1f) << shift; - shift += 5; - } while (byte >= 0x20); - lat += result & 1 ? ~(result >> 1) : result >> 1; +/** + * The wiki map's LK route entry for a line, or null for sidings and other + * non-line routes. A line can have two entries: the part available in the + * game and the part that isn't. + */ +export function parseWikiRoute(route) { + const match = route.name.match(/^LK(\d+)$/); + if (!match) return null; + const available = route.available !== false; + return { + line: match[1], + available, + cacheName: `wiki_route_${route.name.replace(/[^a-zA-Z0-9]/g, "_")}_${available ? "avail" : "notavail"}.json`, + }; +} - shift = 0; - result = 0; - do { - byte = str.charCodeAt(idx++) - 63; - result |= (byte & 0x1f) << shift; - shift += 5; - } while (byte >= 0x20); - lon += result & 1 ? ~(result >> 1) : result >> 1; +/** + * Track ways from a wiki route GeoJSON. Each feature is one OSM way — one + * track, since double-track lines are mapped per track. + */ +export function waysFromRouteGeoJson(geojson, line, available) { + const ways = []; + for (const f of geojson.features || []) { + const g = f.geometry; + const parts = + g?.type === "LineString" + ? [g.coordinates] + : g?.type === "MultiLineString" + ? g.coordinates + : []; + const p = f.properties ?? {}; + const elevated = + !!p.bridge || !!p.tunnel || (p.layer != null && Number(p.layer) !== 0); + for (const part of parts) { + if (part.length < 2) continue; + ways.push({ + coords: part.map(([lon, lat]) => [lat, lon]), + line, + available, + elevated, + }); + } + } + return ways; +} - pts.push([lat / 1e5, lon / 1e5]); +// Graph tuning. Tracks of a double-track line are ~4-6m apart and are +// separate OSM ways; the wiki export only contains `usage=main` ways, so the +// crossovers between them are missing. We recreate them as connectors. +const DENSIFY_KM = 0.025; // max node spacing, so parallel tracks have nearby nodes +const TRACK_CONNECT_KM = 0.02; // max gap bridged between tracks of the same line +const DEAD_END_CONNECT_KM = 0.03; // max gap bridged at a clipped way end +const PARALLEL_MAX_DEG = 30; +const CONNECTOR_PENALTY_KM = 0.2; // discourages zig-zagging between tracks +const GRID_DEG = 0.0005; +// Connected pieces shorter than this are OSM leftovers (stubs, clipped +// fragments). Stations must not snap onto them: nothing leads anywhere. +const MIN_COMPONENT_KM = 1; + +const coordKey = (c) => `${c[0].toFixed(6)},${c[1].toFixed(6)}`; +const cellKey = (lat, lon) => + `${Math.floor(lat / GRID_DEG)},${Math.floor(lon / GRID_DEG)}`; + +function bearingDeg(a, b) { + const cosLat = Math.cos((((a[0] + b[0]) / 2) * Math.PI) / 180); + return ( + ((Math.atan2((b[1] - a[1]) * cosLat, b[0] - a[0]) * 180) / Math.PI + 360) % + 360 + ); +} + +// Angle between two undirected track directions (0-90). +function axisDiffDeg(a, b) { + const d = Math.abs(a - b) % 180; + return d > 90 ? 180 - d : d; +} + +function densify(coords) { + const out = [coords[0]]; + for (let i = 1; i < coords.length; i++) { + const a = coords[i - 1]; + const b = coords[i]; + const steps = Math.ceil(haversineKm(a, b) / DENSIFY_KM); + for (let s = 1; s < steps; s++) { + const t = s / steps; + out.push([a[0] + (b[0] - a[0]) * t, a[1] + (b[1] - a[1]) * t]); + } + out.push(b); } - return pts; + return out; } -export function buildGraphFromRoutes(routeFeatures) { - const coordIndex = new Map(); +/** + * Builds a routable graph from OSM track ways. + * + * ways: { coords: [lat, lon][], line: string, available: boolean, + * elevated: boolean }[] + * + * Edges come from three sources only: + * 1. Way geometry. Ways of different lines connect only where OSM gives + * them a shared node — those are the real junctions. Lines crossing on a + * bridge never share a node, so trains can't jump there. + * 2. Track connectors: nodes of the same line, on different ways, ≤20m + * apart and parallel. Stand-ins for the missing crossovers. + * 3. Dead-end connectors: a way end that touches nothing else (the wiki + * clips lines at arbitrary points) joins the nearest aligned node ≤30m. + * 4. Line connectors: like track connectors, but between different lines + * running side by side (e.g. LK1 and LK447 through Warszawa Włochy). + * Marked `crossLine`: only for switching lines inside a station. + * Connectors are never made on bridges/tunnels and have `line: null`. + */ +export function buildRailGraph(ways) { const coords = []; - const resolveCoord = (lat, lon) => { - const key = `${lat.toFixed(6)},${lon.toFixed(6)}`; - let i = coordIndex.get(key); + const nodeIndex = new Map(); + const nodeElevated = []; + const nodeLines = []; + const nodeWays = []; + // For each node, the local track direction per way through it. + const nodeBearings = []; + + const nodeFor = (c) => { + const key = coordKey(c); + let i = nodeIndex.get(key); if (i === undefined) { i = coords.length; - coordIndex.set(key, i); - coords.push([lat, lon]); + nodeIndex.set(key, i); + coords.push([Number(c[0].toFixed(6)), Number(c[1].toFixed(6))]); + nodeElevated.push(false); + nodeLines.push(new Set()); + nodeWays.push(new Set()); + nodeBearings.push([]); } return i; }; - const ea = []; - const eb = []; - const ed = []; - const erefs = []; - const endpointNodes = new Set(); - const endpointBearings = new Map(); - - const bearingDeg = (a, b) => { - const cosLat = Math.cos((((a[0] + b[0]) / 2) * Math.PI) / 180); - return ( - ((Math.atan2((b[1] - a[1]) * cosLat, b[0] - a[0]) * 180) / Math.PI + - 360) % - 360 - ); - }; - const angleDiffDeg = (a, b) => { - const d = Math.abs(a - b) % 360; - return d > 180 ? 360 - d : d; - }; - const addEndpointBearing = (idx, deg) => { - let list = endpointBearings.get(idx); - if (!list) endpointBearings.set(idx, (list = [])); - list.push(deg); - }; - - for (const feat of routeFeatures) { - const refs = feat.refs || []; - let lines = []; - const g = feat.geometry; - if (!g) continue; - if (g.type === "LineString") lines = [g.coordinates]; - else if (g.type === "MultiLineString") lines = g.coordinates; - else continue; - - for (const line of lines) { - if (line.length === 0) continue; - const firstIdx = resolveCoord(line[0][1], line[0][0]); - endpointNodes.add(firstIdx); - if (line.length > 1) { - const lastC = line[line.length - 1]; - const lastIdx = resolveCoord(lastC[1], lastC[0]); - endpointNodes.add(lastIdx); - const second = line[1]; - addEndpointBearing( - firstIdx, - bearingDeg([line[0][1], line[0][0]], [second[1], second[0]]), + const edges = []; // { a, b, km, line, available, crossLine? } + const addEdge = (a, b, km, line, available) => + edges.push({ a, b, km, line, available }); + + ways.forEach((way, w) => { + const pts = densify(way.coords); + let prev = -1; + for (let i = 0; i < pts.length; i++) { + const n = nodeFor(pts[i]); + nodeLines[n].add(way.line); + nodeWays[n].add(w); + if (way.elevated) nodeElevated[n] = true; + const from = pts[Math.max(0, i - 1)]; + const to = pts[Math.min(pts.length - 1, i + 1)]; + nodeBearings[n].push(bearingDeg(from, to)); + if (prev >= 0 && prev !== n) { + addEdge( + prev, + n, + haversineKm(coords[prev], coords[n]), + way.line, + way.available, ); - const prevLast = line[line.length - 2]; - addEndpointBearing( - lastIdx, - bearingDeg([prevLast[1], prevLast[0]], [lastC[1], lastC[0]]), - ); - } - - let prevIdx = -1; - for (const c of line) { - const i = resolveCoord(c[1], c[0]); - if (prevIdx >= 0 && prevIdx !== i) { - ea.push(prevIdx); - eb.push(i); - ed.push(haversineKm(coords[prevIdx], coords[i])); - erefs.push(refs); - } - prevIdx = i; } + prev = n; } - } + }); - const endpointToleranceKm = 0.5; - const epGridSize = 0.005; - const epGrid = new Map(); - for (let i = 0; i < coords.length; i++) { - if (!endpointNodes.has(i)) continue; - const [lat, lon] = coords[i]; - const key = `${Math.floor(lat / epGridSize)},${Math.floor(lon / epGridSize)}`; - let cell = epGrid.get(key); - if (!cell) { - cell = []; - epGrid.set(key, cell); - } - cell.push(i); - } - const allGrid = new Map(); - for (let i = 0; i < coords.length; i++) { - const [lat, lon] = coords[i]; - const key = `${Math.floor(lat / epGridSize)},${Math.floor(lon / epGridSize)}`; - let cell = allGrid.get(key); - if (!cell) { - cell = []; - allGrid.set(key, cell); - } - cell.push(i); - } - const adjSet = new Set(); - const neighbors = new Map(); - for (let e = 0; e < ea.length; e++) { - adjSet.add(`${Math.min(ea[e], eb[e])}|${Math.max(ea[e], eb[e])}`); - let n1 = neighbors.get(ea[e]); - if (!n1) neighbors.set(ea[e], (n1 = [])); - n1.push(eb[e]); - let n2 = neighbors.get(eb[e]); - if (!n2) neighbors.set(eb[e], (n2 = [])); - n2.push(ea[e]); + const degree = new Int32Array(coords.length); + for (const e of edges) { + degree[e.a]++; + degree[e.b]++; } - const MAX_ALIGN_DEG = 60; - - const isPlausibleContinuation = (i, j) => { - const bearingIJ = bearingDeg(coords[i], coords[j]); - const bearingsI = endpointBearings.get(i); - if (!bearingsI || bearingsI.length === 0) return false; - let okI = false; - for (const b of bearingsI) { - if (angleDiffDeg(bearingIJ, b) <= MAX_ALIGN_DEG) { - okI = true; - break; - } - } - if (!okI) return false; - const jsNeighbors = neighbors.get(j); - if (!jsNeighbors || jsNeighbors.length === 0) return false; - for (const k of jsNeighbors) { - if ( - angleDiffDeg(bearingIJ, bearingDeg(coords[j], coords[k])) <= - MAX_ALIGN_DEG - ) { - return true; - } - } - return false; - }; - - for (const i of endpointNodes) { + const grid = new Map(); + coords.forEach(([lat, lon], i) => { + const key = cellKey(lat, lon); + let cell = grid.get(key); + if (!cell) grid.set(key, (cell = [])); + cell.push(i); + }); + const nearby = (i, maxKm) => { const [lat, lon] = coords[i]; - const cx = Math.floor(lat / epGridSize); - const cy = Math.floor(lon / epGridSize); - const candidates = []; + const cx = Math.floor(lat / GRID_DEG); + const cy = Math.floor(lon / GRID_DEG); + const out = []; for (let dx = -1; dx <= 1; dx++) { for (let dy = -1; dy <= 1; dy++) { - const cell = allGrid.get(`${cx + dx},${cy + dy}`); - if (!cell) continue; - for (const j of cell) { + for (const j of grid.get(`${cx + dx},${cy + dy}`) ?? []) { if (j === i) continue; - const ek = `${Math.min(i, j)}|${Math.max(i, j)}`; - if (adjSet.has(ek)) continue; - const d = haversineKm(coords[i], coords[j]); - if (d <= endpointToleranceKm) candidates.push({ j, d }); + const km = haversineKm(coords[i], coords[j]); + if (km <= maxKm) out.push({ j, km }); } } } - candidates.sort((a, b) => a.d - b.d); - let connected = -1; - for (let c = 0; c < candidates.length && c < 8; c++) { - if (isPlausibleContinuation(i, candidates[c].j)) { - connected = candidates[c].j; - break; + return out.sort((p, q) => p.km - q.km); + }; + const isParallel = (i, j) => + nodeBearings[i].some((bi) => + nodeBearings[j].some((bj) => axisDiffDeg(bi, bj) <= PARALLEL_MAX_DEG), + ); + const shareLine = (i, j) => + [...nodeLines[i]].some((l) => nodeLines[j].has(l)); + const shareWay = (i, j) => [...nodeWays[i]].some((w) => nodeWays[j].has(w)); + + const connected = new Set(); + const addConnector = (i, j, km, crossLine = false) => { + const key = i < j ? `${i}|${j}` : `${j}|${i}`; + if (connected.has(key)) return false; + connected.add(key); + addEdge(i, j, km + CONNECTOR_PENALTY_KM, null, true); + if (crossLine) edges[edges.length - 1].crossLine = true; + return true; + }; + + let trackConnectors = 0; + let lineConnectors = 0; + let deadEndConnectors = 0; + for (let i = 0; i < coords.length; i++) { + if (nodeElevated[i]) continue; + // One connector per neighbouring way: the closest node on it. + const seenWays = new Set(); + for (const { j, km } of nearby(i, TRACK_CONNECT_KM)) { + if (nodeElevated[j] || shareWay(i, j)) continue; + const newWays = [...nodeWays[j]].filter((w) => !seenWays.has(w)); + if (newWays.length === 0) continue; + for (const w of newWays) seenWays.add(w); + if (!isParallel(i, j)) continue; + if (shareLine(i, j)) { + if (addConnector(i, j, km)) trackConnectors++; + } else if (addConnector(i, j, km, true)) { + lineConnectors++; } } - if (connected >= 0) { - const ek = `${Math.min(i, connected)}|${Math.max(i, connected)}`; - adjSet.add(ek); - ea.push(i); - eb.push(connected); - ed.push(haversineKm(coords[i], coords[connected])); - erefs.push([]); // Endpoint-snap edges have no line association - } } - const nodeLines = new Array(coords.length); - for (let e = 0; e < ea.length; e++) { - for (const u of [ea[e], eb[e]]) { - if (!nodeLines[u]) nodeLines[u] = new Set(); - for (const r of erefs[e]) nodeLines[u].add(r); + for (let i = 0; i < coords.length; i++) { + if (degree[i] !== 1 || nodeElevated[i]) continue; + const out = nodeBearings[i][0]; + for (const { j, km } of nearby(i, DEAD_END_CONNECT_KM)) { + if (nodeElevated[j] || shareWay(i, j)) continue; + // The gap must continue the dead end's direction and join a + // track running the same way. + if ( + km > 0.002 && + axisDiffDeg(out, bearingDeg(coords[i], coords[j])) > PARALLEL_MAX_DEG + ) + continue; + if (!isParallel(i, j)) continue; + if (addConnector(i, j, km)) deadEndConnectors++; + break; } } - const nodeCount = coords.length; - const edgeCount = ea.length; - - const degree = new Int32Array(nodeCount); - for (let e = 0; e < edgeCount; e++) { - degree[ea[e]]++; - degree[eb[e]]++; + // CSR adjacency. + const n = coords.length; + const start = new Int32Array(n + 1); + for (const e of edges) { + start[e.a + 1]++; + start[e.b + 1]++; } - - const start = new Int32Array(nodeCount + 1); - for (let i = 0; i < nodeCount; i++) start[i + 1] = start[i] + degree[i]; - + for (let i = 0; i < n; i++) start[i + 1] += start[i]; const cursor = Int32Array.from(start); - const adjEdge = new Int32Array(edgeCount * 2); - const adjOther = new Int32Array(edgeCount * 2); - const adjDist = new Float64Array(edgeCount * 2); - for (let e = 0; e < edgeCount; e++) { - let p = cursor[ea[e]]++; - adjEdge[p] = e; - adjOther[p] = eb[e]; - adjDist[p] = ed[e]; - p = cursor[eb[e]]++; - adjEdge[p] = e; - adjOther[p] = ea[e]; - adjDist[p] = ed[e]; + const adjEdge = new Int32Array(edges.length * 2); + const adjOther = new Int32Array(edges.length * 2); + edges.forEach((e, idx) => { + adjEdge[cursor[e.a]] = idx; + adjOther[cursor[e.a]++] = e.b; + adjEdge[cursor[e.b]] = idx; + adjOther[cursor[e.b]++] = e.a; + }); + + const snappable = new Uint8Array(n); + const visited = new Uint8Array(n); + let fragments = 0; + for (let s = 0; s < n; s++) { + if (visited[s]) continue; + const members = [s]; + visited[s] = 1; + let km = 0; + for (let k = 0; k < members.length; k++) { + const u = members[k]; + for (let p = start[u]; p < start[u + 1]; p++) { + const v = adjOther[p]; + if (v > u) km += edges[adjEdge[p]].km; + if (!visited[v]) { + visited[v] = 1; + members.push(v); + } + } + } + if (km >= MIN_COMPONENT_KM) for (const u of members) snappable[u] = 1; + else fragments++; } return { coords, + edges, start, adjEdge, adjOther, - adjDist, - erefs, - coordIndex, nodeLines, + snappable, + grid, + stats: { + nodes: n, + edges: edges.length, + trackConnectors, + lineConnectors, + deadEndConnectors, + fragments, + }, }; } -export function makeNearestNode(graph, gridSize = 0.02, maxKm = 3.0) { - const grid = new Map(); - for (let i = 0; i < graph.coords.length; i++) { - const [lat, lon] = graph.coords[i]; - const key = `${Math.floor(lat / gridSize)},${Math.floor(lon / gridSize)}`; - let cell = grid.get(key); - if (!cell) { - cell = []; - grid.set(key, cell); - } - cell.push(i); - } - - return (point, allowedLines = null) => { - const [lat, lon] = point; - const cx = Math.floor(lat / gridSize); - const cy = Math.floor(lon / gridSize); - let bestIdx = -1; - let bestDist = Infinity; - - for (let r = 0; r <= 10; r++) { - for (let dx = -r; dx <= r; dx++) { - for (let dy = -r; dy <= r; dy++) { - if (r > 0 && Math.abs(dx) !== r && Math.abs(dy) !== r) continue; - const cell = grid.get(`${cx + dx},${cy + dy}`); - if (!cell) continue; - for (const idx of cell) { - if (allowedLines) { - const lines = graph.nodeLines[idx]; - let ok = false; - if (lines) { - for (const l of lines) { - if (allowedLines.has(l)) { - ok = true; - break; - } - } - } - if (!ok) continue; - } - const d = haversineKm(graph.coords[idx], point); - if (d < bestDist) { - bestDist = d; - bestIdx = idx; - } +/** Nearest node to `point` on one of `lines` (a Set; any line when null). */ +export function nearestNode(graph, point, lines, maxKm) { + const { coords, grid, nodeLines, snappable } = graph; + const cx = Math.floor(point[0] / GRID_DEG); + const cy = Math.floor(point[1] / GRID_DEG); + // A grid cell is at least ~34m wide at these latitudes. + const rings = Math.ceil(maxKm / 0.034); + let best = -1; + let bestKm = Infinity; + for (let r = 0; r <= rings; r++) { + for (let dx = -r; dx <= r; dx++) { + for (let dy = -r; dy <= r; dy++) { + if (Math.abs(dx) !== r && Math.abs(dy) !== r) continue; + for (const i of grid.get(`${cx + dx},${cy + dy}`) ?? []) { + if (!snappable[i]) continue; + if (lines && ![...nodeLines[i]].some((l) => lines.has(l))) continue; + const km = haversineKm(point, coords[i]); + if (km < bestKm) { + bestKm = km; + best = i; } } } - if (bestIdx >= 0 && bestDist < maxKm) break; } - - return { index: bestIdx, distKm: bestDist }; - }; + // Anything in a further ring is at least r cells away. + if (best >= 0 && bestKm <= r * 0.034) break; + } + return best >= 0 && bestKm <= maxKm ? best : -1; } -export function makeRouter(graph) { - const { coords, start, adjEdge, adjOther, adjDist, erefs } = graph; - const n = coords.length; - - const dist = new Float64Array(n); - const prev = new Int32Array(n); - const done = new Uint32Array(n); - let stamp = 0; - - let heapF = new Float64Array(4096); - let heapG = new Float64Array(4096); - let heapN = new Int32Array(4096); - let heapSize = 0; - - const grow = () => { - const cap = heapF.length * 2; - const nf = new Float64Array(cap); - const ng = new Float64Array(cap); - const nn = new Int32Array(cap); - nf.set(heapF); - ng.set(heapG); - nn.set(heapN); - heapF = nf; - heapG = ng; - heapN = nn; - }; - - const push = (f, g, node) => { - if (heapSize === heapF.length) grow(); - let c = heapSize++; - heapF[c] = f; - heapG[c] = g; - heapN[c] = node; +/** + * A* over the graph, using only edges for which `allowEdge(edge)` holds. + * Returns the path as a list of edge indices, or null. + */ +export function findPath(graph, from, to, allowEdge) { + const { coords, edges, start, adjEdge, adjOther } = graph; + const dist = new Map([[from, 0]]); + const via = new Map(); + const done = new Set(); + const heap = [[haversineKm(coords[from], coords[to]), from]]; + const push = (item) => { + heap.push(item); + let c = heap.length - 1; while (c > 0) { const p = (c - 1) >> 1; - if (heapF[p] <= heapF[c]) break; - const tf = heapF[p]; - heapF[p] = heapF[c]; - heapF[c] = tf; - const tg = heapG[p]; - heapG[p] = heapG[c]; - heapG[c] = tg; - const tn = heapN[p]; - heapN[p] = heapN[c]; - heapN[c] = tn; + if (heap[p][0] <= heap[c][0]) break; + [heap[p], heap[c]] = [heap[c], heap[p]]; c = p; } }; - const pop = () => { - const rf = heapF[0]; - const rg = heapG[0]; - const rn = heapN[0]; - heapSize--; - if (heapSize > 0) { - heapF[0] = heapF[heapSize]; - heapG[0] = heapG[heapSize]; - heapN[0] = heapN[heapSize]; + const top = heap[0]; + const last = heap.pop(); + if (heap.length > 0) { + heap[0] = last; let c = 0; for (;;) { const l = 2 * c + 1; - const r = 2 * c + 2; + const r = l + 1; let m = c; - if (l < heapSize && heapF[l] < heapF[m]) m = l; - if (r < heapSize && heapF[r] < heapF[m]) m = r; + if (l < heap.length && heap[l][0] < heap[m][0]) m = l; + if (r < heap.length && heap[r][0] < heap[m][0]) m = r; if (m === c) break; - const tf = heapF[m]; - heapF[m] = heapF[c]; - heapF[c] = tf; - const tg = heapG[m]; - heapG[m] = heapG[c]; - heapG[c] = tg; - const tn = heapN[m]; - heapN[m] = heapN[c]; - heapN[c] = tn; + [heap[m], heap[c]] = [heap[c], heap[m]]; c = m; } } - return [rf, rg, rn]; + return top; }; - return function route(startIdx, endIdx, lineFilter) { - stamp++; - dist.fill(Infinity); - dist[startIdx] = 0; - prev[startIdx] = -1; - heapSize = 0; - push(haversineKm(coords[startIdx], coords[endIdx]), 0, startIdx); - - const filterSet = Array.isArray(lineFilter) - ? new Set(lineFilter) - : lineFilter - ? new Set([lineFilter]) - : null; - - while (heapSize > 0) { - const [, g, u] = pop(); - if (done[u] === stamp) continue; - done[u] = stamp; - if (u === endIdx) break; - if (g > dist[u]) continue; + while (heap.length > 0) { + const [, u] = pop(); + if (done.has(u)) continue; + done.add(u); + if (u === to) break; + for (let p = start[u]; p < start[u + 1]; p++) { + const e = edges[adjEdge[p]]; + if (!allowEdge(e)) continue; + const v = adjOther[p]; + const g = dist.get(u) + e.km; + if (g < (dist.get(v) ?? Infinity)) { + dist.set(v, g); + via.set(v, adjEdge[p]); + push([g + haversineKm(coords[v], coords[to]), v]); + } + } + } + if (!done.has(to)) return null; - for (let p = start[u]; p < start[u + 1]; p++) { - const e = adjEdge[p]; - const refs = erefs[e]; - const v = adjOther[p]; - if (done[v] === stamp) continue; + const path = []; + for (let u = to; u !== from;) { + const e = via.get(u); + path.push(e); + u = edges[e].a === u ? edges[e].b : edges[e].a; + } + return path.reverse(); +} - let edgeCost = adjDist[p]; - if (filterSet && refs.length > 0) { - const onPreferred = refs.some((r) => filterSet.has(r)); - if (!onPreferred) edgeCost *= 10; - } +function perpendicularKm(p, a, b) { + const cosLat = Math.cos((p[0] * Math.PI) / 180); + const toXY = (c) => [c[1] * cosLat * 111.32, c[0] * 111.32]; + const [px, py] = toXY(p); + const [ax, ay] = toXY(a); + const [bx, by] = toXY(b); + const dx = bx - ax; + const dy = by - ay; + const len2 = dx * dx + dy * dy; + const t = + len2 === 0 + ? 0 + : Math.max(0, Math.min(1, ((px - ax) * dx + (py - ay) * dy) / len2)); + return Math.hypot(px - (ax + t * dx), py - (ay + t * dy)); +} - const ng = g + edgeCost; - if (ng < dist[v]) { - dist[v] = ng; - prev[v] = u; - push(ng + haversineKm(coords[v], coords[endIdx]), ng, v); - } +/** + * Douglas-Peucker; returns the indices of the points to keep. Also irons out + * the few-metre hops between parallel tracks. + */ +export function simplifyIndices(points, toleranceKm) { + if (points.length <= 2) return points.map((_, i) => i); + const keep = new Uint8Array(points.length); + keep[0] = keep[points.length - 1] = 1; + const stack = [[0, points.length - 1]]; + while (stack.length > 0) { + const [s, e] = stack.pop(); + let maxD = 0; + let idx = -1; + for (let i = s + 1; i < e; i++) { + const d = perpendicularKm(points[i], points[s], points[e]); + if (d > maxD) { + maxD = d; + idx = i; } } - - if (done[endIdx] !== stamp) return null; - - const pathIdx = []; - for (let u = endIdx; u !== -1; u = prev[u]) pathIdx.push(u); - pathIdx.reverse(); - return pathIdx; - }; + if (idx >= 0 && maxD > toleranceKm) { + keep[idx] = 1; + stack.push([s, idx], [idx, e]); + } + } + const out = []; + for (let i = 0; i < points.length; i++) if (keep[i]) out.push(i); + return out; } diff --git a/packages/map/styles/globals.css b/packages/map/styles/globals.css index cdb50b1..f8f2fc5 100644 --- a/packages/map/styles/globals.css +++ b/packages/map/styles/globals.css @@ -163,6 +163,33 @@ input { .leaflet-tooltip::before { display: none; } +.playable-area-tooltip { + line-height: 1.3; +} + +.playable-area-line { + display: flex; + gap: 6px; + align-items: flex-start; +} + +.playable-area-line + .playable-area-line { + margin-top: 5px; +} + +.playable-area-swatch { + flex: none; + width: 10px; + height: 10px; + margin-top: 1px; + border-radius: 2px; +} + +.playable-area-title { + font-weight: 400; + opacity: 0.8; +} + .leaflet-zoom-anim .leaflet-tooltip { visibility: hidden; } @@ -280,6 +307,12 @@ html[data-mantine-color-scheme="light"] .leaflet-popup-close-button:hover { background: rgb(31 41 55 / 12%) !important; } +.leaflet-popup.popup-below .leaflet-popup-tip-container { + top: -20px; + margin-top: 1px; + transform: rotate(180deg); +} + .train-map-popup .leaflet-popup-content { width: auto !important; margin: 16px !important; @@ -303,6 +336,11 @@ html[data-mantine-color-scheme="light"] .leaflet-popup-close-button:hover { overflow: hidden; } +/* Toggled by the "Hide layers menu" button (Map.tsx). */ +.leaflet-container[data-layers-menu-hidden] .leaflet-control-layers { + display: none; +} + .leaflet-control-layers-expanded { padding: 10px 12px !important; color: #d8dde4 !important;