{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    },
    "language_info": {
      "name": "python"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "# HeatSafeBern – Proof of Concept\n",
        "## Urban Heat Decision Support System für Outdoor-Sportler:innen in Bern\n",
        "\n",
        "Modul: BCS, Frühlingssemester 2026  \n",
        "Institution: Berner Fachhochschule (BFH)  \n",
        "\n",
        "### Über dieses Notebook\n",
        "\n",
        "Dieses Jupyter Notebook demonstriert die technische Machbarkeit von HeatSafeBern,\n",
        "einem datenbasierten Entscheidungsunterstützungssystem\n",
        "für Outdoor-Aktivitäten bei Hitze im urbanen Raum Bern.\n",
        "\n",
        "Datenquelle: Smart Urban Heat Map Bern, Open Data REST API (CC-BY)  \n",
        "Methodik: Humidex-Berechnung + relativer Comfort Score (0–100)  \n",
        "Visualisierung: Interaktive Folium-Karte  \n",
        "\n",
        "### Struktur\n",
        "1. Setup & Konfiguration\n",
        "2. Datenabfrage & Bereinigung\n",
        "3. Hitzebelastungsberechnung (Humidex + Comfort Score)\n",
        "4. Visualisierung (Karte, Routen, Tabelle)\n",
        "5. Historische Analyse zur Bestimmung der kühlsten Trainingszeit\n",
        "6. Zusammenfassung"
      ],
      "metadata": {
        "id": "HQh-kM7wEQoM"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "# Annahmen-Limitationen\n",
        "\n",
        "Luftlinien statt echtes Routing\n",
        "\n",
        "Feste historische Stationsauswahl\n",
        "\n",
        "Comfort Score relativ pro Snapshot\n",
        "\n",
        "Keine personenbezogenen Empfehlungen / keine Gesundheitswarnung\n",
        "\n",
        "Kein GPS-Standortrouting, aufgrund Google-colab Einschränkung\n",
        "\n",
        "Nur ~60 Punktmessungen\n"
      ],
      "metadata": {
        "id": "e1yIZ0owM5Tg"
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 1. Setup & Konfiguration\n",
        "Installation der benötigten Libraries und Definition der globalen Konfigurationsparameter."
      ],
      "metadata": {
        "id": "woNBdMqOEUXc"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# ============================================================\n",
        "# HeatSafeBern PoC – Setup\n",
        "# Datenquelle: Smart Urban Heat Map Bern (CC-BY)\n",
        "# https://smart-urban-heat-map.ch\n",
        "# ============================================================\n",
        "\n",
        "# Libraries installieren (nur in Google Colab nötig)\n",
        "!pip install folium geopandas branca --quiet"
      ],
      "metadata": {
        "id": "k4a_l1GYEZoU"
      },
      "execution_count": 30,
      "outputs": []
    },
    {
      "cell_type": "code",
      "source": [
        "# Benötigten Libraries importieren\n",
        "import requests\n",
        "import pandas as pd\n",
        "import geopandas as gpd\n",
        "import folium\n",
        "import io\n",
        "import numpy as np\n",
        "from math import radians, cos, sin, asin, sqrt\n",
        "from datetime import datetime\n",
        "\n",
        "# Konfiguration RTD und historische-Daten\n",
        "API_BASE     = 'https://smart-urban-heat-map.ch'\n",
        "URL_LATEST   = f'{API_BASE}/api/v2/latest'\n",
        "URL_TIMESERIES = f'{API_BASE}/api/v2/timeseries'\n",
        "\n",
        "BERN_LAT     = 46.9480   # Zentrum Bern\n",
        "BERN_LON     = 7.4474\n",
        "GEO_RADIUS_KM = 10       # Maximaler Radius für Stationsfilter\n",
        "\n",
        "print(f'Setup abgeschlossen – {datetime.now().strftime(\"%d.%m.%Y %H:%M\")}')"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "GqL_NP0DEky8",
        "outputId": "b2a48e9c-12d6-407a-c1f0-ce24c96d5664"
      },
      "execution_count": 31,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Setup abgeschlossen – 13.03.2026 17:20\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 2. Datenabfrage & Bereinigung\n",
        "### 2.1 Hilfsfunktionen\n",
        "Definition der Kernfunktionen für Distanzberechnung, Humidex und Comfort Score."
      ],
      "metadata": {
        "id": "GwipgxTDwaGw"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "#Haversine-Funktion zur Distanzberechnung zwischen zwei GPS-Koordinaten.\n",
        "# Warum wird das benötigt?\n",
        "# Für die Routenlogik im PoC werden keine echten Strassenwege berechnet,\n",
        "# sondern vereinfachte Pseudo-Routen als Luftlinie zwischen Messstationen.\n",
        "# Die Funktion liefert die Distanz in Kilometern und dient damit als Grundlage,\n",
        "# um Stationen geografisch sinnvoll zu sortieren bzw. die ungefähre\n",
        "# Gesamtdistanz einer Route abzuschätzen.\n",
        "# Dadurch bleibt die Logik des PoC technisch einfach und nachvollziehbar,\n",
        "# ohne einen externen Routing-Service integrieren zu müssen.\n",
        "\n",
        "def haversine(lat1, lon1, lat2, lon2):\n",
        "    \"\"\"Berechnet die Distanz in km zwischen zwei GPS-Koordinaten\"\"\"\n",
        "    R = 6371\n",
        "    lat1, lon1, lat2, lon2 = map(radians, [lat1, lon1, lat2, lon2])\n",
        "    a = sin((lat2-lat1)/2)**2 + cos(lat1)*cos(lat2)*sin((lon2-lon1)/2)**2\n",
        "    return 2 * R * asin(sqrt(a))\n",
        "\n",
        "#Berechnung des Humidex aus Temperatur und relativer Luftfeuchtigkeit.\n",
        "# Warum wird das benötigt?\n",
        "# Die Rohdaten der API enthalten nur Temperatur und Luftfeuchtigkeit.\n",
        "# Für die Bewertung der wahrgenommenen Hitzebelastung reicht Temperatur allein\n",
        "# jedoch nicht aus, da hohe Luftfeuchtigkeit die gefühlte Belastung verstärkt.\n",
        "# Der Humidex ist deshalb die zentrale absolute Kennzahl des PoC.\n",
        "# Er bildet die kombinierte Wirkung von Temperatur und Luftfeuchtigkeit ab\n",
        "# und dient als Grundlage für den relativen Comfort Score sowie für die\n",
        "# historische Analyse der typischerweise kühlsten Tageszeit.\n",
        "# Ungültige Werte (z.B. fehlende Daten oder physikalisch unsinnige Luftfeuchte)\n",
        "# werden bewusst als NaN behandelt, damit sie die weitere Berechnung nicht verzerren.\n",
        "\n",
        "def calculate_humidex(temp, rh):\n",
        "    \"\"\"Berechnet den Humidex aus Temperatur (°C) und relativer Luftfeuchtigkeit (%) und gibt bei ungültigen Werten NaN zurück.\"\"\"\n",
        "    if pd.isna(temp) or pd.isna(rh) or rh <= 0 or rh > 100:\n",
        "        return np.nan\n",
        "    try:\n",
        "        gamma = np.log(rh/100) + (17.27*temp)/(237.7+temp)\n",
        "        dewpoint = (237.7 * gamma) / (17.27 - gamma)\n",
        "        e = 6.11 * np.exp(5417.7530 * (1/273.16 - 1/(273.15 + dewpoint)))\n",
        "        return round(temp + 0.5555 * (e - 10), 1)\n",
        "    except Exception:\n",
        "        return np.nan\n",
        "\n",
        "# Relativer Comfort Score auf Basis der Humidex-Werte aller aktuellen Stationen.\n",
        "# Warum wird das benötigt?\n",
        "# Der Humidex ist ein absoluter Hitzewert, eignet sich aber im städtischen Raum\n",
        "# nur begrenzt für den direkten Vergleich zwischen nahe beieinanderliegenden\n",
        "# Stationen, da die Unterschiede oft klein sind.\n",
        "# Deshalb werden die Humidex-Werte innerhalb des aktuellen RTD-Snapshots\n",
        "# auf eine Skala von 0 bis 100 normalisiert:\n",
        "# 100 = kühlste Station, 0 = wärmste Station.\n",
        "# Dadurch wird sichtbar, welche Stationen im Vergleich zum restlichen Stadtgebiet\n",
        "# aktuell am angenehmsten bzw. am belastendsten sind.\n",
        "# Falls alle Stationen denselben Humidex-Wert haben, wird neutral 50 vergeben,\n",
        "# da in diesem Fall keine sinnvolle Differenzierung möglich ist.\n",
        "\n",
        "def calculate_comfort_score(humidex_series):\n",
        "    \"\"\"Normalisiert die Humidex-Werte eines aktuellen RTD-Snapshots auf einen relativen Comfort Score von 0 bis 100.\"\"\"\n",
        "    min_h = humidex_series.min()\n",
        "    max_h = humidex_series.max()\n",
        "    if max_h == min_h:\n",
        "        return pd.Series([50.0] * len(humidex_series), index=humidex_series.index)\n",
        "    return ((max_h - humidex_series) / (max_h - min_h) * 100).round(1)\n",
        "\n",
        "# Übersetzt den numerischen Comfort Score in eine leicht verständliche Ampelfarbe.\n",
        "# Warum wird das benötigt?\n",
        "# Der Comfort Score ist für die interne Berechnung geeignet, soll für Nutzer:innen\n",
        "# im Frontend aber möglichst intuitiv dargestellt werden.\n",
        "# Deshalb wird der Score in vier visuelle Klassen übersetzt:\n",
        "# grün = kühl, orange = mässig, rot = heiss, grau = keine Daten / Ausreisser.\n",
        "# Die Ampelfarbe wird später sowohl in der Karte als auch in der Tabelle verwendet\n",
        "# und bildet die Grundlage für die schnelle visuelle Orientierung im PoC.\n",
        "\n",
        "def get_ampel_color(score):\n",
        "    \"\"\"Ordnet einem Comfort Score eine Ampelfarbe zu und markiert fehlende oder ungültige Werte als grau.\"\"\"\n",
        "    if pd.isna(score): return 'gray'\n",
        "    elif score >= 66: return 'green'\n",
        "    elif score >= 33: return 'orange'\n",
        "    else: return 'red'\n",
        "\n",
        "# Diese Funktion sortiert eine bereits ausgewählte Menge von Stationen nach\n",
        "# geografischer Nähe.\n",
        "# Die Stationen selbst wurden zuvor fachlich ausgewählt\n",
        "# (z.B. Top-5 nach Comfort Score). Hier geht es nur noch darum,\n",
        "# diese Stationen in eine möglichst plausible Reihenfolge zu bringen,\n",
        "# damit sie als Pseudo-Route visualisiert werden können.\n",
        "#\n",
        "# Vorgehen:\n",
        "# Ausgehend vom aktuellen Punkt wird jeweils die nächstgelegene verbleibende\n",
        "# Station gewählt (Nearest-Neighbour-Heuristik).\n",
        "#\n",
        "# Die Distanzlogik beeinflusst somit nur die Reihenfolge der Stationen,\n",
        "# nicht aber die fachliche Auswahl der \"kühlsten\" oder \"wärmsten\" Stationen.\n",
        "\n",
        "def sort_route_by_proximity(df_stations):\n",
        "    \"\"\"Ordnet eine fachlich vorselektierte Menge von Stationen mittels Nearest-Neighbour-Heuristik in eine geografisch sinnvolle Reihenfolge.\"\"\"\n",
        "    stations = df_stations.copy().reset_index(drop=True)\n",
        "    route = [stations.iloc[0]]\n",
        "    remaining = stations.iloc[1:].copy()\n",
        "    while len(remaining) > 0:\n",
        "        last = route[-1]\n",
        "        distances = remaining.apply(\n",
        "            lambda row: haversine(last.geometry.y, last.geometry.x,\n",
        "                                  row.geometry.y, row.geometry.x), axis=1)\n",
        "        nearest_idx = distances.idxmin()\n",
        "        route.append(remaining.loc[nearest_idx])\n",
        "        remaining = remaining.drop(nearest_idx)\n",
        "    return pd.DataFrame(route)\n",
        "\n",
        "# Diese Funktion bestimmt die geografisch sinnvollste Reihenfolge für eine bereits\n",
        "# ausgewählte Menge von Stationen.\n",
        "# Wichtig: Die Auswahl der Stationen erfolgt bereits vorher über den Comfort Score\n",
        "# (z.B. Top-5 kühlste oder Top-5 wärmste Stationen im aktuellen RTD-Snapshot).\n",
        "# Diese Funktion entscheidet also nicht, welche Stationen zur Route gehören,\n",
        "# sondern nur, in welcher Reihenfolge genau diese Stationen verbunden werden.\n",
        "#\n",
        "# Dafür wird für mehrere mögliche Startpunkte jeweils eine Route mit der\n",
        "# Nearest-Neighbour-Heuristik erzeugt. Anschliessend wird jene Variante gewählt,\n",
        "# deren Gesamtdistanz am kleinsten ist.\n",
        "#\n",
        "# Ergebnis:\n",
        "# - die Route bleibt fachlich eine \"kühle\" bzw. \"warme\" Route, weil die Stationen\n",
        "#   bereits nach Comfort Score ausgewählt wurden\n",
        "# - die Distanzlogik verbessert nur die Darstellbarkeit als zusammenhängende\n",
        "#   Pseudo-Route auf der Karte\n",
        "#\n",
        "# Hinweis:\n",
        "# Es handelt sich nicht um echtes Strassenrouting und auch nicht um einen\n",
        "# vollständigen TSP-Optimierungsalgorithmus, sondern um eine einfache,\n",
        "# nachvollziehbare Heuristik für den PoC.\n",
        "\n",
        "def find_best_route(df_stations):\n",
        "    \"\"\"Ermittelt für eine vorselektierte Stationsmenge den günstigsten Startpunkt und die distanzärmste Pseudo-Route innerhalb der Nearest-Neighbour-Heuristik.\"\"\"\n",
        "    best_route, best_dist = None, float('inf')\n",
        "    for i in range(len(df_stations)):\n",
        "        stations = pd.concat([df_stations.iloc[i:], df_stations.iloc[:i]])\n",
        "        route = sort_route_by_proximity(stations.reset_index(drop=True))\n",
        "        dist = sum(haversine(route.iloc[j].geometry.y, route.iloc[j].geometry.x,\n",
        "                             route.iloc[j+1].geometry.y, route.iloc[j+1].geometry.x)\n",
        "                   for j in range(len(route)-1))\n",
        "        if dist < best_dist:\n",
        "            best_dist, best_route = dist, route\n",
        "    return best_route, best_dist\n",
        "\n",
        "print('Hilfsfunktionen definiert')"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "my7ODEXxweaS",
        "outputId": "3d862dc6-050b-4e27-c1a8-cfb6e44bfd4c"
      },
      "execution_count": 32,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Hilfsfunktionen definiert\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "### 2.2 Datenabfrage & Bereinigung\n",
        "Laden der Realtime-Daten via REST API, Filterung veralteter Messungen und geografische Einschränkung auf den Raum Bern (10km Radius).\n"
      ],
      "metadata": {
        "id": "8KbGATsr1RNM"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "#RTD: (/api/v2/latest)\n",
        "#Ziel: Nur valide, aktuelle Messwerte im Raum Bern, damit Humidex/Score/Routen korrekt sind.\n",
        "\n",
        "# API-Call mit Fehlerbehandlung\n",
        "# timeout verhindert \"Hängenbleiben\"\n",
        "response = requests.get(URL_LATEST, timeout=30)\n",
        "#raise_for_status stoppt sofort bei HTTP-Fehlern (crash verhindern)\n",
        "response.raise_for_status()\n",
        "\n",
        "# GeoJSON sauber parsen\n",
        "#response.json() liefert strukturierte Daten (kein fragiles Parsen über Text)\n",
        "geojson = response.json()\n",
        "# features enthält die Geometrien + Messwerte; wenn es fehlt, ist die Antwort unbrauchbar\n",
        "#In GeoDataFrame umwandeln, später nötig für Distanzberechnung und Kartenvisualisierung\n",
        "features = geojson.get(\"features\")\n",
        "if not features:\n",
        "    raise ValueError(\"GeoJSON enthaelt keine 'features'.\")\n",
        "stations_raw = gpd.GeoDataFrame.from_features(features)\n",
        "#EPSG:4326 = WGS84 (Lon/Lat), Standard für GPS-Koordinaten\n",
        "#wichtig, damit geometry.x/geometry.y korrekt interpretiert werden kann\n",
        "if stations_raw.crs is None:\n",
        "    stations_raw.set_crs(epsg=4326, inplace=True)\n",
        "\n",
        "#Transparenz/Debug:\n",
        "print(f\"Stationen total:              {len(stations_raw)}\")\n",
        "print(f\"outdated == True:             {(stations_raw['outdated'] == True).sum()}\")\n",
        "if \"measurementsPlausible\" in stations_raw.columns:\n",
        "    print(f\"measurementsPlausible==False: {(stations_raw['measurementsPlausible'] == False).sum()}\")\n",
        "\n",
        "#Bereinigung: outdated + measurementsPlausible\n",
        "#copy() verhindert SettingWithCopy-Probleme bei späteren Spaltenzuweisungen\n",
        "stations_clean = stations_raw[stations_raw[\"outdated\"] == False].copy()\n",
        "\n",
        "#Bereinigung: measurementsPlausible filtern (falls vorhanden):\n",
        "# - schützt vor Messwerten, die vom Datenprovider als unplausibel markiert wurden\n",
        "# - falls die Spalte nicht existiert, bleibt die Pipeline dennoch lauffähig\n",
        "if \"measurementsPlausible\" in stations_clean.columns:\n",
        "    stations_clean = stations_clean[stations_clean[\"measurementsPlausible\"] == True].copy()\n",
        "print(f\"Nach Bereinigung:             {len(stations_clean)} Stationen\")\n",
        "\n",
        "# Geo-Filter\n",
        "#reduziert Stationen auf den relevanten Nutzungsraum (Bern & Umgebung)\n",
        "#verhindert, dass entfernte Stationen die Normalisierung/Route beeinflussen\n",
        "#vektorisierte Distanzberechnung ist schneller als DataFrame.apply schneller als DataFrame.apply)\n",
        "stations_clean[\"dist_km\"] = np.vectorize(haversine)(\n",
        "    BERN_LAT, BERN_LON,\n",
        "    stations_clean.geometry.y.to_numpy(),\n",
        "    stations_clean.geometry.x.to_numpy()\n",
        ")\n",
        "df_rtd_bern = stations_clean[stations_clean[\"dist_km\"] <= GEO_RADIUS_KM].copy()\n",
        "print(f\"Nach Geo-Filter ({GEO_RADIUS_KM}km):       {len(df_rtd_bern)} Stationen\")\n",
        "\n",
        "# Pflichtfelder-Check, sicherstellen das alle Variablen vorhanden sind für Humidex/Score/Visualisierung\n",
        "needed = [\"temperature\", \"relativeHumidity\", \"name\"]\n",
        "missing = [c for c in needed if c not in df_rtd_bern.columns]\n",
        "if missing:\n",
        "    raise ValueError(f\"Fehlende Spalten: {missing}\")\n",
        "\n",
        "#Drop NA + Transparenz\n",
        "#Protokollierung, wie viele Stationen entfernt werden\n",
        "n_before_dropna = len(df_rtd_bern)\n",
        "df_rtd_bern = df_rtd_bern.dropna(subset=[\"temperature\", \"relativeHumidity\"]).copy()\n",
        "n_dropped = n_before_dropna - len(df_rtd_bern)\n",
        "if n_dropped > 0:\n",
        "    print(f\"Stationen wegen fehlender Messwerte entfernt: {n_dropped}\")\n",
        "print(f\"Nach Bereinigung + Geo-Filter: {len(df_rtd_bern)} Stationen\")\n",
        "\n",
        "#Qualitätskontrolle (sollte nach dropna 0 sein):\n",
        "#schnelle Verifikation, dass die Daten jetzt berechnungsbereit sind\n",
        "print(\"\\nFehlende Werte (nach dropna):\")\n",
        "print(df_rtd_bern[[\"temperature\", \"relativeHumidity\"]].isna().sum())"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "hQchpDsX2Nol",
        "outputId": "79f9bee6-641d-46ec-e1b5-4ed2df860a5e"
      },
      "execution_count": 33,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Stationen total:              64\n",
            "outdated == True:             26\n",
            "measurementsPlausible==False: 0\n",
            "Nach Bereinigung:             38 Stationen\n",
            "Nach Geo-Filter (10km):       31 Stationen\n",
            "Nach Bereinigung + Geo-Filter: 31 Stationen\n",
            "\n",
            "Fehlende Werte (nach dropna):\n",
            "temperature         0\n",
            "relativeHumidity    0\n",
            "dtype: int64\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 3. Hitzebelastungsberechnung\n",
        "### 3.1 Humidex & Comfort Score\n",
        "Berechnung des Humidex sowie des relativen Comfort Scores (0–100) für alle aktiven Stationen im Raum Bern. Der Comfort Score normiert die Humidex-Werte aller Stationen zueinander: 100% = kühlste Station, 0% = wärmste Station."
      ],
      "metadata": {
        "id": "Yy-TM5TH7b-Z"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Humidex vektorisiert berechnen: np.vectorize wendet calculate_humidex\n",
        "# elementweise auf alle Stationen an (schneller als axis=1 apply)\n",
        "df_rtd_bern[\"humidex\"] = np.vectorize(calculate_humidex)(\n",
        "    df_rtd_bern[\"temperature\"].to_numpy(),\n",
        "    df_rtd_bern[\"relativeHumidity\"].to_numpy()\n",
        ")\n",
        "\n",
        "# Ausreisser-Erkennung via MAD (Median Absolute Deviation)\n",
        "# robuster als Z-Score bei kleinen n (ca. 31 Stationen) und nicht-normaler Verteilung\n",
        "# muss VOR Comfort Score berechnet werden, sonst verzerrt Ausreisser Min/Max\n",
        "h = df_rtd_bern[\"humidex\"].dropna()\n",
        "med = h.median()\n",
        "mad = (h - med).abs().median()\n",
        "\n",
        "if pd.isna(mad) or mad == 0:\n",
        "    print(\"MAD Outlier Detection übersprungen (MAD=0 oder NaN).\")\n",
        "else:\n",
        "    modified_z = 0.6745 * (df_rtd_bern[\"humidex\"] - med) / mad\n",
        "    mask_out = modified_z.abs() > 3.5\n",
        "\n",
        "    outliers = df_rtd_bern[mask_out]\n",
        "    if len(outliers) > 0:\n",
        "        print(f\"Ausreisser markiert ({len(outliers)} Station(en)):\")\n",
        "        print(outliers[[\"name\", \"temperature\", \"relativeHumidity\", \"humidex\"]]\n",
        "              .to_string(index=False))\n",
        "\n",
        "    # Ausreisser als NaN markieren – bleiben in Karte als gray sichtbar\n",
        "    # werden in df_rtd_valid (Route-Selektion) automatisch ausgeschlossen\n",
        "    df_rtd_bern.loc[mask_out, \"humidex\"] = np.nan\n",
        "\n",
        "# Comfort Score normalisiert innerhalb des Geo-Filters (nur Berner Stationen)\n",
        "# wichtig: Score NACH Ausreisser-Erkennung berechnen\n",
        "df_rtd_bern[\"comfort_score\"] = calculate_comfort_score(df_rtd_bern[\"humidex\"])\n",
        "\n",
        "# Ampelfarbe zuweisen: green >= 66%, orange 33-65%, red < 33%, gray = NaN\n",
        "# Score wird aus aktuellem Snapshot berechnet, nicht persistent gespeichert\n",
        "df_rtd_bern[\"color\"] = df_rtd_bern[\"comfort_score\"].apply(get_ampel_color)\n",
        "\n",
        "# df_rtd_valid: Stationen mit validen Humidex/Score-Werten fuer Route-Selektion\n",
        "# verhindert dass NaN-Stationen in Routenberechnung einfliessen\n",
        "df_rtd_valid = df_rtd_bern.dropna(subset=[\"humidex\", \"comfort_score\"]).copy()\n",
        "print(f\"Stationen fuer Routenberechnung: {len(df_rtd_valid)}\")\n",
        "\n",
        "# Qualitaetscheck: verbleibende NaNs protokollieren\n",
        "n_humidex_nan = df_rtd_bern[\"humidex\"].isna().sum()\n",
        "if n_humidex_nan > 0:\n",
        "    print(f\"Stationen mit Humidex=NaN (Ausreisser + fehlende Werte): {n_humidex_nan}\")\n",
        "\n",
        "# Kontrollausgabe: Top/Bottom 5 zur Verifikation\n",
        "print(\"\\nTop 5 kühl (höchster Comfort Score):\")\n",
        "print(df_rtd_bern[[\"name\", \"humidex\", \"comfort_score\", \"color\"]]\n",
        "      .sort_values(\"comfort_score\", ascending=False)\n",
        "      .head(5).to_string(index=False))\n",
        "\n",
        "print(\"\\nTop 5 warm (tiefster Comfort Score):\")\n",
        "print(df_rtd_bern[[\"name\", \"humidex\", \"comfort_score\", \"color\"]]\n",
        "      .sort_values(\"comfort_score\", ascending=True)\n",
        "      .head(5).to_string(index=False))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "0r8LCf7K_Nwy",
        "outputId": "688e04b0-7dbb-412c-d585-6a3e1931e4f4"
      },
      "execution_count": 34,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Ausreisser markiert (4 Station(en)):\n",
            "                                    name  temperature  relativeHumidity  humidex\n",
            "                              Eigerplatz    14.153124         48.768444     13.0\n",
            "    Kehrsatz Breitägertenstrasse Laterne    12.235828         47.374150     10.4\n",
            "Köniz Blinzernplateau Strom-/Telefonmast    12.107653         49.891890     10.5\n",
            "                  Bern Hintere Länggasse     3.573282         91.127490      2.0\n",
            "Stationen fuer Routenberechnung: 27\n",
            "Stationen mit Humidex=NaN (Ausreisser + fehlende Werte): 4\n",
            "\n",
            "Top 5 kühl (höchster Comfort Score):\n",
            "                            name  humidex  comfort_score  color\n",
            "Liebefeld Turnierstrasse Laterne     10.7          100.0  green\n",
            "       Köniz Gartenstadt Laterne     10.7          100.0  green\n",
            "                   Zollikofen 3m     11.3           66.7  green\n",
            "     Gümligen Dentenberg Laterne     11.3           66.7  green\n",
            "  Ittigen Gantrischweg 1 Laterne     11.4           61.1 orange\n",
            "\n",
            "Top 5 warm (tiefster Comfort Score):\n",
            "                        name  humidex  comfort_score color\n",
            "               Helvetiaplatz     12.5            0.0   red\n",
            "              Hirschengraben     12.3           11.1   red\n",
            "Emch+Berger (Zieglerstrasse)     12.1           22.2   red\n",
            "   Ittigen Worblentalstrasse     12.1           22.2   red\n",
            "       BernExpo Asphalt 0.5m     12.1           22.2   red\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 4. Visualisierung\n",
        "### 4.1 Interaktive Karte mit Ampelfarben und Routen\n",
        "Darstellung aller aktiven Stationen mit Ampelfarben basierend auf dem Comfort Score. Die kühlste Route (grün) verbindet die 5 Stationen mit dem höchsten Comfort Score, die wärmste Route (rot) die 5 Stationen mit dem tiefsten Score."
      ],
      "metadata": {
        "id": "xPqg72PMBE_c"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Hilfsfunktion: sichere Formatierung (verhindert Crash bei NaN-Werten im Tooltip)\n",
        "def fmt(x, suffix=\"\", decimals=1):\n",
        "    return \"n/a\" if pd.isna(x) else f\"{x:.{decimals}f}{suffix}\"\n",
        "\n",
        "# Guard: mindestens 2 valide Stationen nötig für Routenberechnung\n",
        "if len(df_rtd_valid) < 2:\n",
        "    raise ValueError(\"Zu wenige valide Stationen fuer Routenberechnung.\")\n",
        "\n",
        "# Top 5 kühlste und wärmste Stationen aus validen Stationen selektieren\n",
        "# df_rtd_valid schliesst Ausreisser und NaN-Stationen bereits aus\n",
        "top5_cool = df_rtd_valid.nlargest(5, \"comfort_score\").copy()\n",
        "top5_warm = df_rtd_valid.nsmallest(5, \"comfort_score\").copy()\n",
        "\n",
        "# Routen optimieren: Heuristik zur Minimierung von Sprüngen (kein Strassenrouting)\n",
        "# testet alle Startpunkte, nimmt die kürzeste Nearest-Neighbour Route\n",
        "cool_route, cool_dist = find_best_route(top5_cool)\n",
        "warm_route, warm_dist = find_best_route(top5_warm)\n",
        "\n",
        "# Reihenfolge = geografisch (Nearest-Neighbour), nicht nach Score-Ranking\n",
        "print(f\"Top 5 Stationen (kühlste) – Route nach Nähe sortiert (~{cool_dist:.1f} km Luftlinie):\")\n",
        "for _, s in cool_route.iterrows():\n",
        "    print(f\"  {s['name']} (Score: {s['comfort_score']}%)\")\n",
        "\n",
        "print(f\"\\nTop 5 Stationen (wärmste) – Route nach Nähe sortiert (~{warm_dist:.1f} km Luftlinie):\")\n",
        "for _, s in warm_route.iterrows():\n",
        "    print(f\"  {s['name']} (Score: {s['comfort_score']}%)\")\n",
        "\n",
        "# Karte auf valide Stationen zentrieren (Ausreisser könnten Zentrum verschieben)\n",
        "m = folium.Map(\n",
        "    location=[df_rtd_valid.geometry.y.mean(), df_rtd_valid.geometry.x.mean()],\n",
        "    zoom_start=13\n",
        ")\n",
        "\n",
        "# Alle Stationen als Marker (inkl. gray für Ausreisser/NaN)\n",
        "for _, station in df_rtd_bern.iterrows():\n",
        "    tooltip = (\n",
        "        f\"{station['name']}<br>\"\n",
        "        f\"Temp: {fmt(station['temperature'], '°C')} | \"\n",
        "        f\"Luftf: {fmt(station['relativeHumidity'], '%')}<br>\"\n",
        "        f\"Humidex: {fmt(station['humidex'])}<br>\"\n",
        "        f\"Comfort Score: {fmt(station['comfort_score'], '%')}\"\n",
        "    )\n",
        "    folium.CircleMarker(\n",
        "        location=(station.geometry.y, station.geometry.x),\n",
        "        radius=8,\n",
        "        color=\"black\", weight=0.5,\n",
        "        fill=True,\n",
        "        fill_color=station[\"color\"],\n",
        "        fill_opacity=0.8,\n",
        "        tooltip=folium.Tooltip(tooltip, sticky=True)\n",
        "    ).add_to(m)\n",
        "\n",
        "# Kühlste Route (grün, durchgezogen)\n",
        "# Hinweis: Top-5 bedeutet Rangliste; einzelne Stationen können trotz Top-5 im Orange-Bereich liegen.\n",
        "cool_coords = [[s.geometry.y, s.geometry.x] for _, s in cool_route.iterrows()]\n",
        "folium.PolyLine(\n",
        "    locations=cool_coords,\n",
        "    color=\"green\", weight=5, opacity=0.9,\n",
        "    tooltip=\"Route kühlste Stationen (Top-5) – Luftlinie\"\n",
        ").add_to(m)\n",
        "\n",
        "# Wärmste Route (rot, gestrichelt = visuell als \"meiden\" markiert)\n",
        "warm_coords = [[s.geometry.y, s.geometry.x] for _, s in warm_route.iterrows()]\n",
        "folium.PolyLine(\n",
        "    locations=warm_coords,\n",
        "    color=\"red\", weight=5, opacity=0.9,\n",
        "    dash_array=\"10\",\n",
        "    tooltip=\"Route wärmste Stationen (Top-5) – meiden\"\n",
        ").add_to(m)\n",
        "\n",
        "# Legende (unten links)\n",
        "legend_html = '''\n",
        "<div style=\"position: fixed; bottom: 30px; left: 10px; z-index: 1000;\n",
        "            background: white; padding: 12px; border-radius: 8px;\n",
        "            box-shadow: 0 2px 6px rgba(0,0,0,0.3); font-family: Arial; font-size: 12px;\">\n",
        "    <b>HeatSafeBern</b><br>\n",
        "    <hr style=\"margin: 6px 0\">\n",
        "    <b>Comfort Score:</b><br>\n",
        "    &#9679; <span style=\"color:green\">Grün</span> &ge; 66% (kühl)<br>\n",
        "    &#9679; <span style=\"color:orange\">Orange</span> 33–65% (mässig)<br>\n",
        "    &#9679; <span style=\"color:red\">Rot</span> &lt; 33% (heiss)<br>\n",
        "    &#9679; <span style=\"color:gray\">Grau</span> = Ausreisser / keine Daten<br>\n",
        "    <hr style=\"margin: 6px 0\">\n",
        "    <b>Routen (Luftlinie, Top-5 Stationen):</b><br>\n",
        "    <span style=\"color:green\">&#9644;</span> Route kühlste Stationen<br>\n",
        "    <span style=\"color:red\">&#9644; &#9644;</span> Route wärmste Stationen (meiden)\n",
        "</div>'''\n",
        "m.get_root().html.add_child(folium.Element(legend_html))\n",
        "\n",
        "m\n"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "id": "qFo9dXKmHSWW",
        "outputId": "6668e998-2e16-4008-ac10-eb8a9532ce9f"
      },
      "execution_count": 35,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Top 5 Stationen (kühlste) – Route nach Nähe sortiert (~15.3 km Luftlinie):\n",
            "  Köniz Gartenstadt Laterne (Score: 100.0%)\n",
            "  Liebefeld Turnierstrasse Laterne (Score: 100.0%)\n",
            "  Zollikofen 3m (Score: 66.7%)\n",
            "  Ittigen Gantrischweg 1 Laterne (Score: 61.1%)\n",
            "  Gümligen Dentenberg Laterne (Score: 66.7%)\n",
            "\n",
            "Top 5 Stationen (wärmste) – Route nach Nähe sortiert (~6.0 km Luftlinie):\n",
            "  Emch+Berger (Zieglerstrasse) (Score: 22.2%)\n",
            "  Hirschengraben (Score: 11.1%)\n",
            "  Helvetiaplatz (Score: 0.0%)\n",
            "  BernExpo Asphalt 0.5m (Score: 22.2%)\n",
            "  Ittigen Worblentalstrasse (Score: 22.2%)\n"
          ]
        },
        {
          "output_type": "execute_result",
          "data": {
            "text/plain": [
              "<folium.folium.Map at 0x78c6c4db27b0>"
            ],
            "text/html": [
              "<div style=\"width:100%;\"><div style=\"position:relative;width:100%;height:0;padding-bottom:60%;\"><span style=\"color:#565656\">Make this Notebook Trusted to load map: File -> Trust Notebook</span><iframe srcdoc=\"&lt;!DOCTYPE html&gt;\n",
              "&lt;html&gt;\n",
              "&lt;head&gt;\n",
              "    \n",
              "    &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=UTF-8&quot; /&gt;\n",
              "    &lt;script src=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.js&quot;&gt;&lt;/script&gt;\n",
              "    &lt;script src=&quot;https://code.jquery.com/jquery-3.7.1.min.js&quot;&gt;&lt;/script&gt;\n",
              "    &lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&gt;&lt;/script&gt;\n",
              "    &lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js&quot;&gt;&lt;/script&gt;\n",
              "    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.css&quot;/&gt;\n",
              "    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot;/&gt;\n",
              "    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap-glyphicons.css&quot;/&gt;\n",
              "    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.2.0/css/all.min.css&quot;/&gt;\n",
              "    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css&quot;/&gt;\n",
              "    &lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css&quot;/&gt;\n",
              "    \n",
              "            &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,\n",
              "                initial-scale=1.0, maximum-scale=1.0, user-scalable=no&quot; /&gt;\n",
              "            &lt;style&gt;\n",
              "                #map_a09aaeb3b3005c679b915d8db7816ee3 {\n",
              "                    position: relative;\n",
              "                    width: 100.0%;\n",
              "                    height: 100.0%;\n",
              "                    left: 0.0%;\n",
              "                    top: 0.0%;\n",
              "                }\n",
              "                .leaflet-container { font-size: 1rem; }\n",
              "            &lt;/style&gt;\n",
              "\n",
              "            &lt;style&gt;html, body {\n",
              "                width: 100%;\n",
              "                height: 100%;\n",
              "                margin: 0;\n",
              "                padding: 0;\n",
              "            }\n",
              "            &lt;/style&gt;\n",
              "\n",
              "            &lt;style&gt;#map {\n",
              "                position:absolute;\n",
              "                top:0;\n",
              "                bottom:0;\n",
              "                right:0;\n",
              "                left:0;\n",
              "                }\n",
              "            &lt;/style&gt;\n",
              "\n",
              "            &lt;script&gt;\n",
              "                L_NO_TOUCH = false;\n",
              "                L_DISABLE_3D = false;\n",
              "            &lt;/script&gt;\n",
              "\n",
              "        \n",
              "&lt;/head&gt;\n",
              "&lt;body&gt;\n",
              "    \n",
              "    \n",
              "&lt;div style=&quot;position: fixed; bottom: 30px; left: 10px; z-index: 1000;\n",
              "            background: white; padding: 12px; border-radius: 8px;\n",
              "            box-shadow: 0 2px 6px rgba(0,0,0,0.3); font-family: Arial; font-size: 12px;&quot;&gt;\n",
              "    &lt;b&gt;HeatSafeBern&lt;/b&gt;&lt;br&gt;\n",
              "    &lt;hr style=&quot;margin: 6px 0&quot;&gt;\n",
              "    &lt;b&gt;Comfort Score:&lt;/b&gt;&lt;br&gt;\n",
              "    &amp;#9679; &lt;span style=&quot;color:green&quot;&gt;Grün&lt;/span&gt; &amp;ge; 66% (kühl)&lt;br&gt;\n",
              "    &amp;#9679; &lt;span style=&quot;color:orange&quot;&gt;Orange&lt;/span&gt; 33–65% (mässig)&lt;br&gt;\n",
              "    &amp;#9679; &lt;span style=&quot;color:red&quot;&gt;Rot&lt;/span&gt; &amp;lt; 33% (heiss)&lt;br&gt;\n",
              "    &amp;#9679; &lt;span style=&quot;color:gray&quot;&gt;Grau&lt;/span&gt; = Ausreisser / keine Daten&lt;br&gt;\n",
              "    &lt;hr style=&quot;margin: 6px 0&quot;&gt;\n",
              "    &lt;b&gt;Routen (Luftlinie, Top-5 Stationen):&lt;/b&gt;&lt;br&gt;\n",
              "    &lt;span style=&quot;color:green&quot;&gt;&amp;#9644;&lt;/span&gt; Route kühlste Stationen&lt;br&gt;\n",
              "    &lt;span style=&quot;color:red&quot;&gt;&amp;#9644; &amp;#9644;&lt;/span&gt; Route wärmste Stationen (meiden)\n",
              "&lt;/div&gt;\n",
              "    \n",
              "            &lt;div class=&quot;folium-map&quot; id=&quot;map_a09aaeb3b3005c679b915d8db7816ee3&quot; &gt;&lt;/div&gt;\n",
              "        \n",
              "&lt;/body&gt;\n",
              "&lt;script&gt;\n",
              "    \n",
              "    \n",
              "            var map_a09aaeb3b3005c679b915d8db7816ee3 = L.map(\n",
              "                &quot;map_a09aaeb3b3005c679b915d8db7816ee3&quot;,\n",
              "                {\n",
              "                    center: [46.95072348148148, 7.457063977777778],\n",
              "                    crs: L.CRS.EPSG3857,\n",
              "                    ...{\n",
              "  &quot;zoom&quot;: 13,\n",
              "  &quot;zoomControl&quot;: true,\n",
              "  &quot;preferCanvas&quot;: false,\n",
              "}\n",
              "\n",
              "                }\n",
              "            );\n",
              "\n",
              "            \n",
              "\n",
              "        \n",
              "    \n",
              "            var tile_layer_91f7a87f256497d3495356ceaf0bc62c = L.tileLayer(\n",
              "                &quot;https://tile.openstreetmap.org/{z}/{x}/{y}.png&quot;,\n",
              "                {\n",
              "  &quot;minZoom&quot;: 0,\n",
              "  &quot;maxZoom&quot;: 19,\n",
              "  &quot;maxNativeZoom&quot;: 19,\n",
              "  &quot;noWrap&quot;: false,\n",
              "  &quot;attribution&quot;: &quot;\\u0026copy; \\u003ca href=\\&quot;https://www.openstreetmap.org/copyright\\&quot;\\u003eOpenStreetMap\\u003c/a\\u003e contributors&quot;,\n",
              "  &quot;subdomains&quot;: &quot;abc&quot;,\n",
              "  &quot;detectRetina&quot;: false,\n",
              "  &quot;tms&quot;: false,\n",
              "  &quot;opacity&quot;: 1,\n",
              "}\n",
              "\n",
              "            );\n",
              "        \n",
              "    \n",
              "            tile_layer_91f7a87f256497d3495356ceaf0bc62c.addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            var circle_marker_b9cc6ad2b3c6ff717b9b9157322808bc = L.circleMarker(\n",
              "                [46.95171, 7.43714],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;orange&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_b9cc6ad2b3c6ff717b9b9157322808bc.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Vordere Länggasse&lt;br&gt;Temp: 13.1°C | Luftf: 49.3%&lt;br&gt;Humidex: 11.7&lt;br&gt;Comfort Score: 44.4%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_2fcb575a719d9b6680a25c79e3935698 = L.circleMarker(\n",
              "                [46.938255, 7.4133654],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;green&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_2fcb575a719d9b6680a25c79e3935698.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Liebefeld Turnierstrasse Laterne&lt;br&gt;Temp: 12.4°C | Luftf: 48.1%&lt;br&gt;Humidex: 10.7&lt;br&gt;Comfort Score: 100.0%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_7da77e4b2511c7ff2283764ecaec0d8c = L.circleMarker(\n",
              "                [46.95739, 7.42128],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;orange&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_7da77e4b2511c7ff2283764ecaec0d8c.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Bremgartenwald&lt;br&gt;Temp: 12.8°C | Luftf: 53.6%&lt;br&gt;Humidex: 11.6&lt;br&gt;Comfort Score: 50.0%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_e689636ee9ee0e8ce7a79bf4ff5f96c0 = L.circleMarker(\n",
              "                [46.975468, 7.497151],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;orange&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_e689636ee9ee0e8ce7a79bf4ff5f96c0.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Bolligen Sternenkreisel Laterne&lt;br&gt;Temp: 13.6°C | Luftf: 42.9%&lt;br&gt;Humidex: 11.7&lt;br&gt;Comfort Score: 44.4%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_6927a0cb5961e1a76a52bc9f00831c88 = L.circleMarker(\n",
              "                [46.99079, 7.46407],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;green&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_6927a0cb5961e1a76a52bc9f00831c88.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Zollikofen 3m&lt;br&gt;Temp: 12.9°C | Luftf: 48.2%&lt;br&gt;Humidex: 11.3&lt;br&gt;Comfort Score: 66.7%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_244db29723aef4f71c023f40d9761bf6 = L.circleMarker(\n",
              "                [46.92579, 7.455911],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;orange&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_244db29723aef4f71c023f40d9761bf6.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Wabern Gartentower Laterne&lt;br&gt;Temp: 13.5°C | Luftf: 45.4%&lt;br&gt;Humidex: 11.8&lt;br&gt;Comfort Score: 38.9%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_9d90d80574036f4c46de1b78d1f302df = L.circleMarker(\n",
              "                [46.95565, 7.445022],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;orange&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_9d90d80574036f4c46de1b78d1f302df.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Bern Lorrainepark&lt;br&gt;Temp: 13.5°C | Luftf: 44.8%&lt;br&gt;Humidex: 11.8&lt;br&gt;Comfort Score: 38.9%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_31258aa82e51719b11a6f553ceec65de = L.circleMarker(\n",
              "                [46.94381, 7.44885],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;red&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_31258aa82e51719b11a6f553ceec65de.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Helvetiaplatz&lt;br&gt;Temp: 13.7°C | Luftf: 49.1%&lt;br&gt;Humidex: 12.5&lt;br&gt;Comfort Score: 0.0%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_8764dbd30115570c5b3f3023e3dc1bd4 = L.circleMarker(\n",
              "                [46.94067, 7.43141],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;gray&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_8764dbd30115570c5b3f3023e3dc1bd4.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Eigerplatz&lt;br&gt;Temp: 14.2°C | Luftf: 48.8%&lt;br&gt;Humidex: n/a&lt;br&gt;Comfort Score: n/a\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_ed07cf1d528c26452f2e43d5a09081c1 = L.circleMarker(\n",
              "                [46.95063, 7.46987],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;red&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_ed07cf1d528c26452f2e43d5a09081c1.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Galgenfeld Neubausiedlung&lt;br&gt;Temp: 13.3°C | Luftf: 49.7%&lt;br&gt;Humidex: 12.0&lt;br&gt;Comfort Score: 27.8%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_d188de8d7b848ecd5c6fc2e87868f51c = L.circleMarker(\n",
              "                [46.99095, 7.451387],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;orange&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_d188de8d7b848ecd5c6fc2e87868f51c.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Zollikofen Reichenbach Laterne&lt;br&gt;Temp: 13.7°C | Luftf: 43.7%&lt;br&gt;Humidex: 11.9&lt;br&gt;Comfort Score: 33.3%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_62ba9a03da1af05c91459609bcb794c5 = L.circleMarker(\n",
              "                [46.92921, 7.45935],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;orange&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_62ba9a03da1af05c91459609bcb794c5.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Wabern Weyergut&lt;br&gt;Temp: 13.4°C | Luftf: 45.5%&lt;br&gt;Humidex: 11.8&lt;br&gt;Comfort Score: 38.9%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_f6db1ff529854588e47bdf76aa4603e2 = L.circleMarker(\n",
              "                [46.946228, 7.429253],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;red&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_f6db1ff529854588e47bdf76aa4603e2.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Emch+Berger (Zieglerstrasse)&lt;br&gt;Temp: 13.8°C | Luftf: 43.6%&lt;br&gt;Humidex: 12.1&lt;br&gt;Comfort Score: 22.2%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_6d160a3f2f663a511e4bd993a2531330 = L.circleMarker(\n",
              "                [46.94658, 7.43786],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;red&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_6d160a3f2f663a511e4bd993a2531330.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Hirschengraben&lt;br&gt;Temp: 13.9°C | Luftf: 45.5%&lt;br&gt;Humidex: 12.3&lt;br&gt;Comfort Score: 11.1%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_8b82501e09fd4329e12fd94847636f8f = L.circleMarker(\n",
              "                [46.9377, 7.50944],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;green&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_8b82501e09fd4329e12fd94847636f8f.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Gümligen Dentenberg Laterne&lt;br&gt;Temp: 12.9°C | Luftf: 47.1%&lt;br&gt;Humidex: 11.3&lt;br&gt;Comfort Score: 66.7%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_d0e3841a40d2856307f607ecd8cab8cc = L.circleMarker(\n",
              "                [46.927624, 7.476338],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;orange&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_d0e3841a40d2856307f607ecd8cab8cc.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Muri Blümlisalpstrasse&lt;br&gt;Temp: 13.4°C | Luftf: 44.7%&lt;br&gt;Humidex: 11.6&lt;br&gt;Comfort Score: 50.0%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_dd65bbadda06cd882d3b54ef0b41d81d = L.circleMarker(\n",
              "                [46.90957, 7.464513],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;gray&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_dd65bbadda06cd882d3b54ef0b41d81d.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Kehrsatz Breitägertenstrasse Laterne&lt;br&gt;Temp: 12.2°C | Luftf: 47.4%&lt;br&gt;Humidex: n/a&lt;br&gt;Comfort Score: n/a\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_8f1ba3f10c7363d69a2078bdb4325c54 = L.circleMarker(\n",
              "                [46.92253, 7.42771],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;gray&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_8f1ba3f10c7363d69a2078bdb4325c54.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Köniz Blinzernplateau Strom-/Telefonmast&lt;br&gt;Temp: 12.1°C | Luftf: 49.9%&lt;br&gt;Humidex: n/a&lt;br&gt;Comfort Score: n/a\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_ea01e74dffaa6231dca37a584e29cf5c = L.circleMarker(\n",
              "                [46.93048, 7.48628],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;orange&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_ea01e74dffaa6231dca37a584e29cf5c.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Muri Zentrum (Tavelweg) Laterne&lt;br&gt;Temp: 13.4°C | Luftf: 44.4%&lt;br&gt;Humidex: 11.6&lt;br&gt;Comfort Score: 50.0%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_621f49c298b738886ecbd47515c0581f = L.circleMarker(\n",
              "                [46.93012, 7.448146],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;orange&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_621f49c298b738886ecbd47515c0581f.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Wabern Zentrum Laterne&lt;br&gt;Temp: 13.3°C | Luftf: 45.0%&lt;br&gt;Humidex: 11.5&lt;br&gt;Comfort Score: 55.6%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_02c6fbb5430c33292b04369b827a242f = L.circleMarker(\n",
              "                [46.980637, 7.490017],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;orange&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_02c6fbb5430c33292b04369b827a242f.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Ittigen Gantrischweg 1 Laterne&lt;br&gt;Temp: 13.1°C | Luftf: 46.8%&lt;br&gt;Humidex: 11.4&lt;br&gt;Comfort Score: 61.1%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_0c17edca2f1fda92869a56990bac2cdb = L.circleMarker(\n",
              "                [46.94348, 7.481412],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;orange&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_0c17edca2f1fda92869a56990bac2cdb.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Bern Merzenacker&lt;br&gt;Temp: 13.2°C | Luftf: 46.2%&lt;br&gt;Humidex: 11.5&lt;br&gt;Comfort Score: 55.6%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_c121361dddc8a12396b080992b67358e = L.circleMarker(\n",
              "                [46.971962, 7.489671],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;red&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_c121361dddc8a12396b080992b67358e.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Ittigen Worblentalstrasse&lt;br&gt;Temp: 13.8°C | Luftf: 44.2%&lt;br&gt;Humidex: 12.1&lt;br&gt;Comfort Score: 22.2%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_696ba288de97050417bd97a928046c5d = L.circleMarker(\n",
              "                [46.92981, 7.40896],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;green&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_696ba288de97050417bd97a928046c5d.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Köniz Gartenstadt Laterne&lt;br&gt;Temp: 12.4°C | Luftf: 48.1%&lt;br&gt;Humidex: 10.7&lt;br&gt;Comfort Score: 100.0%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_166a77dc795a6afb02f9fffe0bbeaa8c = L.circleMarker(\n",
              "                [46.96733, 7.37621],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;orange&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_166a77dc795a6afb02f9fffe0bbeaa8c.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Wohlen Hinterkappelenring Laterne&lt;br&gt;Temp: 13.5°C | Luftf: 45.3%&lt;br&gt;Humidex: 11.8&lt;br&gt;Comfort Score: 38.9%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_039f0e619e888bd9c9dc157e0451b8d2 = L.circleMarker(\n",
              "                [46.92646, 7.49843],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;orange&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_039f0e619e888bd9c9dc157e0451b8d2.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Muri Süd (Steinhübeliweg) Laterne&lt;br&gt;Temp: 13.5°C | Luftf: 43.4%&lt;br&gt;Humidex: 11.7&lt;br&gt;Comfort Score: 44.4%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_468b2156985e9fedf7771df6c223cd5f = L.circleMarker(\n",
              "                [46.9417, 7.445644],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;orange&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_468b2156985e9fedf7771df6c223cd5f.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Bern Dalmaziquai&lt;br&gt;Temp: 13.6°C | Luftf: 43.7%&lt;br&gt;Humidex: 11.9&lt;br&gt;Comfort Score: 33.3%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_286be08ed6566c460977fb15d5b0823d = L.circleMarker(\n",
              "                [46.96002, 7.46684],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;orange&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_286be08ed6566c460977fb15d5b0823d.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     BernExpo Asphalt 2.5m&lt;br&gt;Temp: 13.5°C | Luftf: 44.8%&lt;br&gt;Humidex: 11.8&lt;br&gt;Comfort Score: 38.9%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_0dd7b14ab1ed1ac25ee532f548f050f0 = L.circleMarker(\n",
              "                [46.95975, 7.46602],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;orange&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_0dd7b14ab1ed1ac25ee532f548f050f0.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     BernExpo Park 2.5m&lt;br&gt;Temp: 13.6°C | Luftf: 44.2%&lt;br&gt;Humidex: 11.8&lt;br&gt;Comfort Score: 38.9%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_286d7ec1ff55f9e99de502789e15d233 = L.circleMarker(\n",
              "                [46.96, 7.46681],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;red&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_286d7ec1ff55f9e99de502789e15d233.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     BernExpo Asphalt 0.5m&lt;br&gt;Temp: 13.7°C | Luftf: 45.7%&lt;br&gt;Humidex: 12.1&lt;br&gt;Comfort Score: 22.2%\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var circle_marker_ed649c6900b1ad800d9e0baf3cf68505 = L.circleMarker(\n",
              "                [46.95617, 7.428575],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;black&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: true, &quot;fillColor&quot;: &quot;gray&quot;, &quot;fillOpacity&quot;: 0.8, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;opacity&quot;: 1.0, &quot;radius&quot;: 8, &quot;stroke&quot;: true, &quot;weight&quot;: 0.5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            circle_marker_ed649c6900b1ad800d9e0baf3cf68505.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Bern Hintere Länggasse&lt;br&gt;Temp: 3.6°C | Luftf: 91.1%&lt;br&gt;Humidex: n/a&lt;br&gt;Comfort Score: n/a\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var poly_line_73c5db5c4fde076d8a0d6d56de5a06ee = L.polyline(\n",
              "                [[46.92981, 7.40896], [46.938255, 7.4133654], [46.99079, 7.46407], [46.980637, 7.490017], [46.9377, 7.50944]],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;green&quot;, &quot;dashArray&quot;: null, &quot;dashOffset&quot;: null, &quot;fill&quot;: false, &quot;fillColor&quot;: &quot;green&quot;, &quot;fillOpacity&quot;: 0.2, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;noClip&quot;: false, &quot;opacity&quot;: 0.9, &quot;smoothFactor&quot;: 1.0, &quot;stroke&quot;: true, &quot;weight&quot;: 5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            poly_line_73c5db5c4fde076d8a0d6d56de5a06ee.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Route kühlste Stationen (Top-5) – Luftlinie\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "    \n",
              "            var poly_line_301ac84d78f0ac404d7a6b24bb2310c8 = L.polyline(\n",
              "                [[46.946228, 7.429253], [46.94658, 7.43786], [46.94381, 7.44885], [46.96, 7.46681], [46.971962, 7.489671]],\n",
              "                {&quot;bubblingMouseEvents&quot;: true, &quot;color&quot;: &quot;red&quot;, &quot;dashArray&quot;: &quot;10&quot;, &quot;dashOffset&quot;: null, &quot;fill&quot;: false, &quot;fillColor&quot;: &quot;red&quot;, &quot;fillOpacity&quot;: 0.2, &quot;fillRule&quot;: &quot;evenodd&quot;, &quot;lineCap&quot;: &quot;round&quot;, &quot;lineJoin&quot;: &quot;round&quot;, &quot;noClip&quot;: false, &quot;opacity&quot;: 0.9, &quot;smoothFactor&quot;: 1.0, &quot;stroke&quot;: true, &quot;weight&quot;: 5}\n",
              "            ).addTo(map_a09aaeb3b3005c679b915d8db7816ee3);\n",
              "        \n",
              "    \n",
              "            poly_line_301ac84d78f0ac404d7a6b24bb2310c8.bindTooltip(\n",
              "                `&lt;div&gt;\n",
              "                     Route wärmste Stationen (Top-5) – meiden\n",
              "                 &lt;/div&gt;`,\n",
              "                {\n",
              "  &quot;sticky&quot;: true,\n",
              "}\n",
              "            );\n",
              "        \n",
              "&lt;/script&gt;\n",
              "&lt;/html&gt;\" style=\"position:absolute;width:100%;height:100%;left:0;top:0;border:none !important;\" allowfullscreen webkitallowfullscreen mozallowfullscreen></iframe></div></div>"
            ]
          },
          "metadata": {},
          "execution_count": 35
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "### 4.2 Stationstabelle\n",
        "Tabellarische Übersicht aller aktiven Stationen im Raum Bern, sortiert nach Comfort Score (absteigend). Zeigt Temperatur, Luftfeuchtigkeit, Humidex und Ampelklassifikation auf einen Blick."
      ],
      "metadata": {
        "id": "3IRtL1ALI3Tg"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# Ampel-Emoji für Lesbarkeit in der Tabelle\n",
        "def get_emoji(color):\n",
        "    # visuelles Feedback für User: Ampelfarbe als Emoji\n",
        "    mapping = {\"green\": \"🟢\", \"orange\": \"🟡\", \"red\": \"🔴\", \"gray\": \"⚫\"}\n",
        "    return mapping.get(color, \"⚫\")\n",
        "\n",
        "# Tabelle aufbereiten: nur relevante Spalten, sauber benannt\n",
        "df_table = df_rtd_bern[[\n",
        "    \"name\", \"temperature\", \"relativeHumidity\", \"humidex\", \"comfort_score\", \"color\"\n",
        "]].copy()\n",
        "\n",
        "# Zahlen auf 1 Dezimale runden (Lesbarkeit)\n",
        "df_table[[\"temperature\", \"relativeHumidity\", \"humidex\", \"comfort_score\"]] = \\\n",
        "    df_table[[\"temperature\", \"relativeHumidity\", \"humidex\", \"comfort_score\"]].round(1)\n",
        "\n",
        "df_table[\"Ampel\"] = df_table[\"color\"].apply(get_emoji)\n",
        "\n",
        "# Spalten umbenennen für Lesbarkeit\n",
        "df_table = df_table.rename(columns={\n",
        "    \"name\":             \"Station\",\n",
        "    \"temperature\":      \"Temp (°C)\",\n",
        "    \"relativeHumidity\": \"Luftf. (%)\",\n",
        "    \"humidex\":          \"Humidex\",\n",
        "    \"comfort_score\":    \"Comfort Score (%)\"\n",
        "}).drop(columns=[\"color\"])\n",
        "\n",
        "# Nach Comfort Score sortieren (beste zuerst)\n",
        "# NaN-Stationen (Ausreisser) landen am Ende\n",
        "df_table = df_table.sort_values(\n",
        "    \"Comfort Score (%)\", ascending=False, na_position=\"last\"\n",
        ").reset_index(drop=True)\n",
        "\n",
        "# Stand: explizit als lokale Notebook-Zeit kennzeichnen (Colab = meist UTC)\n",
        "print(f\"HeatSafeBern – Aktuelle Hitzebelastung Bern\")\n",
        "print(f\"Stand (lokale Notebook-Zeit): {datetime.now().strftime('%d.%m.%Y %H:%M')} Uhr\")\n",
        "print(f\"Stationen: {len(df_table)} total, \"\n",
        "      f\"{df_table['Ampel'].eq('⚫').sum()} keine Daten/Ausreisser\\n\")\n",
        "\n",
        "display(df_table)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "id": "P6WtidqwJhTZ",
        "outputId": "2da14f3b-5241-4cbf-df6d-db77110b3496"
      },
      "execution_count": 36,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "HeatSafeBern – Aktuelle Hitzebelastung Bern\n",
            "Stand (lokale Notebook-Zeit): 13.03.2026 17:20 Uhr\n",
            "Stationen: 31 total, 4 keine Daten/Ausreisser\n",
            "\n"
          ]
        },
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "                                     Station  Temp (°C)  Luftf. (%)  Humidex  \\\n",
              "0           Liebefeld Turnierstrasse Laterne       12.4        48.1     10.7   \n",
              "1                  Köniz Gartenstadt Laterne       12.4        48.1     10.7   \n",
              "2                              Zollikofen 3m       12.9        48.2     11.3   \n",
              "3                Gümligen Dentenberg Laterne       12.9        47.1     11.3   \n",
              "4             Ittigen Gantrischweg 1 Laterne       13.1        46.8     11.4   \n",
              "5                     Wabern Zentrum Laterne       13.3        45.0     11.5   \n",
              "6                           Bern Merzenacker       13.2        46.2     11.5   \n",
              "7                     Muri Blümlisalpstrasse       13.4        44.7     11.6   \n",
              "8            Muri Zentrum (Tavelweg) Laterne       13.4        44.4     11.6   \n",
              "9                             Bremgartenwald       12.8        53.6     11.6   \n",
              "10                         Vordere Länggasse       13.1        49.3     11.7   \n",
              "11           Bolligen Sternenkreisel Laterne       13.6        42.9     11.7   \n",
              "12         Muri Süd (Steinhübeliweg) Laterne       13.5        43.4     11.7   \n",
              "13                        BernExpo Park 2.5m       13.6        44.2     11.8   \n",
              "14                     BernExpo Asphalt 2.5m       13.5        44.8     11.8   \n",
              "15                         Bern Lorrainepark       13.5        44.8     11.8   \n",
              "16                Wabern Gartentower Laterne       13.5        45.4     11.8   \n",
              "17         Wohlen Hinterkappelenring Laterne       13.5        45.3     11.8   \n",
              "18                           Wabern Weyergut       13.4        45.5     11.8   \n",
              "19            Zollikofen Reichenbach Laterne       13.7        43.7     11.9   \n",
              "20                          Bern Dalmaziquai       13.6        43.7     11.9   \n",
              "21                 Galgenfeld Neubausiedlung       13.3        49.7     12.0   \n",
              "22                 Ittigen Worblentalstrasse       13.8        44.2     12.1   \n",
              "23                     BernExpo Asphalt 0.5m       13.7        45.7     12.1   \n",
              "24              Emch+Berger (Zieglerstrasse)       13.8        43.6     12.1   \n",
              "25                            Hirschengraben       13.9        45.5     12.3   \n",
              "26                             Helvetiaplatz       13.7        49.1     12.5   \n",
              "27                                Eigerplatz       14.2        48.8      NaN   \n",
              "28      Kehrsatz Breitägertenstrasse Laterne       12.2        47.4      NaN   \n",
              "29  Köniz Blinzernplateau Strom-/Telefonmast       12.1        49.9      NaN   \n",
              "30                    Bern Hintere Länggasse        3.6        91.1      NaN   \n",
              "\n",
              "    Comfort Score (%) Ampel  \n",
              "0               100.0     🟢  \n",
              "1               100.0     🟢  \n",
              "2                66.7     🟢  \n",
              "3                66.7     🟢  \n",
              "4                61.1     🟡  \n",
              "5                55.6     🟡  \n",
              "6                55.6     🟡  \n",
              "7                50.0     🟡  \n",
              "8                50.0     🟡  \n",
              "9                50.0     🟡  \n",
              "10               44.4     🟡  \n",
              "11               44.4     🟡  \n",
              "12               44.4     🟡  \n",
              "13               38.9     🟡  \n",
              "14               38.9     🟡  \n",
              "15               38.9     🟡  \n",
              "16               38.9     🟡  \n",
              "17               38.9     🟡  \n",
              "18               38.9     🟡  \n",
              "19               33.3     🟡  \n",
              "20               33.3     🟡  \n",
              "21               27.8     🔴  \n",
              "22               22.2     🔴  \n",
              "23               22.2     🔴  \n",
              "24               22.2     🔴  \n",
              "25               11.1     🔴  \n",
              "26                0.0     🔴  \n",
              "27                NaN     ⚫  \n",
              "28                NaN     ⚫  \n",
              "29                NaN     ⚫  \n",
              "30                NaN     ⚫  "
            ],
            "text/html": [
              "\n",
              "  <div id=\"df-88e27759-95d7-4d23-a4e0-1850bd3ba20f\" class=\"colab-df-container\">\n",
              "    <div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Station</th>\n",
              "      <th>Temp (°C)</th>\n",
              "      <th>Luftf. (%)</th>\n",
              "      <th>Humidex</th>\n",
              "      <th>Comfort Score (%)</th>\n",
              "      <th>Ampel</th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>0</th>\n",
              "      <td>Liebefeld Turnierstrasse Laterne</td>\n",
              "      <td>12.4</td>\n",
              "      <td>48.1</td>\n",
              "      <td>10.7</td>\n",
              "      <td>100.0</td>\n",
              "      <td>🟢</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>1</th>\n",
              "      <td>Köniz Gartenstadt Laterne</td>\n",
              "      <td>12.4</td>\n",
              "      <td>48.1</td>\n",
              "      <td>10.7</td>\n",
              "      <td>100.0</td>\n",
              "      <td>🟢</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2</th>\n",
              "      <td>Zollikofen 3m</td>\n",
              "      <td>12.9</td>\n",
              "      <td>48.2</td>\n",
              "      <td>11.3</td>\n",
              "      <td>66.7</td>\n",
              "      <td>🟢</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>3</th>\n",
              "      <td>Gümligen Dentenberg Laterne</td>\n",
              "      <td>12.9</td>\n",
              "      <td>47.1</td>\n",
              "      <td>11.3</td>\n",
              "      <td>66.7</td>\n",
              "      <td>🟢</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>4</th>\n",
              "      <td>Ittigen Gantrischweg 1 Laterne</td>\n",
              "      <td>13.1</td>\n",
              "      <td>46.8</td>\n",
              "      <td>11.4</td>\n",
              "      <td>61.1</td>\n",
              "      <td>🟡</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>5</th>\n",
              "      <td>Wabern Zentrum Laterne</td>\n",
              "      <td>13.3</td>\n",
              "      <td>45.0</td>\n",
              "      <td>11.5</td>\n",
              "      <td>55.6</td>\n",
              "      <td>🟡</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>6</th>\n",
              "      <td>Bern Merzenacker</td>\n",
              "      <td>13.2</td>\n",
              "      <td>46.2</td>\n",
              "      <td>11.5</td>\n",
              "      <td>55.6</td>\n",
              "      <td>🟡</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>7</th>\n",
              "      <td>Muri Blümlisalpstrasse</td>\n",
              "      <td>13.4</td>\n",
              "      <td>44.7</td>\n",
              "      <td>11.6</td>\n",
              "      <td>50.0</td>\n",
              "      <td>🟡</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>8</th>\n",
              "      <td>Muri Zentrum (Tavelweg) Laterne</td>\n",
              "      <td>13.4</td>\n",
              "      <td>44.4</td>\n",
              "      <td>11.6</td>\n",
              "      <td>50.0</td>\n",
              "      <td>🟡</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>9</th>\n",
              "      <td>Bremgartenwald</td>\n",
              "      <td>12.8</td>\n",
              "      <td>53.6</td>\n",
              "      <td>11.6</td>\n",
              "      <td>50.0</td>\n",
              "      <td>🟡</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>10</th>\n",
              "      <td>Vordere Länggasse</td>\n",
              "      <td>13.1</td>\n",
              "      <td>49.3</td>\n",
              "      <td>11.7</td>\n",
              "      <td>44.4</td>\n",
              "      <td>🟡</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>11</th>\n",
              "      <td>Bolligen Sternenkreisel Laterne</td>\n",
              "      <td>13.6</td>\n",
              "      <td>42.9</td>\n",
              "      <td>11.7</td>\n",
              "      <td>44.4</td>\n",
              "      <td>🟡</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>12</th>\n",
              "      <td>Muri Süd (Steinhübeliweg) Laterne</td>\n",
              "      <td>13.5</td>\n",
              "      <td>43.4</td>\n",
              "      <td>11.7</td>\n",
              "      <td>44.4</td>\n",
              "      <td>🟡</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>13</th>\n",
              "      <td>BernExpo Park 2.5m</td>\n",
              "      <td>13.6</td>\n",
              "      <td>44.2</td>\n",
              "      <td>11.8</td>\n",
              "      <td>38.9</td>\n",
              "      <td>🟡</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>14</th>\n",
              "      <td>BernExpo Asphalt 2.5m</td>\n",
              "      <td>13.5</td>\n",
              "      <td>44.8</td>\n",
              "      <td>11.8</td>\n",
              "      <td>38.9</td>\n",
              "      <td>🟡</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>15</th>\n",
              "      <td>Bern Lorrainepark</td>\n",
              "      <td>13.5</td>\n",
              "      <td>44.8</td>\n",
              "      <td>11.8</td>\n",
              "      <td>38.9</td>\n",
              "      <td>🟡</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>16</th>\n",
              "      <td>Wabern Gartentower Laterne</td>\n",
              "      <td>13.5</td>\n",
              "      <td>45.4</td>\n",
              "      <td>11.8</td>\n",
              "      <td>38.9</td>\n",
              "      <td>🟡</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>17</th>\n",
              "      <td>Wohlen Hinterkappelenring Laterne</td>\n",
              "      <td>13.5</td>\n",
              "      <td>45.3</td>\n",
              "      <td>11.8</td>\n",
              "      <td>38.9</td>\n",
              "      <td>🟡</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>18</th>\n",
              "      <td>Wabern Weyergut</td>\n",
              "      <td>13.4</td>\n",
              "      <td>45.5</td>\n",
              "      <td>11.8</td>\n",
              "      <td>38.9</td>\n",
              "      <td>🟡</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>19</th>\n",
              "      <td>Zollikofen Reichenbach Laterne</td>\n",
              "      <td>13.7</td>\n",
              "      <td>43.7</td>\n",
              "      <td>11.9</td>\n",
              "      <td>33.3</td>\n",
              "      <td>🟡</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>20</th>\n",
              "      <td>Bern Dalmaziquai</td>\n",
              "      <td>13.6</td>\n",
              "      <td>43.7</td>\n",
              "      <td>11.9</td>\n",
              "      <td>33.3</td>\n",
              "      <td>🟡</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>21</th>\n",
              "      <td>Galgenfeld Neubausiedlung</td>\n",
              "      <td>13.3</td>\n",
              "      <td>49.7</td>\n",
              "      <td>12.0</td>\n",
              "      <td>27.8</td>\n",
              "      <td>🔴</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>22</th>\n",
              "      <td>Ittigen Worblentalstrasse</td>\n",
              "      <td>13.8</td>\n",
              "      <td>44.2</td>\n",
              "      <td>12.1</td>\n",
              "      <td>22.2</td>\n",
              "      <td>🔴</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>23</th>\n",
              "      <td>BernExpo Asphalt 0.5m</td>\n",
              "      <td>13.7</td>\n",
              "      <td>45.7</td>\n",
              "      <td>12.1</td>\n",
              "      <td>22.2</td>\n",
              "      <td>🔴</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>24</th>\n",
              "      <td>Emch+Berger (Zieglerstrasse)</td>\n",
              "      <td>13.8</td>\n",
              "      <td>43.6</td>\n",
              "      <td>12.1</td>\n",
              "      <td>22.2</td>\n",
              "      <td>🔴</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>25</th>\n",
              "      <td>Hirschengraben</td>\n",
              "      <td>13.9</td>\n",
              "      <td>45.5</td>\n",
              "      <td>12.3</td>\n",
              "      <td>11.1</td>\n",
              "      <td>🔴</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>26</th>\n",
              "      <td>Helvetiaplatz</td>\n",
              "      <td>13.7</td>\n",
              "      <td>49.1</td>\n",
              "      <td>12.5</td>\n",
              "      <td>0.0</td>\n",
              "      <td>🔴</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>27</th>\n",
              "      <td>Eigerplatz</td>\n",
              "      <td>14.2</td>\n",
              "      <td>48.8</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>⚫</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>28</th>\n",
              "      <td>Kehrsatz Breitägertenstrasse Laterne</td>\n",
              "      <td>12.2</td>\n",
              "      <td>47.4</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>⚫</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>29</th>\n",
              "      <td>Köniz Blinzernplateau Strom-/Telefonmast</td>\n",
              "      <td>12.1</td>\n",
              "      <td>49.9</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>⚫</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>30</th>\n",
              "      <td>Bern Hintere Länggasse</td>\n",
              "      <td>3.6</td>\n",
              "      <td>91.1</td>\n",
              "      <td>NaN</td>\n",
              "      <td>NaN</td>\n",
              "      <td>⚫</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>\n",
              "    <div class=\"colab-df-buttons\">\n",
              "\n",
              "  <div class=\"colab-df-container\">\n",
              "    <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-88e27759-95d7-4d23-a4e0-1850bd3ba20f')\"\n",
              "            title=\"Convert this dataframe to an interactive table.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
              "    <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "\n",
              "  <style>\n",
              "    .colab-df-container {\n",
              "      display:flex;\n",
              "      gap: 12px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert {\n",
              "      background-color: #E8F0FE;\n",
              "      border: none;\n",
              "      border-radius: 50%;\n",
              "      cursor: pointer;\n",
              "      display: none;\n",
              "      fill: #1967D2;\n",
              "      height: 32px;\n",
              "      padding: 0 0 0 0;\n",
              "      width: 32px;\n",
              "    }\n",
              "\n",
              "    .colab-df-convert:hover {\n",
              "      background-color: #E2EBFA;\n",
              "      box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "      fill: #174EA6;\n",
              "    }\n",
              "\n",
              "    .colab-df-buttons div {\n",
              "      margin-bottom: 4px;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert {\n",
              "      background-color: #3B4455;\n",
              "      fill: #D2E3FC;\n",
              "    }\n",
              "\n",
              "    [theme=dark] .colab-df-convert:hover {\n",
              "      background-color: #434B5C;\n",
              "      box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "      filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "      fill: #FFFFFF;\n",
              "    }\n",
              "  </style>\n",
              "\n",
              "    <script>\n",
              "      const buttonEl =\n",
              "        document.querySelector('#df-88e27759-95d7-4d23-a4e0-1850bd3ba20f button.colab-df-convert');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      async function convertToInteractive(key) {\n",
              "        const element = document.querySelector('#df-88e27759-95d7-4d23-a4e0-1850bd3ba20f');\n",
              "        const dataTable =\n",
              "          await google.colab.kernel.invokeFunction('convertToInteractive',\n",
              "                                                    [key], {});\n",
              "        if (!dataTable) return;\n",
              "\n",
              "        const docLinkHtml = 'Like what you see? Visit the ' +\n",
              "          '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
              "          + ' to learn more about interactive tables.';\n",
              "        element.innerHTML = '';\n",
              "        dataTable['output_type'] = 'display_data';\n",
              "        await google.colab.output.renderOutput(dataTable, element);\n",
              "        const docLink = document.createElement('div');\n",
              "        docLink.innerHTML = docLinkHtml;\n",
              "        element.appendChild(docLink);\n",
              "      }\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "\n",
              "  <div id=\"id_f18745e1-2cd5-46b0-91c3-b9356d865e64\">\n",
              "    <style>\n",
              "      .colab-df-generate {\n",
              "        background-color: #E8F0FE;\n",
              "        border: none;\n",
              "        border-radius: 50%;\n",
              "        cursor: pointer;\n",
              "        display: none;\n",
              "        fill: #1967D2;\n",
              "        height: 32px;\n",
              "        padding: 0 0 0 0;\n",
              "        width: 32px;\n",
              "      }\n",
              "\n",
              "      .colab-df-generate:hover {\n",
              "        background-color: #E2EBFA;\n",
              "        box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
              "        fill: #174EA6;\n",
              "      }\n",
              "\n",
              "      [theme=dark] .colab-df-generate {\n",
              "        background-color: #3B4455;\n",
              "        fill: #D2E3FC;\n",
              "      }\n",
              "\n",
              "      [theme=dark] .colab-df-generate:hover {\n",
              "        background-color: #434B5C;\n",
              "        box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
              "        filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
              "        fill: #FFFFFF;\n",
              "      }\n",
              "    </style>\n",
              "    <button class=\"colab-df-generate\" onclick=\"generateWithVariable('df_table')\"\n",
              "            title=\"Generate code using this dataframe.\"\n",
              "            style=\"display:none;\">\n",
              "\n",
              "  <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
              "       width=\"24px\">\n",
              "    <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
              "  </svg>\n",
              "    </button>\n",
              "    <script>\n",
              "      (() => {\n",
              "      const buttonEl =\n",
              "        document.querySelector('#id_f18745e1-2cd5-46b0-91c3-b9356d865e64 button.colab-df-generate');\n",
              "      buttonEl.style.display =\n",
              "        google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
              "\n",
              "      buttonEl.onclick = () => {\n",
              "        google.colab.notebook.generateWithVariable('df_table');\n",
              "      }\n",
              "      })();\n",
              "    </script>\n",
              "  </div>\n",
              "\n",
              "    </div>\n",
              "  </div>\n"
            ],
            "application/vnd.google.colaboratory.intrinsic+json": {
              "type": "dataframe",
              "variable_name": "df_table",
              "summary": "{\n  \"name\": \"df_table\",\n  \"rows\": 31,\n  \"fields\": [\n    {\n      \"column\": \"Station\",\n      \"properties\": {\n        \"dtype\": \"string\",\n        \"num_unique_values\": 31,\n        \"samples\": [\n          \"Eigerplatz\",\n          \"Bern Lorrainepark\",\n          \"BernExpo Asphalt 0.5m\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Temp (\\u00b0C)\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 1.8132368728297048,\n        \"min\": 3.6,\n        \"max\": 14.2,\n        \"num_unique_values\": 16,\n        \"samples\": [\n          12.4,\n          12.9,\n          13.4\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Luftf. (%)\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 8.407372596625809,\n        \"min\": 42.9,\n        \"max\": 91.1,\n        \"num_unique_values\": 26,\n        \"samples\": [\n          53.6,\n          45.5,\n          48.1\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Humidex\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 0.40333368651535023,\n        \"min\": 10.7,\n        \"max\": 12.5,\n        \"num_unique_values\": 12,\n        \"samples\": [\n          12.3,\n          12.1,\n          10.7\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Comfort Score (%)\",\n      \"properties\": {\n        \"dtype\": \"number\",\n        \"std\": 22.414523934067468,\n        \"min\": 0.0,\n        \"max\": 100.0,\n        \"num_unique_values\": 12,\n        \"samples\": [\n          11.1,\n          22.2,\n          100.0\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    },\n    {\n      \"column\": \"Ampel\",\n      \"properties\": {\n        \"dtype\": \"category\",\n        \"num_unique_values\": 4,\n        \"samples\": [\n          \"\\ud83d\\udfe1\",\n          \"\\u26ab\",\n          \"\\ud83d\\udfe2\"\n        ],\n        \"semantic_type\": \"\",\n        \"description\": \"\"\n      }\n    }\n  ]\n}"
            }
          },
          "metadata": {}
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 5. Historische Analyse – Beste Trainingszeit\n",
        "Auswertung historischer Zeitreihendaten (Sommer 2025, Juli–August) für mehrere Berner Stationen. Ziel: Identifikation der durchschnittlich kühlsten Tageszeit als indikative Empfehlung für Outdoor-Aktivitäten. Der Humidex-Tagesverlauf wird über sechs geografisch diversifizierte Stationen ermittelt."
      ],
      "metadata": {
        "id": "UdeP01k-KBgu"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "#Daten laden\n",
        "\n",
        "# Historische Analyse: Sommer 2025 (Juli–August)\n",
        "# Für den PoC werden Sommerdaten 2025 verwendet (verfügbar gemäss API-Test)\n",
        "# HIST_TO = 01.09 damit der gesamte August enthalten ist (Ende exklusiv)\n",
        "HIST_FROM = \"2025-07-01T00:00:00Z\"\n",
        "HIST_TO   = \"2025-09-01T00:00:00Z\"\n",
        "\n",
        "# Fest definierte Stationen – geografisch diversifiziert über den Raum Bern\n",
        "# Bewusste Auswahl statt df_rtd_valid.head(): head() würde die aktuell kühlsten\n",
        "# Stationen nehmen – diese wechseln je nach Tageszeit und wären nicht reproduzierbar.\n",
        "# Fest kodierte IDs garantieren, dass immer dieselben Lagen verglichen werden:\n",
        "# Innenstadt (Wärmeinsel), Wohnquartier, Grünfläche, Stadtrand Nord/Süd\n",
        "HIST_STATIONS = [\n",
        "    {\"stationId\": 11070, \"name\": \"Hirschengraben\"},       # Innenstadt / Wärmeinsel\n",
        "    {\"stationId\": 11046, \"name\": \"Bern Merzenacker\"},      # Grünfläche / Park\n",
        "    {\"stationId\": 11037, \"name\": \"Eigenplatz\"},            # Stadtmitte Referenz\n",
        "    {\"stationId\": 11060, \"name\": \"Vordere Länggasse\"},     # Wohnquartier\n",
        "    {\"stationId\": 11080, \"name\": \"Wabern Weyergut\"},       # Südlicher Stadtrand\n",
        "    {\"stationId\": 11117, \"name\": \"Ittigen Papiermühle\"},   # Nördlicher Rand / Aare-Nähe\n",
        "]\n",
        "\n",
        "# Pflichtfelder: ohne diese drei Spalten ist Humidex-Berechnung nicht möglich\n",
        "HIST_REQUIRED_COLS = [\"dateObserved\", \"temperature\", \"relativeHumidity\"]\n",
        "\n",
        "all_timeseries = []\n",
        "\n",
        "for station in HIST_STATIONS:\n",
        "    # Timeseries-Endpunkt liefert CSV mit zeitlich hochauflösende Messwerte pro Station\n",
        "    # stationId als URL-Parameter, Zeitraum als ISO-8601 UTC\n",
        "    url = (f\"{URL_TIMESERIES}?stationId={station['stationId']}\"\n",
        "           f\"&timeFrom={HIST_FROM}&timeTo={HIST_TO}\")\n",
        "    try:\n",
        "        resp = requests.get(url, headers={\"Accept\": \"text/csv\"}, timeout=20)\n",
        "        # raise_for_status stoppt sofort bei HTTP-Fehlern (z.B. 404, 500)\n",
        "        resp.raise_for_status()\n",
        "\n",
        "        # Content-Type prüfen: sicherstellen dass wirklich CSV geliefert wurde\n",
        "        # verhindert stilles Scheitern, falls API plötzlich JSON zurückgibt\n",
        "        content_type = resp.headers.get(\"content-type\", \"\")\n",
        "        if \"csv\" not in content_type and \"text\" not in content_type:\n",
        "            print(f\"  {station['name']}: unerwarteter Content-Type ({content_type})\")\n",
        "            continue\n",
        "\n",
        "        # delimiter=\";\" weil Smart Urban Heat Map API Semikolon-getrennte CSVs liefert\n",
        "        ts = pd.read_csv(io.StringIO(resp.text), delimiter=\";\")\n",
        "\n",
        "        # Pflichtfelder-Check: fehlende Spalten würden später zu Crash führen\n",
        "        # besser hier abfangen mit verständlicher Fehlermeldung\n",
        "        missing_cols = [c for c in HIST_REQUIRED_COLS if c not in ts.columns]\n",
        "        if missing_cols:\n",
        "            print(f\"  {station['name']}: fehlende Spalten {missing_cols}\")\n",
        "            continue\n",
        "\n",
        "        if len(ts) > 0:\n",
        "            # Station-Metadaten anhängen, damit nach pd.concat noch erkennbar ist,\n",
        "            # welche Zeile von welcher Station stammt\n",
        "            ts[\"stationId\"]   = station[\"stationId\"]\n",
        "            ts[\"stationName\"] = station[\"name\"]\n",
        "            all_timeseries.append(ts)\n",
        "            print(f\"  ✓ {station['name']}: {len(ts)} Datenpunkte\")\n",
        "        else:\n",
        "            print(f\"  {station['name']}: keine historischen Daten\")\n",
        "\n",
        "    except Exception as e:\n",
        "        print(f\"  {station['name']}: Fehler – {e}\")\n",
        "\n",
        "# Transparenz: wie viele Stationen haben tatsächlich Daten geliefert?\n",
        "# falls < 6, trotzdem weiterrechnen – Mittel bleibt aussagekräftig\n",
        "print(f\"\\nGeladen: {len(all_timeseries)} / {len(HIST_STATIONS)} Stationen mit historischen Daten\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "33K_itCgSdRN",
        "outputId": "93520e91-1102-4ebc-ba8f-d2b3736f662e"
      },
      "execution_count": 37,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "  ✓ Hirschengraben: 8091 Datenpunkte\n",
            "  ✓ Bern Merzenacker: 8572 Datenpunkte\n",
            "  ✓ Eigenplatz: 8476 Datenpunkte\n",
            "  ✓ Vordere Länggasse: 8575 Datenpunkte\n",
            "  ✓ Wabern Weyergut: 8485 Datenpunkte\n",
            "  ✓ Ittigen Papiermühle: 6799 Datenpunkte\n",
            "\n",
            "Geladen: 6 / 6 Stationen mit historischen Daten\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "# Guard: ohne Daten ist die Analyse nicht möglich\n",
        "if not all_timeseries:\n",
        "    raise ValueError(\"Keine historischen Daten geladen – Analyse abgebrochen.\")\n",
        "\n",
        "# Alle Stationen zu einem DataFrame zusammenführen\n",
        "# ignore_index=True, damit der Index eindeutig bleibt (jede Station startet bei 0)\n",
        "df_hist = pd.concat(all_timeseries, ignore_index=True)\n",
        "\n",
        "# BOM/Whitespace-Schutz: manche CSV-Exporte enthalten ein Byte-Order-Mark (\\ufeff)\n",
        "# am Anfang der ersten Spalte → würde \"dateObserved\" zu \"\\ufeffdateObserved\" machen\n",
        "# und den Pflichtfelder-Check still zum Scheitern bringen\n",
        "df_hist.columns = df_hist.columns.str.replace(\"\\ufeff\", \"\", regex=False).str.strip()\n",
        "\n",
        "# Zeitstempel parsen: utc=True weil API UTC-Zeitstempel liefert\n",
        "# errors=\"coerce\" wandelt unparsbare Werte in NaT um statt Crash\n",
        "df_hist[\"dateObserved\"] = pd.to_datetime(df_hist[\"dateObserved\"], utc=True, errors=\"coerce\")\n",
        "# Zeilen ohne gültigen Zeitstempel können nicht einer Tagesstunde zugeordnet werden\n",
        "df_hist = df_hist.dropna(subset=[\"dateObserved\"])\n",
        "\n",
        "# Lokalzeit Bern (UTC+2 im Sommer) für intuitive Stundenachse\n",
        "# ohne Konvertierung würde 06:00 Uhr lokaler Morgen als 04:00 UTC erscheinen\n",
        "df_hist[\"hour\"] = df_hist[\"dateObserved\"].dt.tz_convert(\"Europe/Zurich\").dt.hour\n",
        "\n",
        "# Numerische Typen erzwingen: CSVs können BOM oder Komma-Dezimal enthalten,\n",
        "# was pandas als String einliest – to_numeric konvertiert sauber, Rest wird NaN\n",
        "df_hist[\"temperature\"]      = pd.to_numeric(df_hist[\"temperature\"],      errors=\"coerce\")\n",
        "df_hist[\"relativeHumidity\"] = pd.to_numeric(df_hist[\"relativeHumidity\"], errors=\"coerce\")\n",
        "\n",
        "# Zeilen mit ungültigen Messwerten entfernen BEVOR Humidex berechnet wird\n",
        "# sonst entstehen viele NaN-Humidex, die das Stundenmittel still verzerren\n",
        "n_before = len(df_hist)\n",
        "df_hist = df_hist.dropna(subset=[\"temperature\", \"relativeHumidity\"])\n",
        "n_dropped = n_before - len(df_hist)\n",
        "if n_dropped > 0:\n",
        "    print(f\"Zeilen mit ungültigen Messwerten entfernt: {n_dropped}\")\n",
        "\n",
        "# Humidex vektorisiert berechnen: np.vectorize wendet calculate_humidex\n",
        "# elementweise auf alle Zeilen an (schneller als axis=1 apply)\n",
        "# calculate_humidex gibt NaN zurück bei rh<=0 oder rh>100 (seltene Ausreisser)\n",
        "# pandas groupby ignoriert NaN bei mean/std/count → kein Einfluss auf Ergebnis\n",
        "df_hist[\"humidex\"] = np.vectorize(calculate_humidex)(\n",
        "    df_hist[\"temperature\"].to_numpy(),\n",
        "    df_hist[\"relativeHumidity\"].to_numpy()\n",
        ")\n",
        "# Transparenz: wie viele Humidex-NaNs sind trotz gültiger temp/RH entstanden?\n",
        "n_humidex_nan = df_hist[\"humidex\"].isna().sum()\n",
        "if n_humidex_nan > 0:\n",
        "    print(f\"Humidex-NaNs nach Berechnung (rh<=0 oder rh>100): {n_humidex_nan}\")\n",
        "\n",
        "# Stundenmittel über alle Stationen und alle Tage im Zeitraum\n",
        "# Warum Humidex und nicht Comfort Score?\n",
        "# Der Comfort Score ist eine relative Momentaufnahme: er normalisiert Stationen\n",
        "# gegeneinander innerhalb eines einzigen RTD-Snapshots (100% = kühlste Station\n",
        "# *gerade jetzt*). Über die Zeit ist er nicht vergleichbar – um 06:00 Uhr wäre\n",
        "# eine Station \"100%\", um 14:00 Uhr eine andere, obwohl es insgesamt viel heisser\n",
        "# ist. Der Humidex ist ein absoluter Wert und macht Tagesstunden direkt\n",
        "# vergleichbar: ein niedrigerer Ø Humidex um 06:00 Uhr bedeutet unabhängig vom\n",
        "# Snapshot wirklich kühlere Bedingungen als um 14:00 Uhr.\n",
        "# groupby(hour) → für jede der 24 Stunden: Mittelwert, Streuung, Anzahl Messwerte\n",
        "# std wird später als Konfidenzband im Plot verwendet\n",
        "# sort_values(\"hour\") sicherstellt monoton steigende x-Achse für fill_between\n",
        "# Hinweis: Stunden mit wenigen Messwerten (n klein) könnten den Mittelwert leicht\n",
        "# verzerren. Für den PoC wird keine Mindestschwelle gesetzt – n wird pro Stunde\n",
        "# mitgeloggt und kann bei Bedarf als Filterkriterium ergänzt werden.\n",
        "hourly_mean = (\n",
        "    df_hist.groupby(\"hour\")[\"humidex\"]\n",
        "    .agg([\"mean\", \"std\", \"count\"])\n",
        "    .rename(columns={\"mean\": \"humidex_mean\", \"std\": \"humidex_std\", \"count\": \"n\"})\n",
        "    .reset_index()\n",
        "    .sort_values(\"hour\")\n",
        ")\n",
        "\n",
        "# Kühlste/wärmste Stunde für Annotation und Empfehlung\n",
        "coolest_hour = hourly_mean.loc[hourly_mean[\"humidex_mean\"].idxmin()]\n",
        "warmest_hour = hourly_mean.loc[hourly_mean[\"humidex_mean\"].idxmax()]\n",
        "# n_stations dynamisch: falls einzelne Stationen keine Daten lieferten,\n",
        "# stimmt das Label im Plot trotzdem (nicht fix \"6 Stationen\")\n",
        "n_stations   = df_hist[\"stationName\"].nunique()\n",
        "\n",
        "print(f\"Kühlste Tagesstunde : {int(coolest_hour['hour']):02d}:00 Uhr  (Ø Humidex {coolest_hour['humidex_mean']:.1f})\")\n",
        "print(f\"Wärmste Tagesstunde : {int(warmest_hour['hour']):02d}:00 Uhr  (Ø Humidex {warmest_hour['humidex_mean']:.1f})\")\n",
        "print(f\"\\nDatengrundlage: {len(df_hist):,} valide Messwerte, {n_stations} Stationen, Sommer 2025 (Jul–Aug)\")\n",
        "print(f\"\\nMesswerte pro Stunde (n) – Übersicht:\")\n",
        "print(hourly_mean[[\"hour\", \"n\"]].to_string(index=False))"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "60ekbrC3TiSF",
        "outputId": "55ed25ed-f0c0-49ec-925a-95b0b4ab70f2"
      },
      "execution_count": 38,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Humidex-NaNs nach Berechnung (rh<=0 oder rh>100): 2\n",
            "Kühlste Tagesstunde : 06:00 Uhr  (Ø Humidex 17.8)\n",
            "Wärmste Tagesstunde : 16:00 Uhr  (Ø Humidex 28.2)\n",
            "\n",
            "Datengrundlage: 48,998 valide Messwerte, 6 Stationen, Sommer 2025 (Jul–Aug)\n",
            "\n",
            "Messwerte pro Stunde (n) – Übersicht:\n",
            " hour    n\n",
            "    0 2085\n",
            "    1 2050\n",
            "    2 2056\n",
            "    3 2070\n",
            "    4 2063\n",
            "    5 2054\n",
            "    6 2022\n",
            "    7 2051\n",
            "    8 2028\n",
            "    9 2048\n",
            "   10 2021\n",
            "   11 1998\n",
            "   12 2025\n",
            "   13 2022\n",
            "   14 2023\n",
            "   15 2008\n",
            "   16 2047\n",
            "   17 2036\n",
            "   18 2020\n",
            "   19 2052\n",
            "   20 2044\n",
            "   21 2057\n",
            "   22 2058\n",
            "   23 2058\n"
          ]
        }
      ]
    },
    {
      "cell_type": "code",
      "source": [
        "import matplotlib.pyplot as plt\n",
        "\n",
        "fig, ax = plt.subplots(figsize=(12, 5))\n",
        "\n",
        "# Konfidenzband ±1 Std.-Abw. zeigt die Streuung zwischen Stationen und Tagen\n",
        "# alpha=0.15 damit die Kurve im Vordergrund klar lesbar bleibt\n",
        "# fillna(0): falls eine Stunde nur 1 Messwert hat, ist std=NaN → fill_between\n",
        "# würde Warnung werfen; 0 ist korrekt (kein Band bei n=1)\n",
        "ax.fill_between(\n",
        "    hourly_mean[\"hour\"],\n",
        "    hourly_mean[\"humidex_mean\"] - hourly_mean[\"humidex_std\"].fillna(0),\n",
        "    hourly_mean[\"humidex_mean\"] + hourly_mean[\"humidex_std\"].fillna(0),\n",
        "    alpha=0.15, color=\"steelblue\", label=\"±1 Std.-Abw.\"\n",
        ")\n",
        "\n",
        "# Mittlerer Humidex-Verlauf als Hauptkurve\n",
        "# marker=\"o\" macht einzelne Stundenwerte sichtbar (24 Punkte)\n",
        "ax.plot(\n",
        "    hourly_mean[\"hour\"],\n",
        "    hourly_mean[\"humidex_mean\"],\n",
        "    color=\"steelblue\", linewidth=2.5, marker=\"o\", markersize=4,\n",
        "    label=f\"Ø Humidex ({n_stations} Stationen)\"\n",
        ")\n",
        "\n",
        "# Kühlste Stunde als vertikale Linie + Annotation\n",
        "# xytext x-Position: min(cool_h+1.2, 20) verhindert dass Text bei späten Stunden\n",
        "# (z.B. 22/23 Uhr) aus dem Plotbereich läuft\n",
        "cool_h = int(coolest_hour[\"hour\"])\n",
        "cool_v = coolest_hour[\"humidex_mean\"]\n",
        "ax.axvline(cool_h, color=\"green\", linestyle=\"--\", linewidth=1.5, alpha=0.8)\n",
        "ax.annotate(\n",
        "    f\"Kühlste Zeit\\n{cool_h:02d}:00 Uhr\\nHumidex {cool_v:.1f}\",\n",
        "    xy=(cool_h, cool_v),\n",
        "    xytext=(min(cool_h + 1.2, 20), cool_v + 1.5),\n",
        "    fontsize=9, color=\"green\",\n",
        "    arrowprops=dict(arrowstyle=\"->\", color=\"green\", lw=1.2)\n",
        ")\n",
        "\n",
        "# Humidex-Referenzlinien als Kontext für den Leser\n",
        "# Hinweis: diese Schwellen stammen aus der Humidex-Skala (Environment Canada),\n",
        "# nicht aus unserer Ampellogik (die auf relativem Comfort Score basiert)\n",
        "# x-Position der Labels an max(hour) gekoppelt → robust falls Stundenbereich\n",
        "# sich ändert (z.B. nur Tagesstunden analysiert)\n",
        "x_max = hourly_mean[\"hour\"].max()\n",
        "ax.axhline(27, color=\"orange\", linestyle=\":\", linewidth=1, alpha=0.7)\n",
        "ax.axhline(35, color=\"red\",    linestyle=\":\", linewidth=1, alpha=0.7)\n",
        "ax.text(x_max - 0.3, 27.3, \"Gewisse Belastung (27)\", fontsize=7.5, color=\"orange\", ha=\"right\")\n",
        "ax.text(x_max - 0.3, 35.3, \"Starke Belastung (35)\",  fontsize=7.5, color=\"red\",    ha=\"right\")\n",
        "\n",
        "# set_xticks(range(0,24)) erzwingt alle 24 Stunden auf der x-Achse\n",
        "# ohne dies würden nur die im Datensatz vorhandenen Stunden erscheinen\n",
        "# Achsenbeschriftung \"Europe/Zurich\" statt \"UTC+2\": UTC+2 gilt nur im Sommer (CEST),\n",
        "# Europe/Zurich ist die korrekte IANA-Zeitzone inkl. DST-Handling\n",
        "ax.set_xlabel(\"Tageszeit (Lokalzeit Bern, Europe/Zurich)\", fontsize=11)\n",
        "ax.set_ylabel(\"Ø Humidex\", fontsize=11)\n",
        "ax.set_title(\n",
        "    \"Humidex-Tagesverlauf – Sommer 2025 (Jul–Aug)\\n\"\n",
        "    f\"Mittel über {n_stations} geografisch diversifizierte Stationen in Bern\",\n",
        "    fontsize=12, fontweight=\"bold\"\n",
        ")\n",
        "ax.set_xticks(range(0, 24))\n",
        "ax.set_xticklabels([f\"{h:02d}:00\" for h in range(24)], rotation=45, ha=\"right\", fontsize=8)\n",
        "ax.legend(fontsize=9)\n",
        "ax.grid(True, alpha=0.3)\n",
        "plt.tight_layout()\n",
        "plt.show()\n",
        "\n",
        "# Abschliessende Empfehlung als klare Aussage\n",
        "# Hinweis: Im Produkt würde diese Information als einfacher Badge/Satz erscheinen\n",
        "# (\"Empfehlung: 06:00–08:00 Uhr – historisch kühlste Zeit\") – die Grafik dient\n",
        "# im PoC als methodische Untermauerung dieser Aussage, nicht als direkte UI\n",
        "print(f\"\\n Empfehlung: Outdoor-Training idealerweise um {cool_h:02d}:00 Uhr \"\n",
        "      f\"(niedrigster Ø Humidex im Sommer 2025)\")"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 541
        },
        "id": "rUC1XmnDZSBe",
        "outputId": "2bc0cefb-13bd-4b2f-dde4-f4727ff70c19"
      },
      "execution_count": 39,
      "outputs": [
        {
          "output_type": "display_data",
          "data": {
            "text/plain": [
              "<Figure size 1200x500 with 1 Axes>"
            ],
            "image/png": "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v6lQKKSefvpp47PYp08ftWPHjhJxb9iwQd16662qQYMGymazqUaNGqm77rpL7dq1K6pc5PVp0qRJ6tlnn1XNmjVTZrM56hw41M8//6yys7OjlmVlZSmr1WrU9+OPPyqllNq7d6/xeU5OTlYej0cppZTH41HJyckKUBaLRe3bt08ppdQff/xRIk6v16vq169v1P3ZZ58Z6yZPnlzmdaiifD6fcjqdClDXXXddifVlXV8qer4rpaLO+SM5x7/++mtj+2uvvdaIN/z5jRT5vkb+v3LoORZp5cqV6txzz1UOh0O1atVKvfHGG1Ft+9RTT0WVX79+vbHumWeeqfTxCCGEOHKSlBJCCFFhxzsplZKSomrXrh31Jd9kMqnHH3+8xJf/xMRElZOTc9i6R4wYUWLbcDKjtC+DTzzxRJkJhx49ekQlmfr162es+/zzz5Xf71ft2rVTgLLZbOq///1vhdq5rC+Na9asKTMWQE2dOtUo6/f71bnnnluizFlnnVXql0+/36969+5dZt2jRo0yyv7111/K5XKVWXbz5s1KKaX69OljLPvf//5nbL9gwQJj+UMPPWQsHzhwYJl13nLLLWW2UatWrUocU1nvf9u2bcvcx0UXXRS1j4p+ST/eSanff/896tx95513SiQ+DjVq1KgyY2zQoIHatm2bUTay7Vq3bl2i/B133KFatmxZYvn7779v1BGZMGjZsqUymUwl9jls2LASdXTr1i0q7iVLliiHw1GhuCOvT5HnxKHnQEXVrVvX2H7Tpk1KKaXmzJlT5vly0UUXGetKSxJHOu+886KuFWGRiZMmTZoom82m6tSpo6655hr1888/VyjuH374wajj2WefLbG+JiSlhg4damy/YMECde211xqvf/jhh6iylU1KrVmzptRzJvLad2hSKhAIGNtcfvnllT4eIYQQR04mOhdCCHFEpk6dWmIS3lWrVh3TfeTl5dGmTRsWLlzIrbfeCoBSiueee45rrrmGzz//nO7duwNQWFjIxx9/XG59f/31FxMnTgTAbDYzduxYPv/8c7p06VLqHfd+/vlnnn32WQAaNmzIpEmTWLp0KVdeeSUAq1evZvz48Ub59957j9TUVABGjBjBk08+yaZNmwB9CFDkMLwj0aBBA8aNG8ecOXP46quvWLFiBVOnTqVu3boAPPfcc0bZyZMn88svvwD6EJ4PPviAmTNnkp+fX2rdr732Gl9//TUAF1xwAfPmzWP27Nm0bdsWgH//+9/GcKYvv/zSmMj7wQcf5Ouvv2b27Nk899xznHvuucbQsdtvv92of/bs2aU+D5eZPXs206ZNA6Bt27Z88sknLFq0yJgX6bPPPuOzzz4rNfb9+/fz6quvsnz5ckaPHl1uGw4fPpzp06ezZMkSVq5cycKFC7niiisAWLFiBT/88EO525emYcOGrF69mr59+xrLXn/9dVavXs0bb7xR6foOp02bNjRr1gyAgoICY8Ltpk2bMmTIENasWRNV/scff+Tf//43oA8l+89//sPChQu56KKLAH0uqnvvvbfUfe3bt4/33nuPDz74ALNZ/7Nx+vTpeDwePv3006h5rd59991S69i+fTuDBw9m8eLFxvDTffv28f777/PYY48xb9486tevD8D333/P77//DkBxcTGDBg3C5/NhtVp5/vnnWb58OaNGjTps3Nu2bWPAgAEsXryYadOmGXM8VdTq1avJzMwE9InBw5NwR14nwjGH1atXL+qYy7J9+3Z+/fVXABISEsoc5rl7924CgQBZWVksWLCAbt268eWXXx429j///NN4fsoppxy2/PEWCASYM2cOAImJiVx++eXceOONxvpPP/30qOp/+OGH8fl8AFx00UUsWrSIp59+mo0bN5a5jdVqNSaDD8/FJYQQ4viQOaWEEELUaNOmTaNNmzY0bNjQ+LISFxfH9OnTSUxMxOPx8N133wGwZcuWcutauHChMRH1DTfcwFNPPQVA9+7dadSoEcXFxVHlP/roI+P5kCFDjPlchg8fzuLFiwH9DmiPPPIIoCcnXn/9de644w7S0tIYN24cAJ06dWLMmDFGXTt37mTnzp1R+6pfv/5h58Bq0aIFDRo0YMKECWzcuJH8/PyoW5hv3ryZgoICkpKSmD9/vrH8mWee4a677gIgKSmJPn36lKh7xowZxvOHH36YOnXqADBgwACefPJJo8z5558fNXl3y5YtOeOMM4y5byKP89prryU+Ph63283s2bN57LHH8Pv9LFq0CIDTTz+dTp06ldj/iBEjaNKkCQB33XWXcSe5GTNmlDoJ8fjx4xk2bFi5bRd26aWX8txzz/Hdd9+xf/9+AoFA1PpffvmFrl27VqiuMIfDQffu3aOSEu3btzcSpmXZvHlzibu1gZ44Ovfcc8vczmazMX36dG666SYyMjKM5bt372bKlClMmTKF1157jQceeAAgKlk7YsQI/vnPfwLQpUsXmjRpgs/nY9myZeTk5FCrVq2ofT344ING244fP95IGD3//PPccsstKKV45ZVXKCwsLPPz17RpUyOp9ccff/B///d/APTo0YMXXngBgK+++oq33noL0D/HZ555JsuXLzcSQ5deeikXXnghAFdddRUzZ85kx44dLFu2jKysLON8DevWrVvUOVUZ27dvZ8CAAQCYTCZef/11IyHndruNcna7PWq7yNeR5SJlZ2dz7bXXEgwGAXjxxRdJSkqKquOqq67iqquuokWLFqSnp/PCCy+wefNm/H4/9957L5s3by43/qysLON5OEl+vISvxYdq1qyZkUhdtmwZubm5APTr1w+Hw8FVV12Fw+HA5/Mxa9Ysxo8fb7R5ZWRkZBhJWYfDwaxZs6hduzb9+vXjzz//LDfhFW6ryPYTQghR9SQpJYQQ4oj07du3RK+U+++/n/Xr1x+zfaSkpBiJmsgvy23btiUxMREg6stoXl5eufVt27bNeH7eeecZz5OTk2nbtq3ReyHsf//7n/H8hRdeML5AR/rrr7+iXt9+++189tlnfP755wBYLBamTp2K1Xrwv9wPP/ywxN2+Bg0adNjbvY8fP56HH3643DJ5eXkkJSVFHev5559vPO/SpUup20Ue680331xqmXAPjGuuuYYxY8aQnZ3NyJEjGTlyJKmpqZx//vnceeed3HTTTQDEx8dz7bXX8tFHH/Hf//6X7du38+effxrvU/iL/6H7DydTytr/oa666qpSlx8qLS2Nrl27UlBQUGaZw51Dx9Lzzz/P1KlTSyxv3rx5qT33Il144YX8/fffzJkzh0WLFvHdd9+RnZ1trH/00UcZOHAgKSkpUW0beS7UqVOHVq1a8eeff6KUYsuWLXTu3DlqP5GvIz+D4aSZyWSiVq1aFBYWltl255xzjpFgKK2OcCxh4Xoi4/7iiy/44osvStStlOKvv/4qkQDs169fqbEczp9//smll15Keno6oPcgjDy/IifRD/fGCfP7/aWWC9u7dy+XXnqpkdh7+OGHue+++6LK3Hbbbdx2221Ryy688EJat24N6Am7zZs3V/gmDpFJ6+OhrF5fTz31lNGrLvKue+EeUklJSVx22WUsWrSIvXv3snLlyiOaoD3yute6dWtq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WXUcTuR2ZT0i22Hnzp1R50Dko1mzZmr37t2lHu/hPleHtmVp596aNWsqdEw33HCDAlRqaqoKBAJR68q6vlTmfC/relyevLw84720Wq0qNze3RJkJEyYY9d5+++1KKf1a1qxZsxKxha+3h55ja9asUXa7vUT5yGtf5LmnVPS1ddOmTRU6HiGEEMeGDN8TQghR5S677DImTJhAkyZNcDgcdO7cmWXLllXLL9JvvPEGTzzxBA0bNsTpdNKtWze+/vrrMocuPfPMM3z++ef06dOH2rVrY7PZaNy4Md27d2fcuHHGhOVPPvmkMXfU//3f/xnzPL3zzjvGpOwjRoyIultaZT300EM899xzNG/enLi4OHr16sU333xj3Pkuks1mY+nSpdxxxx0kJSWRlJRE//79jVuxg34XwzC73c7SpUt5/fXX6dy5M4mJiTidTlq2bMmVV17JpEmTuO666wB9PqYHH3yQTp06UadOHSwWC8nJyfTo0YPPPvuMW2+9NSqWzp07Rw3F6tu3b9QExGFTp05l2rRp9OzZk+TkZOx2O82aNaN37968/vrrpQ6nqoxmzZqxfPlyOnfujMvlonXr1kycOJGhQ4eWWn7o0KE89thj1KtXD5fLxcUXX8zq1asP21OlqjVv3py5c+dy9913c/bZZ1OvXj2sVispKSn06tWLjz76qESPspdeeomZM2fSs2dPkpKSsNlstGjRghEjRvDf//63xBxINcUVV1zBL7/8wh133EGTJk2w2WzUqVOHs88+m4cffvioex8eiaZNm/Lzzz9z991307hxY+OacPfdd/PTTz/RuHHjI677ww8/5B//+AdnnHEGKSkp2Gw2mjdvzl133cX69eu54IILKlTPkCFDAH2epBUrVkStKywsNJ6H5yCDqj/f582bZ/RG6tGjBykpKSXKRE4qv2DBArxeLzabjfnz59OlSxfsdjtNmjTh6aefNnr/HeqCCy5g2bJlnHvuudjtdlq0aMGECRO48847jTKR1z44OOT43HPP5cwzzzzaQxVCCFEJJqXkVhNCCCHEiUgpVWJunaVLl9K3b18Arr76amPInBDixKFpGh06dOD333/n5ptv5rPPPgP0Oasi7zy6Z88eGjZsWF1hVonSrnsAt956q9EOc+fONZLsv//+O+3atQPgs88+K/Puo0IIIaqG9JQSQgghTlCDBg3ijTfeYP369aSlpTFv3jyGDx9urL/llluqMTohRFUxm81Gb7k5c+awatUqhg0bxmWXXWaU6dix4wmXkAL9Tod9+/ZlwYIFbNu2jT/++IOnn37amFOqVq1aXHLJJUb5CRMmAPq8YTfddFN1hCyEECc16SklhBBCnKB69erFqlWrSl13yy238Mknn1T6LmVCiNgzf/58o2cQ6BPhf/nll/To0aMao6oaO3bsKHM4qt1u57PPPuPaa689vkEJIYQok/SUEkIIIU5Q/fv3p1u3btSpUwer1Upqaiq9evViypQpkpAS4iRjsVho2LAht9xyCz/++OMJmZACvSfU0KFDOe2000hISMBut9O8eXMGDhzIzz//LAkpIYSoYaSnlBBCCCGEEEIIIYQ47qSnlBBCCCGEEEIIIYQ47iQpJYQQQgghhBBCCCGOO0lKCSFEjNixYwcmkwmTyUSvXr1iKoYWLVoY8xcNHjwYk8nEypUrS5QL192iRYtjE7CocQoKCrjvvvto3rw5FosFk8nEyJEjWblypfH+Dx48uMr2Hz4Xq2I+rbI+H2PHjjWWT5ky5Zjvt6qUF/fPP//MxRdfTK1atYwy69evNz7fZX3GyzNlyhRj27Fjxx6z4xDRqvIzUFPUhP8vhRBCVIy1ugMQQoiTxdixY3n66aeN15deeinLly+PKrNu3TrOPffcqGUejwen01lmvXl5ecYtrVu0aFHiC/3h1ouK2bRpE+PGjWPFihVkZWWRnJxM27ZtGTRoEEOHDq3u8GLGqFGjePfdd6s7DHEUCgoK6NevHxkZGdUdyhGZMmUKO3bsAGDkyJGkpKRUyX6WLFnC+PHjWbduHUVFRaSkpNCwYUM6duzIrbfeSp8+fYyy8+fPZ/369YCeuD+axPzKlSuNhOC1117L2WeffeQHIUrVokUL0tLSopY5nU4aNmxI9+7deeyxxzj99NOrKTohhIgtkpQSQohq8vXXX5OWlkbz5s2NZe+//36Z5Rs2bMjq1asBSE5ONpbn5eUZya6ePXuWmpQqb/3xMHv2bLxeLwBjxoxh6NChtG/f/rjHcaTmzp1L//798fv9xrLMzEwyMzNxOBySlKqEzz//HACbzcaMGTNo1KgRjRs3platWsb5Xb9+/eoM8Zi78847ueSSSwA49dRTqzmaiisr7p9++slISHXp0oXnn38em81GmzZtjM83UOnP+BVXXGGcA82aNTsWh1CqKVOmsGrVKkBPAFVFUmrq1KklrrXha8Zvv/2G1WotkZSaOnUqAL169TrqpFT4mt+iRYsSSanI6/GJqqz/L6uS1+tl+/btbN++3UgytmrV6rjsWwghYpkkpYQQoppomsakSZN45plnAHC73Xz88cdllnc4HHTv3v14hXdMRfb+atOmDW3atKnGaKK53W7i4+PLXL9t2zbuuOMO/H4/LpeL+++/nx49emAymfjf//5HQUHBcYy25jhcu5Vlz549gP6l8eabb45aF6vn9+E0a9asSpMsFeX3+zGbzVitFfvzr6y4w+8h6D0+L7roIuP10Xy+69WrR7169Y5o24ooLi4mLi6uyuqPNGbMGADMZjNjxoyhR48euN1utmzZwrJlyzCbq28GjUN7456Ijuf/l6+//jodO3Zk7969jBw5kj179lBYWMi0adOO+TDUI73uCiFEjaaEEEIcF0899ZQCFKASExMVoJo0aaJCoZBSSqlJkyZFrQs/PB6PUkqp7du3G8t69uyplFJq0KBBUWUjHz179jzs+rDCwkL11FNPqTPPPFM5nU6VmJioevbsqZYsWRJ1DKXFUJ7mzZsb5SNFxrVixQpjeXhZ8+bN1fbt29XVV1+tEhISVO3atdW9996rioqKSuxj/vz5qnfv3iolJUXZ7XZ16qmnqrFjx6ri4uKocj179jTqX7dunRoyZIiqXbt2idgOde+99xrbTZ8+/bDHXJYNGzaoXr16KZfLpRo3bqzGjh2rvvzyS6PuQYMGRZXPyMhQDz30kDrllFOU3W5XKSkp6oorrlBr1qwpUbemaerdd99V559/vkpISFAOh0O1bdtWPfbYYyovL69E+VmzZqkzzzxTORwOdeaZZ6rPPvss6vycPHmyUTbyPUxLS1PXX3+9SkpKUi1atFBKKbVq1Sp14403qlNOOUUlJycrm82mGjZsqG666Sa1YcMGo57I+g99TJ48Wa1YsaLUtsjKylJ33323atasmbLZbCohIUG1adNG3XrrrWrlypVRx7Vz5041YsQI1bp1a+VwOFRKSoq64IIL1Kefflrq8WRmZqpBgwaplJQUlZCQoG6++WaVnZ1dofdz27Zt6qqrrlJxcXGqbt266oEHHlC///57qZ+P0tq2ffv2ClAWi0VlZmZG1X3ppZca5X///Xdj+bfffquuuuoqVadOHWWz2VSLFi3UQw89pHJycqK2j/x8LVmyRD388MOqQYMGymQyqe3bt6tQKKSee+454/PucDhU06ZN1RVXXKE++OCDcuOObL9DH4fuO/zZnjx5cpnbAOqpp54qUS68LLK9hw4dqpo1a6bsdruqW7euuvnmm9Uff/wRVe7QOt5++2116qmnKqvVetg4tm/fbtRT0etKafbt22fU2alTp1LLuN1upVT0NbW0R7gNX3zxRdWzZ0/VuHFj5XQ6lcvlUqeffroaM2aMUZdSqty6SnsPI1XmOhJ5Pd2wYYO67777VN26dZXT6VR9+vRRO3bsKHHMR3L+Llu2TD3xxBOqcePGyuFwqK5du6r169cf9j0o6/+qyHP6ww8/VOPHj1etW7dWdrtddejQQX399deHrfvQNoz8P+xf//qXsfzuu++O2sbv96tXXnlFderUScXFxam4uDjVuXPnUv9fify/8LffflOXXHKJio+PN47lSNpfCCFqKklKCSHEcRL5x/DgwYOVzWZTgFq8eLFSSqnzzz9fAeof//jHcU1K5eXlGV+QS3u89dZbxjEcr6RUrVq1VJMmTUrE0qdPn6h6nnjiiTLj7tGjh/L5fEbZyD/iW7VqVeLLdFmaNm2qAGW329Wzzz6r2rRpoxwOh2rTpo3697//bSQVy7Nt2zaVkpJSIsazzjrLeB6ZiElLSyv1+AFls9nUggULjLKapqlbb721zHY47bTTor70zZkzR5lMpnJjKSspFdluzZs3V0rpX5bL2ndcXJyRNDjSpNTFF19c5nZjxowxyv3666+qVq1apZaLrC/yeE4//fQSZQcMGHDY9zM7O9s4LyIfHTp0OOwX4XDbjhs3zlj23nvvRdVttVoVoDp27Ggsf//995XZbC71+Nq2bRv1Hkd+vg4917dv366eeeaZMtu0W7du5cZdHUmpdevWlfr5AVRCQoL68ccfjbKRdRx67BVNSlXmulKaoqIi4zNmtVrVv//9b7V58+ZSy1Y0KdW2bdsyy1x00UVGfeXVVV5SqrLXkfKup4eeR0odu/MXUC1atFCBQKDc96AiSanS6k5MTCyRJCtNaUmpffv2qfPOO89Y/sYbbxjl/X6/6t27d5ntO2rUqKj6w8uTk5ONH08ij6Wy7S+EEDWZ3H1PCCGqQf369enXrx8AH3zwARs3buTHH38EqNT8RGPGjGHWrFnG67PPPpvVq1ezevVq3njjjcOuD9exceNGQJ/TZfHixUybNo0GDRoA8NBDD7Fr166jO+BKysnJoX79+syfP5833njDGHKzdOlSFi1aBOh3/3r22WcBfSjYpEmTWLp0KVdeeSUAq1evZvz48aXWv3PnTp566imWLVtWZhmAoqIi49j9fj9PPPEEmzdvxufzsXnzZkaNGsXdd9992OMZM2YMeXl5AHTo0IF58+bx2muv8b///a/U8vfeey+7d+8GYODAgSxdupS3336bhIQEAoEAd955J263G4CZM2fy6aefApCamsp7773HvHnz6NChAwB//fUXo0ePBiAUCjFy5EiUUgDcdNNNLF68mAceeIANGzYc9jj279/Pq6++yvLly406O3fuzBtvvMHChQtZsWIFX375JS+99BKgD5cKt++dd95pzPEC0KBBA+NcvOKKK0rdX2FhIStWrACgY8eOLFy4kC+++IJ33nmHG264wRjGopRi4MCB5OTkANCuXTumT5/O4sWLefLJJ6ldu3ap9efl5TFjxgwmTpyI3W4H4NNPPyU/P7/cdnj55ZeN86JFixZ89tlnTJkyJWpY2+Hcdtttxt3PZs+ebSyfP38+wWAQgNtvvx2A9PR07rvvPjRNIzExkTfeeINly5YxZMgQAP7++2/j/TjUtm3beOCBB1i6dCnvvvsuiYmJLFiwAICUlBRmzJjBV199xbRp0xg+fDgNGzYsN+7Zs2dH7WvIkCHG+1iW8FxR4ce0adOw2WyAPrdY7969y9xWKcWgQYOMz88///lPli9fzksvvYTFYqGoqIghQ4YY5/Shx3755Zczf/58Zs6cScuWLVm9enXUHEuzZs0y4mrYsOFRXVfC4uPjueCCCwAIBoOMGjWKNm3aUK9ePW655RaWLl1qlA3PfdS3b19j2euvv27E1LFjRwCGDx/O9OnTWbJkCStXrmThwoXG52bFihX88MMPRnzh8wJg9OjRh/2cQeWuI4fKzMzknXfeYcaMGcb8XN9//z2///47cHTn765du3jppZeYO3cuTZs2BfQ76y1btqzMY6mobdu28cgjj7Bw4ULOOussQL/mlDeMvjQXXXQRJpOJBg0a8PPPPwNwySWXcNdddxllXnvtNb7++msALrjgAubNm8fs2bNp27YtAP/+97+NvwEi5efnY7FYeO+991i2bFmpfx8c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KVP0sps36224dq3ehgsW4Hv44YNtOG4cRe+9p7f3jh16G65erdf1xRfR7f3qq7jfekt/vXu3Xvabb/SyX32lt+GePXp7v/EG7gkTjG39I0aQt3Sp3t6rVultmJZGRkYGzJiB50B7Z2Rk4B85kvxFi/Q2/OEHvezmzXp7f/ghnuefj27vuXP1Nvz5Z729//xTb+/p0/E+9dTBNhwzhoJPPtHLbtigt+GGDQfbe8yYg2WfeorC6dP1NvzzT73szz+TkZFBcOlS/KNGHTxnn3+eog8/1Nsw3N4//KC396JF+EeOPNiG//43Re++q5dNS9PbcNUqvQ2XLtXb8EBZ94QJuN94Q3+9Z4/ehl99pbfhN9/oZXfv1su+9RbFr756sA3vv5+8L77Q4/v5Z4L33Ufmjh16G773HsXjxh1sw4cfJn/BAr29167V2/BAexdOmYLn2WcPln3kEQrmzNHbcN06veymTXrZjz7C++STB9vw8ccPtvfGjXobrl+vt/fMmfgee6zMa4Rr9OiYuEbs37+ftD1p2MeMJi9GrhEZGRnYXnuNohi6RrjffRdL+H2MgWtEwdy5OCLex5p+jchdvRrX6NExdY0I3ncfngOfhZp8jQjvJ/DggwQO1BsL1wjv88+jzZoVM9eIonffxfOf/5CXlxcT14j8uXPxjxplxBsL1wj/iBFk7thBXl4e7vffr/HXiPB3jby8PArmz6/x1wj//feTv3gxeXl55MbANcLz7LPGd43CnTsJ3ndflVwjPA89RMa335Kenk7GqlUUjh1L+s6dpKenkztlCrmTJpGenk56ejqFY8eS8fXXpKens//77ykcO5Y927aRnp5Ozkcfkfvuu+zZs4ecnByKnn+ezGXL9LJr1+pl//5bL/vpp+S9+aZRb8GLL5K5eDHp6ens++UXCseOZe8ff5Cenk72nDnkT5hglM1/5RWy5s/Xy27YQOHYsezbsIH09HSy5s8n/5VXDpadMIHsOXNIT09n7x9/6GV/+YX09HQyFy+m4MUXjXjzJ04k59NPSU9PZ8/ff1M4diz7167Vyy5bRuFzzxn15r77LjkffaSX3bZNL/v993obfv213obhspMmkTtliv565069DVet0tvl22/1smlpetmpU8n94IOD7f300wfb+4cf9DbcupU9e/bgX7SI/HfeOdiGzz9P5tKletmfftLb8EB7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9O7dm+eeew6AESNG8Ndff/Hll19iPmQytEAgwNKlS3nmmWeMZV988QU7d+5k5cqVWK16eqRjx45ltsXatWu55ppraNmyJQD16tXjzjvvBGD+/Pm88MILaJpGQkICAEVFRSxfvpzRo0ezefNm4uLiuO6663jllVdwuVzcdNNN7Ny5k/79+2OxWBgwYABvvvkmZrOZX3/9lbPPPhulFK+++ioTJ04kNzeXzp07M3HiRFq1agXoPa3uvfde5s6dy++//06nTp2YMWMGTZs2BSAjI4OHHnqIb775BpPJxM0338xLL72Ew+Fg5cqVXHvttfznP//h6aefpri4mLvuuot///vfxjH37t2bYcOGUVhYSGJiYoXOmco4Oa4cQghxknBYHbzb713+0/M/OKyO6g5HCCGOGX9QI//AcLyt+/TheDsPDMdTSh+OV0uG4wlR5WxWM8lxdhJdNnyBEDuzitixv4DMfA/egMw7VR3+97//sWPHDm699VZAH2J2xx13MHr0aIYNG8aqVavQNK1KY/jkk094/fXXycnJITExkZ49e1KrVi327t3L008/zbBhwwgEAiW2y83N5eqrr+a+++4jLy+PIUOGMGPGDGN9cXExvXv3pnfv3qSnp7N69Wo+/fRTJk+ejNVq5eOPP2bixImsXLmSBQsWMGvWLGbMmFEiIQWwefNmiouLadu2rbFs1apVnHLKKdxxxx3Url2bM888k6lTp5Z5nN26deOtt95iwoQJ/PLLLwSDB4ezXnvttYwePZp+/fpRVFREUVERAC6Xi/fff5+cnBy+//57VqxYwauvvgrArFmzaNasGZ988glFRUW88847JfY5ffp0Xn31VebPn8+ePXs488wzueqqq6L2PWPGDD755BMyMzOJj4/niSeeAPSE5dVXX02DBg3YunUrGzduZMOGDUYSD/Shgn/88QebN2/mu+++46233mLlypXG+qZNm+J0Otm0aVOZ7XI05H9rIYQQQghRI4U0jYJiP+k5RWTkFbMz2y1JKCFqCIvZRILTRmq8HUywN7eY7fsL2JNThNsbMHrRiKqXk5MDQOPGjQG45557uO666+jRowdJSUn4/X72799f5vYDBgwgJSXFeHTo0KHSMdx+++2ceeaZOBwOrrvuOtxuNw888ABWq5X+/fuTnZ1NWlpaie0+//xzGjVqxN13343VauWqq67i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bJmZt+yZLbPZ8gLmy8y8Zc9smZm37Jkts9nyliQpKemY55h7kiIREREREREREZkSi1JERERERERERFTuWJQyGYfDgdGjR8PhcEQ7ynExW17AfJmZt+yZLTPzlj2zZWbesme2zMxb9syW2Wx5AfNlZt6yZ7bMzFv2zJbZbHlPh7NioXMiIiIiIiIiIootHClFRERERERERETljkUpIiIiIiIiIiIqdyxKERERERERERFRuWNRioiIiIiIiIiIyh2LUkREREREREREVO5YlIphZtsYkXnLntkymy0vYL7MzFv2zJbZDHnNkLEw5i17ZststryA+TIzb9kzW2az5T2a2fKbLS8A6Loe7QgnxIxtXBas0Q5AR/z000/Yu3cvqlWrhsaNG8PpdELXdahqbNYOzZZ37dq12LZtG5KTk9GpUye43e6YzguwjcuD2drYbHnN2CfMltlseQFAUZSI2yJS5FgsMVteXddhsViM27GeF2AblweztbHZ8pqxT5gts9nymu312Wx5AeDLL7/Er7/+CofDgX79+qFChQrRjlQqM7ZxeVCE5bmYMH/+fDz00ENo3LgxLBYLAoEA3n77bVSoUCEmO6rZ8i5YsACjRo3CBRdcgKysLGzevBkrVqxAxYoVYzIvwDYuD2ZrY7PlNWOfMFtms+UFgJUrV+KTTz5Bw4YNUbt2bXTv3h1A7L65MFvezz77DG+99Rbq16+P6tWrY/DgwQBiNy/ANi4PZmtjs+U1Y58wW2az5TXb67PZ8gLAwoULMWLECPTp0wd//fUXvv76ayxZsgStWrWKdrRimbGNy41Q1GVmZsoll1wiP/30k4iIbN68WQYNGiTnnnuuHD58WEREdF2PYsJIZsvr9XqlV69esnr1ahER8fv9cvvtt0ulSpVk//79IhJbeUXYxuXBbG1strxm7BNmy2y2vCIiS5culapVq8rTTz8t99xzj3To0EEee+wx4+vMe2qWL18uNWrUkGnTpslzzz0n9evXlzvuuMP4eqzlFWEblweztbHZ8pqxT5gts9nymu312Wx5RUQ0TZMbbrhBPvroI+PYqFGjpFGjRvLLL78Y58QKM7ZxeWJRKgZkZmZKy5YtZfny5caxnJwcGTRokFx99dXi9XqjmK4os+X1eDzSvn17ef/99yOO33777dKmTRvJy8uLUrKSsY3Lntna2Gx5zdgnzJbZbHk1TZNRo0bJu+++KyKh/vvNN99I48aNZfTo0dENVwyz5RUReeaZZ+SVV14xbu/cuVMqVaokd955ZxRTlYxtXPbM1sZmyytivj4hYr7MZstrttdns+XVdV0CgYD07NlTpk2bFvG1kSNHSrVq1SQzMzNK6YpntjYub2fxGLHYkZSUhOuvvx6LFy/G9u3bAQButxvDhw+Hpmn4+++/o5wwktnyulwuDBo0CLNnz8Yvv/xiHJ88eTJq1qyJH3/8MYrpisc2Lntma2Oz5TVjnzBbZrPklYJVAlRVRTAYxJw5c6BpGuLj49GhQwe8/vrrWLFiBVauXBnlpCFmzQsAHo8Hs2bNgqZpAIDq1atj3bp1WLFiBd59991oRSyCbVz2zNrGZssLmK9PAObIbLa8hZnl9TnMbHkVRYHVasUtt9yCl19+GatWrTK+9vTTT6N9+/ZYtmxZFBMWZbY2Lm8sSkXJunXr8MEHH2Dt2rXIzs5Gr169cPDgQbz//vv466+/oCgKmjVrBo/Hg927d0c7runyfv3113j55Zcxd+5c7Nu3D9dffz3q1KmDV155xXgiiI+Ph6qqyMjIiHLaELZx2TNbG5strxn7hNkymy0vELkTzuDBg5GQkIA5c+YYx5s1a4aGDRti165d0YoYwWx5A4GA8b/vu+8+1KxZExMnTkQwGAQA1KhRAzfffDP2798frYhFsI3Lntna2Gx5zdgnzJbZbHnN9vpstrxAaK25p556CpMnT8b27dtx7bXX4vrrr8fEiRMjClMVKlRAbm5uFJOGmLGNo4VFqSj46KOPcMMNN2D+/Pl45plncM011yA9PR133nknNm3ahIkTJ2LRokWYM2cO9uzZg/r16zPvCfj4448xePBgbNiwAfPnz0fHjh2RkZGBYcOGwel0YtSoUXjrrbcwa9Ys/PHHHzGxGB7buOyZrY3NlteMfcJsmc2WFwA+//xz3HnnnZg4cSLmzZuHxo0bo0WLFli2bBnef/99aJqGxMREJCcnY/PmzQCiuz2y2fIuX74c/fv3x0MPPYTJkyfD7Xbjuuuuw8aNGyPevPl8PmzevBkSWrYhankBtnF5MFsbmy2vGfuE2TKbLa/ZXp/NlhcAFi1ahLvuuguBQACbNm1CmzZtsHr1atx888248MILcccdd2DKlCl4/vnn8e233+Kiiy6Kal4ztnFUldtEQRKR0Nz4Hj16yPfffy8iIjt27JBhw4ZJs2bN5MCBA/Lnn3/Ks88+Kx07dpQePXoYixoz7/Hx+/3Sr18/WblypYiE5hw/9NBDkpSUJH/99Zfk5+fLzJkzpVu3bnL99dfL+vXro5pXhG1cHszWxmbLa8Y+YbbMZssrIvLZZ59JlSpVZOrUqfLggw/KRRddJKNGjRKR0PogN954o3Tt2lUmTJgg1atXlz/++IN5T8DKlSulWrVq8uabb8prr70mzZs3lxtvvFFERObPny99+/aV1q1by+jRo6VWrVry+++/RzWvCNu4PJitjc2W14x9wmyZzZbXbK/PZssb9t///lc++OAD4/YzzzwjdevWla+//lpERBYsWCADBgyQ22+/XX799ddoxRQR87ZxNLEoVc48Ho+0a9fOWMBRRMTn88nw4cOle/fukpWVJSIieXl5kp+fH62YBrPl9fv90qlTJ3nhhRcijj/88MPSuHFj2bdvn3FeIBCIRsQi2MZlz2xtbLa8ZuwTZststry6rsvjjz8u06dPF5FQn/7tt9+kVatWxhvOHTt2yOOPPy7jxo2T3377LZpxTZdXROSVV16RZ5991ridm5srDRo0MN68BYNBef755+W1116L+ps2EbZxeTBbG5str4j5+oSI+TKbLa/ZXp/Nllck9FzRt29fGTNmTMTxZ555RipUqCB//fWXcV4sMGMbRxuLUlEwffp0ufPOO40XV13XZfPmzdKrVy9jC8tYYra8CxYskCuvvNLYclPXdfF6vdK3b19ZtmxZlNMVj21c9szWxmbLa8Y+YbbMZss7fvx46dy5s+Tk5BjHNmzYIJ06dZKFCxcax2LlItJseadNmybNmjWL2GEoJydHWrVqJS+++GIUk5WMbVz2zNbGZstrxj5htsxmyytivtdns+UVEVm9erU0b95cFixYICJHnhMGDhwor7/+ejSjFcuMbRxNXFMqCtq0aQOv14s5c+Zg48aNUBQFDRo0iMkdtADz5JWCueRt2rRB8+bNMXPmTKxevRqKosDhcEBVVezbty/KKYvHNi57ZmnjMLPkNWOfMFtms+UNu+aaa1C7dm188MEHyM/PBwDUqVMH55xzTkQfVhQlWhEjmC3vgAEDcP7552PSpEnIyckBEFowdcCAAcjMzIxuuBKwjcue2drYbHnN2CfMltlMec32+my2vMCRzO3atcNtt92G6dOn4+OPPzaeE5xOJ7KysqIZMYIZ2zgWsChVTsJbmPp8Ppx33nm46aabsGfPHkyePBlvvPEGZs+ejW3btqFFixZRThoSfkCZJa+maVAUBXl5eahUqRJuvPFGVKlSBU8++SQmTZqE119/Hb/88gs6duwY7agGs/UJXddN18Zm68fhXYbMktesjzszZTZbXuDI465u3bpo0aIFVq9ejXfffRe5ublwu91ISUnBtm3bor4wbZhZ87pcLvTq1Qt79uzB+PHjjTdreXl52Lx5MzRNi4m8ANu4PJi1jc2W14x9wiyZzZbXjK/PZssbbuOsrCzk5ubihhtuwJVXXomHH34YDz/8MJ555hmsWrUK3bt3j3ZUAObsEzGjbAdind08Ho/4/X7jdnZ2ttx9992ybds2ERFZv369zJw5Uy699FK57rrrYm6Rs6ysLBk6dGjM5vV6vRIMBo3bWVlZ8uCDDxqLPu/atUuWLl0qV111lQwePFh+/vnnaEU15ObmisfjMW4fPnw4ptv4r7/+kkOHDhm3c3JyYr6N//zzT9m5c6dxO9b78apVq2Tp0qXG7VjP+/HHH8vDDz9s3M7NzY35PrFnzx6jPUVCz8WxnPnotcI8Ho+MGDEiZvMWpmmaiIj8+++/snv3bgkEAvLss8/KrbfeKu3bt5cxY8ZI1apVZdOmTVFOGungwYOmyFu4fdetWye6rsv8+fNl8ODBUr9+fXnwwQelZs2asnHjxignPSKc2SxtHJ4SYoY2PnpKW6y3sc/ni7gd63kPHz4sIuZ+3Jklc/h6PiMjI6bzZmVlRUwr9Hq9pnl9FgldX8Ty9Y9I6LoyNzc34vbYsWPliy++EJHQOkzfffed3HHHHTJ8+PCoL2p++PBh+ffff43bZng/GotYlCojCxculM6dO8tVV10lo0aNMgoR4d20CvN6veL1ess7YoQff/xRduzYUeT4N998U+RYLOT99NNP5aqrrpIbbrhBJkyYYBwvbq2dQCBgvDhH09KlS6Vbt27Sq1cvGT16tHE8vGtEYbHQxr/++qtYrVaZMmWK7N271zhe3JNprLTx4sWLpUOHDsaCh2Gx2saffPKJtGzZUhYtWhRxPFbzLl++XGrUqCHVq1eXb7/91jhe3AVBrPSJRYsWybnnnitNmzaVAQMGGMdj9bliyZIlcumll8qVV14p9957r+zfv19EpNg3Z7GQV0Rk8+bNsn37djlw4ICIhN5cDB8+XD777DPj9s6dO+XFF1+UKVOmxMTCtGG6rkswGJRhw4bJ559/LiKxl3f79u2ye/duo319Pp9MnDjRWJMi/DvMmjVLZs+eHfXdyURCHw78+eefsmfPHhEJZY7lNl61apWsWrXKKJoEg8GYb+NvvvlGli5dKrqum6IfL1++XO6++27xeDymyLtw4UJJTU01/tZm6BM//PCDzJs3z3hN9vv9MZ35jz/+kC1bthivcyIikyZNkiVLlohI7OVdsGCBnH/++dKhQwe56667ZMOGDSISer47Wiy8Pn/77bfy5ZdfRgyQEInta7alS5dK165dpUuXLnLfffcZxwt/sBgWC3kXL14sF198sXTo0EH+97//Gcdj+b1SrGJRqgysXr1a6tevLwsXLpS1a9dKq1at5NZbb5UtW7ZEnPf3339LXl5elFIesXjxYlEURTp37ix///13iefFSt5FixZJixYt5J133pEPP/xQmjRpIh9//HGR8zZu3CgHDx6MQsKili5dKueee64sWLBA5s2bJ506dYpY1DMsVtpYJHRxk5aWJj179pTnn39edu3aVeScWGrjZcuWyXnnnScrVqwQkaKfIIdfCGKljf/8809p1aqVfPfddyISungsLles5A2379y5c+Wuu+4ydks6Wiz1ic8//1yaNWsmX3/9tezdu1fatWsnGRkZRc6LlcwrVqyQc845R5YtWyZbt26VOnXqSOfOnY1P28JiJa9I6Pm4bt260r9/f6lZs6Z89NFHIiLG81usLE4ctmTJEpkyZUqRERvhERGxlnfp0qXSunVr6devnzRp0kQ2b94sIqHRfrFq2bJl0qxZM7n11lulatWqxsjVcJ+NtTY+dOiQ8Vr3xRdfGH0jPBoiFt9ELFu2TBo1aiTr1q2LOB6rbbxo0SJp1KhRkQ9gwqMLYq2Nly1bJq1bt5YOHTrIpEmTjPYs7rotVixbtkwaNGgggwYNEkVRjEJJeLfeWOsTS5culcaNG8vgwYOlUqVK8sYbb4imaVH/8K0k69atk0aNGsnXX38t27Ztk2uuuUYGDhwon332WUT/jZXX52XLlomiKHLJJZcUW5gKi5W8IqH3o82bN5dPPvlEvv/+e6lYsaK89tprRc777rvvjA88oin8+rxixQr59ddf5ZxzzokosIbFUhvHMhalysD8+fMjqruHDx82huyFL3Z+/PFHueuuu6J+Ybl3717p3bu3vPfee9K/f3/p1q1bsYWpn376KSby7tixQ84991xZuXKliISqzrfddpu89dZbEef98ccf8sADD0QMp4yWLVu2SPPmzY3Ma9euldatW8v48ePlmWeeMc6LlT4R5vf7ZeTIkTJv3jy58MIL5a233pKVK1can7jFWhs7nU6ZNm2aiIjs3r1bnnjiCRk7dqxMnTrVOC+W2njTpk1y3XXXiUgof9++faV79+5y2223GW88f/rpJxkyZEjU8/7yyy9So0YNWbVqlYiEtmuuWrWq7N69O+K8zZs3x0yfEAl94hrekWXHjh1St25duemmm+T22283LthjqR8/++yzMmPGDOP23LlzpVatWnLbbbcZrx2xlPevv/6Shg0bGkPqZ8yYIa1bt5bp06dHDL3/7rvvoj4NR0Rk5cqV4nA4JC4uTp577rmIi/TCb9hiJe+yZcukSZMmsnr1ajl06JDce++9ctddd4mmaRFT19esWSNffvllFJMesWTJEmndurWsXLlSNE2TG264QTZt2mSMFg+3c6y0sUio0NClSxe5/PLLpU+fPsYHG4XfHH/zzTcx1catWrUyrinCH1qEXyfCfSMW2ljXdcnMzJQePXrIp59+KiKha+Jt27YVGfkQC3lFQiOY27ZtK6tWrZLZs2fLxRdfbHytcPEhlh53GzZskMaNGxt9YujQobJmzZoir9Gxknnjxo3SpEkT45piypQpoqqqTJo0KWLJiFjJKyLyxRdfyC233GLczs7OlmHDhsmgQYOMEVybNm2KidfngwcPyn//+195++23ZdSoUdKnTx/54osvihSm/vzzz5jIKxK6bu/cubMxwlpE5Iknnoh4nyQisnPnTnn00UejXpT6559/5NJLLzWuf37//Xdp2LChDBs2TB555BHjA9BYumaLdSxKlYHly5fLOeecE3EsMzNTmjdvLo899phxrLhqajT89ttvEggERETkyiuvlCuuuKLI9CcRkX379pV3tGKtXr1aMjIyjIuDhx56SO65554i58VSVTrcdvv27ZPWrVvL0KFDZdGiRVKjRg0ZNmyYcV6s9AmR0CeYHTt2lD179siaNWukRYsW4na7I7ZoLnzxEG0PPfSQdOrUSRYvXizt2rWT++67T8aNGydVqlSRp59+2jgvVtp4x44d0r59e8nIyJCbbrpJnn/+edmwYYN07949YppZLOQNBALG1CFN08Tj8Uj//v3l7bffNo6FxVKfeP7556VChQoye/ZsqVOnjowdO1Y2btwo3bt3l5tvvtk4L1YyP/3009K6dWvjjfvYsWNl/PjxUr9+fZk8ebJxXqzk3bt3r/Tv319EjhQb5syZIy1atDCeJw4fPix333131C8gA4GAjB07Vj766CP54YcfpE6dOvLss89GXKQHAgHJzMyUIUOGRD2v1+uVwYMHyxtvvGEcmzlzplx11VXGbU3TJCcnR8aNG1fsSNbypOu6+Hw+ufHGG42pN9u3b5fU1FQZOHCgtG3bVr766isRCfXfWOgThT311FOybds2eeCBB6R///7ywgsvyKOPPip5eXmSnZ0dU2183nnnSbdu3UQkNJK2X79+csstt0iHDh3kt99+E5HYedyFDRgwQHbt2iX//POPnHvuudK/f39JS0szRkHESt6srCy55JJLjCmFgUBAmjVrFnENIRIqBMZCnwj7+uuvjeuG7du3S4UKFeTaa6+V9PR0o41j5blCJFRsuummm4zb2dnZ0rVrV2nWrJkx8yGW8oqE1vds3bq1MapWJJS7Z8+eEe9BYuX1eevWrcbalEOGDJGrrrpKVqxYUWSUcKzkFQkV/3fv3m1cUz777LPSt2/fIufFyojF8HVxRkaGdOrUSUaMGCHr1q2Tiy66SAYPHmycF0ttHMtYlDpNli5dKqNGjZKRI0fKrl275Oqrr5ZevXpFfJq5YsUKGTBgQMSxaFm6dKmMHDlSHnjgAWNURliPHj2kW7duEggE5OWXX5ZXXnklSimPKJz36HUGnnjiCaOw88Ybb8isWbOiEbGIpUuXyogRI+T+++83Pv3bsWOHzJ071zhn1apVctVVVxV5kYiGcB8ePny4sZDkmDFjZO/evbJ9+3apXLmyNG/eXF599dWINaaiaenSpfLAAw/IQw89JPv27ZN77rlHHA6HMWJKROSdd96RIUOGRDHlEeE2fuCBB2T37t1y3XXXScuWLWXkyJHGOfv27ZOOHTsaL3bRtHTpUnnwwQflvvvuK7KWw/333y+dOnUybsfC85rIkcyjRo2SjIwM+b//+z8ZP368DBw40Dhnz5490r59+5jox8uWLZMHH3xQRo4cKX/++acMHjxYGjduLAMHDjQ+oX/99dcjPtCIFYcOHZKGDRsW+STzlVdekXr16hkfDMTC85tI6A1E+E3vypUrpU6dOjJp0iQjX3iaS6zk3bt3b8SmDd9//71ceumlxu3whXlJ0zKiIfwmKDMzU7p16yYTJ06U3Nxcee6558Ttdhsf0MRKG4eLqffff7/xutG7d29RVVXGjx9vnBf+4C4W/PXXX9KmTRujEPXcc8/J999/L4888og0adLEeAMUK23s8Xika9eu8thjj8m4cePkpZdeEhGR999/XypWrGhcb8RK3vCIs3Cel156yVgrJrx+l0hs9YmdO3eKoihy4403Snp6ukycOFFEQm2cnp5urH0UK5k3b94s6enpxmPuwQcflIkTJ8pzzz0n7du3N0b/RTvvypUr5amnnpIxY8aIx+ORu+++W5o2bRpxzu+//y5du3aNiULJypUr5YknnpDRo0cXub656667pE+fPvL777/LlClTIp7fomnlypXy+OOPy9ixY40PYcNFqddff11uvPFGEQmNxH7hhReiljMsnHf06NHGSMS///5bli9fbpzz+++/S5cuXaI+y8Fs1Gjv/ncm+PTTT3HvvfeiRo0ayMrKwiWXXIKLLroIXq8XvXv3hqZpAIDff/8d//77r7Hte7Tz1qpVCx6PB5dffjnmzJmDgwcPAgAWLVqE5ORkNGjQAE8++STatWsXM3nz8/PRo0cPzJkzB4cOHQIAJCUloUmTJlixYgVeeOEFtGnTJqp5gSOZa9euDa/Xi+7du+P9999HlSpVcM011xjn/frrr3A6nVDV6D4UC/dhv9+PHj164JNPPoHP58N1112HLl264J133sHkyZPx0UcfwW63RzVv4cx16tTBoUOH0LlzZ/To0QPvvPMO7rzzTuO8nTt3IhAIxMzjrkaNGsjJycEll1yC//znP0hLS8PMmTMRCAQAAF9++SUsFgtcLldM5K1ZsyZ8Ph+uuOIKzJkzB1lZWQCAp556Cnl5eXj77bcBABaLJZpxAURmPnToEP7zn/+gdevWaNKkCfbu3WtsIb1y5UpYrVa43e6o573nnntQs2ZNZGdno1evXujRoweGDx+OgQMH4vPPPwcAbN++HT6fL6pZw77//nts2rQJIoLk5GS8+uqrmD59OmbMmGGc87///Q/nnnsugsEgAET1+SKcFwASEhJQpUoVAEDnzp0xY8YMTJs2De+++y6ef/55XHHFFfD7/bBarTGRt3LlyqhevbrxtWAwaLxOT58+Hddffz0CgUBU8wKRmZ1OJ4DQ6/KECRMwYsQIuN1uDBs2DN27dzeeh2OlTyiKAgDo2LEjVFXF7t278euvv+LKK6/EmjVrsHr1aohI1J/fwpl1XUedOnUwd+5crFu3Dr169cKwYcPQtm1bDB06FC1atIDNZgMQO23scrkwbtw4zJkzB0uWLMH1118PAOjXrx8uu+wyZGdnA4CROxq+++67iOcJ4Ej7XXDBBXj//fexePFiKIpi9JlYedyJCKpXr47t27fjjjvuQI8ePTBixAgAoTa+5JJLjOvlaPbjwn2iQYMGeOWVVzB69Gj07dsXP//8M4YNG4Z+/fqhXr16iIuLAxDdNl68eDHuu+8+iAg2bdqE7t27Y8KECahXrx6aN2+O/fv3AwB++OGHqL9uFM6rKAq2bt2K3r17G9drAPDSSy/hnHPOQe/evfH000/jsssui2LakHBmVVWxefNm9OzZE1lZWcZ7otTUVDRv3hyfffYZpk6dik6dOsVM3m3btuGqq67C4cOHUbNmTXTt2tU4b+3atXC73VF9TjOlqJbEzhDDhw+XF1980bj92muvSceOHWXq1KnSt29fY8HPxo0bR33bSpGieV999VW56KKL5MMPPzSOvf7665KWlhb1rVdFSs47Z84cERGZNm2apKWlSfv27Y2h69FWXOaOHTtGjJJ6++23pW3btjHZxq+88op06tRJnnjiCenbt6/Mnz/f+Fp4NEG0HZ152rRp0rlz5yJt3KZNm6jv4iNScj9++eWXpXfv3tKuXTu5//77pVWrVqZ4nvD7/TJo0CB56KGHYmaU1NGZp0+fbkzpvOOOO6Rx48by+OOPS8uWLY1PjqPp6Lwvv/yydO7cWebNm2ccmzFjhtSvXz8m1lpZsmSJKIoibdq0icgzZ84cqVu3rkyYMEE8Ho/MnDlTmjRpEvWpp4XzFh7pF97RSST0iaaqqlKrVi358ccfoxVVRErPKxJaE++mm26S+fPny/nnnx8TzxMlZT7aO++8Y0xXjqaS8m7atEnq1asnqampsnjxYhEReeCBB+Sff/6JVlTD0Y+78CiCzMzMiFFyb7/9tnTq1ClielE0lPQ8MXfuXLHb7TJ27FgRCeVt3LhxxGjAaCitD4cfe08//bTccsstMTPy4eg2DufMy8uTdu3aGRuRvPPOO9KkSZOo9+OS2jgjIyNiOY7XXntNunXrJjk5OVFdmP3HH3+URo0aGa8Je/bskcsuu8xY2uT666+XCy64QK6++mpp1qxZsTutlafi8l5xxRURO0eKhN7bpaamxsT7jmNlFgmt0WyxWOT888+P+vu7kvIefW321ltvSbt27aKe14xYlDoNwtOHCnv11VelYcOGcuDAAVmzZo18+umnsnXr1igljFRc3unTp0vt2rVly5YtsnfvXrniiiuK3TI9GkrKW6tWLfnnn39kxowZoihKkd0No6m0Nt6wYYN89dVX0rhx45h50iou74wZM6RatWry/fffi8iRYdSxsoNLaW28adMmWbNmjTRo0CCm23j69OnSqFEjycjIkG+//VZWrlwZ888TtWrVMh5rP/zwQ8zkFSk+87Rp06RBgwbyxx9/yLPPPivPPPNMTBQpRYrP+8orr0itWrVk69atsnXrVrnyyitjooCWl5cnffv2lblz58qQIUPkwgsvjLgY+/rrr6VZs2bSt29fadGiRdQzHytv+Hls0aJFUqVKlahfpB8rr0hoMWNVVeWCCy6Iiee148ksIvLiiy/KeeedF9NtnJubK48++qixUHSsKC5zcc9fL730kpx33nlR7xfH8zzRokUL+d///idt27aN+bxh77zzjnTt2jViA4doOVbmefPmidvtlj59+kjTpk1j7nF3wQUXFGljXddl2rRp0rBhw5gotm/dulWmTJkScaxjx47y/vvvG7c3btwo33zzjezYsaO84xVRXN6jBxscOHBAbrnllph5b1da5vDr87x582Lm/d3xtPEXX3whjRo1ivrzmlmxKHUafP/995KcnCzvvfdexPFbb701ZubsFlZS3v/+97/y5JNPiohE/ZO2wkrKe9ttt8n48eMlPz9ftm/fHp1wJSitjR9//HHJysoqsitKNJWU93//+5888cQTIhI7xaiwY7XxoUOHYmaBTJEz53ni9ttvl7Fjx8ZcfxApOfPgwYNN18ZPPfWUiMTWc/Hu3buNNYNuueUWufDCCyPe8Ph8PvF4PFEfDRN2rLwiIk8++WTUC2hhx8q7e/duadCgQczkFTl25r///luuvvrqmHijKXJ8fUIkcvOGaDtW5l27dsmVV14ZM282S8obfs3w+Xzi8/lM9TwhEjub/YgcO/M///wj69ati/oo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p+POO++MGFF29LQrRVEAACNGjCj2/o5HQkICACAQCEQcP1Zf2bFjhzG99Pbbb0dqairatWtn5Jo4cSLGjBmDSpUqIS0tDbfeemvE73I6hbPMnTs34viwYcMi+tLMmTOhKArWrl2Lrl27wu12G1NAj6dvhKcMjhw5Eunp6UhISMDAgQORk5MTcV5mZibuuusuVKlSBQ6HA+eeey6WL19eJPeKFStgsVhw8cUXF/t77dmzB4MGDUKnTp3w8MMPF/k9/v3334jzj37Mhx9nS5YsQcuWLeFwOLBw4cJip+/puo7JkyejSZMmcDgcqFy5Mq677jpkZWVF/IwNGzagY8eOiIuLQ7NmzfDpp59GfD0uLg49evTArFmziv2diIiIyhKLUkRERKfR9u3b0bNnT7z99tuYN28eLrzwQnTv3j2i8LB3715069YNCQkJmDNnDkaMGIE777wTu3fvjrivtWvXolOnTkhKSsIHH3yAV199FevWrUPv3r2Nc9566y08+uijGDx4MJYtW4YZM2agVatWyM7OBhCaRrR27Vrj3/Lly5GSkoJGjRoZ99G3b19Mnz4d999/PxYtWoRu3brhpptuwtKlS4v9HXv06IFHHnkEALBs2TKsXbsWH330UYltsnbtWuTl5eHCCy88obbcuXMn/vOf/+DgwYN455138Morr+Cnn37CxRdfXKSoEPbnn3/ioosuQqtWrfDxxx/D5XLh33//RUpKCiZPnoxly5Zh5MiRmDVrFu64444Sf3Z4ulThf71794bL5UKNGjUAAHPnzkWvXr3QvHlzfPTRR5g4cSLmz5+PwYMHl9oWQGhKXvh+27RpU2o76LqOYDCIQCCAHTt2YOTIkUhLS0OnTp0i7vdYfSXsoYcegojgvffew6RJk4zjU6dOxZYtWzBr1iw89thjmD17Np544olSs5UmGAwW+XeybrjhBnTp0gWLFi3CzTfffEJ948UXX8SmTZswa9YsTJgwAfPmzcPtt99ufN3v96Nr165YtGgRnnrqKXzyySdo2rQpevToUWTtroULF+Kyyy6D3W4vklHXddx0000AgHfffReqenKX2Xv27ME999yD4cOHY9myZWjVqlWx5w0dOhQjR47ElVdeiYULF+Kll15CQkICcnNzjXMCgQBuvPFGDBw4EB999BEqVqyIa665BgcPHoy4rwsuuAArV66ErusnlZmIiOikCREREZ00ADJp0qRiv6ZpmgQCAbnsssukf//+xvERI0ZIUlKSZGdnG8dWr14tAGTAgAHGsf/85z9ywQUXiK7rxrGNGzeKoiiyePFiEREZMmSItGnT5riy6rouPXv2lOrVq8u+fftERGTlypUCQD799NOIc/v16ydt27Y1bg8YMEDOOecc4/abb74pACQjI+OYP3fcuHESHx9f5Pjo0aPF7XaX+H3Dhw8Xt9stBw8eNI5t2rRJFEWRF154wTgW/hv8/PPPUrFiRbn55pslGAyWeL+BQEDeffddsVqtkpeXV+R+ijNnzhxRFEXeeecdEQm1Za1atSL+riIiS5cuFUVR5LfffhMRkS+++EIAyLp1647r5xwNQJF/KSkp8tVXX0Wcdzx9Zfv27QJAunXrVuzPadeuXcSxAQMGSL169Y4rZ2GjR48uNjcAWb16dUSWDz/8MOJ77733XqlVq5ZxO9zPJkyYEHHeifSNOnXqRPSH119/XRRFkU2bNomIyBtvvCFWq1U2btwY8TPOP/98ue666yKOVa9eXd58881if+9x48YJAPnkk0+KfK2kx0vLli0jHvMDBgwQAPLtt99GnHd0P/rzzz9FURQZN25csVlEjvwdwn9/kSPt/vbbbxd7/+F+S0REVF44UoqIiOg02rVrFwYMGIBq1arBarXCZrNh+fLl2Lx5s3HOunXr0LlzZ2MaFgB07NgRKSkpxm2Px4M1a9bguuuug6ZpxkiThg0bokaNGli3bh2A0Iie9evX47777sPXX39dZEpXYY888gg+++wzzJ8/H5UqVQIAY+RUly5dIka0dO3aFevXr4emaafcJnv37kVaWtoJf9/q1avRpUuXiHZp3LgxWrZsia+//jri3HXr1qFTp064+uqrMWvWLFgsFuNrIoIpU6agadOmcLlcsNlsuPHGGxEMBo9r4fVffvkFAwcOxPDhw3HjjTcCADZv3oy///4bffv2jWi3iy++GKqqntAuacdy7733Yt26dVi3bh0WL16MDh06oHfv3vj1118BHH9fCevRo0exP6dr164Rt5s2bYpdu3adVGaXy2VkLvyvpFE/x3J05hPpGz179ozoD9deey1EBN9//z2A0GOgefPmaNiwYZHHQOG2+/nnn7Fnz55i2++7777DY489hqFDh6Jnz54n9TuGpaam4vzzzy/1nJUrV0JESh2VB4TW9rr00kuN27Vr14bL5Srydw0/Pvfu3XuSqYmIiE4OFzonIiI6TXRdR69evZCVlYXHH38c9evXh9vtxmOPPRax1s3evXvRoEGDIt9fsWJF438fPnwYmqZh+PDhGD58eJFzd+7cCQDG+jivvvoqnnvuOSQlJWHAgAGYMGFCxGLQc+bMwbhx4zBz5ky0bdvWOP7vv//i0KFDsNlsxf5Oe/fuRfXq1U+8MQrxer1wOBwn/H2HDx8utohRqVIlHDp0KOLY559/jry8PAwePNhYtylsypQpeOCBBzBy5Eh07twZycnJWLduHYYMGQKv11tqhoyMDPTu3RsXXHABJk6caBwPrw101VVXFft94b/P6VC9enWcd955xu1LLrkE1atXx+OPP465c+ced18JCxckj3b0Tn52u73UdbdKo6pqROZTdXTmE+kbhR9XQGjxeafTaRRg/v33X6xfv77Yx0DhYtbChQvRrl07pKenR5yTnZ2N/v3745xzzomYDnmySvr7FHbw4EFYrdYiv9vRXC5XkamGdru9SL8PPz7z8/NPMC0REdGpYVGKiIjoNNm6dSvWr1+PBQsWRKzlc/QbvSpVqiAjI6PI9xdelLpChQpQFAUPP/xwsTtihUc2qKqKe++9F/feey92796N999/H6NGjUJaWhoeffRRAMD69etx66234p577sGAAQMi7iclJQXp6elYsmRJsb/Tsd70Ho+UlBRkZmae1Pcdvag7AOzfvx8NGzaMODZy5EisW7cOl19+Ob788ks0b97c+NqHH36IXr16Yfz48cax33///Zg/PxAI4Nprr4Wqqvjggw8iChThETpTp04tdlRLWe4y6HA4ULduXWzcuBHA8feVsKOLdtHgdDoBhNZzKuzw4cPFnn905hPpG0efl52dDa/XiypVqhj31aJFC7z++uulZl60aBF69epV5Pidd96J/fv3Y8mSJSUWX0/k9z2ev09qaiqCwSAOHDhwWh6j4cdnamrqKd8XERHRiWBRioiI6DQJF58Kj0z4+++/sWbNmog3ym3btsX06dORk5NjTOFbvXp1xAgPt9uNDh06YNOmTXjyySeP6+dXq1YN999/P2bPno1NmzYBCL0h79OnD84//3w8++yzRb7n0ksvxcSJE2G329GiRYvj/l3Dv+OxRhoBQKNGjZCRkYG8vDy43e7j/hkdO3bEq6++isOHDyM5ORlAaCHzX3/9FYMGDYo412Kx4L333sPVV1+NSy+9FKtWrTIWc8/Pzy8yWuTdd9895s8fOnQofvzxR3zzzTcR08SA0FSx6tWr46+//sKQIUOO+3cCAJvNdlztVhKv14tt27ahSZMmAE6ur0RbxYoVYbPZjH4KhAo2X3311XF9/4n0jYULF2Ly5MlGUXHu3LlQFMUYMXjppZdiyZIlqFq1aonFxP3792PdunV47bXXIo6/9dZbmD17Nl5//XU0bty4xLzh0YabNm0yfsamTZtOekRdly5doCgK3nzzTTz44IMndR+F7dixAwCKFPSIiIjKGotSREREp0m4UDFq1Chomobc3FyMHj0a1apVizhv+PDhmDZtGnr06IERI0YgMzMTY8eORVpaWsSOXZMmTUKXLl3Qr18/XH/99UhOTsauXbvw2Wef4dZbb0WnTp3wv//9D8nJyWjfvj2Sk5OxZs0a/PLLL7jrrrsAADfffDMOHjyIl156KWKdI4fDgdatW6Nr167o2bMnunXrhpEjR6JFixbIy8vDxo0bsXXrVsyYMaPY3zVcEHnppZfQp08fxMXFRYxOKuzCCy+ErutYv349OnbsGPE1TdMwd+7cIt/Trl07DB8+HG+++SYuu+wy/N///R+8Xi8eeeQR1KxZEwMHDizyPTabDXPnzkXPnj1xySWXYNWqVahbty66du2K559/HlOnTkXDhg3xzjvvYOvWrcVmDXvvvfeMHQk9Hg++/fZb42tNmzZFYmIiJk+ejBtuuAF5eXno0aMH3G43/v77byxevBjjxo0r8Q1+kyZN8PHHH+Oiiy6C2+1Go0aNItYXO9o///xj/PyMjAy89NJLOHjwYMTugcfTV04HRVEwYMAAzJw5s9TzdF2PaLOwihUrom7dulBVFVdffTWmTp2K+vXrIy0tDVOnToWIHNdIoRPpGz6fD3369MFdd92F7du348EHH8S1115r9OFbbrkF06dPR6dOnfDAAw+gYcOGyMzMxPr16+H3+zF+/HgsXrwYNWrUiCjcbtu2DUOGDMF5552Hpk2bFvv7JiYmomnTpjj//PNRo0YNDB8+HOPHj0d2djYmTJhw0iOTGjZsiDvuuAOPPPIIDh06hEsuuQQejweLFy/GmDFjijznHMsPP/yAJk2anNTab0RERKckuuusExERmRuO2knt+++/l7Zt24rT6ZQGDRrIrFmziuxcJyKyatUqadWqldjtdmnSpIksWrRIateuLcOGDYs4b926ddK9e3dJSkoSl8slDRo0kDvuuEN27twpIiIzZ86UCy+8UFJSUsTpdErTpk0jdh+rVatWsbugFd7hzOfzydixY6VBgwZit9slPT1dOnfuLG+99ZZxTnG/w5gxY6R69eqiqmrE/RWnefPm8vDDD0ccK22XtvDuYL/88ot07dpV4uLiJCEhQa6++mrZsWNHqX+DvLw8+c9//iO1a9eWf/75R3JycmTgwIGSnJwsycnJcvvtt8vChQtL3RWvtGxffPGF8T3Lly+Xiy++WNxut7jdbjnnnHPk/vvvl8zMTBEpfve91atXS5s2bcTlchW5v6Md/bMrVKggHTp0kI8++qjIucfqKyXteFdcG4qIPPfcc1L4UjE3N1cAyIMPPlhi3mO13eDBg43zDhw4IH369JHExESpVq2aTJkypcTd94rb5fF4+8b48ePlvvvuk5SUFImPj5ebb75ZsrKyIs7LysqS4cOHS82aNcVms0mVKlWke/fusmjRIhERueqqq+TOO++M+J5wttL+XXzxxcb5P/zwg7Rt21ZcLpc0b95cPv/882J33zv6cSZSfD/SNE0mTpwoDRo0EJvNJpUrV5Z+/foZv1tJu1smJSXJ6NGjI441b95cHn300SLnEhERlTVFROT0l7qIiIjoRGzZsgWNGzfGG2+8UWTdpzPBiy++iOeffx5btmyJiTWN6MStWLEC3bt3x7Zt20558fvyoigKJk2ahAceeOCk78Pv9yM1NRUffPABunfvfhrTxYaNGzeiZcuW2LJlC+rUqRPtOEREdJZRj30KERERnW4PPfQQ3nvvPXz11Vd488030b17d1SpUgXXXHNNtKOVidtuuw35+flYuHBhtKPQSVqzZg0GDBhgmoLU6WK325GTk3NGFqQA4Nlnn8Utt9zCghQREUUF15QiIiKKAr/fjwcffBD79++Hy+VCp06dMGnSJMTHx0c7WplwuVyYOXMmsrKyoh2FTtJjjz0W7Qh0mum6jvr16+OWW26JdhQiIjpLcfoeERERERERERGVO07fIyIiIiIiIiKicseiFBERERERERERlTsWpYiIiIiIiIiIqNyxKEVEREREREREROWORSkiIiIiIiIiIip3LEoREREREREREVG5Y1GKiIiIiIiIiIjKHYtSRERERERERERU7v4fpxB7JAJCFVoAAAAASUVORK5CYII=\n"
          },
          "metadata": {}
        },
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "\n",
            " Empfehlung: Outdoor-Training idealerweise um 06:00 Uhr (niedrigster Ø Humidex im Sommer 2025)\n"
          ]
        }
      ]
    },
    {
      "cell_type": "markdown",
      "source": [
        "## 6. Zusammenfassung – HeatSafeBern Systemoutput\n",
        "Kompakte Übersicht der wichtigsten Ergebnisse aus RTD-Snapshot\n",
        "und historischer Analyse"
      ],
      "metadata": {
        "id": "tmn-aFYZaiaV"
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from datetime import datetime\n",
        "\n",
        "# Ampel-Verteilung aus RTD-Snapshot (inkl. gray = Ausreisser/keine Daten)\n",
        "n_green  = (df_rtd_bern[\"color\"] == \"green\").sum()\n",
        "n_orange = (df_rtd_bern[\"color\"] == \"orange\").sum()\n",
        "n_red    = (df_rtd_bern[\"color\"] == \"red\").sum()\n",
        "n_gray   = (df_rtd_bern[\"color\"] == \"gray\").sum()\n",
        "\n",
        "# Kühlste Station aus validen RTD-Stationen\n",
        "coolest_station = df_rtd_valid.loc[df_rtd_valid[\"comfort_score\"].idxmax()]\n",
        "\n",
        "# Beste Trainingszeit aus historischer Analyse\n",
        "best_hour    = int(coolest_hour[\"hour\"])\n",
        "best_humidex = coolest_hour[\"humidex_mean\"]\n",
        "\n",
        "# stations_raw = Roh-API-Output vor jeglicher Bereinigung/Filterung\n",
        "# Guard verhindert NameError falls Zelle isoliert ausgeführt wird\n",
        "total_raw = len(stations_raw) if \"stations_raw\" in dir() else \"?\"\n",
        "\n",
        "print(\"=\" * 55)\n",
        "print(\"        HEATSAFEBERN – ZUSAMMENFASSUNG\")\n",
        "print(f\"        Stand: {datetime.now().strftime('%d.%m.%Y %H:%M')} Uhr\")\n",
        "print(\"=\" * 55)\n",
        "print()\n",
        "print(f\"Stationen analysiert : {len(df_rtd_bern)} (von {total_raw} total)\")\n",
        "print(f\"Geo-Filter           : {GEO_RADIUS_KM} km Radius um Bern\")\n",
        "print()\n",
        "print(\"Ampel-Verteilung:\")\n",
        "print(f\"  🟢 Grün   : {n_green:>2} Stationen\")\n",
        "print(f\"  🟡 Orange : {n_orange:>2} Stationen\")\n",
        "print(f\"  🔴 Rot    : {n_red:>2} Stationen\")\n",
        "print(f\"  ⚫ Grau   : {n_gray:>2} Stationen (Ausreisser / keine Daten)\")\n",
        "print()\n",
        "print(f\"Kühlste Station  : {coolest_station['name']}\")\n",
        "print(f\"  Humidex        : {coolest_station['humidex']:.1f}\")\n",
        "print(f\"  Comfort Score  : {coolest_station['comfort_score']:.1f}%\")\n",
        "print()\n",
        "# cool_route = Top-5 Stationen nach Comfort Score, geografisch via\n",
        "# Nearest-Neighbour sortiert – nicht nach Score-Ranking, sondern nach Nähe\n",
        "print(\"Route Top-5 Stationen (kühlste), nach Nähe sortiert (Luftlinie):\")\n",
        "for i, (_, s) in enumerate(cool_route.iterrows(), 1):\n",
        "    print(f\"  {i}. {s['name']} ({s['comfort_score']:.1f}%)\")\n",
        "print()\n",
        "print(f\"Beste Trainingszeit : {best_hour:02d}:00 Uhr\")\n",
        "print(f\"  Ø Humidex {best_humidex:.1f} – basierend auf Sommer 2025,\")\n",
        "print(f\"  {n_stations} Stationen, {len(df_hist):,} Messwerte\".replace(\",\", \"'\"))\n",
        "print()\n",
        "print(\"=\" * 55)"
      ],
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "v28VxhFPawJP",
        "outputId": "7f8d70fb-d9f8-4f49-b40a-e82f240b50fd"
      },
      "execution_count": 40,
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "=======================================================\n",
            "        HEATSAFEBERN – ZUSAMMENFASSUNG\n",
            "        Stand: 13.03.2026 17:21 Uhr\n",
            "=======================================================\n",
            "\n",
            "Stationen analysiert : 31 (von 64 total)\n",
            "Geo-Filter           : 10 km Radius um Bern\n",
            "\n",
            "Ampel-Verteilung:\n",
            "  🟢 Grün   :  4 Stationen\n",
            "  🟡 Orange : 17 Stationen\n",
            "  🔴 Rot    :  6 Stationen\n",
            "  ⚫ Grau   :  4 Stationen (Ausreisser / keine Daten)\n",
            "\n",
            "Kühlste Station  : Liebefeld Turnierstrasse Laterne\n",
            "  Humidex        : 10.7\n",
            "  Comfort Score  : 100.0%\n",
            "\n",
            "Route Top-5 Stationen (kühlste), nach Nähe sortiert (Luftlinie):\n",
            "  1. Köniz Gartenstadt Laterne (100.0%)\n",
            "  2. Liebefeld Turnierstrasse Laterne (100.0%)\n",
            "  3. Zollikofen 3m (66.7%)\n",
            "  4. Ittigen Gantrischweg 1 Laterne (61.1%)\n",
            "  5. Gümligen Dentenberg Laterne (66.7%)\n",
            "\n",
            "Beste Trainingszeit : 06:00 Uhr\n",
            "  Ø Humidex 17.8 – basierend auf Sommer 2025,\n",
            "  6 Stationen' 48'998 Messwerte\n",
            "\n",
            "=======================================================\n"
          ]
        }
      ]
    }
  ]
}