From f85fadecec352566661bec579acbb9016af77b9b Mon Sep 17 00:00:00 2001 From: Graham McIntire Date: Tue, 14 Apr 2026 08:16:03 -0500 Subject: [PATCH] =?UTF-8?q?Retrain=20propagation=20ML=20on=20month-balance?= =?UTF-8?q?d=20HRRR=20=E2=86=92=20algorithm=20score?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces the two-phase (algorithm-scores pretrain + QSO-distance finetune) pipeline with a single unbiased phase that samples hrrr_profiles stratified uniformly by calendar month and trains on the physical algorithm score from Scorer.composite_score/2. Previous Phase 2 target was 'within-band distance percentile' computed from the contacts table. Because non-contest months have almost no QSOs, the model learned 'these conditions → QSO happened → good' and implicitly 'no QSO → bad', so it systematically under-predicted propagation during quiet months (Feb, Mar, Nov). The new pipeline decouples the target from QSO activity entirely. Stratification uses ROW_NUMBER() OVER (PARTITION BY month ORDER BY random()) so every month contributes the same number of profile rows regardless of contest-driven density. Each profile is exploded into one training row per band. Trained model: val RMSE=1.66 pts, R²=0.9744 on 840k rows (10k profiles/month × 7 bands, 50 epochs). Monthly sanity check at fixed weather conditions (10 GHz, 15°C/10°C) now shows Jan=Feb=Mar=68 — the model no longer penalizes quiet months. --- lib_ml/propagation_train.ex | 586 ++++++++++++++++------------------ priv/models/propagation_v1.nx | Bin 53565 -> 53565 bytes 2 files changed, 272 insertions(+), 314 deletions(-) diff --git a/lib_ml/propagation_train.ex b/lib_ml/propagation_train.ex index d3731ae1..42ee586d 100644 --- a/lib_ml/propagation_train.ex +++ b/lib_ml/propagation_train.ex @@ -1,387 +1,353 @@ defmodule Mix.Tasks.PropagationTrain do - @shortdoc "Train ML model from QSO-HRRR data with algorithm pre-training" + @shortdoc "Train propagation ML model from month-balanced HRRR + algorithm scores" @moduledoc """ - Two-phase ML training for propagation prediction using all available data: + Trains the propagation Nx/Axon model to predict the physical algorithm + score from weather conditions alone. - Phase 1 (pre-train): Learn broad atmospheric patterns from 500K+ algorithm - scores covering all seasons, times, and locations across CONUS. Joined to - solar indices and nearest sounding for stability indices. + ## Why not use QSO outcomes as the target? - Phase 2 (fine-tune): Calibrate against real QSO outcomes (57K+ contacts - matched to HRRR + solar + sounding data). Target is within-band distance percentile. + An earlier version of this task fine-tuned on "within-band distance + percentile" from the `contacts` table. That target is structurally + biased: non-contest months (Feb, Mar, Nov) have almost no QSOs, so the + model learned "these conditions → QSO happened → good" and implicitly + "no QSO happened → bad." The result was a model that systematically + under-predicted propagation during months when nobody is on the air, + which is exactly the wrong thing for a forecast. - Features (20): atmospheric (temp, dewpoint, pressure, abs humidity, td depression, - refractivity gradient, HPBL, PWAT, surface refractivity), geographic (latitude), - solar (SFI, Kp max), HRRR-derived (ducting), sounding-derived (K-index, - lifted index), temporal (solar hour sin/cos, month sin/cos), frequency (log MHz). + This task instead: + + 1. Samples `hrrr_profiles` stratified *uniformly by calendar month* + — every month contributes the same number of rows regardless of + contest-driven density. Contest months still exist in the data, + they just don't drown out the quiet months. + 2. Joins each sample to `solar_indices` (same date) and the nearest + `soundings` row (±6 h) for K-index / lifted-index features. + 3. Computes the target via `Scorer.composite_score/2` — the *same* + physical scoring algorithm that `PropagationGridWorker` uses in + production. Sky / wind / rain fall back to neutral defaults + because `hrrr_profiles` doesn't store them; the model learns the + weather-only residual and the missing factors remain constant. + 4. Trains on every band for every sampled profile, producing one + training row per (profile, band) pair. ## Usage mix propagation_train - mix propagation_train --pretrain-epochs 50 --finetune-epochs 200 + mix propagation_train --samples-per-month 20000 --epochs 100 """ use Mix.Task alias Microwaveprop.Propagation.BandConfig alias Microwaveprop.Propagation.Model + alias Microwaveprop.Propagation.Scorer alias Microwaveprop.Repo @query_timeout 600_000 - @band_max_km %{ - 10_000 => 800.0, - 24_000 => 350.0, - 47_000 => 200.0, - 75_000 => 200.0, - 122_000 => 140.0, - 134_000 => 160.0, - 241_000 => 115.0 - } - @impl Mix.Task def run(args) do {opts, _, _} = OptionParser.parse(args, strict: [ - pretrain_epochs: :integer, - finetune_epochs: :integer, - pretrain_sample: :integer, + samples_per_month: :integer, + epochs: :integer, batch_size: :integer, - no_pretrain: :boolean + learning_rate: :float ] ) + # Boot the app without starting Oban queues so training doesn't have + # the HRRR / ERA5 / weather cron firing in the background against the + # local DB we're reading from. Application.put_env( :microwaveprop, Oban, - Keyword.put( - Application.get_env(:microwaveprop, Oban, []), - :queues, - false - ) + Keyword.put(Application.get_env(:microwaveprop, Oban, []), :queues, false) ) Mix.Task.run("app.start") - pretrain_epochs = Keyword.get(opts, :pretrain_epochs, 50) - finetune_epochs = Keyword.get(opts, :finetune_epochs, 200) - pretrain_sample = Keyword.get(opts, :pretrain_sample, 500_000) + samples_per_month = Keyword.get(opts, :samples_per_month, 20_000) + epochs = Keyword.get(opts, :epochs, 100) batch_size = Keyword.get(opts, :batch_size, 256) - skip_pretrain = Keyword.get(opts, :no_pretrain, false) + learning_rate = Keyword.get(opts, :learning_rate, 0.001) - "=" |> String.duplicate(70) |> IO.puts() - IO.puts("PROPAGATION MODEL TRAINING (20 features)") - "=" |> String.duplicate(70) |> IO.puts() + print_header(samples_per_month, epochs, batch_size, learning_rate) - pretrained_state = - if skip_pretrain do - IO.puts("Skipping pre-training (--no-pretrain)") - nil - else - IO.puts("Phase 1: #{pretrain_epochs} epochs on #{pretrain_sample} algorithm scores") - IO.puts("Phase 2: #{finetune_epochs} epochs on real QSO data") - IO.puts("Started: #{DateTime.to_string(DateTime.utc_now())}\n") + {features, targets, month_counts} = load_training_data(samples_per_month) - # ── Phase 1: Pre-train on algorithm scores ────────────────── - IO.puts("=" <> String.duplicate("─", 50)) - IO.puts("PHASE 1: Pre-training on algorithm scores + solar + soundings") - IO.puts("=" <> String.duplicate("─", 50)) + n = elem(Nx.shape(features), 0) + IO.puts("Loaded #{n} training rows (one per profile × band).") + print_month_counts(month_counts) - {pt_features, pt_targets, pt_counts} = load_pretrain_data(pretrain_sample) - pt_n = elem(Nx.shape(pt_features), 0) - IO.puts("Loaded #{pt_n} samples:") - print_band_counts(pt_counts) + {features, targets} = shuffle(features, targets, n) + {train_x, train_y, val_x, val_y, test_x, test_y} = split(features, targets, n) - {pt_features, pt_targets} = shuffle(pt_features, pt_targets, pt_n) - {pt_train_x, pt_train_y, pt_val_x, pt_val_y, _, _} = split(pt_features, pt_targets, pt_n) + IO.puts("\nTraining for #{epochs} epochs (lr=#{learning_rate}, batch=#{batch_size})...") - IO.puts("\nPre-training for #{pretrain_epochs} epochs (lr=0.001)...") + {trained_state, metrics} = + Model.train(train_x, train_y, + epochs: epochs, + batch_size: batch_size, + learning_rate: learning_rate + ) - {state, pt_metrics} = - Model.train(pt_train_x, pt_train_y, epochs: pretrain_epochs, batch_size: batch_size) + print_loss(metrics.final_loss) + print_eval("Validation", Model.evaluate(trained_state, val_x, val_y)) + print_eval("Test", Model.evaluate(trained_state, test_x, test_y)) - print_loss(pt_metrics.final_loss) - print_eval("Pre-train val", Model.evaluate(state, pt_val_x, pt_val_y)) - state - end - - # ── QSO training ──────────────────────────────────────────────── - IO.puts("\n" <> "=" <> String.duplicate("─", 50)) - - if pretrained_state do - IO.puts("PHASE 2: Fine-tuning on QSO + HRRR + solar + soundings") - else - IO.puts("TRAINING: QSO + HRRR + solar + soundings (direct, lr=0.001)") - end - - IO.puts("=" <> String.duplicate("─", 50)) - - {ft_features, ft_targets, ft_counts} = load_contact_data() - ft_n = elem(Nx.shape(ft_features), 0) - IO.puts("Loaded #{ft_n} QSO training samples:") - print_band_counts(ft_counts) - - {ft_features, ft_targets} = shuffle(ft_features, ft_targets, ft_n) - {ft_train_x, ft_train_y, ft_val_x, ft_val_y, ft_test_x, ft_test_y} = split(ft_features, ft_targets, ft_n) - - lr = if pretrained_state, do: 0.0003, else: 0.001 - IO.puts("\nTraining for #{finetune_epochs} epochs (lr=#{lr})...") - - train_opts = [epochs: finetune_epochs, batch_size: batch_size, learning_rate: lr] - train_opts = if pretrained_state, do: [{:initial_state, pretrained_state} | train_opts], else: train_opts - - {trained_state, ft_metrics} = Model.train(ft_train_x, ft_train_y, train_opts) - - print_loss(ft_metrics.final_loss) - print_eval("Fine-tune val", Model.evaluate(trained_state, ft_val_x, ft_val_y)) - print_eval("Fine-tune test", Model.evaluate(trained_state, ft_test_x, ft_test_y)) - - # ── Save ──────────────────────────────────────────────────────── IO.puts("\nSaving model to priv/models/propagation_v1.nx...") Model.save(trained_state) - IO.puts("Done!") + IO.puts("Done.") + + check_monthly_bias(trained_state) "-" |> String.duplicate(70) |> IO.puts() IO.puts("Finished: #{DateTime.to_string(DateTime.utc_now())}") end - # ── Phase 1 data: algorithm scores + solar + nearest sounding ───── + # ── Data loading ──────────────────────────────────────────────────── - defp load_pretrain_data(sample_size) do - bands = BandConfig.all_freqs() - per_band = div(sample_size, length(bands)) - - IO.puts(" Loading algorithm scores (stratified #{per_band}/band)...") - - # Join propagation_scores → hrrr_profiles → solar_indices → nearest sounding - band_queries = - Enum.map_join(bands, "\nUNION ALL\n", fn band_mhz -> - """ - (SELECT - ps.score, ps.band_mhz, - h.surface_temp_c, h.surface_dewpoint_c, h.surface_pressure_mb, - h.min_refractivity_gradient, h.hpbl_m, h.pwat_mm, - h.surface_refractivity, h.ducting_detected, - ps.lat, ps.lon, - EXTRACT(HOUR FROM ps.valid_time) AS utc_hour, - EXTRACT(MONTH FROM ps.valid_time) AS month, - si.sfi, COALESCE((SELECT MAX(v) FROM unnest(si.kp_values) AS v), 2.0) AS kp_max, - snd.k_index, snd.lifted_index - FROM propagation_scores ps - JOIN hrrr_profiles h - ON h.lat = ps.lat AND h.lon = ps.lon AND h.valid_time = ps.valid_time - LEFT JOIN solar_indices si ON si.date = ps.valid_time::date - LEFT JOIN LATERAL ( - SELECT s.k_index, s.lifted_index - FROM soundings s - WHERE s.observed_at BETWEEN ps.valid_time - interval '6 hours' - AND ps.valid_time + interval '6 hours' - ORDER BY ABS(EXTRACT(EPOCH FROM s.observed_at - ps.valid_time)) - LIMIT 1 - ) snd ON true - WHERE ps.band_mhz = #{band_mhz} - AND h.surface_temp_c IS NOT NULL - AND h.surface_dewpoint_c IS NOT NULL - AND h.surface_pressure_mb IS NOT NULL - ORDER BY RANDOM() - LIMIT #{per_band}) - """ - end) - - %{rows: rows} = Repo.query!(band_queries, [], timeout: @query_timeout) - band_counts = Enum.frequencies_by(rows, fn row -> Enum.at(row, 1) end) - - {feature_rows, target_rows} = - rows - |> Enum.map(&encode_pretrain_row/1) - |> Enum.unzip() - - {Nx.tensor(feature_rows, type: :f32), Nx.tensor(target_rows, type: :f32), band_counts} - end - - defp encode_pretrain_row([ - score, - band_mhz, - temp_c, - dewpoint_c, - pressure_mb, - grad, - hpbl, - pwat, - refractivity, - ducting, - lat, - lon, - utc_hour, - month, - sfi, - kp_max, - k_index, - lifted_index - ]) do - features = - Model.encode_features(%{ - surface_temp_c: to_float(temp_c), - surface_dewpoint_c: to_float(dewpoint_c), - surface_pressure_mb: to_float(pressure_mb), - min_refractivity_gradient: to_float(grad), - hpbl_m: to_float(hpbl), - pwat_mm: to_float(pwat), - surface_refractivity: to_float(refractivity), - latitude: to_float(lat), - sfi: to_float(sfi), - kp_max: to_float(kp_max), - ducting_detected: ducting, - k_index: to_float(k_index), - lifted_index: to_float(lifted_index), - utc_hour: to_float(utc_hour), - month: trunc(to_float(month)), - longitude: to_float(lon), - freq_mhz: band_mhz - }) - - {features, [score / 100.0]} - end - - # ── Phase 2 data: QSO-HRRR + solar + sounding ──────────────────── - - defp load_contact_data do - IO.puts(" Running QSO-HRRR-solar-sounding join query...") + # Returns {features_tensor, targets_tensor, %{month => count}}. + # Stratifies by calendar month so every month contributes `per_month` + # profile rows, then explodes each profile into one row per band. + defp load_training_data(per_month) do + IO.puts("Sampling hrrr_profiles stratified by month (#{per_month}/month)...") + # The stratification is the whole point: random_row_in_month ranks each + # profile within its (year, month) bucket by a random key, then we keep + # the first `per_month` rows per month across all years. This is much + # cheaper than ORDER BY random() over the whole 43M-row table because + # the window function can stream. sql = """ + WITH ranked AS ( + SELECT + h.valid_time, + h.lat, + h.lon, + h.surface_temp_c, + h.surface_dewpoint_c, + h.surface_pressure_mb, + h.min_refractivity_gradient, + h.hpbl_m, + h.pwat_mm, + h.surface_refractivity, + h.ducting_detected, + extract(month from h.valid_time)::int AS month, + extract(hour from h.valid_time)::int AS utc_hour, + ROW_NUMBER() OVER ( + PARTITION BY extract(month from h.valid_time)::int + ORDER BY random() + ) AS rn + FROM hrrr_profiles h + WHERE h.surface_temp_c IS NOT NULL + AND h.surface_dewpoint_c IS NOT NULL + AND h.surface_pressure_mb IS NOT NULL + ) SELECT - q.band::integer AS band_mhz, - q.distance_km::float AS distance_km, - EXTRACT(HOUR FROM q.qso_timestamp)::int AS utc_hour, - EXTRACT(MONTH FROM q.qso_timestamp)::int AS month, - ((q.pos1->>'lng')::float + (q.pos2->>'lng')::float) / 2.0 AS avg_lon, - ((q.pos1->>'lat')::float + (q.pos2->>'lat')::float) / 2.0 AS avg_lat, - (COALESCE(h1.surface_temp_c, h2.surface_temp_c) + - COALESCE(h2.surface_temp_c, h1.surface_temp_c)) / 2.0 AS avg_temp, - (COALESCE(h1.surface_dewpoint_c, h2.surface_dewpoint_c) + - COALESCE(h2.surface_dewpoint_c, h1.surface_dewpoint_c)) / 2.0 AS avg_dewpoint, - (COALESCE(h1.surface_pressure_mb, h2.surface_pressure_mb) + - COALESCE(h2.surface_pressure_mb, h1.surface_pressure_mb)) / 2.0 AS avg_pressure, - (COALESCE(h1.min_refractivity_gradient, h2.min_refractivity_gradient) + - COALESCE(h2.min_refractivity_gradient, h1.min_refractivity_gradient)) / 2.0 AS avg_gradient, - (COALESCE(h1.hpbl_m, h2.hpbl_m) + - COALESCE(h2.hpbl_m, h1.hpbl_m)) / 2.0 AS avg_hpbl, - (COALESCE(h1.pwat_mm, h2.pwat_mm) + - COALESCE(h2.pwat_mm, h1.pwat_mm)) / 2.0 AS avg_pwat, - (COALESCE(h1.surface_refractivity, h2.surface_refractivity) + - COALESCE(h2.surface_refractivity, h1.surface_refractivity)) / 2.0 AS avg_refractivity, - COALESCE(h1.ducting_detected, false) OR COALESCE(h2.ducting_detected, false) AS ducting_either, + r.valid_time, r.lat, r.lon, + r.surface_temp_c, r.surface_dewpoint_c, r.surface_pressure_mb, + r.min_refractivity_gradient, r.hpbl_m, r.pwat_mm, + r.surface_refractivity, r.ducting_detected, + r.month, r.utc_hour, si.sfi, COALESCE((SELECT MAX(v) FROM unnest(si.kp_values) AS v), 2.0) AS kp_max, snd.k_index, snd.lifted_index - FROM qsos q - INNER JOIN hrrr_profiles h1 - ON h1.lat = ROUND((q.pos1->>'lat')::numeric * 8) / 8 - AND h1.lon = ROUND((q.pos1->>'lng')::numeric * 8) / 8 - AND h1.valid_time = date_trunc('hour', q.qso_timestamp) - INNER JOIN hrrr_profiles h2 - ON h2.lat = ROUND((q.pos2->>'lat')::numeric * 8) / 8 - AND h2.lon = ROUND((q.pos2->>'lng')::numeric * 8) / 8 - AND h2.valid_time = date_trunc('hour', q.qso_timestamp) - LEFT JOIN solar_indices si ON si.date = q.qso_timestamp::date + FROM ranked r + LEFT JOIN solar_indices si ON si.date = r.valid_time::date LEFT JOIN LATERAL ( SELECT s.k_index, s.lifted_index FROM soundings s - WHERE s.observed_at BETWEEN q.qso_timestamp - interval '6 hours' - AND q.qso_timestamp + interval '6 hours' - ORDER BY ABS(EXTRACT(EPOCH FROM s.observed_at - q.qso_timestamp)) + WHERE s.observed_at BETWEEN r.valid_time - interval '6 hours' + AND r.valid_time + interval '6 hours' + ORDER BY ABS(EXTRACT(EPOCH FROM s.observed_at - r.valid_time)) LIMIT 1 ) snd ON true - WHERE q.distance_km > 0 - AND q.distance_km < 3000 - AND q.qso_timestamp >= '2016-06-30' - AND q.pos1->>'lng' IS NOT NULL - AND q.pos2->>'lng' IS NOT NULL + WHERE r.rn <= $1 """ - %{rows: rows} = Repo.query!(sql, [], timeout: @query_timeout) - IO.puts(" Matched #{length(rows)} QSOs to HRRR+solar+sounding") + %{rows: rows} = Repo.query!(sql, [per_month], timeout: @query_timeout) + IO.puts(" #{length(rows)} profile rows after stratified sample") - band_counts = Enum.frequencies_by(rows, fn row -> Enum.at(row, 0) end) + month_counts = Enum.frequencies_by(rows, fn row -> Enum.at(row, 11) end) - # Compute within-band distance percentile - rows_by_band = - rows - |> Enum.filter(fn [band_mhz | _] -> Map.has_key?(@band_max_km, band_mhz) end) - |> Enum.group_by(fn [band_mhz | _] -> band_mhz end) - - percentile_rows = - Enum.flat_map(rows_by_band, fn {_band, band_rows} -> - distances = band_rows |> Enum.map(fn [_, d | _] -> d end) |> Enum.sort() - n = length(distances) - - Enum.map(band_rows, fn [_, distance_km | _] = row -> - rank = Enum.count(distances, &(&1 <= distance_km)) - {row, rank / n} - end) - end) + bands = BandConfig.all_freqs() + # Each profile row turns into one training row per band. {feature_rows, target_rows} = - percentile_rows - |> Enum.map(fn {row, percentile} -> encode_contact_row(row, percentile) end) + rows + |> Enum.flat_map(fn row -> encode_profile_rows(row, bands) end) |> Enum.unzip() - IO.puts(" After filtering: #{length(feature_rows)} training samples") - - {Nx.tensor(feature_rows, type: :f32), Nx.tensor(target_rows, type: :f32), band_counts} + {Nx.tensor(feature_rows, type: :f32), Nx.tensor(target_rows, type: :f32), month_counts} end - defp encode_contact_row( - [ - band_mhz, - _dist, - utc_hour, - month, - lon, - lat, - temp, - dewpoint, - pressure, - grad, - hpbl, - pwat, - refractivity, - ducting, - sfi, - kp_max, - k_index, - lifted_index - ], - percentile - ) do - features = - Model.encode_features(%{ - surface_temp_c: to_float(temp), - surface_dewpoint_c: to_float(dewpoint), - surface_pressure_mb: to_float(pressure), - min_refractivity_gradient: to_float(grad), - hpbl_m: to_float(hpbl), - pwat_mm: to_float(pwat), - surface_refractivity: to_float(refractivity), - latitude: to_float(lat), - sfi: to_float(sfi), - kp_max: to_float(kp_max), - ducting_detected: ducting, - k_index: to_float(k_index), - lifted_index: to_float(lifted_index), - utc_hour: to_float(utc_hour), - month: trunc(to_float(month)), - longitude: to_float(lon), - freq_mhz: band_mhz - }) + # Builds one training row per (profile, band). Target is the algorithm + # composite score normalized to [0, 1]; features are the ML model's + # 20-element encoding of the same conditions. + defp encode_profile_rows(row, bands) do + [ + _valid_time, + lat, + lon, + temp_c, + dewpoint_c, + pressure_mb, + grad, + hpbl_m, + pwat_mm, + refractivity, + ducting, + month, + utc_hour, + sfi, + kp_max, + k_index, + lifted_index + ] = row - {features, [percentile]} + temp_c = to_float(temp_c) + dewpoint_c = to_float(dewpoint_c) + pressure_mb = to_float(pressure_mb) + grad = to_float(grad) + hpbl_m = to_float(hpbl_m) + pwat_mm = to_float(pwat_mm) + refractivity = to_float(refractivity) + lat_f = to_float(lat) + lon_f = to_float(lon) + sfi_f = to_float(sfi) + kp_f = to_float(kp_max) + k_idx_f = to_float(k_index) + li_f = to_float(lifted_index) + + scorer_conditions = + build_scorer_conditions( + temp_c, + dewpoint_c, + pressure_mb, + grad, + hpbl_m, + pwat_mm, + lat_f, + lon_f, + trunc(to_float(month)), + trunc(to_float(utc_hour)) + ) + + Enum.map(bands, fn freq_mhz -> + band_config = BandConfig.get(freq_mhz) + %{score: score} = Scorer.composite_score(scorer_conditions, band_config) + + features = + Model.encode_features(%{ + surface_temp_c: temp_c, + surface_dewpoint_c: dewpoint_c, + surface_pressure_mb: pressure_mb, + min_refractivity_gradient: grad, + hpbl_m: hpbl_m, + pwat_mm: pwat_mm, + surface_refractivity: refractivity, + latitude: lat_f, + sfi: sfi_f, + kp_max: kp_f, + ducting_detected: ducting, + k_index: k_idx_f, + lifted_index: li_f, + utc_hour: to_float(utc_hour), + longitude: lon_f, + month: trunc(to_float(month)), + freq_mhz: freq_mhz + }) + + {features, [score / 100.0]} + end) end - # ── Helpers ─────────────────────────────────────────────────────── + # Builds a conditions map matching the shape Scorer.composite_score/2 + # expects. Sky / wind / rain default to nil → Scorer uses neutral + # values (50, 50, 100). The ML model's feature set also omits those + # channels, so the missing-factor contribution is constant across all + # samples and the model learns the weather-derived residual cleanly. + defp build_scorer_conditions(temp_c, dewpoint_c, pressure_mb, grad, hpbl_m, pwat_mm, lat, lon, month, utc_hour) do + %{ + abs_humidity: Scorer.absolute_humidity(temp_c, dewpoint_c), + temp_f: Scorer.c_to_f(temp_c), + dewpoint_f: Scorer.c_to_f(dewpoint_c), + pressure_mb: pressure_mb, + prev_pressure_mb: nil, + min_refractivity_gradient: grad, + bl_depth_m: hpbl_m, + pwat_mm: pwat_mm, + sky_cover_pct: nil, + wind_speed_kts: nil, + rain_rate_mmhr: 0.0, + utc_hour: utc_hour, + utc_minute: 0, + month: month, + longitude: lon, + latitude: lat, + best_duct_band_ghz: nil + } + end + + # ── Post-training sanity check ────────────────────────────────────── + + # After training, evaluate the model on a synthetic set of + # (temp, month) combinations at otherwise-identical conditions. The + # goal is to confirm the model doesn't prefer / penalize specific + # months independently of the weather they carry — i.e. that a + # generic March day doesn't rank below a generic June day just + # because the training data had fewer March contacts. + defp check_monthly_bias(params) do + IO.puts("\nMonthly sanity check at fixed conditions (10 GHz, 15°C, 10°C dewpoint)...") + predict_fn = Model.compile_predict() + + for month <- 1..12 do + conditions = %{ + surface_temp_c: 15.0, + surface_dewpoint_c: 10.0, + surface_pressure_mb: 1013.0, + min_refractivity_gradient: -70.0, + hpbl_m: 800.0, + pwat_mm: 20.0, + surface_refractivity: 320.0, + latitude: 32.5, + longitude: -97.0, + sfi: 120.0, + kp_max: 2.0, + ducting_detected: false, + k_index: 25.0, + lifted_index: 0.0, + utc_hour: 12, + month: month, + freq_mhz: 10_000 + } + + score = Model.predict_score(predict_fn, params, conditions) + IO.puts(" month=#{month |> Integer.to_string() |> String.pad_leading(2)}: #{score}") + end + end + + # ── Helpers ────────────────────────────────────────────────────────── + + defp print_header(per_month, epochs, batch_size, lr) do + "=" |> String.duplicate(70) |> IO.puts() + IO.puts("PROPAGATION MODEL TRAINING — month-balanced HRRR → algorithm score") + "=" |> String.duplicate(70) |> IO.puts() + IO.puts("Samples per month: #{per_month} epochs: #{epochs} batch: #{batch_size} lr: #{lr}") + IO.puts("Started: #{DateTime.to_string(DateTime.utc_now())}\n") + end + + defp print_month_counts(counts) do + counts + |> Enum.sort_by(fn {m, _} -> m end) + |> Enum.each(fn {m, count} -> + IO.puts(" month #{m |> Integer.to_string() |> String.pad_leading(2)}: #{count}") + end) + end defp shuffle(features, targets, n) do key = Nx.Random.key(System.os_time()) @@ -408,14 +374,6 @@ defmodule Mix.Tasks.PropagationTrain do } end - defp print_band_counts(counts) do - counts - |> Enum.sort_by(fn {band, _} -> band end) - |> Enum.each(fn {band, count} -> - IO.puts(" #{div(band, 1000)} GHz: #{count}") - end) - end - defp print_loss(loss) do if is_float(loss) and loss == loss do IO.puts(" Final loss: #{Float.round(loss, 6)}") diff --git a/priv/models/propagation_v1.nx b/priv/models/propagation_v1.nx index 1ae786c2460b2916940adce468a1b0e4ebe8a749..a33a68217b6a72131b14a92a6caf912b4b1cc0de 100644 GIT binary patch literal 53565 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 IYN0y*A7l+$1^@s6 literal 53565 zcmb@td039$*Eife(WFVFq@+nwnyR?HKsot(6 z*Z2?qk8UHS!$OuXUFt94udp;yDty_0F>mvK$-Kh9H*foY$-LVCW?msUBp@I#?7!uv zmxzD3ky#Ytzv_RI6Y~!_Oa2Qv{TE3{NJ;#swA`}5h_Jxr|0yr!uj&7<8dCp3=l|gJ zAEkdZO(p(?+5d^{za#eFVH^E#u=UzE|ECkle-AIl|6i5d@hv@%8-Dv-R)%dU2N_O{R8~m@>1=gH!q+0RL+_`A19gpGW_!82)%z0u@2p5HEvtPz!LH1FPU-9i(dVoil)^>B!VYV+ z-Dvx0%X;4Cks|*$?4yo1Oei?To^A<-g2|OQ+M1CP=1fghUdm`VB%-tQ@0`#vvGo+n+M2r=L<&pHrPvp#M1J)Sa8zZV&TEuZrueWN94Sf+~a4OX&$FipDhltm>b3ui4u(AiHPH=emz{m=6`e6MgL_%M!3 zOmK-g`B2zi7l6S}5^!$PD-tUyC$v}{#61t>*xd#3@WoOe7TkQ!%z{_ond2R71WCn; zEepUxiQu9*HMlux0kfUZ1M)xSU|@p}K6bSg(gb~Y;lBf`&b(p;QC`Aw-)6z>(j(%n zWP_&@+t{BUZ&+ry9J+kTLa(W#vCVD)dDdYFBOk4UK0U>d_N5%v&!iEB2`kvxzAs%g zA3ehSRfpJ*8Nd$sUuRy5Euz)ZO2W~A`rcyfc{C4GfqPJq&zm|mnTpA+D|3&)R3*WeZ3J~(ij7&p!;5$Ua*2Xj=ev(d5zY`V@9l9%R&qOeL)e$IVX z-f|W%uX_SpOKzg=ih~&T@hkIRm?$*Y?Ww-H#}PedNb=~DihyT|L`K^x*{|<9cri4M z-AnaFYrSfc-v0s1{Un1&Kb*j;ZbtZNtv91fTt&P8{$j1e9ZA9akzgAmgW{lLu&6{H z{ygatP2DPmpQo3Rc?xFPaT~n+COIiOIWxE0%t~6n;$e| zm8%!BCs$9R@Ang^pmtU?BfS*wD?cUeu5s|8`Vjm5c`4BgN=Elq8(5i}j{)0}l{ao- zCnO(3`j;wVGdc)||0rNh<8;~35A`f>%2XUy_D0zDs~wL{c?5-TZE%m#T_U$ChwZz0 zmz|rF0ttgAp+R>dZX526x0cAGZ|{t^^4bX(5~sqHu{t>7?=6(x?SvSZiV?zNVlZbg zPCx34D&dlRZIuqn|Mnv8AsO(#b~$@}{|3AF;wt;pY=Z}u^&_zrZ&_VN9@|z`F1X~o z2-i2C5~az=_F_=wDn^~;#iMsDZDB3WTaf`Lw;SPd$pI);R>Z!%`|9$2l_p$?GlqJz zPvli#1lUiRkFK8;+4|BQq_6i~e7d_IhP5Q2+_Y`%uB8KRcALa551PT!76jrC_cYd8 z)*s&yOZfA=zc6CJUnb#`k3%=^6n*9Au}}R8jGAGN^3rB7>Xrj^^u(gWjFp%r(IIN+ z5`^U7qk;-Q44X`LvU`{7aKgTaIA-!VjA?#|Kev4(CYnD8%oqUbuE3lFkKpMgeW9bY zL@)`^1Ba{%thTp>gGVHY-JruHQ_}<2Ddn=BPYGbY+YZkS>15iyYv)+cjB5GvMOx(1363jE)2xDe^BL{3IVdQ<8>fcInIMq&{=@_k}w~Dq=$(AaNzhO&{KudMQ z02xk|Rq408n`!F|Y5sFUJ~oXz&3?T*#Z* zRi?7#2dUCNPi$3RK~yx|=!47eVaklR%;UxsXZahSvE97@4(}83KKGJESGxxBF)`1` zJqbTlUT+UG2X{h+rZJSMEQhE$Z`h@+dU%Y=;2*yOWKx(L)0%Eg>!v1w(u2PA`@IPa zFWYeky+^Rn8NuRv6rSAv9rFGCsKcHFws*`O8XET)c6fJy-k(ZxyrC0gukV2IR+sSn z!p*eif+EVlDuiKwTcM`kNH!|$G?Z$@QiEG@WU90qFH^Uq@4PIzmAW0g+;E82*U zZyW=eS6A_IO_k`n!wVogo!%+2q@VYu^Kl(baBa;jn%v(XC&gu=;()8zJw%Z|d#_8| z1GAw!IfVCnRs@I5eV}GS2(|VYNvAywqX!Lj_#MfK7^@@)0cWqUm2uWsyH$r8^A`+zcX-GMZir;gEPVhFh#`!*kUXqp|_so$bKe>5+T@ z9Yt=P)8ng}pOaBB_H?GL9Umt2gBMEk`0Ambu{HfWyXq~0vPXk){!9hh78#4W?_JO# z*oN;Yo`%i}+xWs~+eJqX<=`rXk?d&uTdaK`L;I<#@kYf*tj@h3Ek!rxw80QPog47) zFgq37P?&ns(iSePtMALPdSHfjjD zfBLbJ2I;iy;d|^qcPh0IDf3;mj&N^EJZji|!$jL{I3yvNAD8LN)jYT0oRev=QSuSn zT3t|mU1UezsDHxWBWAL?o$c_q=rQ{^(F(BVrD%6-53uXw_=f^L9#gBwZ+A|of4^*l zaHA%dyLGaB{Ma70eS|dEUjlq*vI&iN5l*i=8N%oL(lAi{47ZXw0l&YT;{(0jV8Zrb zmZe1CY0Ns1sEFa;Grpo%iZb1h76Jw_Md)o?3dTq7kViHhpdLLOoZ4TbwVM}p-Z=zw z$0xCeQ)Dn^#7S~@zb1FJ)uj{Kb#VB%1QIurz~qgRP*x}hg_chA_t#d`oGOPabfm<4 z*A~#p6EeB`*ZYur>?DR7M#G8djqqZ+6FN-Dg2dtZG)1c%rVX6zlK-O}HYr~Kn+yxe z>MCjXwuhpbzH!|2z+RZ;7E5i77ts+pLEKZ}0e`wbm2MsPmvoG&CKWgP;_h|d`IF%- ze58v!R&7$J=@H`qEhO;M(_(b9wt#cbWzapu4JS#vQc=JPIy7e#J+yZeNgLUZzYM&> zd>vl%_*ZdQ*Z3Qc$-f29@D9AX>nv}7HUm$YpT(iiCR1h6bkMt>Lc2u!c+8h%uxt(F zZP~jq?B*UEQhb%PY&{Hq`((u_TgPMKtxx3CsvQ2|;R;Mpog$V?s-OWcM&a_ZtN3K( zX1aZoG@pC1*AK1zKx9rhi04HOqDIkQ!7cedeSXgZBsGt+jT0vmTj^O46{$cEe+-2` zw?o#+A1-yk4)tWyO_rars)V_4p(|cXTMdHFXTe zK1!#PMJlv&hc}%0DhnCM6!{6sKYU*-6+g7m1M3Nci7@LepO@308|(h&uQT^B=TCd+ z1o2xudH*`oxnMxIl$&z3Sr&A}Y(sYAnb>CPiHUbFgUXj^{C4#c=J)#N zBZcdst#ddutldJpQwQ>(L_^{G=Oi9E>jJ#`-Jg$+Ak5&s0S!`dq-Vvk(DFG0j!YLJ zo1aERdetCUYZ28}26K~dq3262P|QBXp0{g}{L7Z)c91?8RVw1cXib<%EZLlwF)-)3 zvnVT>!|cn7tfb>OT%Vgk5B-T}ChNkutn5LYu=PCmUQ&w3*e6tJb0n#U;=xft2EUF! zES$Yq0|QrI#A&Jm?9ol(Q!eB{^IHWTw4^`(t~{6xJGl?Rf5ldtMQS8 zi&4ib4|3CwfX>7|qT4TAdEKW>b~a%&4EB)b#k=O=Z__EP`b-`RZgXTqzFFc=BTqW^ z!VRLX_fDkyZ7%5KKZA$wBe>S|!R(h{$iJ*@CjAyWP^Csm`u6r9`uIjX-(^`WavP%0 zx9peX8yzQsd+m1k6!{rFH*XL!J9Kzgi!Ap%a*9mTeG6}QG@7f<=pi`xg{ zZ-oTd-8z=u;P2q+CPP?y{Ff+h)m`kY+0QRuSw$aiI7VIn%4759j}RA}iwZ5bS;h2l z?9w<)OoBY=mK%Be`u6}RD|!wY?RoUUFj?;V_7E3zM?j+k(s56svFY4uK2q-po0zFi z3%MhoKRr=+eqD)e-zX=pnsSX3u__e(9RRb($H5S*4&gzq3C;bH%lc@R zaD@kjq%-3HU!6G_Gp~BnSpBW!{rg$8dBqjJKl%o2P+5Z&M;7vu$I9aFGBfe|&$9IL z0FH9<+3+E3H`k#`TusA=n2m^FogEIO6m;nOg(LVa%?f^N?*x9wX#$`0I0CymR^t8R z8)(!64YBIZ8VJp80Yz&W9Huu2W+rKK=b#)YOx3{4l>(JGpiW=i^}`?UW&*9XXEy2P zP&)nv+tG9eq?(HP+k3Zp?y@92EvpO4>reA7$D&9|Zhv}My^|Rl&Z5Jvnd8*_qYxIM z33m?np>vf3ATGaAq8ta(|r8~er%ut%}J<$ z#F_?dne2<6CQ>}B)CjNV*z=mzexS75O0?v17hLFFyUV{x!o>yNw0^)T=uoW&*K7e4 z@4Xf}-^cPjv=|cV;%I;QCoJDMpQR4i13UW7#uB@f|c)E@dVA%~TVe+px7|KNYVRnp?AinQhDAzUnHTreIOeDU4b>WoFVxpy z{f{~P;qURhD{TnQT2Rh^K08mF4?6MdLubIige^S!SqE$VXu=kB>%gXC^0cLQ|7`P8 zg_q52fZ{>}7}eCo%;aV1HLk!%Eq0^Zx+ii|?*|Z*Z-<%hCQ*sg7wHS9bVi?R^8&fm zU~hjH@0I{Jj`QR1HXp~wF3I$>v?i?nZ4bha30w#UTNa?Q>IPyuA`jLR66J+VRrW=iq_- zWELeMLo1v5;r5GBH1f|t^c$1r;+0y?=Et%jTOIj0&qZ)+P&t|VaXWdOl)|2MOQHO?9D7v!|!y=m~ReEF09WwQ-8820{Cj~7{D1T3Z|CnftvFiCG zL*o`%dFv8Ng=Pk+7J(0enc?XFM0ZjK*wPi`BJ?%p-B0aAZI*tgNpG zPj0~j292f9b&o(mi#uF3vH;($!PI!zX}&Rh2|b}bkM0$Zr?S~|sp-zkSl2KLjMF8E@uL1nEexW*(QZnZa&TYcoW(f%3;Mjdm6joB<=9*W>$|h#H*&g=IbVfF^9~> z{Pc#+USXs#Az1L68;qV=K`Mn-H?v)GUTR*i(&oa7c50i7ZUH?s=hdA z3h^>kfIm+wfjzE=qC*duvh7zQ8?}dz{u_fA#^*wY{Rp};Erh$=qIA*crS#Gm9q8x$ z7S41oLx&r-V0bZ`;KCXxobOA+wyz{BhpXYZP%9V}ah|!|If0tL+(el__31{Fy->A0 zn}(<=@)Dm!Vs!f(3{zQvhj*UG6A$CD)zyJ-=(M1XRVMs|XO`%_>=X#N9YdG@Tq=@? zF6JM^CgKY7N^Q5Tex+#R#my#Y5u2JR)~HX!55Y|G56S)?7E3Oon@BJZC);; zkvm+7@>30N)Y2%5YCi&@wnz+>1q(U_dbJIea3 z|3ean#euo$Q#`dmg36c`fmZM=C~N;fa-U2i10Cbof~H&?V`PS1kJ`xTJ2K2G&WqN5 z-dkN1;|dFMwIHN`Lc-vCtZBCk$@M9P__s?TXu&ylp>-EbP}_y}BX{tfS*FmlB^$$* z45f1gH8SM%A?$EZhkl#RK;q9PHe~onHbJ`&)jynp&)+!G+~3P!-_*Vs^I8qRuj;`% zy$t43BZDb+ru4&XLta=c37sqVi|+l=0e$5Hd>>{5PiDojgfee@Iq3k~4`!kZQBWGJWncP}MFmIKlrjK{PS*ReB zTD16(38olsya4AVFNRq@pIB8ve+Y+X?88ST=vUDt7!fV5eL93M8#fc`y1d{+y&?B~ z`~-Ei2SZ?41FYRP4-ISMd9mdywoi1Mtm%zkC-#itRkvfQeQ(_8UE+_UCdU(N)SxL} zW%f;p>t$vC7#5>U`vsdAQ zVm~@0_y-R8{R|aL*WkQ;HuS{KOE_-jV7PiP6>|D-=Hr`(aQy;xx;1h!q)xes#hT0M zpT7X>STGt_oP|`WvzTAz!!^_2qfAyFPpY{l^jPTA&>J5y%;vgiV*4DBd1?c1&J9QP zmiH{#qXry9PNC6}{Sf(Gg&4-m0X<<&{in4PxqI0#G3!0ar_IFh+y=&OeS*nb2D2?+ zvf$vi19)-adOpA*173$r-~qbEJmtKS@G~i$q`s_WOB42El>Qv_lTYOne<{zs8g zgeG}2UIY8SvS9j$C*YKsDP-}p37DFvMt5}l=99kN7cKoeolWTO0u6mfKC(QCeO8?X zZ*J@GcQ~GR=k+kz&Zp#*P7(PN7K^36iL7jr1CE~Ji+OT_0E4>8DFp*|J~D+^^&}Ei z*I1!!&?B(a8He(7;<@gFTxTr<)2fSYZa7n+S>*fp9xLt5Qx8_m!CV7fo_}EkmG(;K zQr#99sQLmuo=D>CCEmR2$~5w9ZW22(Zv|v%%j0b&;Eu`0JZ4`!3zFAoj>m^$;P^qf zuptkJweN|rFA_sa!MAkc7!*s2Z|Y*t+Hh zx$UXSr?g1p@G~x`S5S)|b)CUdeKPsgdw%ApGKLL^&WC~DXJFQX6Y#z~lic!9fVT~C z&^2KTgy!|do0@SfYV-+KYaLJ4hkB762d86W&<$qS>vsZwB$LALHte) zjm~%PGwUV0*zcMO_!;GjUFQ#wjq1wabT5|3UYEpNjn|mgIGDz_Ny66;zu18KSbU<> ziPFZcLioFGR#9U?T>g9{t@1%cqPq^RPu~OCIv#YcrX;z!@fe$R?*VjPl|+YYl8_sE zj?E}gpl@}uQIH)#r?>1Q%j%>^_Fz@)|HqB={a#Bth9sibwjB1=s7By=QamwXAQmQf z!1eF@S(vO7cW`nLW@f(@9%T7Ky>I}J8s3G@3){f3DvmG1D&h9?^+0`Jp=5D`aAfuc zGSl6Kj4fG*hjwIvJx`*`#4N-$Y*DRCCP2IWFhv%Q_-glda$D5tuW7L4d$g?#El1Tk#x0Ml5LeC`jQ4{ zwtN+FcPhh=+8 zmcLg8wEId!=9v;wx-}RQmik~&tGb|)QVUyOrl3-c6JGtfn|Ns{KyzXWIBu1sqi^>5 z&b#^`9~8s-S{+7Z(<{Q8BSYD~R~@2P_9_r+aTY>7Z=iYYZ*+SC5yDi&Lj7qd?AxMZm}74ny|wD1#FPo>0-U4 z1&3mfpGAhE7WZcKm5PRIr$+LOGxp%PFbv#IIfKH4 zV(jcnWA{rZkc-Pl;^gs)oS!un)uzq>zn;$oX69h9?PWn+)Xj2VCoz4eTja}+BP6BQ zzRtN(#QBf|9QRU&;HD6gSNPk-V48;Lufs`~yCsrjRIwY0j!Gl*Wqt~oiRn1}Y8+fs z-Vb-GT6CEgTR>?Q=M2XVa=OFv1yT3w?-CI(lD?GRbpy|=NE~IjkDY6*BBrLP5a;lhB|er1`=53Um6f2&d=ahLHHb#; zn#g8;8${+rx#O#ZR8geuZqimC&hFZCvg&yjJf5Zq@|z+tIC27Ow|Ea($xf_8O-a3#AB8@#}R<=Uxo1Jn6@ zS@B`f@ZWnx>plB1+0B)#&{vho+-+saTOvrIbp~q7$ne)kPU5Wv$9u>0BkGmr;H z7#*NQ7mm&)OXXBh=lndlvHv3~_vpdxLj`bi$XBNDCY}xOxI^mV#uL-uSINb(?nE$^ z!_~$y)fPiriRr5h7}G9CjYbDBpU@}_OHviZX<&8vjRmlH@_MWrm4FAFZm=6hf$YGu zE#%Wi7noOd508ZUlel~fzF?{a54|Tz=Y+py-a|Wu09iv)x5fmX7;GZa2GX=cR7aY% z*W)c`BhiLrO=90zK`i9wz#5$$JeaR;G7VQ3d8uX)HqQN{Zd__KBOGpfkKBS0K-h`oJ zeFDght!1kH){`UOwPBRTMAW_1S0 zSzP8)G?rOQuJ_q0xMmsi!JY;XV(BExDp`b$(k^%{YXSBtbs>H3*Fk{!dDfb7oK07~ z!YYT~22B%zjosKnepp_^<9i3elUIY-=3-sEG@+86Ow(pvqwk_wj{#O(9YA%B^>Id^ zGuty-kIUb(#DpW);bT({PMBK7e7|kS-La1J;e{{g=xoNM+KaLM_grDLL<+9h(+_9f zynt4rf2s_6?G&%6f+>4O;l$;Zv{=`ho{a5Fhxhu`y-B6`a*ie~8y$-qrDbu{nm+hO z>4tDMdKgYPbP#j?dXZ%VfSj^&!NYpe^t$d=wCOH@a+_4jJpx$d(dj1E7@YSSLhdd@@1R9+$Z`ZB z!5*-w%$@qD%F#y~2hroF;!xlE2bP$xfmW51SU~jygYnCwiLF1gnIzm{i$`&etcR$ru&x?)?y* zzN#RGnuFLxo3<1s)2<`sz@!$@+KE*zjnf80my{I*Og@i(dDb9uY7|N>dh3Jwjiqm5 z$I+maRM3{Zin{5U@Lr)0-7}ao`N_X=H#9*)rYtEtvK2Po%|_*u3*o5U3LNcol%1Ga z3T|!*=+e92wVj&}Gt+S#wU4)oj8$+$czme>{5i7YRF6AkFh zfTZ6iVdwDPx_}u6Nm1i|(za58nuc47F8$2LZ6jZZcHMJ@=r{Xd%)Mq}#`eIyo*rUt zI)FPWRAAvb2^w0nip=!iC2Z=t#A-uZuwj!Yi5@P4**AaTrT86K(m77}sbxYx4QoWd z+(wk!_><_?Hxs2VVMK4X9TBcQVRZ{*XyT(i!sLitRK6<(soFho)pa<1m3aexBs>$v zH`Iut-+mPp$kl+Y&ql#Qg`q`;E9)6(NHaqd$Q(%ySJRG=&*n1xg6RmJ;i1AWB-n9< zFge_jJb`~LyNzy7)45J5a;+2d`HzR&XhypM*It^%Pj0wPZAzNaEc;?=tq`J8lY)<_nYcaP>k>?BV;!tp{^p_WXU^P+o^0wJ{)H zKl-9o=@$O#vN{fDo8WKl6tbo2FrJa5yz|-~w!v))H!Dtn@s7&ie`FXxxKfrMsQk)a zc%-7ivEi7%^9{3&zKh38CF$31K`?63AlN>?A5IN91wpqg_})cFK{nJKJw=0f%8(qc zr{cxo{akFdwWMRZ^=Q}`!iVbY$HV18@L{qTuP1eZbmlJ@sE~t4pI(Nu^##mUxWxJ_ zc`S73Eut1(;ZU)`nZNCv$wsE$Vnc@dVvVZ_uUPAYMTh!f)7s&UrN=J(&{Y)(S38D)3_~Hf`$ID#1*a@Y*KYPKIn~0ADc>IO5teqoF>UXe~=(A7U=QD+#p=2eVyI$ zSx!!NM3I&n12SM=?|EhGd|_;&B+l@EBK#V^j|H5&AqvrKB2CJ#iPNk`;(0WYt$vy< zq(F^mg_I#&d1H>3?(KKEcE2yqIwTE_k7Qupw?sk7uS67QCV{&`jKOZrBC_h*jOykp zRUBc~U9JDH9~kUSAlVOQvr~>gMMf8IvC=)anCnzz*^~B)mVZnWrmS(sBR;J}(K&`~ z*fblKC7R>dt`p2@vMa92{>ujY_EfLD4CI$eypT1mk-UuD%2o~>4C^`=={jVLS56mOS5Ky*DPlF#RsFfEf>(r>MZ$26w$a3dY@wUWzhZk{5Y75#?nKB0$e z;~a5E#X^|lx)g&>=88|S4l>DG9`>X;a4)$z5V5u$-Hv5}^Q%ZOz3E97d#Ts(QLl^;*5fF9prJowB=Fr7A@ym|GV zP5qOP;Y*IdkG7-e*Y1FWqDF}(^%!xvzUz>!O~suo}94&V*xg zRXH@A!dKp%n~#=3XhR?9D653r zcV47mQzAc_|A<&>tB76xTtNRl323_**q*WT=qD*txG&)eMRE0{r%(mjbgO#(TeA?e z&rR$ZbOL0j%)+wt-i`W!e9`^Y^~_|+JKh<1nim+S(qVx;Y~+XCuyF7!G4Z|6D~p!$ z$RnS4Rd63ZI<%QTwTk z7v_rx58Q@RRaW3Vhu1i2DW&&vHK2cSD*716P*oEN8jkVa?4qIP=CiGQKDVR-LHf28|iK zxVx5(HBp7qEiTZveHCF+R}nq*S^sm#$;QVNyN2HvdFV#+&5>X5okW;mVAh0d3hd!Z z{3v3*FNRDyU0!AO@S3RO$3+)YiN#{as(y$sB}8JQH{_b}DEN@)fPeK4lW&3-$-J{h zG~Fhf|9rDobXC3^byC7fa#Vk?E;zxu_G*(oV>IEr=o8tgSSkvbVoP3!%E3IfJ7n~< z3exCxfSm7*M;=ixOW54R0zCWb1i!azE9yk;7JUnIA#uO=iQfLv61(T#Af~CQ1oWzL-IPS} zFaJVu@Yxk;{C6;XhH6rt?#>GxCB(`j2k?^z3o++>5Bp%B3_6Eq5!!u_IbD^2#81|I zq2v^tyrLbCxBG}|$KF5hvvfI6&JAZSwHYM!;yyue4C2;fv+>cd8vaBj0*e%;!O_a` z2zIl@--e$d--6??^)(X}Y_;R=o9zH_9V+$d%?~;K;kEf^$n$|3pni8Dt{fdC+VY0O zl{SPY&j)hhk|p@~RDn!+iC}Mf9>~27!cHwWviizCW;N=)@JY^zKYkD)sxXlfCzXxB zYbLW{!ccXwsvzgG-NlZt+mSAs{I)+gml{j@Ja>n6e*&;R#Sc@vyv3$Fmx_muZ{X_# zFZ0hU%+SfJ*XI^i^5P}0+5CnWzGy$;m*lm0T&O%hYVHCt!5%!W?^N7xJsulQ`C-cT z8t#5{G;uCZg!?bwQN!aJY{AIwVrlzAKIy59*xz4?>K2b+IJJYT$zKNQ^Z8P^c=i! z84Yfanql0MbMQLo5oArA#dkaj;uUs7>G{CpWY>Vbs5m+k?M!rO)#om*K58M~Jl7cO zEM?*1vSdvCdKd0*?gXg~at*bR{oTdhoI@BHP_ z#3vSKg`Y#M?~XX|c03<+bQAv4OW-$)d+%awzDxX)YS^t?m&IGoT2y&2NfHejBTvs% zs8c(~_pKD9sAtF9tmPaX)xW|FMVXe7VE9<#Uh zU&(9-39(uGJ>s&umh>^v7r(G56i=S7#An9sA_p=*RW<61xCKih$-;U(Q>Dx-$2y9S zwmI-I*5DPf9ci6?i9bG5 zNH$j_bIrADVdJpv*i%@{RF`e!fA**I{bm!{+UYJ{+5YGjB4wurRhM3fR=twB;A`>(Yn!C- zvi=~k`kh1K8qp@QL9D`;h3`h&fhuAZ!&uJVji>!(8~M!M9Pae+aB=PC!D3uFT-=i| zhT3bT;DDNaV#EF8#pg7%N6Y%vQlH8}qjM~8^R?TavZkL;xKF1Xf7qr+A4T2AEAA?z z_xk5>?Zjx%*1HS~@06nJiv!qkXAXDm=SS7l?m)z@R$lcvO01$`F22Mvn1abIF7ZWu z^uGKt^z->iVkMuIVl$s%^w)Dw9IRj=UR=GOOB8E~a|WE{_p6tSP1Ls`wK`5mtSO`c zj^$#atUuboS4(`=$y03gek-5)N)BvC*3rZ1^XbGFGU9pb@|e-?w=h3?7yGLj%)b;| zhY!ogp|o}tvDP%Z+b~=7Jp_*i?{Qhd6rmO*oL&VJOgz{SNxT=1uuPftG!2c|6r z@zKjD=WL1jwbp{U!f=e7avAgA$iS(2Yf0L8G2hYhfn5a=AK}=fK;T%0ME z7Egmkd<%O~R>^$U7LjFsXN4KmE*mB@a?4NH zU*>@uPk4$~e?3BG98zF!j_FrF^moRs_iKc&$2DO|)(lu$I)LYln#KG7K1g;cT!86g zF0vLMX*js18hkXiaCNW4c*x{}ICpvs&AZnQlD+p_n)JiC$%VHr=bhRB3;sg?(wSn@ z-um0X%qDV9`VtQw`w@?;{~)ys{YZz365vUIXe_%(lhzX0~+e%*a#KQ@e^Wewxsf(JU`0M2 zax_9$e=45vQjZG_*QylF^T;}JPAH(?Ik({+t{(+6GZ&V@c9R2_f^_TOOKF4Mn4NLCYmmcxU8` zyY%(B^RgA-5$*}YerOX>MG3^_$%qwf@<;{ZLVe+q7kPlgj~k zKE8n-TX_t=Bo@&T)865tyiYjNCYtYCw@=It%%nMMbXY{_01A%g^w*^eq#3GwAb; z_b*a)33>SpVwYi?xzd8+ z{G9$I@w1?T(5Q17AL;5tSo~n~>$tu6cKvSAbp;tx;V2figeDW^q8d`z6-@%iNipMP z$)tGSHwGV~P+Vt<9zHQ7WYi;atNt4~VK5nvs``n}#)OFLn!_Ndx29vuPX|%X@vr!8 z{2elMs5wk+zFfV%s6pi5{))&urQoWHGEV+>lfm>PD>cu@_cP>i%Cf2a+LeK1KwTmm zQ@gjf_HUdxdG}ih=B6oGqBRZNX($51`JxUG%j5EH^iu z#Fu`52VZ6mVuGd?UlU+Q58U+^tGN#0gF+Tyi{UL?`%8|SKQCrs=QByIM+N_-I1n!B z+~*g)Gx%86Dx`0`PWGNE;%n3uIJe)`yO%ovi{|%W&`^D-AMv+(fOQ^OdRq%0RvkfQ z(BNj18=-FA1w3defSR$4_&PFSO7a7TUM>~I6)TMD(gcykFSy2*Ug@Idb2L+H7WvD89-nb;!7Mtpzq zGM;H3DlQp57E^DI;hQ2SQpchqn0?2T>y0cSUo;+2>+Gi(>3tF6bR{q*{uH|mk6_7L zY1;Q?zVO+!71e_t@<(=RRDLycTBV)L#~mo*=c2N?vVjs^`6)tZUaP^jtJPr0U;z|* z^RnUIoEwc!XL~*KA?>F-4!UNAQWHOdbN39`{Y(k;-_^ovkGptAZ9i)oex8_aOXdxb z1a;AG_`$G&aHiS{i>BAZb2(-4*+&uNd-$f_S|Ks1eK-J1q@R%L>kZ`ft^)q9l@p2P zMtGFE4(gXJgKuWN`?NjepHk>|<;mkvoKyCimX+3_2q|+;0nv9w-IoYaZ~Q6W4)7qdj+V&4X*LjhKGo z2!G@d%Qv0~#GIBS{@~t4l!&x~FP*=6Oy7Ev@9QH{bDb*a_4EZg`5JZ}pUE?tCyJ|P z)RKb1m%%ElH=bSYKukUF!H&$S-15aI48Ii%KG{ZKGN6^%`lXR%{~y))Ta0j6uiZ^o zcJuv}r|_G5BKdrGjwsz$T|8}$BHr58Ti>wJ5T0+%5|VGVr z^7ga9juP%YYBTF=EzN(_rsKH|6abe`3SskYZg}WRq-}*_nls zjQgA$Q7V$A3Z<=~rP3fp2~imd*@aN4DC7H#q=AwsElFu1qWUGN{Jwv}_rAXOKF>Ml z^L`(w8c<`$qpost>gjORY8hHL7(*vMmu2q;JrUYGm5ggW!ue-yB!TzCiBj=JGW4yD zD{yi}a*dHxcfS>ib!b5M?4F@l4S;21Mw26ptw~~67Pt7#3lz9`7%jE7!Lm-`u&&zI zQDpUNGGj&|7c(!O^||~aV`?JMvWtZkeme3{_f`(Mr| zE`r}uH_)Hhqqt?_8|oG_g+`WZ(jV2aPVclO`N{Ma`KXggx+O}{v>q*f>h4?AVyqGC zStHDsgeyC$SV{@|QY+cS{}qz^LJ%AjpZGx%|)V)X0R0s8Ura^_bq!Va{|Vq;zofYX;CNW6X! zY{y# z#*IRN?{~rL{XIG`!m)$P{i$A7A%7=O$P4II@-_pPcs2EXC^1f#S!*vu__&a@(Hg40 zvS$(QsL9d+zazwZ!64_pONQUuKM8_Otsr^EYHrtJ5%y_s zDr%pz6+{PykZbtzYL|7BtFM{+q6^zL(XYEys!VgYG2NCXBD19t%`ixZ=X;ZAeSj;i z>5D}^YWwNuxv$|zs5gooX9!ilY?$~lS$?9_67aE{f}J^)>YJmFk_h>|a0NKLcVrs> zDP$DJ3H2p4>u@V@{)nprb@iuZclrGw3}( zDZ+aT;Gwhu|7TV!u4wrWPbs>FYy7i_=2T^N_Vo#P^?C*J`tgPa=Z2!P{yLsZFX=z>%e_{$4-HZeJco*S*{D&<&>*&L$Gf>ORUh01}0F8@#g5TYr$@Eu# zF<)ap^&26c2kat)_^c7V#&`J!UAG?FMi8$4nrQupj%G;Z7s za@Up$PGb!9j#A{IeL$@~)!g&Z}9&he33p?HC!_JYMi6Z#MPc@C6y!v{k2W zGle(as>0lFH99C9|32FMgXkH5!p&#D;ZttoNfoR{TauOO#S7!fU-wR~_oXc0V<9l| zR*96&a)X)*3y>8Ng>{;W%>CF&^15~=y7EB;Mow6hfafn!Nw)(is{cgdpIkvw*qgr5 z_YKe07LW_h&YX+!W^{LADESldmYN8AWN+?HW&2%1I4&&`8IKFZ&uZ%6l(P}(u)0Kb z&S;a(r~Rm}m=wFy@BrRy*RArpQjJVqE@9_;KdWPpZf2W!2iR?*N`vqpa%lb?@+}_TzGn z(xsm3(eywb`D#a#+r4jbUYaF0GvFs@x8e$3btAvJ*-{g373q?LciQpVSt=xSx+4V5 z8Y3_&sKYB~*J1^%N9qmaz^9htuD*If^o1BaxaS`F`KK3&ztDrFfyW#R*U53#3!9z7 z?CS7tB}urZFG9lCr=jBZAv~dU0^W9VE1n$Jf>m~}M@KTv;n&M)AQ~wHfzlEnuV0J2 zb{axmsv5bz(Vl#597_TMKch}#6EG@Eb~-uwkD#LA4{mqJa>~4bu~g6t!Jf_nd`GVh z-Is4h$Io>MJ|-sMS}Te}qt2lU`F<=q(-cgfzQnDY2)gZU3d{3ma{0+hq{uBC$8H@& zekt|XFEbTA?62i6Pmbdp#HGMJOBb;4+&@0+7!DA(#or=y$$>~wNSa^<*DveA%Xw+I zqb47lcaKJg53~yoyDmo~ey2FEA~W(hLm$d3MX}4jGk9~39%!#tNAr{R;T&oXN~8aw zl~Jov$PRUq=V6R4Zy!Oe!=XqmVFGD(9YF_6bhz3OU8o&!Mt{~SlWT#ksPj-O{;My6 z4X;)RitY-Zf7o+w=J8Q5`>HG$H=C1r%C_YC{suwKfH$)89*-_we1&|wv`E?a-FV^6 zVN{Ux4)eC@xBxAfWJ!P~PTFWQ0nt`P_s%i%q zFA;FvcoCO!O$FUjN?;OhFR|pWoiw6&6p7JDW#Lm0dt@3*EbZjk?DZ*7du|GOcfFYo z(|W;|<)T9V1C!UTC(+Q@5!m*y5zPC7+2H;vkThJz#)#;V`F0Az`}1s+S}ODq*cqaQ zN$1g%_+7|*aw9CB_yvuzJWCuO7sDQng)k(U3L3UcV9EX6Bt=P!&3c+nj&xo}4Sx=S zZd(;DkUK$-eaa^<+h^kmo$KN3e*t9grf59Ts}AaWs&M`lLkJxSBwqs6*jVQybm7w# z2unYqAKv958*vdV;V_!Mvi<@tQ4?s&;cN80kXv}JxedO0_dvnJxzG`G1&aA1BI3l; z*%|TVh{t!q!(%gO;Tjuib$%)IExnG`dLbw}^aRNT1knc((eQJNH(aT@1C;^a1D8?qQw)(xTk`wi%r=Y*w5T|&f07nfG_Ri9hG3w|wFNt44w zAa#xnQLfTMUG<4rv#*@%G_9v^Dvv^1>QBLy?xXa$W;9f*&n8w~QY=7k65ly&%}TZg zu)zKv{!}jq4kF9h)hCs-=VmGy75EDeZBS&*j+>~Y)-$a8$c6e1$BH4$SJEFZbosumQuNZu1FGT1@i#Ihc)N)~ zG_mj%Y1pXCC+;gCErVC+pm_@PH=cwz%R=lf>J5jqpTS3(4H0UpEUcr2yb2KJXg0>f zH;?(`M8`%#^0ScP4hz8y7dD#Hq~PoyhWiN1O33QKoZlCrwxY~RyxqB^t*TpwOR zM=p!Nq~o{9-A)aV$&x3Fp5B3T`adDMMFdyMrI1mP6r1~NH=|BfbmoJ5h7qs}1>S5Fs4EV3sc(Th>oF~Q8adY-uE>p7>2h{e_ z1g#x-x)Mm-zdx|=`vg4tWhR>U^$~d)YtPT#g2<+ud*Dp^JrvYnP6O z`r7&|`cuGT^{?wlb8s1!Yp8}GyQv`cQh48u6wdayghRZ_DI^;60s5ccCfimRvYE?U z(di1|8J}!Usv?>YXHtSC&mE^XF9jjLW>;oOxWOy$<=|j^1?}zM$MRdv z=;(mCxICICeeua)^4*gD=XILwSCVGSB|nkhsj1X)%tLauV;6C#Cp6vvKYH2s2A$pb z6eqq*6|A0SM=wm=1dA4h5(%?3$euZiy7rD0+%5fzN%}gJA0z$057i*XThp-eCmj+$HiHWeJcev$%Rs|~iDN7jE9|o&A6@^N zjU$3z;<$04%=MHcI`A}$EKPBv2Xt4^sMl7+kUPQKY}H}iX|3q@f&=84;XW!>e2j@- z9m~dB1S9d)HPBDfg)4-mX&1pbg zJS+X;px(FUiLJ+yl*V*L7r&(eI=Ns9FGErbMa{#Gh!d&gC1+}g0c!q$rXDM zRw!g_&XjhdT9iR&85pnvu}Cud!!2xh(HkYc{)B=zOeHhErO=t#o9U+JRV1)Bf=D;X z;Cgp!rn<(Q4PCFH+}6_&GcS*L$*x5yk!PsL+{KQ=VGH4oFvpR%m`A(jn9#~8qTK5o z9o(}p2yKf#i+u0C68zl090_hIf+&x<6Pq3({gD{R{qq!itsh6`r?t@WM(2^!wbgh> ztP#1e`w)pJ3InohDLjiYAqQK+XhvEWa*CUWEuNLq#<}6-$TS=NOfW+o6{XN7NA8QEjfn$=4$>tI>yx^dazl|wFP0kOUYTV4o7A;vAEd9WpZm$rO zODmAdHT^j0h#LG_Hv{X;O~>yRN`U$k6Ih#Y7FUjR;8#oX1+7br@x6qJWYhC|=t-C= z-W6{I%B8J%;fHdxKy!`bhD;}}-&2`f4-kP5+z?jAica}gpWVzOo}D7N zyjKT0TF-O7!-XjL;aL)<7la?~R)I|q+OV0|bvk+R9HRE_2}!j&B&feU4Idj@L^nMB zOlO~ohSJS1(8kPCdiud$ICNk>?XV6)eP3jt-Fph#xVVL@SR&*U#!iN1+3Wa80eNIk z#Sa>KVwm`uoWw7l5%ekZF!ku=skX3Q8htZXkd2ke+p>6CHe(OEBz>IZUVTO``Z+p2 z?r#ClQZ=L@dI#$yUO=<1)scw0^_-ho5gBrkhquY@;PCQ19NHJg#%rtMNQ0NuPyHHF zmvW10Piidn*`3VMtWDJk6^DEgJTq)Y66-C= zw9jccn~S0Pu77FE=|=FMHiXZATuIi*XJXOsJe_ZK7n)QTkx*Y1*4vRF;5wdCc`j1m z-#G=hev?LYg904-T20oJmZEGeGX^f3KqylI+uy;YvG){mmF_|!!{x$!Um!c8G=uF3 zlBQD*&BT={y(o0g7Oeaz0zYn_hiCg!nk4N}?SaJH3z^T}vfh>G#RTpj86ZNBZRE<9xKSWjnnv<`21-;KE&&PvWfRhm-he zv!S5q4Qafh4x|3fBo@CzNX)t!ka~MHP5NO#o0D1vCe{Z)W!@qhd2>51JhTt;JSs?7 zLOCi}F`jvingI!yp9#t@79f11of{Q7ggiH>u`extr0hWeS>;oRQ}aJ@d)$-B1^e0T z)`n4haL+PyYyJfkcj`8ds?~vaXAJ4hSsA44qz9Q1lR*aTkJIg^lR-CDkZbeF7$c!w_Iq0CtvTO!~ndW@RYB9tz|2Qjb1Dj{6~Ys^&O9xI!5MU)^Jc5&n!$ z8H5^(rF_MrY`CtM&s*P=WL;lBQqdkI>Uv*_-b$9@nQJdf-qn8K$Ahlo%Xy3BJk%hI?|vXwG)tNFXo6#j3f>m15k| zl8P$Nb_g<_*pr$k(~(!30idNH&_#oB5LBFnFH7g*l@1(sIwegsf4bta_mYuP+&I|s zEffDdEkb@8DwDqvdyzH%h|XS)!lM(q(e6K2kmX!AJXuOo*u#+`*hARIdh*8UVP?8u z`Z*<1vnT--Io-f*VydLM-HP0?O@#$Oh|TZOkho+m?6fx~mqmP`-Z>R^-(JJrERbV= z`|s01{pld$C`xkJ4X}6^M6-3T&{R7Y{(SBv*l%V5U&9a5Resm$o=2W6=9(REEOnlI z&RWQ9V)pQ!yMNI$2g0FsSup+3sLl_>=2Fim6wjEbM#t)xf$>&T_Gh&Ono?8%Ha%5P z{lWo$hvkq7o->4f$3&dx)D5jEULd(si%M{%Ft%xk>V1zQCT8W-`_x83QNmh0`}T9> zw6B;AznLq{r)a>1ePejz{TAd>%_(?sZW8MiRMU1r8vUhM2Mh3S?6P0zSopn-n!bO6 ze)V8{@6A-W;5QeR80iUq9(RN1f+&p39D#jQ21lo(Akrg>U!+yirotYn1D?__=WCUI|gY;W(C>e|&P4yqG!+EW%ss5+&e3f!L?z6Xq{&5ZD zuA~kX6zT9;1~I6t{1#E0`X0BhS&c^P`k{DlbEKuFN0XOX(uHaUV7>h@-tCq`wVjN4 zjhHgJq<2U#YajrnSuUnyN8g5m`X-ir9)s-FQT*i?D?aX`JsIN|O`Fx`&8M%DZLlcnHKE)>AoDZFQ zBEWMiBabqZ>7P__{@J40{68agh&D|DvGks5og*5MB6RdTvoWTVTO8Tix60tK&jN-^ zbotA|jPJk1Wu)P+I}X&*Cuic@X|b{g%G1c_y{4!!vll7sAI@hpz_V^j}v=TLCbJ+9*yL-C}MF9)j@d0tX^gnG_D2#_Yq*Zs~#Q)+W)$OA+ApP-X_?=+Py zfnr2ec)0u69Ckf2Mbi3af|dT~uxzX^l202$B6iM#<(nfpvR8wcpAV&B!eoW-r);F} zrhz{-29w248o8=vaxnf`2nozsMK!{^K(C#V;dnzhseT+!8SMhwmg-P`)pca9`d-Z_7Q%TynSlYLvg9Q-#J)-qRXPO2 z!v$V+_ztDwP6udMMmSp&I+}W&^i@q~*tVpptnJ1gl zX=l}tcZNAmo>SG}M7sv`Az=^4I}aVy5YG0ZH`4UE3T(bu2_WB>_@%~inEE|QINxdj zLDq6=dN_n0t?h+*A@lh{za1pGCz@X362LTU34Pb&$7+sW1*gU;`c&x{^(aT=pRF>l z$^u-vpY)U45v-?DxcKYq0nZ|I`Q9AqYv+2Zx2;`ChFpZyZ|zZ}g1 zU%5j_uo7Fk$Qpi3_$73Z&ZPN^H2G~Rl{l-_mneQahef_EfatO3kVdO9wus$DH2*#& z8&1~Kvi;Kh{CR_*r+9*kj5&(;9qS>NvV?x2qC3QS+X)nUlVjoBK8X9^%yGGY9o1|) z$*_kKyu00nbRB==l{0>^Q;LiEl&Q+VAB&)8-mHfM3QhEcvMGD~TUlI1`U@+bFSc-^iEMqN4gpR=SV31n!1KCaL#8D|H1P#eM z@PPGatQA{L4knff&heS#d+7k08Q_W@q)D=`FJI%j$$r%9K{uXuw~DB=rD4f{Jh*jQ z)p6{>J&-u{DYb0);Mh3!3X~r<B)WNoI(Quj%7VMXO4`tkfN5@be^%ZxA~dhi+KJ-?!% z_6ihC2Vuy`4g8)&k($C?Q2AMmrK)07dBIs=YB!abh#Eph`Chs%Jb|0B^{L>8U>S*A zy8(*UiNn}wdgQ+umV$8;8&PoXENE5!ge~L>kosmrB3`l>0@5}DmMlcg%O&9Glhw%N za14se5Fr6cd+;NDplh-uL4R}uwK?q%Ye_tf@k)f>TgUKy{`<({-G78kjv_3|bmy-q z=Fw+HW>Bb5!1cvBFxi;`Y+f)5UL_^qf`k+3Motr{`eG~a3Ad@yaP%;*3d~oXqN9X;iZ=y%XxW=69712CV`C?>z8{!N zD(&Ku)G$O^{>EXcs%+ZBbkI7VBUoAHMqgTb1wI}^Hr{&1`zS7W;A zk^k1AUB2_lt7ZKH=Y7IHie@L;lcy?Vm9*%Cdub@pW<2C1786+)2fELx43+dI!`2%W z(7OJCz&Z1aK+7zbcsF=K$#bF8xVRVOKOKfuV^+~<^JH#};}_2Rc_h5iRN(Cw7qESc zUVwI?1Qgx8D*RUE!>`at7I-I~P5-frxWAFc(iY7$Q&f+FUwpo)5(4N3Rn zdNO*)boddtne3TcLaR+Z>Ctbe;G)!B{NMFB>{NJ}#7iF`Yqnh#NY5WaS7f)K^0>P= zw||XbL|cLGJVLmMQ9(2-HvpHN6(GyK_C)qYFBkFQI!XLx9iSkERIPTV99nZ8WH zO;&fPT&^VS{=F162JJ_awzN{0qCA?uMq7AS|A9_amy+L}ZAhkmF1EBj!dx0}Rw)E} zI20-YTdfm~ueBL+W4uIJhT3wjy{MPEKiv-t*^}zvCHGPKS(oZLlg<(oPdU7QaSyT2 zk;1;WV~~^j9rWh!ooW^R6sjw9wU4*n!Cd^0pw|anXlzF$I=&gBznfHq{GKejI_3k~ zIqC!2f(F>|`)s?YXlIno;?-bns)CwV(P8b8?G&ONpt0om$3v{O?K zYhBt3sd^hBW8WW?t2~xwD7_^mac(HUbSHLOu@c_;^6*4agPfl89g4pvW3livf*G~i zEcT)t%?LULxthUna7H1@PmyAa`Xi{Cp|GZ}SpaqW!r{00O8(Q6G9tVFFsUliV?Tcr z?vJ4d9W{J~dU{_XZ-qxwU!^*1*`>|%9f8=xp&a+ADX>Rn^C7=T5_fGqO1$=@;P;Zr zzy$=d(Vjx?xPrUM^Em6U4&Oem0)3d~0wX{A$>?3zNJwo9E!(Zh zAGxba*PXP354=4!_K~8h*A)2*ql5hG+Z3k%J5I7LfM9Ot5}36ogN&_eCJ{3f*a_EX zv`spiepMG|f(^RN?Lhgal?U^c%-R^PV+0cSr*j{MicKz8{bXGj!63I9^@0TI&`!=0EJQ@u} zIjXd&%K%m7Fm6SVAN}m{5;h-jW<`tMVu@G3;oM*eDoQ(xr)+oTJ@8{e&atuN!nP&s zKh}@^OtMMZK#SnAk15!dV_b1U4)tz4OEm= z$0Jx;*ocpx&&Em-jdH@qRMOK|?%8+yOl9y#X*5wTJ= z+&?{v)xF$<>s~B}!w;fa@oPys_x)6s?s}Jid^WvlvzN*i-sVdA?SpWAl{!t|ZHBE2&Jsb} z0o=$bB0B{mrrTsrbk`h#zTr}0;nCq#`DX(WJsRhF>#Qenu@WS%+>+KBye8QR9iZ2|h|Q1JqhXJlktNk-*+C1~ zWLuxPdcslR#-t|(jqw`Disg^?lX7y44Uy+%y*ms z$`R|uCt-`v2jp1SLq&tE*zSwhNPCe#&T*HbXI1LSuiIa_wV++Ez9bM9zoy>Gn)17DEm;{N_C?Skm6}p$ns%1-ckC8 zTXJs(tT&y_6{k+2VhRVzam#Kv_e%o|Vl=Vr-&CqMO~IyO60sgP6P3sb zhoqdGOSBg1fsc_D$ao)NdW*Y}tcmdcwW$@!`%gtr9%NEKYY*b;R4epl{^FMC#c=FR z3aIT_!|o*r+3RFmQl{Jq^t*)6XL^Z7O{{~e+EVn{YAWHoufoc;u6SBPJP{r|^y&Hm z^6S(&toE!6X|H$Zo8rFF*|85$0)1IZQ3*`CVN^wT>(v~jLD(ce}}PFT7^yGjDu(lY^?(qhS@6Aftp z%s<3$uPD0DOVW^M7lgl);fgJhgv2L6yeeS3qeqb6hB#dAeppb_{REX{i|}mcN|xj{ zfiH92K*qh1Ce6!YQO!yNcK_BS8rf8GMXxuRjipWyJ)&yOU{9QWX2> zT7%wgNy2}{A5(FQOl+gQ4tMQYLTITX>s@r2vvys9V^|_gJNTVmyWWXrz5RsFhMysq z_k`0JU0Hl1VmYb*S&E;%Hi1uDjtITMG5EEJD)8cG(6o8N{&F0J>QRT`@7rPGD=kV6 zFZm8$g}LPPIV=#nrvSUJnP7|P)u5s;{LX0x2*!oD(TVd6pe5`P8oM?FefO^+ zf5OIcD<+I5m)DrXS(T5-^T%nF)f9`4D5lWJrKvP1P#&+TI!NqFuj1*O?8yv~?btka zDLlX0LR#;RV$GcfY{K$Qu*5EwwixZ9Kg*NQ&nx>;R_Gg{oU@kRMf`ef~No~rHEB3suw!~1AY`dY~q?{XQ##t)q)1^2XJ{QPs=arqE5 zys?J!Lg7NMT?-O!$%3#g%gO8`uc5>JGG2L8xJ$x)94pimX4<5RD!UqT(c5SleyhbA zu>NDh;?F8D`w>U-X+s%O9w;Q#9ZXFAEBsCeu%3-=;M_DsRG&}7 zT`7jJGdck&NsF-dlquv=W-ctsUBeE|?8m{%M~Us6A2?2-nVc0U;o`$W_q+TPIFZ~2 z)wb?zzI8fu*E|Fbd0(t>tN|}Ov4s3+e@`c@_hE5CAy6jW2g)0=VOe9AF#mT9JrC)o zS*vHm1)+OHb8)dSJ0n51Dx}f2Locb>)lY(jHF5Z+Xdkrx_k{K}+!HK+ei0PIHt`Ab zuE1OKC3I(4CA8kO<16^LP#|dnwd=#c)$$}z>F2^I8~zsw7vE!ZRS_O_k{yA@w+V4=AVSS1;?4@9zEh2pGh{lU!b)* zqgYSm1>6_0hzw{c@cvPqds8XeOa{Qb9B$hkQBe2!H%qt=Nl&O1Fcrit9VdKM*JEa$d;_J-mz5cXJ>!JP5;(5vYS zX=Ax?@0d*$8eBStTXqimG(CwzRv6Yo zkt|*`3+jeKSjEa(h$-r(AxCvs&AYWs$5WTRbdMq>>+IQo`(${}e@VR6h#b3c{x;Yg zbfmI9)2P45DC{mWkygi4pcje9ss9^4EI!_wR(N~i_SHh4n57!swesQG+;8`!>y@4E? zKih)exXOdS?<{!-64t&U|c9gqm0s8Skc>bvfoliZ} zne@SVy#MPR!kkhzzM;B?<+RP<51*ALANT&nDWfcfz0ZAQ$)&Fl>nH;obw1M-!uR@` zay$^BmuwMB&dik|jqX>1cU*_V(LRK2ga);CpWvrF+ZJo8u!{wdV<9 zlXR9|P_ZStnW}turZt_PoG<8>7)?Kx&Zd$EwWMS~9q$?_MDuVWZCo(QN%LVgTXsPQ zrj@A@`4T;+Zng-e7#-uboro2bJXS`s<=S}lnK{@>>x@1XYcXYEr>8>ySGB6-`eb6vd-w=5a?VdZ8Duf$>lNW}}!Vq}g3a*p%l^+YBDT-#htGX}JjHCtiZDrrV%&K_ztF zDHM3?%q8OdUt!*-2rON59`ZW!sMevRRxoF zp)yT|i?NlH?9WRNa4s&6A~(g_Jd%$TmQlE5-;O zi5@~N<#M2IDNWLDOd^JNi_i~cSz>!jmZ;2& z)?N>~a1WiXeTVZ?R)^x$e3WwM3|KXpVhwpQT0W|viawU2d8;PTgTKr0AI}hKz5W6d zD`*q82o&@6RZ}r~%&~ zyYN|IcD-fdeX=Dc6^|NNPhNCZp|`I-qc!F|m@mu|&ZRTZ+p_f>eyK!jYwu!o-vLek zcntL(xrNfTG~vPcRDsHHD!%wqg?-nLr~88&>Ag=$Wa{5E$bKhEZG{X*Th)6qfAm)3 z_iqmK@2EtHB3tQmy|qZY;RpJ@O@}_#5^|vm+RXB|1`+!whQ$x)Bloq|Xx*$)(5!!+ zv@Mq;Z=1)nV_yczQNyb!G3`A)qSjBnb-p6mr;%(s{{s!0Y$dD9Twu~1dlGQ?gWwSM zLbvaE!-hLwk%Z8fG3I`+lf1)I6t{XB+}OAZTmQ8u4Yzg@QzIoXR+nR2T)Ul|KYqdn zDv{L}i!I=~NGJ?L9tymwP6`y1aE$3%PP#D*?lj}E9%%c_0ARy-uSmA^=@x=pp|85eMC;yFI^J~EMB zjB8>dX(N*7m#+c8AV?a*U3D zcLZe!v-v;&TZ%WA-GsV@SCRi>GvY5LOKxY@g2wf1yz+Vmxn}ei4c_xb4UOX%c^HN5 zmWqPp?Ii4NAxXt7qJ&JY4lSOU4602t(4EES=-%uAbY-P3>$)8eds+<9_oq52TIj{- zUv?PWGyexEj3T#$9a96=dWI;)oB)F>?~2xwRJ~}?Udkdz-6?z?mG^z z&p{XX1t_%B6j$qypo6#vU9{9j?gu8o>N|#D)wLTh5W9-?j|v3-!u1m`hwxhYzY6630L}PWG5Q*)^sQt(*24*9^B~7I8-KVekwNnwh}O78SvkzqaFT z)}PSYv!-BwM*}@wVMqe}o(cNK+6o;h{b<9tA$-$464}km#8<)t&@zWQLDj`s^r}DB;o_Nb@cX~tIEs@&tF1)Ia&8c{7aG7OS$R_5XGPk+jzL=r zWpPyTb-|PLslsc@1ZOJV z;ioRY(1{zD@gZyl?)%$h}w93KHqh$-)@gW67bFQXJN6LD^p4$nfk0y0rBYesdxnH7c)y z>Y)}C=Ai)_10%sHRFQ5{lR$~jZlD zXUnnsI}AuEzlQry8>4%L()3nc8Fbc~QL9JRu+u>kO&uEs@9u|?p@mu~>ahfCdlyV4 zHqXa>`*X<{-IdrPcLkXz?@YW#?ISnLdof3R1pQ9osB2Rc?cM%`{?T}Zv~4s&YE~Bc zw%iYX)o&NpTDiFU$|JJfay)VGwWK+yJzwca`+-`9sEeMY9_K}=M$0XKPB3=zY2R?JIZw2 zUvQ(m-cxxCE%v$UG-a_K^r!P(l%iEm#M;Nvi2uG)qiR2xv^J(I5oP|EFjmAD> z(oo^J1bpNCS;j>>z&)GQVAPdK(o`$SDC-HVvsMK5{XU9JujS)adL``eIVG^1zFJWI z;u2feu^UdG&PBsD!rcQUG4Nc%9B#MGgajl3@#!o08?P_X14OvHV!>*#7w!R`Q?5o0 zbM$DaOaNZgFAlw>HgtCAD6DI0%d`h#Vc(0kU)pV2*+NyX0y(?CsSENko z6`RR$cg%B?|HKYEhrGm=Uh~Kf_XS{^C&9cbjUs7Cs-jwtBjw%#2pfn+_&Bs%X@4YyP{f937h%M|xQ< z%X@a4E^Z8E!}4j&Z&@5}S~mj!EF#F!(6Rim&m7i0!-+~~1;NL?PqHj+SvZ`0N8Ik4wG602TjLE@fm$*awF#wOqAJ<3R7*k z>eteoUT-4Nb=(LV3WFh2?=DPPNJ)uzibG|H4EiRw;~bp<;l3Q@!)vuU=&L2gi9IYX zkK=;ouY{C?YdM##WBG}vu40Q;9^A2r<{JK_;8(X~PRUZ4Ka-uo#sAsCO@8mlr=B<_ z+V;B{=Xl2vXRq=6wf#u~Tik%1-y4j6^4CCPauomL)&&gSPzGy#vY4*dRW`~ohVR@u zgY#Pvf>K)XyiE%8doni<&uu?;T%^7(H3thaIT*LwQ@mx?o2H{aphAou2seH-xCA4 z{%JIGx>`lXS_NQNc^u9LH~!zi2);aNEWiH66VWf*zj)%s3AXLe4amyU?V_m9awO}j;Obp=oMb2EWAl{d zV!Nr1Xue?@&T_kryX(d>tA%60*TsljsoW{Diaf&VomP>lB_$5=bA(=brUNTiOe2Fw z-y$p19+O9ZoJqyyMiTzOo|JD6AwM%s;lP6o`qeB%T7*Cppijm z1SU90elY^>;5|CV;DSg$|2K_4WdrRB&dlNVI4*NQVDEWvr9V}Q*`J3mF}7?bYuZ=9 zbh0+UtaHyvR_}Yd?(GmfGkr46^e-gwIun?-hdg)M&6E9}--kz2u8Q4)e86wnJTz60 zXGV+5pmm!9culcjz|$WJ{P4ie5-SV`vc!7^PBf`c#P2@F8jH z_WYgdcC-lSVdA(K@XC4-XJIm%Ig3;93yk5VnkGx}GhnK(kUqY-o%E%5lI9e7(5X8~uA55=+^RifN~tGJG1LKzjWT3b z)D>|=a5sIp;g-lo<%=jr_k~Em%!*1bUO=Zm(4lGds;r+4h+j{XCe3cPR5F5?Z)_CZ^U4+#ogdD2j~L6y{_Et~nJu(xuN-^TRX{5T1=ru5)lD9T zM^Oh$XkWh4VkVpweYEwtP&5E&2uI&9D|QZ@rDCq55b-W!NvrW;WNNS+pqsD>-L; z90#S07reif%yr2Ja6CMma|n3~=~3GN<^GY1<#VWHa|h%fu_5#7)c8bu71r=Ek8Wu8 zSXdu+(*j}DzkMNU)ff% z7o?Zka=n2K^!(8KDpIH7o!?14L^=eDSP3kgcy@Y8uE10a(-@Q0^brO$^Wt& zOrHd0FiCMYY++KkP1wm)-VFTrtmWLm=LLLDtrVxZP~dabZ-t~w#@xQjcG9~>1D9^i z;o5IIAT6EB&-H8PRVQo`_*Pq4mE>FEG%}3NQxKDF$|Lyp&9Av|Peb;6-CO$bN*3+1 zPJ`4p`=GZokVRFG#4SIyu*9$kj&7}j{CaPQ`t*S9zcGT-x17nR>ssk zeH&Rsej1*`LvSJ2AG)@s^S}4hP$%Pa z5GMGP8jft>hL1hR&K=UlPPI|IsBb!pa?W8gU(d28b17tIb}-z0J9qftdJxUpM(%8@ zgcr`XxcAc@D5}1QUSsrl8*_cEEO^Z>D(?e6yB*$l=HMA;A&VqA1hX`PxxuMd zZoE!@E9ZQ?9Ol~BL-5;rD6ucapZ!%Nbf!61-0=gyc_p%AuWUrgqoi55$~4gad=hTN zd=dX}zXQ|j>u@r^2VbZ?!i+R~l<-;(Uv!UyNn-;0bD~l7@=v6|Q`{B7jqYp&<2eE^(@lwKKat?BKZ+-V z**Q?zF^>eu=4IEY@%xJ7_@aUle9N`lEH}T3 zX@3*;*QS4l)(aExfKeiQJEIPsb*JOKze1lS_YV6xTLYGdu7aCulZb;?IHbO>=I`da z(p8ELR7+z6C-KW4JM*iE#PD;(b~d5Mt+~!QX# zTcG}e2fQ#&L_NPd^nt}NkR4boy12qhbfwUWJiFQ8Afav!?au0mR~p!Zl*5?3@;8f& zHo#GBf-`btf+#Adl(mjiS1l3KhU+Flv+Cl9V?ALGN3Kc#^_ z<32;dE`1Pb%5W1P2gaw~!UDZKG!66PyT)7KcN-&kDAh~7mgSe^NpHAIhXIka}#m`_V?;TQC1pJI3_p} zXt#L0{2TbNd;shI%M`Ly=JfARIjlRo7}~m0>Paf@<;UCx$@omqRe%(Fg0pII@1|BwjV!lW{(3Ph$~7J32NbxYRYmOUqbyq3K1Mh_Z^g-jukdZT0_WbUo@^du#07LIa7JpsX|`e( zZIUX&?=Ry-WncEyAA4)UPoKCSy=~L@k0~EXbI2%|FvcC2n<1p=w4=xU#Y{u|omXwD zVNK^{SmC#W_UR!jA^787zV~A*we(KHY1?ZA#!3^p{B#HgiYfpTeaI;@FFmvkVor6`X^c!r!uFB{@h63=anpP zGo}(BXs=;6$*thmThEEdt)UijXSueSJz{qyD=u{RCRX>skJo+ZiaQ!_ zQ0H?u(NAqWKa`)!2YZ=X0;=D+$?5tFOgZV9S2Ki+~(ibn2@+T z<=m{z^X=wWD3SU>IqdkaeIln};e3zDa8PPn$t>nXurcQ<_*3x-{E43bz;CvUcueOnSjuoiv zyqL$be9$h?VfSZBV~0iynYT-q_g<4oKOMR)>h02Z=p2Zpl|wf}P}yfPc0FP7qvhd* z$(D z@TgXiF^w19$QVPVO%E~;A8(@k{4;xPoJmvhCK)f8NnT(2M>H22G3B{#yrI=0mYe4; z-ZtDAqef-2?`tMe8N1^&Ec+ny{&EhN@^kpOed$6zV4_%Q?rNM|Jei298`0wT2BG$x z%F;$QI6MebW?yBDp(E@I`Qa%-haoq`6=!3JtYi(*m&wL=xmBV}Elq(ZGYitU=fW)y zBX-qfzrayf;RH@2wEbOz9apUQIfCb4R6{zv>vCo#IR-GEXyOgIdaBsPLy>6)4S!cG ze%$s@6d?7B#=J3rVXsCIo%prn=2$}*5O$Od&&7~E)lcgzZFMPn7qDgCW7sj_SvoL# z8fK2jK&Cs4uKF($n)7vNsm??en_R@y)z87AX(PEu@)B@)q!JgWy^6p1+?rddF&(29 zt%9=;T~I~f#=jn+f{y1;@za*RC*h;iq3(oqeP#v6*8kCl)ITpA(&y;Igqm);y4!$1 z=5EFs7M+2xA}xVGq{MB0c!+%JTf_pSo3TS?E?c(0jz-fi@tqoL$dr*_M>ox5pB#Hh zU_ujJc6}@SjIu_pz9+CG&651m^Wdci+45_O?D&e?vsmPe92|4(9Vv2JO*M~RCX;^h z7}_Lcth7sbL+_QMf9L1m@0o9T{`+?97@bFBufL_AI^+fSQ7e@X34~mO<#cGnK3F06 zOt!T@VTvL%I5@dXT7tjW-*G6ogkvu40OR`#b_93SVcxA<%<^_ z{KSsWm113A%SGNVBiShF1Q;R{ivhn%F@@;XJFoc#XYNagX4KDQ;X+1ql(ZyY&}T(= z-k&9M{4$)qy0${-btvF{7I6~_1A_o)9h9wKvKxpzF zc4}`jx~6@{$jG~7vZ^ubJbso|>Wbjv<%6ibEfP{j?_nwpS~#owtbN_sLi?GWro0Dr zAoWWhklhzL9Q@U~$ncjPtEvDnjN@>A+Ne-lQs0VY$3MZE!c*)-51Q zPLCxT8@n7jxlN2oZe}+c#MIZ|1UY1%WdA{136EOH@);)EV4{OR{d{{FtoU^R7Vi4N zlm+%k_4p-xlixd>vn57c7=D^BX!%TkP z#Wne*kTXPz>-E^ilxi8BMzYwpmQ-pG{hU1;iS*xyJo@EQH6@?Z@r`63J8d3740d?Y z&?#A>sbep)FZqdLP0bg~Bw;?W7+wkGC1>%1F+tbqz^C_Ru;`IGMDB|mJKC&*6IdfS zSDk~FZEdjRLm0o(ObVxcI|Q>^84Rk=C(o*9F_Xb}m?(cCeyhC*S95N#xGzm$oxBn* z?Eg$EH%2h~Ki1rm2Q#@~m%aQjYoSLnp%>M{n)zUX*%0w}3K#!OhWqVzn6HVkg}t?} zaKP#oKDt%IP78Hu)(i_spIk>~s+i+a*Sl<}Zw9OjAI6;;7r;B&?n8~;cQ52`HQ_aG z&}gsq{*otU(D$0osggMjDPlI8t3>ij*sg&$K2aCk*BBRaBqY$j`B}o3H9=@ zbfYA9b+j(mY@8rAeeJ_H#>;Vu+m2)Yj12CjlNA(>ImLo9yIIiCNbKLTjvR}c1=qG0 zqwf4mOl?B}>^|iRWa&`||1gyw?^%J;zfFZ*ymjQ(+g9v#%OT~H7xJHvYe091A-Ip# z6V5EUeATbLytRBUwLEo9q}tv`TRzSqPs5tnbWR_=L^i}va}VwQSi-DVjpbc_wxI_L z=huD7hf+Ove%-1AOfPOXv^*XMm*tYd{@q|!wSNz-^;F^Y4h9o_(=x)Y7h|#GVA#0c zj18T-TX1wH^Yi6?k>A14lc_rc-66USit&oWFlxg^%8G{e%DGBccjH?&OH zQ>)|j?HVPx{%{8v*(&fO*K5Mj0A+sDbs660-e~$PWhZ(6F;cw9<_n$kPDAABca%-| zb)A04Rd8|U4|X7Q5bv6?nwkHR9>+G3P#&qT+-b&fVh&$;ivXFDD>v|?P~ILET~JXFn^ z&+Qgi-3kSk=%=jByDV4^Nx3JuE$Mpb@?<6$1XP0d=o{GbHWC#ACBSa}JcLZVInjT2Ma~>o1h`5LM^q|(?mZ-cFiRB0TL+vv=cI`s~x-BZ_*UIT) zRY@4sDoU}M5oeg6FwgK%kc9Qmb?}+&W0Bd#e0c3}PAswg4J){iNB&;^OuB0?Vp(Je z^o&d(@8#v{f7lkF`jfRR*3p2DnKT1_L|T*hUvqh9(FF0EIWK8yQ7xT0`x=gk@g^o` zjF6iyx=)6=`$s~6&}RxY8piJwS>jF25(tYG zo^dG`(Y~VPA{Ut+hYj=kFw#s7e|Br~pSJ6PcEoWsHTjH_Ogy=dD{8^p^#ufM{KY16 z8vN(=idgNhN1uq1JyW#eEYDBi^9NHrYdnNLe{IEIybw=cbgkh&*NhdvT|5;W)mD)m z_6kBDP=!CAZ4CE1z1i@{!SJIrk7@Dp$@^(S z{BxXkVjE`ePC~m4op`#Bp@Q8bc(^2v{Pi`)hDDzo?wwA;)OFJ6IuHs4=GHKO*(Em2 zIE5WPEzilXy^ZUV?-Hl1YI-EX2jAx>V#$B+iRS$xj8pkbGlE5AYxO1Zn4jwW@9ugG zQz#+tY7N--L)*yoRhQVzNsE}$uXJHw3F+OWA>@a5ImwJmV_O@IK-vBeZHO!&_q>mi z*K;Jm`s`$SV&8Fc{{2Sryk|Y+!{y0DXQo&@q%2MR@M{QLGv^`E>6eFuVdq5F>P=+R zQ(=bobppe1_DQlJW+|?V+)YD|2 zZ^ulBg_D2=GmhvCSf0w|+B>+p@1?OPXA_#qKBaYvE z7@uX7@~d-l_!s3RaCOR3=-T*+6klbSciEpA%IKk1`z(yeeM%NZ9ujA?3B2V^vv|59 zn-(uf$L0@-RMJ)~MvmTan8KYMsT zkZpMDN9`hJiSJJOLG%~P364KY8g`|hwpr~ayJ8!dd;)>hI)}uiFI2EipmG&-G~ z-8}_VTaMuv&vFPqI)rZxFys5~AK~-Vrt&u5vO!-enl0Y3fu=utOqNf)#u9uU!I0pKA9%ha*?t;-q5?U;5AHD+Pwbgsqb~0g=x#2Y-cyDhuenLRs;YVXJZH=omhC z*AnJ%>Jv(OX!FKPKI5(3a@@@tOEA=y;T8$r*QUs2uxvdqTALHjp5Kk*7x+lwVw3Z< zP*<7HwcwGdtp{zp&CK+?0{ay&E&P5ID5@>wN1P4Dz(y-L_b)+Qzd%IY2R^a?X=IF&@cA1+e5eiTgsbVa$s|Q%%-)ulFU(2j2}Jy zAien}QCyUXJE|2~o^KSCXDITsy(9S^?J739OZc|z1eV(Sl{x-372VUFAiT46VDwCF zkZSEFJ_m1!x|bcN`#uEHfwDPpc5Nwnr6cfQca3F>2g-@jvIF3_W+R#X9%)WXCt2JU zgU|Q(u;cHPz%gtsXujzr%;g)odgLx#H>sunO-!f0j?-CpWDRDVwxBmkb*O9UJ3Mn| zm{=p;lpK0L2sZ{;Qs;Yz*pP>IOz-(YzBow|489$JYV|U#T`WuUd=AsAQ-6uc6GiBm zWyC7xtBC@CMe;}Yz7vP&`qpP=JYadDF=7w9f1+%?8}#D+Snq%$G&Nj)p8I$}+~5FN?4VrgDOws6H^$8d`Q1F)w4WGr0pK)0iOy>~0~<5%(4LJvth>Avy(S-k z+s_I~pTs`#jcH*HQ!NYymYEux>-mMukKM_Bo23!{&I!sIlK+2B=msfjg6kB++dVrY)>#%22&agMeam?b? zKFoe7aKElvK<9BSkiE5znME3+af%#2)GeOPW@njYbH7OIdllPfp9M2I{CLaJmAF)X zFBtqO09j)(^xxSGyJj*xtp1htynKZxcPjDu9oLC!YCT)^s1Uy%*v8JcL^7G|9$}yJ zGBcB0g*bXTyy;j<<}Xbmq1pZT#lCp(loVqE>t`sJ3vnVzh+BD*JUf3Hbv`OQd>u|hNEv;nEp7h^Bu>{X5d zeWN9Ri@|)RJvose14@FwTq5uwwp@wk-#&j$MA6IfrOhr7v6NOrA!bMqL#Xl4l>HWo3N-KEVE#{mjK%8zDF%8STgb3>Rn zr3_SrdT+d47KuMl5ATvp!1lpmfoHe~rHj=`hOZ&4yEO>Y|8&uP|Ke$P?{G5t#BhGl z?kW6AatUYFtc2LvEAayMioC4fk}4ZdJbl6#eOfnxzrZKa>CIu&?-!Hn8)ER!7fJqE z?q+OU;g5&>hhpv0ItZGi3`+U0Fw!*#+=gkwl39Z>VaWx&x6q5xfqZCPv5GB=)~sV4 zQtVpdCOX#@bh#>fbgz|7dY(u6s~6*&LCP%7 zZXtgx(U)GEwj8}*Ze+pt?!ndKL#*OeCRT5X1D{h5gt~Dny|3WSH_UIu$KL1pdgF`S z)xsox<~1+Q@b*oR8JYmnlGkw`oWegI(r_if9fm2)qfWU%S<_4vA|iM zC`GooTElABABLml(qPER{$0)s@?|`yb(}-wnO{02IBrkmH*zogNBRZX`t*k=I7D@QjUqZ zwdo$&wrVSE$snw-!T|REvExs>9fpp;Kz>n|1c-IS>`_oPnluISRatf*vXF+E`eKrF z_deWFE@s1i<+GOH`Am)Qd==5rr6 zNvDYva?U|q@oAXjBf*JRns8tK@kB}aEj^=Y40TO^iQ%H}bXkN6n>Aw{jn}smJzki^ z-maL$?RYR1UOZeP+NXUC?hZ{P1N#n>A>;`Ria|IpIwNAQP2hlNBm5|A!--3Zv3o$3 z8#JK9-~FM0Me~bD;e&a&rXe0WUmat?vI#VGx!|Lb%tU4O8}1LwW3C%!V`uzsUaEZ~ z1e~76%XSM{7w?DkqSX!uo8g@_qc({otb8NvGduFT^I`#}7eUdYQ201XIGZ+la%-&T z!Ttel?#k@hEbi1%xR!EDe8OWszb0)xDo8(rtYRN>=Ac0gZB7$Xxdyg4+hMxI457o_#XK7gF)uGUFy@-r-6QZaxK?p2^hDURtbs zqy^%eFYxO=jDq$(CVXgiAm_R=5GO@cLhYd~u+6`ow_D-@cMhLnFU$wTccia!BUB<; zow^=(+gFZ1*S#HAKHSUB4y0p^ehdvgGK^c`xDR!fN^$VzEUb4DlZpssbXr!3JG&1< z!R?n2(J+Fy7W(^UIiq1hP#gK$WJ>z}M6ni)aPsz+2mGCcwEFZ3682pYUgjFZm~}2- zQ9vL%ek7d8P{TP@jl?^9DeEpSBt9eU;K|~rVV3snROI*xU z3gpPNus-5GQVtf58z=N`M?zrW71B0N;G2hxfsBrHGzUj&Q|QRaN4W(88{f|l+qbTx2Sa1nxx^0I`R6)Q_-c!LexD{g zGt~K^xxt|KxQrIg9)w4VE6DbVn*_d46jmvuU}CP2#)i1~iWFpI3V9Quf8{>!BbEIgj(Z*SxXEucK%+623stp5^HbM|B2cInv6lJ@u3@MrPB=E63l!=o<&-_N?8GUESCQoAOxy{R zR>^{6iwZmMHy7gFG%;jmHkm9ii5{PP2YN+bIAV%5mPCBQq)*RqxWqcnz1E*q7p|na zWjpcOHwo^(ei0jabsg)O>wtnp6(zVkAaTb8bvLM?X3lIbD{&b9JeGqgO0X25 zRYlNxyo780lYoX=hFs~-0?e@xL#HTk0)HxGFk7%t8)qu#pn6k37Ai-uCBDlr=ZQMEXs{keExyhY$p^;VOt|x551H0E zRmi%li>c3A@mSM-w&JlD*&}^g@U<>v>l3zfC0?QUq~tcpQ_3c} zNi)yQ_nDOA5tL7q<+9y2a%oMKEM$2i>{+uH&yHS+e$&pfuYWJGKXY2ZZe=X=#OJKb5(sp8=x8z-H*yFR z%g)C7C357_sW=P^Yl0=o3Y^+12~2pVjq;+utYeNEPH`TL{$AN+Q2QWkmir-+bcjbi z<=?PZ6w9^W`^`p_#zFAlekJuiNo2?4~1-mog9ph$$@jvW5jDT4vAu~48d!iUU+F^1`Mi{;764n zzzeJY*iU)r2!E&Pu_LuB(5Gh$$$2`9U-qU7n87s~zF;OCd#3@urG01|`$c>zDIWU* zw~&eM7s;H|MyjV-Q*TJR@$sVzsQo*R+Le{kgfHV@L&Q7uAKQ)1FElxa86y1gehM#n zz#D&bNpj|oS3^hqP_FRDdUiJ<5O;o)VD;%Ga6LbQ3w|#Nc0wk|G*gHXlCdax(g@?X z1;C=(XzuG?FO>2*OBAzn@pZO8&bwO9{(KC;7b!ZNZBQg#cFLceeR2cOs^{WQl^*(+ z|ISoz+GGEs738npe{9up!j0_7#r*UeES|1p2VSV-g$t70s}133zdxB>otlP)lU8!c z9`9iwW)kjcRYgm|C3yO?IX-FY6Q0fKbac#Zru?`cYA283CfvA;NfsP<720A;=6%L) zD$#SNkHBolV{p>X4K;kSI9C@nrrte>lX(&w-#L{XVLE}wp>}kIJ)RvD;c>UlC&PNWD~>uS+9^){%`jJv4z1-?9|8+ z-MyT^hOINDpHC(eg@`8jXJ}8m#@J%3&PQRVZ5y*Jnv1KvCgD1t*KES{Mz-R1oCw3l zWB06U_~x=Yc_$l=120QKW}psVR}Eu}qN2$;y)4+fdj)DNkwWhHYW(Q@kZk;u1y-To zn0NLrD7^Kaom=)7EETedvUn;}&C5sS8e5PoU&I|-T*nI6=P)m~R;o!xa03&f;Z=qo z%f8-KKYFb%I2|o#!-sa-X+6ym#Yi>^uF&f&ex5NWUER(4{f6W9t*LYkpTf2{FJ(Ft zF2k=rTakakLfpGlm?H-zqpiROQ*#@RmP!YNdHf7;Y0M|;^IqZXE%h)q)f+t1<*~a@ z8(ecri1X$zFlv#Cz|}qk5Nb-!)&3!l#S>9~XgVAB0m-h^eCDt@0rpoc1J?&Kob-@J z!9OvDW!7v!rz4}FC##=T?>Ye?Y!`le6h=Qk-v;9K4jhwx!*j!+i%lBc8F*8nhc-vVrLD%4nPgS{{3Vx!4rw(5&3iI#l} zrz;hC^X_c!mXO4lQ<}T>&Ve!BGn9KKQR%2U0hwRJ% z&!{xETD==~@`|V9PW?-+zGv+Z_h4WJG!8#Qs&Th_n966xF z^-o&BrG*`)(^3wz&I4NbUqK0u+VhP);N{rt2RxdYjDr&m`#FP6i(zh0Q~jEnBY0z7 zKa1LzgGJhlXi(i-m{*};Xi zoaHS3O@V7;N5b$@L;Sfj2-6kqVL}ODPp_TW%MU}bue=+M=$oPAWpxaTj7F`0 zx5<@tfq3svH?^6(Q>Z;}uoI#01cs#GtCy`LL9M5lTxS>a%D62!i0`q&=POXnG=Z!( zP=_Ce7ubIJeww$;9)n++;LYD&bliyZusyJo5TkdjOfMH}zOP~57MWqCD^L9uTf|l= z(&!cNfx7$ZVAO3X%#)qK)~vea@FB?`FC0IBiRSM`$&Y@B+l9HZ&vao&eE&u!Ia!)+ ztDH^?O=27}p9In3?N8Y1W3lY_Mi+YN+-UrstxM%+7dpt--D3u~jHvmmIcT{%7e5Hu zczcOoV(ijqmdbJ{(P7KpjWXf`=m#*B*)7b{KC-H(gXt!DUuIllPeSxe8P1Fm*&8>A zhL;56-I_O~`M4uq+Ia%6t#!vGm-n-@rgP&7lFB=748e`B{^NXg{|Nr6SFkI#A8nHFu$-N0tn{ClSv6mvq{$Wzs=4yxlTF!b;k-Y3 zX*f!JI|B0`r*q$qWI>+VeCnT?f=Wi77*ip|z6f(?bGdBpw~(!j6uiH-34&j{S`9xI zMBv344H)Fx2l&y8vkX?aaO{o@U$9dWL(i;)l|!zIYqyk(@Bb=bkfo0sgk2cDKk>|| z@eYf0E``*AbE5A_Uzp7WBV64&7+K8BNh`z;4!mnOf)c!h32W^l52liwUv;!RLp|Jj8Nvd zM1{NM`%dsD2|m-4j;LvI3SPRov1WZaZ1Yg$p2r3=t-MMWP!F7J(@Xk6aM}kp4B@vJ zn4#LPu^j2K0U3zmTsC*Hm@N|g=bsWBM%JUd?)UXFaf~MeAo%L+V(PWf3FA2AGvg&sS?Wc0Lyx0<#A>tk0f*)(+T(C6? zVa=2F;M}5nO!41L+U;7bzx4%#D0Sh}2*AmcT^L5eP+bytJbQ)4m z&m#*r+$2sapJ=CX4M=*Gkuu>N`&#`dT)5uBoPyMG@wzYY)kU3cFfxJRX(RBQ%SE<* z>`OAwb(wIk%;CBvuCR?OBDh(fY++7e3LF3Tn`lhTF09qp7hIjv}HIT4SD6*;Erh&c%!cyi7@R!?LN!bHN!J~z97ol$;veQi~VK9ZF=6! z{G9DLH=jjN-4jC=-?Hbjt~hWJX35OKx1XgOHo&}Dkw`6H!9v?qP*5`9@(nb(6=soa z?$2;mxuyX`vfA9fD~fn<(Q{VaS^yH755#@X!r?5ou^&$vR3APj@ER9F64a5vY8j02;O&gsb+^Y^;qMlN)5tRY#q6i10oQ zo^@JWeaJ*ESJ#x=-rT{49UR8CY`;k67HWd%GJ^wA=P^NHp>SW_Ioa?F;>LfCOvAX4 zeNBG}nyY(6)9Pl?D3Hg1&=A}mT?wf|&x6%u!7E95Tu?}{_bX!8oH0z^c{cXaLEMH` zbIz-`p56Prhh^7hptQwmR5mPzwOPNJtpN`YI(6*(z8_`%0<(9#+XpsEnG*B8Fp#J}{h z2aSNOFuC*&e14eBQu}wJlzS))saT6g%)S#9pEPdIq4kJ4rNnHMJ;Y>Yvg6@Ju>I0= zIFx3|1wDKY)}tFS>Esv~Goqixq{Ol;;eQ#^b)IHa{DN)e7f?rYC?sFZ!N=|XtY3L0 zuD0?ab^UH=o^qUilaSGmkO5LMm`Of+&+>W_g*soB< zmL@!;p^_4K&-OS=u`I24buzc(Q?aj=n)3N%Rld9W1QYX;Jy#+ z$txa4E|W&pyKC{<&0)AA?J%2DsmA)W3~*7X2REj#keU0;rSBCaxu&J7u;fJoOIMo> z&hhi{r1nWR?z#-u{;QT5rC(*bGNznm+f zwSXQEEv7hI4Jv`Tf*Now-!gn=51XjY|%RMK&g#(uVHZW8|5l>rjd zB)EZ)N9^3Y4EE7T9oy8*aPy#@;Cn(v%zu9mp=Bj3A6voobAx#9$PhxN@8yi=gs_jr zE$oKse6HVL4~w5Q6MFXympXM2_CG%&n*XAR$$%#J;kha|e*J%3oq7a!vkU3<1v^;C zjOBRH;|pvE1N4kq3Wv|ivEL>4;KRMa+#~-g@zm<&m{2OXvhs()mbM@^Nn?S7!NzvB zHdvOtomNHekm+Q>k9vBfL6b-y_#i%W<|z3r7Qs1hIew3@BT^~#n7Ng=5sPLy_T>{N zN<1(MiiTIQ=E#1WoWewhKLn$}$z)9MyGs(yGtus{B{q6bWrE!vTW)L6(rX{Y)Pu6h zLJ{?Ft`{wnxC)oQ0=_j@f@%Bp&^arP4ve&9BQk`!{pD8J8Bzm-!WT0A9(Pi7TqO~0tOueJokWLec)gKEIIQKBxep$_~{j*>((kH26?{zE(E!e5=i@ba_rj6Bt$p?yX zY<(wdcif0=u0J8d@&jhnt%5qK7{KNV)|>9a&1$)U-mh1IX7UXj753%-hR*#F%QFt+ zgh)wBC8to~bt+V%_qp#-DrKSarZS|IYEqVpC1<8+lu~q9FEWQHRCu26_tEB*N>*40 zE9Nv=Z%ZmN?fDPxAMWFIU)SeiUEDVD!L{XZnw&*D2OYX{^jG$>?6!ctxJKgbebK9L z8h`)#1}q41f$OHxMC5)DO8E;I?#p9#S{{~~J|x;7oS1fZMVh|QgmI4aXLKBknS!B> z;5t-J$gMfNY33c6mH3+5cIy_KaK{Sy<%C2eC6gL;%;dvSn$70P-kHrghF=lB?D z4gC+=o}9zJF$Q0(3M9IoJ+S-yaojkehU9HY#S^KkYCKw$r8qb(=))^1^U%0X0lw@pM<@CFOxWFIl-bmgesz6*>rf@9 zwpm6DlQxhFZ{bhQs165GbJ!oW%}~E7m`n_sRi!EFVLk_GkcCmgIMjR*HY-xmpeE@~ z?I%6yld$`ZE?h{qWd3v;##ixgU`EG0-tlEBGzxlo)3Atdp0Gi@){2FVA4PPo-3YGn znFe#kJ?Ocm3C5cyVRh6BtlvH#lk6{HrD3_fa<>ZKtok!dGf>CVtU4-(wU9W~AFzF5 zF6n=CgtVj^W0jkTkNnpU(=zu7T<;^eB0QP67hGgc^_P(@;oNv`UBT=((&NAE-$QJ) z9&xU}8{-wBXCzI?5$qU$!X51~63Z8!0n#o5C(lF&kCeGXEPy((_!5f23&3{ z;TMf&HlW}oDLI!6|2#a+L@M0p;`T@4I`tvOGr zxy9AAHNqdlefP)xCitiknA>gN;qyI8w5O1TkteN8viuHUEmTk|Y=Bsu%E8oUtMK}* zS@c{Rr(R!`o&RV&lqif%73jO*}j}J(XZsnsgw(DSOO*TKq)0wm9!s&Vu0lqhZO5Y0oY{P}% zoF#`DZokl2VV?9k8VaxxO}aC90XmiTK_0QE4tkv+njZqq$&?;TT7$cv#$ZupBE6Ta zhFwnmU~+W@c1xu&@4P&^wsykI`xQ9*s=!)#^_f}acY_Qj?IxOwTcLmEagb=OWy(|> zQ7gNUDUR+TPZBaA@UQ{daW4j~B%MsA!r?m%%F3>iBlQ63$UlsO~^e?D4TxycPZXofmh%4pHjqERF2j&X2k25;FQ~Eq5nsvq zV3XoGG%?%51@1kj>D8 ze^T6M^8o#_5|{@imV8`TGCF7*klW{-x&DcUur+8svI#{bs@@bIZc(FiW`?6U=q9}1 zyOYGk$kEzk3?1|Mgtl{hNyE)n;!~?Y&(6IoUMyaTy($(o&(Ik%(!P=`nT+$7UM901 zFC}GHme9ir!`$S~kDSYvI(&9XLSD`ZqeF31=xIqCZug5P&T@(*>W@ZZo_m5WoH_|- z&o-dbwf(6=L=tWGw#Kel4dz$3n-Jpu1u_~n>2DSr@Ty-Rx6pPz{*)R_ciFqqI3cf~ z7qFW4N3hJ)oAWV6B?($Lr7|~HpTp?>OXSJApFv}q73Zk_nN;>=z^hq`oSTaSmA4Z# z-gFmQzg-6Ryb{RI29L}R#ngZzu=ws6oyr>0H=0dgS(i>d zM>>|T{r)2RK}CZmX{ceTZ!8H*ZvnT#WO)AMDGXVslHT@gkoI^WHBDoFh)-bjeX98) z??{p#YR&eNPwd?r?l`pd8}faqHh7H6^Oswkh~;)UJd|sKf0_LbiFpO2?XU&N-;+DC&m-+) zlwO+}%dC^NVQQ-h@AP>U^{o1f$%)sZq<#TE&1)WaFncq}j_x4qT@|Tr?iyIp@CZjv z6p*}!ldx~33f*_B(QvFTmtjAO`tvI z%W&7{ZJ_0th=oeexkWQAsFqBX5k1ZU)_n!L^5r1M-_=9|>o<&q*@t17DdcgO5jWxW zGK^TB0Kqyb`0jQuj?Y*RPL~AUMtl(C{Gl~mfvyIuRcj>2LtEgjWSpFGip5%48oha_6y!Q@fPGXiJ}CVg^vr%C z6(<4gI*LeKmpbZJL|{Xxgm#S#z?Hq5Xw|JIGV91|Ffp5hLBYE8C$%7y4wRFqT^Xc1 gP##++_|t$AO)NGH#%Ql8w6?v4RC#xj5)WPcAM|N&Q2+n{