From b702fb730087c9ec23902a63164547c83f1488ce Mon Sep 17 00:00:00 2001 From: Frank14f <1515444314@qq.com> Date: Tue, 4 Aug 2026 14:12:27 +0800 Subject: [PATCH] feat(train): freeze canonical V5 training release Publish the unified scratch-training contract, compact best-policy bundles, calibrated targets, tests, and presentation-ready retained evidence while excluding archived and intermediate run payloads. Co-authored-by: Cursor --- .gitignore | 15 + src/drl_pinball/train/CROSSRE_ANALYSIS.md | 20 +- src/drl_pinball/train/DESIGN_DECISIONS.md | 19 + src/drl_pinball/train/README.md | 244 +---- src/drl_pinball/train/SERVER_DEPLOY.md | 221 ++-- src/drl_pinball/train/TRAIN_PIPELINE.md | 132 +++ src/drl_pinball/train/VARDIST_ANALYSIS.md | 20 +- src/drl_pinball/train/calibrate.py | 60 +- .../calibrations/ill_075L/calibration.json | 15 +- .../train/calibrations/ill_075L/target.npy | Bin 0 -> 3728 bytes .../ill_075L/target_harmonics.json | 168 ++-- .../calibrations/ill_15L/calibration.json | 15 +- .../train/calibrations/ill_15L/target.npy | Bin 0 -> 3728 bytes .../ill_15L/target_harmonics.json | 178 ++-- .../calibrations/ill_1L/calibration.json | 15 +- .../train/calibrations/ill_1L/target.npy | Bin 0 -> 3728 bytes .../calibrations/ill_1L/target_harmonics.json | 178 ++-- .../calibrations/ill_2L/calibration.json | 15 +- .../train/calibrations/ill_2L/target.npy | Bin 0 -> 3728 bytes .../calibrations/ill_2L/target_harmonics.json | 158 +-- .../calibrations/kar_d075/calibration.json | 51 + .../calibrations/kar_d15/calibration.json | 51 + .../calibrations/kar_d2/calibration.json | 51 + .../calibrations/kar_re100/calibration.json | 11 +- .../calibrations/kar_re200/calibration.json | 25 +- .../calibrations/kar_re400/calibration.json | 25 +- .../calibrations/kar_re60/calibration.json | 25 +- src/drl_pinball/train/case_registry.py | 89 ++ src/drl_pinball/train/env_illusion.py | 57 +- src/drl_pinball/train/env_karman.py | 12 +- src/drl_pinball/train/normalization.py | 83 ++ .../ill_075L_seed43/best_vecnormalize.pkl | Bin 0 -> 1779 bytes .../output/ill_075L_seed43/calibration.json | 51 + .../train/output/ill_075L_seed43/meta.json | 13 + .../ill_075L_seed43/models/best_model.zip | Bin 0 -> 157807 bytes .../train/output/ill_075L_seed43/target.npy | 1 + .../ill_15L_seed43/best_vecnormalize.pkl | Bin 0 -> 1779 bytes .../output/ill_15L_seed43/calibration.json | 51 + .../train/output/ill_15L_seed43/meta.json | 13 + .../ill_15L_seed43/models/best_model.zip | Bin 0 -> 157807 bytes .../train/output/ill_15L_seed43/target.npy | 1 + .../ill_1L_seed43/best_vecnormalize.pkl | Bin 0 -> 1779 bytes .../ill_1L_seed43}/calibration.json | 31 +- .../train/output/ill_1L_seed43/meta.json | 13 + .../ill_1L_seed43/models/best_model.zip | Bin 0 -> 157807 bytes .../train/output/ill_1L_seed43/target.npy | 1 + .../ill_2L_seed43/best_vecnormalize.pkl | Bin 0 -> 1779 bytes .../output/ill_2L_seed43/calibration.json | 51 + .../train/output/ill_2L_seed43/meta.json | 13 + .../ill_2L_seed43/models/best_model.zip | Bin 0 -> 157807 bytes .../train/output/ill_2L_seed43/target.npy | 1 + .../kar_d075_seed44/best_vecnormalize.pkl | Bin 0 -> 1719 bytes .../kar_d075_seed44}/calibration.json | 2 +- .../train/output/kar_d075_seed44/meta.json | 14 + .../kar_d075_seed44/models/best_model.zip | Bin 0 -> 152532 bytes .../train/output/kar_d075_seed44/target.npy | Bin 0 -> 3728 bytes .../kar_d15_seed45/best_vecnormalize.pkl | Bin 0 -> 1719 bytes .../kar_d15_seed45}/calibration.json | 2 +- .../train/output/kar_d15_seed45/meta.json | 14 + .../kar_d15_seed45/models/best_model.zip | Bin 0 -> 152532 bytes .../train/output/kar_d15_seed45/target.npy | Bin 0 -> 3728 bytes .../kar_d2_seed45/best_vecnormalize.pkl | Bin 0 -> 1719 bytes .../kar_d2_seed45}/calibration.json | 2 +- .../train/output/kar_d2_seed45/meta.json | 14 + .../kar_d2_seed45/models/best_model.zip | Bin 0 -> 152532 bytes .../train/output/kar_d2_seed45/target.npy | Bin 0 -> 3728 bytes .../kar_re100_seed41/best_vecnormalize.pkl | Bin 0 -> 1696 bytes .../kar_re100_seed41}/calibration.json | 15 +- .../train/output/kar_re100_seed41/meta.json | 14 + .../kar_re100_seed41/models/best_model.zip | Bin 0 -> 60859 bytes .../train/output/kar_re100_seed41/target.npy | 1 + .../kar_re100_seed42/best_vecnormalize.pkl | Bin 0 -> 1719 bytes .../kar_re100_seed42}/calibration.json | 17 +- .../train/output/kar_re100_seed42/meta.json | 14 + .../kar_re100_seed42/models/best_model.zip | Bin 0 -> 154627 bytes .../train/output/kar_re100_seed42/target.npy | Bin 0 -> 3728 bytes .../kar_re100_seed43/best_vecnormalize.pkl | Bin 0 -> 1719 bytes .../output/kar_re100_seed43/calibration.json | 49 + .../train/output/kar_re100_seed43/meta.json | 14 + .../kar_re100_seed43/models/best_model.zip | Bin 0 -> 154627 bytes .../train/output/kar_re100_seed43/target.npy | Bin 0 -> 3728 bytes .../kar_re100_seed44/best_vecnormalize.pkl | Bin 0 -> 1719 bytes .../output/kar_re100_seed44/calibration.json | 49 + .../train/output/kar_re100_seed44/meta.json | 14 + .../kar_re100_seed44/models/best_model.zip | Bin 0 -> 154627 bytes .../train/output/kar_re100_seed44/target.npy | Bin 0 -> 3728 bytes .../kar_re100_seed45/best_vecnormalize.pkl | Bin 0 -> 1719 bytes .../output/kar_re100_seed45/calibration.json | 49 + .../train/output/kar_re100_seed45/meta.json | 14 + .../kar_re100_seed45/models/best_model.zip | Bin 0 -> 154627 bytes .../train/output/kar_re100_seed45/target.npy | Bin 0 -> 3728 bytes .../kar_re200_seed43/best_vecnormalize.pkl | Bin 0 -> 1719 bytes .../kar_re200_seed43}/calibration.json | 2 +- .../train/output/kar_re200_seed43/meta.json | 14 + .../kar_re200_seed43/models/best_model.zip | Bin 0 -> 152529 bytes .../train/output/kar_re200_seed43/target.npy | Bin 0 -> 3728 bytes .../kar_re400_seed43/best_vecnormalize.pkl | Bin 0 -> 1719 bytes .../kar_re400_seed43}/calibration.json | 2 +- .../train/output/kar_re400_seed43/meta.json | 14 + .../kar_re400_seed43/models/best_model.zip | Bin 0 -> 152528 bytes .../train/output/kar_re400_seed43/target.npy | Bin 0 -> 3728 bytes .../kar_re60_seed43/best_vecnormalize.pkl | Bin 0 -> 1787 bytes .../kar_re60_seed43}/calibration.json | 2 +- .../train/output/kar_re60_seed43/meta.json | 14 + .../kar_re60_seed43/models/best_model.zip | Bin 0 -> 152721 bytes .../train/output/kar_re60_seed43/target.npy | Bin 0 -> 3728 bytes src/drl_pinball/train/plot_latest_results.py | 396 ++++++++ src/drl_pinball/train/plot_scratch_results.py | 527 ++++++++++ .../fig01_re100_multiseed_learning.pdf | Bin 0 -> 57096 bytes .../fig01_re100_multiseed_learning.png | Bin 0 -> 705291 bytes .../fig02_re100_discovery_drawdown.pdf | Bin 0 -> 46243 bytes .../fig02_re100_discovery_drawdown.png | Bin 0 -> 607234 bytes .../figures/fig02_re100_policy_retention.pdf | Bin 0 -> 19869 bytes .../figures/fig02_re100_policy_retention.png | Bin 0 -> 141462 bytes .../figures/fig03_re100_reward_components.pdf | Bin 0 -> 77174 bytes .../figures/fig03_re100_reward_components.png | Bin 0 -> 209855 bytes .../figures/fig04_scratch_case_overview.pdf | Bin 0 -> 86864 bytes .../figures/fig04_scratch_case_overview.png | Bin 0 -> 598031 bytes .../fig05_case_performance_stability.pdf | Bin 0 -> 15051 bytes .../fig05_case_performance_stability.png | Bin 0 -> 158676 bytes .../figures/scratch_training_summary.csv | 16 + .../figures/scratch_training_summary.json | 270 +++++ .../train/results/latest/HOW_TO_READ.md | 29 + ...fig00_graphical_abstract_reading_guide.pdf | Bin 0 -> 25960 bytes ...fig00_graphical_abstract_reading_guide.png | Bin 0 -> 378696 bytes .../fig01_re100_multiseed_learning.pdf | Bin 0 -> 57107 bytes .../fig01_re100_multiseed_learning.png | Bin 0 -> 705183 bytes .../fig02_re100_discovery_drawdown.pdf | Bin 0 -> 46236 bytes .../fig02_re100_discovery_drawdown.png | Bin 0 -> 606002 bytes .../figures/fig02_re100_policy_retention.pdf | Bin 0 -> 19919 bytes .../figures/fig02_re100_policy_retention.png | Bin 0 -> 141003 bytes .../figures/fig03_re100_reward_components.pdf | Bin 0 -> 77170 bytes .../figures/fig03_re100_reward_components.png | Bin 0 -> 208773 bytes .../fig04_authoritative_training_vs_eval.pdf | Bin 0 -> 16561 bytes .../fig04_authoritative_training_vs_eval.png | Bin 0 -> 182901 bytes ...5_authoritative_iteration_and_eval_gap.pdf | Bin 0 -> 15038 bytes ...5_authoritative_iteration_and_eval_gap.png | Bin 0 -> 193075 bytes .../fig07_eval_cross_scene_metrics.pdf | Bin 0 -> 29441 bytes .../fig07_eval_cross_scene_metrics.png | Bin 0 -> 399597 bytes .../figures/fig08_eval_reward_components.pdf | Bin 0 -> 19364 bytes .../figures/fig08_eval_reward_components.png | Bin 0 -> 149341 bytes .../fig09_action_profile_saturation.pdf | Bin 0 -> 16813 bytes .../fig09_action_profile_saturation.png | Bin 0 -> 191620 bytes ...ig10_representative_signal_diagnostics.pdf | Bin 0 -> 58090 bytes ...ig10_representative_signal_diagnostics.png | Bin 0 -> 1452836 bytes .../latest/figures/fig11_evidence_scope.pdf | Bin 0 -> 17760 bytes .../latest/figures/fig11_evidence_scope.png | Bin 0 -> 136952 bytes .../figures/fig12_vorticity_cross_re.png | Bin 0 -> 437500 bytes .../figures/fig13_vorticity_disturbance.png | Bin 0 -> 424135 bytes .../figures/fig14_vorticity_illusion.png | Bin 0 -> 687591 bytes .../latest/tables/latest_eval_summary.csv | 12 + .../latest/tables/latest_results_summary.json | 948 ++++++++++++++++++ .../train/scripts/crossre_scratch.sh | 21 +- .../train/scripts/crossre_transfer.sh | 58 -- src/drl_pinball/train/scripts/resume.sh | 48 +- .../train/scripts/train_baseline.sh | 19 +- .../train/scripts/train_illusion.sh | 15 +- .../train/scripts/vardist_scratch.sh | 16 +- .../train/scripts/vardist_transfer.sh | 58 -- src/drl_pinball/train/symmetry_wrapper.py | 25 +- .../train/tests/test_normalization_schema.py | 73 ++ .../train/tests/test_symmetry_wrapper.py | 98 ++ src/drl_pinball/train/train_illusion.py | 127 ++- src/drl_pinball/train/train_karman.py | 13 +- 164 files changed, 4217 insertions(+), 1091 deletions(-) create mode 100644 src/drl_pinball/train/DESIGN_DECISIONS.md create mode 100644 src/drl_pinball/train/TRAIN_PIPELINE.md create mode 100644 src/drl_pinball/train/calibrations/ill_075L/target.npy create mode 100644 src/drl_pinball/train/calibrations/ill_15L/target.npy create mode 100644 src/drl_pinball/train/calibrations/ill_1L/target.npy create mode 100644 src/drl_pinball/train/calibrations/ill_2L/target.npy create mode 100644 src/drl_pinball/train/calibrations/kar_d075/calibration.json create mode 100644 src/drl_pinball/train/calibrations/kar_d15/calibration.json create mode 100644 src/drl_pinball/train/calibrations/kar_d2/calibration.json create mode 100644 src/drl_pinball/train/case_registry.py create mode 100644 src/drl_pinball/train/normalization.py create mode 100644 src/drl_pinball/train/output/ill_075L_seed43/best_vecnormalize.pkl create mode 100644 src/drl_pinball/train/output/ill_075L_seed43/calibration.json create mode 100644 src/drl_pinball/train/output/ill_075L_seed43/meta.json create mode 100644 src/drl_pinball/train/output/ill_075L_seed43/models/best_model.zip create mode 120000 src/drl_pinball/train/output/ill_075L_seed43/target.npy create mode 100644 src/drl_pinball/train/output/ill_15L_seed43/best_vecnormalize.pkl create mode 100644 src/drl_pinball/train/output/ill_15L_seed43/calibration.json create mode 100644 src/drl_pinball/train/output/ill_15L_seed43/meta.json create mode 100644 src/drl_pinball/train/output/ill_15L_seed43/models/best_model.zip create mode 120000 src/drl_pinball/train/output/ill_15L_seed43/target.npy create mode 100644 src/drl_pinball/train/output/ill_1L_seed43/best_vecnormalize.pkl rename src/drl_pinball/train/{calibrations/kar_d075_tr => output/ill_1L_seed43}/calibration.json (67%) create mode 100644 src/drl_pinball/train/output/ill_1L_seed43/meta.json create mode 100644 src/drl_pinball/train/output/ill_1L_seed43/models/best_model.zip create mode 120000 src/drl_pinball/train/output/ill_1L_seed43/target.npy create mode 100644 src/drl_pinball/train/output/ill_2L_seed43/best_vecnormalize.pkl create mode 100644 src/drl_pinball/train/output/ill_2L_seed43/calibration.json create mode 100644 src/drl_pinball/train/output/ill_2L_seed43/meta.json create mode 100644 src/drl_pinball/train/output/ill_2L_seed43/models/best_model.zip create mode 120000 src/drl_pinball/train/output/ill_2L_seed43/target.npy create mode 100644 src/drl_pinball/train/output/kar_d075_seed44/best_vecnormalize.pkl rename src/drl_pinball/train/{calibrations/kar_d075_sc => output/kar_d075_seed44}/calibration.json (96%) create mode 100644 src/drl_pinball/train/output/kar_d075_seed44/meta.json create mode 100644 src/drl_pinball/train/output/kar_d075_seed44/models/best_model.zip create mode 100644 src/drl_pinball/train/output/kar_d075_seed44/target.npy create mode 100644 src/drl_pinball/train/output/kar_d15_seed45/best_vecnormalize.pkl rename src/drl_pinball/train/{calibrations/kar_d15_sc => output/kar_d15_seed45}/calibration.json (96%) create mode 100644 src/drl_pinball/train/output/kar_d15_seed45/meta.json create mode 100644 src/drl_pinball/train/output/kar_d15_seed45/models/best_model.zip create mode 100644 src/drl_pinball/train/output/kar_d15_seed45/target.npy create mode 100644 src/drl_pinball/train/output/kar_d2_seed45/best_vecnormalize.pkl rename src/drl_pinball/train/{calibrations/kar_d2_sc => output/kar_d2_seed45}/calibration.json (96%) create mode 100644 src/drl_pinball/train/output/kar_d2_seed45/meta.json create mode 100644 src/drl_pinball/train/output/kar_d2_seed45/models/best_model.zip create mode 100644 src/drl_pinball/train/output/kar_d2_seed45/target.npy create mode 100644 src/drl_pinball/train/output/kar_re100_seed41/best_vecnormalize.pkl rename src/drl_pinball/train/{calibrations/kar_d15_tr => output/kar_re100_seed41}/calibration.json (71%) create mode 100644 src/drl_pinball/train/output/kar_re100_seed41/meta.json create mode 100644 src/drl_pinball/train/output/kar_re100_seed41/models/best_model.zip create mode 120000 src/drl_pinball/train/output/kar_re100_seed41/target.npy create mode 100644 src/drl_pinball/train/output/kar_re100_seed42/best_vecnormalize.pkl rename src/drl_pinball/train/{calibrations/kar_d2_tr => output/kar_re100_seed42}/calibration.json (69%) create mode 100644 src/drl_pinball/train/output/kar_re100_seed42/meta.json create mode 100644 src/drl_pinball/train/output/kar_re100_seed42/models/best_model.zip create mode 100644 src/drl_pinball/train/output/kar_re100_seed42/target.npy create mode 100644 src/drl_pinball/train/output/kar_re100_seed43/best_vecnormalize.pkl create mode 100644 src/drl_pinball/train/output/kar_re100_seed43/calibration.json create mode 100644 src/drl_pinball/train/output/kar_re100_seed43/meta.json create mode 100644 src/drl_pinball/train/output/kar_re100_seed43/models/best_model.zip create mode 100644 src/drl_pinball/train/output/kar_re100_seed43/target.npy create mode 100644 src/drl_pinball/train/output/kar_re100_seed44/best_vecnormalize.pkl create mode 100644 src/drl_pinball/train/output/kar_re100_seed44/calibration.json create mode 100644 src/drl_pinball/train/output/kar_re100_seed44/meta.json create mode 100644 src/drl_pinball/train/output/kar_re100_seed44/models/best_model.zip create mode 100644 src/drl_pinball/train/output/kar_re100_seed44/target.npy create mode 100644 src/drl_pinball/train/output/kar_re100_seed45/best_vecnormalize.pkl create mode 100644 src/drl_pinball/train/output/kar_re100_seed45/calibration.json create mode 100644 src/drl_pinball/train/output/kar_re100_seed45/meta.json create mode 100644 src/drl_pinball/train/output/kar_re100_seed45/models/best_model.zip create mode 100644 src/drl_pinball/train/output/kar_re100_seed45/target.npy create mode 100644 src/drl_pinball/train/output/kar_re200_seed43/best_vecnormalize.pkl rename src/drl_pinball/train/{calibrations/kar_re200_sc => output/kar_re200_seed43}/calibration.json (96%) create mode 100644 src/drl_pinball/train/output/kar_re200_seed43/meta.json create mode 100644 src/drl_pinball/train/output/kar_re200_seed43/models/best_model.zip create mode 100644 src/drl_pinball/train/output/kar_re200_seed43/target.npy create mode 100644 src/drl_pinball/train/output/kar_re400_seed43/best_vecnormalize.pkl rename src/drl_pinball/train/{calibrations/kar_re400_sc => output/kar_re400_seed43}/calibration.json (96%) create mode 100644 src/drl_pinball/train/output/kar_re400_seed43/meta.json create mode 100644 src/drl_pinball/train/output/kar_re400_seed43/models/best_model.zip create mode 100644 src/drl_pinball/train/output/kar_re400_seed43/target.npy create mode 100644 src/drl_pinball/train/output/kar_re60_seed43/best_vecnormalize.pkl rename src/drl_pinball/train/{calibrations/kar_re60_sc => output/kar_re60_seed43}/calibration.json (96%) create mode 100644 src/drl_pinball/train/output/kar_re60_seed43/meta.json create mode 100644 src/drl_pinball/train/output/kar_re60_seed43/models/best_model.zip create mode 100644 src/drl_pinball/train/output/kar_re60_seed43/target.npy create mode 100644 src/drl_pinball/train/plot_latest_results.py create mode 100644 src/drl_pinball/train/plot_scratch_results.py create mode 100644 src/drl_pinball/train/results/figures/fig01_re100_multiseed_learning.pdf create mode 100644 src/drl_pinball/train/results/figures/fig01_re100_multiseed_learning.png create mode 100644 src/drl_pinball/train/results/figures/fig02_re100_discovery_drawdown.pdf create mode 100644 src/drl_pinball/train/results/figures/fig02_re100_discovery_drawdown.png create mode 100644 src/drl_pinball/train/results/figures/fig02_re100_policy_retention.pdf create mode 100644 src/drl_pinball/train/results/figures/fig02_re100_policy_retention.png create mode 100644 src/drl_pinball/train/results/figures/fig03_re100_reward_components.pdf create mode 100644 src/drl_pinball/train/results/figures/fig03_re100_reward_components.png create mode 100644 src/drl_pinball/train/results/figures/fig04_scratch_case_overview.pdf create mode 100644 src/drl_pinball/train/results/figures/fig04_scratch_case_overview.png create mode 100644 src/drl_pinball/train/results/figures/fig05_case_performance_stability.pdf create mode 100644 src/drl_pinball/train/results/figures/fig05_case_performance_stability.png create mode 100644 src/drl_pinball/train/results/figures/scratch_training_summary.csv create mode 100644 src/drl_pinball/train/results/figures/scratch_training_summary.json create mode 100644 src/drl_pinball/train/results/latest/HOW_TO_READ.md create mode 100644 src/drl_pinball/train/results/latest/figures/fig00_graphical_abstract_reading_guide.pdf create mode 100644 src/drl_pinball/train/results/latest/figures/fig00_graphical_abstract_reading_guide.png create mode 100644 src/drl_pinball/train/results/latest/figures/fig01_re100_multiseed_learning.pdf create mode 100644 src/drl_pinball/train/results/latest/figures/fig01_re100_multiseed_learning.png create mode 100644 src/drl_pinball/train/results/latest/figures/fig02_re100_discovery_drawdown.pdf create mode 100644 src/drl_pinball/train/results/latest/figures/fig02_re100_discovery_drawdown.png create mode 100644 src/drl_pinball/train/results/latest/figures/fig02_re100_policy_retention.pdf create mode 100644 src/drl_pinball/train/results/latest/figures/fig02_re100_policy_retention.png create mode 100644 src/drl_pinball/train/results/latest/figures/fig03_re100_reward_components.pdf create mode 100644 src/drl_pinball/train/results/latest/figures/fig03_re100_reward_components.png create mode 100644 src/drl_pinball/train/results/latest/figures/fig04_authoritative_training_vs_eval.pdf create mode 100644 src/drl_pinball/train/results/latest/figures/fig04_authoritative_training_vs_eval.png create mode 100644 src/drl_pinball/train/results/latest/figures/fig05_authoritative_iteration_and_eval_gap.pdf create mode 100644 src/drl_pinball/train/results/latest/figures/fig05_authoritative_iteration_and_eval_gap.png create mode 100644 src/drl_pinball/train/results/latest/figures/fig07_eval_cross_scene_metrics.pdf create mode 100644 src/drl_pinball/train/results/latest/figures/fig07_eval_cross_scene_metrics.png create mode 100644 src/drl_pinball/train/results/latest/figures/fig08_eval_reward_components.pdf create mode 100644 src/drl_pinball/train/results/latest/figures/fig08_eval_reward_components.png create mode 100644 src/drl_pinball/train/results/latest/figures/fig09_action_profile_saturation.pdf create mode 100644 src/drl_pinball/train/results/latest/figures/fig09_action_profile_saturation.png create mode 100644 src/drl_pinball/train/results/latest/figures/fig10_representative_signal_diagnostics.pdf create mode 100644 src/drl_pinball/train/results/latest/figures/fig10_representative_signal_diagnostics.png create mode 100644 src/drl_pinball/train/results/latest/figures/fig11_evidence_scope.pdf create mode 100644 src/drl_pinball/train/results/latest/figures/fig11_evidence_scope.png create mode 100644 src/drl_pinball/train/results/latest/figures/fig12_vorticity_cross_re.png create mode 100644 src/drl_pinball/train/results/latest/figures/fig13_vorticity_disturbance.png create mode 100644 src/drl_pinball/train/results/latest/figures/fig14_vorticity_illusion.png create mode 100644 src/drl_pinball/train/results/latest/tables/latest_eval_summary.csv create mode 100644 src/drl_pinball/train/results/latest/tables/latest_results_summary.json delete mode 100755 src/drl_pinball/train/scripts/crossre_transfer.sh delete mode 100755 src/drl_pinball/train/scripts/vardist_transfer.sh create mode 100644 src/drl_pinball/train/tests/test_normalization_schema.py create mode 100644 src/drl_pinball/train/tests/test_symmetry_wrapper.py diff --git a/.gitignore b/.gitignore index de194d3..25070ac 100644 --- a/.gitignore +++ b/.gitignore @@ -126,3 +126,18 @@ ParaView/ src/drl_pinball/legacy_test/output/ src/drl_pinball/reproduce/output/ *.tar.gz +# DRL Train release boundary +# Historical/failed runs remain local; active best-policy bundles are allowlisted. +src/drl_pinball/train/archive/ +!src/drl_pinball/train/output/ +src/drl_pinball/train/output/* +!src/drl_pinball/train/output/*/ +src/drl_pinball/train/output/*/* +!src/drl_pinball/train/output/*/meta.json +!src/drl_pinball/train/output/*/calibration.json +!src/drl_pinball/train/output/*/target.npy +!src/drl_pinball/train/output/*/best_vecnormalize.pkl +!src/drl_pinball/train/output/*/models/ +src/drl_pinball/train/output/*/models/* +!src/drl_pinball/train/output/*/models/best_model.zip +!src/drl_pinball/train/calibrations/*/target.npy diff --git a/src/drl_pinball/train/CROSSRE_ANALYSIS.md b/src/drl_pinball/train/CROSSRE_ANALYSIS.md index a3d2697..1fd9049 100644 --- a/src/drl_pinball/train/CROSSRE_ANALYSIS.md +++ b/src/drl_pinball/train/CROSSRE_ANALYSIS.md @@ -1,4 +1,8 @@ -# Cross-Re Transfer Learning — 分析报告 +# Cross-Re Transfer Learning — 历史归档分析 + +> **历史归档 / ARCHIVED TRANSFER ANALYSIS** +> 本文记录 2026-07-07 的 `_tr` 迁移实验及当时诊断,保留其科学内容作为历史记录;它不描述当前 active scratch workflow,不是模型发布或当前验证声明。当前规范见 `README.md`、`TRAIN_PIPELINE.md` 与 `DESIGN_DECISIONS.md`。 +> 当前归档位置:迁移脚本在 `archive/scripts_deprecated/crossre_transfer.sh`;保留的 `_tr` 日志、校准副本和 metadata 在 `archive/transfer_instability/kar_re*_tr_seed*/`;旧校准在 `archive/calibrations_deprecated/`。active case ID 不带 `_sc`,`_tr` 仅用于这些历史归档。 > 日期: 2026-07-07 > 实验: 改变上游来流雷诺数 (Re60 / Re200 / Re400),从 re100 baseline 进行 transfer learning @@ -372,17 +376,17 @@ Case: d075 re100 re200 re60 re400 | Base 训练脚本 | `train_karman.py` | | 环境 | `env_karman.py` | | 校准脚本 | `calibrate.py`(SIM_BP generic 兜底逻辑在第 526–527 行) | -| Base transfer 启动 | `crossre_transfer.sh`(lr=3e-4, n_epochs=10) | +| Base transfer 启动 | `archive/scripts_deprecated/crossre_transfer.sh`(lr=3e-4, n_epochs=10) | | Extend transfer 启动 | `extend_transfer.sh`(lr=1e-4, n_epochs=5, 保守超参) | | Ext2 transfer 启动 | `ext2_transfer.sh`(同上,重新 fine-tune) | | Multi-GPU launcher | `launch_multi.sh`(lr=3e-4, n_epochs=10) | | 对比分析 | `VARDIST_ANALYSIS.md` | -| re60 校准 | `calibrations/re60/calibration.json`(SIM_BP gap=0.20, K_CD=12) | +| re60 校准 | `archive/transfer_instability/kar_re60_tr_seed43/calibration.json`(SIM_BP gap=0.20, K_CD=12) | | re100 校准 | `calibrations/re100/calibration.json`(SIM_BP gap=0.50, K_CD=50) | -| re200 校准 | `calibrations/re200/calibration.json`(SIM_BP gap=0.32, K_CD=12) | -| re400 校准 | `calibrations/re400/calibration.json`(SIM_BP gap=0.17, K_CD=12) | -| re60 base 日志 | `output/transfer_re60_seed43/train.log` | -| re200 base 日志 | `output/transfer_re200_seed43/train.log` | +| re200 校准 | `archive/transfer_instability/kar_re200_tr_seed43/calibration.json`(SIM_BP gap=0.32, K_CD=12) | +| re400 校准 | `archive/transfer_instability/kar_re400_tr_seed43/calibration.json`(SIM_BP gap=0.17, K_CD=12) | +| re60 base 日志 | `archive/transfer_instability/kar_re60_tr_seed43/train.log` | +| re200 base 日志 | `archive/transfer_instability/kar_re200_tr_seed43/train.log` | | re200 ext 日志 | `output/transfer_re200ext_seed43/train.log`(0.535→0.244 退化) | -| re400 base 日志 | `output/transfer_re400_seed43/train.log`(Ep28 0.553→0.264 退化) | +| re400 base 日志 | `archive/transfer_instability/kar_re400_tr_seed43/train.log`(Ep28 0.553→0.264 退化) | | re400 ext2 日志 | `output/transfer_re400ext2_seed43/train.log` | diff --git a/src/drl_pinball/train/DESIGN_DECISIONS.md b/src/drl_pinball/train/DESIGN_DECISIONS.md new file mode 100644 index 0000000..8b61d78 --- /dev/null +++ b/src/drl_pinball/train/DESIGN_DECISIONS.md @@ -0,0 +1,19 @@ +# Training design decisions and compatibility notes + +These are current contracts and historical caveats for `src/drl_pinball/train`. + +- **Shared train/eval environment is intentional.** Each outer iteration evaluates on the same wrapped CFD environment used for learning. Reset/rollout changes environment state and updates `VecNormalize` observation statistics while it remains in training mode. Evaluation does not update policy weights. +- **Outer “episode” means PPO chunk.** One logged episode is normally `learn(2048)` plus a 360-step evaluation. The Gym environments do not terminate; this is not a Gym episode. +- **Symmetry is default-off.** The wrapper remains available for explicit experiments. Historical runs configured with 0.5 were effectively unaugmented because each learn/eval reset restarted the rollout counter before mirrored training transitions could occur; do not label those models symmetry-augmented. +- **Force aggregation differs by scene.** Karman averages the three controlled-cylinder drag/lift values and targets zero. Illusion sums all three and matches one target cylinder. +- **Calibration stages are sorted by quality.** Stage0 is zero rotation and Stage1 is reference open loop. Their DTW scores are sorted into worst/better anchors; stage number does not imply quality. +- **Reward constants differ.** Karman uses `K_CD/K_CL=50/100`; Illusion uses `12/25` because summed three-cylinder forces are compared with one target-cylinder force. +- **`target_diam` is a historical misnomer.** The value is passed to CelerisLab as `radius = target_diam * L0`. With `L0=20`, ratios 0.75/1/1.5/2 mean radii 15/20/30/40 and physical diameters 30/40/60/80 lattice units. +- **Normalization has three layers.** CelerisLab first area/time-averages sensor observations, the env divides force/sensor channels by calibrated `FORCE_SCALE`/`SENS_SCALE`, and `VecNormalize` learns running observation statistics online. Schema-less legacy artifacts inserted `SENSOR_CC=78` before pre-scaling; active native-v2 artifacts do not. The six-channel `legacy-policy-v1` path remains only to load an existing legacy model with its matching normalizer. +- **`VecNormalize` is online, not calibration.** Phase 0 produces fixed physical/reward scales. SB3 running moments evolve through both learning and shared-env evaluation. +- **Best policy requires best normalizer.** `best_model.zip` is incomplete without `best_vecnormalize.pkl` saved at that same best-selection point. Freeze it for inference. +- **Resume is continuation, not exact replay.** It restores a policy checkpoint and matching normalizer, then constructs a new process/environment. It does not promise exact optimizer, RNG, CFD, wrapper, or trajectory state recovery. +- **Seeds distinguish runs, not deterministic replay.** GPU CFD, CUDA/PyTorch behavior, PPO sampling, and process state prevent that stronger guarantee. +- **Targets must be calibrated artifacts.** Keep `target.npy` (and Illusion harmonics) matched to case, config, geometry, SI, force convention, and `calibration.json`. +- **Result retention is historical.** Checked-in summaries/figures support prior writing. They are not model-release artifacts and do not establish full validation or retraining after code changes. +- **Release boundary.** The release provides code, configs, canonical targets, and compact retained best-policy bundles. Each policy is paired with its same-selection normalizer and provenance; intermediate/final checkpoints, logs, TensorBoard streams, and archived failed runs are excluded. diff --git a/src/drl_pinball/train/README.md b/src/drl_pinball/train/README.md index 22000f2..f29c915 100644 --- a/src/drl_pinball/train/README.md +++ b/src/drl_pinball/train/README.md @@ -1,221 +1,71 @@ -# DynamisLab — 训练目录 +# DRL pinball training quickstart -> `src/drl_pinball/train/` -> 更新: 2026-07-12 +This directory contains the source workflow for calibrating and training the modern 2000×600 CelerisLab PPO environments. The release reproduces the workflow and includes compact best-policy bundles for the retained active runs. Existing `results/` material remains historical support for prior writing and is not a claim that current code has been fully retrained or validated. ---- +## Setup -## 命名规则 - -``` -{domain}_{variant}_{method}_seed{seed} - -domain: kar = Karman | ill = Illusion -variant: re{60,100,200,400} = 雷诺数 | d{075,15,2} = 扰动圆柱直径(L) | {1L,15L,075L,2L} = 目标圆柱尺寸 -method: sc = from scratch | tr = transfer from re100 baseline -seed: seed{41..45} - -Examples: - kar_re100_sc_seed45 — Karman Re100 scratch, seed 45 - kar_d075_sc_seed44 — Karman 0.75L dist-cyl scratch - kar_d15_tr_seed45 — Karman 1.5L dist-cyl transfer - kar_re200_sc_seed43 — Karman Re200 scratch - ill_2L_sc_seed43 — Illusion 2L target scratch -``` - ---- - -## 目录结构 - -``` -train/ -├── train_karman.py # Karman PPO 训练 (核心) -├── train_illusion.py # Illusion PPO 训练 -├── calibrate.py # Phase 0 校准 -│ -├── env_karman.py # Karman 环境 -├── env_illusion.py # Illusion 环境 -├── symmetry_wrapper.py # G-symmetry 数据增强 -│ -├── scripts/ # 启动脚本 -│ ├── train_baseline.sh # kar_re100_sc multi-seed -│ ├── train_illusion.sh # ill_*_sc 4 个尺寸 -│ ├── vardist_scratch.sh # kar_d*_sc (推荐) -│ ├── vardist_transfer.sh # kar_d*_tr (参考) -│ ├── crossre_scratch.sh # kar_re*_sc -│ ├── crossre_transfer.sh # kar_re*_tr (参考) -│ └── resume.sh # 中断恢复 -│ -├── calibrations/ # 校准文件 -│ ├── kar_re100/ # Re100 基准 -│ ├── kar_d*_sc/ # 变直径 scratch (generic SIM_BP) -│ ├── kar_d*_tr/ # 变直径 transfer (实测 SIM_BP) -│ ├── kar_re*_sc/ # 变雷诺数 scratch (generic SIM_BP) -│ ├── kar_re*/ # 变雷诺数 transfer (实测 SIM_BP) -│ └── ill_*/ # Illusion -│ -├── output/ # 训练输出 (21 dirs) -│ ├── kar_re100_sc_seed{41..45}/ -│ ├── kar_d*_sc_seed{44,45}/ -│ ├── kar_d*_tr_seed{44,45}/ -│ ├── kar_re*_sc_seed43/ -│ ├── kar_re*_tr_seed43/ -│ └── ill_*_sc_seed43/ -│ -├── archive/ # 旧版本 (保留) -├── README.md # 当前文件 -├── VARDIST_ANALYSIS.md -├── CROSSRE_ANALYSIS.md -└── SERVER_DEPLOY.md -``` - ---- - -## 快速开始 - -### 基准训练 +From the repository root: ```bash -cd scripts -bash train_baseline.sh --gpu 0 --episodes 500 -# → output/kar_re100_sc_seed{41..45}/ +git submodule update --init --recursive +conda create -n pycuda_3_10 python=3.10 -y +conda activate pycuda_3_10 +pip install pycuda +pip install -e CelerisLab +pip install -e . ``` -### 变直径 scratch (推荐) +Run on Linux with an NVIDIA GPU. Commands below assume the repository's `pycuda_3_10` environment. + +## Calibrate the target + +Training requires a matched, calibrated artifact set: `calibration.json` and `target.npy`, plus `target_harmonics.json` for Illusion. A JSON alone is not a complete target artifact. Generate the target on the training server before training; do not substitute an uncalibrated target. For example: ```bash -cd scripts -bash vardist_scratch.sh --gpu 0 -bash vardist_scratch.sh --only d075 -# → output/kar_d075_sc_seed44/ etc. -``` +cd src/drl_pinball/train +conda run --no-capture-output -n pycuda_3_10 python -u calibrate.py \ + --case kar_re100 --device-id 0 --si 800 \ + --config ../../../configs/config_lbm_karman_2000x600.json \ + --out-dir calibrations/kar_re100 +``` Canonical active case IDs omit method suffixes: -### 变雷诺数 scratch +- Karman: `kar_re100`, `kar_re60`, `kar_re200`, `kar_re400`, `kar_d075`, `kar_d15`, `kar_d2` +- Illusion: `ill_075L`, `ill_1L`, `ill_15L`, `ill_2L` + +`_tr` identifies historical archived transfer runs only. Older `_sc` names may still appear inside retained artifacts and history; they are not canonical active IDs. + +## Train + +Launchers run cases serially on one GPU: ```bash -cd scripts -bash crossre_scratch.sh --gpu 0 -bash crossre_scratch.sh --only re200 -# → output/kar_re200_sc_seed43/ etc. +cd src/drl_pinball/train +bash scripts/train_baseline.sh --gpu 0 --seeds 41,42 --episodes 500 +bash scripts/crossre_scratch.sh --gpu 0 --only re200 --episodes 500 +bash scripts/vardist_scratch.sh --gpu 0 --only d15 --episodes 500 +bash scripts/train_illusion.sh --gpu 0 --only 1L --episodes 500 ``` -### Illusion +For an explicit single run, use the Python entry point and the matching config/calibration: ```bash -cd scripts -bash train_illusion.sh --gpu 0 -# → output/ill_2L_sc_seed43/ etc. +conda run --no-capture-output -n pycuda_3_10 python -u train_karman.py \ + --case-name kar_re100 --device-id 0 --seed 42 \ + --config ../../../configs/config_lbm_karman_2000x600.json \ + --calibration calibrations/kar_re100/calibration.json \ + --total-episodes 500 --symmetry-prob 0 ``` -### 中断恢复 +Illusion uses `train_illusion.py` and an `ill_*` calibration. Symmetry is intentionally default-off; see `DESIGN_DECISIONS.md`. + +Resume requires the matching policy and normalizer checkpoint: ```bash -cd scripts -bash resume.sh --case kar_re60_sc --seed 43 --resume 460 --episodes 500 +bash scripts/resume.sh --case kar_re200 --seed 43 --resume 460 --episodes 500 --gpu 0 ``` ---- +A training “episode” in these interfaces is one PPO learning chunk (normally 2048 environment steps) followed by a 360-step deterministic evaluation. It is not a Gym episode. -## 核心训练脚本 +Outputs are written below `output/{case}_seed{seed}/`. The repository retains only each active run’s compact inference bundle: `models/best_model.zip`, `best_vecnormalize.pkl`, `meta.json`, `calibration.json`, and a run-local `target.npy` when available. Canonical calibration targets provide the documented fallback for retained legacy bundles. Intermediate/final checkpoints, TensorBoard streams, and logs remain local. Resume is policy-plus-normalizer continuation, not exact process replay. -### `train_karman.py` - -```bash -conda run -n pycuda_3_10 python -u train_karman.py \ - --case-name kar_re100_sc --device-id 0 --seed 42 \ - --config config.json --calibration calibrations/kar_re100/calibration.json \ - --total-episodes 500 [--transfer-model PATH] [--resume-from N] -``` - -| 参数 | 默认值 | 说明 | -|------|:-----:|------| -| n_steps | 2048 | PPO 每轮收集步数 | -| batch_size | 64 | minibatch | -| n_epochs | 10 | 经验重用次数 | -| lr | 3e-4 | 学习率 | -| gamma | 0.995 | 折扣因子 | -| net_arch | [64, 64] | MLP 两层 sin 激活 | - ---- - -## 最终结果 - -### Re100 基准 — `kar_re100_sc` - -| Seed | r_sim | r_cd | r_cl | -|:----:|:-----:|:----:|:----:| -| 45 | 0.883 | 0.977 | 0.982 | -| Avg | 0.866 | 0.971 | 0.965 | - -### Vardist 变直径 - -| Case | 方式 | r_sim | r_cd | r_cl | -|------|:----:|:-----:|:-----:|:-----:| -| **kar_d075_sc** | scratch | **0.918** | 0.954 | 0.879 | -| kar_d075_tr | transfer | 0.450 | 0.585 | 0.236 | -| **kar_d15_sc** | scratch | **0.904** | 0.991 | 0.992 | -| kar_d15_tr | transfer | 0.791 | 0.918 | 0.470 | -| **kar_d2_sc** | scratch | **0.793** | 0.967 | 0.961 | -| kar_d2_tr | transfer | 0.673 | 0.537 | 0.192 | - -> Scratch 全面领先 transfer。 - -### Cross-Re 变雷诺数 - -| Case | 方式 | r_sim | r_cd | r_cl | -|------|:----:|:-----:|:-----:|:-----:| -| kar_re60_tr | transfer | 0.446 | **0.882** | 0.936 | -| kar_re60_sc | scratch | 0.261 | **0.987** | 0.981 | -| **kar_re200_sc** | scratch | **0.664** | 0.667 | 0.281 | -| kar_re200_tr | transfer | 0.374 | 0.749 | 0.427 | -| **kar_re400_sc** | scratch | **0.509** | 0.714 | 0.420 | -| kar_re400_tr | transfer | 0.293 | 0.883 | 0.571 | - -> Scratch sim 最优,transfer CD 最优。两者均保留。 - -### Illusion - -| Case | r_sim | r_cd | r_cl | -|------|:-----:|:-----:|:-----:| -| ill_1L_sc | 0.725 | 0.774 | 0.449 | -| ill_15L_sc | 0.810 | 0.825 | 0.384 | -| ill_075L_sc | 0.794 | 0.840 | 0.486 | -| **ill_2L_sc** | **0.896** | 0.863 | 0.570 | - ---- - -## Calibration 参考 - -| Calibration | 物理 | SI | SIM_BP | K_CD/K_CL | 对应 output | -|------------|------|:--:|--------|:---------:|------------| -| `kar_re100` | Re=100, 1.0L | 800 | 实测 | 50/100 | `kar_re100_sc` | -| `kar_d075_sc` | Re=100, 0.75L | 800 | generic | 50/100 | `kar_d075_sc` | -| `kar_d075_tr` | Re=100, 0.75L | 800 | 实测 | 50/100 | `kar_d075_tr` | -| `kar_d15_sc` | Re=100, 1.5L | 800 | generic | 50/100 | `kar_d15_sc` | -| `kar_d15_tr` | Re=100, 1.5L | 800 | 实测 | 50/100 | `kar_d15_tr` | -| `kar_d2_sc` | Re=100, 2.0L | 800 | generic | 50/100 | `kar_d2_sc` | -| `kar_d2_tr` | Re=100, 2.0L | 800 | 实测 | 50/100 | `kar_d2_tr` | -| `kar_re60` | Re=60 | 800 | 实测 | 12/25 | `kar_re60_tr` | -| `kar_re60_sc` | Re=60 | 800 | generic | 50/100 | `kar_re60_sc` | -| `kar_re200` | Re=200 | 500 | 实测 | 12/25 | `kar_re200_tr` | -| `kar_re200_sc` | Re=200 | 500 | generic | 50/100 | `kar_re200_sc` | -| `kar_re400` | Re=400 | 400 | 实测 | 12/25 | `kar_re400_tr` | -| `kar_re400_sc` | Re=400 | 400 | generic | 50/100 | `kar_re400_sc` | -| `ill_*` | Illusion | — | 实测 | 12/25 | `ill_*_sc` | - ---- - -## Key Findings - -1. **SIM_BP 映射是跨场景训练的最关键变量。** 实测 gap ≠ 0.35 会导致 reward 梯度异常。 - - Generic SIM_BP `[0, 0.30, 0.65, 0.79, 0.89, 1.0]` (gap=0.35) → 稳定学习 - -2. **变直径: scratch > transfer.** Generic SIM_BP + K_CD/CL=50/100 + lr=3e-4 + 500ep 是最优配方。 - -3. **变雷诺数: scratch 和 transfer 各有侧重。** 两者均保留。 - -4. **变雷诺数存在 CD/CL ↔ r_sim 根本性 trade-off。** 训练越久 r_cd 越高但 r_sim 越低(re60_sc: Ep60 r_sim=0.48 → Ep390 r_sim=0.26, r_cd=0.99)。CD/CL reward 分量主导了优化方向。 - -5. **降低 W_drag/W_lift (0.1) 有害。** CD/CL reward 是稳定器而非瓶颈。 - -6. **Ep1 r_sim ≥ 0.5 可预测 transfer 成功。** +See `TRAIN_PIPELINE.md` for the full data path, `SERVER_DEPLOY.md` for server commands, and `DESIGN_DECISIONS.md` for conventions and limitations. diff --git a/src/drl_pinball/train/SERVER_DEPLOY.md b/src/drl_pinball/train/SERVER_DEPLOY.md index fc0b110..165b895 100644 --- a/src/drl_pinball/train/SERVER_DEPLOY.md +++ b/src/drl_pinball/train/SERVER_DEPLOY.md @@ -1,189 +1,108 @@ -# Server Deployment Guide +# Server deployment -## Prerequisites +This guide uses only scripts and configs currently present in the repository. The release reproduces the training workflow and distributes compact best-policy bundles for retained active runs. -- Linux with NVIDIA GPU(s) and CUDA toolkit installed -- Python 3.10+ -- CelerisLab submodule - -## One-Time Setup +## Install ```bash -# 1. Clone with submodules -git clone --recurse-submodules +git clone --recurse-submodules DynamisLab cd DynamisLab - -# 2. Create conda environment -conda create -n pycuda_3_10 python=3.10 +conda create -n pycuda_3_10 python=3.10 -y conda activate pycuda_3_10 - -# 3. Install PyCUDA (match your CUDA version) pip install pycuda - -# 4. Install CelerisLab pip install -e CelerisLab - -# 5. Install DynamisLab pip install -e . - -# 6. Verify -python -c "from CelerisLab import Simulation; print('OK')" +python -c "from CelerisLab import Simulation; print('CelerisLab import OK')" ``` -## Calibration (one per case, before training) +Requirements: Linux, NVIDIA GPU/driver and a compatible CUDA toolkit. Run commands from `src/drl_pinball/train` unless stated otherwise. -Every case MUST be calibrated once. This produces calibration.json + target files. +## Canonical cases and configs -### Karman Cloak (Re100, SI=800) -```bash -cd src/drl_pinball/train -conda run -n pycuda_3_10 python calibrate.py \ - --case re100 --device-id 0 \ - --config ../../../configs/config_lbm_karman_2000x600.json -``` +Active IDs have no `_sc` suffix: -### Karman Cloak (Re200, SI=500) -```bash -conda run -n pycuda_3_10 python calibrate.py \ - --case re200 --device-id 0 --si 500 \ - --config ../../../configs/config_lbm_karman_2000x600_re200.json -``` +- `kar_re100`, `kar_d075`, `kar_d15`, `kar_d2`, and all `ill_*` use `../../../configs/config_lbm_karman_2000x600.json`. +- `kar_re60`, `kar_re200`, `kar_re400` use the matching `..._re60.json`, `..._re200.json`, `..._re400.json`. +- `_tr` appears only in archived transfer experiments. -### Karman Cloak (Re50, SI=1600 / Re400, SI=400) -```bash -conda run -n pycuda_3_10 python calibrate.py \ - --case re50 --device-id 0 --si 1600 \ - --config ../../../configs/config_lbm_karman_2000x600_re50.json +## Calibrate a new artifact set -conda run -n pycuda_3_10 python calibrate.py \ - --case re400 --device-id 0 --si 400 \ - --config ../../../configs/config_lbm_karman_2000x600_re400.json -``` - -### Illusion (1L target, SI=600) -```bash -conda run -n pycuda_3_10 python calibrate.py \ - --case illusion_1L --device-id 0 --si 600 --scene illusion \ - --config ../../../configs/config_lbm_karman_2000x600.json -``` - -## Training - -### CRITICAL: Sequential GPU Startup - -Each GPU needs ~7 minutes between starts because CelerisLab compiles CUDA kernels -during the first Simulation() constructor. If two start simultaneously, the kernel -cache gets corrupted → reward=0.000 forever. - -### Single-GPU Training (for testing) +Generate a matched calibrated target set on the training server before training. To create the Karman baseline set used by the active launcher: ```bash -# Karman Re100, 20 episodes -conda run -n pycuda_3_10 python -u train_karman.py \ - --case-name re100_test --device-id 0 --seed 42 \ - --config ../../../configs/config_lbm_karman_2000x600.json \ - --calibration calibrations/re100/calibration.json \ - --total-episodes 20 - -# Illusion 1L, 20 episodes -conda run -n pycuda_3_10 python -u train_illusion.py \ - --case-name illusion_test --device-id 0 --seed 42 \ - --config ../../../configs/config_lbm_karman_2000x600.json \ - --calibration calibrations/illusion_1L/calibration.json \ - --total-episodes 20 +conda run --no-capture-output -n pycuda_3_10 python -u calibrate.py \ + --case kar_re100 --device-id 0 --si 800 \ + --config ../../../configs/config_lbm_karman_2000x600.json \ + --out-dir calibrations/kar_re100 ``` -### Multi-GPU Training (6 GPUs, using launch script) +For Illusion, remember that the historical `--target-diam` option is passed as a radius ratio: `1.0` produces radius `1.0*L0=20` lattice units, hence physical diameter 40. ```bash -# Re100 Karman, 6 seeds -bash launch_multi.sh \ - --case-name re100_karman --seeds 42,43,44,45,46,47 \ - --gpus 0,1,2,3,4,5 --episodes 500 \ - --config ../../../configs/config_lbm_karman_2000x600.json \ - --calibration calibrations/re100/calibration.json - -# Re200 Karman, transfer learning from Re100 -bash launch_multi.sh \ - --case-name re200_karman --seeds 42,43,44,45,46,47 \ - --gpus 0,1,2,3,4,5 --episodes 500 \ - --config ../../../configs/config_lbm_karman_2000x600_re200.json \ - --calibration calibrations/re200/calibration.json \ - --transfer output/re100_karman_seed42/models/best_model.zip +conda run --no-capture-output -n pycuda_3_10 python -u calibrate.py \ + --case ill_1L --scene illusion --target-diam 1.0 \ + --device-id 0 --si 1200 \ + --config ../../../configs/config_lbm_karman_2000x600.json \ + --out-dir calibrations/ill_1L ``` -### Manual Multi-GPU (tmux/screen) +Keep each generated `calibration.json` with its `target.npy` and, for Illusion, `target_harmonics.json`. Targets are calibrated artifacts, not interchangeable input samples. -If launch_multi.sh doesn't work, start manually with delays: +## Train + +Real launchers in `scripts/` run serially on one GPU: ```bash -# GPU 0 -nohup conda run -n pycuda_3_10 python -u train_karman.py \ - --case-name re100_karman --device-id 0 --seed 42 \ - --config ../../../configs/config_lbm_karman_2000x600.json \ - --calibration calibrations/re100/calibration.json \ - --total-episodes 500 > output/re100_karman_seed42/nohup.log 2>&1 & - -# WAIT 7 minutes (until "Env ready" appears in log) -sleep 420 - -# GPU 1 -nohup conda run -n pycuda_3_10 python -u train_karman.py \ - --case-name re100_karman --device-id 1 --seed 43 \ - --config ../../../configs/config_lbm_karman_2000x600.json \ - --calibration calibrations/re100/calibration.json \ - --total-episodes 500 > output/re100_karman_seed43/nohup.log 2>&1 & - -# Repeat for GPU 2,3,4,5 with seeds 44,45,46,47 +bash scripts/train_baseline.sh --gpu 0 --seeds 41,42,43 --episodes 500 +bash scripts/crossre_scratch.sh --gpu 1 --only re200 --episodes 500 +bash scripts/vardist_scratch.sh --gpu 2 --only d15 --episodes 500 +bash scripts/train_illusion.sh --gpu 3 --only 1L --episodes 500 ``` -## Monitoring +There is no active `launch_multi.sh`. For multiple GPUs, start one existing launcher per GPU and give each a disjoint case/seed selection. Stagger heavy CelerisLab initialization if the shared server or CUDA compilation cache requires it; no universal seven-minute delay is guaranteed by this repository. + +Explicit single-run example: ```bash -# Check training progress -tail -f output/re100_karman_seed42/train.log - -# TensorBoard -tensorboard --logdir output/re100_karman_seed42/tb --port 6006 --bind_all - -# Monitor GPU usage -watch -n 1 nvidia-smi +conda run --no-capture-output -n pycuda_3_10 python -u train_karman.py \ + --case-name kar_re100 --device-id 0 --seed 42 \ + --config ../../../configs/config_lbm_karman_2000x600.json \ + --calibration calibrations/kar_re100/calibration.json \ + --total-episodes 500 --symmetry-prob 0 ``` -## Output Structure - -``` -output/ -└── re100_karman_seed42/ - ├── models/ - │ ├── best_model.zip # Best reward model - │ ├── final_model.zip # Final iteration model - │ └── chkpt_ep*.zip # Checkpoints every 10 episodes - ├── tb/ # TensorBoard logs - ├── train.log # Training log - ├── calibration.json # Copy of calibration used - ├── vec_normalize.pkl # VecNormalize statistics - └── meta.json # Run metadata -``` - -## Stopping +Resume with both checkpoint members present: ```bash -# Stop all training -pkill -f train_karman -pkill -f train_illusion - -# Or by PID -ps aux | grep train_karman | grep -v grep | awk '{print $2}' | xargs kill +bash scripts/resume.sh --case kar_re200 --seed 43 --resume 460 --episodes 500 --gpu 0 ``` -## Troubleshooting +Resume continues policy and `VecNormalize`; it is not exact deterministic replay. Seeds distinguish runs but do not guarantee replay. -| Symptom | Cause | Fix | -|---------|-------|-----| -| reward=0.000 forever | Kernel compilation race (two inits at once) | Kill both, `rm -f ~/CelerisLab/src/CelerisLab/lbm/kernels/config/config_objects.h ~/CelerisLab/src/CelerisLab/lbm/kernels/kernel.ptx`, restart sequentially | -| reward=NaN | FORCE_SCALE too small | Check calibration.json, re-run calibrate.py | -| reward flat at Stage0 | Action not being applied | Check `_action_to_omega` sign, `set_body` call | -| CUDA OOM | PyTorch+PyCUDA memory conflict | Reduce `--batch-size 32` | -| ImportError: CelerisLab | Not installed | Run `pip install -e CelerisLab` in conda env | -| Conda env not found | Wrong environment | Use `conda env list` to verify `pycuda_3_10` exists | +## Monitor and retain + +```bash +tail -f output/kar_re100_seed42/train.log +tensorboard --logdir output/kar_re100_seed42/tb --port 6006 --bind_all +nvidia-smi +``` + +Expected run layout: + +```text +output/kar_re100_seed42/ +├── calibration.json +├── meta.json +├── train.log +├── tb/ +├── best_vecnormalize.pkl +├── final_vecnormalize.pkl +├── vec_normalize.pkl # legacy final-state alias +└── models/ + ├── best_model.zip + ├── final_model.zip + ├── epNNNN_model.zip + └── epNNNN_vecnormalize.pkl +``` + +Treat `models/best_model.zip` and root `best_vecnormalize.pkl` as one artifact. Only the allowlisted best-policy inference bundle is released from each active `output/` run. Intermediate/final checkpoints, logs, and TensorBoard streams remain local. Retained repository results are historical writing basis rather than evidence of complete post-fix retraining. diff --git a/src/drl_pinball/train/TRAIN_PIPELINE.md b/src/drl_pinball/train/TRAIN_PIPELINE.md new file mode 100644 index 0000000..b254241 --- /dev/null +++ b/src/drl_pinball/train/TRAIN_PIPELINE.md @@ -0,0 +1,132 @@ +# Current DRL training pipeline + +This document describes the executable modern training path in this directory. It is a workflow specification, not evidence that the current source has been fully retrained or validated after later fixes. The release includes compact best-policy bundles for retained active runs; retained result summaries remain historical writing inputs rather than post-fix retraining evidence. + +## 1. Scope and cases + +The active path uses CelerisLab on a 2000×600 D2Q9 grid, uniform regularized inlet, free-slip y walls, MRT collision, double buffering, zero action bias, Gymnasium environments, Stable-Baselines3 PPO, and observation-only `VecNormalize`. + +Canonical active IDs omit `_sc`: + +| Family | Cases | Config | SI | +|---|---|---|---:| +| Karman baseline | `kar_re100` | `configs/config_lbm_karman_2000x600.json` | 800 | +| Karman cross-Re | `kar_re60`, `kar_re200`, `kar_re400` | matching `_re60`, `_re200`, `_re400` JSON | 800, 500, 400 | +| Karman variable disturbance radius | `kar_d075`, `kar_d15`, `kar_d2` | base JSON | 800 | +| Illusion | `ill_075L`, `ill_1L`, `ill_15L`, `ill_2L` | base JSON | 1100, 1200, 1200, 1200 | + +Code-level Re uses reference length `2L0=40`, so code `re100` corresponds to physical cylinder-diameter `Re_D=50`. `_tr` is reserved for archived transfer experiments. `_sc` survives only in historical paths/artifacts and must not be introduced into active prose or new case IDs. + +## 2. End-to-end flow + +```text +calibrate.py + ├─ record calibrated target signal + ├─ warm training geometry and snapshot it + ├─ measure Stage0 (zero rotation) + ├─ measure Stage1 (reference open loop) + └─ write calibration.json + target artifacts + │ + ▼ +train_karman.py / train_illusion.py + ├─ load the matched calibration and target artifacts + ├─ build physical env → symmetry wrapper → DummyVecEnv → VecNormalize + ├─ repeat: PPO learn chunk → same-env deterministic evaluation → checkpoint + └─ write policy, paired normalizer, log, TensorBoard, metadata + │ + ▼ +../eval/ (separate inference/evaluation workflow) +``` + +Training and evaluation intentionally share one wrapped environment. This preserves CFD data continuity and avoids constructing a second GPU simulation, but evaluation is not side-effect-free: resetting/stepping changes environment state and, while `VecNormalize.training` remains true, updates observation running statistics. The policy weights do not update during evaluation. + +## 3. Phase 0: calibration + +`calibrate.py` performs the expensive target and baseline measurements. For Karman it records the wake of one upstream disturbance cylinder at three sensors. For Illusion it records a standalone target cylinder at three sensors plus target drag/lift, then stores a five-harmonic reconstruction of all eight channels. + +Artifacts are a contract: + +- `calibration.json`: geometry metadata, SI, scales, DTW mapping, reward constants, action mapping. +- `target.npy`: calibrated six-channel sensor target, shape `(150, 6)`. +- `target_harmonics.json`: Illusion only; calibrated sensor/force harmonic model. +- `calibrate.log`: provenance log when calibration is run locally. + +Target artifacts must come from the same calibrated case, config, geometry, SI, and force convention as `calibration.json`. Training fallback target recording is convenience behavior, not a substitute for producing and preserving a calibrated artifact set. + +Calibration warms the target simulation for `4*NX/U0 = 800000` lattice steps. It then warms the training geometry, snapshots it, and measures: + +1. **Stage0** — zero rotation. +2. **Stage1** — reference open-loop rotation (`[0, 0.004, -0.004]` Karman; `[0, 0.005, -0.005]` Illusion). + +Stage numbers describe acquisition order, not quality. The code sorts their mean DTW similarities into `worst_sim` and `better_sim` before constructing `SIM_BP`; Stage1 is not assumed better. Karman falls back to the generic `[0, .30, .65, .79, .89, 1]` mapping when the measured spread is below 0.10 or the better baseline is below 0.5. Illusion uses its scene-specific sorted mapping and `SIM_VAL=[0, .1, .35, .7, .85, 1]`. + +Reward force sensitivities are: + +- Karman: `K_CD=50`, `K_CL=100`. +- Illusion: `K_CD=12`, `K_CL=25`. + +## 4. Geometry, observations, and actions + +Karman contains disturbance cylinder + three sensors + three controlled cylinders. Its 12-vector is six controlled-cylinder forces followed by six sensor velocities. Drag and lift rewards use the **average** across the three controlled cylinders and target zero force. + +Illusion contains three sensors + three controlled cylinders; the target cylinder exists only during target acquisition. Its 14-vector appends reconstructed target drag and lift to the same 12 channels. Its force reward compares the **sum** of all three controlled-cylinder forces with the single target-cylinder force. This wider mismatch motivates the lower `12/25` Gaussian constants. + +The historical field name `target_diam` is misleading. The implementation passes `target_diam * L0` to CelerisLab as the circle **radius**. Therefore values `0.75, 1.0, 1.5, 2.0` are radius ratios relative to `L0=20`, giving physical lattice radii `15, 20, 30, 40` and diameters `30, 40, 60, 80`. Preserve this interpretation when reading or regenerating artifacts. + +Actions are three normalized rotations: + +```text +omega = -(action * ACTION_SCALE) * U0 / RADIUS +ACTION_SCALE=12, U0=0.01, RADIUS=10 +``` + +A 0.1 EMA smooths commanded omega. There is no legacy action bias. + +## 5. Three normalization layers + +The observation path has three distinct layers; they must not be collapsed conceptually: + +1. **Solver observation averaging** — CelerisLab `read_sensor(..., normalize=True)` returns a sensor-area and sampling-time average; force reads are sampling-time averages. +2. **Calibration pre-scaling** — force channels divide by `FORCE_SCALE`; sensor channels divide by `SENS_SCALE`. Illusion target-force channels divide by `FORCE_SCALE` before entering the 14-vector. Current `drl-pinball-calibration-v2` artifacts store native CelerisLab sensor units. +3. **Online `VecNormalize`** — running mean/variance whiten the complete observation (`norm_obs=True`, `norm_reward=False`, `clip_obs=10`, `gamma=0.99`). This is learned online during training; it is not the Phase 0 calibration. + +Legacy schema-less calibrations instead used `SENSOR_CC=78` to convert native sensor values into the old policy/DTW unit convention before pre-scaling. `normalization.py` keeps that compatibility path for an existing legacy policy plus its matching `VecNormalize`; the active v2 schema does not apply 78. + +Inference must load the model's matching `VecNormalize` and freeze it (`training=False`). A “best model” without the normalizer state saved at the same best-selection point is incomplete. + +## 6. PPO loop and shared evaluation + +Defaults: sinusoidal MLP `[64,64]`, `n_steps=2048`, `learn_timesteps=2048`, batch 64, 10 epochs, learning rate `3e-4`, PPO gamma `0.995`. + +One outer `total_episodes` iteration is: + +1. `model.learn(learn_timesteps, reset_num_timesteps=False)`. +2. Disable symmetry probability on the same wrapped env. +3. Reset and run up to 360 policy steps with `model.predict(..., deterministic=True)`. +4. Score mean reward over the last 180 steps. +5. If improved, save `best_model.zip` and root `best_vecnormalize.pkl` at the same point. +6. Save per-iteration model and normalizer checkpoints; finally save `final_model.zip`. + +The environments never terminate a Gym episode themselves. “Episode” in logs and CLI means this outer PPO chunk, not a Gym episode. + +Because evaluation uses the training `VecNormalize`, its observations contribute to running statistics. This is intentional and must be reproduced when continuing this workflow. + +## 7. Symmetry status + +`SymmetryAugmentWrapper` implements the up/down G transform. The supported training default is off (`--symmetry-prob 0`); enable it only as an explicit experiment. + +History matters: legacy runs were configured with probability 0.5, but repeated `model.learn(...)` and evaluation resets reset the wrapper counter at each chunk. The mirror coin flip occurred only at the chunk boundary, after the last transition, so those models were effectively trained without augmented transitions. They must not be described as symmetry-augmented evidence. + +## 8. Checkpoints, resume, and seeds + +Each iteration pairs `epNNNN_model.zip` with `epNNNN_vecnormalize.pkl`. Resume loads both, reconstructs a new CFD environment, parses historical best reward from `train.log`, and continues at `N+1`. + +Resume is policy-and-normalizer continuation. It is **not** exact state restoration: optimizer/RNG details, CFD process/context, environment trajectory, wrapper state, TensorBoard state, and wall-clock scheduling are not guaranteed to replay identically. Likewise, `--seed` differentiates stochastic runs; it is not a deterministic replay guarantee for GPU CFD + PyTorch + PPO. + +Transfer loading remains in the Python entry points for historical compatibility, but active launchers train from scratch. Historical transfer scripts, logs, calibrations, and metadata live below `archive/`; see the warnings in `CROSSRE_ANALYSIS.md` and `VARDIST_ANALYSIS.md`. + +## 9. Output contract and release status + +A run directory contains `calibration.json`, `train.log`, `tb/`, `meta.json`, `models/`, and normalizer files. `best_model.zip` must travel with `best_vecnormalize.pkl`; `final_model.zip` uses `final_vecnormalize.pkl`, and per-iteration policies use the matching `epNNNN_vecnormalize.pkl`. The legacy root `vec_normalize.pkl` remains a final-state compatibility alias. + +The repository publishes the source and canonical targets needed to reproduce the workflow, plus compact retained best-policy bundles (`best_model.zip` with the same-selection `best_vecnormalize.pkl` and provenance files). It does not publish intermediate/final checkpoints, full training logs, or TensorBoard streams. Any retained `results/` summaries and figures are historical writing basis only. Do not infer current post-fix validation, complete retraining, reproducibility across hardware, or release qualification from them. diff --git a/src/drl_pinball/train/VARDIST_ANALYSIS.md b/src/drl_pinball/train/VARDIST_ANALYSIS.md index cf2a645..001f2a9 100644 --- a/src/drl_pinball/train/VARDIST_ANALYSIS.md +++ b/src/drl_pinball/train/VARDIST_ANALYSIS.md @@ -1,4 +1,8 @@ -# Vardist Transfer Learning — 分析报告 +# Vardist Transfer Learning — 历史归档分析 + +> **历史归档 / ARCHIVED TRANSFER ANALYSIS** +> 本文记录 2026-07-07 的 `_tr` 迁移实验及当时诊断,保留其科学内容作为历史记录;它不描述当前 active scratch workflow,不是模型发布或当前验证声明。当前规范见 `README.md`、`TRAIN_PIPELINE.md` 与 `DESIGN_DECISIONS.md`。 +> 当前归档位置:迁移脚本在 `archive/scripts_deprecated/vardist_transfer.sh`;保留的 `_tr` 日志、校准副本和 metadata 在 `archive/transfer_instability/kar_d*_tr_seed*/`;旧校准在 `archive/calibrations_deprecated/kar_d*_tr/`。active case ID 不带 `_sc`,`_tr` 仅用于这些历史归档。 > 日期: 2026-07-07 > 实验: 改变上游扰动圆柱尺寸 (0.75L / 1.5L / 2.0L),从 re100 baseline 进行 transfer learning @@ -167,11 +171,11 @@ Ep 200: 0.246 | 训练脚本 | `train_karman.py` | | 环境 | `env_karman.py` | | 校准脚本 | `calibrate.py` (generic SIM_BP 兜底逻辑在第 526-535 行) | -| Transfer 启动脚本 | `vardist_transfer.sh` | -| d075 校准 | `calibrations/karman_d075/calibration.json` | -| d15 校准 | `calibrations/karman_d15/calibration.json` | -| d2 校准 | `calibrations/karman_d2/calibration.json` | +| Transfer 启动脚本 | `archive/scripts_deprecated/vardist_transfer.sh` | +| d075 校准 | `archive/transfer_instability/kar_d075_tr_seed44/calibration.json` | +| d15 校准 | `archive/transfer_instability/kar_d15_tr_seed45/calibration.json` | +| d2 校准 | `archive/transfer_instability/kar_d2_tr_seed45/calibration.json` | | re100 基线校准 | `calibrations/re100/calibration.json` | -| d075 训练日志 | `output/transfer_karman_d075_seed44/train.log` | -| d15 训练日志 | `output/transfer_karman_d15_seed45/train.log` | -| d2 训练日志 | `output/transfer_karman_d2_seed45/train.log` | +| d075 训练日志 | `archive/transfer_instability/kar_d075_tr_seed44/train.log` | +| d15 训练日志 | `archive/transfer_instability/kar_d15_tr_seed45/train.log` | +| d2 训练日志 | `archive/transfer_instability/kar_d2_tr_seed45/train.log` | diff --git a/src/drl_pinball/train/calibrate.py b/src/drl_pinball/train/calibrate.py index 95071f0..35480b9 100644 --- a/src/drl_pinball/train/calibrate.py +++ b/src/drl_pinball/train/calibrate.py @@ -2,7 +2,7 @@ """Phase 0 calibration: measure baselines and produce calibration.json for any case. Runs on new CelerisLab solver with 2000x600 config. Produces: - - target.npy (FIFO_LEN, 6) sensor signals (legacy-equiv) + - target.npy (FIFO_LEN, 6) sensor signals (CelerisLab native units) - calibration.json FORCE_SCALE, SENS_SCALE, dtw_norm_scale, SIM_BP, SIM_VAL Workflow: @@ -34,6 +34,7 @@ if str(_REPO) not in sys.path: sys.path.insert(0, str(_REPO)) from CelerisLab import Simulation +from normalization import CALIBRATION_SCHEMA_NATIVE_V2, SENSOR_UNITS_NATIVE # --------------------------------------------------------------------------- # Physics / geometry constants @@ -52,7 +53,6 @@ SENSOR_X = 1200.0 FIFO_LEN = 150 CONV_LEN = 30 -SENSOR_CC = 78.0 N_MEASURE = 100 @@ -160,7 +160,6 @@ def run_stage(sim, dist_id, sensor_ids, pinball_ids, target_states, gpu_block(sim, lambda: sim.run(si, zero_obs=True)) obs = read_obs(sim, dist_id, sensor_ids, pinball_ids) sl = obs[2:14].copy() - sl[0:6] *= SENSOR_CC fifo.append(sl) obs_slices, sims = [], [] @@ -168,7 +167,6 @@ def run_stage(sim, dist_id, sensor_ids, pinball_ids, target_states, gpu_block(sim, lambda: sim.run(si, zero_obs=True)) obs = read_obs(sim, dist_id, sensor_ids, pinball_ids) sl = obs[2:14].copy() - sl[0:6] *= SENSOR_CC fifo.append(sl) obs_slices.append(sl.copy()) sim_val = compute_similarity(target_states, np.array(list(fifo)), @@ -231,12 +229,12 @@ def _calibrate_illusion(case, config_path, device_id, si, out_dir, log, warmup, for i in range(FIFO_LEN): gpu_block(sim, lambda: sim.run(si, zero_obs=True)) target_states[i] = [ - sim.read_sensor(s0, normalize=True)[0] * SENSOR_CC, - sim.read_sensor(s0, normalize=True)[1] * SENSOR_CC, - sim.read_sensor(s1, normalize=True)[0] * SENSOR_CC, - sim.read_sensor(s1, normalize=True)[1] * SENSOR_CC, - sim.read_sensor(s2, normalize=True)[0] * SENSOR_CC, - sim.read_sensor(s2, normalize=True)[1] * SENSOR_CC, + sim.read_sensor(s0, normalize=True)[0], + sim.read_sensor(s0, normalize=True)[1], + sim.read_sensor(s1, normalize=True)[0], + sim.read_sensor(s1, normalize=True)[1], + sim.read_sensor(s2, normalize=True)[0], + sim.read_sensor(s2, normalize=True)[1], sim.read_force(0, normalize=True)[0], sim.read_force(0, normalize=True)[1], ] @@ -252,7 +250,7 @@ def _calibrate_illusion(case, config_path, device_id, si, out_dir, log, warmup, target_std = np.std(target_sensor, axis=0) uy_std_avg = float(np.mean([target_std[1], target_std[3], target_std[5]])) - dtw_norm_scale = max(uy_std_avg, 0.01) + dtw_norm_scale = max(uy_std_avg, np.finfo(np.float32).eps) log(f" Target recorded. DTW norm_scale: {dtw_norm_scale:.4f}") # ---- Step 2: Training sim (3 sensors + 3 pinball) ---- @@ -300,7 +298,7 @@ def _calibrate_illusion(case, config_path, device_id, si, out_dir, log, warmup, all_sens = np.concatenate([stage0["obs_slices"][:, 0:6], stage1["obs_slices"][:, 0:6]], axis=0) sens_scale = float(np.max(np.abs(all_sens))) - sens_scale = max(sens_scale, 0.01) + sens_scale = max(sens_scale, np.finfo(np.float32).eps) s0_sim = float(np.mean(stage0["sims"])) s1_sim = float(np.mean(stage1["sims"])) @@ -332,32 +330,33 @@ def _calibrate_illusion(case, config_path, device_id, si, out_dir, log, warmup, # Rounding force_scale = round(force_scale, 4) - sens_scale = round(sens_scale, 2) - dtw_norm_scale = round(dtw_norm_scale, 3) + sens_scale = round(sens_scale, 6) + dtw_norm_scale = round(dtw_norm_scale, 6) sim_bp = [round(x, 2) for x in sim_bp] for i in range(1, len(sim_bp)): if sim_bp[i] <= sim_bp[i - 1]: sim_bp[i] = sim_bp[i - 1] + 0.01 sim_bp[-1] = 1.0 - log(f" FORCE_SCALE = {force_scale:.4f}, SENS_SCALE = {sens_scale:.2f}") + log(f" FORCE_SCALE = {force_scale:.4f}, SENS_SCALE = {sens_scale:.6f}") log(f" Stage0 sim = {s0_sim:.4f}, Stage1 sim = {s1_sim:.4f}") log(f" SIM_BP = {[f'{x:.2f}' for x in sim_bp]}") # ---- Step 6: Write calibration.json ---- calibration = { + "schema_version": CALIBRATION_SCHEMA_NATIVE_V2, + "sensor_units": SENSOR_UNITS_NATIVE, "case": case, "scene": "illusion", "target_diam": target_diam, "grid": {"nx": NX, "ny": NY}, "config_path": config_path, "SI": si, "FIFO_LEN": FIFO_LEN, "CONV_LEN": CONV_LEN, - "SENSOR_CC": SENSOR_CC, "FORCE_SCALE": force_scale, "SENS_SCALE": sens_scale, "dtw_norm_scale": float(dtw_norm_scale), "SIM_BP": [float(x) for x in sim_bp], "SIM_VAL": [float(x) for x in sim_val], - "K_CD": K_CD, "K_CL": K_CL, + "K_CD": K_CD_ILLUSION, "K_CL": K_CL_ILLUSION, "W_CD": W_CD, "W_CL": W_CL, "W_SIM": W_SIM, "FLOOR_CD": FLOOR_CD, "FLOOR_CL": FLOOR_CL, "FLOOR_SIM": FLOOR_SIM, "FLOOR_PENALTY": FLOOR_PENALTY, @@ -438,18 +437,18 @@ def main() -> int: for i in range(FIFO_LEN): gpu_block(sim, lambda: sim.run(si, zero_obs=True)) target[i] = [ - sim.read_sensor(s0_t, normalize=True)[0] * SENSOR_CC, - sim.read_sensor(s0_t, normalize=True)[1] * SENSOR_CC, - sim.read_sensor(s1_t, normalize=True)[0] * SENSOR_CC, - sim.read_sensor(s1_t, normalize=True)[1] * SENSOR_CC, - sim.read_sensor(s2_t, normalize=True)[0] * SENSOR_CC, - sim.read_sensor(s2_t, normalize=True)[1] * SENSOR_CC, + sim.read_sensor(s0_t, normalize=True)[0], + sim.read_sensor(s0_t, normalize=True)[1], + sim.read_sensor(s1_t, normalize=True)[0], + sim.read_sensor(s1_t, normalize=True)[1], + sim.read_sensor(s2_t, normalize=True)[0], + sim.read_sensor(s2_t, normalize=True)[1], ] sim.close() np.save(str(out_dir / "target.npy"), target) target_std = np.std(target, axis=0) uy_std_avg = float(np.mean([target_std[1], target_std[3], target_std[5]])) - dtw_norm_scale = max(uy_std_avg, 0.01) + dtw_norm_scale = max(uy_std_avg, np.finfo(np.float32).eps) log(f" Target recorded. s1_uy std={target[:, 3].std():.4f}") log(f" DTW norm_scale: {dtw_norm_scale:.4f}") @@ -499,7 +498,7 @@ def main() -> int: all_sens = np.concatenate([stage0["obs_slices"][:, 0:6], stage1["obs_slices"][:, 0:6]], axis=0) sens_scale = float(np.max(np.abs(all_sens))) - sens_scale = max(sens_scale, 0.01) + sens_scale = max(sens_scale, np.finfo(np.float32).eps) log(f" FORCE_SCALE = {force_scale:.6f}") log(f" SENS_SCALE = {sens_scale:.4f}") @@ -545,8 +544,8 @@ def main() -> int: # Round measured values to reasonable precision so calibration files # are human-readable and robust to small measurement noise. force_scale = round(force_scale, 4) # 0.002429 -> 0.0024 - sens_scale = round(sens_scale, 2) # 0.7543 -> 0.75 - dtw_norm_scale = round(dtw_norm_scale, 3) # 0.2043 -> 0.204 + sens_scale = round(sens_scale, 6) # 0.7543 -> 0.75 + dtw_norm_scale = round(dtw_norm_scale, 6) # 0.2043 -> 0.204 sim_bp = [round(x, 2) for x in sim_bp] # 0.3166 -> 0.32 etc. # Ensure sim_bp monotonicity preserved after rounding for i in range(1, len(sim_bp)): @@ -556,12 +555,14 @@ def main() -> int: sim_bp[-1] = 1.0 log(f" FORCE_SCALE (rounded) = {force_scale:.4f}") - log(f" SENS_SCALE (rounded) = {sens_scale:.2f}") - log(f" dtw_norm_scale (rounded) = {dtw_norm_scale:.3f}") + log(f" SENS_SCALE (rounded) = {sens_scale:.6f}") + log(f" dtw_norm_scale (rounded) = {dtw_norm_scale:.6f}") log(f" SIM_BP (rounded) = {[f'{x:.2f}' for x in sim_bp]}") # ---- Step 6: Write calibration.json ---- calibration = { + "schema_version": CALIBRATION_SCHEMA_NATIVE_V2, + "sensor_units": SENSOR_UNITS_NATIVE, "case": case, "dist_radius": args.dist_radius, "grid": {"nx": NX, "ny": NY}, @@ -569,7 +570,6 @@ def main() -> int: "SI": si, "FIFO_LEN": FIFO_LEN, "CONV_LEN": CONV_LEN, - "SENSOR_CC": SENSOR_CC, "FORCE_SCALE": force_scale, "SENS_SCALE": sens_scale, "dtw_norm_scale": float(dtw_norm_scale), diff --git a/src/drl_pinball/train/calibrations/ill_075L/calibration.json b/src/drl_pinball/train/calibrations/ill_075L/calibration.json index b23598f..509be95 100644 --- a/src/drl_pinball/train/calibrations/ill_075L/calibration.json +++ b/src/drl_pinball/train/calibrations/ill_075L/calibration.json @@ -10,10 +10,9 @@ "SI": 1100, "FIFO_LEN": 150, "CONV_LEN": 30, - "SENSOR_CC": 78.0, "FORCE_SCALE": 0.0027, - "SENS_SCALE": 0.93, - "dtw_norm_scale": 0.186, + "SENS_SCALE": 0.011923076923076923, + "dtw_norm_scale": 0.0023846153846153848, "SIM_BP": [ 0.0, 0.23, @@ -30,8 +29,8 @@ 0.85, 1.0 ], - "K_CD": 50.0, - "K_CL": 100.0, + "K_CD": 12.0, + "K_CL": 25.0, "W_CD": 0.3, "W_CL": 0.3, "W_SIM": 0.4, @@ -47,5 +46,7 @@ ], "U0": 0.01, "RADIUS": 10.0, - "L0": 20.0 -} \ No newline at end of file + "L0": 20.0, + "schema_version": "drl-pinball-calibration-v2", + "sensor_units": "celeris-area-time-average" +} diff --git a/src/drl_pinball/train/calibrations/ill_075L/target.npy b/src/drl_pinball/train/calibrations/ill_075L/target.npy new file mode 100644 index 0000000000000000000000000000000000000000..ff8e03da4e8986c39fb89de0d9edae1d28029916 GIT binary patch literal 3728 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 VUHoPC0Le+GOMb1FP~fH+_+P)OcD?`r literal 0 HcmV?d00001 diff --git a/src/drl_pinball/train/calibrations/ill_1L/target_harmonics.json b/src/drl_pinball/train/calibrations/ill_1L/target_harmonics.json index 210023f..4db0723 100644 --- a/src/drl_pinball/train/calibrations/ill_1L/target_harmonics.json +++ b/src/drl_pinball/train/calibrations/ill_1L/target_harmonics.json @@ -1,12 +1,12 @@ [ { - "dc": 0.6871295102437337, + "dc": 0.008809352519675196, "amps": [ - 0.18319639782938002, - 0.06610945366616479, - 0.04311754473414352, - 0.03030542180621809, - 0.027272312380937323 + 0.0023486717451016467, + 0.0008475572997023936, + 0.0005527892157108422, + 0.00038853096776261196, + 0.00034964489187612246 ], "freqs": [ 0.05333333333333334, @@ -16,21 +16,21 @@ 0.15333333333333335 ], "phases": [ - -1.5859054738810505, - 1.5005459218330446, - -1.534723086539976, - -0.9755852396186818, - -2.400861875184656 + -1.585905345022505, + 1.5005460959271122, + -1.534723047518141, + -0.9755863118580124, + -2.400862304033253 ] }, { - "dc": -0.02839548134400199, + "dc": -0.0003640446137899581, "amps": [ - 0.25230287832767934, - 0.09539999608074776, - 0.07242769038107988, - 0.057915290763028225, - 0.04339958293014957 + 0.0032346521490483984, + 0.001223076837162871, + 0.000928560102758218, + 0.0007425037479272481, + 0.0005564049377962642 ], "freqs": [ 0.05333333333333334, @@ -40,21 +40,21 @@ 0.10666666666666667 ], "phases": [ - 2.6842705453730904, - -0.4329499897570072, - 2.9316995795051146, - 2.670843645654777, - -0.05044820463468416 + 2.6842705358614727, + -0.4329499704530815, + 2.9316995034379096, + 2.6708436544501115, + -0.05044802385514657 ] }, { - "dc": 0.5692154564460119, + "dc": 0.007297634102849879, "amps": [ - 0.05111823061431893, - 0.04128396624646554, - 0.015265422980567578, - 0.015090006639850726, - 0.009557711148572965 + 0.0006553619123178633, + 0.0005292816319405183, + 0.0001957105429863926, + 0.00019346160862069542, + 0.00012253468626713745 ], "freqs": [ 0.1, @@ -64,21 +64,21 @@ 0.12000000000000001 ], "phases": [ - 1.6693519932886194, - -1.4324779931410057, - -1.3940831649835272, - 1.6278315583167478, - -1.3566560767853084 + 1.669352077197208, + -1.4324779140862236, + -1.3940830731486458, + 1.6278311988042837, + -1.356655867596017 ] }, { - "dc": 0.013092265091836452, + "dc": 0.00016784953526579417, "amps": [ - 0.40124785195509555, - 0.16234186402338177, - 0.08524230800710621, - 0.08108585800028799, - 0.07109298715174087 + 0.005144203252605854, + 0.0020813059431478423, + 0.0010928500855496533, + 0.0010395622982109472, + 0.00091144856065585 ], "freqs": [ 0.05333333333333334, @@ -88,21 +88,21 @@ 0.04 ], "phases": [ - 2.807113574648348, - -0.29757223337333294, - 2.7719663781063204, - 2.1871266999200056, - -0.2589322655847287 + 2.807113579737809, + -0.29757222637005815, + 2.7719663779834143, + 2.1871266917002354, + -0.25893229515432825 ] }, { - "dc": 0.684990275700887, + "dc": 0.0087819265988138, "amps": [ - 0.18185260409359108, - 0.06713403479140795, - 0.04138782185879297, - 0.02695905744770475, - 0.026141859041267534 + 0.002331443960080372, + 0.0008606927859714298, + 0.0005306130993882779, + 0.0003456288683524138, + 0.00033515181152231707 ], "freqs": [ 0.05333333333333334, @@ -112,21 +112,21 @@ 0.04 ], "phases": [ - 1.5465990065588082, - -1.6185095223679558, - 1.5625278315612854, - 0.8537101949347456, - -1.649974102551634 + 1.546599113619548, + -1.61850976860708, + 1.5625281914270723, + 0.8537100384203797, + -1.6499744631577824 ] }, { - "dc": 0.04362114487215876, + "dc": 0.0005592454961922943, "amps": [ - 0.2437341265296108, - 0.10332818930987306, - 0.057340140519604656, - 0.0564289078852383, - 0.04846692686956963 + 0.0031247964556233307, + 0.0013247203231757793, + 0.0007351299724521773, + 0.0007234475293688269, + 0.0006213708431280353 ], "freqs": [ 0.05333333333333334, @@ -136,21 +136,21 @@ 0.060000000000000005 ], "phases": [ - 2.6708663593754087, - -0.40513239623713626, - -0.06426761319675102, - 2.9170325957817727, - 2.5947271126041254 + 2.6708663676491753, + -0.4051324007724031, + -0.06426744894600595, + 2.9170326355916663, + 2.5947269806545727 ] }, { - "dc": 0.0028073104269181687, + "dc": 0.0028073479825009903, "amps": [ - 1.3964627608664915e-05, - 1.0641956583797102e-05, - 4.3721419678955225e-06, - 3.7235257770112522e-06, - 2.6478054812257544e-06 + 1.4015937181383077e-05, + 1.0671813575533977e-05, + 4.409131521263914e-06, + 3.7382921829427647e-06, + 2.6881525102464034e-06 ], "freqs": [ 0.1, @@ -160,21 +160,21 @@ 0.08666666666666667 ], "phases": [ - -0.008346715563909252, - 3.134154764223535, - -0.007106260242131926, - 3.13161924702753, - -0.007459162304746806 + -0.004601597990179667, + 3.1357694057171637, + -0.004769742879130775, + 3.1361106883689014, + -0.0015047488047546214 ] }, { - "dc": -4.900522320288777e-06, + "dc": -4.900578702896989e-06, "amps": [ - 0.0006028109860900706, - 0.00022089300997016063, - 0.0001390934157273362, - 8.588200912189985e-05, - 8.16852145193509e-05 + 0.0006028104026365945, + 0.00022089374238093185, + 0.0001390907528064047, + 8.588062207428474e-05, + 8.168758713528594e-05 ], "freqs": [ 0.05333333333333334, @@ -184,11 +184,11 @@ 0.06666666666666667 ], "phases": [ - -1.182274934210081, - 1.9691619558487863, - -1.1855982163802612, - 1.9884734806658761, - -1.1842874340466223 + -1.182276270844418, + 1.9691535128302826, + -1.1856146746053084, + 1.9884708784318685, + -1.1842880436059668 ] } -] \ No newline at end of file +] diff --git a/src/drl_pinball/train/calibrations/ill_2L/calibration.json b/src/drl_pinball/train/calibrations/ill_2L/calibration.json index 1a0be5b..81b1be5 100644 --- a/src/drl_pinball/train/calibrations/ill_2L/calibration.json +++ b/src/drl_pinball/train/calibrations/ill_2L/calibration.json @@ -10,10 +10,9 @@ "SI": 1200, "FIFO_LEN": 150, "CONV_LEN": 30, - "SENSOR_CC": 78.0, "FORCE_SCALE": 0.0027, - "SENS_SCALE": 0.93, - "dtw_norm_scale": 0.433, + "SENS_SCALE": 0.011923076923076923, + "dtw_norm_scale": 0.005551282051282051, "SIM_BP": [ 0.0, 0.21, @@ -30,8 +29,8 @@ 0.85, 1.0 ], - "K_CD": 50.0, - "K_CL": 100.0, + "K_CD": 12.0, + "K_CL": 25.0, "W_CD": 0.3, "W_CL": 0.3, "W_SIM": 0.4, @@ -47,5 +46,7 @@ ], "U0": 0.01, "RADIUS": 10.0, - "L0": 20.0 -} \ No newline at end of file + "L0": 20.0, + "schema_version": "drl-pinball-calibration-v2", + "sensor_units": "celeris-area-time-average" +} diff --git a/src/drl_pinball/train/calibrations/ill_2L/target.npy b/src/drl_pinball/train/calibrations/ill_2L/target.npy new file mode 100644 index 0000000000000000000000000000000000000000..f655bf890cc72225bee553c54df899deb895a1e2 GIT binary patch literal 3728 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 w)O}2vS_;QGFX5q?i*-6u^f Path: + return CONFIG_DIR / self.config + + @property + def calibration_path(self) -> Path: + return TRAIN_DIR / "calibrations" / self.calibration / "calibration.json" + + @property + def trainer_path(self) -> Path: + return TRAIN_DIR / self.trainer + + def model_dir(self, seed: int) -> Path: + return TRAIN_DIR / "output" / f"{self.case_id}_seed{seed}" / "models" + + +_CASES = ( + CaseSpec("kar_re100", "config_lbm_karman_2000x600.json", "kar_re100", "train_karman.py", 800, (41, 42, 43, 44, 45), "karman"), + CaseSpec("kar_d075", "config_lbm_karman_2000x600.json", "kar_d075", "train_karman.py", 800, (44,), "karman"), + CaseSpec("kar_d15", "config_lbm_karman_2000x600.json", "kar_d15", "train_karman.py", 800, (45,), "karman"), + CaseSpec("kar_d2", "config_lbm_karman_2000x600.json", "kar_d2", "train_karman.py", 800, (45,), "karman"), + CaseSpec("ill_075L", "config_lbm_karman_2000x600.json", "ill_075L", "train_illusion.py", 1100, (43,), "illusion", 0.75), + CaseSpec("ill_1L", "config_lbm_karman_2000x600.json", "ill_1L", "train_illusion.py", 1200, (43,), "illusion", 1.0), + CaseSpec("ill_15L", "config_lbm_karman_2000x600.json", "ill_15L", "train_illusion.py", 1200, (43,), "illusion", 1.5), + CaseSpec("ill_2L", "config_lbm_karman_2000x600.json", "ill_2L", "train_illusion.py", 1200, (43,), "illusion", 2.0), + CaseSpec("kar_re60", "config_lbm_karman_2000x600_re60.json", "kar_re60", "train_karman.py", 800, (43,), "karman"), + CaseSpec("kar_re200", "config_lbm_karman_2000x600_re200.json", "kar_re200", "train_karman.py", 500, (43,), "karman"), + CaseSpec("kar_re400", "config_lbm_karman_2000x600_re400.json", "kar_re400", "train_karman.py", 400, (43,), "karman"), +) + +CASE_REGISTRY: Mapping[str, CaseSpec] = {case.case_id: case for case in _CASES} +CASE_IDS = tuple(CASE_REGISTRY) + + +def get_case(case_id: str) -> CaseSpec: + try: + return CASE_REGISTRY[case_id] + except KeyError as exc: + raise KeyError(f"Unknown canonical V5 case {case_id!r}; expected one of {CASE_IDS}") from exc + + +def main() -> int: + parser = argparse.ArgumentParser(description="Query the canonical V5 case registry") + parser.add_argument("case_id", choices=CASE_IDS) + parser.add_argument("field", choices=("config", "calibration", "trainer", "si", "seeds", "scene_type")) + args = parser.parse_args() + case = get_case(args.case_id) + values = { + "config": case.config_path, + "calibration": case.calibration_path, + "trainer": case.trainer_path, + "si": case.si, + "seeds": ",".join(map(str, case.seeds)), + "scene_type": case.scene_type, + } + print(values[args.field]) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/src/drl_pinball/train/env_illusion.py b/src/drl_pinball/train/env_illusion.py index c4d3e33..a670e49 100644 --- a/src/drl_pinball/train/env_illusion.py +++ b/src/drl_pinball/train/env_illusion.py @@ -45,6 +45,7 @@ if str(_REPO) not in sys.path: sys.path.insert(0, str(_REPO)) from CelerisLab import Simulation +from normalization import dtw_sensor_factor, policy_sensor_scale # --------------------------------------------------------------------------- L0 = 20.0; U0 = 0.01; RADIUS = L0 / 2.0 @@ -61,7 +62,6 @@ TARGET_CYL_RADIUS = 1.0 * L0 # 1L target diameter FIFO_LEN = 150; CONV_LEN = 30; MAX_STEPS = 500 EMA_FAST = 0.2 S_DIM = 14; A_DIM = 3 -SENSOR_CC = 78.0 ACTION_SCALE = 12.0 ACTION_BIAS = np.array([0.0, 0.0, 0.0], dtype=np.float32) @@ -154,7 +154,7 @@ def gen_target_states_at(t, harmonics): # --------------------------------------------------------------------------- -def record_illusion_target(config_path, device_id, si, target_diam=1.0): +def record_illusion_target(config_path, device_id, si, target_diam=1.0, sensor_factor=1.0): warmup = int(4.0 * NX / U0) sim = Simulation(lbm_config_path=config_path, device_id=device_id) sim._assert_object_count_contract = lambda *a, **kw: None @@ -170,12 +170,12 @@ def record_illusion_target(config_path, device_id, si, target_diam=1.0): for i in range(FIFO_LEN): sim.run(si, zero_obs=True) target_states[i] = [ - sim.read_sensor(s0, normalize=True)[0] * SENSOR_CC, - sim.read_sensor(s0, normalize=True)[1] * SENSOR_CC, - sim.read_sensor(s1, normalize=True)[0] * SENSOR_CC, - sim.read_sensor(s1, normalize=True)[1] * SENSOR_CC, - sim.read_sensor(s2, normalize=True)[0] * SENSOR_CC, - sim.read_sensor(s2, normalize=True)[1] * SENSOR_CC, + sim.read_sensor(s0, normalize=True)[0] * sensor_factor, + sim.read_sensor(s0, normalize=True)[1] * sensor_factor, + sim.read_sensor(s1, normalize=True)[0] * sensor_factor, + sim.read_sensor(s1, normalize=True)[1] * sensor_factor, + sim.read_sensor(s2, normalize=True)[0] * sensor_factor, + sim.read_sensor(s2, normalize=True)[1] * sensor_factor, sim.read_force(0, normalize=True)[0], sim.read_force(0, normalize=True)[1], ] @@ -190,7 +190,7 @@ class IllusionCloakEnv(gym.Env): def __init__(self, device_id=0, seed=42, calibration=None, config_path=None, target_states=None, target_harmonics=None, - target_diam=1.0): + target_diam=1.0, policy_sensor_units=None): super().__init__() self.device_id = device_id self.seed = seed @@ -205,7 +205,8 @@ class IllusionCloakEnv(gym.Env): self._target_diam = float(self._cal["target_diam"]) self._si = int(self._cal["SI"]) self._force_scale = np.float32(self._cal["FORCE_SCALE"]) - self._sens_scale = np.float32(self._cal["SENS_SCALE"]) + self._sens_scale = np.float32(policy_sensor_scale(self._cal, policy_sensor_units)) + self._dtw_sensor_factor = np.float32(dtw_sensor_factor(self._cal)) self._dtw_norm_scale = float(self._cal["dtw_norm_scale"]) self._sim_bp = np.array(self._cal["SIM_BP"], dtype=np.float64) self._sim_val = np.array(self._cal["SIM_VAL"], dtype=np.float64) @@ -254,7 +255,8 @@ class IllusionCloakEnv(gym.Env): if self._target_states is None or self._target_harmonics is None: print(" [illusion] Phase 1: Recording target + harmonics...", flush=True) self._target_states, self._target_harmonics = record_illusion_target( - self._config_path, self.device_id, self._si, self._target_diam) + self._config_path, self.device_id, self._si, self._target_diam, + sensor_factor=float(self._dtw_sensor_factor)) print(" [illusion] Target recorded.", flush=True) self.target_sensor = self._target_states[:, 0:6].copy() @@ -284,11 +286,23 @@ class IllusionCloakEnv(gym.Env): self._set_omega(zero_omega) self._gpu_block(lambda: self.sim.run(self._si, zero_obs=True)) obs = self._read_obs() - sl = obs[0:6] * SENSOR_CC + sl = obs[0:6] * self._dtw_sensor_factor fifo_save.append(sl.copy()) self.save_states = np.array(fifo_save, dtype=np.float32) self._gpu_block(lambda: self.sim.snapshot()) + self._snapshot_fifo = self.save_states.copy() + self._snapshot_omega = zero_omega.copy() + self._snapshot_ema = (0.0, 0.0) + self._snapshot_step = 0 + snapshot_raw = self._read_obs() + snapshot_target = gen_target_states_at( + self._snapshot_step, self._target_harmonics) + self._snapshot_obs = self._make_obs( + snapshot_raw, + float(snapshot_target[6]) / self._force_scale, + float(snapshot_target[7]) / self._force_scale, + ).copy() print(f" [illusion] Init done ({time.perf_counter()-t0:.0f}s)") def _read_obs(self): @@ -361,18 +375,13 @@ class IllusionCloakEnv(gym.Env): def reset(self, seed=None, options=None): super().reset(seed=seed) self._gpu_block(lambda: self.sim.restore()) - self.smoother.reset(self._action_to_omega(np.zeros(3, dtype=np.float32))) + self.smoother.reset(self._snapshot_omega) self.fifo_states.clear() - for i in range(len(self.save_states)): - self.fifo_states.append(self.save_states[i, :]) - self.current_step = 0 - self._ema_r_cd = 0.0; self._ema_r_cl = 0.0 - obs_raw = self._read_obs() - tgt = gen_target_states_at(self.current_step, self._target_harmonics) - tgt_cd = float(tgt[6]) / self._force_scale - tgt_cl = float(tgt[7]) / self._force_scale - obs = self._make_obs(obs_raw, tgt_cd, tgt_cl) - return obs, {} + for row in self._snapshot_fifo: + self.fifo_states.append(row.copy()) + self.current_step = self._snapshot_step + self._ema_r_cd, self._ema_r_cl = self._snapshot_ema + return self._snapshot_obs.copy(), {} def step(self, action): assert self.action_space.contains(action), f"Invalid action: {action}" @@ -384,7 +393,7 @@ class IllusionCloakEnv(gym.Env): self.current_step += 1 obs_raw = self._read_obs() - self.fifo_states.append(obs_raw[0:6] * SENSOR_CC) + self.fifo_states.append(obs_raw[0:6] * self._dtw_sensor_factor) reward, info = self._compute_reward(obs_raw) tgt = gen_target_states_at(self.current_step, self._target_harmonics) diff --git a/src/drl_pinball/train/env_karman.py b/src/drl_pinball/train/env_karman.py index c94b4cf..8ec34f0 100644 --- a/src/drl_pinball/train/env_karman.py +++ b/src/drl_pinball/train/env_karman.py @@ -40,6 +40,7 @@ if str(_REPO) not in sys.path: sys.path.insert(0, str(_REPO)) from CelerisLab import Simulation +from normalization import dtw_sensor_factor, policy_sensor_scale # --------------------------------------------------------------------------- # Geometry constants (fixed across all Karman cloak cases) @@ -167,7 +168,8 @@ class KarmanCloakEnv(gym.Env): def __init__(self, device_id: int = 0, seed: int = 42, calibration: Optional[dict] = None, config_path: Optional[str] = None, - target_states: Optional[np.ndarray] = None): + target_states: Optional[np.ndarray] = None, + policy_sensor_units: Optional[str] = None): super().__init__() self.device_id = device_id self.seed = seed @@ -179,7 +181,9 @@ class KarmanCloakEnv(gym.Env): self._cal = calibration.copy() self._si = int(self._cal["SI"]) self._force_scale = np.float32(self._cal["FORCE_SCALE"]) - self._sens_scale = np.float32(self._cal["SENS_SCALE"]) + self._sens_scale = np.float32( + policy_sensor_scale(self._cal, policy_sensor_units)) + self._dtw_sensor_factor = np.float32(dtw_sensor_factor(self._cal)) self._dtw_norm_scale = float(self._cal["dtw_norm_scale"]) self._sim_bp = np.array(self._cal["SIM_BP"], dtype=np.float64) self._sim_val = np.array(self._cal["SIM_VAL"], dtype=np.float64) @@ -269,7 +273,7 @@ class KarmanCloakEnv(gym.Env): self._gpu_block(lambda: self.sim.run(self._si, zero_obs=True)) obs = self._read_obs() sl = obs[2:14].copy() - sl[0:6] *= SENSOR_CC + sl[0:6] *= self._dtw_sensor_factor fifo_save.append(sl) self.save_states = np.array(fifo_save, dtype=np.float32) print("done.") @@ -361,7 +365,7 @@ class KarmanCloakEnv(gym.Env): obs_raw = self._read_obs() obs_slice = obs_raw[2:14] obs = self._normalize_obs(obs_slice) - self.fifo_states.append(obs_slice[0:6] * SENSOR_CC) + self.fifo_states.append(obs_slice[0:6] * self._dtw_sensor_factor) reward, info = self._compute_reward(obs_slice) self.current_step += 1 diff --git a/src/drl_pinball/train/normalization.py b/src/drl_pinball/train/normalization.py new file mode 100644 index 0000000..0f0ab74 --- /dev/null +++ b/src/drl_pinball/train/normalization.py @@ -0,0 +1,83 @@ +"""Sensor-unit schema helpers for calibration, policy observations, and DTW.""" +from __future__ import annotations + +from typing import Any, Mapping + +import numpy as np + +CALIBRATION_SCHEMA_NATIVE_V2 = "drl-pinball-calibration-v2" +SENSOR_UNITS_NATIVE = "celeris-area-time-average" +POLICY_SENSOR_UNITS_LEGACY = "legacy-policy-v1" +LEGACY_SENSOR_FACTOR = 78.0 + + +def is_native_sensor_schema(calibration: Mapping[str, Any]) -> bool: + """Return whether sensor-valued fields use CelerisLab native units.""" + return ( + calibration.get("schema_version") == CALIBRATION_SCHEMA_NATIVE_V2 + and calibration.get("sensor_units") == SENSOR_UNITS_NATIVE + ) + + +def dtw_sensor_factor(calibration: Mapping[str, Any]) -> float: + """Scale a native solver sensor sample into the calibration's DTW units.""" + if is_native_sensor_schema(calibration): + return 1.0 + return float(calibration.get("SENSOR_CC", LEGACY_SENSOR_FACTOR)) + + +def policy_sensor_scale( + calibration: Mapping[str, Any], policy_sensor_units: str | None = None +) -> float: + """Return the divisor that produces the policy's historical raw observation. + + Native-v2 policies default to native sensor units. ``legacy-policy-v1`` is an + explicit compatibility mode for an existing model/VecNormalize pair. + Schema-less calibrations already store the legacy policy divisor and remain + unchanged. + """ + scale = float(calibration["SENS_SCALE"]) + if is_native_sensor_schema(calibration) and policy_sensor_units == POLICY_SENSOR_UNITS_LEGACY: + return scale * LEGACY_SENSOR_FACTOR + return scale + + +def convert_legacy_calibration(calibration: Mapping[str, Any]) -> dict[str, Any]: + """Convert sensor-valued legacy calibration fields to native-v2 units.""" + if is_native_sensor_schema(calibration): + return dict(calibration) + factor = float(calibration.get("SENSOR_CC", LEGACY_SENSOR_FACTOR)) + converted = dict(calibration) + converted["schema_version"] = CALIBRATION_SCHEMA_NATIVE_V2 + converted["sensor_units"] = SENSOR_UNITS_NATIVE + converted["SENS_SCALE"] = float(calibration["SENS_SCALE"]) / factor + converted["dtw_norm_scale"] = float(calibration["dtw_norm_scale"]) / factor + converted.pop("SENSOR_CC", None) + return converted + + +def convert_legacy_target(target: np.ndarray, factor: float = LEGACY_SENSOR_FACTOR) -> np.ndarray: + """Convert a sensor target array from legacy-equivalent to native units.""" + converted = np.asarray(target).copy() + if converted.ndim < 2 or converted.shape[-1] <= 6: + return converted / float(factor) + converted[..., :6] /= float(factor) + return converted + + +def convert_legacy_harmonics(document: Any, factor: float = LEGACY_SENSOR_FACTOR) -> Any: + """Convert the first six sensor channels in an illusion harmonics document.""" + wrapped = isinstance(document, dict) + harmonics = document["harmonics"] if wrapped else document + converted = [] + for index, source in enumerate(harmonics): + item = dict(source) + if index < 6: + item["dc"] = float(item["dc"]) / factor + item["amps"] = [float(value) / factor for value in item["amps"]] + converted.append(item) + if not wrapped: + return converted + result = dict(document) + result["harmonics"] = converted + return result diff --git a/src/drl_pinball/train/output/ill_075L_seed43/best_vecnormalize.pkl b/src/drl_pinball/train/output/ill_075L_seed43/best_vecnormalize.pkl new file mode 100644 index 0000000000000000000000000000000000000000..789a89e8b080af63fe819ee0768655bc2a0712c5 GIT binary patch literal 1779 zcmbVMYfKzf6y9YQb_)wlDIjSY(>9=m$QEb`L~sV!7z~?kN~@5jt>c}U3$y9Y%ywpW zaZAxwDME4!Dz}M0O#C4>u~vM-A#6|8Uc3aTutiZ_Y{4l7aXsi>NaLczV5 z5>F!*0&|~zwBP`3r|XGZiO42gr+zzGq4GM`qR0rU3a5vW0Q0h1VzPqtU_|y>5#7tH zPg3Hjh5H;!vS`G@08R$Ba15UD?>~_9_|(1nU2W%ewh(2IWaQ zuSOIRiyV(bYAYq#77MIL!(KTOGJ;6c5U_eU4GXHG8(Ks#Ai0!IT#6X~*+>1hgVbl| zX*`$RpK*{%%SjSnGC%*mMe=w1GVFI;^p2tsuSPMIa-~&f25I$t{&kDbP2qG2K|jnI zh{Igd;?py`eHAv_nlt}rSVcOeV2gBj@){uj&%+{jL*dZzum<~CR8s6Mrev9!FA;Ob zL#dn+<}{>;s!RhBo_LTjPd?JJxXvVxlqqE|?1BS23QcrC|IM7z{r?W}`prqjivyvf z9-D3d=B^e!bYgLt`y1I-*EhqUv_2=}690(W85Y*$-=fe*WzBSJ?jL8I7kNd!HShe5tek zn_>2=Puq@;2xIK`sh%5eI#01%s?*0l`s6G#m7Vq3#cN6y;Mg)~T}{cxTeg%#CqO4I z4OC)omZT?iAC+=QiY}lK)DI_CyU+c>hR(v@cQ;hiPB;{$1JWTgXxn-8hHu@zM6e4u zOV=bg-9jiBw$xEqotHTM)2x_=TahNx+u`IEB+H1_u`>f%d%vq2ATAu%gCSL+bOyMsKd+p{M%(s{GM)N!Bt5T-do@^WXu`*{kclggMKULaJSwEuj=kNtFzO^&h%O@uI?_&RFELF zbaVFz6srZMxR-^FfPSb-tdt0(k{q!}_dt?cbX0JrTjk3m&^IQ?IyTx*6&K|siH!-8 zCU{FVaWR280ck-Q3DN9~1c_Z{0w*gymLru4?ZN}SBKavIZ>Q`~8^3gsw=^Zv+esye z4ziQ_1xE%XAykuhe0-W*q>+l_Rp<1pSC{#++5+O?1wyeiEBN~*mhMum2k0DYjCIp}`kP@=WxPt5EM`>Y%nA?- zlro7diKP^%#jL99EHj~8Bc*c{vxIUPRi#YbzZNT*SRF4=3X`2#5p?>hbg@v9C=u%B z%91Ct7@7W}5Bf}|T$#$q$*8zeN@miPLMF6VCCEmo@Z^Ix`|3u zRCWzzmrW-u*CZv^UXdz=MxaWLmuuANn%b*Oe@ACj{oP6(3RqOQ zm|j2BUuc-sK%G!sOVpl8mFcNH)QlW*rQSU|v-nkuqWVtdF8C>d)J%agN#)G)7iZJm zC}Po1nl!4$8taH!Ae|lp3`J)BR?UJ{&8s#ORkA=Su3o0!=jzPzO=LwVHB|S1PliQx zqkEWfH0n$-U6ahff6;Ns>xDXG zj-8#QHOq{dEb~z$P84XQbzGi2T`ftY2V1obBIsPJFIK9*27_V4)XA2*`<8AZK^omY z-znGHaMd*8t8C*Y646bgb784<%~XSfI7=wi=tN-DCavkosmf~`v6_jVb?w8C@ss+~ zk6Yz*8AmKvdg#tO{b6Vsuk&*8@hpLwWu4_<>u4k5h^&S74%W3ofcPYOHt0?brAD`8 zzq=}32=OBh|NLkjrViG%nNt5qxys}cmH1~&Y7DJQ)TuVn_ymnaDvD2&rhi}5KcoJ4 z&(vY#$oV@q{~F=Cq!MbAq9*{|-lCt;svK5_n3HX7VwKyydT0NPYTfa5$%|@}*R2!% zc@{5{sMPU{6OWhD<5#Bs8LJ;XTZgT{z7E^UuU9^q%?>yEEOUdXOZzEZ|`UBJpj{k?wV0BVn}OIlEybbP!Z zfzF#6IE_YWa*;~!V5pIE=qV^xoAs~dgJ?!U{dl@mHwXHt(31HP&*UdG5Ka*bX?#%A z?XZQ62hb%Rx%&L0SB6-bAlL1G>&h$olcdtEQp!KfX_#33=gEwHW?*G90 zGYN{66B`qjp1`q7j7zhROmP>bBzQZq<9ys{BBNHth1=Es92XwQ=R2umqt((Fn;>Oe zbe5DRIhq(wkcuWnIZSfn@0;lxD~n1`@S${N!I3F$Vbik%VX6QzoyeB4v3|BjIQMn@*nYaUXk#Dr+4R1xJH!#1b% zk`rS%>|{Z-U1E$~SWb$ETXt-8Xm*^p7dyzCpAyLNvJQ&yOOB05WyePIQ|aHSu@OkhLJ% zNu$%1calen8#}RDUs9(Ux=Qw>dXYx?NHZx9zLf7D>F=d-56^TDaMS(v^LJws)X2bK zk(-C7o4=d8Jk-tI%{$aBGSee6LLN=^6O|*Px)-L0$@#Vd#uho$W@(H*Q@p$~1l~^S zxNxU5VH#f}$nmm{lQ?;aqwSItqNO0v)Dq8RF?#c<0vm{l_WINH`tBp%p=Mvk?J#9XcI(jMCI_1S~IdR`bu$A zC&t*gC)2f-9LI@bY#6M!DKiJ%=PG@s2`X(a@Q7kZq}s{dc)`7$=L;#M_dA4YaYwk&!*OiI@io9>SsW_?7YB?SxI%mdx&vvJ-|DY|R& z%m7N8*?ZJ}e!8{JtRuSq^?Q%Q6d&cgvuY3!|d~9y6${!Gu_30;og*Pr>kO`nxTIZ1u1bdXF7J7I}b2Pp!-Fp<y=z9MN@hNIHk*V8;e;+<_}9$@YnqR5O* z$+45h%2MeH%;Yn?g+6I?2Sue)kH&a@dirI0#HEBsN@68Gm8XDbikp|C)XR?U9HkZW z3eRAEIt94-gh$4vGN*(+UEP`Pp>|=qouw-|)>=w>&5F|{D!GVOl$e$9U#(CL#xpDKoyNs}bB6!(Ag+6%DB$;xqv%}S28XUF6uhtNIXki(Y6n0uK= z$rEBTLiqyUluTPeY??!WSB@;$D#tBHsfv+0$sGdK3SUjO+Aci8%E==~;P^kh_Nta0 zoiXDMDm_7EX_H<_6i8L#%B!^48Ltx12%DB_lwt+FJCI#@D_*EkDrwdgpRSZA(ezjq zuM{)Rmlj7DvX)hZndPlk#nU32NS+z5qO}lun{8cnTbxb{1c`E*0VgJkmGssRJ&jN< zmC~r5<}@lxkyxP-|J>X7R@=A`CDEi=>Y4^B%LI9r zrMo=q=PLIMtx~#2Am3YLmq5c>8ltij!tHW|G&P{T8ye0!*;4g;hBCjI)FsxtGAylj zzSP&~4+ou@e8TL6x{xtE&@C<2TI!qTn`}o@2pS@|(J&{(FN_IgD*a8RW6pH9mU`0^ zAli?n7V>8$G)(0? zCDXq-ag?rC_|JLsBUO}EnA|%ioC!$--K9=B0&hM&#KHnRb?FEbo{A#{?p|_f%6CDi zL`j+SK=uvva-*3H2p%UIDZA>*%etRK{*I@BX>a@w@r8B?-8^9aA4x-URAmn z$hNkm$Hsr|M=jZtB}vITkr|@@#=90VI!$_Vr87rQFJ_k3HMPues=izIX1pw&2G#Uf zW6n_~Fs~KkRR-=l-%0QP@L2ozU9BvXZX@06|1DRmtFGt;qi&XQEfVVXeY5Ji{ltHC z`+oFTV5%^DPbrPd8JAe=7+{Wsv}nCMOscBRQHIp5Q&$p2L)n@x#hYgH@>r&l=B4t~ zxooCtMXMJ&*Q}qX{->{p74>Uw88lN*3ScTwYTZ2k!6nvUOvigVQa|XXdp?BH_ONDn zeRt^|-jpZXDLXF4J)0hhUI7taf9uxVaw@M&X;p+zs{-`sOW<%KX{Ify3xD`ey0uz6 zsmcxhz$Mih{}1lO<|p2SaVENVEn?q&0(A+@zgl-|Z}K1Q@!I!(yv1elVp#?gW>v++ z6mn5n9N<{nI#veCNrJRA0Ucy*>Eu+ElqU(qGzUye5LMo&y3WMYLb*6mH@qrx%Silw zt!iMJAS*seDG<@_l~NbRTUOms(h!;UnJdH8{|01EP<8M?kvTp;MdnCE(KLpN@neGR zpvW{Q6;tFEdDV=pYM-?KA|gj0hSve)2xJt@p+ibkb`FM{)`)vmrp~M?FjAeGg$0Et z>GO&oj!}x4PT5cBh%zYhg=sGTgcJp6$bLMgDpk{02!2S8!IaQUEaArl^(~u!CX`$A z@QaVHgKrAcFD;f{^$dK5fs9b7$iS-Z`*(;F15RQfOI8%IRN48bXbqv9=8URzxlE)3 z3Je>jC#6dZX|J1heq;>tgQj|+7S$7f?`f6kW5VB zAFND?RLTI6Xd6sOEk-9QNTj%znot3KmQ*!22B;(Y4hv#%R{9PSg`rrmGQ|{+p^{TP zid-qy5viJm9<@aQGh%@-nZc{5E3qdGq)XRfr$8RYFoFb$RHDviur<1&YC$T6F6b8> zorGRW1|2}BnZ~Nz#Vm?c60?+Ini^LlD=1z~EFDPGaWR8jqPo)IT2#q8>=nJDr$lAf z*(Z}C&h!(OQ@x~9q*G!w@hSuADKelp5i2Z!K|Q2P=}w}Ve5H1L7@b-$m>H^N9WqEF z%aBVm^!BeZel>=zx>--{sVfN36{FU{tn}itD7sFc#a9bniR-Gd9GqE!0t#Nzq$N;*;25>)N9tw$Z-%}x=qmP%ad*e3L&DnC*1^VsZM{AIkSSQ)y?29 z=mwNhuv3OaDVNni`_%Rke+L7pbQJEon$F)sK*Y8jah;~P4q`zMz8c-++H`aSYBqE! zk;FQ!Zwl9>_$x7u*>&DEp6AcAB}Z_s~e=%%};x#$VeO29)X?|$t;SNswfCR6JztevgP3wltBxUk-DZm zZKCR{>U^f@>=vF$e_N{}LNl|h-F%bW5}C$xY@mCMhI1N?t&(Z8oT;*h3w``D;+QH3 zZT`}V2W?(b%t^GJOxJ++PWrnBG;OHzQz#&THtGX2;-c+1!fdBZadZ$n&YPbY$ac&M z^k9(Gz8OLvsWok2YXY-vnQJ+Mm@sKTOm#Ckhc>VO9d!UQWta*Qj@T0}D`qgG|@RXIgc^)OJcy-DbXA2OgkR-neACPONneb}#$C z09OR=Y5zjQpEe8rrs3}vmYrKB$BrKvVuI_>3(GPp};LQot7LZXn~d% z-0TD0y&0VaM~2%*dAcQqy3@IPifHq{#u}FMBWWYu-8x+dB+!*A!sLG5N#==h%=%82 zdwVCb1s>u+Z)QEon0;kuO>LnGNXb$qaDwRm2s95!)AJF~Nz?L$lCA+2eXD8NK^{N> z8v&f8tgsv_KiWrS{u5C9>p&V5bi@EeY5;Je5}Brb70^d$N1O1zIzWVs+DXFLi2+H_ zxv`Ve!@VO@Jai3xrc4ngWg7pV zL@(MSWzM)%2J2Phxf)+f_+L-|zn=boJ^lZB`tK0M|9?HbV~!$Ro*6~qm;b|_zDaIK z^;ZWC40;;;o<3>lu=)lD%)6aITZ8m$n$^-EUY7*ZuiB|B)78m_1}3@z%=ZnMfy|2` zV_;xxtp8N=r-?yp1Lj*~v@m1EAbl;A?O76x&(UZd;fDhw<`{2Lj+no;kN5hcL9 z|Cwql1D9&53E66~t{TL5cc??Q7LOl&ptT;gRLt>!*_T3 zce%&K*)(BzpIw|3S&z!iy#HDD?gpG{-j<9?t*TI4x>9PqM8tQu{0~mW+TOlhM{`!)i(_lUv8MkV9UW{O?U-4nJ0*28qcddQA^wKUWUDP-(|RV%jasj| z>!9w_HFe*r){{~6Q`OVe_OAPQP4%^`_4uV4k5`(j?!z^u>R#*NFvIV>|6boA{zgU? zmCtmqKd|~~=G(W-tLnEArNq2GRQ{&VHDW%0)#=c{fVmvv-;h~;^qB?*%y|9S+S{~Q z?_!PBZUY16-Gteux^J>p?M>z?^Q!v&&nxL)-J8N1K%OSSOyN~5@}yAuCJKZ8VG2XD z7)FZ9uSqKEG4(WIvSmE|GJ{mrgw}TSU$N1H7vnQHO%(Ob^p7z0Sz38lG|)fNgwHhV z!}S-NC>q8v`mk0Q#V`sHYD5BOYeggf`f7!7sK0@K{d`4Zf5Uu5lfq#luF?vnG#Tfd(dOMQ^<*uHzMbs60gVDtztk;Hs*{d7L}q5WJIylbFfk?tiu%S7}j5urK`l(HVUT}3p<5PO%}E~qu5m& z#a?d|2R$E0wZbV(;T*&4+}hT!$ww!MOD!(;3T{mrCQZZ4w{7NqqHu{L~8nFh#%*1*x=1U@b0=ilCZYf*C4Bb%=fGE)`lNs85q#4trt40DitH)G{Y zlWWstD-zP1DnrsTJ}tMS4t&T6A?YRn(@+Q7CItRrwpL6>1&T ze1(RYX@;I+rdp8|rpVUhDso~PQ>yXw`%nVrXjTl@Ij0e3G4!f|A~#ntQs*oy41RgB41jMWcpM+c@$s=v)wgV?xS zMZSJaw|^Q_O>cazV#0TNw4ePqlPkzo6n>}ow_~d5P0UqH(vNLUdDq&WipjZ(Df)XI z>)xy3xD``#71Q*?7+usNQDc~;wPJd%V#dEPkgb@RtC;mK4CE+g=PKs>3j=Kwb8{8* z^aDHmWscR$S1~_Vu|Pkn(?5@*f-KBcEc*F4wxTFkQT+399L3^X#gdqw zYeMJueJ3lH=PFj{Z!jzTyFe>*6{~dDHL3(%1m9c!?3)G61eo_f#~!U{g7KG#j_=;; zuYv1-G&XNxfU7C%!eeW`yYpYk{wN)&b?=>5`-&~6+EsjJwX0y_Ut^y?1DjD5Fz%dsRMp zm$Q_cn_rGU5+maEbRu54;so^U$Kjct*ane-d&s0e4YJ?dvjqvvU1s0I@+xXM$=^A!f_?_u9)Ew0Y!MXv@te)Rz}jJ4wDCk+tIBZ z&Zw zp9nA5l5GYyO^w0+vHpMyraHyg=da(5re$#Gm*~)9npnb?4vQD)RP+J+X-ZF~3 z9We_GeQfaujU%^d>;P_l(Hj)_zzC06mJ5H_a*$Ef1K7?no*6Q*6#$SL&DL9Rvg~3#f8}OVJF@R8xP!Q z&NTeUYAuS{{t)%(RpxR^{Q~-=HO3iZSD^SO+hF(7{?LAYdil}VH)z_ap7_=uz3|?- z7ZB_5N*q673JI4wBL}>aEP7~wuO2}N*WX9>Z?AwE>eXnG!&8jgEyHBuH{xPwz;m6L z4fec^#HQ65)cIop(sb?(=H=aqwQ4;%6VMoc`1TmPuULhirW{2_B3HtJ9l3Z>m^W!~ zVHVsG55SK`$>HmZA@E=+8+vbQiI4QIz@#Zb6K57;>yQ*|l)fHIJi3>!Do=!gx!cg= zv$iPii5(6)9DqyaEF~j7=aNL$b#i5JAGEJc=kgf_ugLm0Civ4dBVOO;O<>@l0%*g( zj;}2k0jtEDVbtPa3%|fv#Tod$ z?`&AsZZ&LiTu8?G#`T}ad&*(XdhQ|cq&W@Ux3eA zj>m^eUV&P>1Hdk?qotsO{*BVDlgx zA2q%KycLMID42uf9%8(wZL0QKr&R5P&XeHt8FOv>lJTg^a&zRjuK=0huW<9g0qwji z8??MGDX`M4A@A1yPtfD43NJdflZ?8#3cY>ehbM%Bc0s)%$bQ{xR$YZVDY8x5DNbQ8;tM8&LkXhnxDOl$`Wh#oc?(8yA0a$Ah$gy6hP$;Ck3J z!S}Xg;M>hkV$Z#QAkQ=JVXEaJoNBnrMiu z`#RA@dh#}~-Zw6fiti2CjU3U|PsQleSqc1Be<|Tzw}wuqy1?Qy^Uz@FQnKj4MKpZU zN5XX;t?k}Zs6Cv0kL>A1?YKsc#h)$!wALccgZD`3-sc=u19Ms2LuVZ)xkXpL8G!j3U+&}PpKB4#7M1IDG;At><-4S!Hj6l71 z?1$N5+i`KHt{_#;CuJ|jpx`yv;p~_3q}{W{XnL4Gj!W%;Uq&w@k4C*9=C{qEf`1hq zESv&a+pX}|#|H_Y{=d!Y@ezJ7xH*;$JV}>bxYF6EarEqJE#uE;9<33M@Xz|*qq z(B+6FWMxS)7~Z`^UfrCc&D(xndwI+QRPTTihH3Va7stln3g=(IYT$1C>`H%}*?bBP zx8JTE92ZXt&99-jw-RFY`4swmCV(6$T#Y;Lzl_@3rCD zM_o=dVa1H2V-LO1_6zE^fs8@S+U8=@vl@RTt63Yvb{id%bzD z&Q8SB%_o-?mImPL_W8I$@lmp8;!X5*b2oJUmr2BJurY2wrGT`Z7EhXA{s>>3Tk_td zu0-|w>>+)BJ;QA_E*1DuZ1k)7NkZz!kl8c4K_S_%{q1lmL_rJB@kMI74CoLw67tSZgPaYLEZe-4YfwibD%cHzJpNU6EJM1*qSfHjuqL z8(p0xF891X9f$Xy4z8DuAcsY3QCReA(jjHS-bTiYFfQLly6)GyoD51t_FejEXMLE3 zTg3J%52LY6(!Gh;we_#$+cPccGPO@x{P+$|&i!6-J%#6qnf(HCdP@sv)_x-zG4!TO zl#P4&j3M7h?>~#tjo#PM`J_YGV!#FR=J>Bj{$VaxzON7*n+B4iM>Fw)NH*#@JRh2N z$s$iCC&AUcSS?3bj5n%IFQ9 zNy#!~K6wV-ynPEa@$Lan+nqsA655oH%g@ByjthZ*rWnZ%9Ysc22hq{~R`~aT9w>9s zJ(qg-q9O6AmOK8pkLZF=`|^W9nfUbVqi{auIqKf^k@j)Ni#Q=<3xUrqxQBfQ;o%*w zySyCIm)HK#b-3bZzJ|=Or2o?!D(ir1@4Ty4P3R&!A0ti^AjR-u=<|tTvMTerz~-%-w_dd+wu@ z3rf5tb|KanPlVmW&f^b$dC)m-FZyG6Q{MY??)X+-U*0Fl9=yrKn{>YMoU7>46g&$~ zk}k>(=vhWF+0tM?tX0{Qej9H=bDz&J_ts{#aajZuWJO@_1Es`o#0#|Xh!r|iHi%4E zdllDL#)4PgL^O8$IY|HN0ZrU(v>k`fA|kb0x#NY+c&271oZ`8_BF!r3CLE5xb{K`f z82*kDH1oJ`O)lV@$JV3p^PBLk1)5TXjfjqM1&{zYe+n=H`G3jvDO9+ zy^p$>y1?VYTV%Y22i!&zL9t*iv~!At>&s5UmQ4q6i@tt%zsYQT;Q62A_M@ff&-;7O z?IRCdQn@!!1M4^10gwd${&~=a z{~o<9-9g646)1f|6ngxzCwVs4TFc~|dj@Ik4VZcregAXL+0wwHPR>bFU*5l!bk@j# zoi@f1n`i!H-X1sjIHY3^F~*|Z|RUtibc-z;6bUhh*eOK9eL%X~mZpI`d8?(1ghI(LGt z>w|BdUGMSxS2#Vksu=ans$%VC(~2hs<`p?TZC#^x^{g1#v9IgC8$Bx~O|@_>Ea+8% z7W8+089Sh&!y@yFsX=zGK_@(2D=zkP4GK1`7|_nbwPHTsmb>rD#_*Y-sN zTptv6cAdF{T@k;$x2vLizl!!#Ei1a6H+8-4(!ZifscA*Pn7+E2gDNqWrE3q-mdJm^ z{+#~;`ww9Eb!F^6cWPiH)5&7q|2&5l2ClX3PN%^Acg$YB0)0(qz=hZ*`0Tf3XloBS zOl!ZH+xz%w;u~fJH+K&J*U~UlKW`A&Tw4U)?8hME(XaMiIo=U|duR@bMT-gfLLx9-dH%Yz7=}2+nm-R zXwKbdH)%iI++~=v0k(T%2Xl}$oPE#(zeqF23RfF^;X?*F++qpZ-{=^rm}LlkKGlb| zyJwg2(l^6}Lwj6~8)ibPVLG|;TYdPv>mZufDTTaz6%6(-PjOp}eMFLSFK|zbqPcBy znrkPrT9W76i@1q1ipjX7FhX+cV@CG}2m6ovx&2#E+f>!mbd@g~zPo|J+~FIbJl+d# zcJ7VGj8s91%_D9fJVVGU`4%eybto@hLq`)0~+krxPkf0@OzW`Fo`=FjoL92 zfBO`Gm$q(&51w_<4srE|2^%+(%wyxn;0K5`N8m6Pz@n|^q%%{MYDCYO6^NdUO)ONNQP@*uwXYIx~- zs??a@02Yi}uANw_EL(m1Bx-Tm8uJV}Jjd-m@Fa+X-rMKltuqhfrSYZW(AH^=W)+eI6?iEr|_|HEiixRUGChZJ;cOvK3cpf1jH_b;nOWl zj^A4XhnCOBn7srwyyc3bCj}A3rQ3K%#Ylnc6 zs7UP&<>Qv)+d<7?_v6<31!8T&JeIpE+ScWZc+u$Ja5v*;e2Gh@5(7@X;I-@6cJ z-fxQ!ow|grBZgp?05ep4wQKo`p7F>aJP7}iISFP9HfVRsK5Oki%klCf1>{pixAMiQ z8%S%f?(kyjLDKTcP;9c?43BNO9d#~n!{!mgAo6`XAjif-%MVY%$8H`LM9zi2CH2c6 zbbkyZ5BiXu|B01RF+4Yya0N7jqv*x}R|vZmoooSWJii#I<( z3Op4%h3x^OXD#v3LsmGt@o#wc!7E5s;Eog82*5E>3H8^7;Rc6S!IJ$`@bv)*6nh5a z?aLmcMr&-qd+8+9Ka=L~d&k2Ja*{-?DS?a|eej~!p3r=i5&k-C4H)#?r;UyKK*qLT zj4dB8L>uO;hr;8#XpT0GJQ3|j`>f~T$2qg`V&lcI*Qpimw|NcfkyCBHzs>hUci8T7G(3=^I#e33gxRDk?lBzi^tUa zh;u~EefP*0PH>vxhkM^}8{aBIubq$J)!n+1M}09_`rtes^4{2`zQa58&15}MZJUZS zes6|PF8YMXsug&-#1Bk*7=z~b0$8){4t!CzCp~)aaha*e#!DwYLMf_|IAH1_?S1t` zVr?*jytB$hYj+MMBKu2dPH26&cXbTun`ef{u^sT4J)^MWi529kSsT1G>NvTz=L#-q zb{BWuIug|O?QqDXUT{2U35?%-1JJ64cMX?WSAH?{$zsR zUEP8{A8mk2Vg{izW~=ep`5j=x+%BZ`qa5-y@(k$`)q-cee=w4doeA7GC-9ez0vCRh zjogUWUO0s_8Xh+YhQ%{3YUA!6(XM?SjlRg&;iCtsOc(?J^4QHvwVZp+8@L=H5G7M0_6EbDI=$AoAUBP<-YsDm*+HZ|~QXywVuK z&OzI`#BMpaG^ufU>0DPR*ti`1-Y5+>&*_LyPA(^|#Vi=Gunb4+@qp9@LbM|M5}Nv{ z2o-Ucxw!W?)XsEv)UKWIJBqa9!@O&$FyUik=yQEN%-0M@a~w_aqIVHUc?Od%2aNH} zP2F%|}oMyiz*&#^Yf(W;GFd&z5g-pitJq^)5#qr zcDF(Ugc2Nwa-ih>K(Jo@22XTrOuDpu%{_W37Y7LT!=^7g(4vazSi5;H_*_fCr+;~* z4VzUD5Ar)rwDIBSh?fwa2JXZmUGHLpcdxZ;h%p>0pN@~-HQZZ&=?Z+ISORz07s9lwDp*jxDIA|Q)`QKjND#P+G}-KeMlU~x#g5IuW%*(#;hVv4*6s21$7b4D=dv(o?Lcn-JEf3#DIb*W z9Wgu$$EQvXgQIs#;Lr56z-a{7bB!Tve)I;dYS9#bp0*Zmc)k#a#vH=In^(iF_6@Z+ zcJjb(V;(ni=uI$9qvvV@AFc=YfkU)z!t#^gcFH_xkZ>En>4k8-{T#Ud^$ho+X*S;5 zaWwAHaw{$jFVdcCI{_2$9B&2G?#4NbJ z+!mUCO@Kpf`{0;v1!#KE5;S;pXDGcL!gZ{0hGvU4BF%h1JhYj8`Oy4h+9jJJASw7f zTAXtN*5z$R7oR@FF^MOUt6d&Ex$Fj<d5r=f=PPm+aR zEO;}}8I12=0rs#+xGy+N&klQNp&5k-p0k2w8(HXOk67$~the*V&of~Qdm;D4-Xi?V z+B0}e`$px_XD$pfh8BNiEu2oGZ%*YX@n-TIVR z#7snSZObd4@tDA}r7+IxxOVQRlPHy)i3Gv&&~s=SE^-VYpRS&OO&MOWj(43H>@h(jVlR_nWnBmo^eMNP z@&`%0_yYduGZ9SM&VtD;G5D|TjGH!&L~9M7qtX$CTybB3{2g2Kr1^ea<&-h##J+8~ z%tlIN_jo9C@iX$^9vhr_oweIez9YS+2N3S&jbzB@bUem$1MPbh6Ge}vaB}WAmz^<< zP?1eNSkf;KE{xLR)KS~COHWNh_g+6mCgnYNdtGU5qaYmx|1k^1GgbK6yGZ;gpdL0h z-ayQvI4IO+I<#olgqzcMHaaq`6$}+0K!S1W!S&2iDD~K>U1ZL~^)2_{E*bsEYVl@d zbNDqm@r8|SE>3}uE=JJt;skBI7g^lxyHAiw``(Zz^VH;=uLW*3`<`}-Raap9{eqp0 z8{%UQ3vibXLU`cDfm7yfv18K{WgYq#5!e#}PJ&Tjw9pm%v>1s~`n2N~rzps;A+7N8 z$Gu3-Yc7;1=Ha2Qdyrj$CcIE9HjZ6kP}bnhjRxy?N=|7|dii~d9=-5ZaOn2#Y{=QqW}@gwf-#CfDOq~YRQet5)u zEs5Ipv~0`aQ)STQ7(pE)V8a<#%y%il?X60|B*Or|s%XculM6h{u)k3Kl=aq&6Oq&(qy3~9Y>4>WY$p*>4`ENcWVD92?Y zOd9D43j+%A*(K(<+r%3v`>7uu;5ixZ=C#8C3wJ_5?~zbob)BTpGqKU$eC~Vbp=~%~ zEa|l01)t?c6X(1?wUIZ&@%G8bU|2;fkp6iPf4Oa|Et#OkX8k&8OB%P~+CH0&AH2B* zPWy{U+393#6>}8vXLsd2n>HM7f7pwYS6Y@e-+hJ*-!_k%Y@|U=kJZN;XnZqTkq^=l zZLqz?BYb3Adpuk84OuDtC_x98hxUw};8~n5ZTv99` z%lD+}<>P=rbeBFpFTj7Fa7h2(8pUxuv zeP`o}M+-pgJQkJ`3zGJ>1QkCNlJ2r6WbMetc+S@$SWij@Xu@aW%8p<7O)A=!F8@`+lC0}eWoh^H%2+m%D_m_uCHEUb8@R^fwYw@+VoiIhZVZbqLLTbEqu(&=wq6`W{9{sYzB! zIGXo+6l$Av6yGUw!yUS{fVJajtVzz2r!Al3N8M9Mmr1LUWAi6?NAXH@y1y|jU)im+ z<k4s)PG?j#iFcOS(y8AG(;8PG>lirRCJ!rKEA(Vq4`_}R3{co~la zt2WHW?$6(#sU2s)+(qZmm&v8hJ9fS&OYBCVX};00wnPROi+S*J^dr*llmuKa+;Oq_ z)(Ahp772^ZXW$UqK5!;TMpVy+;ee|{x%=uFL&?C?XxW^xBsZ`vw)%JkPr74;-VNF3 zvf$+^vZ+%v9=23WhTgib5)p7&mO`B;DG=6D=NC_j>*-~GsY z7vu7K9SdLvXACT!T!iEgyJC|sx3q5`kH<^%3P2*A?9zL~Ks@-XGi-TNPNq)G1CPMY z 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

    Uhm#Rt&1!8 zxl2Q6xNWWAv-vwl=mk-v^$=ce#zbb@v>9x^US{FE1^+BJn0k|B_&BvtEbaB8H&;W2 zakI|yx8JT4oceC^OJ3~agP+&&#FA{|Sw4H(Fd-@afzVyPk#NgZVfC+Ix-}>ndP+~Q8{^bzjfEoLG{8Z)9LSN(l8wBR z>v4Y910_L8;vB#6Vw}*jPgf}1`atOXm%!buo5Ji{{qfzwt-|H8gD_OBRFEr^=Xa`V z^A6h6$tw3R{m?WN2Gv9hekPCU=gvAIY0O`+Puz+PuLIeiqi-l*GFj-7lZ6@+Nz(M~ zCZDANXf#m9e3ns>aPv?DA0r2B|LYR|r{806YOH2S&7E+Ibz{P*fxL1@sZc(Q!^i12 zX{Ae=aLC1;|0&ao9uca6gh#d`la|I$jcc7wzqvHl?b{J-cA-2XuS zyYPe|CmUx0Keu1!=1C|(q2d89%x3~zSvv(f4_bl8WKFoyvKTh)cLup}+u&~aR9NMi z4XVuza6L_g=Wl7^&Oh0B_elVHMOk6uMiK6xcM;95d_ai>iD+e)h3!KV@m~ywU+)gW z=`Y>6^1O}kce)kKa`yn)QQ9#4lpe^c-Gj#^190J*Y#6Bf4$^*I5Z_&^AooEHxEl80 zm7{tvU$q9F8U%uuV+~C6cmxjn>fwX&2n^H^^M_+haM|;Em>8>!jZfWe-yt}qQsAB*3gUyU&(er#ROgva0IZ0tgRDuC z_;qI)&iWLN-V%Q?Ixq?|aV1KoDDp4Ml=zE#H27W0U8s`q7Ly0O!5FI{{Pp5+ex7t7 z7wlvR&&W%u^H$=xa5&_(2p+0!f!+24z&$Afx{F=7 z$?|)k|8Hyfq_h>fuPK2`p*HM{y#Z$0GH4Zi3<_(zApTYXD8)2DiSr{cGfcsPmQ=Im z;icTFFM8Zrm&e@L;u%~?oD1jo`7t+UmL`P6KjY%|C_+baC)Y1S1xnX8adYmv!Q@e$ z+?GS`5WdU~E~R-xL!~MhjhYGmH^sAEhn|FQgG?q;rE+ygGmwv$_2au^(+Nr7SH z8tzhu87%xb4Qf=^!J~IGpux%xx+D|fQFk`DyIq1k8R^ilCkKM7^1!#X8diLGjql8K zIbE~Ku&23`v-H)1Z3dq>J_Jc zzZh;vC&2^X)sUja!PL537}c)_IQ?62cZmU7`d@{-LFM2+;VQ%jOonSWlu-K6Z!T|O z3_Lk>2%45B!_i%f%7hsS^WnBjAS{sHfZIkKMQ9s_pIrS>TiF6Nm#;u?l``;6ioj8Q`Z#o59~ziT z@U2RgeAxXKJn0jRN>Yn?xdC(d8^-qh#CyUP9(^nP6my@dLJDx;&J#H8jX?UFp(= zkJy_FER(+5^rWK=XY`> z%rR)<+^(*MF+;k!TW=&`$lDyabMX?`nI8bzCp+QAg&novARAJgab zM@x?z;93y_!M(cpB4IkNKW>3hF3a)pMGfQ!kH;Z~!|+v#4p@Gugeu!;?rcm5=$59y zwcv9wEP5C$jXwl+_hO*zGr{`^MN|l?hZc)e=(^Jew*s`mOLPvrdyK#>Yc&pf@CI_H zPr-+)+u_E5@%Ucu5Bj|Mhp(1Kplfm;%ItWEHtwx>%>warYnYh*I)dA{+7k4B7IA|X zOoX?I-?^*GN{}=<5Js03!nK%CSfP^&QUQy>N=wYpDgVkH7@Yw}KUZ?|N9Mzv!yClw zRRJ?ETm^@X+3-5O4NRxBz>%Ym;CJgq$h%VsB5MXS)raFNt?`&KaWL#(lLmGRw!;{` zOHcww;a<287%x`B^Q#q5FK0FSNS=fFDbHb#LKA#{;t5BRJE6VjmRa$_6WrMGhFtl$ zc?M$Bm#p`Cm zY8?P!mjR5=mx7ilf5Gp2Gl(0cAh@I)Ci1`G;O`62`7sWve#v6w?jSgP;UPQDq#E=e69kJB_JWt}ZD=fB2A?Mv zL1g$n$T8aouiOS=hE^rmsoP`efsNhGY5&1?)H18ZT{o0#<&PVP#$&EF10uCf|l(Uv)2+vnC$WdKbaJqAX~- zm<)}98F2Qf9Ky#Dn3$-8V@IpugNRO0=r;)K>g3^owmjC}e9XPQk_Woy`(eIiBPe~@ z0BY~|LbYE7_~nbw0WrI1)wx4(<4QPKTn>jlaejb%Zo^N<`Jgi<6l49DqG8__3^r0g z69a!Vte4^ME&@Ky{2~@F)!{AVpWrA*6}~a?0Jc5J!=nw7;JIG{(_+fu!{k`dY0HMR z4Xx1srZ`^vJh5`t1YG-WA7(DF!IfVQ;f|$$;ghZ!x;<~>-i|i_(vzBl`wG{7gTU2#gQ zInJw!LhqV`ID(F&cE(IJ3E7JB?#u9l+$q>|>>g%3E9Ye6Qz7c96`Ye_4(Hv(?_c>~ zaM{odQpYYqhnE&M1r@=ygH_O4Ex^^t4zSP5fQNp&xlbnEaDTow@Yy>c(^Cl+_8Se$ zS7br;_X5D;<8ZO!Bs`0Z1Vh&hur)pgflHeq;9dsjzS9|o|9;LLs5OAf{V%z>Y#JyW z6z`Pda6C2>R%NF^$9+SrnyUc?)2_m={#KBe{T_w|D&wo}MlkYt z4^aoC@rg`7R5p79DcQHczWzPf%Gg8y(npZOTXP3`0Zzue;nF((aQX7e@KSjSl#e(K zKDGBDg*yZkdLPn^V?h67Ih?ijfyGQ8=7ukXS742jtzt$s^utlxe?$HEaX2hE3UBG8 z;-1`Gym0LxZuJVp+cq0;V(D!d`m!0v`3&V!q$@e)yd&JHW5>A_f6j2_YqxXtbNa)` ze*HmX?oO~>S;2+($iQL8o7{-8Pq=|=tzph5B{+1W45TE}K}OOCzFiK0S;hOoaN8`@ za5lg%zH=~bcn4S(zJ!4JgHb(B3MCGHhDYu1&8#ZlasBG+xXiFTZuPP}F7H4iCw&PRPr$mN7&N`xAS(?ZL?RX9g8Sn( zAHbjHU!dfa60SY@7XnZf&)gE>#JA44>a#H?ImiOSmX>p)4rstKwM!cc&J-zbszMp+`88TRu!16%FG*W`FDfS_s1t# zSSp1JIz-@c{e$?om4kh<4B8Kzj#BM!xUgNL(5n9fn6vEz0gz zXINs7n6duvSOz-!cw>UmJg_n_f-E;nE_6Hx(?cpa-)AN;YwHEBrs^Iy>isgfpm71d zu=%iW4}%>_u3*M3E!raV9Y4w!uKL2uEfQWySz~Kt6EsGB$kRx z+hFmNPkh9gspgS2X~Lhmw}mC|uA_>*Cf`-JiE=!~32XG2FfeT-uUGOM=f|ET&#Pzn zCMg?!dupP&_Cy)M{V>n}lT)UDMSppPh!sNIi2>%iMKjD_PXKd+W=V6u3H{lqSLe|C z&p$k9o5cGY4W~BUO}vJIx8QR50{9tpq5iYWc&t)`|Bv&3QW1)&godY!-(@|V4&Lvoa$f<& zMm59RWlH$^)kgqafiZqsyu#S&V7<)`?j)yR*gZcGDT#T#H*27Bhz2%0Y2)7N8?d&l z1)FgXRLvBL&$1Yh7HcOJsD^a?oB6$?%^-tcJh3uttRhAb~{9C`a1H{7TN2JX`aGxid;XeEI8oD|R( z2B7|m6bzOu2glb(vG?$y|BT;(2OZx1-`7t`;=lM;jQ=P2DgVv*H5PB8|CWC##6Acd zwwvNVF?+W#S{YNei)jCtRg^p04wO=+2^k+G=zXLeMcf%lh4%NzZ$lH7wHe@g|4Hma zaWRIS4yNp^v$*kU5iVap1-vF7!utm86zRQL^yc6mxLsSwRGtlH4~&PRcE}D)J)?`| zU5(`I9!N)@9~Rdjhhpx?_bC1K7}J^QU3_-z6A1V$pndLRvh4iI-c59)u-PL7ITk|Q zPm5{H-2}XNTbFvyEv3u(KFx7JjW)C0E2S3TcvKgFEdH)psy>%Rl zx=Mwz=5v%%X+_`uZlU9Piv@)c6Fye`1U?(;#l>1`^QQSvDKBU)uP^fCBd0AOo#H## z6JaG(N4l`KHch;#CnbzKxS599Xz+3cLwVcd->_qerEqKc2C{g23cc1=JaB$&TWCH%1Ck`md?k_a^1Mh!%9LO@y(1i-o&kQ~4_`oiwTEA!Qq0plj~c zqA%W(f{Ma#8Z$hLZBdgFR_#0>Y~8j;1R+d#G+~NR>zvJzW-VQBKFjZ1(T^{`I*4zZ zze2dSES<(I@1*fRn{Z&;VMw=p!+yz03YvSj(W3t2xbCyY^sV7MlpEcni7z5aa(OYW zFrLM~jSx|U5Wu`=oG#cpe$I(LY4w;RKKYVD!{=@t%r+X0k@g`ag zMIn2v79HqBewDrKy6simof*y_sSd&VyB~1igtY>@J5C6R_Qb-$gr5f4;n8>R!Pp?2 zyu+V}ye!ADh$$L^^NmAnR}Rk>IiF_LzAx$du}3&VT>JmgJ&peIJ-FCqzFF|ARMefH zj#|gV*?z|u{GM}?ChSNS-I=3>R~7qF$k=~y@!nbp?1)27d~bQHJq13<0A=Pl;_s;0 z=$=bh;5q`+9cE!~)nOLeyp1*v|4J6Qkz^yB0o8U5A+64e4qQkjS94=*S@D3TX0D>$ z{<&ceC!)1}ffW2E#2=C|b#tZXDLeUqk${E7*e@=RHJtD036}2rVp_WrxW> zdcfH>jfC6gOu_*$sA(`6aEZ7eeJEX8;zDz#xS~&MFioFc!A{Gi)4NZL;e%xnE*=Jy zWxt(TYBrJS-iI_~eI7=iO~hig{ut2omZ{v2hdHU^_%OFzn2mdB`P~q@qxAvyf4PK5 zCZ589m%`b2>%Z7PdY%w(UBh>B?aFowFnzJby7d0HkJLkm&=7huOCK&|^ z|NJPrgBPxE-i^=yY49J{9%lEqOonGmO6a6QHCeCqF>4Mzf#?5Z!8JuWD%R7ciKEmh z?3fBB+8>74I(05{cQp>z7Qv!YPrNvKCFHT^AlqBb!lrMfJ*&GRbd@z_4Ae!}h@*7g zbtFZM7I9B*%aB3;8JO@R0aV|}lDYFzwtKEA?R0;~HgB0qcOC99g>Mnu;Ei{oOKKcN zl`RytIJlG4`5YFw@SZ4FvYy*>(T1Ee62Mu%S~OK+GHP7P!eN(2U~A9` z63On`SQ=e7O$eL%34L|0px(nf>`s<2#R+wjdT6AknW!b#U68YEqR`t?f<;0h?t(4EMVzMce`$pIEzEIfBQ<_*qra!z z$?bllICcUBmzP!Sb&Q@c%tS)?^4XWYw7F?k@bWUh?EOvb-PWJqu-ZnbwQ#57p{K!{ zGlM*?nG?x-VC2#}-1e|+7BMISKK+@5zfS!YC5~~U4Uco#wpwpme_|3I5Ugm$>IN30 z-vaaRG>TcY;xcN#L89!pMOd312}^W-(2DcESd+GoHhGsYkG9#OVJ=SWX@UT&h8zHE z-;LB4vVk^L0B-&>3-gT@V9hco`l)O}rB!R-=FF_={h zZ8Z&>8-zRG?#8T?95$t{kmY^Y!uoIOPkX~oGdi~eAJq1ihTb!TdDGKGUM`9BX!Q)H zeqpF!8e;-;KdSM!x2?gZ-#3t|&ohN;9ojR#4^6Jc!Im*PytR=WUmlc3#?OOjy!1lo zv$YlmMokie-Xs!NGmIv^s;2B4{-{wnftScUN{$PjqV72nz4O@0x5Q87I};z%{1qMe zdbBHhSTzv?jpfO-ehd}++M*~!gO3QX0u7% zcEE>hZ9bs1stWE;krAHsmla|L7}DLJ|H!D!T3+Z&*%vO&PinCcAEk|w&R=IQv9VndH$cu zWKuVffXVL+a4a`~iCGPpGf5eLFA`Wvcsk2|KN#*!ZV;6oFJuE_o{RpB-o|8p52e=D z&(Jir!7O^kU9P5K00!NvVMcncklCP%B12>5{HOy)yyWRhu?O_TEn|Hr(kc1KD>iz{ zXNbJ<4s<)!u~cgT4Nf4Yy?h1C-9u0qqk?y~jucI?YGnTsN1|G&G=B7DST+syvU1X7rt45}4!^t(lh8f9ODO2u$WOEo8t@Le$J z!Z=XNz0B4P?PlBF_c6cM^EeCy3$1t=PU54Z*QC0Otz(ZqaiG{>%Pt!8eES2ND3jJq^>5FD)j#j;{T z*!Qyv7@K{kOtxbhHU0Vv+kcgDNz!X5MR7B#cpVfo*GGe<#(S`Aj%J!Sw$q7wy=5c+ z9R=ktcbG_~hJ;Q@dVgC7>@)(obsqERN8CfEd1oh%IQ$Q8Cpt5KtrRZgpexICS%9`a zg=TB#*wYw;0@1z0vuWPWH>^eVEPM4lkR7Wu1ZRuc;Nv0S3!N$OZ+!-7e`tbBv%GOi zo+4(;hiiwY{vzm*AJYWdwhhc}#auQ(UXeAdm7xOb1U7b=1Vu@|fdvDUI8D!c>`_vp+5D$| z;9L?1wyQ&7aG9joP4k1D4oqbmWqVoFf@93%jRTC4Phn5)OoICz8|nA?LfG2$ij}p6 z;fjZz==o$b1}@u7qqhuW+p<+*L2?6Uc5g8^Y4k+=J71T((K`S}CG;oxSy7f^Xy)?~1@nmIh_2dq)d+f9DR2Et=@F+Pg@R$N2oB#Z4^o`Fq`E}ID! zxFE}v5?e#@(fWg8eXN#gOqWO7cMGU96WIExQkbNCgQ}>3^E)>V$A>%P^FDhFShStI z`6gy=`53g0Bg>(VR!|UjxZ(&k1;7olDNs=h3hDOm=m@ z2|YU4it)3Z@O(=sPJR(B&Rg!X!(CAn4>pjTkM!*LXBMVAn>%%KEXHr?HZ3jLMu8vC z;a3$e;D*=2vBA@T@6)7-7B`utvJRT}I+Z<-kj7DQ18K#SF81U=J$x*dp@>GF4&w#7 zcLMPJPGxxUBY?e7wWXn(r_ysin0mHvf={cpP_1YpDn}Kv-jzM@>fCW0-slR3^^O6Z+)_aga&miC|^#~3di7;738D>`dldC)Svf zWu2%c^)9z|t11pMl@(P652vS>97*|Z5WD`6~l4G;hosfx01anQ5JoKe2DRuM#&BJY)$(=HaX*uXf*~vvEK$T z`kYB;^wn{^{$$M6t>C0^D~UC0ME{p8^UqK)R7(|o4Us_6`|WJJy1nQ{k^@HF3TN&I zrcnFLvEXVeOEc96V6GbZV|qAjOV>LR{oL7_QyPq_cA1;+J65km_L#^2*@kC}fu^#4}&A~GPTXFJ!CtCenllq&=a>q0K3-^{)P|7Y(Qo4GZot2qLu^$#< zc5)ngsP(aT!6z}J>w&sW$UmZg3 zZx%YvJcgASN1-P&gQcdMg$S6RyPVI`yK`mUNcyH$+&L z`J2LiU!sB+TgmN(8U6^$r-b#R>Fd!rdfhai+aWiZ%GMqw?V|(etV}AUrv^aufLjnc zGm9+vo0Mgp%i#8Mk|4w>_Gu`6|1_@ioJ%vmslfR^6PV%1E~r1~Kxg*sr3<T*0ik2RqV#dVm` z+{tELh-8lUmO+J_BYWc12T#nhNqhcwdN;$GrUgXP=dE`@`|=@(7jAQr)^lJzn8LGX z*YL*{L-f!G>NHqK9fOuZ(R^j7>zs`<=4FZAb;Y3BMiZ1j83(45ydlD*hLZ`Y!KCUS zk<66S7#?bmb9D~lt@6Wo%n<0|TNeVEK{R!-B4&<}#mpJrxVUUKdpt7{Q zScKE%E5p$4N0d-JJ{FCGzR}y@MZ%Z9$5i!DS$O;KJO50=5a0W?koK-V+_b-z{@xo% z6Ed3UMrbAt7;=oilw`^mF0~d8w2u_zD>8-AH>dE8T@%@(kijr`*h*nX&L!Sz<2qD3 zRYxJ~`}iS73Vf%yZ{zutXd!q=KNcH0hJUmm1^qVheA!}2{^X9?yn&kd4BB0bBWhFm z&yM|h=ffNLd%I0}ox2TCw9QD^FJ)XlsSAaJV}peIU%&FRm-_I3LNC%g^JSu%Ss!W6 zn6sq1Zx=fId!U!=0g?VJb$y94>95?~QiYapEK%=;*>;!<%5~IE?>bdlv7yTxK54 zZ^bqAA-KBz7haN4B6WpYoFQL{O79GDhf*_^%uvU;3%L}1GZH4xzmJZ6>3ApWC^{#2 zG9~94%HIEkK1Q7oo#5-hNv@7Y$I6LHbYGIy-HWtE)dlU+bur}LGEr>&WPa+KGJHR^ z2VU<#56|Lq@N2$2bxBAG4(Hk-r2Z0#E}CGV<8S)&RzfKB48g^NPtlNPwpg=p2x%RT zf|QInEV?@w#%cG`ijd#*#78RJ9!DE7d?f@(g*k>~MtlAF{D=T?B z*N*F2HTcJCrOCDaHU7Q!94%*Svx}))@$%}cl>RoJPAD!H-v#t=)G%B2{qQd0d%djF`>II23DIT8 zC0JOpncWlCG9Rf7)|fI3Pn}yr>It7jd9gbo%k)-RR>c?QeBvGpyUe4zVJ;^aKWB{1 z;T)qxOuC{U`ae#Gu$LQ1rl*UADYdep8AYrv!^}~HBqcTk2GN;4c5bl0uRuxJOOK-jKF=(`DU$?e!y#q!>s#5Ees5b zgvR*>(4;mP=UoT^KdEtSy6j|h7!m~bks7q%ggbheJ7DJ(6;Z;TcVNCRiH&?Gsck1@IB1OB;L zf;9)?M341G(dIZ?c%%`J{xHQgh70+Dsd!{=AoVmx zlJad=n!0T*DjPM>7UwxMbw~m=8_dI(17pa2^A*zEA%nQ1f*cfA3LRk*7~m`+_&$iE zXZ16v@9r^r7jhd_lsxeYEyQ=hj`Yp$B~-890?%`M!Tx(YWbK*^V_yv+za&fc^=1E( zvuBiqhWt;ab@^4If&+I%g`YBM(o`pLA94#UUNcSf@A^*scloU-ymb*?Keim7>Gy)_ zKJowK+eDooRzcLRA&j^21;tK1YL)p0mW^X^&f+s%KJ~v2*g-(-o6wz|A&#jX&7BCGwQKbpjr=e8?WXe9SWS4}-x& z1NN$C@t&jzaTn8?0N}2gfRBi~Fc89?vhszS4TSElxfz_lBWeWr247}^!UyL z@)unu*|?i@Z%Q1kgqb*@PnG`Y+fcIJduoUdU~3kolE>*xTBOjyJR^zrKIjxFiSOKE ziyjWvzf9-Mh_3!R%~J0T;$QE1gFAmq@Du(CWH^K;_4t{zFJdTWKI{^Cs!XL~;~(tV zE>mvt%=@BQ3-YMw+7{UIbUN&Cz9#BiwuEW*jl=FMm7JI6N>2MqENIW?M4ygmiWaVk zEvxEQfy7zEAkaaXy$wiX&s(09c^0{#%aABG{)qzJx4Fs6uc?#K_Ya~$6|=$gPXWyS z`$AM&G8BEXpTaN~E3B8&pgY$LVX(Xd78I-D(chD(OK}T%TZe#(y^1KhHv=S2?quF= zVWLPYTMTlGVe@K@(95a_CLbs%Qy=>fVkbMmA=3eLJ%0qtVk6% zW_*WTwx7^H;2I5^BBI6=f2fP5Jzk#yc zd5r&L%CETki7WdZjx%bjQMNFS72Q1z-K!jhjKX+&Jn{skH5%}(KSrU`N_ldeHV=OK zd9%qewP4uahvlSHh}4Frin2$KK;;%kv@G_zrmz)a) z0op9|r3D#_O4*&$DrlS)FWNQKmtyK|Y3ZQrc=<>e<*Z1=%G+C5?aS(NbY?;_^Ylnf`Hj-a3k zx)k4f2-BZ=m%W*&L(XzB)KJ>NY?38dypTipoj!}^tKSr*NiJi79}b9K`a8qx-j7gl z{W7e*uf{)qlMgF5@VLSumXc;nU*7Ai6p>lI48_Vhyd9UF*=cgN!MxsJ5(M<%QFI6{vGTr&W2|+zsQ)5;0mkX@Uals>6Q#Fo|8Bps z;R_PU@zYe^{e%twK*f#eS@gnBgAmx&mB~LFdzjJ#nqlVO6ZGrfc$_ca%t@fwCp5kv zs(d+%lNDm|qm(Cl8)UI0+gy0iEW!Iubwg9*Gx)e_IWD-!@%-UPeB?Tw0=MoJ#e`J} z*LSbR?#-TTa;AcCW@9_W`x34HeS~g>)Z^2ziTs@82%4FDhxK2eLm7b!*|f7sxGq5K zRc$cmb`A4G=jX9((E&%%a>X)uezp{6cb}r&nZ@j_+6319Ac8C&mBaH#aV%*}80i{r zf|HS-S%X(GE~-z0SWzY!-~58yv>>>#eiHqBB1?gB3MBFSGJcU=fc^;|+2FaOY4No% z`f^|ed^5f%`s%xc-5=hM9?>|y_3bX)rZpL5KMCS<-3INsLR_#H z*285E$A5#v8((snbDTSOv)JtVkhdtUG!u=c%|MNq6Ex%Qeday3hm;NN>FJnQx-rj~ zwzxgO>8&j=bcqYMC&QM1^?DSXTB!;<{(Xh{Z3eu@X<4Cq@mjjSucy?(Tv8}h-3@YK zITX5dkg)LGOVPRRwPc}h&WqA5S>~RB;+X%8SHKAG&nzY>OA#rr-bxwEvT;JfHspP` z(}k%wsikR%kWm&vc{{9O-i(ioTQ-+mb$0US`n6%viz z2POx%g8!}eOkvt5w(;Xfe3@m!q=!tvgqhQzQ92E$|MbLybt@@juLO3@iGZK;=ae=3 zu46A_RR%D^yQ%WywrjGW{6Ton zjp)t8JaXQ-k2d^ONAn&jGKk7y`#WoyciCR%`QbjPXeKeqW>u<+zXApd=h>UPNUP5K zG6%)o)U)?D6**pqbLs_@(|}ZeaxIS4@}?~%shnDkEVyX7vq1mltg&-D?zy`jU!Bm# zdd(*Ev`xlwC6`FY{U(iG{)0=|l1@bft7!5jMrqH22wx}&IoovjPeVfCLGUz6c+iI7 zRqdobU5a1f+>TS#$6-!Z5#D;GC$3W#qr$%1Z2nLa+9NfGtuoHTpx8#-bh{P2{Fi_yZN`W%uG z_dFRkOOu;QDCGr4k$vN%((B13q;;x@ejWeC)NLbZ;-6l2?z(Z=F76Rcb5RtYf6x;4 z7AV5K+fMw6ie6kaVj_Q7>}(YH z5#xU|KYt@MP@95ZmPzngxmv=O7uBpi^|e{VuLo3a@)}CEE0DvF0xA&e|7!QAQOoG5 zeDWq&yi1kz@%{>|R~SrEOQS@)M%`vu_(&9DE64Xf*n*asF_gyKDLz?J7{xuu5v{Fk z@2foUG67$xcR(_;$%$vCB+~3c#V#f7MgYZ+J*{kgW2rxY+RBp ziCRCc(c_#IIvX;OGM~)Xjyj57hpMr0{ZXu0dW5}Z1?L(RPdEzUtg_dCJ+DM`O2%{Z>&Q9 z&dnhHjx43$n1ZqspMd$3LbjoFFVxDAW`oylZT0lUyDlWSgG$W59yh|Y&j@KHzS@TId3b7_kl`>#Ib znXXq^aMmfYTXuugFsYc$YdFX~KFJ?n`*WG_>{tE7P&QmS;kkfp9a}{o}M+IJlmVyI{k+Y{MTC5 zl)RYF&-UW)rf9149L{m=xbs}~poqOSE0Fd-T*ybP-pjq4PfKgBALApg@8Kht`ALoA zxA2wAi#YODi9LqP_;v3>-nTiEt9N@Tr8xyDCeC}nBwrmxi|Cj9Z2E34W_M7nwp`89 zPrc~w4RLi&12dJ#S9#D~t zRow5mgr!e<#yd$ZReGj*Y|ULyo*Hsj7+89aZ+X9vy*Rgz9SYWDo8Y4QNH=-z6Lr<0 z(VN(#3)-yXoSAI0|yT3r1pPwT=-#uQrYu-Mlengiq5C0;T#!ullHWOz`ysOaPlMg*=E(Y-oFbXu4C4vux5aq3mu%X^r_6uXS60)jNogB)S#oz$N)zTJ zh|$kK6}({grFY$ec*7LVek;z3X}X*F=!ZG{)!?CA)y7*oU|-LBwi&`*M`?=xW)$(J z;m@VbTi)=R4~%)r=9q2k$gsM=X@$=!zEX z&*T#6c#b7c+^sLAr&O|lvMeSxB{Iito!H88X7o^H$emuC7VD!<2p>D2XQdh2r5m21 z%=}>{Pt_^qzrUyOq?Jd+jL07RTc>1xWAsPK$V^jA3je}m`>P~%c}0~XWIAhEI+>rb zNaXWo=1LvMrE$H`Jl@o~|v<^c(s1@+?t(e{Ys||DEz&bR+A0%vRCir_3q;?Ifw3cl)t4i(QRa|0h{x)v%avh(( zwYxvkGFvDY?lh0e-RimEn(qB5~ke7annw^-9fs;Ty3 z%TC9$%)JJR2`@+S2di2rYO1zNFMc?y?tM2?`P8Jz-#}}XP7809&s)6Dw=0zvPwy?g*t>_*rRUPQr(KYA?4Xpr=O~+S z^C*9I8T`4dry}#tq8hX6|f;^-g~L)_7j)I*=Foc2jw|9p(KzE7*Yh&qTAAH<;nxKC0Sfqr{HM zQ~8qxofJlU#&gfBvsj-~v0}Z>PhL9UhUm9y760)hmhIBfQG{NWq=7Dn#q!Q&{L;Q9 zlHAMk{TTO2E!X2UR!yRtTR&#()5tES zY~!6-by0@JL1n$?S*6>`$$YARGV2^0FS(rmF531i<7VYM#beuv8{~9gFH60c(O45! zSj*W}-x4NY?zrO@7Gy6j~@&!VKCn5B{}@`L9JO{M zpWSa0zistJTzmI|sGiuM?6|Iw6@4Dfj8Bw{lfu2kzGru`RqlrTzgbb-_wzb2PuRwl zEzgM#GYWW>S04X4*H?TR>A^K^O4z*TI=tacp{U;>l5NX8D|+)?eCyp~vMwWnXI1AE zIv7~6mTR6%kCqMOcWRP&-(Ju7MQ;tZxW!2B{&}-BYMG@XXUTS!vLarLE|XYJKpgv$ zJ(&%0_v0n?OW0{gXVzhJAnTd3QfdyAH34I{$y)p&%1(+z*0Fvz%F((lg=MI!`fci$g4WOV;}4a*!|=hRi#16T6Wgt^>xW0|BrRmnq&Rs6rm*KC}Ti)7cPk78u+ zvFz6^#tt6QS2aKQE~O=eaL0BkWv7oR{It6_KRkGcXqTwV(oavMiE|~fe)C1`-r>N(f$#Uk_wi0# zeOW7UQmm0=$EUFJB$3%K&=*%7y21t^enQq*udN$^i<9=JSF|m+93t1jKo#1zKP~a zeSUb#)xx>TfTGe#Wzv1iz0#-owaR-T+Tt@iUGeAXeNu6dv$A=9K8cHFOOre96=%0k zlal*hl%~|JQMOw=k+;4RDdm2t#?LEzly5v7sPV~Ye&4N%61=V|A0;nfBmO<1ozI_% z$7$ov3stv)dKs1gT01HF}L?A7yrzrg*H9t=Z)_) zvbP(XxwNk|tR#VDZ1ksQk6LB!v=(geW>I{mxkNniu$l%HgMDEa~N6I z%>S&}#Ro2s_gD_?%R~(y$z{<@MW47gtluF!Hr@EJSTs3`wR#;XecXASd+Q7o#je|U z%TDPmX0C^-6wU%R5;s<{g@beopy>LUGU!KF?yj-lX zuKdmxEYsuueT@{M&yx9tuw%U1C5F3eeiF6cap};<0#-UMK#Yt{W1+n!GF^>E$>735 z?i^uFtmQX$bey`%&8RV#UuH(KP_4Ej8r~&a3gyb7Q>=@ z{*k&mhckm?yZSt7I?G1S2<2l9B&nB1D>mQMpZ%8huwkt$WG#w4A3AF^pH{#nud((_ zmFgtEPtsS}yFQfmge+&lyod#DwHIHtThDhjtE+Sx?nv72^;Jm@l9cx_jTJVH=hw!y z;=FP#4=C=&nwBl#;~P@=gzw))zsgr$s0Zt@+tsn5vb6hHNHu90R4Mt-y8^%;lRpK0!_SU-VxI;O#vUXa9L{bgR~ zqZL~<^0Txz|2kWK$k=zC*N$$4l${Syu_=&}Dr1Ken z#H{EQqW6i`{LXmKqMPVfl>cqNWKb}Wm;G76pY|)4`pO!N;D}+;_}n7iX~iRH`t|kv ztnFN$y)~IH`nQokDKZhQHg#ja^nxVwPOao`wNQM2c^L2JVZugipTyj0GRwVSAt`<1 z$gDt{P1fkhTD{!B=6tLZq)qn-Zg`Fh#Sl2RCnTu=e|k}MJL%r zjAZAEefWP(?rgA863@DFjA_}gU=jXqvW8+Mo3o;obo0bzvBq(}=;Y=mO?w!`_5@n8 zEqgrK6R&9YXzU!m>ApHwyJZL)nZw=f(}J}zJHVtS|kR{KPvf@ z74z^{aeUsQYuqznDc@=}ob{bOlh0qN%?o->;I4)jm7%fLe8;5uJZf8xbTM@Re`hsM zY@ak+?8lQt+k)LZPH#0I-Sw}i<==%(wOP#y^iQ&xb^ZDI=23i5n-ZQBHmfN9o(W%S zbx%oJhOBs?n>Z@dQcNEISH>{ziDAFoBz3>RV*kmqHm2~ev_!_Sg4GSg(zq(Awp~jp zu=KUGWcMxIrhA9ktoa`dY_GSsVX|OIEC5CdXt< zx92aZo_tuUdxTis&5gn)Y4O=N+Au3!L*`Mvl@8oGCH~Pr!AuXglG+`qWL*SPmOHJ3 z*uH7HG-K3Y-h5Ru_BMJKEB}|oj7~fAyJv!>PiNaJ|E)I{KMnXG zhAHldn!%aU%1l3bpFq4AX;jXCoPxw4f>|f-oI(fU+CJ2{l8|gwl#maZ*E(D@W4|T z8|AVG7xYx&9pc%t6m>2fc`HR7Q}Si6AFvFUMp1X4hU&iP%m!YxmS_Ebi5apEciyyc zelA=Ras3Xv*?5TI!3}1nvST}YG}6zezI?959Nxz^hF_BBV?P%7@-eQ3EVr+Y`1SK` zaf4|WUOiV(#pt$BY(JFAlg&wd8*_%o3_HW~55|c71w&POOg?*mX)6!h`(AQxCGeof zmE5cCdwFkI6Fa{npG6<*$yX`9OTE>dRaVZ!RW0tXVb^a~QqEj!#bC8$)_r9JtM+ZH zyx*-4f12pd19l7``^vp^JaWIXowu3z{e&H>UEsj}<=!uP@k*Z0c(a;K`IjsAI~T;C z!Rw_N4>mJ(nbTH_QYvqsIVJNp*4(FV7jH72#q6pSoWzGNVB}$%q)EVEQ&fA=LC$*g6B!!sFXC*!FlWzJ=>4R;5 zUgfgcHg9qRO?hJ{%^h4O{_8q~Y2`Ywh~HJ>i%-t%kd~)(dsU6HX50~}K}U~I z9qKEo=XK-vA2=u{Pp=kliP_AhaT9B8Y0Jvo9aL9Z#3;YVCh-9uyGrZ4Rg&>4U4A~k zKgD;FbI+Qk;_Fgdo;~H0a_qY$yuNdj)T_6S;zGbDaj%EAv^sGd|MdQK(a|UR{J5+~ zn|oWAb^Z||?*A`?nN>e8S~>bG-}kFp^!o9PF58SE>fDa+IaMOhteJx{H(A*S;fzS8|yN}YTnTg6N8}#`Ji>}IHd_Jq3qEODt(&7IpS8*@p zXyvG>lf)tQgZS(Y76p0h&oJ81Qu>qkg@yTUSH_!LD_=j&5WP$GvYHYrcB6$C+dO6$ zFYO$~LyNQdnG2E9siKkGdeAanDDUrlZE;9Emg*<@SC_I@pN-hdFHc2>usHE!%1-7f z>*qVq9>+JV-6WQKd+^B>5O4Z!;ck2fFRW@WPC8@CEqtc4!8*T{Q<_Fmaaj^u9DP!< zXkt9NWg_qXXbSIfV>=r%_J%mcGg&H~G>RvTa^||9*0PT(XXairoNrt3xX4%2MDfO8 z8%wv`!$-(>`u^wumR%6Z97j&&V{)CDO4Ew5t0H?iH-?(rV%h%L;moRKow9Pk1XdKG zrZ5f>r29tw70s>2F#E=zV!{3g;%0f@V_Iup9#y}VKkd|WRNZyaOmX&MD`^+*FY_^P#ocuRTYWFH#tk*K9I5aG-e!k@7t0Gx{l=EpMT+|RX$Svy4&1x{!AX& zH&)!Y|Dtll-XV&v5u@3)x@cBtR>P0)dm$xMIV|wNUH{e#b`HUSx^Z8q$vq^88kL8@AUZ zUP|5OsJLD?lkaGKfu*#r;cxs5R8Oy&ss#PTtaN&?SQS;s{Wouy(zhE(>s6*Ii}jZz zhmgCx(`|_z8FYxx4X@y7d^G*le8*dE`oia|NMbWz^y5oSxANINtU2Wu^7;WWJo@l( z*6rsp@!I~)?9$DA_P;wPEKbfk`Ty{5=_Pxo4EX=-ocO~2YKEXTp6t~V`kj6rhmr#NXCk86QfU^3`9-so?| zo0Hk-JTw8h6Y}WO;KOiTokRzpij-Gci#n?sgv|DYaKusEQ!|ZrZ7+q{m7nl>w~CTZ zn$s%F1k!CR#@$wiRMIJej_z%y$gMl*GrH6GJ7Z{;{JZYxDC)zF=}Vg;nlP*plbsSt zzeFU>I0O0)u{cemb9i@8>;bXA#Pg}jqRP>D5~ia6(83WYpz`(%Xvnk z&HX6)+cTBwJk{yrCIxw9oS>DT4JhvRQxQ1mSCl7z~{a4`JcB!Sm+R>Cyj*Wfa&NpDH)6ZTETvf22PFqj7EbR#9PH7E+Pgq zo@~O*ZW}RM?;v80+#uwCfcCw%nEzCQ-hUUd@j(HG8vezfN9H(dmv1w$=G78} zG#bM{B@p{8(y(IMek3i|rhb2V;f!fV8lM@7;@|g>_>yF^t+L9>B=fcQIvW6~YF6!OI>- zBtsC;xE_vvk?W|n%ug1k@Gg@fh45_mhO;NO>9`D2GXHF3|Br`h7CQ{IS zqK>^IXy^E3%qe_<_M5xHDItlSdDJ^Xj`85}lX1XIiT^&lf zY4NC9(uv-G^&qvm6)4m_iQQAxi3yW1{oZ4&Z3HFewxt0lGU#-|6$EYBMNx@1l#scF z{-)`Xre81mbD}L(*L5e-?MlBjuHc@IIR*E7CG?2CiB)P-VE!Zqu@3W5*pwn<`WsVz z$Sw?&n4M78b3;Hj23NBX)gpR7$!uy9RVbBCkO!U|xth{$j zSl@!M(rhBQtvyf`0LQTyc|x%*)-;N*IU^-K~)IHUv!$ z+k}#WOkv)+^MYCQE@6z*PQ(xO7TAzRA$PzUEbJYJiPOeFYk4*_ZZ``$muz9VGga^@ z_#@m8BUGwR3$Mz~2+w!E6cz<;7kbZrCe+nyK!1z_@*9$HxBD4EeNjBhjMXuCLQj-E zdnb72cE-kyhB$w*TDa3gAJ*;+Any~dzsbdq+wOFJ`VQ!*pTpmWW2t@4Q2IDPi(=GTGn5WrXDe* z*UB##tDi=*Ba;!S(}Cjd^rUBFEXnR&91Xv<3sauSv3sf6Pb5uwxkh$XGyg<5ytYo?k>kVxEz^DANXUG-2}^3fO3zR&RL-Xr7%RAPH=Ys$}G zkNU8K__*LdY`GYNE-rm&m%B4QNO_2L2dz=JqixCG@V?TMHufpS1HG?kzBe7K`>1f& z=q8@6O@!3l7r#9B;a#AJ#X&LfS#cWH^KN5#T^EY%G8rtc8(Gz+qaddR9ay>p-p@Xv zdhiuY>3JRh^*xH?H)60Y;XGEFs3U1;CBmMs$2IbR-=&F&^UW8UpLC!~)hVpI?u>vr z0kHp(ga?x|u+b+R-}dW5ZIvl}&uY`4Nn>dF+v}M9(-)JIHsi{QVB9$s2dh-shx1q! zcKgbn^C$DssdFtx^}C7#{k}uPzyZhGcp$W4Al8)x0{5IK^lqNu@@Oku`wt>bZ*7{B zc@LI>A(WF*h8<5^l3npw{HspJgG+~y_+bg^4-bO72{5p{Eh?6TBf?=8_ANLl?7< z7k&*@3Tu{k5v-=2MbV;mP}$`QLucL>TIm^JXQ$V~($9J@(>yQx>0S}kKlx(Rxp-LR z^+5TLmU3+DhOKehNZ#KK!$!;A@-5e5|Dzh=Y`Pz^-Gb3Svx-e}=4U__8vSVg z_HU?C{>JXXD`Bni81Y}Tp*HLns-&eDT5$=^J-P5^YAe)c7Ynzmd*PbB?C?7(Qy6g36){cWSiD0Ap>GWF zpurB=eQE@;(H3o{eH5~uOh8@2Ux9m%#BkF0R9mI7T1tT6mU7ns~ogVA_3>>EOe zthgsUoYj%+E!6O<>=Um1xPyVh2t3L4!=tNQC@&mC{+{X3lH5>zb|rMjrQrZAfY-3w z2zoXWI~^iXb@&!S=RJe3b|pTCe2On~Zw>L-=eu8LqAuVSb_zn^yfs?&vk-adZ+|k9VUp8mTz! za0fQ25$Lp4n=ZaBK}f?s`0hQ5?XKzYuUJj}gA};%E1t~r+mpK06CBkuBB^F1mK@wj zJrDJx_WvH^r?Y}qs+GYtzbysme8T7Rm$9#5B33k>qp^Q`k>-K{6mrCzdUx`r`lG)%b_;o4dm6mL z7){&OK%(9$>X0y!wk*C+C%!32FJ=>Uv#P@0um921V}_JQcC@?ObEM8Qr#rt7U}M-X zEE*n05#Rl2@zP|{I{6VE?v?at{CCv#K1NTUnNW9)3AFv|Qd+ljIE}aKMM-i!*!=tr z0_?lt*TNUrGJ>Or<`UUUaknf;(L)inrR4kwM0|`wSF@9FX%&s;lks@5r*n z9S~%tPD{7`MtR8{Sj^sxX@AS{Ms);7$DD(u)*}2J+M2E$lJnrkW~BRTP|1(C2y8GQ z{rX7|vU2fZX)1y`1|xJ&JDQ~EBl{a)#r_N{N^94F{=H~I|9AG(XnhT1H{C(Wv;h2E ze+oriPh!Y}5(K^<1M7jiFtNQmF161Bsb}J=_ZK+z>OubX$(Vk_iMIM|#jE9?(Ka*< zYUS5(NBn|GwS};rT7cInDcIh{nG&WNqq4m>A6WpuD^MOYpH>}S zOk0Mvr_JRd)bm9-wjR(S%1wpcT3vGUe}{Un1L!bnCoau8j-+pE;o_ACnpKZ+~s%;|Yl1|D~{p@xayac$)#3=jH_8AqG2rDs>VP&pZannW&L zz9Q`MRV=x98jt&m(3kwFX5>3;9J&J|XI7&j;}SCOU&6y>=dtzj3Ur&c0$rAlBbz6V z)csfodVZ-EPd}MZ=de2H4*reUnlms652P8k=@{G1mKxgF)1}E)qzvCgKVBS#;n!=Z z*nJYOV-LVMAdzOanNIdj0<}(>OTJ58sAow$Ek5=GA$MFU!{P+i-?ygY=YFAM zMHO0K-G}STo+Bx0I~HuehRu5nMjJ(F{>RYKewIUw|)U$=0uStN=&?LPd{2( zk=AoLtO zxD&2)U4s0m;pnEaME%h(LbJOOmFbn^UF!(ks#%24VM)ljv;bP!QD}VG8Evu~aq6HI zo>y$al{Y(}zajlXA>M$I%AW12mDm)gu_1u()s?!h3iXZVEV^N^t|dVZjRlF zo3Z_=VDoZ(KXn_C+C8vhUKaW^#-QytM>MRRijQ49uy3YZUllpwQR05Q9u$L(wdE+j zV236%A8K`M36>xIjI*oVaBb{a%r)4L;E)_#*&2wmNpAAuf|d9jItwUyACJO3KAKbR#O9mToqtsc!8lQ`=nBA2(3cP0y#Y z%vp3VI+=df$J6@R3FM^XMrsF*#drB?G=AMK`ug_~9jYp!#O1xkh5lC5t)U04t977H zizm_KUgJfB!8u6T8cyeTPZvF%97QSSCI#(TBc_<bZxan%(N~S)Ms1L`afr|B`Oe>t5Y!} z(I38A8*tw51TMrmB4%?RH15}@9UU7Hb?z>-MP@-jw%7u>NGEUR1|>$3t*_`%$=dvp>ej@1xMC5a-)(gI%%$ z&+ctR&OHS>cZ!0Adk0u4A7e*vJDi)AkGU@^kQuidL5(Ts)WZcsehtFOoeVRRe+ov$ zYSdtqDfBQ4fw@KogaSJn9w5h&$JN*}YcmF%TLDM!*Mc~s2R7cz$A9NW!@SlOpOU>X z)m06b{;ovq6n|vgJ&a?$9jUElXB_U-hNf@#M@zj3bU!^Bt@M)d`OrE@mjs-!2}1u^ zD~R{=5!OPE?B@?7>XaR_wDr()=Qm--+#Z6B-EVxz+=G45&jj>VgY#1xJh<8!n*$a> znQDub;|&nerwlbQ*|1iQKugDYP@J3%dxxP|+H)%=bomdXFI1sjZxaN4-T>;8fE6>= z$TjbGOia>7_AL`E8l{H$THge!>`1qp%7pmBKB&$yBEO+BCfHm66k5|MRVdorID-0& zI$`|e4M>=L2;AV2kS6zK=Zr_qsC1~Hu6qj3>BlZ4FC@y~xUfEw0EDCbbdR?;Y{hosKtsZ!3lZ44_`XNTf zs(L96;Z^hs8}c>K$G!-a4+?Qy##&PjJiw*_x-w=m3-)r%SCu>$;?7mT{@FgEr)m>) zyI#fSPR$s)I|nB7KVYU9gQJccaAc1@UjAJOQ=Ld8oC}A>auZzF^2cwV2BBVmEjH*b zK-Xt^;1+6B-w#;p`w+KF`=d-d0cTE*gjeT{I2(|TYIiS8Q1ivELSM94rA=CC<-!Gz z^BDZ$I6kOaVb{sdSkb&m&`DcDn|6gGCR+_fMLn?CBm*^>ouThvhFN+tX5u{!$7iKM zYuq1L1z$vs_hMX;YrQekXX4M%qj37}kDKz0`&8pWFuq)k!Aet{EP01FH5~o|<6vlmcg{+bs4Bl=ED@7n$sy`NNwA#@tmp#x@*yELP zGNe!L2>MGHdOjO&_5ER<+y)+%zwr1@IVvY}l=y8y`>(}lYm(RL- zp12kJ0?Np*7`gfm)?Lw{^~+_e?OnSO*d+wlD=ly?%Z$c#e=LOBoxna9Ez*45jheKp zv9@g&TJLiSo4hY#yt*kQwe4sz=?uIolW<>fM_Ek@b`3McU7bX14o$}ljr+J8;Y@Zl ztKehRkp=~=z(DB=rrp?%^{tB0_*{ZnVi+oi@4>+Ra}e@Hg@J=gggzDfVXyK+hZ1W{ z`q~xSt^^5vw&>9i@0Bsp!@*03n9UVgC57@ZQ}BuYO;{(Nzy%Ww8q* zpL!u_#~S!)M8f9%dbo|TmHWkqI3RS8>#A+IiGy(6x&^t;zmY%L8Z%~eM6hRjn9Q@s z=fxdqXHbUFAH<>3LUL2u=J%icCE}4SlubXy@~|k*APTG*9se7dkE_0cZG!(m4eT786){w zBUl$t6hbbB3&V`N;Hdl`)@^BtYyat>?4~}ZhU(%;su~Vo&lQ4tC&B97CSm=(p7?al z71g_4@x~zqIo*ndg7>F{fYo1w+%`$V{?*Z7!NJ0SQ6^Y@FbKs8xwre_h3CQ1=(J7^ z@6TEz^G~)Ae5V5{PMhM+z_&toRk3h--WS1l-Vwnv_nTmHHPN-I2 zju$Vl3+wMYVa4`uLco(=nEBWWLucO$hdP-hc?u+CI+2#`@(F$ z7y7<07h2t5WO}gyS-Ea#*cu7dG#{D&2*UQzGGtEQj<0e(miv^^D)U-Q8oUp`2AzdZ zzf#<@OvhH;PZ+f5ARZ2GM|M3X;=HlkGq1dd&!=vnx2ynjviF7ExV30nKMWa1yQ5R? zO6par3(`(Sw9`uJy4aI6%wHg~E`)xCoI{46A@vyKf@L}nk!Mtk2{Qj7EnNxc-N!KL zjw6~?6YitQ=Fe>Qd{BL%6#>iaa`P#?lG)v{21~d_9fG z-fupQlzVq=nG4$EcTF}cScZ!M|B-KnDLy8=LSWMvn(C2A(_~MGlg^tcY_U2Gexgn1 z<=(Tq%TH96>XFOCa(p&Ch&#QC(JMO)tFOMo{$Uzq@YselETd>_tHXHbu#tW}zJ-Pp zX7ug-MYK8GftuIqkdhVQnt2U2pDKmxZW}7T>x!RcUNpYSn6~ZOgLs>I{9YW0hr&Wi z2zrNJhcdCsygj8O3%YN!aoh3|C}0ByeIdN@SVDhf?(KdW(e>PSxH_dX?fdr)3x0H` zij;DA?3zU-TB)e?9ZqGvJxRS7q}wlsW(_<6kLN9Eer4Oo?@kdSakud{R#TjzQSPJ)1 zJ87$V2l`y2Nmssp$6LQPm@OKK&FbN_eD8BaSH8s6{eh%&O+jia{pt40%Xs)hgXVjl zpoZ=b$R%PWT^cHLc=P+w=GzMD)WM&g#CM?lTQ%f0vk8?Ni>O^zB3<#CM@wz$Y2VU+ zIFx=HiBtzK`L4{pZzDR7ior#9Ckk0;AnM(3F9z-}rAggg#nF4l(sl7DHBDg9#%c$_G3+E>?i-DQngCek>rh?aTi8uopiE4_jQAbscX|twbaF6g&l3FH zZAathddPV%7X^n-K`1>4r$)K9RRiL6T;Tgegx#f{D18`A!xLTztD6@=E5M5?{#!`) zwJpfLY$5ITJ&2hu_t7-A4?HSPz`XPY*2})W(H`sZGh`7mxQy+|Sh3fJr>NYThLLYP zsnCjW(quSY9u$T12drt3=LW1i^b_ZfreSGR0WzN!l>Jt2PI=Jq=G!(WYPPF z*AXAph~fq1m@V_6S7%J8vi~-r{q+YGF8SYgrGr{21KM{l)?>J*t{{6Lw!DA?xBN{0Lu%b$T8c(J=^7 z1t)}=wi+~gLL8cAIiPq#GP*ksgt6gLTrKy*lwen^IQd)9YG+FEp1CNSnvE~cktp&g zg!=VOh!4Af@6O{fvvoVVu4RQM$5rquQ)0epA!h6vNbl+u$eF(a|H{MV8paGYF9*_q zoI^q@!(BMIs5>2XZA*O?6k+>tD>_zx6v|cCFe}y><9#YnY#`&#mGS7D)(NkL<>;TI zjp(d7h+XptGXhWG%&dRtVmlWXmkX5qZ6e-zy}`c;G5F8pG+wQ}2+?>ODo!O~S?4{N z)Gmf>BYVJq({%D4_z&hM-^1+r0rb{t78WP%pv(;>q+O+iBJ=`ozWj$z+6LsY<~3TR zrsB?+EZKWNj*nVhs6(5!bg|?d1~0XvPy-vvRoA2k9+&aNrIc28TLJYPYZ_T?Npbn@ zNUhsDN{Kv(bnne5Tyz1x$)$Mi{)O08`B@h{N8eMjZ{F35)MKk3b-i?*)Lm|3gK{iI z%&){ny;&5~xedhyAH&(IR|vRz0atrVIOKQ*Q-5`(jT?;VMOh{_9GV83&1Ga6(1NDE z_NUV7Y+S#$ma1pCP^z~R#Z~B#|9vMi|GAiM%kT2=r)V;-7i7Oaxz-M9M<16a;?MFl z>K`G;$Tt^de94_w)oRjk8N(ku)SAA1yo;EKB{lD=H+&mCyKqy+&EhDzD1kQnM9^&i!}RF=bIj1}Nq!bGHYsy6hmYivf5}#u zs86MX$tS5-=Ogrdb|}?3T%slZOK9u&XzG*2@$umh%Iw;og6!SNI;tFg^9Rt7Ge@C+ z(VjB?Euejs%cx;hCT*Q*M3o0B$S9*Dt(cWUa&~(fYI_ z2E5;g3q8_de&gFqvl99PQ3a7=dJ@Fa7I39>k*wR?~-i{ z$D9jFnEoolE&n_$7`hitIe{=)ybp;-?h4b*4r532R5-n`!6aK_e3s@2`}der_UF0K zZ#2Y+OV;>dAC4ObUGVMoLj1d{2G=tVxE@l3jNf(0G>SoC`%Wm|8jeosp3s0FvN|ge zo>G7_YxLnUHVtm`PvcodEGj;i;NA}dls{yODF~`n(fAai zPvZ|;z+tp0T|E_zy~Fon@&3M;&QGEyEebO(%g_3HEtcMQ!<~>D+am9O{WG? znQkvCG7#vae;E2RO|j~F9xV)MfU!83#@Z_Acl|-SGDN_p9IhT~s9Hpd^Ce1Wymhzta_s6r|=XuuqKI^&fpSAYFADnaT zbN1ff;WK!psgOrigD_`bHs(z!K%Mh>sFppA+&=Of24;^zOTr$;?7Mx(igQFHyQNc#=%j@tF6U{>3dO2+ys?A>f zQL4NIf1cZg3toT2_4CxwZ;Uxv>lcp9&})>F^T5I2;}{;Bjh1C8xFT>n{^@wp5|KupOaq0pr$5l_wR>K>;agT?gxz_QBe7+k2fWCGUm7y z!S^^m@E7cWuFe>6eU$_p(h~|K?O}1(NC@y8fe*W+vHwpsjQOz-AW8@}{d?f%lNxAy zxCYKANTAD(MeyC}1-vqR3*GM?fM>Wa&hT^sEv;C1sSpTS8xf9QaK`;nEyK+ro6fc1`(IwuzU+xG@gX}hcm$E#B+>pJ_hjc zEUIR3HFLf;-n=1$4^^}wT2h^u@+$FjYd@$)K7_$FF=+Tb7EkykASJGbO-WDTeCb>4 zSTvF}?%9Z*Uk%aepa&jqord41uSe^0Eqs0EGwv0K|}TRKcLzmSoN3Oql%09Ob=%j2Wv&RG(bMl`U@MbDtXye0s%cfQ-khgE_cJ zrW6k(Tm(fAK>vd}*uDGyS@%zbBbhlc z^fVBbCMUrJkzS7qFJpTW)0SZOYwT>5-EcSHVxLlEeCRIJ^WlP zi#ztx@JZn!)OGa1>+x;yO@9IoJ~9I<(YcWJeF?m7oCDt#qj30Z6K`PQLHOVpiADxS z7$Y*k_3F1{-}nkRA0&#?Z~DSVuHN5JQ;SCIHFC$co*Xm(8n&KN0Rp56g4-M??NAK{|mYJeqp)_7QZw8VZ5<&h~ z97HWT4g-q?FjzGoO8R*qKT8LH_bK7f)AR7-@&{O3cnwP2ufjsZbI>!Y3LcHLL@DtI zpqD)7O6f1aYF|Gz4ZGmhQ=D(r*K{~r>I_FM*FnwxmAImO3e>%92C?F$sBqsNg->Kr zvttD+!X^mPkB=GR&>QbwY=;EHKWw7?sNYvSI7G~_f1D&@ekzSb(Z2uv2bl3&!sWg-en1+h4 z-hi=zI_8lWP-uRHO}QR;Yxpu(^U*=yz=^0kAc>JZmN+*?2w5L*!TQL97~j-P%N0jy?wqN!$c11esO)XsL5!VIt4wZeFXCtG>%?h z!S%;`K%vYMBIs&xnJI>a@8`gUs5y`soB|Qgb%Ev1tN`CG*s!1hmi{(Fk-*tda%n!Q z9Vv!SRX<_d-V#W3y3f^((}A9s3J;PPSV@v0gpt774k;+$E8CcbKz$2h>Rz;&m?eei<%{V~(AHDVcvj zO#UL&ddlJ9)rVoHx-Gs5NP*TQU9386fFHb-ac_(fGTLeI!ty3G&OZxZP5t4|8h;#Y zR0E~-K`1zGkCr`~afF-+c6qNw+paPAP~#8CteOwDq1S+a{X2Ythww5W7P1{KLPDTB zSXexU8MVW3YiKlvdxv8WR~KA$aus%S80lBeqi{Uk4rfEfP~jzq&Efi_eHI^JI@d36 zJt>Vlx+UPrYDvs*ItGd}7Q(f%qp)e|Q{Juw4JUa_Z)8pxfgN3jGc&{T7ghs@EO7nb9jqu zVi%3%&OLC@wQe7f-%-qf0-en=dIRQjS0dj!%( z8=~N4D%_O-ziA-lmthv2C8;n8nWJ; zf!e2|;H!%v?77;=ofQ+{mW484nm#lbJ>@C2edC=z-3M!S*F)Gi4y#FTg}_aXkki3o zA-Epi@Gm0(uXE7)(F(RL_yZ2hzk#&FQ&<8mu<*x`?vD=S zfoSZ6*$cSZ?Z6|jy;}@lZ92eK*B+eq?1w)b*7%ucJPfvcgB{z0Ae6&uc>BgcZlWLB zM_R##xzq89<|pu~JqgV+`=Dfs0;n9ijAtH8aP_-LXmc(B?}3qcAoUpN7+7M%gY^(V zS|G`DD)Q>KU_+!Cc3VhcVu>0W?YavOpbvVko`|R{1b-_&B=HwShBQpTXL4Et29wY%1J==ZWH_aS_7YxCrcLrGZQ3kz6sN$-S zR@hL`gmE)spl9J|JS05|la;36I-nnZ#&FS6C+jjRv@}u4JW$y z;i^ahF8ghZH+6;h?E4Uh;SR-){2L&>cqNY6^cEW8yWsH3GcYt=4DV_jg7C~Lu&ngN zaebpu;q5l`e0&zF8t!89-dphcQv$YkJOHaZOYl)Fg-;DlF>;kE?tg2CGp-8Y+TeHn&&PU6Q&A>7U_e^ z{6?6r_XeEJ(qPMtEN)Ld1e1ccLj0I;xVOm&4lWkKN87F8YC#^z?`EOmZV7x}`2||7 zbb#9840gj)VO$;pY*WPJ=Dj?n*O5?uNET&oalHuUDa;Qu!jS8!;Hp#%E1H}@u`3=- z2WsK$i|KGaVmWjd`-8@6U2xgA0=mYmh0T>EuvS?S*H$b9?>2Q*{jnZ4v7dn^1x0VO;HyM1Ed4qefr}sShw^Y#O%~)^UIG1#EQs8GhBsllC5Dfa#ofg_ zVF~xHMLtP}m0W!DvLhST=ElM8^G0xEQVgDR700ypdoVKnDR907Fh{Wg4sGdzw?0YG zk{5<87ni`7(*rQpMIPeb>yqcAu(5*~g|0T=NRs51Wv zjG&zGlg(DhX0wpBJPXrK&c;87a^Yve7(8-Q60f5o-sf_w=CmIiCnOfP6|2Fv(y^Eo z@Ey+e?}NSZ#jrzF3;Io$;MJDP&~_lW2}NZ6tm!N&PntriiW^19A48&7uWU}U~NDV#;{zS$LTzL zbh!gm&qDYyCJPVWHUy0dF;rw0r8dE_LNAGII8SLosyc{$v^ zts4^TDj>w>9*pST31U*+V7*lX4@Hl|6(jdyLsSlAO-#X=v(9k17#nob6@b^3@z_33 z9XFkN4G*kEk$?RgjGvncV`lB=nLXSF5jxI(xMW+fzH z8f}C>pL_+6SP6Xazzudyzm3vi9@rDu2&q9F`(%&Tjay*U&AZ^(mx>o& z7GQsLI7W@6u`^*l{!z6+FF$wm>l%$Gav$R1q{k3GCI%%B?8e@Un{cku3p^h21l~(3 z;9Y?lTJFCD*72Wl(eNs$GR6F?h{Ouv!_6`%2=` zQBw^Kt3^?%bQ(tYw!-UHL!8n*7t@WGp2Y2W0gZ|VS z_#80~_a3pss?X9Ga6AJ<8qPpP$YxA>8;|Ghba23S2+VcWu{%l@bv#F6t86n|KXwj_ z9In9mb^4eGGjN+KA7_-_#%RNfU}aPS(Jg18qvH~!f9%KR1zzyYL>zlLuT;&PJD6!1 zkMVU+(f{E{^p0DHGH+i&x4swJzMX=}z4h=e|1+Faxdu6-Ps4K$airEv#W!2WqrEDF zbB&LKr)wvkqsE|0a}BOZd;|%dQRtg!h)T>dJX{foac?zo{Q&njT;F}%xj>{dx|G0`>J5##`mz&F&jp%T>@rayYRA{1HPxU z@Y!Z{Jn?lR5{ovFZy$?(<{hx6EEwJH#)6{f1dN$86+iBrgq7Nd&|q;Q=svsyKRYU5 zl5IH5%PPV2vZ-8rD}v)4%TVk|ERIhz#>f?w__jb67xs8!+tE~5k*kS@jt1EC^a8}K ztcGm6LC`FWhKtC+8eIdtDmw<%k8i{eQyEyRn1yr5dl(tyk6Xunf{#iQv1k5RywRv?8yR)6`SGJDOm`4E)OQn2Y8W;HjZC94~A0}!PLnFQaFs& zh>JAzHf)D=f!}#u9vTp-m=B7Hm!P5g$(;l2!6XCo?3JGTG|*~ z_l(7Hj?u8Nf`NSj5fGosafgC-K+A^!c+rvwM_uN@iyR#kKAsFo+&VPoV$tRSH`u;) z6AaCIz+2F|8<$sn1)CTi9MDJrCCeu;gJeU|&H*^}c_nhA{XJSQ4*#~&u2{{c4l&G4$}5bV6CflZFSaE#_KFY*~smBMk5 zRDCci^foUq=nNE}cfkC<*_idp9B1u6h+p1(fVKmMxaF-ETunU<(WM-Yf#X`v{pAc# zY>tBz7yr(BnFUj$&VudhJ78hD1HU)ML#?ofhc4HVjVB zzQCydU9e;8OW1CFi&r%7Gw4JuhWd$aP`8H%ZX!o`+IC~HFy|WZ&MCp&Pwp^t8Xwvc zmO=BNEoOmaRZg$V$9CyB67e5V;UsXW;Jq}}bt^x|RcR<1Yk+>q>3I=Og z=-7H1l*FsxK(HyEnmi89<%bDw z7|w)Q>@!%~rwPj=Yhi)M4LIn=gHb1~!6x7^IO&MP#lApj@a_ax)m)frr;3gp^WnV2 zY%C86hXbF2CPrFz+~T(@cv#Kyu7Ree4#6-y|V|uWfD-O z`4Q||1ibmS=@5{28zSy%;Ucd$kiTCNb&n-OzIzJrMvR2;3||Ow=kQ<5GDyrY2a6|x z5V3rSw=6UXe8LuT+=_C@x}b)eUU;Ut6_ri&9?jZPe2;ytF_{PK+IKyhV z_!i+W{ei2>iHrY^{($AbL4QDGhKkc)_fXMiJWoPIMC7mG?jp{8lab+m{4ZZ4L~KNs zZU|f%61m(oXlcY!Q*)k!E&rcrAjk(>u}@C7vo~|DGuO2=+2QJ$bVF?gHD`J*o8WYU ziFhJlrA)6f^7p<89Ks(F%|1EyTX7o|Z@~E!%UtKQYH3!~uZNl_@q&KT6HWVm*hm*I zkfB@8oFe;PFJPaCl`+Zdma_{N{Um?-meZepzdv20SW3Aam!LhbiPPQ_McHb-NIGWo z3Fh<2Y?i%0nm)VuB2{UBN(C0Y50of;_oM%q z?g>)C)Q`p_Lr{!$Ww)@dLl1w4w4m-6E%cbc`LE+_GFj{(nvVQ|4pK5i?Q)cz^4_H8BBXw`(!x zjl7GVN88are*xY-IFWoAXG>g;W@6@UCE};9M&dXw`^U{;#BQb+DYMrkw|$aPwNHxV zyer{&@p1Uq{BH<4mHc<+AO8*W|4-K+`G@N-@{X=Bv;Vg6V#ZchbX7lVmOF>fm#gM$ zu89}kll&}PtEd8LL(xiv3i_+?H2kF+*I4W!{pWm`u zU-)2>A8Y3KktI=Sv`v5sKl`1Lu+iYS@a0%3;R{unhFcTn@XrUB2`euPgyk`t_@_@b zGV4!zHFRVL(_4RdHcU$X$PfN;kZ&)l(9l$HOqe5al%Bt1x==-`g}P8DV>M#SH+IR$ z4eT0OX{%UMQ7d-nGCk*YEM2Og!DpSE*@b5>)82rV0O8OK{6 z`M;~h_>OJzR{5GA*!KYk_&?-F^AARwTCL66#kYDbN8iv`N~;O%*$ul_&~k|*Xos6Q zLZQ-RzOahor--Z2gL23D3#KKr2T5pyP-7l{nf?#HOOS!pcZs=tcO~Q-yX_Y0wFNg! z={UjG*&h+U$q=*pxwD<$`=OVfB4ODuBXgfnMp2L65W1B=Cinw?;`(G7)jipBOCtCp z-D~(~6!!>Sk1yfNeR{+MCmj{aQbkn!K5wf@3NpeqZ`bh^E*=p6G*3XS`QsUlY%QzF zB3I}=pKJMdEeD0&8kSbf&oZG4dxgJcUk?9T%yssHaT-6j;)u{gfP&AJ$^ZD0&Q4Me8d+zTk z&z@>a5N`KB$)6c3XJxb6mT!U=sI(AhIK6O~GF`_LZo0NgDB%^)Dy+6)gA^6`z2;7A z?=ilW-S&Wn6_cHa8oRZzs2ITP~zwme%vSyBp3FPNjB(XKUWX4+f}pK;@m`j zE<2u@x+b6gYyB^G{81w!&h5Y4_}}cm)W2c>FuQ&Z-1hO z8m<$^tnZZEn+D1zafpi7lcc|PpP+WFaHgVnf2Ne{UQ)pivQd8X56=7PJx;jul4>1w zhZ;8gMGXWN5UUp-$)wUg>d4gRRCJ6q9j5Y?avxBom!wuuD-}fPr>Sen`Xgd=pwvss zB~*%jb6=0tAOB8`tLvvWdo)u+rdO$jtrGOs#}f3VHW_+VRXbJnT!b!beNENwU61i^ z?s2}*zSN}=FQ~_Z{gh)y5#@5~5B2S@py>P&bdv31(TX;vuE zrFXwmUk^&t&M$|lJJIK;wowAAONONi)1~PF4+;9Uvnc)R-gm0r>o&2PB~MpsouU-B z{-(-fB2B7fatu(I=yak@xL0WukP0Do^}QDPJlhiO#=> zbx0reJn9$qJVKjJpD|2LQ&**{&a>37cO&W4^_z(Q6lq$?;w=?ELX_Sx$%fP&`b0fQ z|3wvUXr)S|J1EobsrHsDy1Y^o)KH zI_H%-y?tLH6?9RSKII)xuJh&T$xI(*<)uJ3>gkYm&XRO_>@c;!kfn0ngp_``6#YC=_?7V@LkRz^~7pAb@@#j6`1##()K@1HFk;6V0kO=2gMRv|L66m#Korn zDfZ;#x41R?&*E2$Y5(y2{HND9`-j&L%k1PYde+R3nXpm#*IxF?I{&l+H!XjS|KDDQ z|79-C9c(TBP8@F-u!UCmlt4RdNcz`a`djGU`**I-JEYhftg|CSx3<)(zTSS{It!MLGg!G8c zQWiGX(`Tn(FM!M%(HWelEGr)l(vYBa9T<}2)#*2%~CRg^(HR!T!`tA4|&nN zkgN*vCc^y1WCo>A%6+}a8Gk?G^kNBlFziQcj`|SE9$(^9yO@k09Y~gZSVT;hEF^cX zc#;$}Bc;>4h)$so*{0}B^woXIE{WMB{?S|#bH$saB`+o~D^1B-cOTNd!J7o%G$HCc z77-h*Ipm~+582%9Muu4*;`h^&M7>!=JX{0Fe3Q8(*2|SFQ(8h+m(3?NbKE%n_W&Xs zm_;Vfa3HFA^NIZR#iaAu0-~SnOC&UwkiXWv?5t-=e`o&x9r@!wU4L8-^^ewH`uhg< zuQ{;X+_3m>)GsXlY5w$j|8$0N+mF@X*>?X!LUP!9q2N6$ zD^LiQq|PPYr?QqyvU7*4sHc^DpYe)P#1YE9u#x>inbeiPWLhJLt(`=5%mO61|Mm+HQ9y z%&dF)n0VifT9WmeiR2Zc*4SOtye1J^+FM#^|K~YtG>XgHG~1{-^B%JLgr(MGJ1~uu zcl}mse7%S1S%JsT<7CxhOIG}*BpWnoH$6g5oz>|OvO(p&%uC4_=CJD{^0NGppy-~v zfI2-y?6;QDBTg9;^Q}Y7Nn?hwa~R7mw7EpDO)wOu4Dp4$S(3t>1xx5e@nV*JdXV|x zb(+a*|0y`-w~$`Gv5}frSVqbJl3}gWH5i>opV+UXbNPeX67=bZhxvXTU9{5k)%@{4 zBxu7|P8j5+$q}W<9;d{;q;F+p$Xaz;5UZSYiEBc8}RWJQT z!(Y76|69)}V0IT(UoGo#5tkb;_(|4&xMZf%&l^n4hylRM=h|C~TqA*-1Ma z*)YXrtVHEkW?0XV*%Y@>@OJTj`kSFF{j4sJxo@h@+6>=f8lHtP`!4=uExRb;x%pDU zlM`h58eZA#?~pNq?%l48hx<-~@5@=+C+>_#^e!el{wNh-ca&NiX~cgTv_Qz;Tg|R( zoGDa4swMm>Z6oZzx3-?Nxd?7wHMPtK=9KqDJSdhlx5NcxD>-yF<4`$CjcRJhf z0e!YpigxhpV-i)~P@~4ylGygWg0#B5xcSX|_I=19=8pGsLF3*YYJ5v0^=7jwZ7aK< zm1-WvUnaAWHOLxZeQx$K=1bR7m%dpF#`>=%LfwM8H2wXQ*SkqWsuybP` zWq3$HOD(*`CU=Li>ojMv`{s2sIbTE=ud2g>gZ0^htxG-#M!BR=f#$Wy8R{_ed%Bn* zx$A<<){?@lLL0^*x}H6A*Mgm$j9gtqn(7XpMNJUDC}{JKAvCE-u+g{rg*l{M;@J}N|we^&OY<0Z*HFS zrY{Qg#;Wz~<2nuU}%s1)de=3C~#e>{Fh{#+ITkW#C}xnr`TuRGuiHYhuPT07ucKCBZY%!g|x!~Nnt~UEHUFXF|Iq* zs7cFqQr|s)Q89LHgkSrWao#YBy}afG+vM|$9(vf%UU^+j>rIs5hm{?n>qNdX{jbiD zK0y#UsH8}@?^C7<`?t~pPebQKHh=eL`X zmQPjmRWgF;csBoKA(JnCQIH-XM<=zHP~U>*(r>J^g@1y6&@zw2g_BlaW*>geVApB6 z(2Z*k)gOqdAwipuf%qC7D#7a|^JwZbK}p?HCi#6V{c!Lc+c3dQ7+>^(9U-_zJ(%3Z z)|{l6CQnnwYy1k8V=?y7zK{ioOiW$Fa zEUoDEjU=@tG50QPty_OxLvZzx4-+}HOt4Pgmx@{NnXFlzOf5NYNIA{BObaL8pp|BJ z(E%UR+2gAU=yRhKsSJ@R)C>7vWa!XnruzcJtjV+_ciNlCm4SE6@y84JPoJi^i7L6B(6@y`Pj$VOjlh6kMj|F2u>(Nc0MK62S zdN_zqQ6IxEI9p0>YS_%0iAyp`-k+(&`{zipuoDv=8nF8lwCg`V6JrXEY0AbVo|@vT zKsFt$WIuj%W^PrLuxs-oEMhmVV_yU(5TjYK0$CYrO0L;R(AIUCnJ4E*>%1S!rh2cS zcF#V++HM&~UZ{l7(q1F?2EeW7T2xJ zPiI-S&`qDddfJTIUo?&H!=wrI9UR%t*>OS_?E!Y_OfR8D;Aj$HpT{(C&vJsIGE=el z3!^g4gs#fG%=9h3L55fDXF1so%B<0W?thzGyU4hjcK6s#ulm+Nept?{FD!^8`r{tb z5ALT?EuyuQwD~kv_p}K+MKOmRmKV}h?`ueJ2)7;voIIIF>o_bVuE$sLXm5 zUp;#JjD6I?8G~f=(&TeBr!36ROtbJCCj@vm!EK?mp(c*n7`AXr6eNU z`CIHfi1x2~>O02`eJNf*Pp!F60-MC>+zaJQk9;txNl0f;i>mO)4k+=bc#P#AQ2j^^ zNsZvk?tTSv>oUoL7BfmKj`L%UI!yLlT){kUyOsBOM%0d)W?>P1V}$dB2NP z7|vpr)k%^?s-FdcZ>j|?NgWhzKdYItScU8I}CyrUL$dde4wiCubp2-gq@c8p1 zB={HP9@FK!8tKs=&8T}rlPS~BLEL^@z$~>JAJ5&P+dw3l4K>9o-4lgOqz-RTRXF4)+ zeFgMTf-1XOtCIP(b2;N!sZ0lbkswD+W3b=vH2v|g41K?SDQmxY9HUnLLvVUb5WT8m zuduE08XMZTUzl#Xn=0+xAe{L;S@0w@mf2~LMI?`$WvAYM!>AXP)5_nZ>4hWB>5}Q6 z1qmmb_?Kj2_!kyE=1a<|2syu9e*XNag5N7t>4h(JC|^}o*cG*#k>d?Bul9>kPnlk3 zo@FgPqU|{AUo=X%F)Eo|x>lPyq3FhH&yHmhW_U4Q8tMeCA2w6h`5DyGie&bOT_*L_ zvyhq>63y3N_*-~Ea;EU9ZND(1_z(N)4lBHL>LA76D96s4vkF>%<}xyNXUL-YM(n<2 z9n59P6-;#Qqq-fV3WTBlcEWdU0-?jLGP-hTkI+lJUJzwm&txj9Fm69y3WCM8*zKIR zOkDL>hV}c*jBpDVW~A!zR~kw3V@tB=WdXYU>g@BhRhT9<=yQaWUF4dXX4@$-r4ABm zRv}1`Yh{vmDl&dY$I#7<2ZayjY74tIWeQKDECv<&wnY^lMWcK{JL8{@8b2XxXVtJ11lb^E^-1SJUHInO7oAtNvVy zDf_@Emq@dnGS*CdYdSmEe*!h}#v!4ld@4J`p-yk4l`;mqV5pKUmRBrZ=;U#6hCUBo^S??+T8@B^Or+8hZSm!(Iuvh^N4HfFZ4ON=g7cL+w9#tAtX=C+;#N22 zTVBKKD{o;zktPlnDWj0n6^>2Zhu0q$f>MJXrnr{Eq?q%NnioluQVtL;XK~WAB8Ma^ zZ6JwvcM^+~z37dBctP$w?`Etz?mc14;V_TF6HY&^y&?qyHmQ*L7G~r|xdG{vawnDL zQl$Nc1(`TN;pH#ukhgp_FNnijU8hID8vit?X|w=e6AJEp6=Ir*I&s+Ki%0Y|h+1SF zeheAH{^w(Hb*v1U&+*}nJys3#HecXfTJ6PYMQVYAvk~-{9Kh9m<#=1w6FU~4#@M1v z9Iuy)Wip3AmeZ~%npDQC{yVO_5=CiRM4CA274#}!Jy04cqT=KEZgu5 ze;$+}bpsOk<)|o5UXs9bT%dxhW{m{H$H{O@+ZkS_MM7_o0H?1Xz@X4l9AhI+YCksO zlgmx$@LmrS;v{g~;V-zQerIrsegKiiaggqt3OZ({#E7QJ@aSi_%x*fFU86x< zB1V(2Ob-}NUWbcg(uR%@d3ha@_rl4glYS}@HWJahPt>+%)kbm>2Hr_3+hqaF#*ez z_n@^2hrwR;0yevr^Q_YnQ2$&MJbCvUqBe7ysdk58nz;v|i$chV&O2Cgdj1pK*G8+Onsa42gP?ESGEjLtm4rK87_s_sxm}r6K>-6sflFAs*z-e z%N#Ogo&`o(-a`q^K;D+06%aZo4m!&AkUr%DZ&H>NR9Nl8u<&9$S2-7rl^ResKN*`= zX5x3|1*}{B0epXtg64*Gs63g|?Na^-b@JyxMogU3FLoz2+cuINvm}YAO)_EUt|SxA zY$tX-=P_rwIo7gE;K9a5th2ZcxlM$_zIQ^>cM+WVzL>b#wv)qi7Lo^Hy+m<;K8fq> zB<+(P;0?P<{H*bNE`Xk24|o}Or-E9rJXDyC1|9Y&Zk(QgLVag^P?dwh&-URaPRrx| zUmBa^Z$sbMUQ5YoJHYAGQQo_jaZo<*A}`>k2uvss=6nvq@NmsfkahIOGn~$NXR$Tr z{NOaFui4|OtD|`Af|H!iZZj`iPYp!#t9Zv|sRNl9hb1?TW9(f+9PTefm!JTQ7@LZJ zLQleri!4Y_U&}jCHI{pqOrXh_(*iqh3Nk^Su$25lwR%ZXpmZ1)jUGd09uXt&e-5H# zlNCM;or01dGC(ooJ9^apg#6MJ?03|~PopNHhVpCT$Cy&T401@HF;ESod&t6OHOgqi zMckq?mfT*qlqc^hiDe#|z+Xn|YlODk7`dmk;Y#E}lWHa6?9YN&JKE>qsGGyG$ zVd%M42d{a#yr0oBSh3OszEzb%-sDwKR~rlOJ`*qZ-=T)r+o_EsROB(g@f3`Ir+_yPYohdMI_@|4Z2Ko5(vK{bV7h>Jja*Wb(L=g^GwwBJtmU{)5FY^^d zIj!mQyiVS_OO|+H<3cz@zksWp=AxKH4akYDyb;rG!a}8 ztCsKLeGjrh1+BTzbN>c-sYSr&by*N%Mw1&8Y{`y=rMTpaHMv79NcPJ~M8kUtTEEZ3 zocG&!lQiFfPw;4X^K}gzDxC%i?q<*t(v6~hPcVWxgaK_LwhPaR?Sf~vy&!kL0$yt8a$H6ova&0kbXds{QhJmu{$ohCR_r0Y8gV$PZyS1e z_3}Q|L(jeYAx$z1c71dvw@fOC`4wgI{>XVE^2LXIDmqN|eLIZSVMW-k zKbgm)-os*ZQTWu63a1{4z*SEf*xxBYllkrFzu6c^C*DS_ZG|Xe-hfLFs$p#JNF2-Y zQN+h_+~c@iu>5Hs*bk&YX?F?iak3+GM~0DT$GeyyA3;|4(4=L40C_)DgOaPx;7aXs zUV5+*j!Rh#28+s}xXugupX>z@D>ag6uS*P%a*^O^Od~z_ZRf@E)DX zbIR360}D^ktgV9|o$)ZlX+UDI0y#P1BUZ_#;`h6QsPa*p6s)*`uI^5__ue0f)bIv6 zI|-)=tHE)X4jwWS$E4LGP{ZsPIbGI7ObTs?-G__heC~d7V8sc-d+-pCZ;~QTHMYE@ zIVqr!QpCHvPYOO=P=^uwCcy8#kytJ3iz_%y(0BXYu_!tcYkX#4A;(4S=vof@m?gZj zsX82I-WZlJ6_B>r25en?;kal&+HI60omaNu*FIIUu|kx{`~1dQ?V}mp$xAj zGcn)pAUu~>;P|tbU{UB}$ngv&&kvm>70vH(a#Rgjpb|~29vvlHN>1bKu2^h;Ucd{K zQNqJZtwGnj9G3iWhs&2k01Em!j__-Yp<*$r_A|;gjUe+>A7PK88}7f(=`h=m0gtgM zX!VBEVEn>q2Y5EZX_Ys?m)Jp!icXQ8=Vp=_Lv`fO!4NWUZ64{nR)P+^Q&{>z8=g6* z;Nd&RK|V|ld*5+<(|2O{H8zDz%ezEG3YHRSvj@a|`d(7FimQVyJcmoCb3AnGINnN2 z9dsD21qY&Pf%^qA*CD7}euGn3BN9KHg3EgJN#o6a{5?^g*k>!?JxA=mE^0TL`g9cOkK1E3vW7AycFDiE&;baSjP1D`)KI&WRkf3tEd2->&dhehtQx z%G{crbrp7QIRNj(j)P0H8F6%VBlGq?!d=T2l7iyNpZu7}9x@7%@6jvq?JHsX3W4A1x$yQHs=k<|9^K`Hg{Ab-W`nb2(g2 zBKW8_!Q!n4rCjX86 zk!v6SZ}B((t^dijfB#wk^R$$N;J9cQ|7B1Sz4%=sGf8F#`{RR{;62$*&y&ofi$7stQxSNm29aj#ET6h;{okoyisrVO}|m5stb3m92h9 zQ#(dJ!Wn%^LjQ;Nn8dYX=`VVgbZCMoKQVYE)84Pg?8y#dT~l|_4U>*ByEUcgGxtwX z_D1o7t8~=A@Kd@w-`W1p{r~@#|8uQx5fSa6AIPh4B9G43qJ!gj;`3q|vHfrd?|4op z`n~;lJ1K(Ss_^nGGR*xbE{O2FDiDckZrd{QEyHUVL`Dt z*=MAU2F6-MafcI`Sab}J?g}O4?PYj=q$H6Hn?`PR407u+g2dj)B{H+mW6z}kvMfu3 zY?v=gQe@8)SD$dy*H)HtTA zgM|0LdiNpkZSVYz`QzZ9|J(Qf|K?9bF5eIyvNr4=;vX#J{;B}o%3HBejJuh?#{atl zq%C6pALs*mv0DJx;i9!X#{sC{vkmQwkH2eG{Q8CX~-j%gqU0KD8eHa7CZ|x z3j*dajW^8#EC{hMqb$w-wa;XFmt`7oclg(EcM<*TX8(g_vPs-2aErW%$Y10CRCc~E zZWLi0-}Gn>&K4u4LQ5%A`trJCcC#1LJ)~FDvq+nB>E#fyG$y&t-O~K>vRiKp+ECCp zLXAgWw$L}e5k#vm{122OLSFPmeQAqO`l2Gf6x3&uY%}vbn}Rv!c5gDDd7gRZo84#c zX1J7iLwU(-CV1yc1Jj?p{^)QL2vJ^A$e*FVh^~gd+uqr9cQ7t*ei6S%o4#IwwQLbS zidY7-kN-IMUbNs%We1owFni!aJ=9jf8k85OM&az}L1fn;hVNOwSn+Vbh+$$`9O)B;N2P!V-1P9`f)zY?!E1{)fEkOqIUJFmYSnO{c=czc5VHIooZ=N~l)?lc-bP z$E8}nPhg@>c@vTfJ2`BbsB^a4!`CoO)G2R&P%W487$)kJ*KVuua2dlyowD2NwbMC` z;QujG1Huw@%B!SRuhT2oFj1$x#94)J5tyh`9!!&*Z!~UjJbHv-s|u-!Jko?|K zo(D^!h$wZ#uJ1O>UaQ{b{;sdHx7TfU!D|J(dXDFLMmJ1L-*Q`!q}TM_e6F0c^bb9M zTiyF)57>IqVa~pM7`jO!2J(D+MkqRzhax zm}%IVCEGZ~HcADypfe}*x7#h7Wx0{zMiy$;M}yMecs3}TjfOL7Tx!Dxa8a?ujm263 z_M!Tmv%ywdA{3i8EA0d>)U5^0PG~cOn>jAp6dLVdv*XpSG+cq3+z?>cY*o5m(6m{G zo2Q^o$Rj;B4f)lte*N@tUeiPoE3BheZ!~ivDVGUNJFY$Le0KSL*vlu%p{O|=dx>S} zqZ9gK1m&w0c=iE@yS(FX<1P-IxE;LugQkfxk4vHFpR15T~%n|6am(_dQ2%@(4sfSZvdN?m|CEdXe;#@C4;U LTz{{NhqM0xvgE@) literal 0 HcmV?d00001 diff --git a/src/drl_pinball/train/output/ill_075L_seed43/target.npy b/src/drl_pinball/train/output/ill_075L_seed43/target.npy new file mode 120000 index 0000000..28401bc --- /dev/null +++ b/src/drl_pinball/train/output/ill_075L_seed43/target.npy @@ -0,0 +1 @@ +../../calibrations/ill_075L/target.npy \ No newline at end of file diff --git a/src/drl_pinball/train/output/ill_15L_seed43/best_vecnormalize.pkl b/src/drl_pinball/train/output/ill_15L_seed43/best_vecnormalize.pkl new file mode 100644 index 0000000000000000000000000000000000000000..5cf3d67202c85e893b9fd3cb0a75d5105b955b74 GIT binary patch literal 1779 zcmbVMZEO@p7{2S>wb%Aq(%KpW{6H+yf*h?7sI>0%BXH>9{is@hR9t57rrp)s-OKLY z!4+zH%11Ab2)O|hBN~(%KvH8Y6$Lqu2qwlLii$z%M-2)7sU|hr7>vHVcP%AtF}lg@ z$Gguw?>p~2&-6O?UCXyw7xn4}7Q%!Vuuj5~Li82hpeoC%;*F6YPn4MTR8&pIVX2!i z>S-szz~pC&)g)LCtEO%xDw}Yf`R%k!6?CG-upy}muSakY=2djXWd-X}RQ6gC-7BbD z7cyMQechiCRX#b{pVN|x-~#oAc4-$Ct-ED#7h_%~eE&2KZ9KuZKQ zs)R_07f4v$%xI;>0_)L;SB{1a32Pb#Ru8X{psMJG77ZGZTr8mlN+|m?#r(D%tko{C zY%aUMbO#gX&^)1TYW{6A;n4Aj2K%|JuGU-2XrY-e7jtGq zMZ6N>HLQeGnFXQ(_2A$X`G|#CorxZ?T&$el1qXB#n&^Q3n>oeB{|@o`%}KR01EHfH zo2@rJF)Y&6x5OgATEoI})VZt#-c#rkbl8JZzDH7LVZUMx3 zP1YH$nbq=IR8b_QiR%2HetFf5R=}ZPUG)Y>jl> z`Q?h|-Wo@*S7@>XA!N{yNGHt^VlQ&+q+$d*IBKLz(Dx?y-*M z;SYL-xt|AZOPBvX%3Zi`-;!$;ex8-n6J6!@CIASJPmYGpn*!v z%@XyT?qlNZG+z(mFw_qxR!^&Y5G~zu?(DiIwi6CTF(E#020zS<9Qs+|GrFWqUO>lZJ$ z%00?gaeMQ=;oiPm;IyhT)ZVk6JNh(gWGCJ~8GPxthVy?kovaSO*zm;T_pf=i=~EPU KR$3XNg7+WARist` literal 0 HcmV?d00001 diff --git a/src/drl_pinball/train/output/ill_15L_seed43/calibration.json b/src/drl_pinball/train/output/ill_15L_seed43/calibration.json new file mode 100644 index 0000000..fa81c1a --- /dev/null +++ b/src/drl_pinball/train/output/ill_15L_seed43/calibration.json @@ -0,0 +1,51 @@ +{ + "case": "ill_15L", + "scene": "illusion", + "target_diam": 1.5, + "grid": { + "nx": 2000, + "ny": 600 + }, + "config_path": "/home/frank14f/DynamisLab/configs/config_lbm_karman_2000x600.json", + "SI": 1200, + "FIFO_LEN": 150, + "CONV_LEN": 30, + "SENSOR_CC": 78.0, + "FORCE_SCALE": 0.0027, + "SENS_SCALE": 0.93, + "dtw_norm_scale": 0.355, + "SIM_BP": [ + 0.0, + 0.21, + 0.81, + 0.89, + 0.94, + 1.0 + ], + "SIM_VAL": [ + 0.0, + 0.1, + 0.35, + 0.7, + 0.85, + 1.0 + ], + "K_CD": 12.0, + "K_CL": 25.0, + "W_CD": 0.3, + "W_CL": 0.3, + "W_SIM": 0.4, + "FLOOR_CD": 0.1, + "FLOOR_CL": 0.1, + "FLOOR_SIM": 0.1, + "FLOOR_PENALTY": 0.05, + "ACTION_SCALE": 12.0, + "ACTION_BIAS": [ + 0.0, + 0.0, + 0.0 + ], + "U0": 0.01, + "RADIUS": 10.0, + "L0": 20.0 +} \ No newline at end of file diff --git a/src/drl_pinball/train/output/ill_15L_seed43/meta.json b/src/drl_pinball/train/output/ill_15L_seed43/meta.json new file mode 100644 index 0000000..b196ab0 --- /dev/null +++ b/src/drl_pinball/train/output/ill_15L_seed43/meta.json @@ -0,0 +1,13 @@ +{ + "case_name": "ill_15L", + "seed": 43, + "total_episodes": 500, + "best_reward": 0.6258453220129013, + "n_steps": 2048, + "batch_size": 64, + "n_epochs": 10, + "lr": 0.0003, + "config_path": "/home/frank14f/DynamisLab/configs/config_lbm_karman_2000x600.json", + "calibration_path": "calibrations/ill_15L/calibration.json", + "best_episode": 349 +} diff --git a/src/drl_pinball/train/output/ill_15L_seed43/models/best_model.zip b/src/drl_pinball/train/output/ill_15L_seed43/models/best_model.zip new file mode 100644 index 0000000000000000000000000000000000000000..e903f674ba9facd014f9f6f7b155a7e40b2a677e GIT binary patch literal 157807 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 z zbmypx_|Z25Pr~QI=F@o+e`z(g%6%v!J&v55=}aY5wmcn5a7+VUtheUZpo3 zS*Q$Bd=AE?zezu-ZY}yX7D^GOm{Jjkq;0j>wZ#V8Q#~-M_86{eM4)c^POO+_kD6^B z$kP0T286;nPM2N|^uo3fb77Bl$yc(x zY8X{h{elqx94b)=sL{*;v~64lA_h*T!2#7${kMdUI+Tb((hj*hKMQG5?JPR6-kiQo z{X&mknGTDPY8o`cmzI8+LCvy0pwHFgwEA-b9noP&^>vogvu9H9`0Nn6Ow#O6?=hpF zBef`TA3^`NXbM^EAiW%X4F{rq=^U48Iy$i&Mm;Xk{#gy!Uq@-@+h;L3IsqHUJ5i^L zmnq5CqWKFv=#-D1v~KDWI?-Sm{nNcaeQ>u2-7q?qel=02lk_&y7yX9PaJ&Dc-L*}) zH+vBMCVxpsIgh7P>NMzk`|Z?c<|+E2z>BtrmSK}q0$tl{1l8&((noPGuu8?7E^^L7 z?(B0YQ$9nLzn9|SqmyuWpNAd(?R1@?9{n-n5jHd$3i@G|7;)`0y)R!+-z9v;e<4!s zA1v|aV=U=vqDkA9_oG3b2o{-3HA>1mqz*Qsm8(o>*h*hIx3H7oyvBuYUgJ!YB>qEf z&$l%9@O~K7ub^F)<|0PYhTJ-HoZt2m>mD1@^=8HNWzrz@H=XRjG>rz$ zsKoveZ*hA^5skmSoi4tUM^i)JVu4jWEVG(n>!BijelPWh3~gC*xOWGHH6R1N_y)he{JD zZSR6Xs*YH=q!aCJcL+WI-6oy&B4Oim9=)>;64R@XaJS(Jc}#%{@BJh!Dw8~P?h2jk zclc49L)JV29z3>3VMBLlOWN4#x!RBw|06fNGq6uI!4{=ma9-XU7mjKmHvcVId0i2s zwJ$;|%L}S8no#;DgTccX7-;f9Vsz?#@_8iC*Qq^kFQc`ZJ0Zy z(wQ8*kJ7l1^)PhSq64RXf!whJDr-7Z86A29lMDCUlzgz{7eWNHOUyPSu0GE(_DtWmo{ z7OmC8L#d8KFF$fLr~N&T)E+fvTrwtk>fMOA4tTWUteJM&mA?>*1^PF9XdC|pz^|mE;A28 zyUQO^>N68(UNBEKL|-ZlF+p22s+(LhmQAbYE;{b+cTWd`EzHwe~}gKC8{C2w>GW% z>wrFbN8nZbjr=oF!iiNIF!P8ReLLO&W%_}5WRin!vC(MVTMVl14lQdB%#YBgj?arR z=iOhZrO(37iUH{P#T6Gjwjpz@0&P|Mfc#$W_&eY2Mm-oyu~y;=ZIu-Y=UBXL#;JB$oq^F z^o%%$UU$t#Qc5^3WYy7n=ijK4J%ovL-J`P&5jZ9n+n#3NfZ_)jD#=mxeh9UjUO~@w zHK1Le>PXMX8EHWH1RYr8iL8khRNFEN8d7QUC(9R0n^Q5y|26I|pH6kEy)ol#HgXL{ zP|yCA*xjy2EdvkXz?oyXW9LuXI_#-c?-kVaW&X;-O$;?Eu zO34`mZ4YCB?f^6lvck9OV>q>88kzZOKh$^5Kv|R>4D>#dwfDDyr%p%LZ47c-;MLMS zXBxqg}>{3xc%DrBAp&o&*FLhCKXD-6O zGIW!)k~NizsP%TnFT2f93>txj0e8sHg@bS-FC06_bo5>EkwnDIgGs|M{QGlW%Hds+ zH)aLA@Rx>yLoskJRAK!z{%{@d$go3(UyNSxH zv+?++4wT26)1o;?a5NzXgDV!{VRSYT4)=!TZyji9%tX_K+0bvuf;h*KhAW=J8p$?o zXZjSIlpW~;{pZB5UojGEo{>vWi{WuT|^SJO9S8Iq%FFu z-0}LPHnMp$9_fdYg9kq0pSvgY-w4PkY9oej*HJOk59LyPIlXK=J_f~-=hZy$A~I#PD{e|Lv-QqHGCpYt z0u8TAUe7$z&&wEfF;nnsha-l`$75_rJ9+ZG6RN6HC7oy{#{Rj3IgXl`wdW*JJFf%> zcT*TF$j70PD?!c~4^M~k#||rc`SaCse^_h zV@?2B{8tHNaw{pB^_>i9`bW~csKamOO$;0}2U~2iiCeZGt_L2&ql1xTal7PK(J3eD zx2+LbA4-hfcaafoDkye7hN)o{Br{M4W8O$P$uT3WdO8b91#ifS$`;}|B^pDgs$qzu zJG@5gV3+$zvge_k*r|1blHmbZ#q>kP(F*eGP(Q38tFbJs3u5kEA~$!=L6DX?+Bat4 z)JYZeY*~$Ib$7^%xOx(zT8x3K-jfxFMRH81o;XMS#b%AcaPVj$kEiI4JYLon;)Pm+CPF5+gaCY2+elGm%0@LSUJm36wqt6&(aLJjD> zm$PA@%J5P{ovw6#h7EV)iTl)O*mmV)`i+G+u{Md+hiG7Wyc%r3-9X>vlgZUVikLJ) zf&i*@MMC35Tr;g8qpm+95fe&q@l6zHx2u?`C3#n-<&$keH%aKZp3q+w1K;_TFzO{~ z;*yRNa4s9hn>A3I+(^WAvC!nBFthnM{OqP<&jw%Y>n$hA_9Jn2colwM8ikN=N#wEH z5Oh9Pg8Scmr03Eep1$fdrzVH=9HLIsGY-P-a4^~?cEW(NX6*QN3JEq22;r%kw2YD%wcO@peW`RTJn?5NSFqo*rktw8}^{V6Bkug9Pd z|4iD~z98&Z01ghgj*0*M4{L7%m1EoWji*7SnN)^QXfQONdmqPnrO1#eMM$PZC?d)% zG)S|eS)-{mD5Bv!uT+Q(QD`tknaVsT3jNRfS?hhj`*wfN|6A{Kzt>vFsLvJeL0dR*)4LwZMoOgo%BN>Vm?jWRhg4aEFT$r8*-hOu= zY*j7F(hr~nxdIpQF2wf8kZHXbT>a}kbm*uP#pMQI*!&#*Je=_Ei(c3u{BPwK{YX}% z3|`$|3#s=Uag%r)lwPiZZO0_>oYX+9U8RIgPn>aOjy!2NEBHW8Sm1t5Nn#;=3Fo}p z3Iofd@zjMo@Yc-(e_Ts|+ZS&^g6J*CO|8SPt?S{H*+V$qwHJFvb-=~_+wr)-X^Wcj z4j!9Sq1BR=c&a=Ibyv&dF6A>|AJ#0q&E>GheJ5t6Md7f?vS=kEiTUy|7}uzT+owJP zt1$sMHO2yGR&mf^?+kCZt%5C!8knAR0{8rGgS*vK2w_T@o!4}r!txvV{aOvEh43?{ zuaF~qH?!eVf6V-v05#^GP|AH}j{Q)?)tmRhV}tnuCuJi{YS_=bH8O`AKDuyqkq0>V zP6O?00icyS1jnXELayFO*jd>Oa%R2prBWj^RN*|#SgH=v?5zP6 zw_#pQ2lK8&2gDN&!rS<{aOUAWMXeH4{2ncT$X@2 z3TK)Aok`3mJqK7`ED87au7;NJ70hI*Fh=9m5$1a%&+MJ*3&hhFCNH|n=yfPU8{-cO zGWCqhzE~!E@D}h-8V0kyWw7+t0eH0P6`ToM2|v{9V6ue#ZXcf z37uF0qc&&3g;#P|HSr+c3zWg)hxxFo)e*cEOPN%@zBXRIhOB;Rr%WWr(5f zu>#Lw47||Qz#efPC_Hh(edU#)I8+j^`s{?#^Agy-!5w`*$l{t%fQo_#uzI9BGSUsu z6n`BI6;n|!q7TSBgyXvQG5F5;CM2DSgT$C{)UegW8P?CBvENt0XRQG{zrTdHwWYAW z_C7Rf7DL3IAy^n#fSDbmainE296c@Q&}*V`e9jU`%(ufm0uTDVP#2sj+XS)KoM74K z`_S~%1-}KAK~KXKc-?;lTJGaO+zh^gziU?fGdTWk8zKyfQy2eN_H$4n7v0A`P zya8{e3gC{m7koSZ0TQ>qWLjo=fI^BFEZngS%BH(P>p)+K+&4qWy(EX=`H*=qEEgn> zw}D0XC#Ls$3(QnR=rw#jq{rQ1qFqawSI$#m*L5pw)DX@K$OcE_gU~xK2-;3u1l37y z@GX2J44eN7G+XW9d36K$Bp!ry3Wl)luo3h-yAHg|2cWOpLAYDI0(S1pg`ZFXt7`n= z=T|M*ns^3oKivcFiWb;fk_{^iZE={ZA6!~=6>@?W&kHLQ_ydQcD zexAJx#c_hYH_R1_>TXNRA7GP18of!nrZb(^4-`4Hy8cDs?EG zA*i#3X_=Y~#tW6f{6QcHxrks>aSju;d^*fIT@3BR=Dc2HafO4&4&%YI_ynx5b%ToZ7AE9_2pVd4!#xER(>$2kqd|_m01S19skp&gV;T#k+lY z(L5gSs%7Bk@G6Yzi6YJ}GNiyZ99=^c$c~lqWYRiQeD6J!SiWr+{93)p3z0WE9HTgO zwj`OV4dhaL9(4MKp|aF*+`f=U^Uvitb!sx6_&g2o-|9#9O}>G@W>aG8xE;%FwD6+W zb}VcP!pWK&N#$gLZ#gd&wH|%LrrHf;c|!u8tyqekr`C|xY!z~HsxsylEQb81c(7mg zmS%)r4^uOVg>3KW?|cbBxbhBB-HC2126j~LrR1U z#G$0%>puYnqb5O#&NV11d(EuSoB&!Ira+hNdU&>U1B9sr!oBPjI86E*jCoCA_n;EE zxoZS2ll;M4H8IBRLyaKq(-!#U^NuM}|HPb^+6C|5kH$hP!CqZo0G_-bsJkRV_cLLg zS#E|n!8TQX=nKsKxd^Prp9aV4tDwPVIHaY^!mW;Z&{HxRo3$!ngzs)R__!24kN61M zy+h&5ie7NkTHr<>@`9wk#$Z!a&*-*YXWAmxGhKGym=1$^;C@d62G>%Cw=H4d!+6+x zrG+{5^d_St*bMBWG#RVaL7<9~kbkn9d9yB_Y0hJzvO^CF^FJ^NYacRdS5%lC(;qU+ zT6iWssfcl0SI_uvYiE=r{J>hl0223XWVl_Xp!GuFi(d$1BrZ>Z0QWHF&iYSG$%tvp zh9d?{x91xM4%tD7#|fs&_$=cyTmo7?N&_0JgWbH7!W-!vGex-X_dL4J%w9SgA`{Ou zgV?>ycWs`TKf9Lk|GpSD`w051briF^L<3Gev4h!P1Ok(L2($Az1FJ80Gak0tLN-@J zfkU+m!X^rOOz{?&*2sa6vo~~qJk7{=>BGw5o$$rY0OFTBLdw%2c&=+ofzJCo z;ZaTk=xeG%`&$QC(sKn4zAb>WD};0LhZ9VgahJJfIT5ZGhQl-OOnA4v4$f~J3-rcD zsMyjAJ=O(-LaG{weVSqEEPn2~~y$SMmgV@RF20B*JkZ|yE={Lr`*W0eJdeYs$p@zqA% z>WTPyM_*JcS^+bM8=+73HyEH61brQzFh!$Af>T=vqkCBv4BQgnTdfk<9P?(vhD*Wx z9fx30f(95?zG23;T!4^X4ou$7tFUaHC3rv3gqOGTnGlOC@Z5-Cv{w~me9Xa8V=d!- zx{VoryN-GFK^Hb_p^79R;`cIGi>mW+n` zTjQCkjS0-E5_O2#kOI%)1anVW4ko0Hh0Qg6LE*AFlrYuI&eZ43T$|l6{O$k<`?UoM zFAC>HRt7UZpn+)(>11AZ$3R)@OmH!N%UtX=2!^{xg8!?2kmj7mydN0=&I5+S3&VXt zPYSx`WNT2-JIbu|QGgn)JecOI23AUu%*0RyP#SUydM}>@VP|6-#A64K+iYsI(wDg$fs9>9+`hIl#85o(p= z1iM~u2+0}`52-%{K5z%m`eUHC#tB^VXW;@bIkaD@4U?rJ;9G#OMr{f7sW8JCrynt` z^S6TNj2gT;Dha_&Pa)_2NW9}#&UgwuTS*s7FdEzgGv)WfqON?fUa1JaPhUWh?|3L3 zbs72!#@e@A4Z+u=4}=_?4$0%zqR-?rpnSz0ZV0g(cI$ehe9C$-x!A+R>wkl&0DnkZ zioDF94TR1S+%vHvbI8 z0cYeSPuFT2MbUp=~ z4Z0v;X(1%-dIyUP{2(`SKm2MRj$`LG!hyEYIOEVUI5giDo?{Rk*~r5=7ZWso-3N1@ z#lfezN^l7#xXoDLLO)ss!zPVEhdr`*j%NruakK~bz#S(d}{6k^cG3~;}d3PNFBd>ZWscg8P)bu+5r>>C}_A90ECS`Y$BHg!zL zufs6Ipf}uDJP2+cUkA_Riy*V`BGVM03^tFGVANM@_?qAhI=8!-G0#=tOP@;U8yo~n zQeHr!5ZCca?=|DH+8SnP*n;}iD{$Gr1ZIyJ4^zs7(0x-~e70*l_$nztSeOEKr=Nyv z*(z8ieGFtS`9aYWV`%vL3GP*m#iRRrpilNd;41Dw?y_O{*z+Q69d<^DNio2I%10Tk z9r{RAFMxe+4!npBgt2PRV7Y5OOj=a{4^?i1@1~!O-iAilXC4kNK8HZEGYvwj&q7@v zTO2Hs#cQWtGjTs3K<>kCm{g|)S3O7IIGY`?vo01=8>C?o^O(_JZw<$f>EW-r7hzTZ zJUE{G8eB84z^ye3`1pDdGz}^P&&s~|;Giq8wt`*$(#2crkW7p5ycypUJ`ML5M3@k3f z9XsW)T0ahR-M+(yiYKsr<0|Z4c^fY-kU+h84C>m(VAwqu^vnvwYqxbUv9B>snRyFa zW85)f!zrwNXNl|6??Fh&Kn&fx7+an^#kn_%FuiaZW*uLMt;KSr-{Syu+t3c);va$? zI}x>n8pH#42zu(kXYee^AEp({plG@+_WLD;xfUbgm+@T)SvUa~?>G4>2i?kuB;}g`JOaXP1GcZ554xXgR z;g>OfxLi{UkDBg+E&42KSFJ(A8e6FNIv5Lw3i|s^NzAhZ(YR+oPBK_)qc=So|;KACMS!-}a9_ zEL^rKOj<%h;*aJqLrVA|Cnx;++ebyhTEf+Pg}cX=mBwzan_P{}m?<`*f06^CUg>n{ zIJiq|kC<>?R_3%>;vww_*-$zxsI>Ibx>7oSxhoeRpUNi5j${w7d_}i7P33%zKhc@- zi+Ep?1}@b1Qc2^a1a4kdKX$g}7*@(DjTEcQ<-1MCa^rSR;Oqukushl{$+ti=UgC8f zKS-gV} z9T7?VLPdGrXRRzd+2RznGM&%Aeyqq}{P~!>5q_9G>}&h4{1fmirH@1}VW@@n|2Os% ze;a%FUzq=82VKxRdIuT!T$K!WyMTjd#9(i=F?cvO9$nIToX{PH6ZTpYsiQ)cQC}86 zx|L&zy9>e;Rnk5+5mzn9#j8vK?#$%yiS1O|L8U?sd>ocmYK7(E9$56_` ziRgR!l76mpaFmMyN$ul?RWccvJ9IQDbJRgMmqW-aI%7~+17eL2o|&hOzS}mU(|$i( zB;`e{JOa>OX#kG6^a15oT*GWj6%x{R2$h7IorhItVV-9%Y80D^P0}x5>Wm1Se6k#e z&F?_N>`^E#nS*5MSv(W}1W#!kK>wMsI94g1SX_Vjul;w>%H`pIGXD6#F#i8^|B-*V z{~F4NaOY|@xWgK~%Suk{6eYB!h~BKu5Y3yA$VNrSilW*-iFWF!TkeMvk!1E3u~g1t z(WXQCwqIAe-v(#nE>dflI<&Bl1IYpY569;T$WfoSmhjJ%~m6jQn)gPF} z*XN4F6&FTu=8FfiVPrGE@5@Y)YJ96m<$arY%z;_rq<(dx2zIQfHb$b%*xp(kpTCn$ z*z`ag=oBwn{P~u6z@T{UUTT%7s5xBZuw<8LxPKfKdpnCy%$Olgc%j1$iT^IDA>pEV zheEhVGro%slpYl4oRk(h*!L4(93WNpAy7kHJFrpQ_|3B{SgVeoQXIk$uAa$1PFA

    7g*t6#FW!mHWK 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 bM-a|pZ+ literal 0 HcmV?d00001 diff --git a/src/drl_pinball/train/output/ill_15L_seed43/target.npy b/src/drl_pinball/train/output/ill_15L_seed43/target.npy new file mode 120000 index 0000000..f536a06 --- /dev/null +++ b/src/drl_pinball/train/output/ill_15L_seed43/target.npy @@ -0,0 +1 @@ +../../calibrations/ill_15L/target.npy \ No newline at end of file diff --git a/src/drl_pinball/train/output/ill_1L_seed43/best_vecnormalize.pkl b/src/drl_pinball/train/output/ill_1L_seed43/best_vecnormalize.pkl new file mode 100644 index 0000000000000000000000000000000000000000..7bac72ecc77206f98b90ef0e79b66f4b46f4790f GIT binary patch literal 1779 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