From 7bcfd92d455896a0b3059223865d47cdd5d40bcd Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Fri, 16 Sep 2022 11:01:37 +0200 Subject: [PATCH] Registration fixes and improvements. --- src/dynamic_data/libraries/script_resolver.rs | 4 +- src/dynamic_data/models/battle.rs | 30 +++- src/dynamic_data/models/pokemon.rs | 12 ++ .../export_registry/dynamic_data/battle.rs | 20 +++ .../dynamic_data/battle_random.rs | 0 .../dynamic_data/battle_side.rs | 40 +++-- .../dynamic_data/choice_queue.rs | 0 .../dynamic_data/executing_move.rs | 0 .../export_registry/dynamic_data/hit_data.rs | 14 ++ .../export_registry/dynamic_data/party.rs | 0 .../export_registry/dynamic_data/pokemon.rs | 158 +++++++++++++++++- .../wasm/export_registry/mod.rs | 37 ++-- .../wasm/export_registry/static_data/item.rs | 0 .../wasm/export_registry/static_data/mod.rs | 11 +- .../wasm/script_function_cache.rs | 41 ++++- src/static_data/species_data/gender.rs | 1 + src/utils/string_key.rs | 11 +- tests/common/mod.rs | 2 +- tests/data/gen7_scripts.wasm | Bin 991082 -> 1105813 bytes tests/main.rs | 68 +++++++- 20 files changed, 397 insertions(+), 52 deletions(-) mode change 100644 => 100755 src/script_implementations/wasm/export_registry/dynamic_data/battle.rs mode change 100644 => 100755 src/script_implementations/wasm/export_registry/dynamic_data/battle_random.rs mode change 100644 => 100755 src/script_implementations/wasm/export_registry/dynamic_data/choice_queue.rs mode change 100644 => 100755 src/script_implementations/wasm/export_registry/dynamic_data/executing_move.rs mode change 100644 => 100755 src/script_implementations/wasm/export_registry/dynamic_data/hit_data.rs mode change 100644 => 100755 src/script_implementations/wasm/export_registry/dynamic_data/party.rs mode change 100644 => 100755 src/script_implementations/wasm/export_registry/static_data/item.rs diff --git a/src/dynamic_data/libraries/script_resolver.rs b/src/dynamic_data/libraries/script_resolver.rs index d403677..b5c452b 100755 --- a/src/dynamic_data/libraries/script_resolver.rs +++ b/src/dynamic_data/libraries/script_resolver.rs @@ -47,8 +47,10 @@ pub enum ScriptCategory { Side = 4, /// A script that can be attached to the entire battle. Battle = 5, + /// A special script for weather, for use on battles. + Weather = 6, /// A special script for held items. As they're part of a held item, they're attached to a Pokemon. - ItemBattleTrigger = 6, + ItemBattleTrigger = 7, } /// A basic empty script resolver, that always returns None. diff --git a/src/dynamic_data/models/battle.rs b/src/dynamic_data/models/battle.rs index f4112ea..f9fec84 100755 --- a/src/dynamic_data/models/battle.rs +++ b/src/dynamic_data/models/battle.rs @@ -11,12 +11,12 @@ use crate::dynamic_data::models::battle_party::BattleParty; use crate::dynamic_data::models::battle_random::BattleRandom; use crate::dynamic_data::models::battle_side::BattleSide; use crate::dynamic_data::models::pokemon::Pokemon; -use crate::dynamic_data::ChoiceQueue; use crate::dynamic_data::DynamicLibrary; use crate::dynamic_data::Script; use crate::dynamic_data::ScriptSet; use crate::dynamic_data::VolatileScriptsOwner; use crate::dynamic_data::{is_valid_target, ScriptWrapper}; +use crate::dynamic_data::{ChoiceQueue, ScriptContainer}; use crate::dynamic_data::{ScriptCategory, ScriptSource, ScriptSourceData}; use crate::{script_hook, PkmnResult, StringKey}; @@ -48,6 +48,8 @@ pub struct Battle { event_hook: EventHook, /// The index of the current turn. 0 until all choices current_turn: AtomicU32, + /// The current weather of the battle. + weather: ScriptContainer, /// All the volatile scripts attached to a Pokemon volatile_scripts: Arc, /// The time the last turn took to run. Defaults to 0. @@ -91,6 +93,7 @@ impl Battle { result: RwLock::new(BattleResult::Inconclusive), event_hook: Default::default(), current_turn: AtomicU32::new(0), + weather: Default::default(), volatile_scripts: Default::default(), last_turn_time: Default::default(), script_source_data: Default::default(), @@ -331,6 +334,30 @@ impl Battle { .store(time.num_nanoseconds().unwrap() as u64, Ordering::SeqCst); Ok(()) } + + /// Sets the current weather for the battle. If None is passed, this clears the weather. + pub fn set_weather(&self, weather: Option) { + if let Some(weather) = weather { + let script = self + .library() + .load_script(self.into(), ScriptCategory::Weather, &weather) + .unwrap() + .expect(format!("Couldn't find weather script by name {}", weather).as_str()); + self.weather.set(script); + } else { + self.weather.clear(); + } + } + + /// Gets the current weather of the battle. If no weather is present, this returns None. + pub fn weather_name(&self) -> Option { + if let Some(script) = self.weather.get() { + let lock = script.read(); + Some(lock.as_ref().unwrap().name().clone()) + } else { + None + } + } } impl VolatileScriptsOwner for Battle { @@ -353,6 +380,7 @@ impl ScriptSource for Battle { } fn get_own_scripts(&self, scripts: &mut Vec) { + scripts.push((&self.weather).into()); scripts.push((&self.volatile_scripts).into()); } diff --git a/src/dynamic_data/models/pokemon.rs b/src/dynamic_data/models/pokemon.rs index ac31fa0..4b3285d 100755 --- a/src/dynamic_data/models/pokemon.rs +++ b/src/dynamic_data/models/pokemon.rs @@ -282,6 +282,11 @@ impl Pokemon { pub fn weight(&self) -> f32 { self.weight.load(Ordering::Relaxed) } + /// Sets the weight of the Pokemon in kilograms. + pub fn set_weight(&self, weight: f32) { + self.weight.store(weight, Ordering::Relaxed) + } + /// The height of the Pokemon in meters. pub fn height(&self) -> f32 { self.height.load(Ordering::Relaxed) @@ -685,6 +690,11 @@ impl Pokemon { let move_data = self.library.static_data().moves().get(move_name).unwrap(); learned_moves[move_pos.unwrap()] = Some(Arc::new(LearnedMove::new(move_data, learn_method))); } + + /// Removes the current non-volatile status from the Pokemon. + pub fn clear_status(&self) { + self.status_script.clear() + } } /// The data of the Pokemon related to being in a battle. @@ -780,6 +790,8 @@ pub enum DamageSource { MoveDamage = 0, /// The damage is done by something else. Misc = 1, + /// The damage is done because of struggling. + Struggle = 2, } #[cfg(test)] diff --git a/src/script_implementations/wasm/export_registry/dynamic_data/battle.rs b/src/script_implementations/wasm/export_registry/dynamic_data/battle.rs old mode 100644 new mode 100755 index 5c05240..52d8512 --- a/src/script_implementations/wasm/export_registry/dynamic_data/battle.rs +++ b/src/script_implementations/wasm/export_registry/dynamic_data/battle.rs @@ -4,9 +4,17 @@ use crate::dynamic_data::{ use crate::script_implementations::wasm::export_registry::register; use crate::script_implementations::wasm::extern_ref::{ExternRef, VecExternRef}; use crate::script_implementations::wasm::script_resolver::WebAssemblyEnv; +use crate::StringKey; use wasmer::FunctionEnvMut; register! { + fn battle_get_pokemon_per_side( + env: FunctionEnvMut, + battle: ExternRef, + ) -> u8 { + battle.value_func(&env).unwrap().pokemon_per_side() + } + fn battle_get_parties( env: FunctionEnvMut, battle: ExternRef, @@ -47,6 +55,18 @@ register! { ExternRef::func_new(&env, battle.value_func(&env).unwrap().random()) } + fn battle_get_weather_name( + env: FunctionEnvMut, + battle: ExternRef, + ) -> ExternRef { + let weather = battle.value_func(&env).unwrap().weather_name(); + if let Some(weather) = weather { + ExternRef::func_new(&env, &weather) + } else { + ExternRef::null() + } + } + fn battle_find_party_for_pokemon( env: FunctionEnvMut, battle: ExternRef, diff --git a/src/script_implementations/wasm/export_registry/dynamic_data/battle_random.rs b/src/script_implementations/wasm/export_registry/dynamic_data/battle_random.rs old mode 100644 new mode 100755 diff --git a/src/script_implementations/wasm/export_registry/dynamic_data/battle_side.rs b/src/script_implementations/wasm/export_registry/dynamic_data/battle_side.rs index af5be68..cb2b98a 100755 --- a/src/script_implementations/wasm/export_registry/dynamic_data/battle_side.rs +++ b/src/script_implementations/wasm/export_registry/dynamic_data/battle_side.rs @@ -3,9 +3,9 @@ use crate::script_implementations::wasm::export_registry::register; use crate::script_implementations::wasm::extern_ref::ExternRef; use crate::script_implementations::wasm::script::WebAssemblyScript; use crate::script_implementations::wasm::script_resolver::WebAssemblyEnv; -use crate::{ScriptCategory, StringKey}; -use std::ffi::CString; -use wasmer::{FunctionEnvMut, Value}; +use crate::ScriptCategory; +use std::ffi::CStr; +use wasmer::FunctionEnvMut; register! { fn battleside_has_fled_battle( @@ -61,8 +61,8 @@ register! { name_ptr: u32 ) -> u32 { unsafe { - let c_name = CString::from_raw(env.data().data().get_raw_pointer(name_ptr)); - let script = side.value_func(&env).unwrap().add_volatile_script(&c_name.into()).unwrap(); + let c_name = CStr::from_ptr(env.data().data().get_raw_pointer(name_ptr)); + let script = side.value_func(&env).unwrap().add_volatile_script(&c_name.as_ref().into()).unwrap(); if let Some(script) = script { let script = script.get_as::(); script.get_wasm_pointer() @@ -78,19 +78,33 @@ register! { script_ptr: u32 ) -> u32 { let side = side.value_func(&env).unwrap(); - let name_ptr = env.data().data().exported_functions().get(&StringKey::new("script_get_name")).unwrap().call(&mut env.data().data().store_mut(), &[Value::I32(script_ptr as i32)]).unwrap().get(0).unwrap().i32().unwrap() as u32; unsafe{ - let name_ptr: CString = CString::from_raw(env.data().data().get_raw_pointer(name_ptr)); - let script = env.data().data().setup_script(script_ptr, ScriptCategory::Side, &name_ptr.into(), side.into()).unwrap(); + let env = env.data().data(); + let name_ptr = env.script_function_cache().script_get_name(&env).unwrap().call(&mut env.store_mut(), script_ptr).unwrap(); + let c_name: &CStr = CStr::from_ptr(env.get_raw_pointer(name_ptr)); + let script = env.setup_script(script_ptr, ScriptCategory::Side, &c_name.as_ref().into(), side.into()).unwrap(); + env.script_function_cache().dealloc_cstring(&env).unwrap().call(&mut env.store_mut(), name_ptr).unwrap(); + if let Some(script) = script { let script = side.add_volatile_script_with_script(script); - script.unwrap().unwrap().get_as::().get_wasm_pointer() + let s = script.as_ref().unwrap().as_ref().unwrap().get_as::(); + s.get_wasm_pointer() } else { 0 } } } + fn battleside_has_volatile( + env: FunctionEnvMut, + side: ExternRef, + name_ptr: u32 + ) -> u8 { + unsafe { + let c_name = CStr::from_ptr(env.data().data().get_raw_pointer(name_ptr)); + if side.value_func(&env).unwrap().has_volatile_script(&c_name.as_ref().into()) { 1 } else { 0 } + } + } fn battleside_get_volatile( env: FunctionEnvMut, @@ -98,8 +112,8 @@ register! { name_ptr: u32 ) -> u32 { unsafe { - let c_name = CString::from_raw(env.data().data().get_raw_pointer(name_ptr)); - let script = side.value_func(&env).unwrap().get_volatile_script(&c_name.into()); + let c_name = CStr::from_ptr(env.data().data().get_raw_pointer(name_ptr)); + let script = side.value_func(&env).unwrap().get_volatile_script(&c_name.as_ref().into()); if let Some(script) = script { let script = script.get_as::(); script.get_wasm_pointer() @@ -115,8 +129,8 @@ register! { name_ptr: u32 ) { unsafe { - let c_name = CString::from_raw(env.data().data().get_raw_pointer(name_ptr)); - side.value_func(&env).unwrap().remove_volatile_script(&c_name.into()); + let c_name = CStr::from_ptr(env.data().data().get_raw_pointer(name_ptr)); + side.value_func(&env).unwrap().remove_volatile_script(&c_name.as_ref().into()); } } diff --git a/src/script_implementations/wasm/export_registry/dynamic_data/choice_queue.rs b/src/script_implementations/wasm/export_registry/dynamic_data/choice_queue.rs old mode 100644 new mode 100755 diff --git a/src/script_implementations/wasm/export_registry/dynamic_data/executing_move.rs b/src/script_implementations/wasm/export_registry/dynamic_data/executing_move.rs old mode 100644 new mode 100755 diff --git a/src/script_implementations/wasm/export_registry/dynamic_data/hit_data.rs b/src/script_implementations/wasm/export_registry/dynamic_data/hit_data.rs old mode 100644 new mode 100755 index 44c36e7..b2e0026 --- a/src/script_implementations/wasm/export_registry/dynamic_data/hit_data.rs +++ b/src/script_implementations/wasm/export_registry/dynamic_data/hit_data.rs @@ -5,6 +5,20 @@ use crate::script_implementations::wasm::script_resolver::WebAssemblyEnv; use wasmer::FunctionEnvMut; register! { + fn hit_data_get_damage( + env: FunctionEnvMut, + hit: ExternRef, + ) -> u32 { + hit.value_func(&env).unwrap().damage() + } + + fn hit_data_is_critical( + env: FunctionEnvMut, + hit: ExternRef, + ) -> u8 { + if hit.value_func(&env).unwrap().is_critical() { 1 } else { 0 } + } + fn hit_data_fail( env: FunctionEnvMut, hit: ExternRef, diff --git a/src/script_implementations/wasm/export_registry/dynamic_data/party.rs b/src/script_implementations/wasm/export_registry/dynamic_data/party.rs old mode 100644 new mode 100755 diff --git a/src/script_implementations/wasm/export_registry/dynamic_data/pokemon.rs b/src/script_implementations/wasm/export_registry/dynamic_data/pokemon.rs index d6824a3..be9aabd 100755 --- a/src/script_implementations/wasm/export_registry/dynamic_data/pokemon.rs +++ b/src/script_implementations/wasm/export_registry/dynamic_data/pokemon.rs @@ -1,11 +1,14 @@ use std::mem::transmute; -use crate::dynamic_data::{Battle, DynamicLibrary, LearnedMove, Pokemon}; +use crate::dynamic_data::{Battle, DynamicLibrary, LearnedMove, Pokemon, VolatileScriptsOwner}; use crate::script_implementations::wasm::export_registry::register; use crate::script_implementations::wasm::extern_ref::ExternRef; +use crate::script_implementations::wasm::script::WebAssemblyScript; use crate::script_implementations::wasm::script_resolver::WebAssemblyEnv; use crate::static_data::{ClampedStatisticSet, Species}; use crate::static_data::{Item, StatisticSet}; +use crate::{ScriptCategory, StringKey}; +use std::ffi::{c_char, CStr}; use wasmer::FunctionEnvMut; register! { @@ -65,6 +68,38 @@ register! { ExternRef::func_new(&env, species) } + fn pokemon_get_weight( + env: FunctionEnvMut, + pokemon: ExternRef, + ) -> f32 { + pokemon.value_func(&env).unwrap().weight() + } + + fn pokemon_set_weight( + env: FunctionEnvMut, + pokemon: ExternRef, + weight: f32, + ) { + pokemon.value_func(&env).unwrap().set_weight(weight) + } + + + fn pokemon_get_height( + env: FunctionEnvMut, + pokemon: ExternRef, + ) -> f32 { + pokemon.value_func(&env).unwrap().height() + } + + fn pokemon_get_gender( + env: FunctionEnvMut, + pokemon: ExternRef, + ) -> u8 { + unsafe { + transmute(pokemon.value_func(&env).unwrap().gender()) + } + } + fn pokemon_damage( env: FunctionEnvMut, pokemon: ExternRef, @@ -118,14 +153,25 @@ register! { } } - fn pokemon_get_battle_side_index( + fn pokemon_get_battle_index( env: FunctionEnvMut, pokemon: ExternRef, ) -> u8 { if let Some(i) = pokemon.value_func(&env).unwrap().get_battle_index() { i } else { - 0 + 255 + } + } + + fn pokemon_get_battle_side_index( + env: FunctionEnvMut, + pokemon: ExternRef, + ) -> u8 { + if let Some(i) = pokemon.value_func(&env).unwrap().get_battle_side_index() { + i + } else { + 255 } } @@ -141,4 +187,110 @@ register! { } } + fn pokemon_has_held_item( + env: FunctionEnvMut, + pokemon: ExternRef, + name: u32 + ) -> u8 { + let name : *mut c_char = env.data().data().get_raw_pointer(name); + let name = unsafe { CStr::from_ptr(name) }; + let key = StringKey::new(&name.to_str().unwrap().clone()); + if pokemon.value_func(&env).unwrap().has_held_item(&key) { 1 } else { 0 } + } + + fn pokemon_heal( + env: FunctionEnvMut, + pokemon: ExternRef, + amount: u32, + allow_revive: u8 + ) -> u8 { + if pokemon.value_func(&env).unwrap().heal(amount, allow_revive == 1) { 1 } else { 0 } + } + + fn pokemon_clear_status( + env: FunctionEnvMut, + pokemon: ExternRef, + ) { + pokemon.value_func(&env).unwrap().clear_status() + } + + fn pokemon_add_volatile_by_name( + env: FunctionEnvMut, + pokemon: ExternRef, + name_ptr: u32 + ) -> u32 { + unsafe { + let c_name = CStr::from_ptr(env.data().data().get_raw_pointer(name_ptr)); + let script = pokemon.value_func(&env).unwrap().add_volatile_script(&c_name.as_ref().into()).unwrap(); + if let Some(script) = script { + let script = script.get_as::(); + script.get_wasm_pointer() + } else { + 0 + } + } + } + + fn pokemon_add_volatile( + env: FunctionEnvMut, + pokemon: ExternRef, + script_ptr: u32 + ) -> u32 { + let pokemon = pokemon.value_func(&env).unwrap(); + unsafe{ + let env = env.data().data(); + let name_ptr = env.script_function_cache().script_get_name(&env).unwrap().call(&mut env.store_mut(), script_ptr).unwrap(); + let c_name: &CStr = CStr::from_ptr(env.get_raw_pointer(name_ptr)); + let script = env.setup_script(script_ptr, ScriptCategory::Pokemon, &c_name.as_ref().into(), pokemon.into()).unwrap(); + env.script_function_cache().dealloc_cstring(&env).unwrap().call(&mut env.store_mut(), name_ptr).unwrap(); + + if let Some(script) = script { + let script = pokemon.add_volatile_script_with_script(script); + let s = script.as_ref().unwrap().as_ref().unwrap().get_as::(); + s.get_wasm_pointer() + } else { + 0 + } + } + } + + fn pokemon_has_volatile( + env: FunctionEnvMut, + pokemon: ExternRef, + name_ptr: u32 + ) -> u8 { + unsafe { + let c_name = CStr::from_ptr(env.data().data().get_raw_pointer(name_ptr)); + if pokemon.value_func(&env).unwrap().has_volatile_script(&c_name.as_ref().into()) { 1 } else { 0 } + } + } + + fn pokemon_get_volatile( + env: FunctionEnvMut, + pokemon: ExternRef, + name_ptr: u32 + ) -> u32 { + unsafe { + let c_name = CStr::from_ptr(env.data().data().get_raw_pointer(name_ptr)); + let script = pokemon.value_func(&env).unwrap().get_volatile_script(&c_name.as_ref().into()); + if let Some(script) = script { + let script = script.get_as::(); + script.get_wasm_pointer() + } else { + 0 + } + } + } + + fn pokemon_remove_volatile( + env: FunctionEnvMut, + pokemon: ExternRef, + name_ptr: u32 + ) { + unsafe { + let c_name = CStr::from_ptr(env.data().data().get_raw_pointer(name_ptr)); + pokemon.value_func(&env).unwrap().remove_volatile_script(&c_name.as_ref().into()); + } + } + } diff --git a/src/script_implementations/wasm/export_registry/mod.rs b/src/script_implementations/wasm/export_registry/mod.rs index 490a0d8..eae7ac9 100755 --- a/src/script_implementations/wasm/export_registry/mod.rs +++ b/src/script_implementations/wasm/export_registry/mod.rs @@ -1,4 +1,4 @@ -use std::ffi::CString; +use std::ffi::{c_char, CStr, CString}; use std::mem::{align_of, forget}; use wasmer::{FunctionEnv, FunctionEnvMut, Imports, StoreMut}; @@ -80,34 +80,29 @@ pub(crate) fn register_webassembly_funcs( } /// Logging function for WASM. -fn _print(env: FunctionEnvMut, p: u32, len: u32) { +fn _print(env: FunctionEnvMut, p: u32) { unsafe { - let mem: *mut u8 = env.data().data().memory().offset(p as isize); - let s = String::from_raw_parts(mem, len as usize, len as usize); - println!("{}", s); - forget(s); + let mem: *mut c_char = env.data().data().get_raw_pointer(p); + let s = CStr::from_ptr(mem); + println!("{}", s.to_str().unwrap()); } } /// Triggers when WASM panics. #[track_caller] -fn _error( - env: FunctionEnvMut, - message: u32, - message_len: u32, - file: u32, - file_len: u32, - line: u32, - position: u32, -) { +fn _error(env: FunctionEnvMut, message: u32, file: u32, line: u32, position: u32) { unsafe { - let mem: *mut u8 = env.data().data().memory().offset(message as isize); - let message_str = String::from_raw_parts(mem, message_len as usize, message_len as usize); - let mem: *mut u8 = env.data().data().memory().offset(file as isize); - let file_str = String::from_raw_parts(mem, file_len as usize, file_len as usize); + let mem: *const c_char = env.data().data().get_raw_pointer(message); + let message_str = CStr::from_ptr(mem); + let mem: *const c_char = env.data().data().get_raw_pointer(file); + let file_str = CStr::from_ptr(mem); + panic!( - "Error: {} in file {}, line: {}:{}", - message_str, file_str, line, position + "WASM Error: {} in file {}, line: {}:{}", + message_str.to_str().unwrap(), + file_str.to_str().unwrap(), + line, + position ); } } diff --git a/src/script_implementations/wasm/export_registry/static_data/item.rs b/src/script_implementations/wasm/export_registry/static_data/item.rs old mode 100644 new mode 100755 diff --git a/src/script_implementations/wasm/export_registry/static_data/mod.rs b/src/script_implementations/wasm/export_registry/static_data/mod.rs index 513832f..7a2fe94 100755 --- a/src/script_implementations/wasm/export_registry/static_data/mod.rs +++ b/src/script_implementations/wasm/export_registry/static_data/mod.rs @@ -1,10 +1,13 @@ +use std::mem::transmute; use wasmer::{FunctionEnv, FunctionEnvMut, Imports, StoreMut}; use crate::defines::LevelInt; use crate::script_implementations::wasm::export_registry::register; use crate::script_implementations::wasm::extern_ref::ExternRef; use crate::script_implementations::wasm::script_resolver::WebAssemblyEnv; -use crate::static_data::{ItemLibrary, LibrarySettings, MoveLibrary, SpeciesLibrary, StaticData, TypeLibrary}; +use crate::static_data::{ + ItemLibrary, LibrarySettings, MoveLibrary, SpeciesLibrary, StaticData, StatisticSet, TypeLibrary, +}; mod item; /// Moves data registration @@ -43,6 +46,12 @@ register! { data_library.value_func(&env).unwrap().maximum_level() } + fn statistic_set_get(env: FunctionEnvMut, statistics_set: ExternRef>, stat: u8) -> i64 { + unsafe { + statistics_set.value_func(&env).unwrap().get_stat(transmute(stat)) as i64 + } + } + manual manual_registration } diff --git a/src/script_implementations/wasm/script_function_cache.rs b/src/script_implementations/wasm/script_function_cache.rs index 074f592..892c827 100755 --- a/src/script_implementations/wasm/script_function_cache.rs +++ b/src/script_implementations/wasm/script_function_cache.rs @@ -21,6 +21,8 @@ macro_rules! script_function_cache { #[derive(Default)] #[allow(unused_parens)] pub(super) struct ScriptFunctionCache { + script_get_name: RwLock>>, + dealloc_cstring: RwLock>>, $( $name: RwLock>>, )* @@ -168,5 +170,42 @@ script_function_cache! { share_experience(ExternRef, ExternRef, WasmPtr) block_weather(ExternRef, WasmPtr) change_capture_rate_bonus(ExternRef, ExternRef, WasmPtr) - +} + +impl ScriptFunctionCache { + pub(crate) fn script_get_name(&self, env: &Arc) -> Option> { + { + let read_lock = self.script_get_name.read(); + if let Some(f) = read_lock.as_ref() { + return Some(f.clone()); + } + } + { + let exported = env.exported_functions(); + let f = exported.get::(&"script_get_name".into()); + if let Some(f) = f { + let func: TypedFunction = f.typed(&env.store_ref()).unwrap(); + let _ = self.script_get_name.write().insert(func); + } + } + self.script_get_name.read().as_ref().cloned() + } + + pub(crate) fn dealloc_cstring(&self, env: &Arc) -> Option> { + { + let read_lock = self.dealloc_cstring.read(); + if let Some(f) = read_lock.as_ref() { + return Some(f.clone()); + } + } + { + let exported = env.exported_functions(); + let f = exported.get::(&"dealloc_cstring".into()); + if let Some(f) = f { + let func: TypedFunction = f.typed(&env.store_ref()).unwrap(); + let _ = self.dealloc_cstring.write().insert(func); + } + } + self.dealloc_cstring.read().as_ref().cloned() + } } diff --git a/src/static_data/species_data/gender.rs b/src/static_data/species_data/gender.rs index d47e283..ca3cdaa 100755 --- a/src/static_data/species_data/gender.rs +++ b/src/static_data/species_data/gender.rs @@ -3,6 +3,7 @@ /// Required for standard pokemon functions, but somewhat controversial nowadays. Consider adding a feature /// that allows for a more progressive gender system for those that want it? #[derive(Eq, PartialEq, Copy, Clone, Debug)] +#[repr(u8)] pub enum Gender { /// The Pokemon has no gender. Genderless = 0, diff --git a/src/utils/string_key.rs b/src/utils/string_key.rs index 8202f1e..ce57b55 100755 --- a/src/utils/string_key.rs +++ b/src/utils/string_key.rs @@ -1,5 +1,5 @@ use std::borrow::Borrow; -use std::ffi::CString; +use std::ffi::CStr; use std::fmt::{Display, Formatter}; use std::hash::{Hash, Hasher}; use std::ops::Deref; @@ -106,18 +106,11 @@ impl Display for StringKey { } } -impl Into for CString { +impl Into for &CStr { fn into(self) -> StringKey { StringKey::new(self.to_str().unwrap()) } } - -impl Into for &CString { - fn into(self) -> StringKey { - StringKey::new(self.to_str().unwrap()) - } -} - /// Converts a character to lowercased in a const safe way. const fn to_lower(c: u8) -> u8 { if c >= b'A' && c <= b'Z' { diff --git a/tests/common/mod.rs b/tests/common/mod.rs index ea7572b..14cfa46 100755 --- a/tests/common/mod.rs +++ b/tests/common/mod.rs @@ -1,4 +1,4 @@ -pub mod data_getter; +mod data_getter; pub mod library_loader; pub mod test_case; pub mod test_step; diff --git a/tests/data/gen7_scripts.wasm b/tests/data/gen7_scripts.wasm index 9ca435cf0c796587eb23f9a7c92fe9ee244ba0f7..2e9857b32b640c13e414279605839b4533c9eac2 100755 GIT binary patch delta 190499 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 NoQ=IT~=@KT8bMXHRyQT<0OdORlw#fI>K^ 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%0A)S45q;*ngcfO>>@O$b{F$pTjWXpS!p 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 delta 94526 zcmeEv349bq_J3FPOb(KePRLDwNw~r(ARwq54RUy2>$U1)geV}F2;Mp&BoGB9I7mfB z2@o|ZXi$`>tOh}i3K|qOE2vRXqoM{yjSBMrzN+q-p2-9d+1=lMKL2RZRj*!Ey;t?# zt5?-sHFv)_^6M8)?5O2lGnHwY#-3$uFJoTr_2OT4EB?_a;=PP}7k3;O>GI-_c^A(Z z79B}Z{Ar7~wbLJqH+?y*9dj+-lfragtH{i@x}G=f+BP$$UzIm?`m}LZ=FJ*6Wzyv{ zb7$V5={_^E1F&)<+u>htWXBE?H{FSwcf}RcXU-aTZSIuWdDr+pjPx*HjvJ+`y-joUBCe6y5s`6S>RMIqK=A`jf;W$5VTJBT} zmf(kt&z+Tb<#b8?0oERLx94p^)A78MuQZ}-9~aS;Fe7*7tQ%Clif>KAjR1T~-n1)c zO+*(&u@1g2dV9B`+Z-968Da78kCE{m?D)2k@!579I7z-cT&;bzt|W2GsQ7jq)hyK8 z`F@N@$eDdj-b__KRdtA@V*JGEU~k;jv-4)#J+yXIeA^BRGtq(R9~hx>##!bkbl`DH-)(tZ(&X=AXpGsxMw#u~H>2q>?vaF?58fv(w71dtVstf-8 zxK(FWTS{i?W_B z7f&!;F@&XZTSq1(B9BVxoTH!~170Z+si6TE*EP||gqf`CJ^+s~QffNz#j*5(n zME6B%ajrPMwad+;qdBxsI$dBVjL`;Pln|TA*+~X!qn>0&%lE+M$o;zXOHRESanlVdzS#Lcd@0wXNr{7>h zUeV)Ko)klAQC`)Baix(qU8~V!t-Nby<&M8fdrdd2G%V#zG<0pA_PU-FfKii^a;HqX zF;9C#PY%E@&x4iB8#inA%xT&dy^WPIeq!#lEAz%(Gb1l=g0@u`i?1|N)3rDC#Nd3{ z%v-v6@k*mzZ>`o}e8$YYYxAbf8YlC&`ANGXchVFEdt3K48tMEUU1Uu(QasvrJ>9BV z;!K)0e)`l&)2>v=@50(Ar1gK#Up-iqN;P%THP>kG>#5C&8Yh*uP8SbMG%_=_fB8AS ze9H9kSB*oD&zdwocZ&9b?t3}Glet4r39ch|{P@{3bI0GH?bLlNu|5A#_hlt!@sD(I z<|HFi*FM(8)JaCVuGM4qN$kWw(Z!lcMn_%yRQJ7s^k=$n4<5U8kvW;bpXZyNQ8L+xXs0#!DFAbR_9sG2zS4bb+qC6h>%KSJWbBwF z^qgWu4cC753kvY_rcF@d^^0E+0G*IKHTTLqt;sLrs;z0Wv|nMAlau*xx=$o`c~kO` zy5fpS<8o)t%)LQd>>6~_6~cM)v(>{ z8+IEn<`3})`D*@;abr$DYt-4NoO#aJGfq4A!t*aX`QpD{bl%@iy&(5?zJUM8er5Z- zY!BPd7V@9j@9Yn@m;J_?*a23^3;0iLKA*>n_#B?ke_?a^9sG6n23yV^Wn0(-Y%P0` zJ;BzoGPZ_2!nU%fSvA|hR|tKP@8nDQJ$wN!#HEG7|Yi_yX`s=QpdG*9u zx0bSd*c>*W-OjuVSRuQOEo23(n9XDNvOAdfE>^hJp}(NNsBd?dx&Cn9>$=ai)b)((F4ub3J+3O({jO)dt|hMLTo1S& zaV>ZK(^cYn)V0j@qRZ#1cHQmT=vwT0$yMswtC+Du1{P)xju0H?E1{L%k{DA7uOC~lj{rDudbc0-(2;s z-(4TM_PIWE?RU*}f8hR?`)>C+OWg-tx4HA(i`@n8yWDf!x4X;SkGm_}kGd<}Yuszy z&$!pStK3h!pL9RvUgzH7e&7AG`(^jX?t1qYcb)rF_gC((-QT!(yT5g}T3r>f**%X7 zb016b-97OP{!o$c^N9m_X_2qpq+|GlMZPm8Wwv^;C_i7*VvOn{->gYp+df1|4>S2J z(`BqHKq4k)G3VsO`&P_ubEz3M*~2{CxMMD|_;5blqv!CbIL)Jbv>cBAqX-b|(M@AA z(#9&PFT=>kpEeNgiY$RjjEz)57SCpJnu%vDi}5g@(XUIg%fm;-agS@n`nBcjUV6Fd zfrxYBxNl5;kMlOosm|BT9;n+h*=&@FrhI^mPZSSksX{P|>1n*JpsAWiGhLIjHDggB zn)GN!Aw6SSflcF;eBTrK$#L%xqd)^)9~bzxLfF7|zS`kQ#3!NeP#s~RQ)Xoc znb~(jJKqz7Wt7d9-IBYg?{TVjcYyFXZN#QsyT1CP`tct>*Wf#X6EnY{8UvX`(Iqm< zd@mMd_#QN~2deTRT}OQp5vUR)r{~GX6=MY|J507FP+` z2-yQZ+{0l&2+deP7}?SQxIJ8!R@l#z&JN@TQpRMHnGwc)&dNTJQYu^GCO5sBaeyEh zWLDhtAJO14ssc2DoM$P8d}`QYIargBja-kVgYhwDg=DmcSvl1=P9WcX?ZJQju<)tRm)Zikfrh|rMFLqd*SBra z;6zIVGd&S7A8^8NpXvB@y>i7yD+MXm@Ssv~t#2w!sd~u_m0#yIP)iuI|?IWJHGf zpmS1I54+_Mlj}Qm+^802tCq`P9u952VM`8-Oc4l=XKQq3pWv-|X?X*n?6jtQq2I~$7|iZ-tQ@_uhjtQPR1 zEVI3RUNy8N8og`okqX0Ob}(PUz$8(9J&*8u7`!%EWA0(yxa&Bb{3S>)%r-N&kPU{@ z^bS3<*{C>1XanKxapQ4}2!9d1%*cZEVW-b-A*WS2Zei+){T-a=BmE?WRc(HM5M$Q?FSSQM6Ll$zyI{ z+}jbIga(YOvRNk?^>-Xs9S1_dVVsWX#jkF8YWZ#U1hsTN20*Fa^7+2Sw+!YB=K8kW(%!p) z2H19P)DSMC5w=~W4@etGe#lLt|42Fx-d^GP43BNsxb6QLM>m#53O=SrM5K?B<8+Ih-VJIo-!R6!w0*{ho6I9Uf^2P;`JHw(WCAupi;v;Mo&R~@+hJswv49B8*332U zlx@;akq*S2i=JC_?>ew>&#hy;agk>2-Jmgx#YV&c{5X|U z$Up9XyT~;f&Y))gzWk@9kz?W_%=*O&*G(fP+cN+7`sGLXXfywIP!kzUn4B8qRfrBK_F$Vl0vqqo>qnc*Ym^SDr54k=s zSraRdkBNudBrDuRu=to%3kPlK#%77<^0?w-&^r-SbYqe4re(uCYF8A!NV}b+dvd)e z2Ph`yYQ}uIWo>;wE$hYC75Mr-oDtDU?xgxy*|4K{ZP(1>V_7Kqo`ao^c%QX(6$&512rYN$i_hNNP~#BAlh>eU_N)(5rMxO!w~ ze|vobZJZd0s-}HsFCRs$l`bD`aTvKf&~p3mEi0XmS>#)Be<%KYf$zZMBM-ZKstbI> zS4_wVRBR?q&ZcDw^*wx9)yrv$`Hxl%>#i_kMq@bna8q`RwIqqtto4EfV!^O@Wm>O# z>3w9py_zkNNku!2!=*(U)4D!w1Lb(`+HVpHp@=3vpf05lqaW#mad}_ zwfd*lLCfii7V7NKA_S8R4{lalb)dGMgPL`ApD>jXOf~P#2^6qKG#{PRta%A+xkH;A zOjy-OsSV{q0-e?P?pxXV82DEHF}F%%0Gs!L1S-1SatM7x9=gI7bQ%%p%@dCf;tkM% zhx(|D4(Uo>VH4}gV8JJED8&=rm~YaTX?Z<4c>ymeqs{^iL}aYxz7ysmEiS(?o*~dUmUDKVv=(m&~tvM+|RqK1MaySk2+>i!)21LBcj!VgJT5oWO*(fR5uHxS zwCVJb1j5K2E$W`wbbxnx$T0b&ao9 zV0yK&SW-u2MUfS@yw6y?;m}9LB}$O(Gy;$S3QwGDf_e?H(B_7>#EELJ@;>lo=9qQ# zw729uv7T0wvElEDG3L(mee`An-&62Z&0C!q&FA0M-oXzP`EJ>^4^ZDtZ!c`qKxI`o z?UvQ7F7jo(^SM_U57~WX_fz$cSt}415u0N&%z+M^25U;mCj(Cw-_3ht&@i|AoHQ%G}jtkEkhCuc!jfJCMZG(7_ezi+7Pb+81 z7DvSEkd?z3%s|@_-2ZwB=s=YN%^v6#)j6CkU;RCy6FAh zEPTI)uNSWids6gn)!RekSjo~yu~@y*<~#g}2C_of@hN-=Pyb}E#SHP|VjDUHckhEixMt}aR7cs{ z1QqmVBPP%il6Gm2)l_*%Q*u+C8NU>WJGQW%{HX$wFpwqDbK4e{bduU2bJNEhZu-~* zD}DdQSHvj1Er8iCSR1{zyjpm-vgC{^ zf|0)@jjR<*nrxPp3p0|X=*2*Mbt@a}eTkO-S!8hQHR}zGhsDQO`?^G%<%s=zAed*J z{fp_t?q92WmxOe0U@Wl59D=*9Mcnz#a5pR5NXuapL(*973cEros8fbZ$4AFJ0BuL_MbS`XDag!~4 zeQe#NkKLJ3>>nz;Lh|6_=H1kG!yf8{Vj3*~{olqj`0(Pa?JSnvCZ5>Ny0^Psm6oqE zP*~}5eJvHPC=@?$XT#WBG4NfMbM^wlG}g?;zu9>8!N51Z1W<4J9q$F{-I{GxwmU6_ zAG*teiXHE>6ZqV@;;ipkX6t1n7xJxPH@#7a;T>2yZxSLQmJQ(h3dETYu|DyIL;?a7 zkQ*qttpm&CK>of1>tZ1%i#|H@r0*jwrEmN33VA=pv(UFB3?eIzwMktc1C`In2(1a3*^y@S`TpQnOJUQ^Ar+IOn+72z*;7HfFJ;7KC)QRE=!2mY%j^nc<;f z1-b<>$HyB|>inwN74>^`lInx&rr7uc>y|A0Qoe=kGuf;z2lvMOB9Xh7B|~y@&tqww zATrjl8G-~7a)vjDBQ*JSpSfL|Y*wxk@ewTbWciXKi>dLD6-$YrfkV9%ml5MT8WJ_2 zGz=X5nypVV*_b$P_4)J&mSVj`Py-2Z?PI+}Q79Y5oX1%kuN-B_tZzBE#!R>@sCWI6 ztgN3hen)F^1QYq*gU`bO>y4&K@f>q@%a&g1Nf2(ilYWn52Jsq4Wm-@jgNl1QjFYj@ zPqQ*jyNC+2@iF{sl#wBc>Fw`J7&F5%M&ME52U{b;Hy}LlU$^B=p8BEiQ4nMMz7?F4&x5u zFs6f*x|33t0j~U^8eA?Ug8bNvB(`0)M5ZkFXQ}LtdM-XrW!a%lP+Ch)kQkN5I%L$Y zMpMdn!TQsEyhbxCcBraWi(AuJO1rW^K0F!=6U#;XU%XnZO=HLKHwwh#yI9KDhlyV4 zVf`g9hKmkgvfg?%jN(~evJ>^qh%EY&)p++k0#e}|tbP{MZ4T!^3g6bE^&dB25)4m|*%Fn3)xFh@V|8Dr z+Obym^;R?a`5JbvDkRr^&7C21tJS^N<`)KcnJj1f1F~QIt9u99Zds9q7O$iaqPg%WQMVO{wO%MaLMTY9aVURJ97fQnM( z2b9hY;|HLi^aFq_{Q!lm{D2OnM7liVCq)Z$_&o$s-axhG4L~{}Zz0}5jq(PDDv@Mn znG{XGH=sl{v_6`Q0zN^F?Gqq^1_D08=29Vj0?DiN2~-Rw1+ zkQ$L~ZjpLo?_`CChOZ$k)Z_OF6#F|Xx>kb&=@T4WC6!Mgd-SjR1doOB31r2VPasL7 zxQrOz+CG6yHuDM4pH82kOpSSvPe4{m`UEl)KEa}g!8Lq>(xBdzx({gC8syqm=&wux zwq~ixWIW5z@!b%YKIvW}liY3T?KGB(Q#-Nlfe$uz5D6e<*W-#5ac3uXTuh@BRp?J` zsi^G)Kf10|u)nio$Iw@b6;dPIXj3;Hk-8w=R9PlF0{(1vq{n@FoOG9E>mGNoo7_|? z@;b8)$EjABSu0y(MkDn<+~gLj&59(q3x%KW%sM4D$?lgeVYfJk?=2O3I+6lGY{N8l?*hLe1!<6A&g)GBqu1n9w$3&IEBkQL_B)B;3% z^3%;qk_MXmbhR?p&9WyYgg(DTeHBkuyU|7V%D7RjjM4RSWgM1YGb|Lg+nx%U-Kt|{ zY_)2wjM1uWRMKnimEF?UtZXR$u;}!FAW!$iqirF(E5F9IG2U?Y^=dmKOu{-OY zECm*#4PQU77FpUuE=A_t&(g+0;PW*(ZCOhZtmEya2$M^ZCTf?QDcR&%9;Pa@)(%*A zK152Rq#n}XTvMPY@94qWCrQyIl~ppL6!FC#tOF?`7PLvCA(6Ee@jY1tub3-Rdt!-u zTcJ3kC+kF>-@ZPq?ZB30h}?R9U;N&Ca&`Ygj`_E@_dzoe-d# zCI7_JCKW9-_p1Y?OZ}z2cJa!P;&q=;wZ#oo>33M>J9p~u@fWvCmxYvWzBOpO9`{mN z`l5e1V=iw;-{SpkqU^mKhy6SO!xCygbF7^lhL85lvgbgV-+Fq$Fx}T7t)$p~Kbw)# zNJ9Y#rlY-bRHTI$!_!%JURfU4OcfREX|>{&eh{mAVFVH$`n7b&2Nq8aE;wWv;nOu!i(1Ni>v0(2e*HY3yXI7TW-DFTF=ghFwnPH*eIWT9+ z0Sekpwpz93OuNy1DX`0AAM`bAgSfEf%o7#!a?UJ~w1%HE9ccBk9zqjWo9yfyiyE}8 z{03$=Z2;4>XqE$&FU1IM!`CM3gH64*BXBmiu0Zq}$#MgQ{Z5C!uyi{7g`XM8vb)~b zOhyZ-DgV$=5gdRO2S&2=$YoL}-x4RB#7?l@1L0-{477(t%<&!wpS&;+&W!{^ar_4d zYn)K=+(|66$2yW3=_CvaI0@+K>@hG4@(v1L4UAyXmq_cC>)^lEh2PmDiCqnq~2)=Zcd?v);VodGY;dmdZ<>7kALJ z={b=#2G9EE#EYX@M#?6+Ojq~fkhV<(1&1gTYn3rIaCgIsJ zEX(^e8TV`*LlA8|L-8yuH*=u=pg%i`mLNFDb$VPh0VS6nT`ob~Hm6k*Gg3|_bmUk& zBQ6&63YHTl!^tD~q=Y~(o7B_4Hj(XRG;c6VE<&oxg?B6#C$f4-4roBNM1y#GEE|w4 zJ6JB)RZP+>4vb|fgpztP8^zx#5dS!trFtKRavgioY6%aus|cOQn6E8I$AyVT*8s1f~Q5v50>|GP9F0?&~ur#oK&W8`lKb`l$HCg$tks)G#zg zw=MX2%i&20XvJbV3%XBiM)}|4qohuyaDo&Mo%{zXuTDpjv&iWR1ti6{xhyTan&u-Y zMe&Px+Ea(M?x9LwEE36=vlCL4{lwT1P$jl9#>5$wEMGERO52ApJ+vOP=_TGIAO1;#E$zoWvOp;$oT=s|jCh40V1$-kO)I3ttY$Rh`A271JlMG%u%jcDk`z zT5XpcZPkx71CzjIxh2Ku9E@o5PebT#3EJI&a4=X{cMi`?kT0NQx62Hpnr0qE9mmA& zuIb$1B-YwIMlC_eAqj0dG`Ty3xt}G= z4ZmQDbw#mmQS7oQrjGGb3^F9eAc!cYya2^GDQ!^<6NKR*d*X5B@J?UH2O@ zhZ(CmNcS9Pxgz9r*veUV5PS>$zaSlb96bY;N!UZBqaiHeO<|!y(yJ|@=l^) z1H+8xq_Jdli2)1?Mx73V(?ln&NPma@b98?3#&8N4)VjapOP#ofK@%=nYEG1sra|Fp zs&KaBZ#_IsRZiRxn&^e2f4=Zr;zQ7MVtATrob4QfraB83;}5x=X^oxb2>1!Y>QYS& z0fOZElFTQ@EQb$wNR(s58V*g#D@tBk5E;LP4>SxLp+p9AQL~*R+|C2S(0?9$7)ioJ zYJXC~ZDjipg6w&dlQ{38`pG$+`f-b2a!91b2_H`Xh4$c~81X)UnoP&L<*=NL4bMrb zlMFv`;e{|fw8HDGV%3r9u&pl5hlT9!Y2k&nN;T{ykK1WD!}fO&@ihS|oAyyi~fc&BFVu!X(c%{iJX;idp;;b2$G$em#PEa)e-f0owJ4-+~sRq&A-k|3#|Mt zJSz>75U;(C_Rn009sobzO~Jez2`gTj`NJ!8xM8_4JTJwYj&xYOHs7VrDvqj%wJDKwCWdFFcymBoybhoBPiTIrqly@t zmm^`t8*VBOr}1ibVx>zp+l z7AsEw_eeBBtau%B{`KK`DSkPiE=Q;> z&Kh0|a$meHZ5ag|-^1p`!Ad?0&r5}q5*inrp=ogh!jDUpvx>hwF5VE|H=OF<9G;gN zCm{!uv6dNpnfSLi%Yp~y-!m?Sq2uCJJECU8UuLGsS;JxT;++fcBa3ApiI5eCGGp;l z{L0}gj5oZHl{%|9Y-Wyt7cVUp$>Cqv0y7m(N{&d%s+={1^5Uh9cmI0ZeRSsik`{QW zaZ;jqY1#gUADB946%PeW*`HeXTB~$gFOvOntbWzPeF+P{-feI;{%6LbWkS8Uda{|{ z7}#oXP#TWV(iRA9I&4DWe*|@O8D7e?uqP7XC$#xOJBz73R0xw=!EAYA?W{!XtT;}=bR^Y2!V5Y%IiNCXhWIG(x>)88ga#qo@%Kjydtqjpv|N6hU z=I|%2Ag;;-y&h@=4`V-fQkcCD+BI9p!f%_E9x0hS|MTzGs+ePUSiNsJrP*#rSbnO) zLW8>fzrfFi=KRp>lc3$3n(&l|hdLMBGc3CwDnn`u9`BEvtuAT*-CNBZZ(f}Xuzy#J zn}Ztc9as=G9lFK;!kE=GAG1?J$E^6ZaH?M#7W&_o!7a`CX(odeVJWW)3k~AuIF05& z$LAL{&N9;dpnvdcrIrOgh=2*dwgusJt1@AQ*LJ+Ohgf8LL$=P@cDSj7UR#l`g#Sa8 zMj77lN<-GQ&e@AjtvPg?&Gqy$*(cb7BR?{Hn>l=EklHx3=FlyEAa>uw(!+2W@LZc4 z2RMXsV#j9==B|ez-_E1P>dOjiN(P9$pcO-*70+k2qN%*8axQ#3lP#N3q~8)=HEu z#uv#C6^TuY@o8gek!ZXNSGqh{B>LaQ3J6|xS1`Pr5BT|o;xr%gWLhWGaraJj5k^Fd zIYINt;V|YXjKpRbXNjTXS(em2t|4*jBP_FR)!XQM_1zjisKjqg$P1D1z31x%V(NYPH2eO1@m+s>jr{<5 zbI0lGTYuv*xt~NP-TwT}<2+-soRH<0rs{5n9_Eq{(2l*H^MpI#61c;ntXb*Rb!1}# z#T^$czS72MMCip_i<*Zl#e~ zA?MIbSIS#yhRSmI)Vgs6%A0|6=wa&visKx5=}P-<8reYL9Qu-#>Kytqg3AxvRSc6l zsS*gyUS6k=McfX1L!hxJ+Z&AP5>-f^G1kE-#(DM+`@HK>mVqS&};|2s%vA<>O zVAKyNu1cttO<9Ls%z8;cj#*6P*#y8QV55dy6l0Z=_MYV=7k+7fG@P_sH*(xpC_W#6 zQ%NBglJ#!sE)LX7JIWy!l8H$JS(dwQ8>mt@j#Y27ZXBy1m{d^W#){#7j*@Ni#xdSh zD|QcL$MV+-MAmWmp7kglDF`wZpxLS24>nVpLchw50Hy~Q_k04X&H69!ukkI3u;a3~ zhnf{%7Nm3HvURNe0M&n?MoUrx_n2;YgZmb^rvx9g7QbCB_B@Ak?5`GxH`lRt9UpGi zP|3fDAWIrOILW3iAgNqoT|lx95qSYgcroMD|8xNf3V^*WButp5$3EXv<1fsxylt8ir@(PzFh#XE2+KT$0>OmYmQ3T?o z&|wj%&Z_(;hS<7eCalPrVWAKu`;Z`46BHd1fZq_JKvhJ9%B`Kej*esQHxv#m! zX#i25b%U(UFHFrsDS`GWK`HwFJ7yecJ7q;US>JvL%kWf4m6Jb~j$7vJFZ&zGh8YjT z4yeiVNo(@lO;T!2p4HamSz}F}E5l8mC@3dSAj?Z!6tXpWt|U7nCr>H;!INkG3N?8` zfuOS?lV`&UHF+wn!Tmx~djgYZ*!ob9WAbc(V#aYim~K$5 znmmCcFL8mBw~;P(3p?oMzkTvl>~GoHla%ssCr`2ZLDrd9S|hr_F`^~bh?ZI-x+2_& zqM#g6Aj=U|$kvFi@QL{Y68QQ*iC{oublqKf@3TYLSP5!L?c1f2G20W>iSdk+57F8Ix=n-~|1 zpJYjGohNd`tx5VFWKCk%>tA)SnD6nD;jXF-ao&q;gtwO5bTi(peFsl_qBm`5by#R+ zSZJ9O3QK0s-Ih(Gx!ZpZddYiejplAc9)w;^NzC2(aOOTr!d{Z`SfMz%nt5<2dU7@E zK^HiRYSyo-y*Mg+*Fi0;bQ^f1D1-9klRhFEt8x6=?=m!RR<^p#YE_)^5;M_K$xFEP z@?%`s_7Xe&tVhW%W0exP6jy$%t{f=`6yKQ8VQ6x%98kRU)jdJi>WWi0vCN6`)GeJF z!7so0?{q{%*^!_-JIaHHi{dyUP3*0uNHG&#(lumh;%?CvtoNSiO6YKVB>_%SekJM@{{l=0mj)cv-DJTDq5H4 z7)|YXZ6Y#{pdRaVHC9A)x_Zyc>U4GMR~)CSPk9CF`EqGn>81_o>3CXMOHFyiS%R{o z>5R48<2pUA6?K6+W9^b>tRw7xQD>~9XaSr>zh#Xx)^UhNA$rg=)?E(XY?i!j3MZ|N zSN$igB_*g_p0pnQYKteWOI~I2q;ZJAeud+d2OMB4qmxI<2kRfDu!FS0zc^J)V}&E{g*fU=%Ze?gxQrN|+f2)3 zGp6A*JDIKy!!#;aH}%QPLo!|FXBuidkGK6iSa;LIjf-F4^_S3SemCSGNQ1*Wc;#l z?I;#dR0`8El|tK?NwY8wtt$y+o5HJo2?LWv_4V8(9)6N_@NQDIz;s~O zqfsWRCBAh`9TYM3vqRGVbNFdTu<7dGbJb#o;WbA`tRH{v&r*!gy=bxSG}gx`r#^7( z*@+GVSi8}O+HG>~OqEFoh5RJjGh1ybzxee-xLtF_cc-(z4RJU#Y|RMIyb-MMIF2je zVgg&(EpI)E{jcMKzqw-Q8!X%VV6z4TJ82j*7}n++X@Pz`l3n&dX>6QNfK)rVJ@n2w znE(i*aX%66*fn*gR?9qVd-Rn;A@0KhF=Ts`(qG@lIviVF4`EZAc^+(Us!NICYgYu| zw8^L7*yJmzuNEgRV_nbRLe@dbSRb6#r6!O3_Z4ie*5r$lH(1&!>dG-3f1q7VdliAf zP*P!EdygjRDlBOg{nvU7k?-B5Uh23=LmcxtOHD1D2iy!&4N_X`Dh-cY3{A%`SyZnK zTxYd;rMk|l_#-ro-SaAX`U&9n_G7i&h;P`5Or?msDeAw@Y9FO=omKgV!KLjb3|Dum z1#Lgpe+=Bf_G1GjY5P(BI70PGd7Txglh;{=rOpfsg}t zx#OM@`F%TjmfnY9%t$(6X^kgH$kcBdXg&Nt<)Lm8u}G$EaQJnlPPthpHonc;FMW{3 zcThKl=pYQ+E1t>f9&$dMKD(e_=oTB_V{K3SSXCl1%!NCs#tK=V-@-xxQGiOt0?VNJ z$WWJ!7?n~H{O9yVV|%=-dfVEZ*+ODN^DEt%ywbWed8K++wKd%43<|0{lUG`ICQD?s zIg`FsE+EuzC%j4VEOdPiiL?Cegw51g=tf(OdP_A(2{1Fuq#*k@+OWYBR1<1&Y_ZkA zg^^oqh@k4g78~SJ-IJ_p!>zEAQ$>w^PqOuX3NKqX(iU4-X*JhL&B-?Fq(0g1dU$B~ z8p1*`N=hhATXVZ&SOLX0>%mpmx+j?!lXj+0V4eLZ{p_lb!}!^9kfcP=z@ZU}%ZTxr z?S08)Gw%z1?)1LOk%h8jl9Gps5MRKRsH= z9gvVU|J1XF1m2%otqi#L@C|rh*$`>aTB^w?nTvnrq^M@z9%k*=)qn@y83jr_DN8JB zR-)e9Vv(n)NKp0p-vm`}ET`)H46O@d@9Ch_GeN2Kj?@IrsFF$hy6I;r)%2ZX z>;PxaQ#y#uk`OXKEfnqQnP<3qO~*s_@lYDx3-`#G9cJNpjlLUb{IZ(n7fwfegw?aRSnoV`V?QGlp%8br|cB(n|_a{(f<<@|LLEUI-H%6fEaBcF*5FK zrXYz!sfBJ!nc<1R=WU4!~Lo_?FfiCB7VjRMH7{S2APZ`@8%zu&lv zQgjU})#4}}@EfH~4DuUmz5s5(Z>*&x`Hk|mbt7f~`Br!@B8NjD3jBu%v|hS~?JzSe z6g_6Uve=mYM6&IC>8d)ye(7rULp~WobD10#+{_x%vDQmhdq5ynC9<6D%gTZCzjSq= z)ysi6=@u=SxHhp*RU`+A6=fq<{K*Yfow zukz)aiox?lwd&;?aOBIkcP(Ep>~NaPq_k(7)lvs+UoSi~d<|it0bftCU;A0$b?RZL zn|hu4y)~k%NntIIJ%5$**o#*wkNxX#BZ`7@M1d?vR3Td<`n7*Vr6C9&(Xv&_Z-*^u zKB5(?)C+QDK=6|+(vSp3G;DprBU%9)CB1heeS2=8jIV7LHc5Q$&G&hP;D4X!|?B5T2^c^Ej5hdGGcsVGcA+N zn1)$!GF_`oR}j-QPsyKlk(q~Ny3EfstbD-j`RgkQuidTnA)Zp8k;C<^0woT2?ST?r zEWT(>bU5n(%nAN=gj%i~?y4hrIis9E9}Y(i6!%><4n)Qt`MblC}44_Iud&EuDwErx@5) zeF3hjS~}J2RtmFwuc82O$Cj@1a(+{7Zu=%5=+Y@14gUUpkt(;pTFkdUX)ClpY1{if zwRntK-so(R+wLCO=pSsh`ye|A6QOZTr#4ohEidq~Gx z?w>s%aQ~Lb{tNH^InZ{=is1e|@ioinw}h4%S@`nbc~LTCn>H|=*C$(tJ@)Rd7QcVZ zE*favdyF?Z{(FxPD(=>u$dIPjV)=6>BZ`1fm4#4RJW@EcZmo4_;?W zISRNZVe3OZ4u`W2A}ZYzM9@IM;oNSyCz4a?o~Rh?BdS&I32>x)@`B}_gcTsOOzKy* zxmjwR?Qn*NhOZ$kG~jS5_P2i*a8C}d;D=!n2ZS?6{=M&(e#YAOj|2UZ!j-&xBfEfA zi*&}ioLDB!BW?X-pT0^a_We)|^I`3CTiaEJLMV|43x8Ay;wHv2#1jwVH!$zCByk}b zH%k)hElF&!B(X4zB;Khc5vWoU6{;nPg?>qtCNo$P^UIZ^46EB*5{t`~qpVCVegGmw z62sOPEQ!Ui=28+736jLZa^)yXPNgKO7$gzZDoF&6ltj#e8)=(6ti=5LB~h{eCnQn+ zM6lHDgZYec*h#W%3BDE+w;C*k?Fr);%Ze-?Q7Q$+WyJWx_7P>WnU4rfcKV2w%Gw0^ zh%}i=$5>{Lq^!tdQua5+WyIKJGbxkJn1qlx znUpdLEpvYVhRP+A{blAMncU}R5-!dVd@_(BDt=;#@rAVF#LQ`Z1|Tj-WW5K=@5toO z9q{4wjwbMFT^8Px;KLr0`)rr>@fp3WDv^+gpr0vOj~_>i#t-FLPFAs#0x)Ckc&QJY z)YK^r&A}}qsD+E>{Mgg)^7y~H^t(J%pVthY>ci^WUvmy^H&^+7>sjEYapS6N@qH5O zXS=>w9h2+Z)$Wrm(pp**4H%2U=R`k2Rw+{XQ}z1UO>7(EPZx->zu}N0T;r*~vFGS~ zWw+niSh3}IY|P(NBpQBanHkNFNOsdaw1K}2-~I2yksJJ$!r*=ET=iQD_;ST$_-w_E zsR@3FffiQnV?%QqsqrB9ammjT5(N>Vm$j54?=gBm+emb5+0V}A4-|@YfkEe;6Gp)Ase?bCd;1>ruHi0^mAe=8D;T)aL15nii{x9wQ`8|X21PBO>{ItZ@BDk=$U-bN`6qDg49xjH3d_pCRN7zkT8?xw%N( z(V7qLuz+ZhALESR)G9Zt=fD=L^&LJByD^@3jcOziY3bFic?N&A#iAtzp+!^52oyr~ zYb{o=y;%hryPOr!4_JG!%7LuBQ6!#^=gagB`>Ms?4c?P4n!CQ(;ImoB?`)P_W)0rU z;dPAzvK5YR9TVL#N%yvPH#t@R6`&+LRU3Z&22_$`y}4>tXhKG zy^9r$+v7IgQR7S7ur+yEAyVj=?q6sG3Mb2GEab zK+*OUiH|4n5ggBsc|14m;RDnGxM3SV8)oJ+ywUUMR~ZdOVp$%)Y;a4t;5kc^zYl{l z9?f{m?qEA923*0v0EwAb@~`-w0uecpUr5i~iF_EqD<<+q7raY_Ff);(K^7Hn#PK^i zS#I<(x;it^)!0r@`p?bXw*KQYcp%{S@7}X&!7E1k$&Yu7#QaIT+v$7dz$z~WmDA~q z1>`nsF=S!Uj(I?0w6>dfU?h=3k&%~^r?IU_q)zAKx_+ewF3sdw_%){({J`>;P6)n5 zjWp}`SBv|n^NtBW*cuRNZif8+P$0HV=k4RR{DJNs$S(xyclhzz=`b)*ssS_jDZ_pY zl)yW3sA#h)Kt9P;8T5;))D14$xnK97z1lw>dF4h~m8S(x+rXN2FSm``km zzy9%JUZ$g!GZ*q4@!=vqJ$4rrhM9>lb`^;WOZbI7R>_WoEmsN=kjOat&Y5KPODVI! z5W`pUB=LO-Z?8WHc8$fnx0te+_u~r}*yQnwj_AL4ap;<5xJgKHf94fy_SkTdU^LvkWhliz)I1 zCyb;eQh15DuT*`0kWSb(K{xSpR z3o59Ln{ROEf&!$!1rN zi+G|s@hgn}-zM_7VjdOVr94gaEaMlC2v1fp17XPWTg!SO9$f{)H)r1Zt*iK>u1*E> zfF9Etq^PN5yZBI@kt3NrRfOtM;IomFcP*sTJxX8XNkf%DT#-i|aRTz_^K%W{sOV{o1?;@yRAgX3eX-O@@}~GPG{M zqq5XU4g&o#F=G?&Cti4kclIs;P8MLtA`o$Qxv7czet5HJ~1|STy!f|*GLLi~0r!x>N6mG*p zpTq!#6A*|2s%HoS;Su~ev@a(-2O#o@d~BrXA3}b{4|fRyYUGa}oY#Jt=Mnf`!6uSm^US;8Hjrfn?0C zlkf;m?GQm;`sYF`P@Do$e-Xmp5h(9sgi8=EMfeB8IE2d(oSf$(eL2E-D@?#M58(=g zD;>{?h}&Tjjre2$C|rdw1!1c7q_`ajMq!!_6K7TORFgo{tuO=6tF3Gso${z!YM;VP zE7Mn#E&m<_YHw$-QCy68d~PkH~B@v*v}*Q zvRE->3qO9~GJt7he?*8zpg$WnI#R*x^ca6ytl7c`wzA=`xx|Y7yq##Zl_#Xwz|n41 zIA2yM`flYTy4!jAE@f=(^qi1%SC{C!gLf9a>v)2{P!Fp@yU<1yB8u(wOD@5-@hfvvx%;uwq~{Jk zBGJaN2?w0j@u8G&*70fhDK>HcAAF#m-;4B5GKj?o_)u?Yq9JW%C19-) z?DSJ1>F!9AC9(5KdPh3a#~^-^Bi#>iGM6?!+4u}cn(Q(1Tlo>b6Eoi9&-3TnsDXN} zP4j_5o*XE8(m>fb_CNtH2MSL)P$wpfwRQY>Z&k7yC>#G_v`xbFGXnk5K>dQyWCeoT z1NAH7zgfWv{~fS>R&c`i1NMg%EO@-E>;QnWB_{T`^kbtZ&B~kFd*(G0Q^eYj_)9z@ zRq-8>+MI9XNxtbxeA_rS-+)WL@sxZQr%3^ArKKyr0Uz=SKR#~|(ll=U5fTyXG|iDI zjx>#1FGu=h#QQkXG<(H4(&sqSV#+2yP`uH|=kOjG;_N;AAMJW%7*cjV=c?bSzirsh zqR$SVE~dVPwbn6hRUaJFws{{QPxb*lsSj)%yAJ@DeSoLzgUU>$q&e+WAK3Wz*u%Z{ zk17A#3P^c<9Skh@%iU` z;PGd*H>7u#geMJ1j@5zHAeNLW6JacZoz6nMy-bU3U+^p9TA>jGX%bQ{%D&>q@|+Ih z-LH6W@5ByqG=QeLdo&e|Gu?#FHKATSM|`S|k~<@#lx6OG45@rM>+- zeF}nIAq|AH0ZO0c$bSNH^0{sNwTL_MH-t%_O%9%2U~>oprB6bz^S6ZLQ`&Uo)9mYP zkkT|LcKID4`MW5M_WcM1ARo#uKz7|(A*KKB$S1Sx%s&t&eVGHFM9qm$Y3~FFLYoi- zN|Qrp6VxswpVC)4^1FuQQ+k{uzi&uB(q8EW+6|l#fV44fH~Pw8Ao z`HMpGFJkC_asllI#)lwK+L=E!B%jjG{OdyUDecUk6Oup28-lPP1cB05I0(EuB%jhw znOPo^PibfQijaKo+7Q5oFln*{b`QN0l22*p5Y>j{Q`$L19|Y%nH3Cd^H1Jt4g7!^F z`o}QoGacoB56P$WxsH5}NhP2K82{)X0Cp6@q-h4Tdmud|pVH*%*!dko^1Fqk`#RHT zUmN5EAU!-JeR7yInPa=bb3*bdeYGS1?;-h=rYV}rr?*37dnmk z-x@^3TY=y%oMheEST@?}Xay&{6JVXK;DmPpj0`yiCp-t~ZdS0Jm*-r1H$J1g zxaD7PUMjmw=cUW;?#g+o#M9}#*lF?T?N`B&9d)*8a zazqy6NlvAWLOM<>G&_9};-={H1s^uJ7N{p6NiNaf5bSgo;^#Qh9T7jtksiDBXFgcG z`#VoeKdq-4kyK=#k6@>>fO2ZTO5{?(1O#-6W~a%4BInp1KiZ%eE7Kx?=*dd0@K zd!;|9r$2fOz&``6KybTPjzfHq6`b(FfE{lIC!8Fa6RlvumB|?b;7}_#3k(BnxD}jm z6R;6hAUOTeV@+Jl;im(3h83J} za=p&7f)jo=VCTrd#9Ei$kJt1kbJ1BCn|Nzc?bc&OC%2w@PSgNHst%brnyl<}kB~H3 z4^lHb|Jaax5-pW4?r`g8oL`B0Y5ht*4am@Pr_9XDop6Ka^64{YPQNa1!np**A3gqt zf9(9JvuEXAJ|#Tfc}y&>;l0{uRM-}g^AW$mnlYamsFeDtfz72Cc~YtANlIq)6;@nxr}hf_2)z{>`!`C#W@@$A3&IepWPSEjTBa8Rdar)fuM41!$; zIdzn;i3YbmpEn*au8z>p8JKy3A@|E4MILzwXUv{53PU&ZGNkRk&qdsszMKj6CLbmS zMd}x)l%aylP>>eRQ~~{!ogf~GgfQayVWi%ho^ernm-B7hF{qFx7g`TE8*!#5ATQ66 zPw6WV=#L&(;-85Kla#cGXQK3r`b`dt0QU=UyP>NPpMpS(jf;l}Gg=>-Yz#HzY_oR= zHf~XQ1Y9<^+`o+M*1I*ut;19%?fufdZ%fmx`7{^&8Ai8aakDc*08myWb+ zn8HcHGZyJ=Jas%TLud(SEO4l<<2^8NsE7Wh00weoTT~D6aV?N&F?2nG2Y)?V_4MSl z%IVqa;!8zIiv9*vlt{B#z5($Y5pF^dFQn@ITP+-}h~NS;2BaOrUORgq1>bleMEP= z-jhbC_o$Qcg!8A(#4{qOym&VQKZ#K}Vtrg&eWkng*<+O#MgGcAZT%xz`e>b>Jyz`L zq-U&8?X1s^;*;{$-`PulK882uiBkvbh2B;WKXjlLQ|XCb*9x1bfwUHNK`;0#08pzj z&-RL1>`2Fc8y&senO;jK7)EwPBxZXQqMl1FPjI_XtDR2Y;Y!q^mq5w}0RxEZ&p2M+ zp4!0&r8oolu5ZzuYc|4b1j8|I?v6pnJ(efTbM*UpQJ$zjM{kek(sT6_`E_|>=(+kx z{%PL&x##L<^=)^))oA3mB$3+klv=Kh=;G2?lk1x+L}Q`eF6$eh(2%hvcf@k^Ii*2` z#s@Pve)_Lhh~7nddb>NJheW1|JGH&=~2|Jt3Hm;7}G{uFh1AaDRJd&O}l0;6We|I0Ph0i(6~h5Q>)l6@Mrvh7fIK&#ObS< zwhl<7GW)ZB2}|{qh)V!?(W>SIp+{?pH>1o;fKUzmdUsaDB%lx=-Y#=3 z0NVig8x6B6bQe1PXMkV=HGU)Ld>!0H6^5|u1W0xX;9yrv_;IS(xkPX8-4CNndd(ko z$40CzVVVsv&f~4L#GGwR^Gs80@Tc4z6WclfV@K<~6F-LuvoXfT>8XiDux&PginxD; ztlEH%xd{=w9cgde6rIdAy6_>4WM4Ej9CXU2N-e-=$ZdNAi%#4HR>uN^G`j7{OpUA) zAX&8mYGf17*#YfDp^a4N6c*=pSpcYoc1E{_@$T<`Qy3DkFg|uE>^PO6PCv6t>)79s zf9o`nwN&qNVG-aor=HoHIxXT2bXfd!CM_UUuF2+70J#|1ZEs}JvN-}=2*4RuYmT&R zEoHh`zEsaRZaDBr%+4I#Mz(sYo$e?5C~*KfeOk5f08vSaYk==P07&h88AD0h=>$ma)Mo^1r$23Jrz0)3(@wX|7#gRv(}vjE zsm~BE2>q6mt5NgKM9f?694WP)t3#yL36Mic0Eg5@OoEc0e6=Vn)kk)@5qUu>=?5s4 z)Kc+X+5z!xsh;kVu~zr!T`r**O-Fp6+lV+8icA2~H?BvdCtlxC0p<~)RYYp+_$&pO z20+&fl9IPWG)fmEetxo+NUBK1ClGdgL?^NRZuh`wX*dWh-nd8aFD_i_&T=bKI^U}g zPo^9)m?w8)@rm&mPl0hSx zS`a*o+yoyZ{)7c={n};v#cutS1x&=R)H6E&19$_e11^th8$optfa>j^#S$Y%fWac5 zp0QHTyyy+&(6(Lw>8x#H&u*Ib764NL=y^Wois1l!0|1Rq{~7E=IlcG+&?HS(|0__W zTXZ!`mVmYk+4@Z@^;2~H+=WaS59ujMh{#nquZfD5H~_3a{vrKj<|PIjAX1q4+{=r~ znRXtg&i+O2GI-mRSAo3#^HLLU>a65}N*t0_pX4 zROt6I{pK5)=>DiaKyN_g@<;Vcy$5bobM(+5iLtN1&32?U_qPz>Xh=>M)HZZz`xLTu z6AR(4bYYz%3cO5fk4#dzn64~Ma}R*2tp@~>qYXVdH6q86mX_PS24&dIYJwPgdP;1p z7fM9{s$^)ATXR1PjIK7u87Z;pK%lfA;R)E(;Q%C2i3{AZFJdj=NNeujK;(HqI9?%0 zqVsK{??m-CTh$TK8CtA>>01O4=?^N@-1VrS?@dg+|Crv*`vh{_$Qknt>mKnwjFJ#7vsWxUk%S_x~5DbX@$N?CZfv!nhi!S;VW!g}g`&qiI)(HUIT@PEm>1Kv6 z=8@`uOqP4A0@!J3%z+@5uh#qPpCR(zYQ39&+$~J-HG2Pn7u=%yjO=^j6xi;I0f2*` zoqRfLmv|=VB>?e!axTk^7@+`S${PJfU7(V$*63Z&s{zVzOQxmDy$67l>EX#+G9UY(W2vEP$mV zehuWO9@k&idw7|+=?Oh!?CBW3kszr5JeHdHLU+u40Q|q+-UCjGqUi(Pov^zXVCVJ% zaHQjiB4Kk-kRyzufETvv5sJ5rR-pF6U z=g}1I2nI`K-q{(Ow+&D5ty0sT;3wLRW#;?Me5)+tJOs{GLpZkaDgGLE;}*UlYq^~- zW~nWFQ})7UK8Jk@nvuqy;u{uHnw`)Xm-NW@%zMpH7 zigGiz@*^Ea9#ePlZS_#<-W~jpPJ?*Y3w*043l`h;t+Z9`#yv0^hx^!Uh+rSQzz=TH zwen1kg~YM6FD?sK+Sz~?u@gIYiJh%@k#F66=@LT<`<(2Q|24uDd3IZ$@A9(?ptqj{ z(}yqejdJsr8iLs8k51XAz|?rDon^kn7y7$d5l(w2hXcrk0MhtJd(iJ&DL>v` z;MfRc+){h$ikJAjEbWFn?6yb1C(wpvUVlud>=Iml0`(?Jy)q|%1~yx>enq%{qwJ#Y z7*)j4H19K@N%o7dw6_7L$OF{Ol2!^9Sy*v%PQf{yYH{M%lK^+4elg zC(sWdu>809;zn!Gkq;wAuf$cQs6?X@n{79GvGgszQQ$p9TP41Q5ZLDb@MM4ZuX5SVrl?OuvOddRB8gIAyu(@}{n z7}V7V(e9TKZM3^x_8k|YXKV2$*63()};r*=5r+f*!=^MT^oBJu&&lkVp+p%|u*7;k| z&OgDoNlp8fmpHx@@;v_p>a0QHX}#&QEiZdkF|G*!htje2+1^+r>Ax8`X>%%zCIWEw z-U&Vs*o+9Pu_R{OYH_1`cLGmu?CVI_?Iare6C%#&UJ%%=C;4cg~75kCD-+uAs zv;nosySow+lE9!(1@#$pBKKfJF@&*B!yWBRydmP-&vlTs{rH7f`7P+)HNWtM{2l~${KEIIx@ID587lD|A>XqD zRsa$7?esT7fhRcbG$Ch+Jx^?oVYE0hKdR^Oq~Yd9xS(o07N7aZ5;@pBKLdLbdA6iN z-W3|@g%BZ|2pz0aEJ|%D7Qre7INN%PZyq{@v>c^9EEIZ5P(h2JCyk*(7J-s>FmRUr zD}NFH(Hv;wU-_*(fBr%{%lQ-jpbHloOD8uwBf|r2ZF>@gnUwvU43Fa`5S|8s6ny&) z_JC&@2(N)av$*}E_KuEci|n@7L7DM;H$@`P$48h zGDjOhN*xk}_jp6=Y;_4ujD_@Fmynxf5Rc~y4f(-S?WxQ>VUDAi=GQ<=3X_vKTREJh zT-OZG^EHO$--hk4FC^JDo5TdWsJ&1>wV<(ZZKjd!x2=T-IvBwf1BI@}rlc!2?U=2? zsv>v}+QX=9p^4YNa(a)^VoE(n|1{i_vKQLKNhXDQxW&|Zj`B3z^9MMxyI^Uc+LjQ< z%)DCs62fQY6CTwWbi(Ys?A~UA7Q`?oKYLJ?(W2Ibul3{&LOi|sfbh~=gf{GnLBd4# z$E`wy4ZU0l>ib)Af)&rV7dqag?FSzA;N?QErW6`TQH$(3o;GmqScJyo>SeIa3xp`^ zafQ&9w0>U$rf=9dui*_1=W08rcj$I)fzXY8bd6O^hik23HeXw3F%5>) zSxm(cs}U=PSdI96h?TqVIxF{W*VUPOld?K&Kr>!ZDgr6afCPS?_vKdLVe#K&; zB|DT9!gaL1%`mI@(qUHdcMY?;^7CQBx#d*)0xJDfp?C$B8p3JWY_&8?B%f51E}gSCLnYVZW6lA!pi_OA8yB(9<_i7TrV)bjulRc#{I`r0 za+!FG(1L9pY3a|zD4~BHg8R~_f2Ti{(T2!0WA~31cC?`i>pHLm%Ghd~t^|9e5!jqD zg0XdEo5u)49F(e~jcuPNG-Tef!nt+SsbZ`-nFgRU&eWYRk3EZai}p9PTSnvvfL~F|bHqn~$y(d|@-#*F8y~$)@uRf9_ikTPK8+!Jp$zo<(`?-#1 zOajZ9B5bW=xIUcn@A`4_RI4AiPZh2lLBg;c1-F=F|G!l`ZILNdSFPH~BDK@Qp2aGw zgszu*7UEor%BD?Piy8KS*d3c4i;(HbaIC`4+`@?gir}-?jXA1on;iRTb;J5xFK7da z`)Ozc-OQ^0tlf49-PY#5S~H7G>NXFbRxX5}X=dphkDS&mjJrXr*{ZxF6FLK|)n z8XKY4ZxDLwuKyI}{D-}bjXRDajnja(HwvTl-o2Y5-{ErpPnG&vd$+p1XI)yiw)vR5 zNSs(lx2D$JBxIN_ttYCW;qKfj6sKBN3$K{|rjxe`-Hc`iX9~mFspUe8)YCJC%gi)+ zvxVVd>Ty~pid*4VCSNz#D2pI|1cA0VXpuT#;_R{6!a2IL4Fp?OsB?B6)&b&V$7c(x z^;}7*pOLFYsLhoKXXN_)oVs%5<_aObJX*Wc%S-i{D-;(QtsJ*rXvHR zy2Ng?qBDCUjcXX&fHZt(cn1DBB{Xp(VB~mZeOr^ehNas5D$ES=pJN;HSZ8rrecn0Q zp6Yjj__N68O}4X(dWlV2BVa2+CBoHQW6$Pdyuxh~xJ}Ls{UCx^XZI2>l*5Q2E8nVG z=~tXB2zxZVg7bLM5Q^8cT4`ow5o)snA(bbK74~MM!AqlM<<&c%vmI)JD|<@eL@=$r zP;6u84vu55TqF+V290JNdW(aaInXzKkx2Ja1oz`ECQ6s9vU@*+bBNLG?%rbQAR6{* z1`od~=V@HNX)M^}^*px&3mZ2FR!P=iluc^FD!VcK$LvR@ghG@gVW?D zRHw(q;%zy+h7JC!SBp)mDrOp+_P*z}b#zAx!ZA;6IWy`thu{8y-L@8#2SMq3QNDg> zp%yn!MbmKoRMf(8XTdlWwFuUssD*dEAtRS1uMx)$>NCr(U$O0bQAjVM7B`DX!}TI8 zytW97U=;zJoqMe~s_Jp%OdZhjIkB;WPK444HqU4rT9xRyX18z2lOp`I32`szr%iTrD=fkmQYO*8hXnj?oBMxNbFP_xjCP zbjW_~f4DfiG#x)uoESNicpgoCW6LV_8>~vr+TJP}MYSn@QL+ z585+w%h9iNL4XiXKOjpHOIk5AfKfh-P%VMR^o=xvxvjvG`4Yrsv6)Vu1yLkn=~dYZi!w zo^IImH6{8@owLb-*==NMCUVH+``>P78<&aga%bLdc&ca>abnd1&Wy9`_QKBV0Q0y*Xe7q+t%wqIaRHC-XLaa1kDVfu1(xusog&vLf6 za&RmcwtJR0=4?w5kJL6bg3B(|H`#5QLAVO}s293DmFYMbJo7<#8Vs~L=S;~c_S^v( zttF6;^fg3T1h^oFI(DWJEZNwKQ_EM74S55QO#_d;fYS*i8#%i&T8iV*HsTUPrbZG{4j&>jxW+Yv|emVfz&JO#m&tds}K*`4|Aij>TuJrK5@mk0}5}uJ++&APqM- zMj+-!Cuk=t6UX6T|NX}D1{v|-aSTr$`rHtmdn zar3H0e#SZ!a^h;Z-P_i4;7+^kC99klbDel`hj7+%uh_QgIOZ9t9Wf|)GJnL#p8|o# z6@+HaFVYCk5{QD$Q3(mlUtx~Hj6A27hEpbB*@xt1V9|%|oqCRWV3}hjdA!hBbs8V2 z7mPITBh41@`0h_}WP3Zi<44dFh`$eixy~7x2Qaji!1aN%*_$|DG6+>VMIY=; z2S#KHc-kTjZ--j`0i_Z_PxMKy^Yb*^=)(G#`Afi|kLBk%PJ0?|)HBnAxb#d)FeNqgm;?8cP~m@vvy!hIN7%++#9x?q0BW&uJ({*_ zyUQ_hv;IlR#y)k^t)s7N7^X_+SrT?m}1Qq{-mZ4{tomscxl-I@-hD)-iO1>4R z;9AaA7&_E&*3t=%2iBFG6ggw4hW;p4Qzw2w^~C@kbL`Xm2bGpkFX}11i|Ido2+;{8 zMsCy{sp`udFBMAP!F0{6#9k9n3}DjNVo}3s*c;yhxE-(>upY1(K(W!%c2jVL9dH?d zHg?uShc9~ozXLL-!Vm{E2Ut&&X}Gfq2m*Ql`T?#4=($$m?x$@#c3pJkFb}4&_0&Z_ z4*t&9<18Mq6ltu7=-&f=1<-jJAs{d(%fAG_l)cSyS0IHbv(5=sF0V-e&;5NW~ zfc4-~r!9OvEXdvn^Z^V33-o2Ic4CqPlluisWJ}9zB#nFo z+w|L@6A+A6HJSjA8(=wL9l(0(qHhAvyMP9hFc$&VQy1Mc(QXR>`T}y&_$LCNG7;}5 z--y7?0PER{@Ed@40Pm;KeMsyF^Z@iq%cw3oy&rWi;BCN{fIk2kxU_6NME`)k%t8^u zKO+7~-w3|P0NViD0nY(m0PF!!WgB^U}I-{c4Y@h=8g&;MKgs()JmRfbwXm7x|;WvB&I8EODkCcOa(*aZ^+ z^g_~dfc2!)Zyaa8*tYaPGn_SkG}4R%PytqYw#x-03|8Kel=O($#Il z;bdz)KsIG{syfF3gAw>vR^*0KhG90;u)Rtzaz2nM8A-MFx*es1=fX-~0=NgT39udT z0>FAY;oevja3Nq2pbStBu%2fTejRWK@Fm~}z@GqiWH)S7UGLM`%Lf4WEZA*;Fn|tE ztcU0YCcW#wpnr+Hjsd<0{0R61@E5>|w3JsTGcPm$DjOyE3P1^d08oNI0hGXHCg_a6 z*7JYMk9kiuN-uyaLoJ}nPz$Is)B>suwSai3m#l|+YapN;FbZ%JU^>8h;s{gRBml+D z1uO*UPZj=8XP9g<%(EE&58^3LDwy)DEg1RI$yXJfB+=Q_YXIv>r|nOp|ABDMY`d)y zpd%mzkO7wht^-)lg9vW|90q&@5OCDw1X$0@X56va(EGmukq}vw#&99ReF1|2@Be>F z$N2wG3z&=wJqXwi*at{YPxOr@{T=+Zp1SBWs=#zBU_M|WfB}{R)&MBcO8_dwdS)Pe z3xN0+0EmAXfcVz}i2r4P_53&f;s4VFf9I#lPy?tk)BvgsHGnEZ4WP=|XZy$7(K|1Dn~ z`Bdozeu@IECs1y;T>|J2xEf$RT@dbR(g*zu`e^XH4A_Q7yqMMyI(eJ{m;Sw5cn9ziz<01Yr6a1&rQKwoZCC+yB5 zd~AO?EC6_~N_E4ewCal6u_p(##et(2U_DQR_AY=2t=Yez6YpUFotORqupY`Y1fb*5 za=`t7M*-%e=!IGgI5GV@gKa!$(*SftItxIDr?&$r6FMce9*ghq@obmfS&f;#T6ZW8 zC68K~XK?B7VsFDgS=7Nf{7j6jrL(#dDPkk(5;G&{jVY&{oT+{5;B6!Co|!XzptG3w z7g8{k;otn2(o>FIXZp^D>Sh|lcugT^+|YI2zhK1aT8rFgx`Ph4c^xHWKEkc}sbe^x zTKA1Xdu=t`W#plx&_2>=UOWBYn|y%FnD=5Q+;hJ;hBMT(lzgwKndytHCPQ!|6)~J` ze4T1bEMzuPypLs-uQO7+Ub?S zK$^^(5&xB*g4d@vS9KgxOfL!+16l*D$A@rl0KE%1^nXF$vJ`y-_yTYYU_C!0T%V!- z^y*(5fc2OW|CP=*&LwgB#j#o+4RT|9b+7SOl1W_*DUd4K=NJlg1Bqo|*+&tB4U|Te zRdddlbmp^!bmoc_274oN7-5L?tTaa2r&KMiL`%kF@d7LXSkIdOK&N*H-vYb?u%4p` ze+BpnU_VQKb;Rqdg`P(p3|9U&H!{5quo7@Dz>X_mnpwT?2v`N9`E$;(yw=EJE6=mO{pu%5c;SAb^{Aa4O~Z33+4 z+B)b9Kwk{NEfw1z0P8X78MP6l5@vCX&dGEYor0Qd=k81&q*4LL0KWiE0UX0%^#WD` zTEbEc0`NI0n>hOHXKz^GDkS>Wlw&fsLx5ZWoxu%lK-W@30P9GP?v`GOo2jRd@KB-B z{&cT&0sxmtZ8rcccI)rKaoEjb>R7n-cMxiI0AS&C)pQ_gx$~IVs4ZO>9RtO)BzWVKLFunjP?w?Y9+TjIL+oymnm|D}&Tln0T?J{KW(HvYC zm2Uv8vgWLsh7ih&8Z_1_AiMzA5qjU7(T3&#A zjJ72JD@hn^+-UY~#Cf|LH{)!t*Vt{iP-ctawb9e#`?qu2y3nOj=M;%v|33#)n%=&W#@W;@;ZpoI7}~Mq}}~vlV^DZdTkGrSI206L)r_ z@7M9FQ)`D$@})-1b&kj^Aicr=Y`2SIW)VKEW`}m*@CCcCmN=W2kPi8K9O;w4(@3|} z((wI7yTBtCe2(torOwB5_51i+9&%3Q^ib-?hn-1-nEHIDv%m52fYf>Wo#%=ML;2gz zWhSrqo-<|!dmM7kZ_PtHEqTM$Tfa)*)b47?>sRTcf~yx#x7(`(*V>#Wq=on+HoKUS z*+O(&#bK$o3%yV!s3q35!1XCzZEw}URYh0Z?`zyh^b6hL3cqktBM9{U3r>km})|$AIXS z|J0~Fhsr}2v4=yh-8_^Ls|dSp(%*DH8Fm%Zo9?NCh-;ahKK+;46m^Z~==E>b_Iy`w z?)%ZHap$`(Hmkhj0@v+k4F;9Cez!NH8`J#ZY_mMqs?!Bh3>(wK^%oBv#wvQc3V8aW z)a;(FO#O>esinQqRQirnYEfSox|kBAmh^KS)?YbKO&;L-G`j&QFuo0C-%^(^e4s-SckQU>+{VfvjRh+!eRo;+P8UGfBv3_Rp>7;nCqO#1j)Rcl+olb&2bci@mqeRX;W6 zZr8RJ2DQU3*F!B?uTNbkQZIbsn&jf4%UHK>T(fy7GYT|Fee{j%PM(K0W7AK94s}L> zLiQw=(I9ofcdn}XtmE&loXvYOM(dxjSh6c4mYU3Gxa~T9$)1d&R7%Kr1M-4TmCSQw ze9Y6QUF@!m=Iml;hKJqb%(#Z9Z@E~c`l(K?j3X{~O~;ILSV`NAW^7MxhC7wW$+&=H zbFOt3rncv1Y|mhSHO$Cj)r~Vm*8e)Ei!ExJA?k0zFKe2yL}ZPM5IfYD(IRzK%ZyJm z*tcyh?k4R~bhGxT{w*Cd4w&z~4~b?BDCD6vQ=0~6xb$1IsqNQfXkPtNY^!-09gIt{ zm(9(#@xtMQbtunSd-nHlSXr zXifdLtKFyO2*Ma;v}WHoN4V8ttLb2Gm}{5DtCi&y6Uv5Z6UxR;9-~!qHT9hhe0*-j z*pb@kv19azQRVSUrE;p!D4iG|J9hj8Em1apf-+&e$TnQ)ZfJL~7cX=-)0}58YRTl- z$_ZtYlu;A4@vesHd5qGO$}z};eyA{`Hjz4l+n*7)vHhc>y@vlELXMq^=fhI0(VX=swxw-VPh+&N)2mCMge73OisQ@ zzz1g&V~tElD^om;K(6V*71(oYmO0wA$;+uwDkn@e$}~DJUph@1rHvUjVR%7Jw!N^h zK?7}yrcRttK4zHSbUn?)@mgg=*1e~@iMGC?UzD&?b^vKwW0(_YOyW(8>wsl;+^eDk~s6D!A*sl&&j^|kpIHAv$$r!=%Ka+Ch2tR^-#N} zCY?!FN(H&+NaBc&7(honpZNK+JiOUWVFl=c}Sv+j-pPPFttJpFTL2^pi!jY%os?= z*vj$=Q(@^}?9R`R{VgF0%Xu|-Wj3;(U$Z^4g}nD_L_iJ}fuI5WdB3^$i9u7y;fZ~&TC0NOi?pTMgqC|tSL?97OgcM&eCU+V& zYSQRVzHr1B3ljJu;czSx^+sbd^KEkbmR{nn?+HYLiiSKx-e4#g^Cjd9S175NgP`<6cLc6*Y(nAaZ+h6BN*5{YW6+=q>O!tGiadZVu5tH7x1l2yE#VCW0;(S+4P;0AfgbWj!#-~`fLi;t zNX#c+#&X^TJr?)-6TW~y9`r{OVI?XLV&k54_wq!1J}ny4lHN!(8AfyE%h}OO-F-cQ zU{FzFiG&jL`~7OfCtpGIDBEy@JI@nLYTj5foCx{UgfFf}FQ>MNMd7U&I?xV)8ZYXo1wl6OU=(U_gxo{DEXLuKDC^+4Kr`$Po(ZSuD;Y4h_UH|+_~(g`R*xf)iQUzM#wT0 zPXq!%NCd=GE=&EBvAWWoUl>s!dI89A!WUBmswNM8>hGM33w@D5EELgv0W>xl^af?+ z;lDG%g)2&#ouT`Z9zGHdS>{70WF>k!~@<$Op64(vRcQ?NEkCC8BtUp zdN~=7#^YKtBx}aZNT3sf5O2R0^@X*#Urrh`BN`3|eIZ{&@y0d9AJybxr)NeWneZkR zUosJf!1}{cd3f5)&;qeYG8)#@SWJzE(Ff(m%!v5nQH*;)i>lsGBIK1v)Xoga6IN9( zBr^;FjQfJ&uskwtYG69Vd?782QX`3w7L!M%PYpGZR3VSipqA7$e^efAObr!cqa?Lt zR1L+GF)bjEF{Xwu;X^-YN+=xlB{37_vBuN@1vsrUuk$G^mCW@sQ8wi>e8EqA@iBS|H(9FwY{1D54VbBx7nM6ESo~0M$p? zN-!i(Hl_yp-VcST`h8(9#w;pNF{Xw;qWLi>&~lN4mc+cDs!xp~R3@3!6qUp_2*oH* zOJD{B)v=XYpkhKLe$M8QyB(Xo&)u-$MT1)TBE!RKG7*n?L(yO~5f7^|`FiHv>%Q6J z*HmvXqQw14f7qu$rf*=rXWcC+>1B+jMs7?~m5>tfLr-aOO$*64-o<=--4ofOH{1<# z{mDcqMIu3{RX;|=AC_;U$R3`c zFX~rg=n#qf}yBJOSU4x3~v#w7r9|*i-1q>qmbVhh|7!g2xGy>MYUoH1@(;kl3Ey2 zi=7Xx7`e%0AQbaPVpy8v(D#ar*C=Vp$W^Hapk(~$_*g^<$=G<&nvn~s$IMV^grjOW ztjXA^>5E1p7L5m!QLjG|*1XU$@)G8&aCb%T#G~FsBost5!=a!iFJ;vg?r<(9P$(XU z$)JVev1m9cGyGybCk@OEhZWTu2*Z|96n`S=ld;Pg%1hOGG!>(mUJ1WH5QGgPFSjpa z3NMY<Bbv ziBQn1MiUXp>HXU zFg-LiBtK}-VV1^|3bYBdE*7GQ{E(5EF)xt;mP$x+JQ4?oygn^55lO_L)nk5$S2C(Z z!^(g)GbC?Fo6;dHt_tkfa5M>{PYueC zrblXVU(By+S~46ZRUvPr$etdU#X-odH=b10kP;8en~eD$3t@GL2Vk};uo+;>J!a5V zZybv}R(}Q4O+nv3o~8$UB2_xGy;BzH|&93W`r6~D9|{5FP0%K>Q&|4rVb0i0K(Y$V0S4o4PyI@5s{aK zi2|*ih+!LrX`hgvwfAO=`?@=^bH}lov;(WA3eAsgpZuEr4oX+a`t5dm@?sI}82qr8!hZC( zl9XS!Gb8%b-R}H6Y!!kD@Tjomuz#u2m@*<}0dWYf&egO2t^{7Gy|F-8g4K>O`jO!m5q({ea} zl3U7)1*58>LEHFz$!G{N`-c7YGa38kVFLxN4{Zb$752r#@|$+u@=4DO)y~S%6qq=Q z215z!Ks+SBWh?+1mU_(0fQmh8I2QHF2kKe?-Zm6{9DU;t$HM^_{MdGD@;jzJ4~JnV zhoMj7fdDjISbkU6=N@bVAf6~AreV{T@X7C`>1OP`0}yX4CV>QLuY-nCG`GlD(r6vP zq8oy8ln)td){m9m4>JdgD=9uzem_lf6O9m88 z{?O2e{inHIIe{3~c&`^u2N(=kb`BfrFbT5|OI|dB8I{oDLHP*jA#82^FzeJvD5NPq zC5(dd>LOEGd-S! znxV}IHjxUHsC>+r(NQ!IcAA3KDH4jQUioWGvCrK7^PsA*PGkA>V!|qL<9uVE$98_< zuFxkKlJXw#6~bP`${h2;2L$`-r_;i(Ky!wb zP}Ccv9ATLJoF@EO1AJ%;_NGBUlzc$`#Ss3eAKP%4f8^_mp-A~un(&il52^A6k|B7! z!g2Z6TH*IV0mPzFY>l!0K!y3_-wfG@f5?@Ct)U+|VqW;XF<(;t-IRT7PLnbCVN~o; zeQHwv!;pP4kCVQj7j;n+@F2;5rpZ3$xPrprB7l`4VC8k`vM0Ia^4d@E;ch~dkMhaz#z zdzi@NBDjt1d)nP4Hx8o)lL%`FmMAUYlV>6)IE!-O<-tA$yLu>2I4eUk?oW`ns2EF_ zKY$Y8M)X4#Re3fyJbh0b@v@@}+-+FtF?Z8Kb5jhPIU2+iLL(!JmXzmkOIYV)?y1I{ zz$Aj-(HF;X$6<%6@?7q2BN}s}AXf=uR|0_#XhAF(et8~uj}g1?7k6PU5(Z$uXhD^R z9tP2Tj&(Zbz6D-3Rf9#TVS|~#@)4C6u%j!neY@ZrxJ~0ee>|+gIfS_#$J#6}WGx;? zZ z#P(Q=tJvrGVj*nvRBSJo8i{l>JO;~Lg`0q65HcK>8C!fitlo$gg!;lRHyVcrBihucS$SFqh{X>EuEuo;7^FP_lI z(vnxQ-6_zuD3)@_mlxxlg#Vj%VQbMG-QcBdkfLDEj3VNGIOOg!=7v8Mfs@FmMPRx}M$;N| zZa^_W0t0av!$_C#%4_wx(LVnS}0#Zjm44<{Hr> zK7b{q!k`TYeCQ+vyB>I8AL4E`qIHuF{tXoD$K*%OYB(XU=UD4s-RI?@*CPQ1rDBMa zq);E`CNQa?6x8b+sH4v2$wUxG5@g+=t7Bxu!*Biw$2u-_hw`+r0tFw`*Q*fuI5%)U zIE|%zHv0#6R$c%Oer$>Y39MvE_-W-wxu_BS^bhc#z%v+!+C_{SfT%0-Ms)po(j}Og zu*2bU#ggGyV(9u!9LpK!?o?H&4J*glWhI?n>c^ksJ9VOCA_Hkg>Oc^z5toj63-$db3A;RWb0)A(f2wS+q^aN#Y{dB7g zr<{pVT4jo3Wlg15xUC$spCk2W)0#;V_aw*WHIv@twsA~pE|qalaqOAq(gAL}j$g_? zFOqV&r#bd(k@P;d!z8vT25~3HV#U%&+%A(ivL%SSId)S^=}Ybz$Z%_^1$&_th|ikH zuY^3OBgL$9Yn1-Hj`+D3Opc|k!SSMryh6xJ=*c!xG5d?yU)B*n_ln7pYy*y0O=JZj zubIdmLSD!4w2}PW9{q1Ii?l@^drf2{A^Xg_zuFe;`%R=nJ0NeE$b3THG<)oLJEVC_ zN6NSZCdbBe!11<$pLwP8*_2K|j+)2|gnVQm zxp16@G+5hyII}fxAR>Qka&7Dku1`$lPeMM`k-pq#`roeXPOs$VJ~uhO@PgwD6AAl( zd}$)L5b~9Qz%d1FfW3tRzh@#C3d_e#t|C9UzJ}8BOI_GlKf3xG9qG$`YjR`;z;WC} z1_R+waDCZOuXGLz2PF?%NAV}2-TF%dxU`s--1q2``O-Dq5BlFeEMoz(|B++kDy2Rw z355R%8U~u+V)o1esbK;1J+@_mNZ21k6=61ogFkb3u#?w9ZI;wX65G21LRq#YTV&TR zlnV0C!vBk@9I%CoD>$n0hiKOxNXn;-2-ay4YWph$b`dJ}8^`WmB;9+qjDF{suZ!ek z2Nr|>4~}(?NTvLr+z57bi6pZDHBxK-FK(oP?WmF3@YTF#VoRi=tm*tr{g}!dE@QqK z?hq?%F6FR^OghhgGs}4!+u!;RN<~eAFo(4uPBWo)Bk;z`GkEiO>x^`RmO)9}!m|O( zrP=I)<*3oEIu#=>lmO`|tt`_Cg(*%q`OYCfVL@sKH|1P~b3RH9FTtnebfF2$QiFV04E_-OE3p{7Z)i6T zDwgtWdIaKmqOTNPs$~l7MH$j^7DmRi?_}xDvqdfAjq!i$LeynBz7db{=T`8nq`MSm zV=t1T{7Sx(b?*+*JbaPVmA{j}k+3l9cdK*}e;2P17G#(8mOAox;|H;HEY(|To3V;N zsEbAf<`8;((>2mU`|32Az~;b<(^^=$I1#~4MP9?-rzh~obXjW4e!W<#$9#RH5&T+y zFhqVS_c+2|9y` zsj&HA;KB>_s5#aP2Ot;x>=-TS>}x_c@vQp<4E(EuBq{eX{sC%x?ID{l5McJ3(coQ* zyFS}{HOjFsmd?rbVlRrZ$K``SB&ng(9_N{Jk~D^Uf@jrp-6}gc30ZG8+x658AX|)f z@hN^38*mjSLWL^1*(HOeM)=8>iD{$`S4qYElbGJ%>dPiwEj8k{@oe$c(thqKo=I_O z8v8>*hTC;yF88!aY@mX;!$j@{!tdlS(eHP#A0`6Z#do9bYRGalsX;DWR>>e-7dXDh zs^yh;^D%N)Hee-5DXR+Ct1$Ic>~teR7;uo~L;x2yp5ZfLdkiy7m1lXfT!xjIhRSm$ zYMLp}^I4?oS2r;?V#8BT$65H3aikx z#2$3+FsVUGz37myaL+F5lpvwb8F0y~ne= zhf7Tg57xFa4zqA%8Tw{IxvGph#MeBZ)4cKfe8HI+z@IR&QcnGsOq zpJO_Xkn;I2@MBiKkx~P;XoTcw{AF#)Xi#m7ao6lCzGhQyA$N?g*^}FX`x;7mgj7`Y z4d3|8iejUosS|M9Oc|qU-}1~mQfkc|=WDLbYg~9DeZ-X{%xTRl>8 zaNqGY8}piX{GP9GW{X--=l@XKqaci}s2DqjhLK`^hvbv&ot=VYpU_9|ieil+=Q&7Ff|}D8%Xd-}BhI(U`Y43s3_ZKvauk}G?Ar*%o5mxW2K4QY?M?XozKq^ zy0DXP<5ua76;e}tu$`#w*$WjYY+hPaHWSAo^?V~fPlX>ajDsW`RAcoZKSw%mBN)d% z_*EitT$Kr{*v2jt=n4b8G(+FZ!Y|1bO9ku;i5e>%BsI?cXZ)Q;USCW=zIPen zwwEJ(w-Fvj<*hQpA0W)F7TAgD((3%Pw0n)fPF^nc;MNL;c`%t)l6y>~*<>L1nuxx} z+$R`@q_`TkS{03nP%ehVJ$+Bljp{z%RS9BX96wz&nOWBH9 z(!{Kd!b3VW5HzjS>T9JjS(^mo9#+U_QeP~VirB5!!v=j!U^%m;l=pEVN8cjHvDF?^ zHgU{k7>7>?E}b@Z?C8xxw!SsS<=e8++UPCl&ugV+TuT2t6SrGJQSyJ{u**lM{PI>K zf~~&}J@TZ9$Ynsb>Bua0qzqQzQvw?>RJxAajy@YIY5dc|J=9&5OuCWw1#`f%Ltx|P zz%be=JXqU-J=lpM*cG>fta7^qwrifWfQ_6BWVeZA&ja#|jx1yw<{_JBb!3(OIYTO* zs>I+tZ_SB@kY+Y;uL|s(by7FiYr+_syAifAmR-nBw9anMc5IcJGoD29 zbx7f4$mt$a0QU;!z0;Xfq?|mM+^`GGbEpG{HYFm8`jx=C>;1mYFr3kiOKKVd;G<*9- zqRXh$#v#Y$kAsrfZm;#BjUmF5}Ut2U3@4*K^{MJM|JqYBuz`8#ut;&u2;j2?|L;(MU&xhlu6Z+)$vai;{ z>MnT*v+N`$puYV;HOts#>(R3B&LI6tr0>&7dGHeAf`eC~`>q=9SI9r4N3-6KAjOYq zqze8gVNPu+Ijr{v=|b*jfi2n~-O2r;|DDU8d=wQwWg=H@1oEqi{7A@eCQ`Er$nOS{ ziz{Uj9E0Hsn1WLcTnYKZ^!#*X%u0&LYrDVLq|ICcepS%Y@vc~V12x*s>2 zLbz6in`v;Rl?=w-_x7$> z!OxQO9Hz*yC>BMrao-t{x)z*;XRdfT?NIz|WmIa3qe~QY88=^~HQ)mFdsk^{)&lV! zV{dA#D{WbI82PP_NkdyL6s3eVO2ZP6OqQ1^m6giWMPj|O(Msh=Y*8p8fn~d!bUzFT z{8_>}c1Ks#ux{O@vD_UZd+2dV=J3|d$;YKR+*18-Is5DhSY=FP8Jne^+%l0}x>*YF z%f$=HAZyFkZd>O*vc*Fq&vm#hW$3AQ&uKB3=(&jNOs;i z?CD3db6AHID0l0W^Vn2ER*7`Wzbkt=g|%U|$PT5X?))0Dli~IVZiSh?7OxC#l`i1! z5!t{er7(A|$mTpLUBTZcma?%0nQhpk+oVQ$DqRu8wE;NEwIr^}$@d%4-Ppu!sM)$S z=JwnJBAfoc6v@SrdT!`R+9BP{KOxo_QQ_TEYqo4BqBe_c z{Z0t!7LonAQ<}o3#4+rzotPZQcfe)%_AV($*eXuP+oME7vM~3g$j0oJ`f}Suwtcr0 z;-3V==_HEQd90f}D4ZvtQC$`09IV<-AaEm=h7}$Xq;Y`{Ou^Z4nvw$rap52gtL+rpxug~hhy@?6(GNke?5!c?M zS)JL50~vUMttzt~+wdxOh6hCEJ1BJ{q#i4L4fT0jY{T|W&uYWJgWqg*Uz?ra-o?1% zR5vf6`GdGVphN@oYDgd`zb9VBHhi3Q6?af%%Ine)=OJ+%btm&~&1}FXeUf7Lq%PcHQ?4>MWy3`-vaNfitN5d$pOxN{>E}KY zS?_()aQ*LE~}`? z6j|Axj2w39dr~$V`Ys|*i9yOQ$p0#qvCexk&Sgb!WEHTAJsI`bDPs7|O0Cn8uqpRD zCiFpc${$9OGVV{2?fgJe>-{A|DB?*9Ypk}Es_ diff --git a/tests/main.rs b/tests/main.rs index 7ce09ee..a48dc5a 100755 --- a/tests/main.rs +++ b/tests/main.rs @@ -9,7 +9,11 @@ use std::sync::Arc; use conquer_once::OnceCell; -use pkmn_lib::dynamic_data::DynamicLibrary; +use pkmn_lib::dynamic_data::{ + Battle, BattleParty, DamageSource, DynamicLibrary, ExecutingMove, MoveChoice, PokemonBuilder, PokemonParty, Script, + ScriptCategory, ScriptContainer, ScriptOwnerData, TurnChoice, VolatileScriptsOwner, +}; +use pkmn_lib::script_implementations::wasm::script::WebAssemblyScript; use crate::common::{library_loader, TestCase}; @@ -50,3 +54,65 @@ fn integration_tests(input: &Path) { println!("\tRunning integration test {}", test_case.name); test_case.run_test(get_library()); } + +/// Assurance has the interesting properties that it creates a special data script internally, and +/// deletes that data script through the get_owner functionality. +#[test] +#[cfg_attr(miri, ignore)] +fn validate_assurance() { + let lib = get_library(); + let p1 = Arc::new( + PokemonBuilder::new(lib.clone(), "charizard".into(), 100) + .learn_move("assurance".into()) + .build(), + ); + let p2 = Arc::new(PokemonBuilder::new(lib.clone(), "venusaur".into(), 100).build()); + + let party1 = BattleParty::new( + Arc::new(PokemonParty::new_from_vec(vec![Some(p1.clone())])), + vec![(0, 0)], + ); + let party2 = BattleParty::new( + Arc::new(PokemonParty::new_from_vec(vec![Some(p2.clone())])), + vec![(1, 0)], + ); + + let battle = Battle::new(lib.clone(), vec![party1, party2], false, 2, 1, None); + + battle.sides()[0].set_pokemon(0, Some(p1.clone())); + battle.sides()[1].set_pokemon(0, Some(p2.clone())); + + let script = lib + .load_script(ScriptOwnerData::None, ScriptCategory::Move, &"assurance".into()) + .unwrap() + .unwrap(); + + let mv = p1.learned_moves().read()[0].as_ref().unwrap().clone(); + let choice = TurnChoice::Move(MoveChoice::new(p1.clone(), mv.clone(), 1, 0)); + script.on_before_turn(&choice); + assert!(battle.sides()[1].has_volatile_script(&"assurance_data".into())); + + let executing_move = ExecutingMove::new( + vec![], + 1, + p1.clone(), + mv.clone(), + mv.move_data().clone(), + ScriptContainer::default(), + ); + let mut v = 20_u8; + script.change_base_power(&executing_move, &p2, 0, &mut v); + assert_eq!(v, 20_u8); + + let s = battle.sides()[1].get_volatile_script(&"assurance_data".into()); + let data_script = s.as_ref().unwrap().get_as::(); + + data_script.on_damage(&p2, DamageSource::Misc, 100, 50); + + let mut v = 20_u8; + script.change_base_power(&executing_move, &p2, 0, &mut v); + assert_eq!(v, 40_u8); + + data_script.on_end_turn(); + assert!(!battle.sides()[1].has_volatile_script(&"assurance_data".into())); +}