From de3bb4c84881a735e39ec75bb907d9e878edb9e4 Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Thu, 28 Mar 2024 15:36:38 +0300 Subject: [PATCH] [MIRROR] Cultist pets (#2590) * Cultist pets (#80595) ## About The Pull Request cultists can now convert pets on their side. when you convert a pet, it will become much more dangerous and obedient to you, it will also gain a new dangerous AI. cultist pets will look for fellow dead cultists, and revive them by dragging them to nearby revival runes and activating it. if there is no revival runes around them then they will create their own and drag u to it. u can give them commands to follow, attack, or to create revival runes. they will also go around to crit non cultists so cultists can convert them ![pughealed](https://github.com/tgstation/tgstation/assets/138636438/8cd10a4f-2a30-40d9-b4fb-c9ff70bdcddd) they will also now feed on organs and blood for healing ## Why It's Good For The Game adds a extra layer to cult, u can now command non-sentient pets to aid you ## Changelog :cl: add: cultists can now convert pets to their side /:cl: --------- * Cultist pets * span_cultlarge > span_cult_large --------- Co-authored-by: NovaBot <154629622+NovaBot13@users.noreply.github.com> Co-authored-by: Ben10Omintrix <138636438+Ben10Omintrix@users.noreply.github.com> Co-authored-by: san7890 Co-authored-by: SomeRandomOwl <2568378+SomeRandomOwl@users.noreply.github.com> --- code/__DEFINES/ai/pets.dm | 14 + code/__DEFINES/antagonists.dm | 2 + code/__DEFINES/cult.dm | 6 + code/__DEFINES/span.dm | 8 +- code/__DEFINES/traits/declarations.dm | 2 + code/_globalvars/traits/_traits.dm | 1 + .../basic_ai_behaviors/pull_target.dm | 25 ++ code/datums/components/cult_ritual_item.dm | 6 +- code/datums/elements/basic_eating.dm | 2 + .../items/stacks/sheets/runed_metal.dm | 12 +- code/modules/antagonists/cult/blood_magic.dm | 52 ++-- code/modules/antagonists/cult/cult.dm | 8 +- .../antagonists/cult/cult_bastard_sword.dm | 2 +- code/modules/antagonists/cult/cult_comms.dm | 28 +- code/modules/antagonists/cult/cult_items.dm | 12 +- .../antagonists/cult/cult_structure_altar.dm | 2 +- .../cult/cult_structure_archives.dm | 2 +- .../antagonists/cult/cult_structure_forge.dm | 2 +- .../antagonists/cult/cult_structures.dm | 8 +- code/modules/antagonists/cult/cult_team.dm | 10 +- code/modules/antagonists/cult/runes.dm | 149 +++++------ .../antagonists/wizard/equipment/soulstone.dm | 4 +- .../job_types/chaplain/chaplain_nullrod.dm | 2 +- .../living/basic/blob_minions/blobbernaut.dm | 2 +- .../living/basic/cult/constructs/harvester.dm | 14 +- .../mob/living/basic/farm_animals/sheep.dm | 4 +- code/modules/mob/living/basic/pets/cat/cat.dm | 1 + .../mob/living/basic/pets/dog/corgi.dm | 3 +- .../mob/living/basic/pets/dog/dog_subtypes.dm | 1 + code/modules/mob/living/basic/pets/pet.dm | 17 +- .../living/basic/pets/pet_cult/pet_cult.dm | 85 ++++++ .../basic/pets/pet_cult/pet_cult_abilities.dm | 14 + .../living/basic/pets/pet_cult/pet_cult_ai.dm | 246 ++++++++++++++++++ code/modules/pai/pai.dm | 2 +- .../chemistry/reagents/other_reagents.dm | 4 +- .../spells/spell_types/conjure/_conjure.dm | 5 + icons/mob/simple/pets.dmi | Bin 85132 -> 87208 bytes .../code/game/objects/items/holy_weapons.dm | 4 +- .../modules/mutants/code/mutant_component.dm | 4 +- tgstation.dme | 4 + .../tgui-panel/styles/tgchat/chat-dark.scss | 8 +- .../tgui-panel/styles/tgchat/chat-light.scss | 6 +- 42 files changed, 604 insertions(+), 179 deletions(-) create mode 100644 code/datums/ai/basic_mobs/basic_ai_behaviors/pull_target.dm create mode 100644 code/modules/mob/living/basic/pets/pet_cult/pet_cult.dm create mode 100644 code/modules/mob/living/basic/pets/pet_cult/pet_cult_abilities.dm create mode 100644 code/modules/mob/living/basic/pets/pet_cult/pet_cult_ai.dm diff --git a/code/__DEFINES/ai/pets.dm b/code/__DEFINES/ai/pets.dm index c7383f56a00..48d4f2d67d0 100644 --- a/code/__DEFINES/ai/pets.dm +++ b/code/__DEFINES/ai/pets.dm @@ -51,6 +51,20 @@ /// key that holds items we arent interested in hoarding #define BB_IGNORE_ITEMS "ignore_items" +// Cultist pet keys +///our ability to summon runes +#define BB_RUNE_ABILITY "rune_ability" +///the cult team we serve +#define BB_CULT_TEAM "cult_team" +///our dead cultist we revive +#define BB_DEAD_CULTIST "dead_cultist" +///nearby runes +#define BB_NEARBY_RUNE "nearby_rune" +///occupied runes +#define BB_OCCUPIED_RUNE "occupied_rune" +///friendly cultists we befriend +#define BB_FRIENDLY_CULTIST "friendly_cultist" + //virtual pet keys ///the last PDA message we must relay #define BB_LAST_RECIEVED_MESSAGE "last_recieved_message" diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm index d5533dcac54..7a510c9cdee 100644 --- a/code/__DEFINES/antagonists.dm +++ b/code/__DEFINES/antagonists.dm @@ -219,6 +219,8 @@ GLOBAL_LIST_INIT(ai_employers, list( /// Checks if the given mob is a blood cultist #define IS_CULTIST(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/cult)) +/// Checks if the mob is a sentient or non-sentient cultist +#define IS_CULTIST_OR_CULTIST_MOB(mob) ((IS_CULTIST(mob)) || (mob.faction.Find(FACTION_CULT))) /// Checks if the given mob is a changeling #define IS_CHANGELING(mob) (mob?.mind?.has_antag_datum(/datum/antagonist/changeling)) diff --git a/code/__DEFINES/cult.dm b/code/__DEFINES/cult.dm index 3e0395eab4e..06393d145f8 100644 --- a/code/__DEFINES/cult.dm +++ b/code/__DEFINES/cult.dm @@ -36,6 +36,12 @@ /// The global Nar'sie that the cult's summoned GLOBAL_DATUM(cult_narsie, /obj/narsie) +///how many sacrifices we have used, cultists get 1 free revive at the start +GLOBAL_VAR_INIT(sacrifices_used, -SOULS_TO_REVIVE) + +/// list of weakrefs to mobs OR minds that have been sacrificed +GLOBAL_LIST(sacrificed) + // Used in determining which cinematic to play when cult ends #define CULT_VICTORY_MASS_CONVERSION 2 #define CULT_FAILURE_NARSIE_KILLED 1 diff --git a/code/__DEFINES/span.dm b/code/__DEFINES/span.dm index bf918b55efc..0447e87f532 100644 --- a/code/__DEFINES/span.dm +++ b/code/__DEFINES/span.dm @@ -38,10 +38,10 @@ #define span_command_headset(str) ("" + str + "") #define span_comradio(str) ("" + str + "") #define span_cult(str) ("" + str + "") -#define span_cultbold(str) ("" + str + "") -#define span_cultboldtalic(str) ("" + str + "") -#define span_cultitalic(str) ("" + str + "") -#define span_cultlarge(str) ("" + str + "") +#define span_cult_bold(str) ("" + str + "") +#define span_cult_bold_italic(str) ("" + str + "") +#define span_cult_italic(str) ("" + str + "") +#define span_cult_large(str) ("" + str + "") #define span_danger(str) ("" + str + "") #define span_deadsay(str) ("" + str + "") #define span_deconversion_message(str) ("" + str + "") diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index 6745898a8ef..bab14920f39 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -1095,6 +1095,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Trait which self-identifies as an enemy of the law #define TRAIT_ALWAYS_WANTED "always_wanted" +/// Trait given to mobs that have the basic eating element +#define TRAIT_MOB_EATER "mob_eater" /// Trait which means whatever has this is dancing by a dance machine #define TRAIT_DISCO_DANCER "disco_dancer" diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 94111858680..0dd3dda6b8b 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -294,6 +294,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_MINDSHIELD" = TRAIT_MINDSHIELD, "TRAIT_MIND_TEMPORARILY_GONE" = TRAIT_MIND_TEMPORARILY_GONE, "TRAIT_MOB_BREEDER" = TRAIT_MOB_BREEDER, + "TRAIT_MOB_EATER" = TRAIT_MOB_EATER, "TRAIT_MOB_TIPPED" = TRAIT_MOB_TIPPED, "TRAIT_MORBID" = TRAIT_MORBID, "TRAIT_MULTIZ_SUIT_SENSORS" = TRAIT_MULTIZ_SUIT_SENSORS, diff --git a/code/datums/ai/basic_mobs/basic_ai_behaviors/pull_target.dm b/code/datums/ai/basic_mobs/basic_ai_behaviors/pull_target.dm new file mode 100644 index 00000000000..9bfc3f85d24 --- /dev/null +++ b/code/datums/ai/basic_mobs/basic_ai_behaviors/pull_target.dm @@ -0,0 +1,25 @@ +/datum/ai_behavior/pull_target + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION | AI_BEHAVIOR_REQUIRE_REACH + +/datum/ai_behavior/pull_target/setup(datum/ai_controller/controller, target_key) + . = ..() + var/atom/target = controller.blackboard[target_key] + if(QDELETED(target)) + return FALSE + set_movement_target(controller, target) + +/datum/ai_behavior/pull_target/perform(seconds_per_tick, datum/ai_controller/controller, target_key) + . = ..() + + var/atom/movable/target = controller.blackboard[target_key] + if(QDELETED(target) || target.anchored || target.pulledby) + finish_action(controller, FALSE, target_key) + return + var/mob/living/our_mob = controller.pawn + our_mob.start_pulling(target) + finish_action(controller, TRUE, target_key) + +/datum/ai_behavior/pull_target/finish_action(datum/ai_controller/controller, succeeded, target_key) + . = ..() + if(!succeeded) + controller.clear_blackboard_key(target_key) diff --git a/code/datums/components/cult_ritual_item.dm b/code/datums/components/cult_ritual_item.dm index c3acb0b9467..74bac463e32 100644 --- a/code/datums/components/cult_ritual_item.dm +++ b/code/datums/components/cult_ritual_item.dm @@ -283,13 +283,13 @@ return FALSE if(ispath(rune_to_scribe, /obj/effect/rune/summon) && (!is_station_level(our_turf.z) || istype(get_area(cultist), /area/space))) - to_chat(cultist, span_cultitalic("The veil is not weak enough here to summon a cultist, you must be on station!")) + to_chat(cultist, span_cult_italic("The veil is not weak enough here to summon a cultist, you must be on station!")) return if(ispath(rune_to_scribe, /obj/effect/rune/apocalypse)) if((world.time - SSticker.round_start_time) <= 6000) var/wait = 6000 - (world.time - SSticker.round_start_time) - to_chat(cultist, span_cultitalic("The veil is not yet weak enough for this rune - it will be available in [DisplayTimeText(wait)].")) + to_chat(cultist, span_cult_italic("The veil is not yet weak enough for this rune - it will be available in [DisplayTimeText(wait)].")) return if(!check_if_in_ritual_site(cultist, user_team, TRUE)) return @@ -359,7 +359,7 @@ to_chat(cultist, span_warning("The sacrifice is not complete. The portal would lack the power to open if you tried!")) return FALSE if(summon_objective.check_completion()) - to_chat(cultist, span_cultlarge("\"I am already here. There is no need to try to summon me now.\"")) + to_chat(cultist, span_cult_large("\"I am already here. There is no need to try to summon me now.\"")) return FALSE var/confirm_final = tgui_alert(cultist, "This is the FINAL step to summon Nar'Sie; it is a long, painful ritual and the crew will be alerted to your presence.", "Are you prepared for the final battle?", list("My life for Nar'Sie!", "No")) if(confirm_final == "No") diff --git a/code/datums/elements/basic_eating.dm b/code/datums/elements/basic_eating.dm index 2a7a4b46598..757fd8b3519 100644 --- a/code/datums/elements/basic_eating.dm +++ b/code/datums/elements/basic_eating.dm @@ -23,6 +23,7 @@ if(!isliving(target)) return ELEMENT_INCOMPATIBLE + ADD_TRAIT(target, TRAIT_MOB_EATER, REF(src)) src.heal_amt = heal_amt src.damage_amount = damage_amount src.damage_type = damage_type @@ -35,6 +36,7 @@ RegisterSignal(target, COMSIG_HOSTILE_PRE_ATTACKINGTARGET, PROC_REF(on_pre_attackingtarget)) /datum/element/basic_eating/Detach(datum/target) + REMOVE_TRAIT(target, TRAIT_MOB_EATER, REF(src)) UnregisterSignal(target, list(COMSIG_LIVING_UNARMED_ATTACK, COMSIG_HOSTILE_PRE_ATTACKINGTARGET)) return ..() diff --git a/code/game/objects/items/stacks/sheets/runed_metal.dm b/code/game/objects/items/stacks/sheets/runed_metal.dm index a1febc091b7..b60cd67d389 100644 --- a/code/game/objects/items/stacks/sheets/runed_metal.dm +++ b/code/game/objects/items/stacks/sheets/runed_metal.dm @@ -8,7 +8,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list( \ time = 4 SECONDS, \ one_per_turf = TRUE, \ on_solid_ground = TRUE, \ - desc = span_cultbold("Pylon: Heals and regenerates the blood of nearby blood cultists and constructs, and also \ + desc = span_cult_bold("Pylon: Heals and regenerates the blood of nearby blood cultists and constructs, and also \ converts nearby floor tiles into engraved flooring, which allows blood cultists to scribe runes faster."), \ required_noun = "runed metal sheet", \ category = CAT_CULT, \ @@ -20,7 +20,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list( \ time = 4 SECONDS, \ one_per_turf = TRUE, \ on_solid_ground = TRUE, \ - desc = span_cultbold("Altar: Can make Eldritch Whetstones, Construct Shells, and Flasks of Unholy Water."), \ + desc = span_cult_bold("Altar: Can make Eldritch Whetstones, Construct Shells, and Flasks of Unholy Water."), \ required_noun = "runed metal sheet", \ category = CAT_CULT, \ ), \ @@ -31,7 +31,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list( \ time = 4 SECONDS, \ one_per_turf = TRUE, \ on_solid_ground = TRUE, \ - desc = span_cultbold("Archives: Can make Zealot's Blindfolds, Shuttle Curse Orbs, \ + desc = span_cult_bold("Archives: Can make Zealot's Blindfolds, Shuttle Curse Orbs, \ and Veil Walker equipment. Emits Light."), \ required_noun = "runed metal sheet", \ category = CAT_CULT, \ @@ -43,7 +43,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list( \ time = 4 SECONDS, \ one_per_turf = TRUE, \ on_solid_ground = TRUE, \ - desc = span_cultbold("Daemon Forge: Can make Nar'Sien Hardened Armor, Flagellant's Robes, \ + desc = span_cult_bold("Daemon Forge: Can make Nar'Sien Hardened Armor, Flagellant's Robes, \ and Eldritch Longswords. Emits Light."), \ required_noun = "runed metal sheet", \ category = CAT_CULT, \ @@ -54,7 +54,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list( \ time = 5 SECONDS, \ one_per_turf = TRUE, \ on_solid_ground = TRUE, \ - desc = span_cultbold("Runed Door: A weak door which stuns non-blood cultists who touch it."), \ + desc = span_cult_bold("Runed Door: A weak door which stuns non-blood cultists who touch it."), \ required_noun = "runed metal sheet", \ category = CAT_CULT, \ ), \ @@ -64,7 +64,7 @@ GLOBAL_LIST_INIT(runed_metal_recipes, list( \ time = 5 SECONDS, \ one_per_turf = TRUE, \ on_solid_ground = TRUE, \ - desc = span_cultbold("Runed Girder: A weak girder that can be instantly destroyed by ritual daggers. Not a recommended usage of runed metal."), \ + desc = span_cult_bold("Runed Girder: A weak girder that can be instantly destroyed by ritual daggers. Not a recommended usage of runed metal."), \ required_noun = "runed metal sheet", \ category = CAT_CULT, \ ), \ diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm index 4afd38739fc..59d92bdf59f 100644 --- a/code/modules/antagonists/cult/blood_magic.dm +++ b/code/modules/antagonists/cult/blood_magic.dm @@ -46,9 +46,9 @@ limit = MAX_BLOODCHARGE if(length(spells) >= limit) if(rune) - to_chat(owner, span_cultitalic("You cannot store more than [MAX_BLOODCHARGE] spells. Pick a spell to remove.")) + to_chat(owner, span_cult_italic("You cannot store more than [MAX_BLOODCHARGE] spells. Pick a spell to remove.")) else - to_chat(owner, span_cultitalic("You cannot store more than [RUNELESS_MAX_BLOODCHARGE] spells without an empowering rune! Pick a spell to remove.")) + to_chat(owner, span_cult_bold_italic("You cannot store more than [RUNELESS_MAX_BLOODCHARGE] spells without an empowering rune! Pick a spell to remove.")) var/nullify_spell = tgui_input_list(owner, "Spell to remove", "Current Spells", spells) if(isnull(nullify_spell)) return @@ -77,7 +77,7 @@ if(!channeling) channeling = TRUE else - to_chat(owner, span_cultitalic("You are already invoking blood magic!")) + to_chat(owner, span_cult_italic("You are already invoking blood magic!")) return if(do_after(owner, 100 - rune*60, target = owner)) if(ishuman(owner)) @@ -167,7 +167,7 @@ /datum/action/innate/cult/blood_spell/emp/Activate() owner.whisper(invocation, language = /datum/language/common) owner.visible_message(span_warning("[owner]'s hand flashes a bright blue!"), \ - span_cultitalic("You speak the cursed words, emitting an EMP blast from your hand.")) + span_cult_italic("You speak the cursed words, emitting an EMP blast from your hand.")) empulse(owner, 2, 5) charges-- if(charges <= 0) @@ -205,13 +205,13 @@ var/turf/owner_turf = get_turf(owner) owner.whisper(invocation, language = /datum/language/common) owner.visible_message(span_warning("[owner]'s hand glows red for a moment."), \ - span_cultitalic("Your plea for aid is answered, and light begins to shimmer and take form within your hand!")) + span_cult_italic("Your plea for aid is answered, and light begins to shimmer and take form within your hand!")) var/obj/item/summoned_blade = new summoned_type(owner_turf) if(owner.put_in_hands(summoned_blade)) to_chat(owner, span_warning("A [summoned_blade] appears in your hand!")) else owner.visible_message(span_warning("A [summoned_blade] appears at [owner]'s feet!"), \ - span_cultitalic("A [summoned_blade] materializes at your feet.")) + span_cult_italic("A [summoned_blade] materializes at your feet.")) SEND_SOUND(owner, sound('sound/effects/magic.ogg', FALSE, 0, 25)) charges-- if(charges <= 0) @@ -249,7 +249,7 @@ clicked_on.add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_apoc", sparkle_image, NONE) addtimer(CALLBACK(clicked_on, TYPE_PROC_REF(/atom/, remove_alt_appearance), "cult_apoc", TRUE), 4 MINUTES, TIMER_OVERRIDE|TIMER_UNIQUE) - to_chat(caller, span_cultbold("[clicked_on] has been cursed with living nightmares!")) + to_chat(caller, span_cult_bold("[clicked_on] has been cursed with living nightmares!")) charges-- desc = base_desc @@ -272,7 +272,7 @@ /datum/action/innate/cult/blood_spell/veiling/Activate() if(!revealing) owner.visible_message(span_warning("Thin grey dust falls from [owner]'s hand!"), \ - span_cultitalic("You invoke the veiling spell, hiding nearby runes.")) + span_cult_italic("You invoke the veiling spell, hiding nearby runes.")) charges-- SEND_SOUND(owner, sound('sound/magic/smoke.ogg',0,1,25)) owner.whisper(invocation, language = /datum/language/common) @@ -291,7 +291,7 @@ button_icon_state = "back" else owner.visible_message(span_warning("A flash of light shines from [owner]'s hand!"), \ - span_cultitalic("You invoke the counterspell, revealing nearby runes.")) + span_cult_italic("You invoke the counterspell, revealing nearby runes.")) charges-- owner.whisper(invocation, language = /datum/language/common) SEND_SOUND(owner, sound('sound/magic/enter_blood.ogg',0,1,25)) @@ -404,7 +404,7 @@ return if(IS_CULTIST(user)) user.visible_message(span_warning("[user] holds up [user.p_their()] hand, which explodes in a flash of red light!"), \ - span_cultitalic("You attempt to stun [target] with the spell!")) + span_cult_italic("You attempt to stun [target] with the spell!")) user.mob_light(range = 1.1, power = 2, color = LIGHT_COLOR_BLOOD_MAGIC, duration = 0.2 SECONDS) if(IS_HERETIC(target)) to_chat(user, span_warning("Some force greater than you intervenes! [target] is protected by the Forgotten Gods!")) @@ -425,7 +425,7 @@ else if(target.can_block_magic()) to_chat(user, span_warning("The spell had no effect!")) else - to_chat(user, span_cultitalic("In a brilliant flash of red, [target] falls to the ground!")) + to_chat(user, span_cult_italic("In a brilliant flash of red, [target] falls to the ground!")) target.Paralyze(16 SECONDS) target.flash_act(1, TRUE) if(issilicon(target)) @@ -464,7 +464,7 @@ var/turf/T = get_turf(src) if(is_away_level(T.z)) - to_chat(user, span_cultitalic("You are not in the right dimension!")) + to_chat(user, span_cult_italic("You are not in the right dimension!")) return var/input_rune_key = tgui_input_list(user, "Rune to teleport to", "Teleportation Target", potential_runes) //we know what key they picked @@ -485,7 +485,7 @@ var/mob/living/L = target if(do_teleport(L, dest, channel = TELEPORT_CHANNEL_CULT)) origin.visible_message(span_warning("Dust flows from [user]'s hand, and [user.p_they()] disappear[user.p_s()] with a sharp crack!"), \ - span_cultitalic("You speak the words of the talisman and find yourself somewhere else!"), "You hear a sharp crack.") + span_cult_italic("You speak the words of the talisman and find yourself somewhere else!"), "You hear a sharp crack.") dest.visible_message(span_warning("There is a boom of outrushing air as something appears above the rune!"), null, "You hear a boom.") ..() @@ -502,7 +502,7 @@ if(C.canBeHandcuffed()) CuffAttack(C, user) else - user.visible_message(span_cultitalic("This victim doesn't have enough arms to complete the restraint!")) + user.visible_message(span_cult_italic("This victim doesn't have enough arms to complete the restraint!")) return ..() @@ -560,7 +560,7 @@ /obj/item/melee/blood_magic/construction/afterattack(atom/target, mob/user, proximity_flag, click_parameters) if(proximity_flag && IS_CULTIST(user)) if(channeling) - to_chat(user, span_cultitalic("You are already invoking twisted construction!")) + to_chat(user, span_cult_italic("You are already invoking twisted construction!")) return . |= AFTERATTACK_PROCESSED_ITEM var/turf/T = get_turf(target) @@ -743,7 +743,7 @@ user.Beam(human_bloodbag, icon_state="drainbeam", time = 1 SECONDS) playsound(get_turf(human_bloodbag), 'sound/magic/enter_blood.ogg', 50) human_bloodbag.visible_message(span_danger("[user] drains some of [human_bloodbag]'s blood!")) - to_chat(user,span_cultitalic("Your blood rite gains 50 charges from draining [human_bloodbag]'s blood.")) + to_chat(user,span_cult_italic("Your blood rite gains 50 charges from draining [human_bloodbag]'s blood.")) new /obj/effect/temp_visual/cult/sparks(get_turf(human_bloodbag)) else to_chat(user,span_warning("[human_bloodbag.p_Theyre()] missing too much blood - you cannot drain [human_bloodbag.p_them()] further!")) @@ -787,7 +787,7 @@ user.Beam(our_turf,icon_state="drainbeam", time = 15) new /obj/effect/temp_visual/cult/sparks(get_turf(user)) playsound(our_turf, 'sound/magic/enter_blood.ogg', 50) - to_chat(user, span_cultitalic("Your blood rite has gained [round(blood_to_gain)] charge\s from blood sources around you!")) + to_chat(user, span_cult_italic("Your blood rite has gained [round(blood_to_gain)] charge\s from blood sources around you!")) uses += max(1, round(blood_to_gain)) /obj/item/melee/blood_magic/manipulator/attack_self(mob/living/user) @@ -799,12 +799,12 @@ ) var/choice = show_radial_menu(user, src, spells, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE) if(!check_menu(user)) - to_chat(user, span_cultitalic("You decide against conducting a greater blood rite.")) + to_chat(user, span_cult_italic("You decide against conducting a greater blood rite.")) return switch(choice) if("Bloody Halberd (150)") if(uses < BLOOD_HALBERD_COST) - to_chat(user, span_cultitalic("You need [BLOOD_HALBERD_COST] charges to perform this rite.")) + to_chat(user, span_cult_italic("You need [BLOOD_HALBERD_COST] charges to perform this rite.")) else uses -= BLOOD_HALBERD_COST var/turf/current_position = get_turf(user) @@ -814,13 +814,13 @@ halberd_act_granted.Grant(user, rite) rite.halberd_act = halberd_act_granted if(user.put_in_hands(rite)) - to_chat(user, span_cultitalic("A [rite.name] appears in your hand!")) + to_chat(user, span_cult_italic("A [rite.name] appears in your hand!")) else user.visible_message(span_warning("A [rite.name] appears at [user]'s feet!"), \ - span_cultitalic("A [rite.name] materializes at your feet.")) + span_cult_italic("A [rite.name] materializes at your feet.")) if("Blood Bolt Barrage (300)") if(uses < BLOOD_BARRAGE_COST) - to_chat(user, span_cultitalic("You need [BLOOD_BARRAGE_COST] charges to perform this rite.")) + to_chat(user, span_cult_italic("You need [BLOOD_BARRAGE_COST] charges to perform this rite.")) else var/obj/rite = new /obj/item/gun/magic/wand/arcane_barrage/blood() uses -= BLOOD_BARRAGE_COST @@ -828,19 +828,19 @@ if(user.put_in_hands(rite)) to_chat(user, span_cult("Your hands glow with power!")) else - to_chat(user, span_cultitalic("You need a free hand for this rite!")) + to_chat(user, span_cult_italic("You need a free hand for this rite!")) qdel(rite) if("Blood Beam (500)") if(uses < BLOOD_BEAM_COST) - to_chat(user, span_cultitalic("You need [BLOOD_BEAM_COST] charges to perform this rite.")) + to_chat(user, span_cult_italic("You need [BLOOD_BEAM_COST] charges to perform this rite.")) else var/obj/rite = new /obj/item/blood_beam() uses -= BLOOD_BEAM_COST qdel(src) if(user.put_in_hands(rite)) - to_chat(user, span_cultlarge("Your hands glow with POWER OVERWHELMING!!!")) + to_chat(user, span_cult_large("Your hands glow with POWER OVERWHELMING!!!")) else - to_chat(user, span_cultitalic("You need a free hand for this rite!")) + to_chat(user, span_cult_italic("You need a free hand for this rite!")) qdel(rite) /obj/item/melee/blood_magic/manipulator/proc/check_menu(mob/living/user) diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm index d9418bb1010..e6faa911ee4 100644 --- a/code/modules/antagonists/cult/cult.dm +++ b/code/modules/antagonists/cult/cult.dm @@ -202,10 +202,10 @@ for(var/datum/mind/cult_mind as anything in cult_team.members) var/datum/antagonist/cult/cult_datum = cult_mind.has_antag_datum(/datum/antagonist/cult) cult_datum.vote_ability.Remove(cult_mind.current) - to_chat(cult_mind.current, span_cultlarge("[owner.current] has won the cult's support and is now their master. \ + to_chat(cult_mind.current, span_cult_large("[owner.current] has won the cult's support and is now their master. \ Follow [owner.current.p_their()] orders to the best of your ability!")) - to_chat(owner.current, span_cultlarge("You are the cult's Master. \ + to_chat(owner.current, span_cult_large("You are the cult's Master. \ As the cult's Master, you have a unique title and loud voice when communicating, are capable of marking \ targets, such as a location or a noncultist, to direct the cult to them, and, finally, you are capable of \ summoning the entire living cult to your location once. Use these abilities to direct the cult \ @@ -238,7 +238,7 @@ var/datum/antagonist/cult/cult_datum = cult_mind.has_antag_datum(/datum/antagonist/cult) cult_datum.vote_ability.Grant(cult_mind.current) - to_chat(owner.current, span_cultlarge("You have been demoted from being the cult's Master, you are now an acolyte once more!")) + to_chat(owner.current, span_cult_large("You have been demoted from being the cult's Master, you are now an acolyte once more!")) return TRUE @@ -256,7 +256,7 @@ var/area/current_area = get_area(owner.current) for(var/datum/mind/cult_mind as anything in cult_team.members) SEND_SOUND(cult_mind, sound('sound/hallucinations/veryfar_noise.ogg')) - to_chat(cult_mind, span_cultlarge("The Cult's Master, [owner.current.name], has fallen in \the [current_area]!")) + to_chat(cult_mind, span_cult_large("The Cult's Master, [owner.current.name], has fallen in \the [current_area]!")) /datum/antagonist/cult/get_preview_icon() var/icon/icon = render_preview_outfit(preview_outfit) diff --git a/code/modules/antagonists/cult/cult_bastard_sword.dm b/code/modules/antagonists/cult/cult_bastard_sword.dm index 784eaedf636..0d70bd503fb 100644 --- a/code/modules/antagonists/cult/cult_bastard_sword.dm +++ b/code/modules/antagonists/cult/cult_bastard_sword.dm @@ -77,7 +77,7 @@ force = 5 return else - to_chat(user, span_cultlarge("\"You cling to the Forgotten Gods, as if you're more than their pawn.\"")) + to_chat(user, span_cult_large("\"You cling to the Forgotten Gods, as if you're more than their pawn.\"")) to_chat(user, span_userdanger("A horrible force yanks at your arm!")) user.emote("scream") user.apply_damage(30, BRUTE, pick(GLOB.arm_zones)) diff --git a/code/modules/antagonists/cult/cult_comms.dm b/code/modules/antagonists/cult/cult_comms.dm index 17dcdc37789..ff64cc86a2b 100644 --- a/code/modules/antagonists/cult/cult_comms.dm +++ b/code/modules/antagonists/cult/cult_comms.dm @@ -81,7 +81,7 @@ var/my_message if(!message) return - my_message = span_cultboldtalic("The [user.name]: [message]") + my_message = span_cult_bold_italic("The [user.name]: [message]") for(var/mob/player_list as anything in GLOB.player_list) if(IS_CULTIST(player_list)) to_chat(player_list, my_message) @@ -123,7 +123,7 @@ if(team_member.current.incapacitated()) continue SEND_SOUND(team_member.current, 'sound/hallucinations/im_here1.ogg') - to_chat(team_member.current, span_cultlarge("Acolyte [nominee] has asserted that [nominee.p_theyre()] worthy of leading the cult. A vote will be called shortly.")) + to_chat(team_member.current, span_cult_large("Acolyte [nominee] has asserted that [nominee.p_theyre()] worthy of leading the cult. A vote will be called shortly.")) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(poll_cultists_for_leader), nominee, team), 10 SECONDS) @@ -137,7 +137,7 @@ team_member.current.update_mob_action_buttons() if(team_member.current.incapacitated()) continue - to_chat(team_member.current,span_cultlarge("[nominee] has died in the process of attempting to start a vote!")) + to_chat(team_member.current,span_cult_large("[nominee] has died in the process of attempting to start a vote!")) return FALSE var/list/mob/living/asked_cultists = list() for(var/datum/mind/team_member as anything in team.members) @@ -169,7 +169,7 @@ team_member.current.update_mob_action_buttons() if(team_member.current.incapacitated()) continue - to_chat(team_member.current,span_cultlarge("[nominee] has died in the process of attempting to win the cult's support!")) + to_chat(team_member.current,span_cult_large("[nominee] has died in the process of attempting to win the cult's support!")) return FALSE if(!nominee.mind) team.cult_vote_called = FALSE @@ -179,7 +179,7 @@ team_member.current.update_mob_action_buttons() if(team_member.current.incapacitated()) continue - to_chat(team_member.current,span_cultlarge("[nominee] has gone catatonic in the process of attempting to win the cult's support!")) + to_chat(team_member.current,span_cult_large("[nominee] has gone catatonic in the process of attempting to win the cult's support!")) return FALSE if(LAZYLEN(yes_voters) <= LAZYLEN(asked_cultists) * 0.5) team.cult_vote_called = FALSE @@ -189,7 +189,7 @@ team_member.current.update_mob_action_buttons() if(team_member.current.incapacitated()) continue - to_chat(team_member.current, span_cultlarge("[nominee] could not win the cult's support and shall continue to serve as an acolyte.")) + to_chat(team_member.current, span_cult_large("[nominee] could not win the cult's support and shall continue to serve as an acolyte.")) return FALSE team.cult_vote_called = FALSE @@ -218,7 +218,7 @@ var/place = get_area(owner) var/datum/objective/eldergod/summon_objective = locate() in antag.cult_team.objectives if(place in summon_objective.summon_spots)//cant do final reckoning in the summon area to prevent abuse, you'll need to get everyone to stand on the circle! - to_chat(owner, span_cultlarge("The veil is too weak here! Move to an area where it is strong enough to support this magic.")) + to_chat(owner, span_cult_large("The veil is too weak here! Move to an area where it is strong enough to support this magic.")) return for(var/i in 1 to 4) chant(i) @@ -353,14 +353,14 @@ if(cult_team.blood_target) if(!COOLDOWN_FINISHED(src, cult_mark_cooldown)) cult_team.unset_blood_target_and_timer() - to_chat(owner, span_cultbold("You have cleared the cult's blood target!")) + to_chat(owner, span_cult_bold("You have cleared the cult's blood target!")) return TRUE - to_chat(owner, span_cultbold("The cult has already designated a target!")) + to_chat(owner, span_cult_bold("The cult has already designated a target!")) return FALSE if(!COOLDOWN_FINISHED(src, cult_mark_cooldown)) - to_chat(owner, span_cultbold("You aren't ready to place another blood mark yet!")) + to_chat(owner, span_cult_bold("You aren't ready to place another blood mark yet!")) return FALSE var/atom/mark_target = owner.orbiting?.parent || get_turf(owner) @@ -368,7 +368,7 @@ return FALSE if(cult_team.set_blood_target(mark_target, owner, 60 SECONDS)) - to_chat(owner, span_cultbold("You have marked [mark_target] for the cult! It will last for [DisplayTimeText(cult_mark_duration)].")) + to_chat(owner, span_cult_bold("You have marked [mark_target] for the cult! It will last for [DisplayTimeText(cult_mark_duration)].")) COOLDOWN_START(src, cult_mark_cooldown, cult_mark_cooldown_duration) build_all_button_icons(UPDATE_BUTTON_NAME|UPDATE_BUTTON_ICON) addtimer(CALLBACK(src, PROC_REF(reset_button)), cult_mark_cooldown_duration + 1) @@ -400,7 +400,7 @@ return SEND_SOUND(owner, 'sound/magic/enter_blood.ogg') - to_chat(owner, span_cultbold("Your previous mark is gone - you are now ready to create a new blood mark.")) + to_chat(owner, span_cult_bold("Your previous mark is gone - you are now ready to create a new blood mark.")) build_all_button_icons(UPDATE_BUTTON_NAME|UPDATE_BUTTON_ICON) //////// ELDRITCH PULSE ///////// @@ -489,12 +489,12 @@ if(!IS_CULTIST(living_clicked)) return FALSE SEND_SOUND(caller, sound('sound/weapons/thudswoosh.ogg')) - to_chat(caller, span_cultbold("You reach through the veil with your mind's eye and seize [clicked_on]! Click anywhere nearby to teleport [clicked_on.p_them()]!")) + to_chat(caller, span_cult_bold("You reach through the veil with your mind's eye and seize [clicked_on]! Click anywhere nearby to teleport [clicked_on.p_them()]!")) throwee_ref = WEAKREF(clicked_on) return TRUE if(istype(clicked_on, /obj/structure/destructible/cult)) - to_chat(caller, span_cultbold("You reach through the veil with your mind's eye and lift [clicked_on]! Click anywhere nearby to teleport it!")) + to_chat(caller, span_cult_bold("You reach through the veil with your mind's eye and lift [clicked_on]! Click anywhere nearby to teleport it!")) throwee_ref = WEAKREF(clicked_on) return TRUE diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm index f3e20e614a5..d4e00b8bb2b 100644 --- a/code/modules/antagonists/cult/cult_items.dm +++ b/code/modules/antagonists/cult/cult_items.dm @@ -97,7 +97,7 @@ Striking a noncultist, however, will tear their flesh."} user.Paralyze(100) user.dropItemToGround(src, TRUE) user.visible_message(span_warning("A powerful force shoves [user] away from [target]!"), \ - span_cultlarge("\"You shouldn't play with sharp things. You'll poke someone's eye out.\"")) + span_cult_large("\"You shouldn't play with sharp things. You'll poke someone's eye out.\"")) if(ishuman(user)) var/mob/living/carbon/human/miscreant = user miscreant.apply_damage(rand(force/2, force), BRUTE, pick(GLOB.arm_zones)) @@ -121,7 +121,7 @@ Striking a noncultist, however, will tear their flesh."} /obj/item/melee/cultblade/pickup(mob/living/user) ..() if(!IS_CULTIST(user)) - to_chat(user, span_cultlarge("\"I wouldn't advise that.\"")) + to_chat(user, span_cult_large("\"I wouldn't advise that.\"")) /datum/action/innate/dash/cult name = "Rend the Veil" @@ -156,7 +156,7 @@ Striking a noncultist, however, will tear their flesh."} return var/mob/living/carbon/carbon_user = user if(user.num_legs < 2 || carbon_user.legcuffed) //if they can't be ensnared, stun for the same time as it takes to breakout of bola - to_chat(user, span_cultlarge("\"I wouldn't advise that.\"")) + to_chat(user, span_cult_large("\"I wouldn't advise that.\"")) user.dropItemToGround(src, TRUE) user.Paralyze(CULT_BOLA_PICKUP_STUN) else @@ -413,7 +413,7 @@ Striking a noncultist, however, will tear their flesh."} /obj/item/clothing/suit/hooded/cultrobes/cult_shield/equipped(mob/living/user, slot) ..() if(!IS_CULTIST(user)) - to_chat(user, span_cultlarge("\"I wouldn't advise that.\"")) + to_chat(user, span_cult_large("\"I wouldn't advise that.\"")) to_chat(user, span_warning("An overwhelming sense of nausea overpowers you!")) user.dropItemToGround(src, TRUE) user.set_dizzy_if_lower(1 MINUTES) @@ -450,7 +450,7 @@ Striking a noncultist, however, will tear their flesh."} /obj/item/clothing/suit/hooded/cultrobes/berserker/equipped(mob/living/user, slot) ..() if(!IS_CULTIST(user)) - to_chat(user, span_cultlarge("\"I wouldn't advise that.\"")) + to_chat(user, span_cult_large("\"I wouldn't advise that.\"")) to_chat(user, span_warning("An overwhelming sense of nausea overpowers you!")) user.dropItemToGround(src, TRUE) user.set_dizzy_if_lower(1 MINUTES) @@ -467,7 +467,7 @@ Striking a noncultist, however, will tear their flesh."} /obj/item/clothing/glasses/hud/health/night/cultblind/equipped(mob/living/user, slot) ..() if(user.stat != DEAD && !IS_CULTIST(user) && (slot & ITEM_SLOT_EYES)) - to_chat(user, span_cultlarge("\"You want to be blind, do you?\"")) + to_chat(user, span_cult_large("\"You want to be blind, do you?\"")) user.dropItemToGround(src, TRUE) user.set_dizzy_if_lower(1 MINUTES) user.Paralyze(100) diff --git a/code/modules/antagonists/cult/cult_structure_altar.dm b/code/modules/antagonists/cult/cult_structure_altar.dm index 1f1a9bd71cb..9347acb3321 100644 --- a/code/modules/antagonists/cult/cult_structure_altar.dm +++ b/code/modules/antagonists/cult/cult_structure_altar.dm @@ -30,7 +30,7 @@ options = altar_items /obj/structure/destructible/cult/item_dispenser/altar/succcess_message(mob/living/user, obj/item/spawned_item) - to_chat(user, span_cultitalic("You kneel before [src] and your faith is rewarded with [spawned_item]!")) + to_chat(user, span_cult_italic("You kneel before [src] and your faith is rewarded with [spawned_item]!")) #undef ELDRITCH_WHETSTONE #undef CONSTRUCT_SHELL diff --git a/code/modules/antagonists/cult/cult_structure_archives.dm b/code/modules/antagonists/cult/cult_structure_archives.dm index 933b90dbf4e..a9617396633 100644 --- a/code/modules/antagonists/cult/cult_structure_archives.dm +++ b/code/modules/antagonists/cult/cult_structure_archives.dm @@ -32,7 +32,7 @@ options = archive_items /obj/structure/destructible/cult/item_dispenser/archives/succcess_message(mob/living/user, obj/item/spawned_item) - to_chat(user, span_cultitalic("You summon [spawned_item] from [src]!")) + to_chat(user, span_cult_italic("You summon [spawned_item] from [src]!")) // Preset for the library that doesn't spawn runed metal on destruction. /obj/structure/destructible/cult/item_dispenser/archives/library diff --git a/code/modules/antagonists/cult/cult_structure_forge.dm b/code/modules/antagonists/cult/cult_structure_forge.dm index ceb38398a67..912db7d37e9 100644 --- a/code/modules/antagonists/cult/cult_structure_forge.dm +++ b/code/modules/antagonists/cult/cult_structure_forge.dm @@ -32,7 +32,7 @@ options = forge_items /obj/structure/destructible/cult/item_dispenser/forge/succcess_message(mob/living/user, obj/item/spawned_item) - to_chat(user, span_cultitalic("You work [src] as dark knowledge guides your hands, creating [spawned_item]!")) + to_chat(user, span_cult_italic("You work [src] as dark knowledge guides your hands, creating [spawned_item]!")) /obj/structure/destructible/cult/item_dispenser/forge/engine name = "magma engine" diff --git a/code/modules/antagonists/cult/cult_structures.dm b/code/modules/antagonists/cult/cult_structures.dm index ebf66a7ee15..932c3ac03c1 100644 --- a/code/modules/antagonists/cult/cult_structures.dm +++ b/code/modules/antagonists/cult/cult_structures.dm @@ -25,7 +25,7 @@ if(cult_examine_tip) . += span_cult(cult_examine_tip) if(!COOLDOWN_FINISHED(src, use_cooldown_duration)) - . += span_cultitalic("The magic in [src] is too weak, it will be ready to use again in [DisplayTimeText(COOLDOWN_TIMELEFT(src, use_cooldown_duration))].") + . += span_cult_italic("The magic in [src] is too weak, it will be ready to use again in [DisplayTimeText(COOLDOWN_TIMELEFT(src, use_cooldown_duration))].") /obj/structure/destructible/cult/set_anchored(anchorvalue) . = ..() @@ -78,10 +78,10 @@ to_chat(user, span_warning("You're pretty sure you know exactly what this is used for and you can't seem to touch it.")) return if(!anchored) - to_chat(user, span_cultitalic("You need to anchor [src] to the floor first.")) + to_chat(user, span_cult_italic("You need to anchor [src] to the floor first.")) return if(!COOLDOWN_FINISHED(src, use_cooldown)) - to_chat(user, span_cultitalic("The magic in [src] is too weak, it will be ready to use again in [DisplayTimeText(COOLDOWN_TIMELEFT(src, use_cooldown))].")) + to_chat(user, span_cult_italic("The magic in [src] is too weak, it will be ready to use again in [DisplayTimeText(COOLDOWN_TIMELEFT(src, use_cooldown))].")) return var/list/spawned_items = get_items_to_spawn(user) @@ -142,7 +142,7 @@ * Override for unique feedback messages on item spawn. */ /obj/structure/destructible/cult/item_dispenser/proc/succcess_message(mob/living/user, obj/item/spawned_item) - to_chat(user, span_cultitalic("[src] produces a [spawned_item.name].")) + to_chat(user, span_cult_italic("[src] produces a [spawned_item.name].")) /* * Simple proc intended for use in callbacks to determine if [user] can continue to use a radial menu. diff --git a/code/modules/antagonists/cult/cult_team.dm b/code/modules/antagonists/cult/cult_team.dm index 1d199a113f5..c47cc2145b5 100644 --- a/code/modules/antagonists/cult/cult_team.dm +++ b/code/modules/antagonists/cult/cult_team.dm @@ -49,7 +49,7 @@ for(var/datum/mind/mind as anything in members) if(mind.current) SEND_SOUND(mind.current, 'sound/ambience/antag/bloodcult/bloodcult_eyes.ogg') - to_chat(mind.current, span_cultlarge(span_warning("The veil weakens as your cult grows, your eyes begin to glow..."))) + to_chat(mind.current, span_cult_large(span_warning("The veil weakens as your cult grows, your eyes begin to glow..."))) mind.current.AddElement(/datum/element/cult_eyes) cult_risen = TRUE log_game("The blood cult has risen with [cultplayers] players.") @@ -58,7 +58,7 @@ for(var/datum/mind/mind as anything in members) if(mind.current) SEND_SOUND(mind.current, 'sound/ambience/antag/bloodcult/bloodcult_halos.ogg') - to_chat(mind.current, span_cultlarge(span_warning("Your cult is ascendent and the red harvest approaches - you cannot hide your true nature for much longer!!"))) + to_chat(mind.current, span_cult_large(span_warning("Your cult is ascendent and the red harvest approaches - you cannot hide your true nature for much longer!!"))) mind.current.AddElement(/datum/element/cult_halo) cult_ascendent = TRUE log_game("The blood cult has ascended with [cultplayers] players.") @@ -156,7 +156,7 @@ if(cultist.current.stat == DEAD || !cultist.current.client) continue - to_chat(cultist.current, span_bold(span_cultlarge("[marker] has marked [blood_target] in the [target_area.name] as the cult's top priority, get there immediately!"))) + to_chat(cultist.current, span_bold(span_cult_large("[marker] has marked [blood_target] in the [target_area.name] as the cult's top priority, get there immediately!"))) SEND_SOUND(cultist.current, sound(pick('sound/hallucinations/over_here2.ogg','sound/hallucinations/over_here3.ogg'), 0, 1, 75)) cultist.current.client.images += blood_target_image @@ -175,9 +175,9 @@ continue if(QDELETED(blood_target)) - to_chat(cultist.current, span_bold(span_cultlarge("The blood mark's target is lost!"))) + to_chat(cultist.current, span_bold(span_cult_large("The blood mark's target is lost!"))) else - to_chat(cultist.current, span_bold(span_cultlarge("The blood mark has expired!"))) + to_chat(cultist.current, span_bold(span_cult_large("The blood mark has expired!"))) cultist.current.client.images -= blood_target_image UnregisterSignal(blood_target, COMSIG_QDELETING) diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm index 8e5e7099be4..6fe9cf47298 100644 --- a/code/modules/antagonists/cult/runes.dm +++ b/code/modules/antagonists/cult/runes.dm @@ -1,6 +1,4 @@ -/// list of weakrefs to mobs OR minds that have been sacrificed -GLOBAL_LIST(sacrificed) /// List of all teleport runes GLOBAL_LIST(teleport_runes) /// Assoc list of every rune that can be drawn by ritual daggers. [rune_name] = [typepath] @@ -100,7 +98,7 @@ Runes can either be invoked by one's self or with many different cultists. Each . = ..() if(.) return - if(!IS_CULTIST(user)) + if(!IS_CULTIST_OR_CULTIST_MOB(user)) to_chat(user, span_warning("You aren't able to understand the words of [src].")) return var/list/invokers = can_invoke(user) @@ -110,15 +108,16 @@ Runes can either be invoked by one's self or with many different cultists. Each to_chat(user, span_danger("You need [req_cultists - length(invokers)] more adjacent cultists to use this rune in such a manner.")) fail_invoke() -/obj/effect/rune/attack_animal(mob/living/simple_animal/user, list/modifiers) - if(isshade(user) || isconstruct(user)) - if(HAS_TRAIT(user, TRAIT_ANGELIC)) - to_chat(user, span_warning("You purge the rune!")) - qdel(src) - else if(construct_invoke || !IS_CULTIST(user)) //if you're not a cult construct we want the normal fail message - attack_hand(user) - else - to_chat(user, span_warning("You are unable to invoke the rune!")) +/obj/effect/rune/attack_animal(mob/living/user, list/modifiers) + if(!isshade(user) && !isconstruct(user)) + return + if(HAS_TRAIT(user, TRAIT_ANGELIC)) + to_chat(user, span_warning("You purge the rune!")) + qdel(src) + else if(construct_invoke || !IS_CULTIST(user)) //if you're not a cult construct we want the normal fail message + attack_hand(user) + else + to_chat(user, span_warning("You are unable to invoke the rune!")) /obj/effect/rune/proc/conceal() //for talisman of revealing/hiding visible_message(span_danger("[src] fades away.")) @@ -161,17 +160,19 @@ structure_check() searches for nearby cultist structures required for the invoca /obj/effect/rune/proc/invoke(list/invokers) //This proc contains the effects of the rune as well as things that happen afterwards. If you want it to spawn an object and then delete itself, have both here. - for(var/M in invokers) - if(isliving(M)) - var/mob/living/L = M - if(invocation) - L.say(invocation, language = /datum/language/common, ignore_spam = TRUE, forced = "cult invocation") - if(invoke_damage) - L.apply_damage(invoke_damage, BRUTE) - to_chat(L, "[src] saps your strength!") - else if(istype(M, /obj/item/toy/plush/narplush)) - var/obj/item/toy/plush/narplush/P = M - P.visible_message("[P] squeaks loudly!") + for(var/atom/invoker in invokers) + if(istype(invoker, /obj/item/toy/plush/narplush)) + invoker.visible_message(span_cult_italic("[src] squeaks_loudly!")) + continue + if(!isliving(invoker)) + continue + var/mob/living/living_invoker = invoker + if(invocation) + living_invoker.say(invocation, language = /datum/language/common, ignore_spam = TRUE, forced = "cult invocation") + if(invoke_damage) + living_invoker.apply_damage(invoke_damage, BRUTE) + to_chat(living_invoker, span_cult_italic("[src] saps your strength!")) + do_invoke_glow() /obj/effect/rune/proc/do_invoke_glow() @@ -234,7 +235,6 @@ structure_check() searches for nearby cultist structures required for the invoca rune_in_use = TRUE visible_message(span_warning("[src] pulses blood red!")) - var/oldcolor = color color = RUNE_COLOR_DARKRED if(length(myriad_targets)) @@ -259,9 +259,10 @@ structure_check() searches for nearby cultist structures required for the invoca else do_invoke_glow() - animate(src, color = oldcolor, time = 0.5 SECONDS) + animate(src, color = initial(color), time = 0.5 SECONDS) addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_atom_colour)), 0.5 SECONDS) rune_in_use = FALSE + return ..() /obj/effect/rune/convert/proc/do_convert(mob/living/convertee, list/invokers, datum/team/cult/cult_team) ASSERT(convertee.mind) @@ -286,7 +287,7 @@ structure_check() searches for nearby cultist structures required for the invoca span_warning("[convertee] writhes in pain [(brutedamage || burndamage) \ ? "even as [convertee.p_their()] wounds heal and close" \ : "as the markings below [convertee.p_them()] glow a bloody red"]!"), - span_cultlarge("AAAAAAAAAAAAAA-"), + span_cult_large("AAAAAAAAAAAAAA-"), ) // We're not guaranteed to be a human but we'll cast here since we use it in a few branches @@ -305,11 +306,11 @@ structure_check() searches for nearby cultist structures required for the invoca convertee.mind.special_role = ROLE_CULTIST convertee.mind.add_antag_datum(/datum/antagonist/cult, cult_team) - to_chat(convertee, span_cultitalic("Your blood pulses. Your head throbs. The world goes red. \ + to_chat(convertee, span_cult_bold_italic("Your blood pulses. Your head throbs. The world goes red. \ All at once you are aware of a horrible, horrible, truth. The veil of reality has been ripped away \ - and something evil takes root.")) - to_chat(convertee, span_cultitalic("Assist your new compatriots in their dark dealings. \ - Your goal is theirs, and theirs is yours. You serve the Geometer above all else. Bring it back.")) + and something evil takes root.")) + to_chat(convertee, span_cult_bold_italic("Assist your new compatriots in their dark dealings. \ + Your goal is theirs, and theirs is yours. You serve the Geometer above all else. Bring it back.")) if(istype(human_convertee)) human_convertee.uncuff() @@ -324,10 +325,10 @@ structure_check() searches for nearby cultist structures required for the invoca var/big_sac = FALSE if((((ishuman(sacrificial) || iscyborg(sacrificial)) && sacrificial.stat != DEAD) || cult_team.is_sacrifice_target(sacrificial.mind)) && length(invokers) < 3) for(var/invoker in invokers) - to_chat(invoker, span_cultitalic("[sacrificial] is too greatly linked to the world! You need three acolytes!")) + to_chat(invoker, span_cult_italic("[sacrificial] is too greatly linked to the world! You need three acolytes!")) return FALSE - var/signal_result = SEND_SIGNAL(sacrificial, COMSIG_LIVING_CULT_SACRIFICED, invokers) + var/signal_result = SEND_SIGNAL(sacrificial, COMSIG_LIVING_CULT_SACRIFICED, invokers, cult_team) if(signal_result & STOP_SACRIFICE) return FALSE @@ -347,12 +348,12 @@ structure_check() searches for nearby cultist structures required for the invoca if(!(signal_result & SILENCE_SACRIFICE_MESSAGE)) for(var/invoker in invokers) if(big_sac) - to_chat(invoker, span_cultlarge("\"Yes! This is the one I desire! You have done well.\"")) + to_chat(invoker, span_cult_large("\"Yes! This is the one I desire! You have done well.\"")) continue if(ishuman(sacrificial) || iscyborg(sacrificial)) - to_chat(invoker, span_cultlarge("\"I accept this sacrifice.\"")) + to_chat(invoker, span_cult_large("\"I accept this sacrifice.\"")) else - to_chat(invoker, span_cultlarge("\"I accept this meager sacrifice.\"")) + to_chat(invoker, span_cult_large("\"I accept this meager sacrifice.\"")) if(iscyborg(sacrificial)) var/construct_class = show_radial_menu(invokers[1], sacrificial, GLOB.construct_radial_images, require_near = TRUE, tooltips = TRUE) @@ -389,7 +390,7 @@ structure_check() searches for nearby cultist structures required for the invoca if(GET_ATOM_BLOOD_DNA_LENGTH(rod)) displayed_message += " The blood of [num_slain] fallen cultist[num_slain == 1 ? "":"s"] is absorbed into [rod]!" - rod.visible_message(span_cultitalic(displayed_message)) + rod.visible_message(span_cult_italic(displayed_message)) switch(num_slain) if(0, 1) animate_spawn_sword(rod, /obj/item/melee/cultblade/dagger) @@ -653,7 +654,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives var/area/place = get_area(src) if(!(place in summon_objective.summon_spots)) - to_chat(user, span_cultlarge("The Geometer can only be summoned where the veil is weak - in [english_list(summon_objective.summon_spots)]!")) + to_chat(user, span_cult_large("The Geometer can only be summoned where the veil is weak - in [english_list(summon_objective.summon_spots)]!")) return if(locate(/obj/narsie) in SSpoints_of_interest.narsies) for(var/invoker in invokers) @@ -689,50 +690,50 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) invocation = "Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!" //Depends on the name of the user - see below icon_state = "1" color = RUNE_COLOR_MEDIUMRED - var/static/sacrifices_used = -SOULS_TO_REVIVE // Cultists get one "free" revive /obj/effect/rune/raise_dead/examine(mob/user) . = ..() if(IS_CULTIST(user) || user.stat == DEAD) - . += "Sacrifices unrewarded: [LAZYLEN(GLOB.sacrificed) - sacrifices_used]" + . += "Sacrifices unrewarded: [LAZYLEN(GLOB.sacrificed) - GLOB.sacrifices_used]" /obj/effect/rune/raise_dead/invoke(list/invokers) - var/turf/T = get_turf(src) - var/mob/living/mob_to_revive - var/list/potential_revive_mobs = list() - var/mob/living/user = invokers[1] if(rune_in_use) return rune_in_use = TRUE - for(var/mob/living/M in T.contents) - if(IS_CULTIST(M) && (M.stat == DEAD || !M.client || M.client.is_afk())) - potential_revive_mobs |= M + var/mob/living/mob_to_revive + var/list/potential_revive_mobs = list() + var/mob/living/user = invokers[1] + + for(var/mob/living/target in loc) + if(IS_CULTIST(target) && (target.stat == DEAD || isnull(target.client) || target.client.is_afk())) + potential_revive_mobs += target + if(!length(potential_revive_mobs)) - to_chat(user, "There are no dead cultists on the rune!") + to_chat(user, span_cult_italic("There are no dead cultists on the rune!")) log_game("Raise Dead rune activated by [user] at [COORD(src)] failed - no cultists to revive.") fail_invoke() return - if(length(potential_revive_mobs) > 1) + + if(length(potential_revive_mobs) > 1 && user.mind) mob_to_revive = tgui_input_list(user, "Cultist to revive", "Revive Cultist", potential_revive_mobs) if(isnull(mob_to_revive)) return else mob_to_revive = potential_revive_mobs[1] + if(QDELETED(src) || !validness_checks(mob_to_revive, user)) fail_invoke() return - if(user.name == "Herbert West") - invocation = "To life, to life, I bring them!" - else - invocation = initial(invocation) - ..() + + invocation = (user.name == "Herbert West") ? "To life, to life, I bring them!" : initial(invocation) + if(mob_to_revive.stat == DEAD) - var/diff = LAZYLEN(GLOB.sacrificed) - SOULS_TO_REVIVE - sacrifices_used + var/diff = LAZYLEN(GLOB.sacrificed) - SOULS_TO_REVIVE - GLOB.sacrifices_used if(diff < 0) to_chat(user, span_warning("Your cult must carry out [abs(diff)] more sacrifice\s before it can revive another cultist!")) fail_invoke() return - sacrifices_used += SOULS_TO_REVIVE + GLOB.sacrifices_used += SOULS_TO_REVIVE mob_to_revive.revive(ADMIN_HEAL_ALL) //This does remove traits and such, but the rune might actually see some use because of it! //Why did you think this was a good idea if(!mob_to_revive.client || mob_to_revive.client.is_afk()) @@ -747,21 +748,21 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) fail_invoke() return SEND_SOUND(mob_to_revive, 'sound/ambience/antag/bloodcult/bloodcult_gain.ogg') - to_chat(mob_to_revive, span_cultlarge("\"PASNAR SAVRAE YAM'TOTH. Arise.\"")) + to_chat(mob_to_revive, span_cult_large("\"PASNAR SAVRAE YAM'TOTH. Arise.\"")) mob_to_revive.visible_message(span_warning("[mob_to_revive] draws in a huge breath, red light shining from [mob_to_revive.p_their()] eyes."), \ - span_cultlarge("You awaken suddenly from the void. You're alive!")) + span_cult_large("You awaken suddenly from the void. You're alive!")) rune_in_use = FALSE + return ..() /obj/effect/rune/raise_dead/proc/validness_checks(mob/living/target_mob, mob/living/user) - var/turf/T = get_turf(src) if(QDELETED(user)) return FALSE if(!Adjacent(user) || user.incapacitated()) return FALSE if(QDELETED(target_mob)) return FALSE - if(!(target_mob in T.contents)) - to_chat(user, "The cultist to revive has been moved!") + if(!(target_mob in loc)) + to_chat(user, span_cult_italic("The cultist to revive has been moved!")) log_game("Raise Dead rune activated by [user] at [COORD(src)] failed - revival target moved.") return FALSE return TRUE @@ -769,9 +770,9 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) /obj/effect/rune/raise_dead/fail_invoke() ..() rune_in_use = FALSE - for(var/mob/living/M in range(1,src)) - if(IS_CULTIST(M) && M.stat == DEAD) - M.visible_message(span_warning("[M] twitches.")) + for(var/mob/living/cultist in loc) + if(IS_CULTIST(cultist) && cultist.stat == DEAD) + cultist.visible_message(span_warning("[cultist] twitches.")) //Rite of the Corporeal Shield: When invoked, becomes solid and cannot be passed. Invoke again to undo. /obj/effect/rune/wall @@ -895,7 +896,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) if(!IS_CULTIST(target) && target.blood_volume) if(target.can_block_magic(charge_cost = 0)) continue - to_chat(target, span_cultlarge("Your blood boils in your veins!")) + to_chat(target, span_cult_large("Your blood boils in your veins!")) animate(src, color = "#FCB56D", time = 4) sleep(0.4 SECONDS) if(QDELETED(src)) @@ -959,10 +960,10 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) var/choice = tgui_alert(user, "You tear open a connection to the spirit realm...", "Spirit Realm", list("Summon a Cult Ghost", "Ascend as a Dark Spirit")) if(choice == "Summon a Cult Ghost") if(!is_station_level(T.z)) - to_chat(user, span_cultitalic("The veil is not weak enough here to manifest spirits, you must be on station!")) + to_chat(user, span_cult_italic("The veil is not weak enough here to manifest spirits, you must be on station!")) return if(ghosts >= ghost_limit) - to_chat(user, span_cultitalic("You are sustaining too many ghosts to summon more!")) + to_chat(user, span_cult_italic("You are sustaining too many ghosts to summon more!")) fail_invoke() log_game("Manifest rune failed - too many summoned ghosts") return list() @@ -977,7 +978,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) if(O.client && !is_banned_from(O.ckey, ROLE_CULTIST) && !QDELETED(src) && !(isAdminObserver(O) && (O.client.prefs.toggles & ADMIN_IGNORE_CULT_GHOST)) && !QDELETED(O)) ghosts_on_rune += O if(!length(ghosts_on_rune)) - to_chat(user, span_cultitalic("There are no spirits near [src]!")) + to_chat(user, span_cult_italic("There are no spirits near [src]!")) fail_invoke() log_game("Manifest rune failed - no nearby ghosts") return list() @@ -995,7 +996,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) ghosts++ playsound(src, 'sound/magic/exit_blood.ogg', 50, TRUE) visible_message(span_warning("A cloud of red mist forms above [src], and from within steps... a [new_human.gender == FEMALE ? "wo":""]man.")) - to_chat(user, span_cultitalic("Your blood begins flowing into [src]. You must remain in place and conscious to maintain the forms of those summoned. This will hurt you slowly but surely...")) + to_chat(user, span_cult_italic("Your blood begins flowing into [src]. You must remain in place and conscious to maintain the forms of those summoned. This will hurt you slowly but surely...")) var/obj/structure/emergency_shield/cult/weak/N = new(T) if(ghost_to_spawn.mind && ghost_to_spawn.mind.current) new_human.AddComponent( \ @@ -1006,7 +1007,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) new_human.key = ghost_to_spawn.key var/datum/antagonist/cult/created_cultist = new_human.mind?.add_antag_datum(/datum/antagonist/cult) created_cultist?.silent = TRUE - to_chat(new_human, span_cultitalic("You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar'Sie, and you are to serve them at all costs.")) + to_chat(new_human, span_cult_italic("You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar'Sie, and you are to serve them at all costs.")) while(!QDELETED(src) && !QDELETED(user) && !QDELETED(new_human) && (user in T)) if(user.stat != CONSCIOUS || HAS_TRAIT(new_human, TRAIT_CRITICAL_CONDITION)) @@ -1018,7 +1019,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) ghosts-- if(new_human) new_human.visible_message(span_warning("[new_human] suddenly dissolves into bones and ashes."), \ - span_cultlarge("Your link to the world fades. Your form breaks apart.")) + span_cult_large("Your link to the world fades. Your form breaks apart.")) for(var/obj/I in new_human) new_human.dropItemToGround(I, TRUE) new_human.mind?.remove_antag_datum(/datum/antagonist/cult) @@ -1047,7 +1048,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) affecting.Paralyze(40) break if(affecting.health <= 10) - to_chat(G, span_cultitalic("Your body can no longer sustain the connection!")) + to_chat(G, span_cult_italic("Your body can no longer sustain the connection!")) break sleep(0.5 SECONDS) CM.Remove(G) @@ -1090,10 +1091,10 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) var/datum/antagonist/cult/user_antag = user.mind.has_antag_datum(/datum/antagonist/cult,TRUE) var/datum/objective/eldergod/summon_objective = locate() in user_antag.cult_team.objectives if(length(summon_objective.summon_spots) <= 1) - to_chat(user, span_cultlarge("Only one ritual site remains - it must be reserved for the final summoning!")) + to_chat(user, span_cult_large("Only one ritual site remains - it must be reserved for the final summoning!")) return if(!(place in summon_objective.summon_spots)) - to_chat(user, span_cultlarge("The Apocalypse rune will remove a ritual site, where Nar'Sie can be summoned, it can only be scribed in [english_list(summon_objective.summon_spots)]!")) + to_chat(user, span_cult_large("The Apocalypse rune will remove a ritual site, where Nar'Sie can be summoned, it can only be scribed in [english_list(summon_objective.summon_spots)]!")) return summon_objective.summon_spots -= place @@ -1144,7 +1145,7 @@ GLOBAL_VAR_INIT(narsie_summon_count, 0) addtimer(CALLBACK(M, TYPE_PROC_REF(/atom/, remove_alt_appearance),"cult_apoc",TRUE), duration) images += C else - to_chat(M, span_cultlarge("An Apocalypse Rune was invoked in the [place.name], it is no longer available as a summoning site!")) + to_chat(M, span_cult_large("An Apocalypse Rune was invoked in the [place.name], it is no longer available as a summoning site!")) SEND_SOUND(M, 'sound/effects/pope_entry.ogg') image_handler(images, duration) if(intensity >= 285) // Based on the prior formula, this means the cult makes up <15% of current players diff --git a/code/modules/antagonists/wizard/equipment/soulstone.dm b/code/modules/antagonists/wizard/equipment/soulstone.dm index e46dc0c8338..abceef36f0c 100644 --- a/code/modules/antagonists/wizard/equipment/soulstone.dm +++ b/code/modules/antagonists/wizard/equipment/soulstone.dm @@ -180,7 +180,7 @@ if(M == user) return if(IS_CULTIST(M) && IS_CULTIST(user)) - to_chat(user, span_cultlarge("\"Come now, do not capture your bretheren's soul.\"")) + to_chat(user, span_cult_large("\"Come now, do not capture your bretheren's soul.\"")) return if(theme == THEME_HOLY && IS_CULTIST(user)) hot_potato(user) @@ -508,7 +508,7 @@ if(newstruct.mind && !IS_CULTIST(newstruct) && ((stoner && IS_CULTIST(stoner)) || cultoverride) && SSticker.HasRoundStarted()) newstruct.mind.add_antag_datum(/datum/antagonist/cult/construct) if(IS_CULTIST(stoner) || cultoverride) - to_chat(newstruct, span_cultbold("You are still bound to serve the cult[stoner ? " and [stoner]" : ""], follow [stoner?.p_their() || "their"] orders and help [stoner?.p_them() || "them"] complete [stoner?.p_their() || "their"] goals at all costs.")) + to_chat(newstruct, span_cult_bold("You are still bound to serve the cult[stoner ? " and [stoner]" : ""], follow [stoner?.p_their() || "their"] orders and help [stoner?.p_them() || "them"] complete [stoner?.p_their() || "their"] goals at all costs.")) else if(stoner) to_chat(newstruct, span_boldwarning("You are still bound to serve your creator, [stoner], follow [stoner.p_their()] orders and help [stoner.p_them()] complete [stoner.p_their()] goals at all costs.")) newstruct.clear_alert("bloodsense") diff --git a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm index 97688417aac..0a037482bc1 100644 --- a/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm +++ b/code/modules/jobs/job_types/chaplain/chaplain_nullrod.dm @@ -86,7 +86,7 @@ return var/num_slain = LAZYLEN(cultists_slain) - . += span_cultitalic("It has the blood of [num_slain] fallen cultist[num_slain == 1 ? "" : "s"] on it. \ + . += span_cult_italic("It has the blood of [num_slain] fallen cultist[num_slain == 1 ? "" : "s"] on it. \ Offering it to Nar'sie will transform it into a [num_slain >= 3 ? "powerful" : "standard"] cult weapon.") /obj/item/nullrod/godhand diff --git a/code/modules/mob/living/basic/blob_minions/blobbernaut.dm b/code/modules/mob/living/basic/blob_minions/blobbernaut.dm index ab3442604db..8b94063ba77 100644 --- a/code/modules/mob/living/basic/blob_minions/blobbernaut.dm +++ b/code/modules/mob/living/basic/blob_minions/blobbernaut.dm @@ -86,7 +86,7 @@ health = maxHealth / 2 // Start out injured to encourage not beelining away from the blob SEND_SOUND(src, sound('sound/effects/blobattack.ogg')) SEND_SOUND(src, sound('sound/effects/attackblob.ogg')) - to_chat(src, span_infoplain("You are powerful, hard to kill, and slowly regenerate near nodes and cores, [span_cultlarge("but will slowly die if not near the blob")] or if the factory that made you is killed.")) + to_chat(src, span_infoplain("You are powerful, hard to kill, and slowly regenerate near nodes and cores, [span_cult_large("but will slowly die if not near the blob")] or if the factory that made you is killed.")) to_chat(src, span_infoplain("You can communicate with other blobbernauts and overminds telepathically by attempting to speak normally")) to_chat(src, span_infoplain("Your overmind's blob reagent is: [blobstrain.name]!")) to_chat(src, span_infoplain("The [blobstrain.name] reagent [blobstrain.shortdesc ? "[blobstrain.shortdesc]" : "[blobstrain.description]"]")) diff --git a/code/modules/mob/living/basic/cult/constructs/harvester.dm b/code/modules/mob/living/basic/cult/constructs/harvester.dm index 30b30994872..da8dad827b0 100644 --- a/code/modules/mob/living/basic/cult/constructs/harvester.dm +++ b/code/modules/mob/living/basic/cult/constructs/harvester.dm @@ -50,7 +50,7 @@ carbon_target.Paralyze(6 SECONDS) visible_message(span_danger("[src] knocks [carbon_target] down!")) - to_chat(src, span_cultlarge("\"Bring [carbon_target.p_them()] to me.\"")) + to_chat(src, span_cult_large("\"Bring [carbon_target.p_them()] to me.\"")) /datum/action/innate/seek_master name = "Seek your Master" @@ -80,18 +80,18 @@ the_construct.master = cult_status.cult_team.blood_target if(!the_construct.master) - to_chat(the_construct, span_cultitalic("You have no master to seek!")) + to_chat(the_construct, span_cult_italic("You have no master to seek!")) the_construct.seeking = FALSE return if(tracking) tracking = FALSE the_construct.seeking = FALSE - to_chat(the_construct, span_cultitalic("You are no longer tracking your master.")) + to_chat(the_construct, span_cult_italic("You are no longer tracking your master.")) return else tracking = TRUE the_construct.seeking = TRUE - to_chat(the_construct, span_cultitalic("You are now tracking your master.")) + to_chat(the_construct, span_cult_italic("You are now tracking your master.")) /datum/action/innate/seek_prey @@ -113,16 +113,16 @@ desc = "None can hide from Nar'Sie, activate to track a survivor attempting to flee the red harvest!" button_icon_state = "cult_mark" the_construct.seeking = FALSE - to_chat(the_construct, span_cultitalic("You are now tracking Nar'Sie, return to reap the harvest!")) + to_chat(the_construct, span_cult_italic("You are now tracking Nar'Sie, return to reap the harvest!")) return if(!LAZYLEN(GLOB.cult_narsie.souls_needed)) - to_chat(the_construct, span_cultitalic("Nar'Sie has completed her harvest!")) + to_chat(the_construct, span_cult_italic("Nar'Sie has completed her harvest!")) return the_construct.master = pick(GLOB.cult_narsie.souls_needed) var/mob/living/real_target = the_construct.master //We can typecast this way because Narsie only allows /mob/living into the souls list - to_chat(the_construct, span_cultitalic("You are now tracking your prey, [real_target.real_name] - harvest [real_target.p_them()]!")) + to_chat(the_construct, span_cult_italic("You are now tracking your prey, [real_target.real_name] - harvest [real_target.p_them()]!")) desc = "Activate to track Nar'Sie!" button_icon_state = "sintouch" the_construct.seeking = TRUE diff --git a/code/modules/mob/living/basic/farm_animals/sheep.dm b/code/modules/mob/living/basic/farm_animals/sheep.dm index e32da910ab9..2fdaeda657d 100644 --- a/code/modules/mob/living/basic/farm_animals/sheep.dm +++ b/code/modules/mob/living/basic/farm_animals/sheep.dm @@ -58,11 +58,11 @@ if(cult_converted) for(var/mob/living/cultist as anything in invokers) - to_chat(cultist, span_cultitalic("[src] has already been sacrificed!")) + to_chat(cultist, span_cult_italic("[src] has already been sacrificed!")) return STOP_SACRIFICE for(var/mob/living/cultist as anything in invokers) - to_chat(cultist, span_cultitalic("This feels a bit too cliché, don't you think?")) + to_chat(cultist, span_cult_italic("This feels a bit too cliché, don't you think?")) cult_converted = TRUE INVOKE_ASYNC(src, TYPE_PROC_REF(/atom/movable, say), "BAAAAAAAAH!") diff --git a/code/modules/mob/living/basic/pets/cat/cat.dm b/code/modules/mob/living/basic/pets/cat/cat.dm index dd8a588e915..3c2612d9a62 100644 --- a/code/modules/mob/living/basic/pets/cat/cat.dm +++ b/code/modules/mob/living/basic/pets/cat/cat.dm @@ -33,6 +33,7 @@ attack_verb_simple = "claw" attack_sound = 'sound/weapons/slash.ogg' attack_vis_effect = ATTACK_EFFECT_CLAW + cult_icon_state = "cat_cult" ///can this cat breed? var/can_breed = TRUE ///can hold items? diff --git a/code/modules/mob/living/basic/pets/dog/corgi.dm b/code/modules/mob/living/basic/pets/dog/corgi.dm index 61c18ab5354..2011992da56 100644 --- a/code/modules/mob/living/basic/pets/dog/corgi.dm +++ b/code/modules/mob/living/basic/pets/dog/corgi.dm @@ -11,6 +11,7 @@ butcher_results = list(/obj/item/food/meat/slab/corgi = 3, /obj/item/stack/sheet/animalhide/corgi = 1) gold_core_spawnable = FRIENDLY_SPAWN collar_icon_state = "corgi" + cult_icon_state = "narsian" ai_controller = /datum/ai_controller/basic_controller/dog/corgi ///Access card for the corgi. var/obj/item/card/id/access_card = null @@ -507,7 +508,7 @@ /mob/living/basic/pet/dog/corgi/narsie/narsie_act() if(stat == DEAD) //Nar'Sie loves her doggy visible_message(span_warning("[src] arises again, revived by the dark magicks!"), \ - span_cultlarge("RISE")) + span_cult_large("RISE")) revive(ADMIN_HEAL_ALL) //also means that a dead Nars-Ian can consume a pet and revive adjustBruteLoss(-maxHealth) diff --git a/code/modules/mob/living/basic/pets/dog/dog_subtypes.dm b/code/modules/mob/living/basic/pets/dog/dog_subtypes.dm index 31c8562ce1e..0d52075a9a3 100644 --- a/code/modules/mob/living/basic/pets/dog/dog_subtypes.dm +++ b/code/modules/mob/living/basic/pets/dog/dog_subtypes.dm @@ -9,6 +9,7 @@ icon_living = "pug" icon_dead = "pug_dead" butcher_results = list(/obj/item/food/meat/slab/pug = 3) + cult_icon_state = "pug_cult" gold_core_spawnable = FRIENDLY_SPAWN collar_icon_state = "pug" held_state = "pug" diff --git a/code/modules/mob/living/basic/pets/pet.dm b/code/modules/mob/living/basic/pets/pet.dm index c8507454f77..de5ad59eb1f 100644 --- a/code/modules/mob/living/basic/pets/pet.dm +++ b/code/modules/mob/living/basic/pets/pet.dm @@ -10,9 +10,12 @@ var/collar_icon_state = null /// We have a seperate _rest collar icon state when the pet is resting. var/has_collar_resting_icon_state = FALSE - /// Our collar var/obj/item/clothing/neck/petcollar/collar + ///can we become cultists? + var/can_cult_convert = TRUE + ///whether we have a custom icon state when we get culted + var/cult_icon_state /mob/living/basic/pet/Initialize(mapload) . = ..() @@ -22,6 +25,8 @@ collar = new(src) update_icon(UPDATE_OVERLAYS) + if(can_cult_convert) + RegisterSignal(src, COMSIG_LIVING_CULT_SACRIFICED, PROC_REF(become_cultist)) /mob/living/basic/pet/Destroy() . = ..() @@ -43,6 +48,10 @@ /mob/living/basic/pet/update_overlays() . = ..() + if(isnull(mind) && (FACTION_CULT in faction)) + var/image/cult_indicator = image(icon = 'icons/mob/simple/pets.dmi', icon_state = "pet_cult_indicator", layer = ABOVE_GAME_PLANE) + . += cult_indicator + if(!collar || !collar_icon_state) return @@ -54,6 +63,12 @@ . += mutable_appearance(icon, "[collar_icon_state][stat_tag]collar") . += mutable_appearance(icon, "[collar_icon_state][stat_tag]tag") +/mob/living/basic/pet/update_icon_state() + if(cult_icon_state && (FACTION_CULT in faction)) + icon_state = cult_icon_state + icon_living = cult_icon_state + return ..() + /mob/living/basic/pet/gib() remove_collar(drop_location(), update_visuals = FALSE) return ..() diff --git a/code/modules/mob/living/basic/pets/pet_cult/pet_cult.dm b/code/modules/mob/living/basic/pets/pet_cult/pet_cult.dm new file mode 100644 index 00000000000..438737a1ad2 --- /dev/null +++ b/code/modules/mob/living/basic/pets/pet_cult/pet_cult.dm @@ -0,0 +1,85 @@ +#define PET_CULT_ATTACK 10 +#define PET_CULT_HEALTH 50 + +///turn into terrifying beasts +/mob/living/basic/pet/proc/become_cultist(datum/source, list/invokers, datum/team) + SIGNAL_HANDLER + + if(stat == DEAD || !can_cult_convert) + return + + if(FACTION_CULT in faction) + return STOP_SACRIFICE + + mind?.add_antag_datum(/datum/antagonist/cult, team) + qdel(GetComponent(/datum/component/obeys_commands)) + melee_damage_lower = max(PET_CULT_ATTACK, initial(melee_damage_lower)) + melee_damage_upper = max(PET_CULT_ATTACK + 5, initial(melee_damage_upper)) + maxHealth = max(PET_CULT_HEALTH, initial(maxHealth)) + fully_heal() + + faction = list(FACTION_CULT) //we only serve the cult + + if(isnull(cult_icon_state)) + add_atom_colour(RUNE_COLOR_MEDIUMRED, FIXED_COLOUR_PRIORITY) + + var/static/list/cult_appetite = list( + /obj/item/organ, + /obj/effect/decal/cleanable/blood, + ) + + var/static/list/death_loot = list( + /obj/effect/gibspawner/generic, + /obj/item/soulstone, + ) + + AddElement(/datum/element/basic_eating, heal_amt = 15, food_types = cult_appetite) + AddElement(/datum/element/death_drops, death_loot) + + basic_mob_flags &= DEL_ON_DEATH + qdel(ai_controller) + ai_controller = new /datum/ai_controller/basic_controller/pet_cult(src) + var/datum/action/cooldown/spell/conjure/revive_rune/rune_ability = new(src) + rune_ability.Grant(src) + ai_controller.set_blackboard_key(BB_RUNE_ABILITY, rune_ability) + ai_controller.set_blackboard_key(BB_CULT_TEAM, team) + + var/static/list/new_pet_commands = list( + /datum/pet_command/point_targeting/attack, + /datum/pet_command/follow, + /datum/pet_command/free, + /datum/pet_command/idle, + /datum/pet_command/untargeted_ability/draw_rune, + ) + AddComponent(/datum/component/obeys_commands, new_pet_commands) + RegisterSignal(src, COMSIG_HOSTILE_PRE_ATTACKINGTARGET, PROC_REF(activate_rune), override = TRUE) + update_appearance() + return STOP_SACRIFICE + + +/mob/living/basic/pet/proc/activate_rune(datum/source, atom/target) + SIGNAL_HANDLER + + if(!istype(target, /obj/effect/rune/raise_dead)) + return NONE + + target.attack_hand(src) + + return COMPONENT_CANCEL_ATTACK_CHAIN + +/mob/living/basic/pet/Login() + . = ..() + if(!. || !client) + return FALSE + + if(!(FACTION_CULT in faction)) + return + var/datum/team/cult_team = locate(/datum/team/cult) in GLOB.antagonist_teams + if(isnull(cult_team)) + return + mind.add_antag_datum(/datum/antagonist/cult, cult_team) + update_appearance(UPDATE_OVERLAYS) + + +#undef PET_CULT_ATTACK +#undef PET_CULT_HEALTH diff --git a/code/modules/mob/living/basic/pets/pet_cult/pet_cult_abilities.dm b/code/modules/mob/living/basic/pets/pet_cult/pet_cult_abilities.dm new file mode 100644 index 00000000000..83d70336f2c --- /dev/null +++ b/code/modules/mob/living/basic/pets/pet_cult/pet_cult_abilities.dm @@ -0,0 +1,14 @@ +/datum/action/cooldown/spell/conjure/revive_rune + name = "Create Revival Rune" + button_icon = 'icons/obj/antags/cult/rune.dmi' + button_icon_state = "1" + background_icon_state = "bg_cult" + overlay_icon_state = "bg_cult_border" + spell_requirements = NONE + cooldown_time = 30 SECONDS + summon_type = list( + /obj/effect/rune/raise_dead, + ) + summon_radius = 0 + create_summon_timer = 5 SECONDS + sound = 'sound/magic/exit_blood.ogg' diff --git a/code/modules/mob/living/basic/pets/pet_cult/pet_cult_ai.dm b/code/modules/mob/living/basic/pets/pet_cult/pet_cult_ai.dm new file mode 100644 index 00000000000..dc778b5816f --- /dev/null +++ b/code/modules/mob/living/basic/pets/pet_cult/pet_cult_ai.dm @@ -0,0 +1,246 @@ +/datum/ai_controller/basic_controller/pet_cult + blackboard = list( + BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic/cultist, + BB_PET_TARGETING_STRATEGY = /datum/targeting_strategy/basic/cultist, + BB_FRIENDLY_MESSAGE = "eagerly awaits your command...", + ) + + ai_movement = /datum/ai_movement/basic_avoidance + idle_behavior = /datum/idle_behavior/idle_random_walk + planning_subtrees = list( + /datum/ai_planning_subtree/befriend_cultists, + /datum/ai_planning_subtree/find_occupied_rune, + /datum/ai_planning_subtree/find_dead_cultist, + /datum/ai_planning_subtree/drag_target_to_rune, + /datum/ai_planning_subtree/pet_planning, + /datum/ai_planning_subtree/simple_find_target, + /datum/ai_planning_subtree/basic_melee_attack_subtree, + ) + ai_traits = PAUSE_DURING_DO_AFTER + +///if target gets pulled away, unset him +/datum/ai_controller/basic_controller/pet_cult/proc/delete_pull_target(datum/source, atom/movable/was_pulling) + SIGNAL_HANDLER + + UnregisterSignal(src, COMSIG_ATOM_NO_LONGER_PULLING) + + if(was_pulling == blackboard[BB_DEAD_CULTIST]) + clear_blackboard_key(BB_DEAD_CULTIST) + +///targeting strat to attack non cultists +/datum/targeting_strategy/basic/cultist + +/datum/targeting_strategy/basic/cultist/faction_check(datum/ai_controller/controller, mob/living/living_mob, mob/living/the_target) + return IS_CULTIST_OR_CULTIST_MOB(the_target) + +///befriend all cultists around us! +/datum/ai_planning_subtree/befriend_cultists + +/datum/ai_planning_subtree/befriend_cultists/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) + if(controller.blackboard_key_exists(BB_FRIENDLY_CULTIST)) + controller.queue_behavior(/datum/ai_behavior/befriend_target, BB_FRIENDLY_CULTIST) + return + + controller.queue_behavior(/datum/ai_behavior/find_and_set/friendly_cultist, BB_FRIENDLY_CULTIST, /mob/living/carbon) + +///behavior to find cultists that we befriend +/datum/ai_behavior/find_and_set/friendly_cultist + action_cooldown = 5 SECONDS + behavior_flags = AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION + +/datum/ai_behavior/find_and_set/friendly_cultist/search_tactic(datum/ai_controller/controller, locate_path, search_range) + var/mob/living/living_pawn = controller.pawn + for(var/mob/living/carbon/possible_cultist in oview(search_range, controller.pawn)) + if(IS_CULTIST(possible_cultist) && !(living_pawn.faction.Find(REF(possible_cultist)))) + return possible_cultist + + return null + +///subtree to find a rune with a viable target on it, so we can go activate it +/datum/ai_planning_subtree/find_occupied_rune + +/datum/ai_planning_subtree/find_occupied_rune/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) + if((LAZYLEN(GLOB.sacrificed) - SOULS_TO_REVIVE - GLOB.sacrifices_used) < 0) + controller.clear_blackboard_key(BB_OCCUPIED_RUNE) + return + + if(controller.blackboard_key_exists(BB_OCCUPIED_RUNE)) + controller.queue_behavior(/datum/ai_behavior/activate_rune, BB_OCCUPIED_RUNE) + return SUBTREE_RETURN_FINISH_PLANNING + + controller.queue_behavior(/datum/ai_behavior/find_and_set/occupied_rune, BB_OCCUPIED_RUNE, /obj/effect/rune/raise_dead) + +/datum/ai_behavior/find_and_set/occupied_rune + +/datum/ai_behavior/find_and_set/occupied_rune/search_tactic(datum/ai_controller/controller, locate_path, search_range) + var/datum/team/cult/cult_team = controller.blackboard[BB_CULT_TEAM] + if(isnull(cult_team)) + return null + + for(var/obj/effect/rune/raise_dead/target_rune in oview(search_range, controller.pawn)) + controller.set_blackboard_key(BB_NEARBY_RUNE, target_rune) + var/mob/living/occupant = locate(/mob/living/carbon/human) in get_turf(target_rune) + if(isnull(occupant)) + continue + if(occupant.stat != DEAD || !IS_CULTIST(occupant)) + continue + return target_rune + + return null + +/datum/ai_behavior/activate_rune + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT | AI_BEHAVIOR_CAN_PLAN_DURING_EXECUTION | AI_BEHAVIOR_REQUIRE_REACH + action_cooldown = 3 SECONDS + +/datum/ai_behavior/activate_rune/setup(datum/ai_controller/controller, target_key) + . = ..() + var/turf/target = controller.blackboard[target_key] + if(isnull(target)) + return FALSE + set_movement_target(controller, target) + +/datum/ai_behavior/activate_rune/perform(seconds_per_tick, datum/ai_controller/controller, target_key) + . = ..() + var/atom/target = controller.blackboard[target_key] + + if(QDELETED(target)) + finish_action(controller, FALSE, target_key) + return + + var/datum/team/cult/cult_team = controller.blackboard[BB_CULT_TEAM] + var/mob/living/revive_mob = locate(/mob/living) in get_turf(target) + + if(isnull(revive_mob) || revive_mob.stat != DEAD || !(revive_mob.mind in cult_team.members)) + finish_action(controller, FALSE, target_key) + return + + var/mob/living/basic/living_pawn = controller.pawn + living_pawn.melee_attack(target) + + finish_action(controller, TRUE, target_key) + return + +/datum/ai_behavior/activate_rune/finish_action(datum/ai_controller/controller, success, target_key) + . = ..() + controller.clear_blackboard_key(target_key) + + +///find targets that we can revive +/datum/ai_planning_subtree/find_dead_cultist + +/datum/ai_planning_subtree/find_dead_cultist/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) + if((LAZYLEN(GLOB.sacrificed) - SOULS_TO_REVIVE - GLOB.sacrifices_used) < 0) + controller.clear_blackboard_key(BB_DEAD_CULTIST) + return + + var/mob/living/living_pawn = controller.pawn + + if(!isnull(living_pawn.pulling)) + return + + if(controller.blackboard_key_exists(BB_DEAD_CULTIST)) + controller.queue_behavior(/datum/ai_behavior/pull_target/cult_revive, BB_DEAD_CULTIST) + return SUBTREE_RETURN_FINISH_PLANNING + + controller.queue_behavior(/datum/ai_behavior/find_and_set/dead_cultist, BB_DEAD_CULTIST, /mob/living/carbon/human) + +/datum/ai_behavior/find_and_set/dead_cultist + +/datum/ai_behavior/find_and_set/dead_cultist/search_tactic(datum/ai_controller/controller, locate_path, search_range) + var/datum/team/cult/cult_team = controller.blackboard[BB_CULT_TEAM] + if(isnull(cult_team)) + return null + var/mob/living/living_pawn = controller.pawn + for(var/mob/living/carbon/human/target in oview(search_range, controller.pawn)) + if(target.stat != DEAD) + continue + if(!IS_CULTIST(target)) + continue + if(target.buckled || target.move_resist > living_pawn.move_force || target.pulledby) + continue + if(locate(/obj/effect/rune/raise_dead) in target.loc) + continue + return target + return null + +/datum/ai_behavior/pull_target/cult_revive + +/datum/ai_behavior/pull_target/cult_revive/finish_action(datum/ai_controller/basic_controller/controller, succeeded, target_key) + . = ..() + if(!succeeded) + return + var/atom/target = controller.blackboard[target_key] + if(QDELETED(target)) + return + controller.RegisterSignal(controller.pawn, COMSIG_ATOM_NO_LONGER_PULLING, TYPE_PROC_REF(/datum/ai_controller/basic_controller/pet_cult, delete_pull_target), override = TRUE) + +/datum/ai_planning_subtree/drag_target_to_rune + +/datum/ai_planning_subtree/drag_target_to_rune/SelectBehaviors(datum/ai_controller/controller, seconds_per_tick) + + if(!controller.blackboard_key_exists(BB_DEAD_CULTIST)) //no target, we dont need to do anything + return + + var/mob/living/our_pawn = controller.pawn + + if(isnull(our_pawn.pulling)) + return + + var/atom/target_rune = controller.blackboard[BB_NEARBY_RUNE] + + if(QDELETED(target_rune)) + controller.queue_behavior(/datum/ai_behavior/use_mob_ability, BB_RUNE_ABILITY) + return SUBTREE_RETURN_FINISH_PLANNING + + if(!can_see(our_pawn, target_rune, 9)) + controller.clear_blackboard_key(BB_NEARBY_RUNE) + return + + controller.queue_behavior(/datum/ai_behavior/drag_target_to_rune, BB_NEARBY_RUNE, BB_DEAD_CULTIST) + +///behavior to drag the target onto the rune +/datum/ai_behavior/drag_target_to_rune + required_distance = 0 + behavior_flags = AI_BEHAVIOR_REQUIRE_MOVEMENT + +/datum/ai_behavior/drag_target_to_rune/setup(datum/ai_controller/controller, target_key, cultist_key) + . = ..() + var/turf/target = controller.blackboard[target_key] + if(isnull(target)) + return FALSE + set_movement_target(controller, target) + +/datum/ai_behavior/drag_target_to_rune/perform(seconds_per_tick, datum/ai_controller/controller, target_key, cultist_key) + . = ..() + var/mob/living/our_pawn = controller.pawn + var/atom/cultist_target = controller.blackboard[cultist_key] + if(isnull(cultist_target)) + finish_action(controller, FALSE, target_key, cultist_key) + return + var/list/possible_dirs = GLOB.alldirs.Copy() + possible_dirs -= get_dir(our_pawn, cultist_target) + for(var/direction in possible_dirs) + var/turf/possible_turf = get_step(our_pawn, direction) + if(possible_turf.is_blocked_turf(source_atom = our_pawn)) + possible_dirs -= direction + step(our_pawn, pick(possible_dirs)) + our_pawn.stop_pulling() + finish_action(controller, TRUE, target_key, cultist_key) + + +/datum/ai_behavior/drag_target_to_rune/finish_action(datum/ai_controller/controller, success, target_key, cultist_key) + . = ..() + if(success) + var/atom/revival_rune = controller.blackboard[target_key] + controller.set_blackboard_key(BB_OCCUPIED_RUNE, revival_rune) + controller.clear_blackboard_key(cultist_key) + controller.clear_blackboard_key(target_key) + +///command ability to draw runes +/datum/pet_command/untargeted_ability/draw_rune + command_name = "Draw Rune" + command_desc = "Draw a revival rune." + radial_icon = 'icons/obj/antags/cult/rune.dmi' + radial_icon_state = "1" + speech_commands = list("rune", "revival") + ability_key = BB_RUNE_ABILITY diff --git a/code/modules/pai/pai.dm b/code/modules/pai/pai.dm index cd128499750..46ca820580c 100644 --- a/code/modules/pai/pai.dm +++ b/code/modules/pai/pai.dm @@ -458,7 +458,7 @@ SIGNAL_HANDLER for(var/mob/living/cultist as anything in invokers) - to_chat(cultist, span_cultitalic("You don't think this is what Nar'Sie had in mind when She asked for blood sacrifices...")) + to_chat(cultist, span_cult_italic("You don't think this is what Nar'Sie had in mind when She asked for blood sacrifices...")) return STOP_SACRIFICE /// Updates the distance we can be from our pai card diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index ed877787f25..7a43a0fc5e7 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -407,7 +407,7 @@ removed_any = TRUE qdel(BS) if(removed_any) - to_chat(affected_mob, span_cultlarge("Your blood rites falter as holy water scours your body!")) + to_chat(affected_mob, span_cult_large("Your blood rites falter as holy water scours your body!")) if(data["deciseconds_metabolized"] >= (25 SECONDS)) // 10 units affected_mob.adjust_stutter_up_to(4 SECONDS * REM * seconds_per_tick, 20 SECONDS) @@ -417,7 +417,7 @@ if(prob(10)) affected_mob.visible_message(span_danger("[affected_mob] starts having a seizure!"), span_userdanger("You have a seizure!")) affected_mob.Unconscious(12 SECONDS) - to_chat(affected_mob, span_cultlarge("[pick("Your blood is your bond - you are nothing without it", "Do not forget your place", \ + to_chat(affected_mob, span_cult_large("[pick("Your blood is your bond - you are nothing without it", "Do not forget your place", \ "All that power, and you still fail?", "If you cannot scour this poison, I shall scour your meager life!")].")) if(data["deciseconds_metabolized"] >= (1 MINUTES)) // 24 units diff --git a/code/modules/spells/spell_types/conjure/_conjure.dm b/code/modules/spells/spell_types/conjure/_conjure.dm index 10b14bd47d5..99f0c5af821 100644 --- a/code/modules/spells/spell_types/conjure/_conjure.dm +++ b/code/modules/spells/spell_types/conjure/_conjure.dm @@ -15,12 +15,17 @@ var/summon_respects_density = FALSE /// If TRUE, no two summons can be spawned in the same turf. var/summon_respects_prev_spawn_points = TRUE + /// for how long must we stay still when summoning + var/create_summon_timer /datum/action/cooldown/spell/conjure/is_valid_target(atom/cast_on) return isturf(cast_on.loc) /datum/action/cooldown/spell/conjure/cast(atom/cast_on) . = ..() + if(create_summon_timer && !do_after(owner, create_summon_timer, target = cast_on.loc)) + owner?.balloon_alert(owner, "need to stay still!") + return var/list/to_summon_in = list() for(var/turf/summon_turf in range(summon_radius, cast_on)) if(summon_respects_density && summon_turf.density) diff --git a/icons/mob/simple/pets.dmi b/icons/mob/simple/pets.dmi index 311fff1e6b0dc0389a83aacb9ef2e4960fa867e1..b7e8642387228a2e5fb1eec39f69f13f509ad591 100644 GIT binary patch literal 87208 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

rL0k$1xW)M9`t< zrcUk15=?L2Ozh+11X(9`x#|!-qVA%%Ur-!ghmfnQD?p7g={L}#Rt{Ict4+d?H`V4; z61)+YAxV9mcmUeXYRmri){&8qW+GX=!(znjbFSuqsqX6-W`vB|Ta|a}KGM9!%`V}& z%kRfXp7+mf+PQ6&=7q>x~@g4M;YlbPuBq=Fre39E@rCt^7>F<=% z+RHz}pu1RD+jwga(K_wB=wm}mN{GeykL*>0*(h)KY+cjCF^L?%roUOVum1$Q?RWot zgPR*09S!Y^mokxt66G|W;H0Jr;Jq+APp`^@C>jwyUfvg?-lQa2ISc&do~at40XK3w$WxC64%8gMUa`s~w{7lQ`Eo0+7f*_6cK+PsAqp2=uzSa29t{dSA}2 zquZf?U~mcczc>N>vxC-2_$gDo#LQgH{Vct>k7DQZgsRqsU}DYaj@%JH_-MqGBKLaE zA~_FE7emXV4A*O9@Y5y{vg*>2RMQT)_aK(!v)Cp4muaUVSSOBP?O^E1s>YUCNPO?P zCEjHt5y|WhK4@8Oby@O8Dqf!bvoF{~x^D^XUo_r_r&7V14M<^}7QaBVg^cZt_91Ig=Ee`DNeg5#5N?G~u)c>rD$E zx|UekQZyAerfFZ_$45W?mi<^zWf2l(qrbQ@Z26j4`~1}fNK=v(vi*XCvBbnq_2v7u4z@+Vb$sBA#f_3% z)FspX5#)PS^q&41P=|9mQ!UQCE}5E6%l;Xoz!syB{rZFyz+plN7oIVH4Y$V+d;8_| zCch7-oVSO}R(xD2gy;n<$tz8IDeI7kn|QwW=+1l7CN2*iD8)BDjvFL@ft{0^TLxgV zG7BXX`h9(!SyMwhp{S^0Xc)bd%?6xEq?pi>os7{nFXsHlyef^xLvdV}mZB~JOIW7X za#XS%qIl1z8Sz*Q(P0VsJS*iL;LVp`NRP%O;h?mYl$6(wI66OZI0P4FMmuum_P56{ zxH2Ml!@r87L(n!U#bcsR^7DW6RW2A?r=CP4gUO{l=Yb#RVoe3U6I}EB4n#f03Qc!4 z`02OSk#mR#dOnyH#03KxhiqjoQe1EHe$ck)XL(KDnOff2Z*Ff``PKcJvvNh=*?8=p zm?-1N3f)h)89&x@XD+$_l8beLinWq5BIYcxd`(n< zp+03C`B4U0J}{8nI-NtGVHLA!GIUY48R|E9$B&EJJcHM(4GV6v4)0nUxP+^|b@``8VcCMZa`=-t@vjMGo&( z80sRF|EJrvFcx+`!UvM94;yU+=tphjA4pu08GZj z1$Qv>4{0qQ($YKXH}(%FND9HBGLcwX=AIB{l_1PI8wL&Bll-7qjCZo99zIK1i+bkdwdnMoR;C3}ryLCz{z;9*C&T zFHw+Bo@h||MhdFRPV*W zWBQuD8u!=4XsRhe<<~R9^~);zDbbY;wmLrK#qn+UR8@z@Mr-+=LZ!UPwRq4@2pX4`Gm{;0lK-9!=tg1219 zixXlB(K}ha?&9oGuAo6Pe{C@P$0dEKg?caD;tQIJ#3}ceI5Q_&IB{OlJ(WIj8U`K@ zy$W6nHWKTp(mTMQ2enepl$wN((QH)ZsQsVtzp_>Tuh?B*Un1j)sJ(b$4?-*mr7w6@ zR|mMFpOT^cd>yFOQ!(z*()HO6U@q(uFTb}Fw57*Qpn@h7$XovgmvMKV3X%Pr1Qw1s z7j(qNli5^rP?j$2w=9Yz5I%#S;K?;uAi=r6`W!c|GP$f z4D#!@Yi#~};OUrX;&x)8cn|VnM!!aUVB2m;Bsh@QdXHB~hW3O>>5d((PQl0|RcBu~ zxs)W4TK=%S*|0KlkR8KQHDfFT#7O4DRP)i>TE9+iTITT2`${b>t*SZZ zj1*#&j6pZ#CNgcW`;=3uetOE=nD-{u>G06v2h+c%jQp$4sAxQ;;<~!F#=^pah8x(z zNfM()+QimXkiflc&;|F!G|ZN5dFW{(q`h*CruRHP7#6KJEdex&!^=ce+}ce5MqrLr zXx3H}g(0esW(0DS5?Yk*FayUqpwxN!>Q%E^_uH2vsiif1K>frmAV87(CanXg8X zr=gBK!>n_RbSju&4>>jtfvky!0HSuuVK~;g{Rd5-3j7FOquEH%>_2yF&;7A*gxnj% z6}wT+^+PO5yq;VuqRcg_5G55w`eq-adbdcZF-&T}GY9N~r4qbLAe|fDn`dcpf!8`A zXRn`%IJ)D4E%h(V*f;O|HIBOJpUu?h#U83&Rgj0Q6%N{UR-HjZ+_rQ341OhPam}EA z3E9dSZ|V4qeE9l0;3Uu3WO?&&!Gc|Zh>@!{ZQ!dSFfepP0r*? z;JL>zV=^|QyU(@I0WBULT<2Y!x=8TfFgKC0p9nN)mWwn?41&<`y|aSQXnp6G+h;Zl zhiLxMa^BZtXiRuMrO`+n9$c3r$1y@`iP%%VNW} zZBizbJ4c5~($){3N(fb6G0ZNQF~`srsXZ{%V}%IXqqT9`Q`1AAbonKN? zc%Gx}C16~FX2vGK3kLE4<=ocD$9H5}TL_+8+|l-*pOQcTU7kaao5NH5_B0pmdm9H= zqIl=D_*z2}IdmXUkeVnL{7s%Je{gB0;%FNE6`P#QyK3y)BBgeqcrmxRt!{oO^W6#`EGfAa^nh zx1RNhkf}0ULtPy(kgc7aK$p~@GB%#EAA~D4Qird%jyUo}0mEPh@T!MAzt=2!&=8yk zL(rHFBsWLW2{zF>hJ?hha&Ta?%15%iBGlb^dk@OG0_yoR$an^;+G<#K@K;Xu}=wJo z&2qc;FSQB5#c<<;!RhyWBO)uTj~-&wVXB%HU>|ad`+}|KBPgeiLHls{`GA973?ZRu zqTJ+F!^1Q1P-#H2Lx%3tu>o9)A;YLBEHVGZu$v(jV&QutyA(oo zi%a)0edt;AFt>aop~BG0Rse?x&p)%!f-p1xu;i)y*A0-CmW$+;06-#J z3@F2r70sh-Pkv+H>*munExN4H-xZ`o9~c-g1vLUdaHL&k8cAHf@`4Fz#tFYX0jZVG z=%_lN6;L2JiY&Z2Xe5eS;jOfMH=!sDibz60 zK1Ax6q}b+ykiX}9yh&tO)F)LHRKJKHHM@XtpdG+c(@#4`euc<(nC%vCrDcLB#83>W z6^=gS7&1S;WZqCW8%;;NZDfDy}=Eq{CV|V^u^v~)8oC!gg*O7z5 z)eZ5`pd#gs1g6ibGp(t}XfF|gnc+dXE}8lO<6UPB3H%+>hB^Fa zRTVbAp~u(u@A;#^?#@xnL>2V?4*y$^hB0{3bmapg&*^n<+iQj?q7pHzL!hnZ=H$dp zNJyA0Z9lKSL0k>O?%lhGK2dDg37A?wm;HB`n3&jpUyvxQ{Mo{NRJ?}Pl;W~g`F?Av zj9o5@-Xew&SwZZu5Gwt)Q#8Ti@2Bl7f9=9TMnz=Ok|P!Xu}Se#{j#fK3m@sqH4&t~WR z-6fWens!kSnCm&$13u;dImBRA*Hwk$KQI4ZooBG5d|&;}e|)LOm*Pfkqqq1q28QMT zmlT-IY&od3>R)i0EkCMFdWHR8r)NL&7jOaGMp}p>5{d33>9e@-JN8N|hI|oWaC<(> zeecVEy-5XQsh^0iTMxH~H@419M8k~wMz&}p<&g6xuV3HsX<_xKQ`uX6i+Q!h6 z#r3>6y|>VV`}a%g>cpaK$WTm0Re8X|RY8~~l-ME31WC*#3t{en+ax+gKm1&;9DZvE zH#@?JR&phPEUm2UJrCB~2}A@O%PC+Ap8f}iilvgc@u{f;kkQd{dveiP3(@P1;?jOG&!fH%Vgvjzb6>OuJ^RPQHwiRs^>bj!>Ek5?)N)r4; z>y7x;VolzsioXueN0ZuK^JQv)yLJ;9de^PyGNf@I+2Cf6K~f!Wg7-?xOveZDThoJ4oZk>xF5(?t<6rf|j!HHfn za8redB;=63EUIq>g&Xy`3M7xm%vyH@EI)cyI}g7R9p_yVB9z?IZWLPSEyv>wFJ3$q zObVLeYS5KYbHad1kS7;Zf38I~|BAROiZP!Z2c)G*QhxxV$2Q)D1KqqD1Eb26%zryT z*#F$!T|_RLG4eta-Z{;z$>tM|Rq1*9+(`%Lqf#VB(u5LIEcsn1PC!FYoko(u<^j5G zHFmnv1AphCr;yKv?BKuu-X*{Ht6OKZOIaf7eCXFw^On4M^zKa1LKMPBM1yBJD=R~jGib)j z40PQrnAd?B3t@C@MPt3Gpusd`neG&sLO{3WYI~sibaY~6i5{$bJuDRox4k5kRgd6s8hN?)z@k$Bcp-wis589eXObTd+XqWS2=a%XUrk` zFkxIs>ZqbJ#gz5_{eZxLfZ5W_pH?zj;{q848f)RPV|dGh$YLZV50PZyyGJ2XgM5LT zR}Vt;*3kMiDyFj=c^pso{w+AW>9{p_hBsE+k4n)ub@@?LE~f2~TBIIBE|oP5)rh#3 zxWC)^5`0~w`*d^E$cSTK9Umyqo|=~{KWyaO*kmP&_H;bR!%@3PMQ-VFD;Q!L!e~%h zL@LA)`j5tH`o@$?Mqkyvizw=wRRej=d$|DgTw;|o24d=>- zqDm&ztkMhAWW66@;^QB8*+p!QGeWe5ls-7emOq$_8!SYIz*420ubz1O$Z{7?`AN(d{QsPeZ|oS*IqR zdnG(!k_PnQ3D0;-=h)Bzz0h?As-zMwoim{Gy3fW7%i3<3PXz=*gqUy#WQ!xWcm86F zlHq?Uq6KS;(NJcK44nx+NRD z=DOxj29=1%yg?IaU(U(0%$z?(bcqBh#J&l4>XJuZ&#pzUx^aRQWLJvYD4QMO1mGZJ);>O0A#B_B2maoOpKTIDuIbx5K`l9(#i+baO>@cY3 z7bhmx9TrfR5iN1eVc>mbqH6uJ&TFW_%fp9XdbdACG)^3FZqGniaz3tS`)4E7gAlSi z-BjI0E;r6wqJKKewXk0gF4(Uu(d5`AV8d5tCUm4;-$7iS zJN@{>5&6mUHf=ZceD67xuZq@k&!104VUp0xeODp_*HsC)XZ~I5;TQ0okNkBW0}euX zX?>zjoqDBL+)&+9EW6eU6H92L&>I@)7RjCK}~= zdBe=l9#9&Z#AfQtV5#SCtLS&~xpo=Fhtc!r=W8stQgHn-?U$b{Gb8f8-eRBq8XvII z32UDG^WnuG0QdP`U%N-ph*E-R-2@;I?H&j9!NI|jeu4|0WVQ`g4{98@{3_?&@jT9V zNuC>>=eMe8YGyY4Ce&D419dkq;ykeGe_1R*{92*V_7BS z*gp_UZ#&7zXwXj?0%{c5IEoI*1okp%n|P68KMWeMzUvALS~<}w5@4-zV;^q&b;o6* z*nnz+E4!y!;3FWg0=pBMdh6M~lr7k2oj$cGRQ>=Gy}y$Uio6T{6w({2>axqeRafl` zfSRhHzTI(%ldMu*>+&{a@@hPC3>uja`ZzgUE9(=mTYwy{;XB;sq&P>47D^y%S!0 zL*R`iRan_4N$t}p{N8%3U=a@g=}aZ};Cn{q0Vd?*I4Z`>`{q<`DGO$TJ0XPbR)SwF z?n*4f$>ep+U)M^SG^ds`e9_IG1=49Z<;aEv=gUtf)Z+;)gNaw4Jm(Hi*62w- zfSy{#|HRJDE*M@?9%E>RC+!k)lrLLDv~a%W3^n!kN)ksA?WBcCBH?6e!H!G~+p-(= zP-ccfFsMRkYj0l$VOXB(c+-3ep(COhAPb>GLnxrPjjxG~q^A~(ytd=xOEa>?M}gY%YF7mqDg@|2q_`C{R&VK$ca zEw;=MaIgaP$tmgT=C`4&33~j^Stbbc2K)pTgpwt+^=$K>4NG(1WHvluOc!J28d-qMkz3}#Li>5c6tYwhv)HRwL`Aj z?#VMluQQGC4eBsM131sSsxM@+K1W-po5L8ddbM<7vHoZ+(LRFy$Q_=vo`~;8cvn#R z&HybWSRjL8Jg$sL-9xbsBE?oz3j<>T7MTs}mKGVHP>l)-5{c28_bD!JG`D~ut~O>X zKFxr7G`Xy103V=10s;aYTwJXK3^RW|?Zi!1x)1>yIAR8dNMH_Es8>k{s(oAmLPP?- zqD&(3F6*$2n&guP1mIYoU>H$wpx$MVT|i*q6dO80Fzf`ZVFs7gvT(GfMv;T2RYg_T z<512~BDi3xXC`j(xN?)ESY;JAQP9caKEm?1n)Ts5zUme6$vQjAd2eq*Ib|<4R@@g$CJB5@p3IYND{`N+f_RO}&+}i446#G& zq48>~T>*pDhJFL$8W>#-byZ-X2LBk>SKF6e=hg^iTa`&LC z7{#T@g)>~#89k@E$$L5z|Ir6k+SO^y9d6nF3kBZ!YrUwEaO){)mM~iHt7WZ4({bb zF}()pRYz{+G-3ZBcLwEDkw71a=C^(|dT6DfjI8XR6Z6tUtL+E&Pkw;5(@Wo0l(rrt;D_O(cK}HE#4sd3@s$Z1MPgVYf(>XwB=p zVU2=actb9S)T55^5xYQ zf8EIUCvY8CI5PF)*1>I@L-}ok)y|jO1}4)fbL4J=fQq>%O4Zm3h$s8%TTUHz8|1*7 zgxcL5s&}h3Mev*mCeGkzpYQuhKYXx6EF-xRSELjnl{53F2xw#cP-W$91BQDLpRs+gBfcKZ^F^RC@WVxmYsg z?sHs>G0SZ}vs!dkGOI(YR4mS(-opjtvkTTii5u=(VqwB3H`mNNmjX%Fu7Al*tSs`z z?F`bC9>}_C+wRZ~`Hocscw%o1hbN~??ws^1NiBS{e?7TqBeLb@fK=FgugnX+V z88CIZ6|0V-OzbO;)g|`LC-7YU?gWClhw4H!DL^ynM2@L3I)r<9i!$o%X?2U(gWsME zECYmHCb1xwX-NRS&+2>2jz7Cwn)^CFG6wBB1U4v2Q>SoNT>p9O)=Y@1Pu=ySnVG0Q zd3;iMM>wxp2&tM!cXu~PUW13zs=I!c9lz(~ySfTm2VN)=v|21H+sjk|^#oT-W}s)G zkViK-DQRUKR=CltYmCB&2_v(pz#tW^0cnVBm zYiVuilUoGxs;I!==EEZTI=(V3_!=tXa*iX8#PkVDEHlp&##=jE!Nwz+m?;oHP+#gK zW2+AWQKDU^;fB9{HS}rL#8bsCTG2M()y37l0ir5mQ6?4xsSAEv=5%}MkTUFxVeQ?* z#(ZNA#>W2q^I)-@G)&}ciYK+SrP*TBoDexJ)60EW@{Q4%CH>7Uu0$#lA4SlL0Nvz0 z7dKp=95m$yCT$G11f_WsYjW5AlW1ga(!2?pjXE#*m{L{o z)*C_zojSwCq0N();LH93u7M5-f7w?DcD~hSfFvnqBU$HEH5zE(YRk>&TA?yMbmQ-f z27RJyGynU&0Y0n0@zlF2I~EtGBRshq;+pS6C48PI#)hLDRsrq?m;V&sd8JV5Z8*Nj zv#nR#9|jG!pm6SSUe(wDd*7_}6j zF58vREYxn^o3E#{ET?^Or-BDz`2ZpVGV$nIOwiDLUgf&lu2sH^Tu%@RIz#fiH0%g{>w^;|6E{{~L6rYf&+7oa5y|5p&`H}Tg zCbU+tYW;!hRfaZx{N+>U5_NTuz+Pk;N?RP6I5M3CsqMa+CX$UT#dVQ5!~`1=&$z`x z^9Nn=PR7grN_p$THj6;FKMZ+&#;EUG#%O%`TM3(|U_v9qggJ88h~09ED0|S@KQ?3~ z`2s{lAZx~Il>D4t^91K1Mu(KWI}^}o{&-CvT9+x)rs!?uv>*RucTjnFp}1n&_Pj~< ze9qF)^`9WI@31%%$?vPW54FkO$Rp|jyeH(6zujLXi0&nkxdh1!C0z0GR90(rcuKUT zCUu2NY2kV)0=4tIhGe|J%r+q?o8yJs6anU)JEG!5fCP~TX%ryD1M-aCzh^lyQL z*7YR{gl{?Odcu#`l?NA295x=qBqh1^Dk7c`cPr_r`4edt63=-9xSZ<|=kuRpxS&d@ zrv22=V^2U+w=nHjsp(#)=2~mv{~j!DqyPWC$|B%3I0LFr_u8{yCKvc!{paCQhyZ7P zw!L;ek?;NxkTidKQe?Bhh&848FY~|u!sB4y(> z&Upb$R8fzGAKQli{>1^<{yd&hZH?Y5pys`w9qOdc*GxTSHljB?!q(q<{e?!!+?19VZkg&lb4Uv@S4Wq7=DZ zN=iR_JWK{XLeKmA;0O>R!2t811u7sEO`^Kxv|S&nM=K#?bGd;pDiQ5f-~x;ehRx#M zi?rQa{}LYJD(UdTZWh?{cCUR7Crn1B9=xnetNv$N`~+othkD4*EX>kN6)ETT%a29& zL|-8BUEP=J>*ZPSuzhrk?)q3laj;rVXZeYr-X6M%WZL#w&o7Z6?G^_07Tj=XvC_(2 zKHgzFcj;CA^}!vV-;oQU!Z6LU48@h#Oe~(x!k@af=)`a7OzqWdm$vlD=)#+tq=236 zpKsqt2S%@4wnuS*pY@@IQZTY;*zMEDN5sH80rhCi+B1zUaq;~2_Oau(YSoF*U z@6qu$Ky=~cSF$^b@OWmwMYRqo%fd8cit; zftLRBX8;!m2j2}{M&Bpv|27_SZwvvva4rAb5;Rt7LC;Vm0pJSw___uIrL=N`l#6_^ zHqbVoqF9A*$9`fT(?n*Cmw_|eIx6x6uA6+SE_8qUcgK{&D!g>Sm_Rua~fr)?PnxEja8H1*iNi{3TlyMbCPw)HBnUgO~o_ zbz>q@!jHoZxZuin%VyAdwXL7qKEoQ)TR*7hT6y!*%ab`e!Y8+qNdAy$S|=8&lvF~Z44WKUicGbPdv1;eC#ctChmU&uV!u3GHV`wY)Xky?S#pp3y<%qHq(ump{H$fjEo>y8`(@q0h={$~_c zy4(KCcsM%zAU(R_PwR42UEz{(8Fm@~~r%NW@n0ek>zFPUE|HjtV zE0Qne>!qmsDF?Jzy^-3gXItNni;J6HWe|3Vef#;4f=koR2!C&;GPrG~ljq)U-&mM9 zG*qTv(i<3@eFtq_1PN@@QbAiTE+7$t8-zE;>r19QumVAc{~;J7qUw*Lr&?u=$$~Cm zyIT`Y_CuEHi$a8FXJ;JS>iAdH#Fwt0FRyBgDK9n!Ki0FZU0a?Ci`AUiL@=$>`VfmAfH`(8iecrmOHV&rv)C=r zxf`CvUEBgQh2S|gc%QIS0Wfr13ZU>Om5k8t1vN+DN&86-Dlx8F+ce54Ch9~ToRE9o z=rx0kb0VoSn|6xuwnp!WVhHbK7kl7Y>DEh_aSPL-@=fF1jeyV(PkvlgD!!(xpq9GL zXS#S~k(UpAW+VZz|J7@|gc)(ZJLQkU-T`v8Ig(2RnzO`VLm5csQO-2+{2%VpJ#psV z-q`^#KAM)py5*hP%)E|BE-Fx=7by<$?F~ySQ!z!hWHI_2k0OdwT?<_v|K6m+RO)P6 z5}hgE(Z5&i{?^7E2G}i>OWo4{wz(Dg|MH=oo2~%ye|gu=Zls6J2%phle(2X&p6!s# z|L}vVUrDM&yD%nv?t1jL4>~NR%z>EV&!?GZpv^U_jw0#R=w{0284K+ZP*beg(qv0c zq{@NEiU^`~n#emXdX4B$oPm3HP7NQuoNE40m3;C@rybtOzosV|U<+HUTXB;9pG_Nf zQ_;wb-l!ko5%j2Z64B^ci_M{J;({+hqbJcD(?=Wj&C?FtUu_uJd%>~4z#b&D8AcN@PbA?tl&5VzX33Z1 zkJTy7NE3A}!h?H)_w^?C?gin&)}DFuB}<4-nd$qp?J@0o_wwNl5~~D0{AK(fDF-{F zH=2@#k2Oj(wDY3x$J6awW)=^pVn#ompYu4Ml-z5xqh9;kff<)lX+1*jaHUM1p_cQ% z0}?j*GnS_US@MeO=qzbG$(#~R9mGGYsW0DnQ}-iJzcK|Q;jK2HA|rxcnAF$T*Y8sC z)hlV>K=N0Y2mAr*oD|^ftBjGYAplvzL3I{tKvvi;>_1)-G#jwad7IB?HtazipBUi} zdDi2iOo@QOW!u#NYl+Qikq?}4i1vGPLrA~Dlcr)?;6Bhq z+cw@llf0VASpfJZ2{@j>bt#Yv)67QxDl!X=;q7i%p9*l4uC2W-C@A>!D;U_6ChY-- z>3awRYfB`U{z3fFk>K#gxQ6KbBAampIKWAk1sh7a=Lxd)e8r0J= z)jcC(O@lF9H6s1|^S`5chWPeY7&T={$h9^ZhY`u%D0ZCbKXzT_4#z_uNa6Yovs?7{ zP#2bG0vvg>zRTQN2{zl!`IPP1gQIh4FoMx?VAq7vA#K4--XW-!D9!U22Rg*d{4%?P zb_pt`a&qp1EO+y45jgs}y7$7#pvzGE6e7Buw3}8@81$vv2e{5WlS6AcI>K0<*8|o? zn2=|@^SJAa^?- z1CFyVZ|DqU$HvAw+{|0|Y#%NdA8mHAK+GYM(3k7GMtvVxPgR?!T95uIj%TmE?|;=B z$Gb6*DjuGkOpijS!E&EhP=JE1iD_wr2pLFKb5s^T+dRSzPmHP1Edss{f`vU@>-|YO zAVukzp>hrCQ01mS(32B18`JrNOZKkqa(SP(4ytKs+h3bV>yD&NI)J1 z1O+V*X{FKKrcyBhrs=Exd+dF4B4=n{+{Ge9sQIrfHMU#U+>h6?F{p~og z7zJ`}@s0?Fa8UnST5dIgavj1*U)c2=OcfUbJ8;gMw5XF#qV$Ri%D0Awr|x!_qL6XD z38EWn*$qX2!!K{5`Y)ukgN_VToSd#_gur>^^hpOSg_PuEY)re!zm#o^1fdo-MB@!_gTf85t{n zR$}elY2BO37+d*i7_h=n0$XmJ_~1S5T0^1VW0o0(;}ag>I8}J*h7QWBuhQ?Uc9QQ} zZ=A!MIyjD6_cC*AYA0x2;82wiV!OaNHl{#ML6x;ygFeh}52$Ob-wz}rV?Wd#4N|RF z(%#MhTOB&#&-W466OGHD@}z|ys&Z!|qAD#NRwCqV?`0%{8HkcMJz45kHx z`KzFS3*CBtmuGatWR>6E!2LC5iBB)$>AihRw7{VO@kSrh^*(EQa-7W99S_LWg> zMQgA@iaQi7?hd6$(ctdT;#vyDDeg{iX^VSlfzsmc?q1woifi!X9qzsF|6A*^2uV(I zLeAE2&z^4v`yMVxB_XhebkkZeAih#E2F} zw%zR&&>vjS-Z$6xJqN>p4S*n_DIhW@hHusl-8&qspt^(C??8b!#n-{P59wm#Kh+w1 zTPc?NCW-|J5dQ7kdbBmyd_equpj#7A4k$Ufdb@tU5Vma zhjh&E&RLiaERs#UcV0dMavef0o5(;`O2x-f@*2B299r6Y95|qLb$i}VJz1nq{XDh+ z_4BM)2!y_XwuUAkc~$x@rm0CdzY18HiJR8rfOyP@ro6UJr#f9;0or5;pa?qW(G31q z)RF{K0qmHFu?LR8QzM{f(m$M3I$;A$e^S1WSg^-S_2-^9lFldOf56~#-G&N?uK^;} z-2+MV=j)-kn@0=P`$QYvZ|Ux_()sO(gA&5V#eGo`x^cn3kXu^C@EQX3sxJfYc1ZSQ z5!?WGU&t3go4t`UF4tIga7RUE(6U2HIGBArMCoPx*_pF*$?xw%@Q>LY4VOSIph&cT z02;hAAdlDF@B^5MSibTAg~SnsvXy~>|K0tn|{OkX#!9oc>p#H zly``D>2T_Efh&`6OSLNsLVj$2@bdL70CW`rmI5CTge9e=McTbD|E|`5HWs3v*6zn2 zaKB+lWGo6XhNxML|Fak6Vf$R(_ymGa$VA%0*WXi|cXV%YaH5?tJU9%u@h>;HAlbTW z-%5xuQwRMp05QBA235YhoB_C0dRYv(z5?!4C|uB zgW*>v-=#nR1p5Q82HA4u(Rp!c%v^ocbiZAr;WWSix7#i)K8)KU+%DRcS1yc;;f701 zZsr8=S*utB8onKX<`4c$hZXI0RBFEtgbtvyFAOAcZvmUuo$}QFVb8HlCvCoh>TwhR z6g}ScQ#WW9f^*w$1Tg+08nu0XVP$1C@y{(XCZ@YQ0BMrFl(&UFVnuK(pr05KX;*d!1zAA<0${6k9|j3DW!C}C^k;cu zg^*Q&&m9rmJbRR9a9v`vzdsbemx*p=>seU^uixGk*$1TcEZ;%p5N@wj-fJ58L zR}Qy4NYDzivge%WOwPH{NS|G^zvn}2@opn?>*>}aeMqi%fUoO;%+PE_fb}f2@#;D z?=B&<1}+Lj^O}vE)7=r^tg*3kvdZbW#a4VO;~dEpOmIJ4rOeOIpTFNBRsa%3@c>7L z7+~EsVe9@(n{n4o4me4Dhv|@wQVTmi8~Sq&q>Xj}gpNv!UJO9whXeru0g$9)-37u` zzq#t7ySHXzHSo#!r!y#2ZWmW%Fo2@g3H#AESpGSaVa%?)wNEMLdRTe(&y$`G!ocY- z#+DqkzH*`0VqCLSW`$7rZNVqU!EDb})*ntjMpzF3c6t80v{W^w9F-RmbfoABG&w8~ z>=X`D|JL#x(F4&<&T+f#3>z^4LCC`?bx^=lhQOv{7914>1a>3`@cl_bq0ifR056Nz z7izCYgrM-hOa=1)hfIaYOagRW1j*+!WR^B!WGT|+N`n)oQORpj&XbOLZcjtsPPyK~ zB`R&cOnQo}Ep~#;t|X|d8wk?qf}YRG{4n0`!Pgy_eVtinn`=X6vV8`x^LYG75Qx-- z-Sf0U1p>vAUy+{t`%BWC@>s6#egE^SKgbcOGN4oVqaMunbRPoTtlhHylfdAjeKs&m z-yjBG9HsL1M&27)tI>TpAp#4AHjqD!_cvra9h((uaw+#a5$EW=iCXe>Q=fqmu1W6F zcJHoGRJxq*?XMhC`PCo!78I`~Fb8zpFt^L@g>i+~->cgb(I@GKkOr)> z?Edj>7%dya|BE}7Ndv}`-J=19me1HXa1(ec?1ef~cMvS0R){c==-UZM-0#!(0j1#& z67jxZ*b?k>mkHDNZJXa5UV*MK200SD^zQAYst1_w#;^6%`?sjQPcUh{H=CAD&=>vp zZ)fVr5w#iF3^1(ZP@?K%5DT-dJH6zC}ymX?O2nA|PTfg%u> zZ2=K>C_R8-1_pPYqhZC%$J!UkHt+20fUe5hH-TM0C_a~QQ`p7D=jO}v$+fu(R4o(( z{vSZ*l|ku*-tB%Dn0CLDYR_-PaT0RH9Me%J+gnAdmFUiU z{#6%g_>>|~o=<{;!1{U4WA`r(=YgBvhoD!Lq~w1f{G67SRu`Z^2X3mR_`c1nS7%RF&Cunw zF;i(N?{+k=iDwZX*|E$%W2D>5kIb@){Mf8lLk&ngDnq5Eq>i}S>k|ZV9${hzgyz1m z+Dt~z{aCYhGtI-b6=>;8moZ{6m4t5va4}rAIlbTC>BdO!;nGd8lO{i~k#WbPxRFO@ zzQrh>n%Ocqe`%y?1T5hNyuK^xhbO?=B1%mw;@w;5(ai(Qi=B$)JLCM8$yV?sO*+xQ zG7xm`SD~y2Gm-;{rj~L|$dmN$t)ItZ03jk5Q=*-~tH`Nd%_xFairpCq&sd&j={{(*zXm1-3 znafLv4t)`Ei%>G8_sL$efFH!M-`*Hm#}O?N#jGnY3YeFQf6r~|jB&FJHwQ~zqPl#?0Pm74Z0^-f(>83?mmQ#S_U|Gvi30J&3;bOhqC{%|9|Gk2M&sWr zF6Q$;0HbbcVeYklU9Tui{{o_qUk5a0eMJY}u|0V7HxDt*{E~`hKhA}A1CN(QT=0;J zNaq+Rg&xwE?_ZDW;Jx4DIK->&-_+w#vmPWv5aFq6gd*ti*7OQ&n zS=fj)bf?$Hpp=@wbvGW9UD4Qn6A$fhG+T_P8nv5I#$bJ;e=S5nV2TcW0V!LEj#n39 zCxYa}r&=`JXz(X}^i7LRyjSE{aY~_(d-1TxA-f5I{lvg6av1bP#c|q>zIO#B;!YM( z+`JFfziW9F9Zek`cgO3N2>k)r-A>92k`FI_{0>^JDqQbbFa4Mx(t7#7UCQ*^uRw?o zSf(Z`y#VCV{Eh8~Iv(k0PZKwneH^GeEZj3e@Uf7mXE&^k+}cm7SwfQ*)>lvM?bf{b zl?{)wIhsD|TkH;h-RqZBIl{K&u-u?uc*4?pxc^g}H+Rjb9~zQ)sFF zgJeMG#6gY6(q8y7ZhJsNsC8hE^bJ-w%=2c+t@SNi(5-98P>Bm{=Ih0QLU|o1bboITh{u(? zI>hjkTmrL`{+x#=5~wTmTAW{;fePCQDP%_y?Fv)sMnnsbh%{{MxOuaF`EuX$ec&=# zAV~|Oc%rijs6VfCs?K&87MI6w)t4QVCe1~+`84v<#sljGU;@uyFpe-W{;P7^9-#y9 z;!b474Y{#gld3Mz&g4iPe|}`i0<75mZpSH_8n}@DJ5_Mu1AauPfJLiC&t5)&9197w z-?=_OK3Si?(h6rWQi%=7DO6$V1|q1WjEv~y8$ZZqL2eZg%a@)+5(2Y{Uam?<5nqJr z3P!S0xG7W=bJ_^>C~~M?(ik)oBWyWKS7QTDhUOxc&L?2U^~Par+5J0vfTXMa=8Hz| z!rXuBCN`xc%40rD7>PY2uV6PFkBtD>L&SJX>lR2QH({8zG$nmN`FYeHxOul=n5MF&XC;uI^_nE-Gq^cLp6;J!?!h=5kRtQIFhhHSR7xfI_-cW z6q_vYbgSXw(rR|1sME2NVxI&}B3(jj>AGjvv<=X4|4iUz*E*SJ2iDRekP4BScp4*m z^~8^Ik;ih2d=CQYl#mZd?=)luE<_<#V2k({a5x?SHV}3emiVNkk$?Vhd|X5y*!evB zOPg6oSGTi>H@X8}r!#=DYt8|v7l!NU z^D^R9qinu06arKkVA@3z7-aHzPM1g$QaYc?j4P!G4NiG65Qpfd+(Oao8U7g*@oHiiN2q9<&NldsV{-l<8Y9whcv}n1Ys;qVFwv(%>_=tNLD}WpXlWy z`Mx}%WcuF~+()_Px=Uj-yp`FrprQ#++a#Ax>Br&UT4k?oSkl1AP|u_UZvCwsY9;c- zzqebR!dG3CIVO=*_hKL#-}g>oa*$2Ogp++%MOkI(48NM+rkh9#|GtHkCmdBbF8|&w zW%D+Flt?zno}~uqs0<$8+mldSPZtv()|S*^h%H`+)%Rd(MR5zjGNl#3EI2GTTih!s z1$LV&dTslrfB1QA%l-2{aqX^9YCBu4SrK13jjB2Z|_A7$n)NIafz)#oOfdd z9%X>{i0lUQf9IX|GH?^GjTa!Xi8kQZ-&Zts^5PU&k6%;X{hN}@J*EX>IK!qRdXUc& zuqoL8M;1Q5>JE|D{dsz$Hpq~E_2Dl&W4H!(tDNkwlo!c#Xwe}KGc(4R9>&IVYX?S*6wuIFf7~c$sxYMwe!G0I{Oow5^6|?r#f}H@anZr$&uyn!rz3Aq z@7lBj1bq)~#CMn(7=Vp!C#Rlkctg$tJg`sIaW6I(bw|DQhw)l`!5xIQJXxBUs~b{o z8jfSiE7$s6?sn2bMn|x~3RWAL?TH7Y#DZOZM70&rA(U6hW4r@^zT*-Pzp6cYF9lIB z>DG5V6cAe8+&@~PC@>ZZ@*Rrw!EszEw>_h>sont*`qhO%(;*fLQvAysHJFiXP@B(& z^2PR-B3j~Tm$OHNM-#?@nY=4!E}<93<#^d@ zF%n8}u(Ba0j+HeHi+Hhmx@qefVmmb zPA9DnhdLV>QFC23B-c%&15XG30lvoc|4hQg@>O#;GLLO%EqK3l!m7n- z5nRGXqts5KDIL6-0&}{tMsAU-@IZBg2txOf8!mqU&50u-sHv>-Yw3bo#~;fmgJvX6 z-SQ-QPIa6CaRp7xvT&~EuHr9pK%xs`oSfz7wd|eorQCW6r@)(~Kw!K52rjtn9NPVF zLc<1-b=jjP$w#eYU=D`JoFl-Tp#Mjv+Ijcx!=JGEK-)* zNM%%f6jV~YbuAU)9D(MI+U_4z{*t!T?@?wBE4$GrlSHi7LzjL9VB;YkZhQ_W~n}O(?t;UZ>V(M4KBTLUQSL zaw=q+633s_nAVyER?72#5zye)fG2GkAz3gB-lXsRm$jxk1b;|vX9nT*%1BPo1l4In z_?^nk+x#w+yG!|;=p~*mnUOly%Q30xQ1I4yXq(avp#Dt2>K+y$aPEZQQ@QTKyH0lbj!djlZADY)-%dODGrKQQ$)%dN$W(dK52wxqB@TfTeLY1%1Am7F0J@$zw_ZDkHMn(^Lvk~^(Kn*%V28r@q@{7liM#N z6zzBmsXhcWAb;R?yB>u*(9;uTOeM?sd6*kq&QHTH{-OX9-<`uJvA~}@KHGBiXwTdz zCtyguNkYexX!_y1Ux8wf6DU4cqKp%t#CM(`;HQ96v`U216iVP4n24Xq>{{6qdRO*) zTU#XTLDp=$LNhH#6v?NR3P=N+;aqX$je-6-=4&0#dH9BfsTd};fc2{f^=^iw@?_N4 zVRkF<=1KkS8{0H>q$KI7!r-D#ZTS2}AX@ZqF5Uo4f3jxLAj3L)T6-kAx~jzl*OhH= z5pX?Q-sxgh*HL8z%19s`a)-$L(@rSfs2}Kip=bV8J7y{8OJnTzzf8t9sI=Gi%%F7= zJS5XzX7KwhiNIbFxrnt1v#*Xdd~e26>23Ch_TrC&^f=^H-1HKxcO@h_9H-VfydEy0 zd&g^m&_F;yoAiV(kwOBu^9Y-*roJ8t6klE+_ei$4tXj9U`fL*;tqwXro)5qC3<$lF zEw8>%9WZk$UK|+Wo{}*$;NFfoG}nH^KJn|{n}28f@Ld`ELvGW`8$!H4*K=T*U=o)?sf095mo`iXo zq)XQ1Mj^KguDM^5CJXX31dt3+)?iIDT!k#_2f~I_fa>Bzf@}DT<<=&cE z8X_`I!>?K>%bl15(_2X;C}H@7+Dsc-viRR0zdPjk?)~vA3FUL;ZAA7{*yq{)mTQfE zTRO+l`<~lR(VlS~xBbRB!9NvtvmMBP!|kK-*q#bkekakKQOS;+m6Rm;QS=OaiYqG? z6q`+^=9HWW9Lj0EV-P7h#V&#(67G>x`~b@5Sung=;uvR*D3$fNtftpW>7zncIWINU z>k-p)91()LB805qxq)F3=I)n5*Ogd=a|3_}kk+!#VX0nSjqljpoMHXel2bds+B8fr zf}XSNM(GTwtMR4wz$2&65#?o+5@pyZG`(@uUPz$AHn#p7VLN!C!Ydu=`;fu<$q-i(P=B1$3%{QLiT8B%U%|B!1th9 zn(Vgp*gXC!b3_{=X#>`cn=E)rwT5>!M1#@~@pnk#`rf^b=)>y%)v|V;x)9_0qc?(v z{yWVCg><4eOgOz&y*ph{-EjIhmAkjQ&4sO$w%u2c(M&srt9v{37A07fR}$WZNsDKu z2Z63CMInP)XrU@nR1vakc?P5;j4g{>IKgW?OnkV5>~7cDjcYf4uKw#%xqh&RDk}L) zY&?uGQZf;OFg!~%aa$H>R;4kn@{iiM8gC<(ReEoPdA~>>jgFH1H{GAE_;&(?s5mel~P|12gT=hK_^Lse1Z@8W{ zT!_y-PAd^;T7KyMzcb>R7Mg+UCAx?BW`Z$J289G#u-H=Lye%r51Wkis8{2+>0CL;I zFlw{ZI;}_ey+e{yjAzv0udN7+axw`DM$=@1IE_)Cvm@;GMRrpfytIL}y92cvXE2OI(l;?EXm@qPTSpOxwnwVVVyiPzN3b%)#a&UKO43EZ@?lqea)*D-FIc$pX z;trM%$yq?rg;q|!PanwQ`9M%Z&KZIjIxmZ6TE3=~(rVj;)~A)@6J)MH@#&JMa_!gmU^i+Znk`5dZt#>PFq{Gu;3pCZg0XbLR1%)K`E z6PAojyY^Z9!unHd@MIHq(WjEhUZwS`rum{AYb_=)Wo2-vq)fok5X{VH7{R?XfVlEC z#q)S^$GNBQ%~>30WISuh+;gwQunqr_HD0EjO#aUZ<@$DsAIHm-B#U zx|9&^0zD|VJ`lc?>$`~xiiy!+5zo3~k3RpV92H=C;SLe3x}R&(DLx0sj8};-9WA12V=aD+C#^aM-7$?0_B2w1~*-fHZ{GxeI*ZA zWr4Vn2{#j?wNqjLvGr*(?-N)>g(D1+mYjU2;o~Mh2m0edIQO7s3{}5;vp5(s+k`_v zjjpw&oh}{tIBQug>3VSueR3kq#ba#=ZRM2|K$m95k~ImS()yx>M~DYW8_=_dUGrg~ zzX~C)MWhR@7#CflhfhREGYD|hv35xC6e})7`pAkE{>knFbrg;JONk;=;c&`5Uy#b! z_`-Hc*m;A;w!6?-AgarX#K)~o_=V=AesD??@vZmWg1x+YV=8QLX%^F@1@29Eo(%r+ z@*ll4-3v*WB$_gMbvEe!{=RDX-a+=`$HEmuyb6)KR0JSOXJlmb7~Y}d6~!Dv$1q^f;|hb#$wxF)OJ)J9xX;DFGWq=83XoM)G3_Cv4+HJXqEE{yEBx1 zV*m%G-F?yZx%agNw}G zhY~*A7pDuEriah3>p^`~oUtBTk!XmcCX4N5K6jx_3(hv`iUXq3-88~1MIEw{K_9nYVryK3_Ka9#a7Jvw)2uv;0%6tG1NFVe=GmI5Mv z+E}dAlITUMfK&6e?B@|P90Rx1ixlMiYr3JSp|}AJF$t8tskX0p6S09>jVm=d8!{2p zc5I&T*zDAT3JT#OGVa)({$=yYuCx44Eu7nA z+1enx5W;5llSeZ}h1`Gw3lt_m2nHSX<(#(uZDj<{pvE-OQ`&h}z}IfBxQcLT;U~?f zD%+oLl6_9Y6<2USd;UP>Igjwf2R40Ha#thRM)e@%fzg|<881h)4;8*`8;!?la1OMc zhOg<1HTsB1Mfh}^IyO;(=EtZ(fB~k<@Fqo^NglJ***Cjvq?RZ6Hngbd?YwQ^eG4CS zZijQS|!6nZ+`JUh^fEwlUY>lT8<1(S)&Mf z48cF3M$sW}AAXdgbt**#xg7`t#s@Jag=|20+ZYZ)xqBg9z!#CqXo230@CFnaMwi7s zDA!zw)Y&G<^%i~mE3*U>d=<(j+R9LDS0a6&vGtDOrxha}8nTd=qeMyO@5#bbg}$4vpU!Xm>05*#Hkq%zj2^5I^nH`=+dzz_hJMg;)hmuPHzcf4lrTm}=aOM` zQ=zbzkK);>LpdVo#K%E3w_UnDyiH|z<73rspD!{Z&xiheN)Xyf+XmIYrJHtDsjnaO zcmo-gVK`X}sQL|9^z?ECwZ_3I!Y`1|5p~{BkOc78OiOcIfYrR~hPOSFB&Mh5);rSu z(Xi2F(*lJG8C1KANw?Y{n)#CrY^>PW7?wolu6@=5slGa?U)>g~DbCMoaku6GXnZ4E z)MjydfP1ulIAYqh@qEWK7IT7Wb#-@di}~qlx?jqtDr(dkp}w{j5NtkBC4VXwSrh#9 z_|G5eEz-HdnnT5*hD#(E%rP>J%yCXAO2I2XV5VcYtPcx+6UJxoqan7xJ!zFa?s?*RmV|A(sff;=mkVNSqH z6uTf}I#|*czIt^s3Ii+^RZL8BTynbr<%4y4Erpca6DHHF3l|9L*twZHVl_PXJ~RbWZ^(%vKYJ^XmTsd1mSBVB7@%UEOaD03*k4W1S2GZjSqBD}Nki^ae5UJXJ9RJiu(BZ;_vFZmp-CA$1aon@q2*A=zFq0u zPSb;g+cV?=L}>su$=CY5emdoDt9ozicfZUmP}}bo2$rqjmg|j+NS&vUwR&-elSs!v z)3bYjIYVKZR1d!w7=)d*Y-E_veQD>uMU9G!{2K7>8lhWkcI+df4FO7ioZnoVDbpIK znA2gT?;^r(u9at1!G2wx0O0vv(A1Q1tO7Wh#Whd<<|4J43&bqua#OuOF?cE(a`(9! zzed#g)Q4DNbOgH+0LUBk{)5(H+phBP*(;d!LN<=zs+)U}qUoQR@0E(^)N5uowJWF+ zx%Yaz7o}jY2YBPLlT@31MLRu}S=kdN28Pc!OG(Mjy!t>VpBpPUK$$5lD~o5%@d!!> z#)`3oO&;G+jHmGDQ6j^DLbJTMn}5r?nmr)K7IU)flYC|&c5@&cy}HjR&PSH=%BR(E zTUjPYqmFHIc{)~EH&sK&Fp`yZ3XhN~bSMI&hQ$Dn4DXoWPQ>&+*xu*LpMa7GsS+G! z11CLt+lWfwgl>>wprLOZHL=d~hGiQss@F!7%}6S!0lB8F7U!Dtdcu7_(FIEKA?1S< zu9(3$jL04f;C*P=IMP<`jKH}x=P736gJO};)4y+7P%^3fbC3M~p*EuwJflf~X~go~ zU*i$#mwh|se0?Ktyi>k_qYJztG!qy!PKnYh`7SJ{v)h8T0<`?*3=hj;-=h9JUZys^ z+jjlz)5b#KaIBPqwix}4XYDb0)9~=%Nx<7MVVIBUkILR@!k@`MGK{~`53|JnYsNae z(uDJ#vB(?%XNun(msm@98#s#RYMObD{(;Z_IG6Z)!C?6peLC>a`DeZL*x#fSX0nr_ z)>g{Z)z!W})0$<*xOPQm8Uvi-&l|_baZo6f>S85Ho(q^p+D@ua))$(P;#8FYfdrmf zch$4w`Q8*b@Db@ij{Ue8C$AG+;^&ioLRlQtvj=Hpshxtm{qeQ7;rqDq-JA~zd9JB9 zPCP?`{n+Yj1CKttG@z}6wGqs8PWS8U2E7!Bx<}yr--%BQ2>jPGYS}NAQ~i=O!YG*5 z!e;B7_tF&jEgrXv+v#!BS!Q!;Pn_1xaV6R?XkhZpB&J)jj6P~UBz&WAF;((+cauek5U@<&wEGmTh{a*?zqpa z4Qe^l_yHz${A{!L_2@`_QG0J8(kX9l?)|qrVK{p(s(|Q(C0EcWaz#H|i<)=&ny+cC zH6_63`}FA(3k%D0-VBA(`T4o|9_a4hkZ%j%TiA7?yQ6jlyO0bEyK?Kj|2On7y_BSz zL?rQe7HYh+w&l&-xdb0~fKySeh;NH*BJ3_o@bXs5zhz=#!tr^yDXedWQnOU?>uqOR zu4LX+G2nqaLW+oazMkX`fY3)Ut&05M%!ZGy(GfU2S@fn<%o=i`i;v=&1YM^xwrPV_J|RIR0VuODo6v~ zmK0Mf7*~Q?;*am8$$y6O7pWJM^Q&mUnZOEb%_94oW%e^7 zC)tTp_@9CGgAb}srlzJ4^^mjk^M6n(w`2*D<%_i{D@>OkkKO=iRF5t&zlQI8tUeqU zq18BtQvKvRwPgO#{AuUZiheEY$af%-K&0ziP|PDfeatb*okg%b?wz9fAlFxko${|_ z`QWg$M7=j2LzO_w!piR6JKan0v7$r_K~!n+wZO%1=`q>2IR!ha;wZc)&1i0{ZOuC+ zXr*f8e+wKAN}b2Fz)gxu<)L8#T@MN0K9EUg*SA-M=wIDh6jo}-10Rj{g6`{R{&8)Z4`z=UPlP_%x|Rd}(1DV#XuIpUN7ma*5yp;}V~gEXcRRIKHX3i%CwkX- zm^@x(7-XI;-I?Oy5w0haIQJhesU8WQpG3v}JdE%9h^RnOnNp0K7w?6VV!if5H4!Ic7o)c|48 zLCB0)#jDAsoQuHCC}w*$ICG9y*RP9blxHmib^hIh$N|D`3cV-K`r)DP!u%RltHXI0 zHp3mc&E0O;cE))%@5fuASTb=Oh~O)xD+3KMPY7a2Hl1kQ5DD4~v2DAnY_4R}RWk-+ z?Fcob)U( z*H-&)zP1R3`kI&yW5uY+7|K()`E2>^EtMHZ$j&WeR1P#ybp7Kis<7B#<7jqyAqWqM z-(JJN3na>tbo_+FrTY>A#FjDS(ng2rY0{3uCuP0)fa^K`6LsZmA?rxL`2;O3HnvTE z6yWVK00}XAZGLaN9rPM6?MKR;7OKME2nucmqf$BVi%x8GLo5e5=hk!Ki^v^rro46q z`}yAyrN005+21Wu1A)>?RE+*IzMj1jn7d9dnl)eYY=7o-$LGW;4Oh0bM5|=Z`v1`Z zxE`4%Dk@lpu>SaL8GC!8?%GT~@8=52t%rBa=R&N?i6$=X%}#3BCB=`|N7en;3CJ&J zT2WU;!E6V^wCCTz1p+x37ULLZu5aI9#~FmCP3Rfj?7IsbTBrufcN!}mQXa)Y`=C@g z!tZz2KHiaottV*dCcHwDs*KUIO(5VkFbJ%t(NL*c(i+Cd%|WT-5TuHnh>A-k>UFl> z8QPzWgkXyN-^b4f5w<%+|L=>0;Qzhp|Ko*(VKgA|_(%Qe`zAjsq?n^4`@c&!?8f4_ zIiQQ@e;<_C9vNu^WPgS@x8IPU`yTwVR@v6P1Mp%jG8L;gq*LUPpPg%A3kwSj92~KX z#=C0|p^w;rodVi{nd0wud@3rnuI_Ghb&xl3HQg^L@4vB5Eu0Rgl+xhi19U6E>!3ON z&yS*_uK+C?1lG_%12Vc5fjdxMO^usI;!hw`mEa}WA%U?`dJ120Gn`7x6E4$#l< z3Ejw;Cu0u5mIT|}VRBm90IXbt<$h%riL+g>t8miBD5X%Y0D&>MKtAE*=3YMP6=-^P zwyBPCEA#Vn1yxX^Sb$Yke=0}Dm)h9cIv=z(OSa~JV-VT8Q&LxFHu^lO+AJ}d$0ZZm zgs0zI2Pyb-Y3x_wIh}NQ>p}bdiztxQX&QrXCf*gHssC(v=2Lj%E z>{o8X;FcYs@)AMifubmgMhS+hs*Iq#!on|%%vWvAU@^a46L|#spkPvzX(WYKKyS+A z-Ixyo<@xfYcU+}QB?~vZAnmuO;}0jC|kGJPkb1SMa27;(T{>xJ&+4$o3T7aiDFE2j8BcL6p#CCU$x(0hA z*xA{Uff(4?W3a1les;s29$Wy2$^veJeLRF^c(3+{J2CYT(yRHqm3Jzt6gVKET7R+h zhFje>!rhH`6Zbb4zfAK__5qV5G<*wuQ@B?HrS8lQ4<1s99a|CsK9bdM#I^v~!0%t+ z4c#;}f(*&1*neBH+ynZ9Ap8OmmWv+lTJJNlQt>}x$M$qWj$XQl`A|? zO#oGyuZLyLI3Pe&%eoQ<AAl)L;Ij$DMQukgKr`I&xr=ox5Wax#hP=JI|m)pbZ?SVTv(We8ZHu~L- z*UpD)m9&=5+c!@WhuEY7qG)u~+(f%G1#C9R@u%LY#ql4`uM;3k3Ti-g6RQ9<#T-x0 zU1CsaHsm&)C3N5s@^^Z=V`yKa-c^(*=jbUIH1{Bn&dOOtYdrU@6a%WS{DW2L02Oq0 zec7LQE5s3*U^)ElOGoe-qNAcZGbhj3-c)gOl$xJ2kbJNZk~xqzSx`~`TYTb>1QR1M zD=iXe7)Mfg@Bg)0_TvDY;kj+!Kuew^@v@tQ80vsqgrG@Zl9w-^8CgJT1HLN(DKW7e zz=)h!TpSv6_;LD~7taJtJ_Zy~h+IK%YAOj}vyO*{7nG8cLS=4#LPrS*xBxjJ5P~%- zpBqKc_|w^&yB%E1f-gi{ki-c*GzP$kAf-e3RnQrYx(rrkWc0Fhq-qATtg9GP5ysh6 ze*!)V7HKfv<>_PnFy`UJoSYO58WobXCGkg2*U~*}IEi{<(1gsb?*RhHYA4nCi4snA z^~2)%aKn5)2o!D*nQ|X8EahZ)kZay$W3%-k5e+#q3R|YL*9YxqPF`)`K{2h6t^s;E zndOQJJV)ZP~3|mI9<8W zkJP!>xsA6^Bd4h~?07z2v3#(~h4g46s^d;oFf#^RH8p8>f9d#hbjdYi*At0vvlEsA zWJM-rW-f7C(IqKxd};5*LlL-9`3o;n%f8{Zm6e{W+PYe91MYGO1jEU=<1XWP>K+Y(y} z=lwY`mhwZe`-UP4I(gDv^&hIoA>zQ|ZO{qs^YoaSqpao?AA z#W}9-I#2kP9Tiwe;xCir~FpTiQ`$l3s@j9@1>X`7u=%MM?X=<7v ztzVLoCX{GsY{MCvy0ciVt3ld~$u`=b@C6yBORrDw3QP&%AnG3svU#<-akm@zUOQKw zj^%+)M**p#PlqI-RWLE&ZaZ$})I{@ooNhAdzCdXv`bA(P8LlYI6I#8_EeIUI@Kk$5 zjdcZmYIxs)HjjIah|}|`<9YI;rXD}g)z%(N34K@kF>2Wq4&|AZfWOjWjz86e0DrBY zpTX|yA^I0Tbbl|rE(-e##sWz0r>PF+0YFD|H{MP#9$nf&-~Q6R3fl|t-0|Qs!Zix? z-7FT3lIaS#@_7pKMjqXRr5{QHZ3&=y>0=?x&CKu`Sq%91XFXoe)$x3LwEFNNEm1-_ z@5bNHPo+)!L8Cmsaa8~kWZB)Kx$*&Q97FX_+wyEQ0W}UCjm)pYN|2bdfq06!aAW?L zip;$`4KEkyg%#((fNj?@dYRofwLmyWduiZ@uyqfA#*U%tt#XLmv!6L-q#($6}3xnTySQay>kCuWU;T_r?S`&O@_SA0aD_Olth zZQf*1*n$vMvR(KM$ZZpIa^e$A0)v*HZuOoT@zcHX0Q4PCajmP*lRss(r4V1lNIyjuy$~{apeMVZIJo>>49X?~TeX^d6#U zc|HPDACM?-|83eD0}BX9%dcwL>2&~AJw4vbCIG(SRCD{VAf$~ac1})NKR?mm-B`(p z2q1BdS~?7{%O^7Bt3N-#3cHB9ZcLMD0YgWrK^&Vd`z)f3ChHkCpkKKC5nQlpd12ygJr`u5FU4cT^7kxfnHO{~vJ zLtG4f82Uy6@Otv(q2;F=z!3xxFE2XFr#I_*9@r6(My~4eKc@1VU7{{irFPEZ@OL$3mq{MOeQ_?jP;p#v#mCT~&dM;&#M?I=TShs`S6j#6~ zE-)MXmTRBe9by_84ymO9{Nh8Mt@%N%4-Yd04u&E*Sxw77ugj&FgFBQXvpyopVPOiy zLlOP+?QJ_<<=ao@?r)YS%N0Lc@c4xyPR#y625l4ZcP?oMMb{C(DLz~_fXAcU<`Ehg z3BD!;+IB{b&6O9wfA~_=desX-d?ouTD!7P18;n|X;#%u7O*GyxX^J=oreL(N$sj`6jJ%s~Pf+l$%H3VEdf zX4*7p`re=d+|;=G#(>L+o59S#Gm6nj$UUOvepC7OV2?T-)01pU;0C6tWsUwb?wYvV z)!p@Dk_O=UuHWjzzm#uiu+a$ksrx|}tR2$}K04%3rhaJfiO=H95l|MU6!pTZwjQsG zy49x%UMF~7U3D!jHA7Sk-CS#4HLOZpz7}9!{I)!K=$0SJx&IX;e%=Ll-d-Z%b%NH; z-}a8<#gP6n7QmgP|42@OoR3ye-b!6Hzji*El6&5N=Z8g+5d?30acG3|j&|;U0aPU$X>+(W!=*)cHg@;hGhj9Eq zwN6xWKm<}s67WI(kz*kfalavD{#MO;r+Z2|vMBd~dG+ze)$6S7;cPfn{fpiEmXEr* zrfq&-M7`ElZcpK@ktC)8FUwo5uz*u6|2BO1fs+tEtsT2x0s5BmK0hu>Rwqs3J0bIT zV@=3ziD*v(Anfn)A`%>;E)K&}#b7MUPC-%Urk-YZOT4>wJQ;;Qv1=B)@!*9Fn4w27 zC%l+gxx4?W^>}gl4*0U>BgI4@*2q_qXInRh=aYxHi9ol_Gs$75YKuW54GDC(o&FV( zx0CTZNwkMVI0|_vW~X?~2btaXSKz^D^G5Y&@yAE8d_ojyo=*%{P2~Mz0Y!CRh-;~) zig0ArOgQ7IxVu!W*y#!gHTYvCjosgB87$#1{0+I}%|D9(b@%nH!_^!a<3^9Y99E6h z=GyPk3le$Qh^X+Suql;>GA1X>!cEqKK50iFhL7UK^x8On**ZX%UU>%}+j}X+K`iaS z(;*>*)~{w1qQMfBT2I=oEwzD;FPz`MdpU#VuKncO%tA<5h$9)GhFx`t&J;_HQQL%M zIvB`E!lhF!GogDuPF{%)(pZv(*;2!sE6cR1HsvOcb$yyom8t;IlU)-DuJbpz@Xznt zvT2X{m~h%r4=emU#f>SEG>>#Hpx{t<@s z*Cmo=g%X{PYU8<2q^Sh$YKT$PR8QEbnZnqnsP7h!O0-??$ zpl8GMxzrnapOLF)V6Z5iKvjD^4ZYr8##R3cU36s#*i^EAI-=a3L(|Z;ve%pC%7nya zdTu!-h@ph4VYZeLj*H)5t={>OIA#Q5_t4Qsb0x1!so|XHwGz{B`W*?t#&bp00$|%N z7dwUtNtjk_Z)(W%7^xag7J)GL5>-p99I-ocqA*c9Ux${738g@;a5FTaz2iJ~C9zi( zY-LQbn{d;)I-W!0E8*M4gp#2@5%Ozp83hmNgQQlE%z(zyM2MyJ1x?bu^wcBT zOmZ+j8VxbJ%eoB{c?OXJB{>Q%F8*hXAs470f~X9lQLgw4>cJ3&pz1x$L~RWm;AAaGM1HO}@+7VSic815>urq6Qc7eC9@eWC#4a(yE?_6Z?See9f;fvwfIP)ppUO{jlN?$2li7Y^aCg)8Pc+w^aW8sv3L(ID zd9A)l8Ki~~dKxNc@gc2pOPQQ3cuWoZGnY=mz82r3K?c6ZZRFH-x!`GTBQu&YLj{Dn zM?1s{)A94aSF{Jm-yb&hADq=kox_WgMEWPPY|__6TsB#hVGXWp`-9q{0^&s`!!^fycm-1%IcmvZ_3HcUF|G_Fe751Wo(MF>$Odp>c1q8Ioc3H0Nc7U3ZADokOZV|)%Z@Iy|B%$KZDQT^qrtT%Y9yErjFN)fY!JAv^8+RjD2*DFbU_bblh_6CP`>LnNcB70Y3oVGRNQ(4d= zOKt7uR3_01<@(~|(-N+q?u8ySp%|6eguU}50RI2>XwgE==NPti_UoRSbJoOO26{nu z!YUe8$7cWke%A|%+_VAsxa;9SiIpHCsBIZaA0~xjAQnu=PKZJ$bx#_YC6v(_vEK63 zohP1*EBlEx!0`=1&nym-6yg)F$Iz>u{$2zuBwYN^hREjgtrH}nyYh#DR`qKtraB$? zUxZiFgvdToojeu)hqtfbs_G5DJTxec0wUca-IAA(mQd+dNeL-wF5TVTNC`-H2}rku zbV-+VGcUjY%zT1b<5F3`;d1VId++`1U4LgpIPt-$fQZmv(ZANIY5tT=CeQP#4e!0{ zb#`SXfm}UeJLb5_?X2?(dsD#c%y-mY7gGw{0m!dF`K<$1Ai3}(@n(cqM4u7FGx=~Y zWQ5r*oY+SSB~EX)D7!0hpFdlvxk|_}MdEV6%mx?Y;K|89ANjWJtK0@*`m7nYk32@{ zY1BZ#DIf7WEknBY?p`vw9d@d5!@l`z9!g3c{M#_gQvi7$a>C2!uOg^Q0Jbs zy$7!&Dn@(rYlMvNZ;Dl^h@ble(tifO)u+R@FCWItx>8bjC3dMm-g9Gw1jlvZ$+7t2o40^=A}WQi}j841g1158N zc|;W@a|qO4%iG0eU*$3uJ+22oOizrDj~9u=%OtX7*&L4xg2iprq`{p^RJ3(Uxhin> z5)qcxgaNNV#df>9?5;C+g0MgFt~68`Fdw=wzZT^DnssfEiCLc?i^Ajh zQrPWh!qQ7ryvaM@)eiSs z)JO%Ku@UZCl$lg<(LE{Qi>0G%K7SwQXO(KAEKx^GD|vcyK6SL9Tfs2D~q?sd;G6^ zg5Ea0HmqgvMvqr0r>W0yYaFSCI0=I%u_e3Evf0ZP3J5x2v!(56uR-9;Grai4uVMY$ zi=*L&PEB@1BpzFxJ5x8F-GWw~^}DvT{w_bc-l9Up7`e+P4Omz^?eCxUQqXn9n!>C9KK9>H&CN19eif(>zs>6p z%*Y!|*m8`MGn(MqWW99vGbE#e+t}Es9TYdJ`PpqW6;7BFaIS~Pjm~k`bAI3YSQ5Ij zvhqE;ZJ~!EPVDbH>-3lFl*vv|NYVR13I@-7M<}bhOQxaLMg%zYaFJbegZFQfgvLzXnRNPugoZ()`ZuhC+_4LytGFE`5WRAt@~BXe073(5ho$cGA)(d|}u;o{)o0Ts(N%#@{Jv;(oUp~L1 zRQNM=5s2-r3gPUVZS1h^9>yD+Qc`3va|t*(hp1>yhUU+BbQbG9R)J>{ytOWr-_c($ zv~x1Qb8y<(*1d3ByLIB-cz2`zMOabIp{=+Ac`AY;d?uMBev3eYIQ^8M30^(ZLBd@ivPwv0A~MXa?lRSMf7 z0jI7c)&5u+-#k9Fp1(Ye!K8mFoHn5R;tO)Kb%%I=%6^AQX*b4mwPlgRi$$=@@~Keu zS{dV9n|N=~9=pZ(N+m*uYdD+cv4ReU+*zHZ1XCP#PYrv#43*10w$lcqg%~~rw$m&^Hh;#DU5Jo>oX)8a279pZ4^|;~X~w+{aPbV>u!} zA8&mOBTrl$;t?+y%`TBZ)AU5H+*m|}E><^9kAIamUf=u*_B+i-X4 z4~`1dce>h5z-#A^AEn{u0_z$eQ|3%`>hTi=(QG6?P&bwYKd>lNBn`Qp-FlaR8TZ{^ z9@5ih0xP(6@gj`(k zhfHk=H{jWY$r&!H*c-16!!TJ-w_k0OMcBMvx!ZKaSDQk6Hedx#rn|**#Rjr>+NGKKhW#<+X9nEesL>hl% zBhgS=RgCc;z4*fNtjkhfy)E-y&b#q&V8EMI%1O~r!HJcWcD-!I>9+EL<^_LsvvkMR zLMwRTd0Q^1ZI%K3pyeLH+Xs<@S1+&`&iHRF#QL_y+$(iwuz_W{F5})JV#lMf7!Y@iEntkR^ua!4V?2__eHw;o!`k zx%Hlgx@}~&%I`KqR7?_BHEm*q8~6T;{xkQ|3N4kB4b?^X%eTy@qkgu(dz*0S4?F{L z*>h*dzduFKB%?s{l8NZzTSSH~HbY8&J#x!Jz{)W)RW-|EK$M)Q{#hx3qY_9Fe2ap9 z#1&n2J=Hp_@fhj&bolHlLDUu*8Pg}TBmb)Tj%P3x9f?Y&ub1rb>U^DIV>!XDee25P zB?5BjY%>Id8qS0J*M0S`eIQ%mu#+k*6LiW1};n|ivITeR46BCg|nFR$Io)`m$d$HrwpNpb`B8*lK{N@-Dp8%ziu4_?R3jGH8; zd3#P4s;83uyhs)|Oy{-USyWOIHosZNhhLyp%wfGCl;4x_3gaREDudH?yqxXGWXrJ* zI0rLpR&@FzH>5$lo7AI|lfl3xQz4a`3^BXiB*V%(qqa_(!2(Nr!6gxDt5C(ss?iJA z$KDllbw&F{A9#4YrPg#YBN&=D)LPMk^f=-6X}2RhaMA8LfK4>4v3LBOZZSA{CU8EK zqj}s)gclf4{q%NQTBY#(2#*E5q){-N=&szq$J>pHGEKwoeo;mBD+Y?m`Kp^{e%C95 zYf-p2^5vt^-{1IHPYewH5x;aKGLobxI~7Wc)(W8teH`v(cGU+Fo+vDC;K!| zsTnoH>JI|It?*vij_7hfgZ!1@>}G{^dz0FSQw;jj_ArLuX}>-W`p3Pb;wAoa9iA5I zOt!Q`p?{BBboWQRO-PuQc{xiDwtdUhdZ37y_?Z`N_@(@{&GQvH1?^pC5KmppOVf<5URIaYBuRq6sdgPrS`0120E5MaZ^ZtZ!0C+7%|=# zz6UrZ|JU8bUSUUqww5Jkgk0p{9aTUGb1|3zZHWm`G|lT3 zu94x10T7Pe+8H%}7~mrjI`0^#t^JOLVAx@En~Ku&>I5&EVbMQ?p|$*lo2~h^3#a|b z1Z9Jw6BdwR&@+<7?|Q@+O3Z_O)Q9NgtB;c9 zNhw5MC_PjC^itB=U_|p8?bB#bk1(8Ym0mw=MLyvR>oGEYxNK)Rm$Pzpah6Ig^{b)H zupg?!Km(v$;Frkn7}m9+TD=j-?Z%7*DVQMrxyUeqpfoKcwlqLXr8vA|059W@D)5^rGe|<*YyuP z))?pM9!b`l>tX^-2e$KmJd3s%h^$o6Qxh>*5S6D@D4Y7&7yDv&t`(R^{;)gHd2{!@ zm*~-dX8k%kq}TILkLrCxkn zzjVB*ZR4XQY~BA8P8new(oi+=7th%eMW_>#HT9M06vEkctCM%^6bX)@)fDmcP@URB z=od{&Xz5o9Q3o400`4^@i&3{MZ0CpO!feG32+7=Ny#9_EQ52_L`nhKpvliC z*eo}jSVa4B4ENu;qAj$0<~{=y-!xHcv^p$=W-ZJG0WJ9^DJBGD;$`RMp#cB+f}$cs zI)yWrq|`ViK83G&Zu{hJAmsw6kzg5Swz3I=7?~yMO`t7p=N+cJQgEa(4Bozt*6ztr zMU)YyerEEV5|^D=)R6Pra1$!^J--z72yU3zPmOIi9#o9gogI0P%iS{mFH+$sF+hz` zMH+E`jFj?36zG_GU+e*?9{YRClEZj84$EawBZO5gxXSY8^wV`W+sD7c@Q(6%iuOfq zC~aXR=UDakIzhPx^1)ITrf`+VPwMVrf^T}yW~h*07KuuZoASl9p#83D9#NkJ8QzcW za6i$|>vk5M>o&Fy;rVhrx!@FJS}kx9z;K$p!1tVjp2boCf_X;Rv^y2cg)~weT-(P* z=(T15BDFK=#yCfKrfPF!^WSc(Xn8&B;eR7d^`1F;3}`W+aX*SD>r)4gNSaG7>tOn= z(|G3v@-FFteLSsn=MTFD($lY+H1;*o`GC);Ae^6VsS8FP`}n6K*b4_ramdQDFzN4z zliqnHFOG4vT94#}yo_EvtKC!>wL8>XY1ENv8z*WK7!h*K07 z3ZU7Y$I%6IW=gcMdJssB`&|Dz|> zxx+nt-S+=fTZ%)jj_)n3x+WJJhfe`}3(R3i>Uw`R8r{p-~KFN@=v2nC)3_TU7^rCYIp_;UuocJ;HZ)^q4dItt* zKa>+28X7WhkOW~b9{0D7@yz*od4KF_G3kD{-rorV zg(VOY&byFjmPlelAe7>n>q3?T5>&pSOD=@Ug^?;^NmBPop8oM`cvP8Jymi=aZa4`V zw7YmU!$h4hC9#yUG;*+z$xOwm$tb@1=R`yEHt5D%yysI^WN+vOdrC}wY}JnI8XKFP zsH_|*c6}51C5qqv+c0Qp_B}avM;7iEAclrA8yaTT*qRsgWfT-XiTa?#-k5PGlmGoI z^9;#TD#uWE2^Q4~-rtuVQXF!)-0t)p*7oOOm&lTlL&o1zYKGls)^mzg1wwY0NMhm8 zM^o4_ zgn|pmfa|=>n>R+H;N$o1BGIM)EuYoWt8ux9C|Ov-wuURJ5|(BpNSqJrR!9bod5niN zKiFEXr_$ka7tgZ_wq{12`X=SH)byn-eADA_pW&W7mL83C#NgUs_G-2}Gc9lg*P8Y; zezIkA_|317!E4!OF-&KFa(!YpuFyk?rSz_h+5K0S0sWg~-?_Ot4+bw(A7Jc<(6@d- zLC>RoKo>T9FW1!E9Ou%!K(}?U(43Mg>>AH+!tl%{Z7@xK2WW3To$t^4M3V}xAt=bm zz|75=AcO7Sg}*3_&6z;8^i|l6EG>S_XZ)Z~ZL*Z7cPj3n$B1pv3y70;{QMaS=@2(6+qqIp_}JVPoRcWhxehZ5$=d>d`+ovcx4J@0!WjHZG-c@79!*l#B$X>E)l; z=p1O}?|{AfoE+j)Q6X_Dp+lCVSlwd^0VMbvxym?E@9`nw+9A zpK&6C%9Dqm%va;voZ*PdVcVZB@9;g@n=a2;jH6Ju`I^F>H>wCl8yLtQ)8 zv~<`e{jXWe0u%`QqIu*(ZEN>_HD|bCL(|-5MP2rrx9101et7chm7Njtwni1oq{3gn zFRnw$0j`71F6(wr%!n6+NcYFurT3+7(i_WD5)m$Lr86sYkb>{I3rwqv|DGP+`v zL_?aIgq)n5U?plaTwDZGI(AqOPf}gq15ZGgbCREN_1AOjPtX#`EcpaP>m%mXU-MOT zbVBDsm2jO0m8(9JWyIsL(>z-EptL)DftF9g1<@#>OApL0w|gOCeP3Sll(M*)Z@xy71#cr*y?dbtJ%- z-f!%X_!TGLtP`91c38LPJBO3~LaNBPtNjA0?*Pfim4B=Ldi51^&DD?IENb;kB~Lky zuFNv)Ilc}QaqS2j$#W4)*!IgjAvXBVR#n*2X8KILOiAj@|M|Qc`OA;;|K>v2R_E&N z4v&w0+6~%zV;F4iZ_kmSp$yT8(_xW_xbi&3{-b~Y#B6Lh0K7VQfQ*I~0|Gh<9Pi1* zrf4&Di~Y51iNG%9nXpS$M9CJ&6W32*3(GBzn+w*W~kd+2P0xXN{MDH$g z0>ram;MG80JF2DY`fpjv*vJz;j;te4ad$nsbBeT%$DMI)Qi?`r4=JmvqSzhiCpd-{ z78O-oU=P~Chf%7e?wGw6^5fDx^3SsLBuq}zupdqD zylD{>J71TVBOTf{XkiJ{(Ho9V&*=_d9u&U*VKz=*d}RqTz?|)dMZQLeUWxF*xnt#I zlZwwtxf#aiB1>5eJw6ZX@WUs~W*I%4e9_0eDRGev6t0XhpWTc68n`0;I4=5n`{X?H z?KLctaP2*M4W9*TM7R8~Xb6aoqvGWyYz6tUU}d0s@`%H7hFc+-8-q>wo|!kHTae`? zNJ#=#8bF1!?nvzKRaV9(B-A|e=TA^~zmgZb9zXm}$lTmKw&vTrckgn9z-Q>Ie&AbK zfP^Mb2iwL|l#XfRpTKyd{2k*HaZstj%4#)&4+{`)1EsZ$EIdY+d3kxj-J6`9Ewi@v zJQD-s9e%;o&YwpLy=in0aMY&ODA?8*MgKB5v`Wqae*)BhH4qG}$t1mZK zH{wmo6?WJ=?`hM}IlKn64CjK0R101H#b)#06PJ$09t`vG-Kqj+JpjhKMD%xmg-NDl z?^)V(dKrNetoDTJpi|!v7NEVoknFl|^aM=R!09q@DboN<8Do!cxp`^2Vk1RK(~8`h5?~@fJW-I75ZV8iH}C1cgn%E$4WtzC3lU_@ zA2+{bHb*f14KqQU2R^eC+i*i-V805C&h(#=!>leQW}5F1=>Ukb$=se>y5a4O zSiDwR*7w+x4h~`mzW9cQgH*w+D|A0`Uft4!3Bvih%MnxVuTiU@lBl!0TcT_#rKfuR z&rW~8iCNncZgha5r52t@qKS@9#a9++f}OIm;Jzn=WeOFY!p(r0fCSay_v2swDpTu~ zX4u5-f1S?QB{AA+Q%*F03eSe|_R82MVS`f;#{7EMjMT`YK)D)?^ZT; zKcJed(+XUb(s6F08uIfIdfg$^8v9+m=-umGyniTx3%kbQB%;{&DiFzP56C2r=sc?7nx(3H|q8q=P4 zu{VFd$LO${fcak&w2CRy9T73LWd6*i>fYuiOkVymnDsFxe73VebQzeV!0PyWVuDIU zBpqxqOo5=>VgDZH-3yX;Lr67`ZZxRj;rJBV&2SVH6ri8-$@Mp94lS;>h)vmEUlLkASfU{#=8h;y&1PMa6z{ z-AK;Ju#R!lZc<75?8QC7Ztz+i?Vk}9XWna>>$cxCYrIO@$tXXk94ui!b98XXh|XDm zp{ZMT&j=sy(tA}3_^-LMTjNaLl@mL`8&Tr_z@3eH7h6TR^w3XGl3%@Z33hM1r^x1R zzAq{3KdJJ2QZKM(BHL1ZX*$;orA1jQ$K#p=W?c5^nnZZ7M(ao$?vOS)>`X>UPqG@T zbK41*u1jX@SnfsCCp>gv1kdaE!qK_!ZIjK0PIq1Km9CA9_7Xc)^aSVCy+J9S$vL|+ z?UTZiV!97e#O>|v{I0x@A6q9rq@Dcom*VE-6)zsA7Gj=z@h8LM>P3<$Tm&qteSLlG z_M6I}XrRr2J+rV71G58GHsynxlcP?F+Xme0d~w+^eZGC8ce=YHar@?*)11@H;xygr zMmCyLzWE}rHlbE&Hb|?0K{zNglTuB})m0GKr|$d(xy?Z0#mI<`=mn%jmUZ@9_&{-x zIcoaD_1tRCc_R&p5HUP3kdlXoCv=>=tsQauva!MEBBMpE(Ca9KJk^?Y)p{tPfF6odlG1rDwum?VsmP_(r4iaehMCsG_b;gO*M{+B z?WyXd+j-V>Kk&V*sku*Ugq{Ad=S~v@R-`}S@IxxQxx&2{a_VgBbD!*ko&|0&}(dQXzDTiu(UA%4(enVi2 zLap5%9~<*t%l%|;Z*MSH$8ljcWd(NdXk=t$=%BQs>m~#p=dt5Z|MVzAxdx_^lG3D^ zGDw*N=U4EQKlwTu_>mO=djczl>?$w%YY_X#8)*%}ZhEMin zKW=yV)43s2J z?dHEnHIvP@me)NEQ6QYzxEbI(-<9|vS=TG#yDk|Crcb4#ZkHwV&%IUBj>{nD_#u*N z$4>yHS(MhVlYoOJZsGfF-ew>k05fI?$RYwoo;le~_}AwL-QeT^zPJ;uoDbv$zT#Bi zFDO+6*)CML=pdvN4V3-)v;!3ifEqBelzUi3o&-s5ZnCq6au8z%YF`Gu`wLqH0hx5b zNEAR%Zwq7RC&X#-#mc5CsSJuff|DPxU_2x14l z13hkuWs-&$9G#vMZ~w`r_1#I@R??u(8j587%vpDh2dKXg+xjWfOMWi2$Y`EYqS0iX zeFp&m&Id^ME~dV+%N*Z&;EF@Y#foy8De{AGbuI9IY1%Bj{yNwEG-N{g5zU~$4|Lharw<#Taf`i zh78x^&)NSya#1sOw`s<>w5z@WP}Elu@~M7VSq4xCE3TU*9U+v`%Q=O{J~VIF`TY7$ zxA@1$j$-D^9CGR7cOu`EQg{vWOLbiLs`(xFNu|O_{6M6~+WPuKxjvBDy#|R10O5FO zgk{#t;CMpb0j7khoYEE&hf@a&Q?=2tm8wvXbj$wg)vE`i7!cJUBPS;g@vm~`4D0V`oLIyi&ASPN|r0~V%73iMm1!43cTN3<~w;~AouH~z!tOQ9o z!5$RMfaw^UnF$6}l}`C>n_kR;tut%S0?;$HN{nR*&r`M4$xtoXmMb?}Se#eC8K&!5 z`>KPMHCmFxmm6RCW*uaavSXZ%b9`+~Bfkzp1wm_H{cKw9b3ardG?=E&kU&nO^V&`KFkGk!a1iy>-eBze zlw~k*LBBc+myT6=g~Hkg09UWfINy8I37$ZRFFTYV-iY^{wn-Yv8K+@ z*v@^xp}Je5Pa(OF7%|Lpd*GG4!kul<5-hDA6Jm;c)Z5z&wgY~8)-cdBC8;^UB7zGt zNkA1Zz(pM!1pGkW7K}Ba(zgu6YJtT8?B&pLa2z!$o|2OffwVA?MCq9x_!`|y zhqW7U9ACD7zxZTqyaJw@sf7h-GytQ40mPt`UPa=-)$N6Z*0Vp~*!yp_I|!VHqGV{- zz?A^sC{>rzR#%rE5G@HN6vw6L`+(?KjAO)KR!n4uezkL&@89$jAQPDXgCnqN_{oO)|D;lJ; zRr{{dzB^x=02%?f3uRSQ;0It+_|#M)y)AqKx&?UfpwL~T$`lV|(t^z$FaWR#ea<)Z z7dv=q$pCm(`zWLdJOvkmVA6}f3HlImgj7n$r#l{38Y@bGbX9Ob1%6VqYqx?P zH~gAE3=keNmt$glnqAMub4I~_;VBq|jBIQsvf7~YAtE8YX$)F72Fc4=(hVx39FQkS zj5P#H^2N!x5-_61%11ZQC$G9gM@oqiR<{}OT3&ZZ zd_%YTQL?;Ty-~4RvF0E9_u^tot3P7VwEqEUC=>KW>*iCnh2lr?BDpRskMPSnf7I>_;f?Z?(_YdRo4a z1CROd6{%?vXprht9$WY5rhA^0cfV_ zIvbk(rej67tF3%xrm(%rK`Mj&RPHwW@aN}^FNO4ndK}~390pZ8nw*an0trsjZA5{@ z2^dJhbam5uS3(|`Y3}>?3~l^45iZ9C7V<7OLA&7E-LV&3TrmJ0>CN(~n-7wBCi~)| zC}hc9bNbEQLJz0jbx}`A?vk?9+eh*zp!GzFtdZ;(X>rXkJYMfDEw@AE>1w z$OmcZ=|2E|0mLj?QNfYuGVmEbXT7r_uANM#U2S9za zHY9Jyby+EcI4I<471e5@7x9h-+lV%ABm(0fqK@L7OC&52Uxh%o?&3?iiX(#&Ie;y) z)((7dP;2&Wnnl*hGZ*&j--@L58_SBMg={>!9M6CAQ8s~RrISuCmeMLz3W8LkWhKSl zAp}_2$VZFyj~UIFyWh!7y4&H+*C0EYtG9makT=p6AK6&e5)3sT+2nae9N%DkyCfaD`hKSRU@HAx_Q z@n!DY7tm@tOlKhVRg4}(bDHxGSTfWvuVv4jOYD%^oEbtH;$_)>9P=qv|e7SvAx9iq~ zLxiMmSu67u2lR#$4fd5sh>=mT-X}Lr)t}J<&WE+oM@DlxcBAAs{%C3iwqbP(G@O&u zDcRQBh_(URaV@T9$rhQ;9MFso=35`oLyZ(_Ufe3@qJxE(f6Yu^a#_JFJB(Z%E`Umwr?Q6EG{c6 zI|W!c;IDvB3x~~$WHvDU(E@<1FX<~=WN;1^5fLc>7gbNI(b2sC2O@AbP}Y9;+3pH{ z*{@FwF)}mLf?X3xEJSa7DQ%-7ay^&G@zEtxR1O;n3CZSYO;*QYLRC59@_Ey6Q+TAA z3P1c4kGK(MfxvrH;aTsqe-S=IlvS6sxUA1OXylsp9MLd#*)F-?xQ^MarL`BygAJCf zy!>-}G!4LY{dM^JvTMxIvEwF?$0S0hQa!zLSU23I&fU6Q1jZ**T2`_xuvo*8l__2A z2S{_bBVXaAZyD+{V>ElQ7tmOWM|dBifl7LwW5M}I`nd~T&OZcXNPEB8nby^HIL`G9 z#kB|>D+mW!R4RG}$&fp~%6BAP#zdviV4gzq`w>N42fP%OteDb8uHwu{kU8M>+zjfZd z;3${?3sZlI+5=5SZNfR6SzrH5-b#B#S@Q;@7E98{EJujmd1|2NzDcyuhPz+ULX<+B z{=(P%%=f}y6?0*fFx@ft-R9!bhT!s){~WFU$2_a9iE1gt^ZyuW`7n3_ox#%ocGg1d z`M)ZN|6kugB?aD5^lmQ>zwnT|eByH6j2i4z9me`vFQm{vNj9v77<$D|?;XzlFUEF1vmQ&~{yz8da-QG)gIne@KCm94V|>rPRhkW3yG1jQ90KtFC9 z)sq6q|0v8EAtj%!XipMAgnx0)ICtc`yK28PsEoewsUV+ydxvBRckH{boXrT>p;`&? z3@FAWCYA}*Lt`t)<(Zwt>%vJtY~6xenRyZ|R-|i~dz#T~^!ZOWEw|1IK(4)826UBG za|i}osY%TXj%Y(l2BPG$_gcdN!ZJAt>T)}Ilb>Q!@Z zKsS`ocsqDXQGhW0mmjJ^T|nyT$V2`CCb&IU3h9yWPQHHrnS-k$za~VR^6ZR1?6hCz?Ue1u$`0`#Ux?o%&NG~lQ@@=itiocj1?HH z=*5zbZSq&0(TM*1qZ^2bC-b5qT2t)Jw`E-Z!b=e^0RL>3ylCfls~bm=tf*>4{`vF5 z9i03+Wws4JmF4qYAdHlK7}^!>Sa{k%5!2Z1?_i$I#SCoTG58@p|e<|o;y_VwaSBT^DYAvZGDTchuT z_2Bl}dxdgJ!DrJG%#O~t-;N@5B9S7?$wZ(Uk@q^lh(05J{HBm#X=4WkG7UQ|e`RkH za(i8rFx%=Hw=A+6daIj8F?ko~%zU}(Vz9}xaM#@bqx-J(V!n|{bPfSlST?r;WfoO< zS>KmnB7V>7WT}vZQ&nEd%SOTwQ;SV(gU;3_o1y2}{CQ=BpKLu5nm2L`Lq@AqmepawHpk9a@%3 zW)T~|QQ?E<;yyL1)A-j;Fabag;7cn#D6f)}BG@hEAcF zkrgzDYoWa_LM?cY^?lFz`dk>=jd0YpgqvG$U*@FijUyPGL!Pb&!*h3b&2`q68oeX7 z8{fKti5{yD1Qca@imU=N6Z|~)jt~qsM4rIirhQHZGIbyQ>bx?rl|!%D7Yqg6rH9E{ z0(6b+?00wX$skK^izuU=f>;*>3(FtO!aL#Ep0m^E#`kxUes3o`2$mSZ5C3oo`pRAv zK5ENVhU7DPha+5(^ks+R)^fy_iDkG8JlKR-B1ecFm)P_g=NE#f;I7gRu_I(Kcz5#5 z0~(3xe1}7M&NoERCKe1%O3~n-9`7s$2y5qLDcO_JYkZ2JDlQ{*`)@(edZ`4ahXNBy&+rmcI42^RFQ-e#7dP-NhAu zTm$(^QUotff?1Fhrj3S(XatgY!r<@hWN~Kg#5VY_zFw=Vt~>b2zG-L42M@jx4WUZG zOvC2<-#EXmSU7kx)9yFi56zDa-C>?ld`E&D|6~Y4xn|0UQvKl+(2Vpx!t-^=YPKc} zY6E6!q~x+d$l&{gh)D3}?)sorX&>ahB1C1Rq{vH!5--0eUC_G}bliW~-U6JUd!gC2 z7ZBFhsx6h9Bc@9wmK~wxae)fXWa)Zu^Nnh``~OhX{ga;Z1h>Y`<70<)JA%;TdLvVR z-`I$>q$v5#P9=0X5D%tK)1Fqhx7jl~<~sK@alS&{CDM}y`ryXm2ywL7#$dORG5O-`e|iq_&0K;ZsQa^Jmvn2>1a;4kYtDmX(!d#ihK+Yh$o`2jn3zQw&cNbUZ7* zS=jCXi&bx_uBc1W;yb3eT)^|z*Vm&rY_&$-Yx#P<{YAGn+$835+&rNnVDhb3(!ga; zZXYteqtEv}G5u7(jDF>l-}zap2osEL-;$JPY-wCEX|q4y^y^^LIpqDVPfY!gdR}2a zG(fJ0XHx#Kd|X}Wr0nVIXY7o{Iq6(->w~A2%7!+S(2+~?rP|HzInLK>?W3!PqMLf; zh#iDJChLzoVDR)kwT82fK71xD8E>(>xxN;^usRtA8tGG9ZB~`g6wqd1U#H+eEYA04 z+F$6f5$pCu(>lP!X88=#pz{P)Wngbk#c#if3xH;_qlbtIdM za2h@Ox<7{@E#x`Wx7h5;mn7s|(cy0=bq5?Rh#}B$snTmW$Z0jxm$Ju0%LiOk{>U}J=&@ce>~PiS=Y88H29M%pYfOpBTkzV}rOUvT(6 ztuix4`CfG$+&WQX_J|h#!OtS{HyR0UfO%xEqAhBVvw*rU_oE5Ou$<@~~9s|$3O$Pyu zqdU6%TuMrI+~f6OX|P?taTA)KAwCdDp8ZHSU7Ax555~^qdzfU4M;;bw`ymClic<=H z{csUMgqe#BHZ+kxS2$qFim`m3H-;O6720@Y7~bqE^1-6I^|G?GZ9$lV2?ta(b46f@WSXH<6tvJVvj|U%545lmE9;8Pk7WFlW^ukq*7M@z) zw+lgE5^lEy!TXz#|0?i0OxF?f;GK8G*!N>qGaOynkT9!mWG?1KB-Cm%3m&(E# z)v)d_680WRJVHh^t=2+DL0Ja#fygZj1q4)++1a}cilxz_K)n;d6kEK8)W$bka|N!0 zJe%~aqHYjiU)2b;l2cSb6fgkzYj4mCi30aqhHn3je%|*kA@gj`k#`mJEGlgt8F0uN zPDQ{F2_Y&<%`$!ZZHdTYkGKGZl%XM#Ac_-k$mq>Y{k?2(rFwr4~k&lj9!e5tb)!;M(qVHEpPb^4JppO2Sp&tIyx3y z7+Gs3Ad()++_k=hB2!WX4K67*k2a2)e0`C1dV0kybS&7R0>SsbL)Tntzl{N#o(Z^h zfaTfNf2Lm<8{+0LBYa=vBKbN$lky%ncMKPF=_I$%&ddd0Zhi^G&FeX-$}(&S!jCad ziX>EbguoVYHzJi6d;NLNn3OBne@!w4bZZFsIC7XzUznCpR*9;TS)xL7Ed8rP&Uh*BvbVEvWEP z%Dc%m`MfL{h2)8jyDB|?>P5Y4oOJ{ke7dy^!LxDKdKel>Ljpt7x*x>+F)fvU?5;sD z7)leAj*f|0211T{ouL-ym|g`;Vq9EUQ&STqVF)SBDPw*nx1t9c#gKJ|bjb?dy8QynON&9vML!W};H$==qO$RG{&wF)o0ULAB zU!gM0*fZrD>Mls&gVEcy9Ovg0KJ2?)&)qur<&ApB&nEpJ_U8z$R&4GGDdCkBX5ChW zc;FqOFwIW4l~l>{>WUFPP5XJbRIjZ#f*Nb((m#JZbR+O4Vw)w--yV-6`K`|zL;nKP zXDKz8FR0!VzDe0h%9+v~ML02re>Un9u64e4EUTae6)>|dL&sqJzM@TOy!Cg!Ov>O9 zPTU(7=9+E7PT4W}oUep&`_Q5Htp}QJ9*!bepHlA*LZu5FFP%H9_B6L*-L&_VW-&?~ zn;UP82+<&D`jrb9#~`M5KVBynMClc zcQe^rOp8#i2|tZLlZfyf3G{qP2JOcmY$H%syXzxC4_T1e;@oSA@$rBj3;;6#z;yi$ zDe;3I$VNas`g5$ymrY6JkGBKLxNPb{KLfxBkXM*2eDC>1T*%vB=yk7j#;=Db;>N0& zA@T;mb|_iO$bf0|f_a9Y@j5v>D)ocp-I1>(L}&-IaNNN#EDiT5k^pJF^#vl=v(UugR{`R}lqnqP1zEdl05=evE zGd%LgLOLIV=lW5h)ev^W#n~cBebw;Y90KHsJ2V*3LvoqO-d;CKLxl`@1;`WNW?(}r z4#;jmdDC*@BLXeY)Q*a#W)Kn@w!u*9s|TbRXc_=xK-FS{G~?lhd^En}Nta?lE!uSB z6=NNaK|s$AWUR;#;15xJ+C2&V@UPD(Bmu4pwv~FOf`YiD_`!UOZUj4%B^{t>s;z?~ zk&j!aEI4maI8FGd7w>jJqGS%$oYKA_+NOSHQIoo@gA<`v>Vz5Zi|dYG^~N;`q?|Ue zgN(BQD7QUpdF0Fhv_n8SbprAba7F;nL2bD`)2^zjf}n4TX~Cca0#XY!m^eCEo>+D2 zAYiKnD6lr5#05bK05s)yIbr-2`pgG-Z9yt^3*p$^v6*N;9t07 z__6IUDDi&Sr&bha;Z6uO-%xus9y|3!+*49>iwY$_XO<#JZube*T+}|-ccCx;W$9X@4Pfgt| ztI#L8oXbGrE(#<_M(7X%fAwAHYjQtK1-e7v6B~ZX4IXQ*e?ZDjDD}BmJBD{4w$lt! z?E0UfCTag4LQVbwaQ?d)(aFe|sL9khb<%*m>aX_B#~9Q5;gY?~=fq`pb5sv)>HKJ$ zAsc{+LL#rm)ggeto=O>ROd#O8)KDT42$yM8jgb8Pb1P;9_=b|b%>u~r3~cE^IdAys zUW(+e4lKp{f#v{_hdu3Fk!%EP9P1#rFU>fNo^)f%Y9NqAnB*WFa6yahlt;WQ7wt9} z5iuY^{IMsrngY79<(m=NamU0MXh?n8Sm?nvfEqez2t8{0vdw;_Ad zym4uBV$RU(B;6LsRxnj70o4jLr5@0s1E0vZVC0MbmsQ&?2tK0=FrAkeZlCPNw>1!k zC^;`ty#P@T><}zt<%g$#77bOiuD;0=nWNCq7f%S84p9_^0WcDL?`>`v(*M-|g8tu_ ziNpQ5Yd?J7{W7tDiK$m72G|ib$x0;29cEN}S5DpQ+iLte{vd^DkcLO}@G!u!&|WmL zhtZaCeEM-QeKEUEGxNQ=ig|Y$kocoy zCHCxh_NH+bUeVXs{(7$G>yZGnfAr|q(HMdxIHw#HdoJUGelE9R3YYt#Wa~&;7S`l? zJiOfU_h?xUTxBOBxnKXY@5gL;qQXD%O-@cxCt z%;}|tCwTY9WZA+1v`8q;iVFScV{-FjpTah6BOMx@OjJ45c_rgqlTL18?nW>b0My_P z7H;zcSjXMH4+2Qf%s=B~u3_7JxNIlS=0r4vo_6O(@U~;jb_7`Eh1Cyrf-I1kiC3^? zQDsB`stEwCJ+7@LU!j`899INzh_@(72!sRoI3~{*aaLHBUdsLbqj97MBMxY$rx~X? z{`2P-8YT(BJfkR?=O0dkNBWndt(CSJu33~+pfhO#PcEK^ACL1B+Be=$<7$2}|7m$N-dqed)Ge3oI@pg3z}}E(yp~K5EWIG&P9b z17wG`mE)(AqHDB5dr44yA3LP^&@4i`)SEq{X?s(6`(Ym==R*J6Hrcbqhw9zIAOOo* zz8DrI1O3$SAi~iLxLN2XInA#1jhTZ1*bmW1%D>GK=loF1pW!p(RqOF@ly3yuJsanM z`KZ70t^WiP5=D1YpoZgt=JG{RIMw>qU}lrD7~_WKCr^b%M<`{%RV|y zZ{WyU-{tbw5@IE$a}zA^mk%;x zs#2nkhuBeS#rsC#J(F9^!s>Wj9e-L)Lcw)PGS09v(3{?#=Q%|a{1*I-?#~x18yJRz zYT6m=>hr1VQihxl0~uY@mNn5Djv+=j?NorgSq$)Pg)ObxI=b$nR>A7!7aBri7G_(F z)_g=8vlKwqHp!w?-wToLwkFWM@Y2vUjoHbb<3K^^{h?)zRNp(^lTDSLA*^klzp8ll zbAGLbW$c^XarLtIrSHCSxCIuKMQ@~|t~y-ZdnJf$4+2oOIa+jk&|a*iN=a-t%A0p- z;rCiB#sFLZ5Pd4x9TC7)bAC0NONxLlH3FMOfcYT=m`|GBE2&+^n9tXp08DAzPcwqg zaOwGLcvn3$@KvRR_|Au>$s3LjCj9#Ug*R22>@G<3>Nv!MJNBL`btLRdtZ5qRc7uJ? zP>Y|6UtYe)!ysMa0kEvfxxmGb5DM)j0Ah+U___%|fgZHrXrNOSnH}5a5C!{Heaa=; zisy@&?tzQrlLBFN(M!H5W)F^zi>D<|zOKmFZ(-^XtSiQ(uq!)$g+b=NWXA*3wlQ}8`5P!h*i`|}Yhm8XZ;lKTG5j^yt;fweE-g)}`2 zHQ%VcR5%;$Hj*MHi<}*y?QD0AGI<}S*!{cwM&EDM@O{G5;wxd<0bEev>-nJ7n11+( z3lYfn)YgV?waozJ|2a|MKEDpXSBeaaB&F2lJ%1u`TJvOdF7n`3haQXiG>*v-@U6dj)G~fQB z@YzZtl&~taVqILI!x&pTMvLxITH6l~ZIF8%p^vO-eCro@Hz&l@!+}Vj1`4dFUBXig zL>;ITNExt9Elx8{aO9@P8`rS00dHxDhWLH;R(rB|CPEg`Q9#HxZrGw2NEp;$EB<0Yg3j)ju8Ef}HYkK-AQajb@-R z+9!zL5xR;RM(4dts+W8I8?A{xW*>kKR3gCsF+PZmtNRaiJ_x&xOWk7kb#YU_Z7Djr zZH~lGV9&kB_z*!^exgK|f+x-mH1Fe8F?QNr7hdhu;+-wr0|}f*WNLKkI%ZIfE8GwP z%pax)4Qd)?+txoGueJ`1Rh4N_D3tBE4`kiTBUwOB9J?Rur7tDj ztLj6R;2$aCDIb-R1W+Uk3y6Z<>A$Dr5Z)3fAA|~Q@JSw;ec;mp1F!=g0Ko4BQ1GZP zpA?_8eo@T5n{DkRiOp^`?6hj1AJlN9pild=dW&{(`_vi#3UtI@c6&1Kcq6imn>JX` zlfaf94^}Y8va<)F0>sRQD5&Z)yu3myQdOOgCRzHSR#Cc)8>H~{Z3%8m?vlo8K* z@dq3VAZf4jbH&{}W{`|+49AUY!L4ed@}9;ys6llLt4Uc9-`zxEY3K)WbSDMsoF7f) z2p!u3Ah+GM(Ilim=mBhBeszlI&vISw#FDh@8wJJhwT+1*bc}^r*MD1EOkZLjXp4yk z2tQ=TS4L&{q|}SQ6<~&-y4&Ji>_*rHmEv?rx*^sOOD5=}tYM8oi=3#CRt?Z-Vv&u*g*c1|1J9BxM|g zRsjGPx=hx7e}7}?K0CVGzO%BF zKsE_i6>~oMx~zRc2+T7eEHwTuug)cP?ifny(^u6ZaGxSKK>}R>i|o-(Vd7WeMbOwt zc2myn$$i9f!oVY1!JFyysHr9$u~I(8K21c^G9>#ej%dQhU6e^r`|+T%wv93e9;4x@ z33kDA59j(;?%QBz9f;<`TUHw-oYtnDyzdrv-*z5kG|Bl?KdPU&>+nH$EF2HB%ncs2 z5O+R4-0oO#gX%l)E5g(YJaTPnFroy9p;ZTotC8eY2Dx3f`)J`0s?;I;RG_D#aqp>4Y%T{=RxnrHOvroVO{rZCCwM@EdRg%5EN58;1Xu*u` zvQcfvZuuFb6iu=MY>6PbRwJ)jOtNk+yI$N8vH~ruZ@q^BCP2Rjpj@Bf!|k(k3hNfX zMT7XPwMgG`tlkMcB@Tz`iwk?#{+ZfyFPJ1Fk5VG%JZcyqI7Dr$Ce5*d@gK!=xV-(f zqD`pRJlgG^2WzuicepA*J4FGok;PSU3xDCcY)6>)!(wrQ_gqRHW5{pR(SYg{-P#M> zc#}_$<5tNl0x86b(&zVrt2||iPr%(Up4w-vwr&X2)5ZS7ZKaF~{f^HgKVXZiESkNB-6J`1#K&#E@(_;h*Yp|0*>HW#2ljB-)T0x~_MQtBmo-e?Gc-dV_> zFdJ1L4umdn;k^)2g7TynSKzNdAJtG_o7B(RS)>J;uP|4TtP!#up~1q{1C)nQ1{t4V zuD$0`WdY%E#~eFm2;UJUljYctV+X^7EB>Ea`*Wu)EdP|oLvTYJbu0;GvAwiJ*Qab5?S4Aupc70qpf0k^R%!jphRm>-mqCHkFEsA`4zK!Hp$D1X z6SSQ;72%*1h>-HdggG|PHu7dXka!)hZ|EE&RagQ6I6Dew5SAVd4+2Wwt@GXInXC@& zyiBMlFLjzFc@-;uL)Iww^7lfm?L%v{e(lF+mAfK9kC$XY3Aj-#SDOyOy-A%(K;EE~ z=e)Rft&iQWICW70tHPuG%2&hH>+5q9@sQ2<`$qWEJ7qlTVm_dLZl-par@)J9pQlxl zIz5gTt&8y9j229#6%lpT@e-o(J*q@t2`XcPjDlfe-q8EqOeM$PU!HMJ_RZHA#AOd+ zl(G9}fo_5x4@bDKxSkr6bzR9%;;-wyWw=cmY*&AdFf;{)QyEM>6Z5MOtvht#-bx{L~E8;hp}VqauY%4J(;q+FNY=%T5;t# z;PL`M0?^Sh`YzLB^JFw_&viL%{;8Y@i1F)3&56G2zX%Y?%S8X2A-tarFwDzDhdL1((~My0cHxo=u`9f%}4kp zDQ8dej%8G7SuX^3TlQgp*}0E86u|@ootZJlc)d%G{j-UrQy(=@<#G_XfRkMRLo~zCO2~43{;UCLf3yby5SPY^nK6IC4r<1{s`}jJ$&{fcZ&@rb~|fR z;T^>E2=X9R1v^H&7a3DWC**yN6=m9PRrA?7T%EUf^~mvJ=`Q^VelnHitUbBmgPPeH zMLsM2G70d?U(0z7ik3(E_4W%nZ<)KTE^fE09~15l z7=E}L$<_7;?k8(sqyO#TNR5$>8y);qg9Ml*nmte5gxZ1kP)WKDb?~vIr196~Q&)GO z=7{j+MkJTvIhKdPyBi3}+!RBEN2@GQ{lWCTsaT?Z0pkgIj>o;`R@7V!00-s?cs~1x z5XuFmLQ}9)us?apTCWoBG6>OptAPh%eaR{p3T6J@ye`~JqI;ET&FfvQwV=`L|4eeb z6Rmc!c^gMLs$Msl*?a&a*_}WfB;>0Z6Gdn-iWW;-e-{8Spk8K5MPp@|V+$jxlSdnt zd$;vrJK-2ynqJsPXwTMZO#Y!JTckOsU@OAf-}bidhRu5@BF@9N1TZH?&xobpI0=>! zakE^w_oYMEdN*2hCI`z=(ey{>yECbwbkBsvi}sx?-?YUPE=Gn*G-6DYe?=)&$QS?i z03pf;8bL%u%j^7(37c!{>KI-K&+qK&0E7nwLl}=y0^WF_FajVX(D?dbdJCRcO1W^l zSSJAp93;a=#Ww}LBAYY-ILiIw<*2<9+lv<%rKDVlLrLu#zSBkTLh(_7RgjVjGA2VH z3+o(6D*m%GoPEhQO-{R0;P=jYEi0GRgH!za($pTUV&Lx_hMjwn`50y(#mzB6G& zEM6Gh2xC$R{0@_oz4?P1i5lnlUREXRSc!2Vk9vS(Qq#p%Tmt#)?YvIJjkUtMDX{mT zVLr_6s_5~O^{s(lBo`Rx=kEi?K*tCdm*rON%_&l|mwuce@G9tL#c2gV-d9&g9bZ3&v$By5~ zvMN7@1FJgDl#rTtWRJ&Y82mNd` zex&55YRIb~H>$x2D$h+v4pWpvCz8+kqbPoJbdLZS%uOp(TYI^&0TWJ*9tXTlIi-o^ z>gGKBG{Lqk>r=OaI*8i`3ZiowBCFZjK?IdG`jEgMg(_f~GpqDf-!V_wzua1s$^zog zI)SCb?BGVs5ckC0?2VC=4D|0Ae$9l00MebGClmBwM}O5}OlN#F#sUV@#-X76JdcCE zSojqP0)ql2SrO4q24OebgAv83D0pBmu3ucg_MOG~=n-MQyZ-g{&&rZl8Id!5&I~u& zA2cueCfWL9ebp;w!b8H32?HYhv^=Dvo#{n&7gatUM zZ9DpHW5SR)#u_@);6DUWM9AS| zeljLAtN+O4fSmUx;rJqIB;AupKL2?Lez3DypGTZB0ucWx)>9XLZsd0^w^RRvX=&nn zN4Ci`r@(BRMcKiVFiJ;v@_QvJLOciiQLtUfCfJpcCt?+XSp?XE41I0Yzt@SMQYK2C~H>z!koc*BpLplM%>Xbl8{LQX)p7jidfu^Y(u>*^%p(% zjAz}1QbpZSjg?NjkFq+Olb-~6Re$I2iN%N4&vKZF#BSmEWYP|bD@?Eq_3o{ih<8ob zeHFU2vKHAVvcwy>kDcmv@0+-G;>Y;0!X0LE_S;|Ud}TnhE}<9UCd0YAL0^zFyx|0| zhELFVBy_z4K!rlRVT*W#8FP|5Dr7OqJE#$d(2kkt!Fl{M$r10Zk^4v$>{s_7Np~rv zA}k6}#}-W{(Vi0F>)kb*TD>1JWF`kfWUmnQN@wTAc4xt#n-FOrKn+cO)G#YKRzT)Z%_Q z&4+xIKFWVn7iUB^eK<-o48xg?M_{j7XOQgP}x1%0Bu{hvf4v4>&9 z$jp#?8_Hz#R1O+hhr48-RnS_Ij==5wi+(|N20&6rU|#akSMv4Pog5z>>%GgQ0Kp%z zE+lEEYd-St;tS3ub(>`yqL2l};4m_bT}sB@3s*{Z{0`n*)xHm_Q{TK^y+|7r^2c8i zj^43ImoTa8za-9HB8fRarKWbX7{SpEqb#aCb;}*xEz?Bg6KAGcsm|W#KaL`uP_#Px zgOCYUP;_p{r7*wf#s<~UKC(1AUV4K%NN-h9=#d{r$&UR1UJ9hd_iVAcnrp9jAx>A{ z*@C?;r6bgBr#(m!8&3cS_o&38&<1H)riv~4ZAA2YDj~mMAd+#iEJQS_K`~9$5$*~l z5Sn=&#>)~?qF4K6C_@5pQWr~)1|m8)&(=d;QwlE3%}|RY=*wir4BVcb1p?u=MMXtt z@0Bnm%1S>K$_B^8-~yQ^3b(;`Yay~gEMjFYLVEjSye<%BLyzj8ecCVG&2Ff}N(>JJ zJf7Ge5j|ysLX&rW1`Zz#Q@hYZ?|?E?X-RC_U)R3EQ&_ZI#ynl$_OoO&fzE&;Ji-PA z$|;=8`t=U(502rKBD={+#a->73cF6#AA0$c(oVNDnat7G5s7~{53?aozBDNu4gD|g zJ!RYE5YgQnBd|eSWf@;qW3oKG)TmM9gw38UcUXm0Em@U#>pIc<(P=3V5nf`EagYT4`cZw(piIY4L;BXr;dY8LhLA#8K z3c}<{l_1(!9DuHtop+PkFH`5`0Xbi9aB0O60EMr{IWI0VAsl#szIqE#0@aM_9zHoFKzBJ;EOqXfotW6*Lofgq2m=>4OsZU=_zl2|k-5rG_6R-%sQ|7f zbRc?Uk<4+DtgI~Sj}D&<7ZGw_M{%{?b-nm-(y)p9eb$Da*q5Gl4DVy@_%Fb}rD=zX zV$M5g={|^>`grW4JCMTUlO(IGnHgi-s48 zR#whW-wQA(Y717;bK0|wMy2F!i)AiK)mT&8o$+|vBNJ=+rZx`t^SC)1XD*7~H-36o z<)XELMs_3|*6nJjUuV69$tRaTI<*PX0!G7%X*-1P$aq6BE`~|s* z@c!M1(v}!))X)d)?c{w>6KT7~Mxm<-%H39-(@gWV_Xo<{m6s=`(O_N#Ki_4Zo$~ay z=k}V0&woT49+vt^eDLCR-BlO;to{z|0rz_gKr)y<_S|t)U#>`bQXTMg5ZW3XUzX8= zhqiO)BG#2r`OouUS{G;?p^vqE{mut_QW}JVefq5yEZEaT4rNq2huP@v97Z)SfV>HJcgA@O zgnO6wYi=U$SOI$X-uGvC_hVPOj4dNde#NK6K4LUOtnA3#(2Zz$M)P(&%gASPpFVxv zXiAnFdqa%!G9_H$I=@ zc#BRm&ut7661`$cH)W=rEDtSPdBJhFIGU6Z|CAkX2E5-1Pys&H_5>{6`bGNIJhuiQWLDOPF_oOzJj z*c|*-CQutwNy=_%HET-WsxNu9Ep#y}5(YGQC@3)+Y1KMCB`ZFSei9m~KXK6DENiC% zovlM#(UUnl<1rb(fgjN1Z9DB67MVZe-~AHB)*3amzIFZm$JNzYb?xY-ZCBrPaa+)C zz>UwuuK%TIt@U3a5r#TDLy3VM8&pfa*mgs3Q8cVtZZ!EpEp^m-o!Y*4(m7lgh;n` z+o{LRXfj5)&P9y*%a!qfnTre0vYNb#oso-69VhUdSg!M{BmVQqcjC!zNXC4!3xQB* zR5JuA2z2BjYUr~s2kKDfY85IY*r;i>Z_<}!}8S=9=1<9dD;hEu`-oL?tjNA`Sw8?W*pBFocwd@Y^ z4ouEy>fhF=pM4Aeaghzxy(sg3?bCj!WiwW*;j{laa_T{$4Q7VjMAGZ0E=Dps$v6jJ zwUsz5iP{ie`NM@Dzf?mdXP0pX-g6i@wn9l;oO4hdsjQ`}?(J-?@3Cv9p`!GPD6$*yV+cKjH}H%Ec*i&lQUw$gFJQu zl&BBaFteYmm_TrYNh0={mk54LC=eE%So;*ox%HZfklNc;n7Y?OS6;oG6!2N>G}gfR zv_R*P!1$mX^zrt^Ks*yhr!hY8AMsYhT3<4d3JF`3d>(}c?>@RE-CLr085ekkcL&iv?I~>ftYV|dD0Uk$QK1r}T<(s>hUrjqJk}_-suBy6k?Gti zH=>*wYk78QgKaC3+FM>NY&;L1x7KQnkRr$1idP@cj^!f)e>*l^(xp^r^W4EyzX5Kj5KcP29>x_bu)Z+5q^@X*}- zOKo>DLyECcAB71!!8m`Ix0?@yl%q2+$L_@PD^?+NB^`LgqGOUBmxg=1^AMD9)XOE zj3g6wJ5}I!S#BXA?8x8WJ(MFk4^+g?I*{VYKpRd%6EuHv?Kx`Sv%hj>C}=Kcp@pdE z?woX?J*%#`XQ_WJ={DtV*oJW+nHFb;6W(oYW7Byc?CSPF-IBA3eB>NUnfXrmX^1Fy z)RZUI7Hm_B!&Kn>BIA_|PAEg*wYP{_myw^f*ceY}Y;!x6t4&S#tt`ZHdX@-H!?u#K zK;?K88ynZuyOclw9+g)O>TFA+E{p!7I(@ImZN?A}Aky~@0g+cbdG)NWEa&__i8RL_ zX-(bAe^cQ2rDzkgKsH|EZ5@5HRyL@?@?v6bdj<6&k3uCg?rBQx85w2z{KA-`8T^= zsYBkh7;*tgwqj_(F@AXnAu=-DX+!9!=C4sPTz99}*ZNMoEvtd_ko2Q;`Qmqs63BHx zvJ%tEo|0;+)$e5OsMSo02L{oSZfX*`$(45VJU~$S%TgaVH}|~WL%F`!KbI;@LU@Y1 zaxo4HA$9eAA@OPXcd?ABUfR32dltLX8-UxEiZxcw3BuV3sZol@hg%L55Q%WmcC9v* zH94||gk^;295TC0m>r_^@k3Jz_W*(u!;w`DG37&s}jhLg6GveKXSP zk;~=-37g@F;GT~mAY0*crKcA*@fsNwl%LP5Y04!9lLU9^9;MP^B3CvxQLI1%9;K3< zx6bIr9*)wqKEtus0YM9LXfA!r>|BIxd8>AcnWLRuk5W0QK=Cujk*sLIRs1%p$!?)W z5y;SVS2iEDap5B7{dm_fU}tL^vg{Cx;p*@2kAal!VbkFiDW5zg3IrdS>#7~--M=Ggk00^=U`PDlH9 zgHvzuK!_K2<$|jF%Ral2<;rC<2z>5jW_n9K_Nxk|bGMpoVJ+jDU8G6McMbZQg*N0D z1riLN!<)W8A_thS7bISJ8uMv*nEhG&m0VaFGB#y0#qnq(LkE*3h%+Q{yrThr4Ttyx zyPP4Qz9)p1&6_OeNy1s!JAenzy{sl3`f}vaph6;)sdhA1DO2P$)Vqj+lFDl(fc>Qn zfg2y)_-;@e8xO4#tz#lz`Mls2Ugx?AGNRPo6SO2LpA}O~T>NKANhp(|*TJts!hjRy zcx1(RjSu+{L1XuKNqUA1>f+alOp1gr+1S?i_xl^Lyp9)Y2LKDlv+!;LB52?qzrS|z zGaz2+K$Q|2+?nH}1>+RthkN4#a&_4~4q?q&nb$Ho*+lyj(z+AbhZ8kyJiOxd)2Uw) zS2waSo2D1U!D4&;e;Y{|?c{E4tNMJr*K1Sq1F7tZ)>>>XKi8KDvga)dF$liy>O-uq}vLF<2^ojq+-}&1jhgp(DoVQF@`yJ)H;0 zA{5^SqlDXvCZ29r%l%lm@V0p|oq<{lia?g4wMR!2S6`N-mL-JV_ZOsO`gl; zANRoiqlH@Krp*}9#KSHVw+y@4<2g~aI>xv9;et`}OUP|np|-PS z?`nd|%FESp0uI2W$-L#@F0 zOa?9-i=*@m-=dOX)e5ceGR)+D3v1sk$=v0Y6PMqNDEmABe@I?YNIF+@4Tt;Nc+BiC zxBAxejjiIvvUu=g#uj2B2nQy1(ysV>F6FvtOM*jZo>wj*7nlsW} zxO>{lYP5)hE!+Hwmjk@7M28_WqB`|#r-14j_5fe`4ZPh8{G ztaUIjyd^9vn~>xo_th&;bthy0a-uR|8AnO8k{U=o724F!pI^PanuYW1U7Fl7#+tW2HlH*p?;qV^R==d0<5wD71cH^4%0~8lYSbmJ z-LwzsyLQ>biEfu%)hGN{frN`nDa}NO!5H`}tf4Wn}N zRZ2$?(QWN=X@A`z0jT;zfF8oviCx>dBH{)Qy9;jn>az|A2M*m z$${6W%)ulBl+L>~QX@g}?)P&2rYIoPrl*7R-J&DeT_a>C&GOIa8-QEIzA0(Nh=~(_ zOCD;^TO7BCIHlPFbOs-^ic0BtbnE#EsP`$k1)kf(_&hlof6g|;L^P^NP`)C87%D@HFZ?=xb#bNPv+p5TP_V_li7Sgd?>Y}GhL*mhz49%=M zweui${hJfVzU}KIP|gg!ruY>x#O~Z8a@P73>M>%0k1b-#&+O0u0A17g66tREu z!nj*M#Q62brqm)AKZ@LSVcNtEKqLrX@dz9)WqPfTp^)= zI3G`~Jslr6-E(A+S}(h**nPD)tA)kgt7b6@4xe~ z*xs)qo$g7-*%QQPgi`d}t+5y)iI2A5sB$(@6WNREL(!vZfj$q;W^W*c-(1J8%1?qH ztu~)VK|;SH@Kagu_NgT{LQ?T*QLoV<{R3qsB~chbKCxZT=ruyyKMTQ#sHFjtJTL=g z1TX0AvVA6z7?rzwP0}NaU*hB!cL{naos-qcD-o*x_KuN(!4$*S?S}xfdB!4W?cn}6J}UD9$q5?C@YSj-U9ID>-atR(hZMcLBy-+ z>8_~y8AwCRl{2_1iXXM*c2nK$XrrOL zt%zbhFpmCfL_`5{9Y~FSx$u#dtMb>ndMKB176l^hT*?XF?OK2xk}b(|)n7;4FuXgef)L161#*$>b%My^(DyA> zj*8Fhyxo~`i+V8leY%@UnTn;0W6bc#tcT0l22BeCH@8xCD1uC{?3qby4xB_D<)+Jv zbZ$-;vy)a6{=U2ZBJ^A{%;P%gj-b=SS6IU4$P%52;k)7>x8B|tJj1+sk3q|PXqB>t z!CU0&-%%Ui8Gc+ojvwSMTRmB%7%y_9C%I*1NBgL}y*s?XE{=Wpt0vd|j)_86HZmO@ z!og9=5ol43TxJFa`Z-`p+G}TPW7GHQcAt5E>WuVrSbJNW*1@QUcUYy%_CVAj zU6;|j>;6>k>6I)mT_KRrf}bS7({cjdJvA745JqD;Zw z)2hhiWhQ68I)$o|rl!yJ$q^=#0hW*t74!QR^L&@P$*Ja$(RMo4Od;I-jw$y0VD~Qq z5itdJGlJ8oEJO+)p*{yz^u<0O_xERGrb-;v5!y|u;I%>0 zZc%P@0Az_3yD`^;pw}-~>HcEnl5t+g_H$V~OSOpBE)S$ib(zKC{27UB9)U*#mnTjE zAP--Rtw3z`ba26g&LSpr@auwE#4o$Q!?})qI$YTTt0*YhEwTRoRqGV8i_wiyoid_Q z7Z{25V8*Y+e7)TTxQ*N4L0?}rfg~SxTdmw+F3k804Bto)Dujlg)7f(u8}gBYcrYR7 z^!T6{L26~uM+{(cZTOvJOBAqr3}GpU`D?PEshHkrUyhY==`~qSl)f_sfDAs<7emMt z%AOKJ5P%d`v22eB9gMN!FB+T0tsU&NZ_^#_(nsQPpnsC?I_UuU#mCQNhd{jCPI~K> zJFbfYYRK6P^#L0`-c~IifBPvaGX2+J%o&k3dE{ICatCm|tPhzhO~*TG7Q&TPLBfif z#ZbHOQc^=--KO;cTVi`qO>AOj3C)Hxt&tg=vrQox=T&32vkUwC&#r=P70FPIUa*D< zhc8#Va0lvOesQiHP3I0Y^e`;-ft6|T;A5X9JqJFg#0+GgQgv?+uny~3`1fG8wI_yP{ z*0QIO1iq0$+`^r>A|s?sJ8iiUe)(UN4wYn=!5NBeBFcP-w5Bh^TEEWU(VA?Y zGle4%xKqCLA6eReL?9*NM!jl^3yaKMnhNgwFVlY@ww z4~?4jaJ+{VQ3!33~$IB98imtVijYwcY%Ba z>!V4#akAn9bu{rVAKGpze_|03jKA$5ksO%oospT44FwZ4$YSjQN1ZH%i4~V+%$IuL zc}$<1Ip{hIEUEuCB7)Eai%t_&_OS5lAYF<5)6@)$j+Bt@nmOCv7W!vA13zf{g$h1= zOh`Y=)_G^?-y&;h;vH{}AEemiAO^mbe#hBGibMk_frR6spVUEPsAC49V|QzUnh1PJ z#syXy$~BItGH^lt-KLcOZ9z$SX(+lcPA<>(c>bjuRt|$f{shGzI(b=aV6i5nJSyb; zB3Iw91M~o=iRT7DDmZn-aosPI9l#X8@A7|~?s4;kKCQ29z^eVS&6V(C5Fxk!Za!BS;&paPc9HCFr020pz=9*CF)}O~VK9kHQT<{69MRZ+#6P aJ(LzB^E*4b2@TweZhQ026eAG=ZAx?<*?$~T+bBIzP|gletx|oS65g^R4*-Czvt_zSBsSr zX)VovN0X^rO7lS;Ckyw|s<{>X%M;hmAH{^!#0=^&s)Qn*o*g7_P_{fM z^%RpZEw_L4Tu^;wm%`Iwoi&Yg%{0$<_=P|?sc7F+3dNC~zM14mwRJSoc$k~hnmSL4Ju?RRiZOqQ#d7#qz?V-;9O5>4&;Ol*iVZ}~}sng4bv$`fnNza!EzsU&EM zaC{Ze_&lnY4|$namJqY-g{F(+VN!&0DO=(1vwa5|Gr|<#)9^Wa2MA`HYJ?7i* zn$2929_S@J&|{wTe*N?*7R{jSKzGR*0xQ{BY4c0{^eXk!=TFGj&(_{`^)hjq2`DsM zR-$&F?2C+GiJai_gO03ge)xI^g3ECk92+t?BQhV3`%&ddoZTg(x4Sw%e}N%~W+Qm_ z(nm7}XJPmKURRKjr)`0MNU3r(jH_?&Q0}-WG}v^@5$u7h*x3@lD&nmr!q*lkgBi85$iA4 z_UQ6_K%<1;o(2*+wwbO4yG!Ne5_j=`4y@rN7J73I?mFQK{i(XN5WaCy#M;vQz#4bz z$Q2lHE0jp4|D1hki)QQtsw>mjL%&DAJ|;+6tI>@>t32_3mR-et#DtnSeccSq?|Aqr zN!Jb^uYw0uc}LuT2*K;{M$CTK^k;%OqBGdb;vkc>?o#(J4op_~LaS&~u?hrY2fb31 z*Yf^1a^^P50}AqGBEoZ|GbQWy>6& z%tEBML6?zzcBny@a><@jM9~DgOT>g@7yPw=4qP#-|P2Z zP_~hfcpId-*3gz%MY^FCKW8c4%Eo-qA%$*+6ni~+;#WP+#ToHsq&omSw{n4DGb9Aj ziy_sw$-s@o(Q9e`4LLjk`W$KTGU-dIA$RcI9EnBL6_NPhrWs9z67$*Zcun#InK|IkUC_>}oG+M{D#jdatbL zifTwEViU8?MD|DW@T-dQ?l;~2X-{#i=SM1Xdk$jbcSDdu5e0CFmlgD6vEhu5#tx3(*n1!sER-EO^w z0z^zv5xTsJibg5holwPMTNR$z!RZ?WxW4m6;1!CjY>w*{T?O$Q-#qt_bm!IO%?-5- z(f@Rqfs}#fC*l9UZBi%Q%<+io#Z8a1k|ro?0jaf7qx-M7 zriR|>Zanx#6m>TP!+A^}ys(ltnHVdophdj3)EZ~c8OJwh3%7d7qeJ~5wfy~q7ebeu zoSh*o0lyeB)@HwN-0h4}=bAPTkz2Hv=6=4ItvN$!QBy%RihQsEdc%Y>8A~*7#$1lB z9A2>eWyw&k=)Z-C$hjmk*=5|JiN>_8M21Jvx`GPWJZ&wM*eGTFAG`?Hr4&Br-h{pH z0%ngtnJ)gE2=g2Pr0NTcIPgACD;OLs$jLcrj0E471c^u;CakS?!#-+KH(-va!=L(^ zH635DsD9i9RJwPd>D~G$vK8~|nXb2-C*7x%8H9r3#xhdIV&8SypM>Hdi0t0YWVq|- z_tNP<_vh8yZ%C#1x3u`H8-*!f-~8~CwqUj!yCD3rhV{0vuAi>&YeK z0(}4#6}ic;-GYd)UsZ)y=kKrA4C8LZ<)IlV{f)ipy?KI)>PHm#|M$(&taqFtJpUsI zx|>`U*4>`-kDUKg7@j~pis~RRgJ&XN#JdU})rRq6KwP>X-{AvTPb;tc%B_~iLz1R? z{DIjc1OoAEs56V3FC;tTAr;k`xrN`ritUy$X$pAbLmY#Si7*QhL{af58(>TIHk1f* z#04;vi`Rw7m}oS$GnYCXi7%KDpm=1j>ipHjEg*g;XX~qlM^Wp}lXDykU|GAQ1gi*kJJ)dq!8Xo@UFX;a(O`_tv9Et#gg!o&wZ8SMUtdZpA zNxGH+;o(+7M=KsuFwV3+Tr(ZVn^BVO5*Q6$>JTF20KP<(kLUBkg zzIavlx2y_qDW9T#!r#)6FVC>PllW2{#Q?a8K)fhyD-$o0xIf%@fN$&F_Y}u*jX$6$ z9ty;@TZuT%Iq*WN-%S6gw<6l}QuB!02tU+Q81Nz?-prxZQ9n-G-%1n8e2Vgv#YS}i zZ^eYatp^3@)=Cqq%Ch1=VaUV!h2asIC@QE(f7Jakiq`|sFG%~HA^#fxtw=W|HAMx3 znxH2{#=%j$^A{d>{+RKF{s2}r%36BI5qt|!G8G~-apcHz!UuSd`^!wTtf_H;p#ap#}K`w6(FWCKv<+N%ebk=<-7FOR8X=kM799h%Z-($w?AQ!x$K!lgWQ znbB*-n?I_CJ+B$K%RpsTmc>0D)K;>Rt(m#}Q%K^@p5{N}?xDQ0vXG6~AP}&ObF|Le*oUmpza$c%Z&C(0J?wH6TefZ?TU1VZe#aB< zR1U8v&W7=~3ORd+hv^6j33+&U0yGmf%KBx2)tMEsKocRgJcH3HaYi^%VxH<-y=?8e-@4yyZ}DmT!UWKk5j8cFS@G4e$pJlgcGfAwGtrcw!!v4- zoYFd-5v~t8`e%JuH|ZsT z%zE)4IeYu^*$?5-A#}^^(TIdqSTRz4;W4 zyl|=cI??Pe+a39mb5j>`hH^O%dmxW^1+iAbkA<(0)vi+-R%BT;b+o={dq!KC9(IZ@ zoHQN)9hWrb9Faz)qEgOvMlVC%yX?NSJ74!=J~WN6oKouSy{I?+*Gi@&JpomE?{H4i z3VKSOUoY3jj{Q%Jef&giELdKM z@^Y|3vE-BMu&n{t)mxr#G$Y1Fvz zmceLM9~4j?)E0}`+Yv^`dMqsXte%qH~JN5VymGOsi>?>M8PV} zv%S6DoMQzn?r#)B@V|c+d7e{T$!Dp8L^^>+gGiRMJ9Sh};uC!@C0f}Ii$j=WsOE5? z_5{H4a&HBc?{5X@#I&y+(J|-7!hf4cQCdl@-2OXslJT&2h3^q%W${(k{>U?hgw3N( zd!A{iB~+J_*~=1-L>K2}&gmZmms@MWk~R_U_B%Fz0lvL=0Nhx7YDI6(UrUU*ilA7( zXGpt!cOU?Xiir__)bi)v+^c^6M0~~k(A=++F_JgNUk;CW3b6cQsVN8WlIA%OS&?G*Gbz&gd# z`@XZ+k8n?;7pNXdv_Kd4o<#QeU1j*4WYh2jY;W6KDldaHbaV=}babu^mD5MESngOX zCh-TuzI&(=l__pq^deD4nehpvc^lppj4A}r!=K*StZmVm#m2~DE=E_H-5DPzFXZ_j zN??I2_1P(Y1E443ba2+Q_2Gugv#iW6b8){&+N?THBz|e0^g)Fxn_F02dr#86DQHQy zKF+$Gj))>h7xxQGs-kNc$0FjvQJ9NQPTsF?oNG_I(* z{#U$rOVVPWq+|tCF)pGzf^_9HKY1``sN>xpWqI2}cFO?XoVS6;at3mxi7T^`+@7?a zUB8Cab4L;9X?vDBvq1 zHJ_GlqlCu#VEQkbNXJfA#sH{fEX_!ZxNheI?6%GG_+3(zs1H8~AN|jaJ;Rq#^Wm=| zD3L0Bf22<4O#MDGY`luP2>Y#FXEFKe#gO{w(7RRor$(5OMOJsrCf|(j%}Oh=W*B06 zZCvOAUQ(4C1*5=hxTvg0b6p*tMAI59{~>b~CrLra+1S4Z%Ek96P&P5dnPD%6{I$)2 zw;PS7hS!Omia3q4ni@HY#dj{m;H!YWfh9p{nwSv`{J_ zW%y$M8^1XBrpwQDBd(}2g66RU*fAKidG})=4OJoRgEW5r=4%-T4zJ(O9!>PA2;@G0 zF5~5S;BBr%{i$_ho%6*an~{3Ofi&$m(1@Vl1tja>4QH?*R9;uSCX4%l3aJBUIj-Y& zD@fh%!O1;&%w{bM3poe*ipK~4sOFr=fcb+bk%4HT_m%};bL3W`%Gd3*3{ISJ!;AOH%6RRyn3a^ibNzZ#SA5m%0m z^~UIUSf!zV=EM+fNReoil6G_y<7#y5YMV5!5Up`|Fzhzm=|U+J!#}+zIOyNA7k9L;rPKoL(?;5-Z6`v_Ak-0eN?$zS z)~Tr$bwaE=Mkyti9<;d(PeRbWvWh?1>{%N5R6#bWfye8yF1-QWnax{qbgYjIHm#sr zR&p1_?X}+N6wJAWfYKAWLG~5w4b}ee8z&~)f3VrHK|^%H&)7hWk_W)T?WpW8OF)z__46CynLkz0nN=Z{x%;F zYSl>(+^T4Mv3gPRTE*JKD>dDv=9*`(VyRCKO8lk$U~L>bnNKAo3qIF`>g2Y{+dBDe{hXUE0_~_`+ zl|9_-DkAprj^}Q~R%5}rfxHZv$Vry@2ddgBldk8 zKGMW4#TfT~AM-e2=&jpR1_Mh)*-J(%3{?TFrm1;))yKKs=b%ToHDp4}ez_Utpptpu zW@Brcs1QbxT~I(&5qyxn9$nhP#}=F7!R_8)e6Z~Y(*ZW1Z!od>h#y(b4xbTc$ecRpN^KMO*P zJacV+wkUNO!KK>tn)Ful5}fXphe73919r#ZV3AmvDA3sueRfr_$L&~#%lX#&2Q7Gv z7TndL0;2_bGM1(UMJ{dk&rd*g8oi|zzQoP@7V+E;mi?Od3uEak)8wr^+MioOXUZW7 ztuzCTpBDnG(Sx}a4gOh2#B+Q7$w|4Dd5W${(Q?P+2WQ10Yf8Yj7-Q<$m*dU$Co@|g z&7GB?Szq9%!p&#J=e2Lao)Fm+HxnoI;jSp2O@6pFndC)fh_Uuc&TM&){G!n?4uOv@|8#cG{D>R34Y~+iMGF(*2P2%-#DV50Ag-PEaaASj@_N@PnrawcGbl{neTK7ERh`{o> zQEm&rq3!XP&+W;1geETMK7=L!312tW4PB9+qL6|09J&BBqPiINV6Erdmee_iGIrtj zn+7~Sf@6oET9n&F#^d&QE){CfTA2xA`%Q&Tu6x)|89zOgr<#bcpI0bCVwPBcljcxM zpGaFKLI3vPy`g9752)?@11ez}{r&xkbLshOnX+%k@S?1qL;7E8vfvlcb)T`_!LD=r zo)Lu-8eKh`J6p~+@W`!j5Z1+^)HBaApZw<%bTXwuuJyKN?UIsjz0by(+>Xh=w=$cp zNWEoGIOP+ZFRAe&A}|m;m(dtLm>eH^2OjRtJP7bMaBb?ZTzQ=!KQjx8OBgpmdXAkZ z!+gUevqTdD4kKUpC%%NFQ$0Oy|A`)M^(Y}5J1rG~mdSuBvB<2q?rQH?19-%`iBWHr z%1wzz60X=&`Beh`CdDO`G~1P${^hd_qO!x7DfR=t9sd^$*ZSKoGW#rZV0>1pFzp=< zk*ue5G;yNw%TLVC>>*Pv!(UU(^fY@J?u89_91=Y-JQG_`V3U_Gp$UP+e*e*AyeKYE zQa_7+4X?-=D(w&gNV+y>1aCW#Y$@1#OoLLsFA35^oz_P?%hnE}sr@n@(8h@WMxTti zgQCxU0{;ovCrDj1RkC8@i;?wT-(~$GoctlH{MI3U6&c3-TQrF&)j!X=CqmTp^BCIP z9dmEzRDB11;MjQKQ-wWAli7h|3E$&FPkA|kuwPgteQy2XsUXZ%GTqAl18#ZZlO3rB z6xq-Hmnpp!TX$&;%Q%JE2v^a($xJqeoKU~T;!9k0-ld{UR5vlnuC%;wU2iZw#nKJP z%lD3s7x4!@U#{}JbDll(=q>P4ph^EBU}xP~d&(5^!AAYf5Q9-({_>Rf<+(WEAyCe_P+<1()pl9PI7J>c-s6>L9Nr=;=c`CpkehiyC8tR-AadD zXc#mY2!$Vk@Vzs&$UWhv+#{~JKYp}+wB*?#wfxbZl&s79`0+%a9;BBb)j<@)=X}cj zAq%OTN7IMy(6gvSJV?^TF~Hw6|9b#n8a8x|>)SKt7|UznUjwgu{=+}1l)k|JgH!%r zJ8sb%0qX)7$O~L$trfol0LzF@5Yhznc5hq$FN^}5=+6KEN5Ef85J?*^+(t8%DYnRw zyFQwn_tv+5knx=xFemRGnqJ7~)kw8u8mngTvzvvCg|G&=H3X&ZkzA30=XKlMS;uxV zzf>dRnv znMl6=x0W&W+J|YW{z4o6y#s@!;_8>f;OcbZ8kQ{#91D3x1bO8ZuqQ39tWGK=0c;?m zWne+tE<>0CWiCQQCY;0JmO|shn*QawiotX^cRWsVz{UpM-ZwC)fTm}M+kNQ~OdBmc zDqaS?vBiwNKCaIFcHCSz{~A5C>DVBIvQ-kPHV43?_jX;4*Ji*;RC>m7zeV_S+241N z-<*YxQ=jmp2s3fP7=lkwPj zHiKIBH$OlR*l4(U|U!;U`G_f>ImDz-6*7M&@ zBGCy4JR@Vn9@HtR?(9lZuS3mFMS*S5CZ0(ttK+*Tk#O}t*{WfoSap>IgX*RQZ>11p zd_jtahK5?led{n-w(m6!Ep3Fa$}`YPS<-{G;pqPBfAX?ypwAmURGr7(2V+ft8k8*C zjkF@x$qmJ4XTO;AKKrzJe{~^;cA@E1;Fryri{`wTu%E3q)#J{p8ss9kI(uUb9WSTb zXk}x4rs|S~*i*`X$(M4+Sq7l)h;GBvyf*%y<{gP?X^|x*yms?-}&Q!4F`}{YH|~inIQgCmZ*jsXlAH7HM_j+8H`ea=+;a$TzHaqG)ET z%ooKeIG<9YD2D04{!!&j-R;^s_#Z8_3@0wo>h|hCnEsDqWmT%1bkKGW!IZ+=vwc6Mz6+joscwx$`P->7y$$wneo)Rngd?*!xPd& z&brh%FxQwv*?{b<%^7jm?FF@d&5MMDV8QMRMVIQivtx5La%DgF%wlA2t~_R3J(9|g z6b#x6>jUr)E-rjxN>;K4zM)m8@F!+}vl<#0#6d7N+3Kbs-(bPK4Y>@C7)>t?*G1^D zkE>{ryuRph@A_~*Acmk?+oQ4!9FpZC)#Lp^^09+c*2R?oU5OZ$S!u??Q|1Do@MGUY zrJn|_v{+3qUGl$gQ>RI61$mX~uK+;Nbnscte5ruPS5AZW7q@xqny(!}0lPo%?|NNv zd!kXY?N6k|$|^>El9wJZce)&%oY+iv6a3K*7oT;@W-I9uDSl@F_W+y7`NV7K z67drKnlv$lc@~6Tpt!>cMPs#cozj?ReydUi8`;JkS`)jAF+q>2HBYb)_gwCOTKOPk zUN`4FsZA*!p|rEL5z`U=Zc`n2%Iu}$&hE4K7M7cg5M~sJI)l+rJ;gU zrUn%iYr-x`Nk~RCE2+dkjm5@YuYQyDZk7F_dADe%YkB>-q^cMm2!KcFwMhYU_g_N7 zF^zD0oOPixvRpNaHkkpg+SC*T9w-N8XE`{1Q^_CC~)FccJ{RlFm>jFh|R(Fsr( zJs@#4k|OVEy1j@P_F{o1y>L#`bkOkqvis5JUbL*g6v1aI&3< zYM{|s3UwN@k*fGar17^NTvq8;*S6gPvHJg01IaD^@(vLZu)onDFSGW};pVT&87<_X z=CNDPAo0iKzfa8$8`U!ct`zgnB^VJ|$&hCX)NfKqo@FVaiR+i}vkrBR(N_j5$Wv@KIoSvh1@nkP99`k|P z9zhA7Tc4(}sr%=;|J*ueKf65?Q1m_WWX`&+m&J*)i8+*O(to7jpQ3oeQW(&yNgg2j z%B%7_w($1t;+nSpSzK2#A|WjxPr4@m&DXvo%N@_|S{>cjquH}`- zs*k7a%K6AN@X2P6%?hScTl8P+njxmL^n-KMh)h6-*SX0zwu6%IGU3ymIc@iE*Q`fE+*h*015oU`0GD0?T-;}qE>afZ7<%(L(s zghu`5a=DSLi?6D#nbNB?8w6>YH#%M&(b3A#mg-iQRMC}Mj(J6E>z)bXPdI%sl=+m1 zQjVP3NlEg~@;%>4<~f+ZL+J&4sP4mBwdRtiS zu{#dhrm&CPj%5So<(GmpW$uV5C41F-5=&#R5$%6`3Da8RyO$4FJ8MBMav4(a+{O1J zkUMwwM8^StEBu)BJm(!Oi95GJ-8Z|uY2NSS)%d1L9qpOGd+RN7uv^1x>SZQMKzX*( zC=Hhy7rR$wj+7LUC?fs9OQJ7HCVG_?G#n+v7Ph6+`tA!3^{8?P(WpM$wOwbg!{d7@ z*VCmy+AKnYrz$oYE>^NO=MFl-PbJt!q#SMWN2ap&)BHW7!Q&OWg7Xm~s;Y{cupvcf z=|#VdFtR_U9UhN$YsN-k@LaHJ6KRKKYH|5D;X7mb#WhV6t(?ogN^)$M)`n}1XT*#U zGYh%~;FW9uHUtg?M2PyS4F!fpKqt+GKSnSG@quv%F1PK4MA=%qA@!DxSd0769IxO6 z=HNU^=^O^oSsI-oTDh96KL}uCjL1n0teNQNPPg2TspnfV6ae3KN5$A$cl9zVX7Bm6 zMyR%K$mm}77?>;vjIeppnVwgNnaIu_L-{zt2dwHs#C092TSJ8u<=~ z*|@D`>qZ?u-1>5^Kv{dn$FGJF>$;bc(gA6^m!I?m)}~w^J(uN@DXr+jc6z%?dcF+t zNY1D;8%`>~#id{$KM5eqySm?HPdg{3U^S=AHFctGydRf5I+eb`1GrWBHExbzkPP$r zgb=xdESF{J8Wzx9)trQ68Tq6Iiyz#W3&Vs4169Ag<*p(sFz;;s}>vYhNg*kI*2x-q~dNJZgI5H&ZliEM=5hfl`TZ=qe19G8JRTd#WF}8KCpnA{z^G<^%TA5{r#HA_S`R-4 zJTCt(hAI}|hjegDk=BmI`|j82_I>!`XUP6jUs=Zyt`?2r9I5Plx$`{uhcJhYFga3O}ehh3cc$a+UE$;ZW<}i z+9fTgDWlN&qXaKmAyr1D^hH0Y0pMpWFtu1zXh7%c9k(CbA{903 zf-Vxq_{@*~F$42iT1W;qr{$!!UfII3D))acdocB7jbLhZ;$UxuPg%m{4y0%oJ!_VY zD}k*1Hw%pZhwB0}w5qoE#v^RX_MV#CMjBo8-rG)(Ba#U#yW02~SO4gzdC=tiG5vKL z+9?Sv&2Ra%9j@>$eN!O*N5&T*&QkNCvk+a1Vb2Vql=C^X2JAky9en6?I@o%>oz=CZ z{kL*mlHYAzbz_!LO zi=R(dE=o6?A@Hue_a%$PnGKD%=P2{2|5&uU2ltf2+}&FHXk~Pj!6f9cz+J)p%K{1Q zt~2I;%11vnhXh)3+#pe0|L1kcB<;^H7VaHg2{Qawb4ZB9ULDXaW6$eYiH8_0lLl&wG(x|@JQrynC85kv-P&arH#I<$8hlXbz<^+XW`^Inp85LU z=-&seS57$0MOX_AkH|Q!Fe-BA#o=JutXH%fx?Nw|r*THw{9{jlmk$abd*M~)AF}QS zA)h>sJ;MT}GwqBv2)2HgR=DW;X9!pUcD>#nL`X^is;Q~T%FoXqKGh%~YZG=kS!=v= z>P33N9;sOJbe0bT=t41)SYbbTV4*oKIr`$57_EKR;$I?y%|IGQ{7kEV`QoQo(=Ip( zhqM7EHV)!bE%5 z%a!pz>?-!H!nRN;@FhMGF-oMFcfVT}iug4Ozoi>w?5{L%9Lt}9YiEc+z$nQ~HP1o) zIM?%kW40#Mvm>LUfw0zVVo6C!?VToTl00)d|T)OUBak`z8Bwna@h z!*4&|GmHO`7FGMLS2|0T9<@aBBsg zmA#PcGWy%_^8dhIH&{+)X?D92fN5KpZ9FxL^H+Yp)ciM($wv?Sr0Yc1RU!L&x%nX& zX*qE-Jh2jqV5@1@#!?EVa?t{+u%8Ase7WeoDnJ)is(non;BlDG6LF3z3DXIykum=h zPL-3B(_x!4zxTxr!(v4Ip;@ur%gf7jqbI(oq@)AL`!zp)jEaaL*>m~uf##!t&M7S5 zI^C(9{PSnRiA~jlTJXNtj&ZHG*f%=5((+rut=DYLx4P7!Q4#r;DISCX+iqvz@R|A$ zf(CMtI=JeKW=oV0gDL`dm?M#cRTKd#?#iHcPtLf5}jB`4qVM#xJf=eVy+uhd)69Ezm3K0GvS2Z3r9$ zs&pDPlrPtLBq(?RQ0SaWU;Z*OBycI{R-z_hAuQy92rr}<-X5iFXC@T<0D~Nd9=IUJ z=e$*=kO5140RU6a&dv%xw1N6%m-^UNP?SGq5HL8Xe{hhn?U?wB11gL$pce%`z1_z7 z+=%wEE_+4u^<9t+`*~Os{Hr5oji3JzZQNZEr{DHiF0(+~?-bZA+b#LB000;jBDNf2qw<6LkB%X0?YDpd!kEg47JhA2tSA z+k@t|F_h2tV+*71|8KYf!|D{=a(!0LX7Qx_`YcF-b}jpQr@2Yg6H6Sn33d9klPrCZ zKVEh1H~dtj4_dSDaAJH+Cy&}hAina8nS*-T5(S%xenN;KKD4olgYk?L0=wih(({jY z_4$-yRQE-1}?vpL^NGdjCxOb>lAcmv-1IFpWP!L}v1UqoHqvyWb=2RuHj5>$4i zDP0~x19?+gg|Yq!$`=7xNBFpX!<_TnSA%B?AwGAv(*g{D-{_2b+wMF9vV6wT#^AS* z4A+dkBQ&!G+6Z%gyitunXG)B;CiV9oxSmW*U&*3;$^RZF({%M*_=ktI%!g^C!m42A z=FEe~l&85_!{4wzhU@?$vT}yEf?B35zdrEoDmCZk=RZ1q425p$*YrcPP9TCo$HV>o z@55APC(itxm^5;2SxyaA07Ui|q5u!X5Wr7N80t5!3NT;{i2IxG2-=OzmtUgj!n#It zRcb3mVGsd8irXk7P$^&zCO1+VQh4xaBMc$kJHXdawR;tMVX z)zm1KGjZClUt>@1kUKALU1-u@XZYG<%HG!tUcI?^&XLX6e}}B@xI41`XDi~M;U1aX zX+PxcIK-=49(8ivZS8@@x9NYYufK-$!|oJP9^Wkg-m##V7@c(~cd`7>T>2h9<@T-5 z+YpmL_lp8|y3MW6HkI10#f?$?Drv)fR0eNnJjw+cuCCU$Msq#U$imSH&lgudr=viM zyQTRU7~o);_S0_*SmF`qx6kuXV}L}58fDBd|XNDVy}5t&++sr4WCZMAG26l zFzBVadUszUUwmq6#MHmKxT#Gs&^G{FE3+qW8H_vzo!B`6f(k>C+GUiQs{GQq4?FK_ z&6QIwmQx(86{f60>J1k5>c|p}R`|PeXV$?;+(ZfxR^=4i{s)T}grS5jC&>Pi@^;%S z=OSI~sHGyRbYhsWYF=0s0dcW{W{N&Yf^Kxdu_f}_*yogcNSweM zX!|?;IDTE{3;;1$5ge(EVNc)Q#-q+EF1~GUZr%eFll3EBynp{~^J*w=icSbLPE^K^ zxn;dmaJ7i^dz(?kkdsvjD!SH){&*$@v9S&3!Am6kf!Q_D9SJQd$*r7MX=~Y{6!*vJ zX~LDX3l0vN!X4$O43$nLZX336XTmWR7!VyT$bK6<)p*J!Iu+)A#`Wv^N_~0RLpcd* zqb_9=Gr^v6Ea;sLoEdxXvDVzrE4^Ay3f|wpA5z*R)%!l?ET9w*`JDgdp7nGq?4uT| z7HTKi1a%R-i3>PIEH9>q06_A_zkd`B#}{iQppPR%`TDY(hEN1s1sd%g@(x=p_&xkQ zM2os-uM&0J)wd5iS7SZr(i0IG`OD(~{3gYTm6x@-$T91_!Ga$-wZ^P7n!spPX8JM5 z6Y%Yqe>`Xx10|=QfZDt^)5A1#BMz%GG1Rw{{(z@es#~$Gt_>em&DJ&5*&OgId}l-F zLJxS3hdr=2*Kvsb-#@h<{MB1;S^#P>fzKQCZ*FI4FVGEQ_;eVU*y690+-io;F$#UQrzwEX?OtS!Ciep7ujZJf7CB4TFYAOh zlIC`wL0&z=^(i4#0b-8%=+|f$ezh%i+T5>^iPRC`)#0T}iyLJ{*MoeU~8U83Itj}Vux^hd3^z-hY&&`$8|v{hO`3r z@9gF9z%6S(jJrJE_N&WuowV9bC$f!Rx@WvM!OJJ5pN$yF)vMi@seHC}QzYJb2F*K* zz$NS&K&i@ZcVgrIt{zGqD;jw5C!D7(zSD)a=ROlvwzfAAkxWc|Ax<|MKS+b7TX|f7 zie5Nq6J_|Cm}%^!|DF=TO~%XK<6i26r2eiW@j3RVuRaz8BEkE|KS_1Xf$|rf! zew*mKTbV5<*`-j=O6`#)8VCtV{=7)3|2XA`b)f{x#iETO{<M zXeoV$57M3c*fZFtkY(0Ze{C)#dX{9M*fl0HQO|U(Q@rfj;Yal2lOn10Xv5~(B)6Ce z5F&bBu7)LYXL_sdUTxgFo?cg9N#}PAtEm9vS3324)6nkm2FzAq*BD{xWJw);1Cf7S zm~8RXC;qB(FX%lW!n5)So5C@E{lBNr>r^i$0a?{8*Z#e@A8^I>y-$oaMH`#Zez+S$7%sByi?(*y`rEX%P+7PJin~&SU@C@_^=&Eob54K$aGe`k=CG+i`RHQF z1!g5ROTm+E?${*uhN=X0~q$WvztB&9?01+hc9qXAU6~Gf#+&nUw-#;NB{0*p4 zI65*{x4q&T3zOS{l+sXmeWoop#@y&vgC2vGhX?0a^2dw%@+zPAL=amsdrkDt`Lp?9 zDAonhFUSYf@@zhBXxh2OfjRo>P?u6>hQ{I4u~JMt}yg;L2= zhDb|wv1{_Jz%gQP%9MkTkRUG|bqWa#_FUz6VzFkTQ*$!BAMtKOazFrgGa4(46<<5W z?8VBpYh^i;yI}(fc;RyLx;!ULdRVywl%)k~xXD|%)y3~C#~I}?ZsalvUWRY_0SD|H z0fgw|Jz1xxujLgpU~s{BO2?d*-5R^FtcDjKR}& zHVoaE$ez)-u<)MezaN<)%>wz&%?nv}H$M&36e8LUx_<)!nEf9@06Fr-mkThZvsw{F z#ZhW)P#uubz-b^^NJT~EKC9D(KpshGnVcH#GQ=f1mQm)|^xzzE$JW$}bj|;9xFQvV0UkwBcah+)R?oTV` z1?I=2zPcJJ+fj}hQ}vy+4-DepIe3P+E>Rr_!E`{|GbUgE0sceEoYJieIgLCl74ks=*HlB5_?aq> z{8VWf-go6zrW%cV%*CFceNy!5Wm_c}X|h*T_)xTI)B~OYun0wGXJHUKx5w}E>GAR4 zjg5_PgN~TS7?b5zKiyVe35&th(9CjlX55s=ynX#`LcGp|yHB84-yKmz0 zfCCRp?uxVo!SaG`Yf^Tcml<&m$wKcAeco72OHN+9KH**+4Xt1Qb>L4I@PuFe%A+ML z$Bq;rfr8O;Zhcbt_LL&oYgNU)5|ruK7Gd!jy0DIpnn?)<=8aM$+^InnA* z9}Ys}|DEc%y1Ty!Uvl{cgmkJe@Br|_34ut?+6~?8s0d+&UVk=UYW9k_Uhr%d*l?Sv zu6lBgg|KsQfZu1%-Eq(sIx8lB`SNAk%oP;uqwU_)zjGqvxFn4@>SohH|46qQ5!qf~ z3K!XvjyB6T{?_X53 zuSu|OC`nLTE~#U85#Oe=7Vg0&^`l-1CDpug>-7U~deGsh&rYXN*hlROzK=sS@8{f= zYB+P`*}uCC-|dT_6KH&mI&U@zdGLrqO--$5U_kNx`+Kauhw{?6>ywuncMl8q4%VU5 zaMPZz+Io6l*VfjuHX)V9fjxayxtm&)RaLth-wE#DzrS)m???y7p1~CQ#`o%%1*)p6 zN5{wUIlS4uC)@;dE9II`$6m{qm;U}upO~1KegCy64?oa*EBl5_v$J}@EIbiG29Ad8 z{wHZGL&?THZHjf``T6(3AjWz9Bd>JQO|=Gcl_=GL?hYl7M?TtuRE8`l{lmoP{?azF z+GcZH!>hRG{=^mb%YoNEP^P1Efpqb^V(K0%5o~+p-al@HdU&Cl8srpj*)!RVD_l7& zL2*t<18OZe)ad$90G--aHa~F&YQqO)gbh<5z2)|yfy)ebQdyoIpb*d0F zab%P28ht|srtx!RnRYwn?~tarBy?Metz z8pe`b_#XI(qmS4$d}V>u>q=8#$e&PYcqER5$Ay9f<74yM|VXxg|>diUPF zY@Th4=w)fv7q_CAq!`U33y9PGXLFGBV(y|Lcj)0>(jYm_yKyNg;Tw4?Oyq2UY9Rn| z`YQ%&Vr?c(_#)}^WpJlj+QaCoJ^D-j(aO{HxTJ)T4W`Dpjk)N$x3!^G$COgF?2q+7 zExKb--$oV}v(@06KFgilwrrt*-FuRUEj4@!aYd;8{cuqxf7EQL@PBdk)=^bP%^T=T zcSwhnN=PH!9nv7BbP3WSos!Ze-6BYLcStwV4N6IO!`*z}_gi<}fA3lXukSf$pR@PO z-ZS&eGjsH2^ixBFz+y^&W`|UoN!?_v!%qY+Csbo^1TQ-q(cVyr>JG&wecep>$dO@w zmO@_8n8SIsbjTGj>2(Q?`LAl3sIH5%AN39B7xnO!>5t#~qnK1HZqwHyD=7D1#(tdeM6tPDeZF|n!CSw0!7Fs_sX4ae zb8^kBV{@yct%s<8@d~XtQtjy_a+;gsncOSqx=y1c92gX7B?j;E9J5L&==x%3%ZHv~DzHQ1fAYauFRtByTD5$B$QMXJvD#VcbDB|>3oeus1o;np?^`6G7Tt_^hMt^8&SwN+ z?%uopad!8cOD%d|($VeyZUGBZy!8Cp*V?aE3S#+Q9up`5yBlfsK z>x~d0Bxdn8?sQ;d|1H6!_c1vpnL83x?h0G|`APFM4hv2O%FwaTukVMOI-*R&2%lC` zTVJ2>*uArXy|yY__1j2eS2X3TMSjP+)>cd@ctd}u+b(Lj3hF*eo4G9U6kz>z8%c`h&CWdUimoSwAxKKL#EDZce@8@{S%}gyb zf3v??b8doxdX+f-Bo$%yMo~QBFY(HLET5Jdod%w+|MW%`?edMILjV<&8SRtMaK@~3 zbTAwpm_ErF&6!I19zl&O2Hs;l+6%YTE~CHNYVM8wir1y#!D7Q~vzwz9((z)0V|OdQ z%cn;yZmc!L7cqIlZYO`g`eoToWb!)ZRT_377V9*;`R+wwbMxiwQe+JQjo_DKM?3cQOhKeT#N_A`gUwlbkqh-IoI zUuU|%$=6trJSryHov`aDgxMnk4@oqs&`W=Jri^gqcKPxqz1O0q^J5j2;7eSEVQWxSCUQtr zOombSr$jj77uYU+!nYQT#F=4T6gFH|=o&u2Rr-OTpRR7fZFtg0T~4jk{#LvAZR zc*?7ULfA;DGHboNse1Gc1*Ckf9!n6gB(U^l?^=n{;{o^CmU!vb<_;#)RpA|dzb!ev zUb9@&&CHgrja;$B$;-Q6UM^DKY<`TIG_8jpVQt9#jxt$@kfHdxf3bT$L-L{G!P|a~ zH_@P{Enyu9{Lh0b!^Qr>mk_xb^rY)(xblp5OXX%}RGd>mhMx++W-|O;lp388^JT3o zm=xQ)U|zA23PKh^>j8Zo#QgZ^^d8!N{zT$R#UPNAQJO{$={EW@{83ys+I$4(q+h4U-oX$JGr3x{Eq}gV=Fsh` z2HYf<#1#yWSOj1P-fRi@28B_G?bmrn&D-9Si~?^CVtA z1^Dmi5y>O5HL70(h`77+ebD}(tnY*O(_N8@o&9B+`t|vQ9Lwv|tx-at>g8IDGPRh$ zTOFI0%qQ&Sgc8sCsY-belvL(%-R#XX|$jone;@xZcWins zKT%@@;y~Sk+@tsTYZE6#@3TJT74H_>gC<xP~3gn(XK}Qwt$#G$@~&QShJ4z=2oBArmt6e9!q_wC)E*O1&Fw~)J;$Q zq(l9ntxY9?MMByXZJ{9Q;=&z-@eZ!~;=(zcm>sbz7)x4FG18FM)7!f>_S?5tBZ8MY z&jnnufv*WH8IRk^t1(B^{R2$oasTOQW&lx@XsaQwo%i^D+3ua;;N;A%s=@`Q08S zX`|g6E9S1av+q9Gd--YdCM&IYHH2Ph*Dup}Pz@%WRz#~{c3w3&=WNT@sF$p*2al~L zXPhSfto{U^F?(~vS7!gFM!KlNXT~F_+WRdC0tX&+4^ea+I01xFBO;%tdt0*Nv4IA? zVL2GK1Rig+({JCMZ8)0y(;mfFnubG{u)=qoV^OTozO?HJmS)ar1hq`7AqE#^J;hp6 zX$oY(g85J>ad#N()t2bie3T|PHlJOqxQ>3FsjomB)KhAslU9MIn-u<+bduj`!!a9C z{6;B0ynR@c_h>QmVm%;J0R4Rba>FAh~@N}E+>v6fDszcJFkzITU>%}@9V zdR%<}zK%V@=ZMFga^%Ewa;kDsR2iMIG?m#zz=E?R2ul!#u)n{5braBkS<6Mr)!#U!Xt2k99!@i5WaULH zJ@{ke-i^(zNr`<&AXI3E_gQEnEhs1eY7#^(+Tm!aPsA!bn8-rNz2eD!a(Y@}+>5!l zRHWAr4pt&?S_A3NH-lKm^8IfmIVB~m`iGGb#pgVB5O9m6jg4RWStGm$o;r``RXKr{ zY%5H*Ep|Q~s;BVg0st~QAw1dF-&vvhmh~qqw_(Z0vecSdxYB)HYJAqmlE>de+uJpSwcvl=NhLbq* z@6~doUGJL)~?3qy?$41LoQ}tp zndg%WsLX=Lg^(|n(7WAv$v-lmd`I0j~n* zDNicxKhrH03NhS0+r7dA(`8{4R|wFmt*tQOq#Ka~nidd4E1xG3p&k!;x~}ejcH9HP zmhss(+ttaSY#JZ_9RJXnqVwnVFG%Dfrl!=(u75C|-&s)r$YJGdE?=6$OHDpgh>STA z&ExW*JA#|!a#gxTN%$TQmsU|iPmg@reV6HOTUz*ETw-?^VOT%_ypH2ACmlU~C;O-X z`>J~)i$3!~%cWlNhg_lVTR`IN8yJ9n5cV)5pZ-?!|g`mVkvgy6{Xl)vJna0bTZTY%|KDb_k<{eV^vmWg^!9sG3SS!(P)f6SX|q`WB}35T1urjg zi~ISyt`z99;_2yGpRF#!FBh*ATqb9p?<`pJ_piwiZ`m)90!f{(oA9=`ujtyVx`>U9 zwY$|I(M!95J+^(lVKqHDImy3e`i9v3f`FM;HnBEmS>$kQ)6Pgb4`*#YW7xIw@m+M$ zP9iLo8=DI-&=@t}7Y`Ah)+MNpc`1O+ z23EuK{(L5Lo4t&gK0d{nRAgyh0p^Qn-+mh&Z{i4qtf z>nf%D#a;+S(UrIcOF zOAj`qU&uO5&clCShSb`wj0`2Q`GdANPnr7WU`j{FnnZXm_de(HVu)QrQ-}C=C^}JZ za>Un|2r-rB%=RcbVJ{Y;$H5KAH%pEFT;j{?TPw16s@1y%uj6I)#K+48eL4R8ka|^*S(hrP zJ744eyuaT^aMM_%$ThB^C2QDg^jL$p&XE!RHVOJ?MSHV?zQowgY2 z+>e`9Fg<}8skTT`ngJU}bcyM@n_yH!N2{Pb<`*mX--6>1ynJEz4+mluwU!*9Sd|%+ zwzGA-W=|5H#|{yJXw7vED|j~UV&Z7e0Fm_$1y8%-nazfZIE)F)7ugz9>1LPnXTF{4 zfd@=qB918xCG1JhNDBA=&T-B`=KMb7gMP}l5tjOi`)}LB&1$$|calr#R4lQlW41R; zKBfu!JzNzldLI8Wg1J}=rg#HF5nA9;`?s|T(8S2dzdMwx8j>R&MH1m%fh`84U{Am1q9x2t3hw|kLgv+zjX`iY!4{0Sx8>pur*Mj^so`N#2w4>nhZ!QgP27gx zoU@Pl+naRlT(?7hY>Vh~|JHZjljSX8ULk8bJgncAUi{leR?SFT>Xyt@IN_K96Px#$ zZkgq=hhJ-fovB@b)&Z8FEH;Wm3> zbmy}}|B|+;IYl8SsM}`VyFX3WqV3Zx_m9)b;c&}+Tbwbe#?t32sPInG$v@EkJZ!>MOd)3tbwR&LadTIqgnA$m#)f>zPZ5q&6G{-d)(8E=(Y47FUs>T-(*GO|^7 zlPA{+0G^mCo%cV0#D~E`t+jH2nzF{UB);Se6~W_fRE`KK|KmTsFBuupWpi;XXG*)j zciXOkMA+u{0H3rLU(>;a z;&eWz3Dj~i;<`;ud3p5Lbad?twrvqfNklKygy`hJYWWWyzhbrG7_bO#f%fettBQoW zW`dRYOloxph3?OTNavb=s-^RxNZKe8xC?V5J!!xuyu#?5)pcQl5hUt(8Z@jXmaS!a)7} z%e@J5^R2JtS}Dq&b1k8G4BEz8Wp4IKIl>1;Yz8Si>NJUOYWlp!(6D-l*Ffi~6O(b` znq;b}t$UsVmu3N%#q7hhn+DwDB&cLISlg{}X%L=o%i{=pX%?mr`fAGZ%WzO*@=yhpR0*UI?Q>IjQtsNM+QAd zfxSmEmhvs<^uy>0zm8o0y$Q)DHtU)UFXvf>K4c=a)VpP6KfxwYS(LX#P)(jLUhQ~& zJ>8Me4}rzesaCJUMXcs^4%&9=gv1JWGn$H0aqF_2sn!@9s@`WafAa$7xO`*m`QB`Y z!7d)zGhq5Y-EJC;!Yxhu0&UxgH|=*bkB4%U>F`hk#j>@crbhjK{NI0&@D2WRSD6ko z2$l8eaqtL|I0DgsuR{H^VZ;A(54F2P8Aj^qQPjY7gZ%#+&Yo4xSLMG0^AORu|MyDy zdAI^Bqt*wT87`$o#hL~B&R|I5gwC|Jwi-#_G*!hZ2lVA>gLd)-LvUh!-JMr5Z0@OeX9 zDztnn2sz(9qw~-|`#eY(*1b45yEXk?nGQ^`1c#~E3ro`s9tkP#A4OYvBl(oD_m|aG zgY~t4#hP4)jgz4)7p`>Qq=~6U1;OX9;MS0AFZ8*C1)-{M?;mA8Cqx1A;HD=2J+F>k zphNyK%oSSUrMgWYm^$B_G$(}%u=LCy!ud+P5Ve2ohoCL9M`I`6J(sXsr67qH6}hs0 z&j|x3CSzn?DNDD)w%0mF0TJv)bi)?k^s=n-9wP`u|#xQRWHF|2?rw@WA7#w3aueq%>|^+gF;ArOWV&}en3dJ{ymm4}Rps4o`Q zr6rT#lG&JJ?;1_vpsel@t6M8|P%2wsuY61K;6cH;Y8-&g z6U}a?(ie;W$QRQ;V;zj_UirP6f~waCPm{6Wi@M6Rx$IsH%_Xj!kHxybql*ZXgq7!p zjpwJ;JY>J{GM3CjJxS!B|3TiU!eIP4t@fMC`^}47moq%+qjDzQ*qE3OPhF%k*|o@ds04*H*I1m ze=GKt($Z`c6`$97h!jz7RIpV-!kpi^P01r`&P%C4HW$|BBS@%h`-ME}cZ11Ah2evTxvHm?te9@;FrY8;VoE`o}$y%e+DiHg% z*y=_Qd(XZ$^G9DTKqZ9{s5Krcf`x^}Drgb}l&!PBABB^X6C47VVZPUdHN_q|aRDrN zjc=P9`;RvDpw->F6bAp6EA8Jf6+8rWPSEDuU|#q;p==ph~sET zMK4({)7;P3;Ohj4z7HL$x+TTahpO{wXs<$hG6{H|Ve-c!iW+66Pve_lvfNJWlNcJpR*h_=P@sgAjl9slfiwZ&nrjwdS z*R$%PbmswsunU%NB@pFex4vdTh3RScMB@UQB|$HTPS;S1j(`o7wu=imBycxkqL^-5 zBN}|gX6q*NlrI9cDt}G?nPDiJCfqzaFWODor*4G|KD%nlc)cRZ*a1%9|Gp!DY#E>5 z!aYZU(E6;m_r6weDEWu_;HJ4CB@UBU_z-$sOd6`l@hac+^8U!jzvlOJHg+VNq6;$7-BG5q67H@-g?W0wfN=c2&ttc45f!?YV zG0=!mhw)y_&W_bEG2I}h6jNk5ROdj|2Vf>|M9k7mn?!{;j>p%fn=gFy|1B;ya7) zp+?(RZ*zvEhzuUs-(hb)PebW(za^ zi1b9j3Hi0&%~nDNi|e4kWtnwBX55zD&vGGxKL%qx>A!mMkA0rclao}}_IZ27cSXz! zpHp|7%G0ppP!G=eI$JDgd+crK^b{dN)$#dSoP2`LEqvs+>M&M3{n6T{pe^_M^#<}% z$TwRTDaR$#O=jw|R8evf!ZUrw^>R0Pa2Zp$6Ta-VX=pyv0kzNh)Gl#C?Q)|*FJ)9C zi2uBJE1Ocwq$NtDrh8R+M_s}*bZ_z@=WnLUEmp8sDtr=$K{}IuUF5*-A{j43rlMyUdkqYJ2X_v3y+Rp-@rAW3Mt`n-bepjbX zEArSlGh3NEr1?erTkB*0va+)77ryg{7__6y5g#d7h48HQxHsvR58bhWF1E|DBxK(d zU>!|_nYxxape{Qs@0RmzZ;GDtG>UvGhA1s=?CdU{A8@gD_>Bs4hK0{Af-%V~e%o#t@_ExxQFVOpY@m_}jQQnauLS(|CMj)nN6}dc z!=+0xL5JRX#a_K$+tC}M+9EK`meFAhR#GXa^hsJ8$IcP_;oWX0r-?}JEJ~$udZA@dg zz)UXa%P;!wXrP!EbLR*b9BDo-@UWSrFm*-hTJh1oU*l2y7BYan*?UhA5l#C+bn0Ql zJu~d!KV%Eb!C>5p`_Mk9qH{dD9)ohIoMBOm_+ zI#qC?v2w*8uj9^N>V6-tI|e7d4A=&8G#6r3et@pg-npbPlg+kQ1#51%&{)Ph(F($V zo%_W!sjAUwL($LGOZ(c)?LVG8Hbh9du&{o=abfRzNE8%?l4B5b-O9Jc>ZRWkaJTkOc;2teWqP*{x@Fc7k-W3c5AC~H<+FJQ=Er1*|2 zou)y)2QUQPU%H+zM7=#OdAWGot{69d-EAKHwG5$5k!nAsrroT?)(+N6-;mcK-g@k` zdj_FQT-}h*&2tsmRkqpw;TH_l{s&Ha^`=1|f?O_!f2F~|eYp^iUa%EX{cW?5OU4)c z`4tSIFx){#&-Cfm(d>`(^M7v)uHe=B2JP+_S?o^t4V(mnFv(;Q>rC4*yGo;w;UT;x z!S*_{^UL&^pPaJyxlpy6Ig21^WJWro(Wk}B*(y2`ut6k;q#vua;O8uS+O^eXuC>Cq zZ81NXtbh=zPwfTIQnT;-)Ha8DFOl0+OU7H!>X4ci(`!HaPn|n*EWWw}|pw*I%kt~mPG9_pDDn= zE2&)vu*6`cv-|HlEclC&)7;uA(QuHf>3~k!d-6!e26o!WS{--a-ua6T zW9wT3z0B$Dxwjst1EFQJJEPp8Ue3JOa{Gw@m#}FiBTA&zHz4T}f;jT-8G7sZhFTSP z4Xn%#Wehtv5s9Z^u!U|+%m=6M1N;u{PnJf@A22qiude@XWf3dFvc~81OxVw>R;9CA zuB7k*4=(NebSiADoUDp^-GAOz;5NwQuN#}ySy&5IenGuoN+?4#VVZwgX6CfshEo$N zO9FIx`?Mlaf>p?`P7xQLX4*g{Vo@ zHGwtrW_;O~-n>$JAuUjrK5%7B%tpNQMqOI2-ocZ>g#MXMhUb@S4lV+-$B|!&VR{Hq z+JiQn(;$q@$`~3{uUIcxrf1G{3_*SBpivZBs&R#x3Wsz0b^J^vvDkuHB3#8}EAyko zt!XUtqV3@F1rxa+yzf{oy%Eo3AErXyqNVG&kaj^L?u)T1(&0JSAv6*XEOEX<@p)f`N~a6Z(G;QCcS@G+oE!j z^d@M&vqyk<_>0ROCHO@0w{2Dbks&_DuGlNw!&i9>FT5&~h`jniDkFm}gf$r5>>t)Q zR={pgZ$tZI)b`_pz$Jqlp9AX$#OmIXGpi;{(Pg3g5%;zGlMGNP|HU-MzdDh@SI+e0eGF_rQqgoyN8uns#R_6$CqEm)c@i?X_fzJrqCc z(w3)()TKCUgwAKk=2%q9$ROcca$${6HQ8zm!gErBsgTda3C5$R*bwZ!79?xP`qCk}|iGt@pb>LYg%;v31r53*4?He>q`zkM)Q$#YhIEB+aKvir z>O5DWLfug5O6pVjK@(Z~bGYq*5LTpn2acZ>E18vDDp&QBlAXFFitnCq|C5W%T~M^Ze|W!b-XrLHH()1+2qnglxstuiuSDTJ<*Z{ z+}>!Ed5))DOImP(Go67O{Fp#3>>9MS;E<(fyIBr7P`X)Yc#tV2V z_>qy3`m4bh(@;OgqW!;r2`NENi;azqNZ4CI=;kk4>-Stdk@-W9x)v?HBqS7-^}iV< zRXxrZ2)<2)l`kYalYf7dOnO@60QR3Dg~c*3s|T|qtvn58yNoC*-HBE{eAr`t8PzFQAo~5>9CAP6evrz;B1*6y^BgHL)<&EXMak* z{MtaZ;G0aYYRm5HryYa^w22JHPWzpD;3qh-)qk6a@v?!qE8Z0!)KxHPRU`ThJLp(m z8(k8fb!q}mbz0kK6e^|-TD)o?Nezx-I9KI;@A3T=!?C8?Yx;2-R&3b@t8X>VKoH&X z>3s2M$%%Ly$xCfqM(UW>c;#sjc7w-ij&VqSL1|ASEwhNahFalxKA=6F=KFofQ4t2~ z8t?744r@_ZbUa=m@pVy9*<*tq$?g)!egmVX!e;5GV*0=smCQg+=-S@4e{fWI<<_40 zRH+TN;3F;oIjP(qX!D(&a4TIi;^~S#IN!LBvyiFTd%>8WPWk!yjpfP_Ziki!tNNB` z*Oe~oHdI(g6?%pKDIn7;O5**&|KK8oF*QX3WZAJag~H6tJZ3(5)%LDGX||1_@Grgw z7EDT4SJ`mIS-403I9;~dYZ&wH8UDj&I7Fz6wQr!`-$kU!SZo&L*rm5d(y#Y!Adx8` z>XHjPmtd)!pr%yzMcwqZfB*beF!ywH-_tM@#cHa(O5?RwOPiKzQ>HG<&u5H_zjrp+ zvH)F^!N=%Y8YU)*AR#|Exbixzoq`H2tW$Cww?;sXY28)*>u-4y05mr|C5oUjL51`W zF8IGzR=zoKs#_7w4z(fbTI&s}<;M|c)6%AO&aW*lmOuOxtoStdNSy`;Nu?vAg^T=o z+pi!!@XTYfOK)R72h+LGlGFF!ew)6eQw^fx4-%3ZMDR}{2iBsxBi+_pkfr=RlhVb` zmx*Hj9P-^+7{w9htJ}RY8J-g+h?0&DIhQ)u&hb)2CMtt&aQHbso9kDF3x`T_5$42~ zoSaj8-n+{w{Qri)P%sb?qD4Hcd;}ur)RZgs3B+lEFEN77eCO$k?<&>)^f$gQSv2B9 zE>lh;33wWKa(={3I&b}HiIeRxC+Uuyf%PqA9jai1JfeRIpZqW1KI zJ3^nw*e=QCm{-dr86G4W3VuHQTUl8dotW4wxejash_U&K{cT9ALUzp;daNA2y~otB zt5`33ZE)Dgk=JJuRg%qjv^1(Jds10VNTPtBCc}A9H!9+!PHn*YbPxf7IcA7l@4=Bmx{^lGWQZpXyn3*9A3=HfW8IdwHr1JFg$|mtpv=weLBHBN( zGIoi}OLB5gdO(a}QR}+2XAxm&M(-x1Tz!N0giGkxS+#pXOwLl#-;+_C2kXA_IpF9E z9rJvgLM>y-bbZd_fODzARGauVhXa2NVLPm>mMyj1X3D4%B^zEqp@ z1e6nEV|ksO>8=sjN#4`DV|7tgACs-WosaHltRo+OPpMm6>0Nvwkp)qK_IdGD9b1Fg>^XbnSk5U@cvghk}72DJv_RGs{&hy@iqKxc+&m zu=`vhl)C)IPwOEX#lLyX$qXj(Ood^k^+u1};SO_ygy2M2^ZZb7x7o>Zn^$N38{1*)nQr>)m*vIz-fivQcOOUu)sQXmo@PHVi^pa9tudjbesx@}oDx@p13!?_%PV z>nnrBdVAN)C6_g3f;p?MZiN8n{dpLPg=&x^eg#o7^aW@7$iX8Z7(U!x&sKlJ1!Wrc z>oaj_$Z;H&J@Iisd{CBJ0X8|C1BUNN&A#g4dYO#Eb22tp8BbtZ57wT&oOwlkcciDc zUo2_HU1IZ6B8RpW2e)P)B)UAU7VBd`F5TVEU$!F0s?*sbLJW1RiOQ`(1XMp5ZY*4+uz)p6q zcbu~?PaS^V=rT%ny(Z_MI)v@3?bi?!gH7JKX?5$+9Go+4$K9=-Df}r+AkIkeXZthT zWy9-Z1TDJur_f&U`3(sOI?qtk0InhtbpC|nd;S;4hhfKMd_8ZZnm8mmI3LNy!7*7{ z8*aZnMiovWOb(IgdhUeAefwa4b3ZG?ta>%XKC1P+;zOMc+4c2SCa?Wq0*ZN*7f8@! zhWQbPvgpQ`GOtscR4c}$@HqE@Z`6_Lwn)1Zgc(s(M7F>W=;A&d=c*SBm6culOW%3) ztZTg0(za>olcw6h@f@x8(Y&Q2HU&i#NZGAbV5Zw2EK16!@jN^3jheU0`SAmOYHBKp z)&2zmvyKcPnnZ$bF?&l*giowBWo2vt-E!G1el2UgL4{_`@x*S?zW{myJv}`D?gNCn zq)MRGJ(^>5L`p8RI)aMSUscwwzxvdnLY8}HD<=g>1OY)o72wiAAE=iQtr-` z6^i@YOKA-a0!%W#08szY{`)s>mDwl_E{&pulM^S{7gjceat)qk0VV?jD&LZw_hfO_ zVOHbqW1J7~EcqWSpc6S-%(g4f6=f3(+)A^x0+rzT+WpimheM@;(tBRV&DEyE)~cyy z^^3sbt}gdG3`2Ta_Kk^80kHFUkl5H^t)F zuMrX5KtI^**CiBPVcO?RAE0U#I!ClGR2Nr=F+*Al&^XtTLAl+hjkO$7TDUqAAfnqpiwvSE(eN>s$JmgSa` zP+unP+HkkcWHX+%9MWr}s3kS8J*FY_`x1tr{g4-&_EuZvqQ}9l3;d|i;(T>*la?Q9 zJYx5oefpvOri8+Fjrc7dJJGYa9PhA z05=H~?+a&*n~#BW8|;0!?(S~v5D7bbdr|P%Gm0{@PsyOnvh`{mO+bhh=YX7io6Y>{ zBP0qAX9_4I@4G%Dp9-r!cgRnV_~!3FM$1)F%cwK7)PQ7nw-ncfAFr`!TW8Hh6csVm z=gj!e_k#euyV(XuTE%p}z_hgIfQ_)Q$efV%vh_$*KS~AWcS1JsiXiMVhR%S! zJ107X==T4ol+#M^WXEK)doW`Fw!_WQ?$XsZ>snk0|gT%yd43D>I?bb99`UW_f z@64d({ae1w?pRtx1_6}4ZfxDG>Wta+Nv3Wa)3s`f%&b{~a5 z6O`V6Jb<9pC5%jm1!+vo-gJH!R%3}#l}w+Dz@@zzHA`%4Y~Se;f4he}H?=;7)xAA< zTH2C!?7|NAH*Z)CJK;e=3=-3a>h_Jn#F)&?C{RNSSY_xhVvtKqOSh+r2%-J%k7wKC zUqdIH@c^$x>E3ek`w?w08C>;x=xB5?P@>Om2_t)~k!BMVZ4r$}yDET7@{*n&b$NL? z?dl&G0rYUo)+owWEyz-)i%w6+06Y~yN_cu-ut|Hrz#+j~#0MpF+cE=SA*t@5l{vVpj)IUzYJSa&#)h8EU z|4lOb`1p7d$0r<6NlA(GDfnW;VZXJ}EvKu5pF{x%F|2v~{K%0J3%K+H%g!HDm6-9m^JXt{9#7JZ!m?KgeMadVgF4JS-_>m|qFMn_O%^ zFCX!i@gWPM#njjiWKe;804!8W7LX4Y)?5tRxs55R2gI(+?|8PW*-60$)851r?1}ES5}7NWf8=XFAi6tY+J8;4!Gf- z{D8;%L#faE^B9?>u4HYrxvL#3gvTDf&Iyz6b}!dgvvb_LqQ#sa8ZR`JNDQ16Y5}83 zqpCr6IF(x(gpXDPUnX0fE=W6BX@8HlQ48Jfu>-sR?D+UN4Oy-M^o*NORnt_@F8)vP z?=}~!gXELhu)!IvT}^}?qkJiC;n=2ii~!-F0M-javV4zZe*hrX!9z#yf8l#x47D^S z##}buY7YYajQ;j5AUYa5ARqv=Y744WFTNCd{Tc-@?ynfvLrbr4Xpk7? z^ay+OA5`ICd=oP;kRXuCgMEhx9bW7Qfjp<{$yEAN>H|O6hS+NTT2o0NQj?4ocS0?; zPVhTxqu;2`bpa;Q=+R(G5eH z!QNOaV4xzUrKQ>ZJK}aV)zP&UN}L&I}Dy?G9_eAM%qg*TqI^=$~-LSy_uA5P}S^kig^CnhHT?U&u& z_0w|Aw2zKrN&h^}^y`!J9p3#-(rtrPeoR;b4T99&T(tqYo)%#k#%)|os~xLqQ){GJ z4dT9@PB`s<(_Xpjmjwj!GC%9iGVnyU5;%_&LqBY=8uewE;g|- zm|rlxIx3gAxKO|pY-;gaCM!@4L3>mp0w&E*$R#?rJe{nlrD*GxnL2_^~qoSs^ zao$M%e_VioBF(t*JYD{8iGwk5sbS5q#IV{mJsti?_GMl2R>`YDb%ZRP2TM)E(`KU? zg0Fya7!^20C){7CGQ)!L^++bJw`WJ-oFd^k{WRkBQ(>1(1pRu=P*0aPWN^ zI`wuisFKt`yOSOU7_L@IbzL9gua7R!+T$}XyZZY-O-6Rng8b;xNSn{&gWtT1QJOrB z$rjNkB*2la_|pS&PbMpPpa$?`o>HdbvgfJ7e|Y!I%=O;)d>kYZtFNKF)nAF2^znsU zs2Vx7^2Ju+{Xx$D3szb6GVeAITEg5|4ILPUV#^6NXq>R_FlUdz8LRUP!%h`?UfFH zR~3PWWIc%(c|JbR%tLD=aH3~012-s}m4rVZPGkH^oXPPh&hzSalTV(+J;lUZ@5-lq z&hL!QqU1wtOQvZcyM?MF7ze+KFKVS;Sjc+li>^XOZ^zk%LfsvBwet9&SvLH5n)w(_ z%0z280zI?I_~T`4%SNVqkRx|!GwZO7pnK}mRm;*=sF^rdWrj;jODo}&-`)%-!ml1b z_r}=Bs1GoJk9W)3)}TxpA1@xH|XW@0ZyXB23vpYsQ1R?LrtfrLd#{H>y z%OB(RN5Jlqqcrojd*0Xrdr60~D^i%6y89r#vO?!o7Bj_L^V^^cF>VCGv0!%D9z zH3iWT$Wv`U77Nu*=QtD49F%+*V*2^a>F=u<#0aWZh_d_$z45_}LNQ%l1Q^={ChZ;> zxDQm<|J0k^s?l-Oy}JTuMZyS}jwXFsn{TUWYps_MLlOyFm#;aOLytrfHE^zK&8d=@ z#E>8G)dJrC3HCE2vRY|fGEZ%4Y&7~K!`34;>qFLB@vNo7{s$3o|D=RLV-@}`R`ib% z6rnx{_+PM3ujzneU+=U_Fp?>Zm8*(kdYQ;(HuC%qc>jH)qrFo_nlR>>YYFM;5zWm4 zIxX(_fIFODT>Q%)3Cr$J55|w5Kf3^G<#Tt8#Qn$N==UQmv=??ufvDh#0g&%mj%;B? ziaGVeXR=Q+4X9Q68pI%cE6R0pf>s}}cc9zEONuG2@{~n>o_F#_yZT5HG#!1iN8oG$ zxFkN1@iPtt2x@(N@c6r=P`Z$%BEmeg>HSQ#0AHjA-08Vo@nQMlW>7Cn3_l*RdiR{t2`DBRa6qcPcDL01B>h~J6avOJ)J+%tk- zV~+ep;PJyLbX^f{u=n@gmkfa@tL;T2bL78o5pym9SL~*}c0oT{{u#P1_I!L_>GaIP z^&681z->%4hG=ZAswxN;5qt?+Td$7OVYF^Wo;9}}cp*XwOu7S%I_1%OsWW7$!dD%o z7c-^0gT=Z{35;6hP;jeL=cYnx643gSp}4iHv)@V;fJ5Hl*=9Mzyje3>_0?e!yGm>m zpk9Wc3yz|gnAqOUVs~0Gk}`cfkNa7EfBYd#iJcmKeEscK)NGAq;@rj4AjHmOrJrl? zl-w47VJIo-w0aVQD*Y}HeOH?(i>o3a6!HGbu+s{c*xw*O3)YSnq8SM$I1YWG& z%nL-I+T?9aODNxNFv>~s0$ z#xu@Y1#FC~80XxP(^Emij5k5)I^#*>EFvCM^&Z@0Z;~IXjglEDx&tN6r-ynEoWNJ9 zKSi|M5)< z@jg&HKpEFRRJy}ycEMN)N(-J|1M}tXz)u*|m2Lt^%iu1)?ioIQpwHv&N?(6}2jJNr zORvAjhCn0TddFL?P*l_H$=C3Jx-X`vL4bpU^Mv8-S?#OhYIZASi~r(a&F}e73Bd-M z-SuRYjL<3j^3~<5&zGtx#leFA4{2{56j#uFiw?ov9fG?BPjCf-5L|}fP9V5T zaCe8`Zo%CGB)I#`+>_sTzjy21djGuwrl2_1r+atrz1G^hPne*7BzpL262EEW6g7A4 z)dcb8x*S?;W2+=(fnI`yEqD0}Uf=D?>NnV61}KdEj318w@OX8f24sIZK8|C5_w_9( z9QW_Y0^8ZydF{mtHop4!%f0p~%zqwBoh{IYU^iB9^9`%MV-q&eSq8T`6=?wI58!(F zjoQz@Hnzx?nMue|E$Pf0Z^oBBQ#eh=ejiv%zxyi$gf7&{ir$Zb3i9%`rJu829S@OE-H{!^X~s~FQIVCb$N{cEJ|@|>DKx77IAlD0=cfP&e)`& zurN}ta41#oDlxx@Br+XhPrwnkVA|B z#84qXUBJa^lju-%;?KFEp`_Dr^(7D|WVN4@lbEADuM6%nOZ~-ar$d1X&A-@&a}KFG zic_m=XDDrW*E#3O%){2>dT(3~h0XHg;b-#YsVfczGs$6`9z6hFFy{RMQug3S=HQ0xXY)(MuYYS{v|T!WR& zEuV5F`J29~EQ7TEI~wknu5lN}7I4ZVwUtT6uTOBXTfhmq*z>S>U}jK1be?EMpX)w1~ zasHOTZH@0H<$h*F9q}XCZ4LsJLDq;{_@2AV%%ic(V3W%wP#5h|*rO!Gh3R=77CTnB z3;zBp2D3>)nhq|33skl1fTsF?k=#p+6tr7%;;3yMxvNjWb5voCYr->M-)~ zr(ED`3+@i_rY8sVU9m`pH5qR)!MVm}Ra?WC7T`}ofr>@He9zxtNOwww`5_Jftnt~v z2Z)2c*%25$@BchcDU3Y%{UFR3D@~h~!KD3*q=5mcOcSdi;Zn;camJW_t-W5$s@(nI zrf@f&%HfZ>j_290xA}a0c;$K2UcSD2K#m_h7nj;JcpkQ>9rV;wmj^uzpMkots>7~> zpSE(6Yd2s%xU~SG>D1<^KmBH6F(km%^O;fxxX*q2+Iiky40*GX^crPke!Tthz*Ev~ z9d{|rTMDxEM;(?K__PI8hY1SBN5S5~rTk|C_(b(5uF77JK%lM8T;OE{>YlZ;N>wn@ za#p0lw~9UQda_mfy1jd1Y%FMJ16u;(lK$ZcHgpA^adX!YvxF`|)=lqBkW}Zpxi5Og ze@1$=xJ31ek;~7VNPFCaflrc?hWyzn|0D38I&29B92|Pnv&loy6h{NXAt3m1h%g(e z;A58M?n9D-Reyj}X$$aizsG3;?N8o4lxs7yS3c)IK0QhC-%(toa{&oJYQWrNzeR&5 z-E_QCJS((qP!hiLv2+S4!KDj7LbNR=+mC%7MkE2*Vun(^m?33cf~h5{nW`25ZWbldX@7|f=y zB_m|zVaY5ynfFNc!XzNeW{1HVWyU>s;)#Q(fx*FqGOd!;d1k=PZcxSUhdu_%)BkgA zj!t=xZ{Cbp@fb~zF#JCh)ru=XQAz%XqN)@%-DuvO8~Xp?r!IvqzvM#&u>ixmfQ@** zxc;HuK01mLs4BX>BYniG%Y?N(b!4QS{%F`(-HVNmrUSKZVdZ}8FIe?}Yu*muxZdWm z;xvxxmhf&!XJ%`|291ofwT!@W&d^?gHpQH_b=vVuPyODjuDy~tMi+Az)~XM=?m7Ep z0RKO2KK5FEarsQM2>6^~ncO?HLusc#2J9=~8|3PdE)D_~?SUPulBbQZ`@Pe&An3LwdP;D>^{=l=hjviX5-p^=+?=zWT8wPwWzU}_Uz{I~qV&Hh8!pn*VY zVD>P5_MzFo7H4kV*)^Q=u-km7i!sb>eJ4JkhQR#gTI&sf@OQr1_daV7^~L@S?P=|& zvQ#9S|9Ld&du21K)8E?QUE6u zUUNJZd!rlx+~jZizH+#S>FS>A_3((D(aj6^vLv~4j5G$*YBB*XB|{MHzhfYiz#K>~ zJw(%BUe8w_vFB>f0fCAi7;6Tnff@0qd-no2X69j^hXAnBE%$)M0Rn4;UnFmio9}D7 zVRK)}HDY7;+m6a9Vzo-PpL2B<5k2W6&h>BUl^|OWfLR>wsQ2%{!)la?2FGF!Vma&Koq4OElq zM?{=N{DvUm>)0#>aX~nO0fk^05!0MWTmZ-!6nN`H{0r_U{2ZdKtpgpXy2U@-=xD{<<@h7m5pfNWSGSMC+4@=;{8;M`zL2~PZj(*ed5kvPov>*?=6 zAu#GG7-G59Vi!^8(?f89|Eq4Kz=y=cBIU^}BH!f*d<6D=-1-4p16-Ydh^g15MKw1E z4NF;oY|*K&0b%;g!PZA%vvlP!;E9zp_)s-8Gyqlv1Zp$xI0q=8+iqKjy@q`f;n!~S zXD$hle{!@&e=cgR%)Kx7XC{TGBdI{7;keounf+)n>sbc7Jq1d<7|mk=4^FgJ0u{v0 z+`^@#j3q7>iASA||5{PO29hu+>stQ%WX9at*~xwBln3shc=F7{A z>lYtf?LyUzERS`ZdDzpBqN0T+QEXVlf3Vn_0BNA{Pwu5fEKgh7U7;4n^C+Ng&Ti25 z*-j|%4rVtId-lSMln{B5^Um%mo}nL|jTY}N*I|+k*q>nUd&pguuEjm9VeOP`&Y&EV zwibvS7*1SV{N>`7-m1*UVBxX;hiwY)cxty?kjyB_JIh>w9!97*qtpAEPV<|W7P*+T zU|{8?a;=1|IFOjZuDcG>{YhFl-WA#pRy3d^kfEfb#!|%^+o7f2&`r<07 z*&7}n3HW~aH%qU|%748MyN^tG+c6TE$-zYbSzzGRJcpq9QOypNC~r-!cvXW~E4yaq zWe!q~Va2=fhy=Rn)bX4W*nDTENY^6bKct@sTe%x$7mj_pXjtSEEz4zyaHe%31g!0(b z#cZR)tj##?A-?Qsn47ir?a}`Pq?N;$0Wb|7w#DPt|*Q+SX6H299TVhZ`{{u*Pp7YH6R$=CTccq6$n9UPXFwIi-AK291P@1IwIbx4>|J*9i_<^w=jD)SpqX z2E{bF33d4K`BSkKs%6V{&!U*`<^Iutso!KIXa@EFSEu!;YmP=lU?WCAS>tp)cf+AEE3yEvT@86c`F0%qyv` zG*xK@xyb(ptG)q#lRTY@|I z56I$D#Zp+?&*C_&_i*#>$NgsLKiKqUvm+0XDAn-th&v4O`K@vPgI$1Ic(X8Zzgbih zzR?zbRx6!K4Sni4i%Y42Rkgt*9lcQD;c3=T0+UQeCyczjrOCbYaJu|e!}+N@^t#FA z^wG@JG%jq4&SkR8XY2ahiSo%cg$f+ z9XW#Lx#zdJo>(O4T7LKd=OhD&V`J*R(HQ&F7wG{gP87p)&R=eMs!VqO`Z)VH<3YB{Jv(>0bLMp z9`_?{InRTnvg^``qN>YRig@hJcHE4Pe-=lzySh3%D~WdIVL&AD7cA=akjuqrD|tkl ztf&C!DU!Zd7yjloV>fwfM=MsptnK>4mEekQ)r)PN9x5z5(hKrO^dD?)LY5GM9!A=l2zkqrk z=I+_(2l+Ql^S0vHO-)U03guNMVSdMxsf~?%Cu=R(44c)i_ZLCJprpTQ0?d~NC=a0X z&ca1s#UPy8LpOyPkEwuAV_0=+6Lw|O-xn@U&Vz0Tuh)dc#D(712e;h~U;b($5t7S$ zcbHrt&A{D9s`sl?u6pCTU$+8* z|8^7Ivp!xovAb?n_vH|I5Jq^d!&le%_uQq?J0AIqfjo`i=R2nHhaLiY%MC80>;lw zj5)(p;4G<6pSXeggAQ)OwRZqHX?X8N^hbPm(A5`U=;{^&fX~14W%!J0BwJmi)~bq*x}Enc~F#GPx78BX$Dgs?I9DU&)U}Mg_%ypS>k*e`o+%NTJMqO;`7v_NmrHe-y@@i}V^5QMXB3CWikDi^$^x4(R9d$l+|w8i>LG;@`DL zI`8l%Obklk!MW1w@9}X@lINmMlH_5Ty6Y53ALx@pBpGBc+@kCs=m96i1bAYccX&Dc zySiYADB?&zwewI9M8pj^&4Of~y9x4PXE1p#Z7=fDnrRA#5&0d#H|}ic%yKKwB{$%~ z8^YzIQL{A#i!y`0pqd1Ce6nzOS)1lPJfq+3K6xEv*y!8|4>Mf;ojcU* zg5`_$EnIfJ_O|U|LDs_2*K$D#wEB^6;m=%&_>kCh=V-Q#vsaPA!&j+%5#wc*e}Dw% za;V-&edSkw0wr~I^KSfDwk-&HWo->Jze z@cYZ-y^ZeLzJ2osom15G*;O??I+{1J+E@w-5kY81MF4pzb+-8f-6Hw#$IwSX!?4(2 zZlQ(E^Sd-THlCRv*ty3oHydoV3XB|-U=sxW@PQo}GBTD3SG;<5htctIOF)gg-F^NE zLEh*C5D3d17qE2#5Hb!PULPurk&M2N%{wjK&s3)Muva-7%BwDbxJG%UW&fSAGp%6O z%QG<_ebDZfxT4gWXK4KLu)UGWte6?DwF}(tm)=O_*AK61{3$8D%eA$4=Wn-mPLG0r z?G+)+M19XU$+5?iE?O*@)!qwmX5_K#o9I zAN4xV(i|nD?dd1_CiTLCYZ&?foCR|^E7_wwGoY-Mc7+>4V=P4rWz*J)7$W+>{==IX z^s_)VS{`WafPOa69_rL_n$&SzJUm)QL_gXX=exyqhnWCx?=~H&nL!<40|Dt2XH5i# zfE4+EEs^5zdv6&D@s&+)bv^7(SGBskXMjgUNX;^NCEps;6E6~^@R8`HA< z)EP;PNuA!X>Pq+1javsj$7Mo2J-yil6I?=VT}gGgqWeueMQRConl6w~GT`z+r>tDNa9w==h7dxjm!1pVX6G-bvUEM$g-L5ve_l&;jA9_2RN z%t^WIjj_$W4wg}7>#;qp08dgS?AId3`t4oFmAnOi@2Ok2jZyKo$EFbgI_adfCv7H# zB_vdC#&V5MZ$*PhysfPb*!`znM%}i-oF{eb1s6ChHbt-0;^SnuU+{d2yoqb20hJnI zmZK&D3Y?X$X2M1ZV^yKY%#`^euiV9g-yUtD#m!%A?=yIpzi8N> zKS2<~kX*fY#Mxo8!6gVwpO%fFNy6#D(cWZD3{#=u7QtZH?lhC~Sgg8*3Hb>&`NOzwU z9g0fYt5u0W^hCt(gQ-hkWSTEDK<%`=xxYB=IJHUCUuZ&xuupZVdttfLl60S7@8;PdJX!PGqkq8iRbo?p{$p4!|)& zw+1}0g{oFsR*#r#xHXLQ#Np}J1dm>7S1TPcv{C-61)yxkR;6hY@a8ASsywXMNNqUi z;y;aQnL@+yrnFRG2PKZn|R8Rog3+xbAQ~f0^dRnI}HWza<8xn3 zUi5D-V8}TS$7JpPw7Qcf>G~_y<9KeJ1Kg>Kk zmf7ncenEK<^U-(4xZq36SZtp6V%?9!6_CBsWb}wwX=z`900IoqjL0i1|1Q+%N$5F6 zPY?@G$wcmZUFU;aCW^8OH4bY)03`?QLk#VoNgO zNJwDxzZZ@F%uvU{5`M`w;qVRkj!JRV^CV%5d5C$%#The!>Z-Z#HZ-m|>YplX2V*_OgI$*m?)p7r zluj^zo-s5GmO5-*SgnbCVf*~j)$S{LuxiLhMz~|2%mfvZXhDB7E=UJwdpCwh8rf@3 z&CjpHNAMv(KfeHotpWHVPc&2ZdkaL=bw3r3fOv`6Oj9MF7k@DjaB=m{bqozN9NOGA z*0EN4UhZI;#>OWEX4?d2^(fy%_1W&E@r%`69ZjM=J}bJB%v-*B?D>tlMJlGbz_mb2 z(@iz#E}N8^YunQ3MA8D;4rFHHuhgz;K*5uT15*R#CTt*xmR>$vm=ZLeF81&RDC$gvjgV*w3dTT zPDA`)$|meXpG%~BQpJO)xxTj>%#+{)w@(WX4u&Ewm>NKxMteV0>{#~r6 zIaJs5Puzsv@11}9t=V3xh<9Y;6XhZOcQDx}(&QfP2r^$xqj;BM=AMY{T63tV z=i4S9{$Nu<{AT{_i*+95R5hA|`X&+w1}M~&!~6U&DlVe7_yj2N3|Mwr&yo1YMzWCK zj$^4Hgk>j>Bv!({9cl@xh2@* zb~@h}Bx+&d@pJ}6Rh!)3yB`$p5NkMbTDn{_5ib7D<)T&95IwpZy=#4WSLfW*aI-GB zDxofqgI1Mu^fKpF0YO2(pzT~@u8()7Ek6G^HjYNhE78l9E6xcBIzto3UBDgV$o(o? zLdaIK+c*>qqsD&HOEzM<;M>Lv^uNKgX;D+jdG z?!Fu%aQnzPhve_zWr1l2`aY{m#D9a$0#(!5138O!q6z;{ zOb4GTB+J{8TXe2U5(21cI_y{Vj6cbCv`kOB+qD1IG>P8vv zoHVhHalN8`d$Qgs=aD=xQ`>92E*{BYXM}Qv`njtlMcYxlIkqfb<@CaKKEt21s|7B4 z0f_Soel(^jNEa7qlpFYO3p!`b`Sln%uxEG37>n97j(c!9U3a|@O&TymJr*o~oKmN-IHf;|j1_8#DWQ#+XKGbw+Hq2gF{wy4X(J_-#9g<#Ta4bjKLtNT@B zRmXE~b|23KFRQCU+LkvZPnjFheqTLM!~QKn<8l+!`}1&dRzC`~+5S-Rf`VJFcjGtg zI@%6T4+hn2PdlD*DRIVQG`R$4p}j$a=RdIbk-N9> zJmR!b?o6x-KaRenGJ|M1cue`mG^sxFg>r|Y)Jz!s;i(ex~e&4*#)4Iw0fn4WSw z;{5vsbpuP;qHj2OUcMCx^pWL?=-op6I{dnL{hcEZHtsEhTS`VfgmQ&(5w3J)!`Gxd z)LHZRvLb?4?ar}1X7-LrK95&Vzl}QBq3tq(U5^Ku7W->>GD4Y7PML=b_$GmD#|v2x zi3!g?*F#C(4yM`f2HScH#E<6^i9DY)Y!C&Wxj8M&&#P-`_1~==A_Quu9AzXHEcjEB zNjp0`M`K<%)%83ty*t!>awgjTqj`+d-E{ch~E%6U!auJ`d>2x%YbvI7o29%r9(i)F*g2!HnR zpm1CH{xqC;AipD6VjFO7JY&bW%b+p7xm%+ zd*7pOva}LEgmo`KTCoFZ;DkEA!2Kr3kS7z&fU^#-pp(2 zIx%s~g{+{Z#$nK2W>k}c?q42)Ncf;WelK*(tsgk7Wf6@(k6PgbC2?&1T6vupJf4d$ zB{99DmyjBO!^K7Qsu1sj2cZG{Or{)ahw#9v!AgHul>RoLIK>nC&ddi|hCDd%wcAlh zUp~+@wyZqPT-;>{^TJjJd0=|8sA2Gq&YB?I{_=W3-Oz4-H=o8)%y`hj?NC7tdWtnG zIF>me7O+ei^ovzEfX1Ih%$e*UidJ!oqTjKav2$2m_0%kmzIUc#6-Fv@zkFKY63+~% zIwgL#Ml;q~9wPb!|J~1^a!d3j2T2dab5euO}qp9H$eQ(I@CuObJzbOw!hT1YY zMOkmVvM10E-&i-HJ9_jg5pVt4d2pcr`MV6ys%|EQ?L=35O;9kS$oihTrg|kzJqI({210uA4cc#?1<>>ERt2BPXFu|n60q9aJ1}#x zc~*5ep2gFS;7mkLG-9FGmeFy2IL%o&#WSyWp~R(DnKgg|If+v5n0)PTsju|CraaZ#~S5?195 zSJ!eqzp=X@(Bm>~WNbI(%9(U_zuQ$26lkldCi;nKa5F(W4$n)a3BFhp|FKx_+mSj! zv=*Pl<17KnOpI>ZIZ|TgY^e>Hvth(Ww-}iZ$H5Y2ITrr_fwN6#77}{hFxc0eB;peu z#Yqk_%k{5`z`Wfp7vCDK!!LQ0IhiFd941#~ag&CcHpX_r>($_JjmCpML3soxRD1G{ zMgfQaf(NLm+nd&Vc|#(Sp0&4z5_6;$@Fdpf8&AXJB#1UDdAm|)y@blfP|PYNO&5W7 zE6pP5u0rUWIHxZE=5SxnduLzJ3zEG!IOe7%#%$_uC*Wr40~a2cApNvmcs(^S90-pj`Lxq^ygaEmsRD6}P!tRWWKm34~K4fSDFQlSvm ziCd~M5+VRk-UT|Xw`z2{-m2>9Rxo(L&HAi@xOdgqu%aM&ixA_xtGHg&*>^}VE8p$laQFV;TG5y zN10bW!r*8PCv^1dofA=>fm7~u>Nn!B zJ<*!vLZ$ywGfk(@b{&K|(BC`Nr29CD!r|FP*y~-lJa^M#Y9whBv?-b|DR(u`c4x4C z9X%h1nCr#ot`txqmLVqjq-q*!*mqrb2{&C`wd4dy8@rthRgGAmFc>D>MeAQDEM%H)bbqTw+cFW?`#xADf7sYa z$w?O2yY%ucg+I&4B(2~*#y%rH?6Fl|wPyeP9K2rL%EjI?JHD10 z(B)hAGv9B0-$oIp;N-8oDU+I|Y zm%sZ_aK$Dbn)=1wZw4fUpY`OrqvzskIR{i2fEPLZ0*o zHQSFzG9!#c#l^3YA7Ev*ug)-tLuyZ7KFw@DhR!^$z~Fqrpl?5hi^g#+4ihZePgW+) zjYw_b3f&h7!sKW%21DY*Wxbm)!*OH~?EhwOXKl(8naL&ewi9mU^M>(Qsf*`P;X)9_ zArF+W^yfU1*`?`ZYu~2?;Sedj&c}emv83YB@A7~0hl>|9z1gGt&YNA8&@XMFJ`CM0 z#&NxWLRCm3EN&!Dnme)9z%KWmeOAr9AB@$oN)8&_pA{H&b#ZVB)l|76gVx!fbmnnB z@O)wxLZC$R!Hhk~&fbbltS8%Suk;uHnHkm7mk=C5MG%CtKr19f5B2{Aj+F-8~aw!wcp3d z)+;N9@|OIUWm6Thloo^f_=2!8EgP}e zmu3X=`D(G&=4BTpk3mtbeN(h75ewE5Vr!J>Ul{XTl+DR^t9r~+CJ92`1KKHFb;`ZBuRAzk&gm*bNgr5-bvMSC0Kgufb5xcNTr- z|GY_5BVqi~>)EGkWvkrx7Ub9Icd_W*aQvHdh)J1RSe#rbyJ%tMS=hdZCcBL!uemrS zBrV{9*qO3m=`zaA1;ZW1tQ@PRq7|=flW=fPcz35j+0gQ~V)7$PnIl``0*_ zn2okz(acXewfK%Y=4&Y2kV0&C{}(ZveNr6lFEuT_cv+1quuX=I!8yYp@ckvtw( z=Yt3q@vChAp)gtF8aV< zck|(c+b*$iu!7+IBCxOzv~|VS?uvOT&Y9Wy2}$UX)IT3Ei$QlvbrcsJH^SwLES`Ss z{3gQsU6n z@zW{A+oUiY93ng!V=Is^_G|0OMgMhC2eL#dNjpi#uNv^R^SXJr-1SZ_tdE0?K0_h6 z6x;B9y{)55*BgS@q>C}9;7-3>6rR#__frhr>ZgUK&f@iV_mkfwA@X7f>Jlp6aKg<( zsqxw02He5jUkS&F8(7-XoXX-O6MykIKaIPCI`1YZEryma1X9JxhjK;tKmy5RMT3e{ z_nF=oDdR@5J>@leJV!1|4Lw6qvggRwr}*Y<2jUDK_pgH_&sDNaLmPdF!*4d{b@kIe z^32wxKM3E>sS(7It4hjZuIiAZwApK>4&)AUj*PJnDltdI+%k#%iqI_TWdy2?`;&2T z5xS$HA~p&`$xv&J`U3WwCf2^XbxFHcr+3)hjL;%a@y7z&(N0%Ux;3;;-*KLwFL*z% zFP6GA(5O86D=pXjxb|vTYuu*=rGwRs)r6*-JxERq_@A36uZ{g(H&$Sa6qw^7+b3}F zfABX`CH$$wd9w_9&cTOc?XU8I!J?l=GrJ0W)#3Hfor~a1U;qeKVoMO1y(&%#0 zdv9+)xNK}7&2+C;I4fwZlvmS{g;7WdsR*d5qJaDTy^2R=*1egLp(jDw2^y=bPvwk{sawjC)F~^hE~4tj0_N z8}>SFV!xDPOgFww^iHs=M`0jjDCvn50E2}`NZzNg9Zx&hL73Z`C6=QW?zhhi*!lzC)Y=} z0*>H|s7EzaDlSB_}+$Rxl{UkHE=4>;DDzaf(s&xT9Ppv=_eHvj3$ z+4F)XQ2iMBf=@p4v5Ddx9SYi2NeP(Y-w?eTcU*sb@Kt%b=-cy*V4`{!kD8(=Ds9Yw zO5>4YTOAU9y0H>K_HcgNQV)tdrDvNCS+J*j`xBc6VR$Z%yA=G2rEH3=d&z0z{YKb^ zv7kR~FI4Og?OSFrMqqjA%)RW^@*O*#|lW+w2epGY4gSPv3MkEFyrSx$~@d(xvTeQzs{1l2bAjA zE3zudN1UsDP$0KqKMnCmMO8?QK#Q<2pEsXZ#I)uwqL>zz)9}X4ZyyRaGD;}net25q zdhDrqefaon8_gX&Oija0ZBLEZgt%Pp_~+I~4ueGDYBU%D3CY7SkZ-`gLG$>{cfD`p z)%e1#)>lplM?oV3*6ohTNl97RC|}r`S;-ZH6X7)AS9~q7MGN*Gx1rbr4)>kCOFaP! zZ42`j=f9k|))}o~i43pPZ%dyxn6~QD32llN^_0F5Oq6AP*NOMLiU{~0H`aq6-0_GD zQnk){wQcpJK){OVek63VyB^ZzptY!JYE3&(b30uqdUxJ_}_&4_~*_VPlD3CBOyVc_tt)c0<2#a^o@GHZ-?Osp5RptWEbZXO-Y zJEth9K(qSsy2|fy{}AK+bU4GGL0Jidp8K!R-*9WT5JLv;>jKvx=j|f95BpN z6dCK?Aul^e&A<+*YZF<^n?Z;Rb8hJE`Oky|BRRtZB021{{+#~5%*kZV*?(igYXVkB z=i)b&w06TU5lJ}^rvQjQT5L9?=K^{u~X)orIAV~*)Se`@#FZ4Hv;wH-J3EaCT_-(Zu?_1WE z6IpV|^r&W3!A;hRzGRh-LeXF9CvnU{W}dg+jOg5N5$;8tHOeCY{2}Q!>x{@o{>98z zV|BR%J1FiMx>^x8bGTcV9>4Tdv7j!j_Lug#Thjq-e~GhggA|M#E=&S0y4`iLa;Fsa zX?_jvy6x4b6qdCk9^Nvu#JZ9_VfVR3hogC$U?^{uC2p$7KSVA5i&xcxYCbg=yw+D6 zvMexc)*$0)!lWLgOkr#eK# zJY+bw;B17Xpu9oAv%m=Dom%P*!---=gDY)V$iH9wu9YDj!QE(tpdUzs6Fq6LIbYsX zjj9i)twU4X|OCce{cYSBskJhCc&yf~|MQ^{YA{_>eTu}==kt;t}>y#Dq>MCz4a?FwRaYE7@U_5Nz)4t;Ls z0}3|!huc;67rP_vl$Uy3g=K@54{TbDaTaQ!!9ZG``OI^HAj$0G(3et+eM!xTsLb4xEWUKhu4rXZgp zR#CyRR4|b~|N6E+?|UitT2{cr18qp`dY@(p&cmN9c*xHI)Dr_3hb*Ek3RbNB&0YEM1Ws-durxkTsJz=z06{Y%~^ zB4Kf8ZG@3?M|AXeAmeWB(_2S&!`5%>yNkRR;E;#tnE8TQcmEf{>av}Q8%3L?fbq<3 zz1=D;w_SbQ%}v(B`0K9;6pEur;Z-J=dgrY2k7Cg^)|;xXL)4d%0p{-+TH-(qw*V=nN(c(NsKs}~(0PIdgUojFd;-$|Hww`!K%qVc&&r0 z+U*6zJ^&;-GkMw_e6;YoLAeo|GJ7D#{3NjLtgvaU7DDJ4>(Io)%Mu^+j8QHH$|znH0*c4ozFDSwh)GCUAYJhM5mDVYK4C1&jT z>wcZWnd4h8yT+T-mH69^rBBrUW|=(Z(VHgpioA+#UapB3*SD5lTRWxN_RuDnWm#K* zfSY9fa;rBR9nvi|b3N4-_*RS|*?s*!rXc}R7k-YX@l_GPXbUQTjb->xvEdgpBH`wF zLa7bFd1=E3Z;>aLY`55o8IX9q`q)D@#%3EafI7xA3)zmJ+asp8{FRLZR`|3NWz;9A zH9gsfG)?*zrLE-^`9%v})fr4;P(HFW+KjZQ-u9 z1zB>oCsiipq8^KWwL}(7_+ojDc>x0WFzK6f!q}G8iL^*w`OQmS8acuu9gn-$Y|>Rp zwW}0wL-MAMwo};N*B!gQZg75Kv+Kx$48e1rc0ba@zZ_-Z=1u=OHh7s#jd@KnwIqHj zSE!r!jeedLQMbcfCP*BvTM=#C34_!ZQCJWrRkaXZ$kgDyM|C?Mk6xY0!a7fOf*KG* zzCFDPDe`jAVWux_SY@fHpWzz+Z3vV3!G+b77_i`h*59Q-c68Fe;aZE(FsP_g6>Bce zp~dBS7kIkWlZ%;ozm0?SI(wmK(DaSk3qKV&(*o%->LK|GQ@4+)*DZ=vpHNYb5qM#i z`!b4*k_Bqt<8@ZK=o=;6$5h8(ngrDtrpfe|9&Vr+Gu?cC>2wTI~r1r z<|4h%)L@!4+-|(iSL<>=gS`!Fe%M&Fc_23RlB|4oAkylNd6)Wi_XRZ%9Z-&n_dvhP zM|h%b-uf;jzWtf5aYC6As9Iq;yyIjnVufetJv_=baXNn*VOZY-`J?M7K;A86<|B9a z!&Cni%L+0J^Z2l_rOlU~Iui@<3fs8sSC;sP+ShSd?1Htcvqy&oLf*N2KNtRX=v$5n|{Jd*wL8R zS^B_}%3V85JulTSE6sQXc^YKaQB*xF!9OCNTHrEWD7(HKjJ_TO98u$4^sHAX=D@O* z#^;EJ1g2Yycb5F1^X+?X@TARo{n{m;^_H=%joOj(;t3?yjt)9-Ar=W()a9iITJ2u? zFtFI;km3!#@9~?lfkT=?r{O#kjND%f_#M}BmNcf96uo@mrTGi1et-EuS9ZA`aeQE3 zl=D5)BO0hl(FAfo=;rX+57uilm;aCQAhq_XhK*0Yb+kER=XYFdjt$}+Zo723RT4l> z6=(8^|ExOYZE>F{2Y<}uBF0?Zb7l|v(hcYLQZtQ$abf#0E79y;?`mQk=J*>t8;RMc zYy088c`E{K@e^~`t8kpOa>V#9KDCVN`3;L-tu$7)hu?5c2jeUkWRO@%XN04Yjee1c z|BUZqniRR1U;A}Dy~z>NO~#oi^fltO^rQD>PXzkCoqJ9#F;$PWG6~*EhS``6zVX%4 z6XyIsDa7w|f{*-DVio6lj{DVXF2x0Z2s|n&KfDc6h(%iG_6dq zM++Koj@VZxU#+_Nbkut{z6=Kc+f+65IxEQfit4>{JJ+{x7k2iJT$WglD zfAOB|qik{M_QxJ-%QwhsXM%{~h|ea%S3Uv^E`L5>?mKVkosTzu09!oXQ90p46IfTe zQ>Vtyn^`S$2ss}~5fAA5ca7bRutd{KogMI+< z-h3o4--J^_tQ7{IugMaL5j~La@unIkOHU;vFQ*}7ADba2`mC9#hmk0w;LhFE_pGj= z6Q^4xTcw?U&#$>>qGF;!sr5Sd7mbQ9K5kX=`8$k-SLITZmj4i=M$;6B7&} ze+-qaG-`;-$S@2Ws?e`12}<31DxD4ZC+3>7wdS=F%Xw}j z5&RiwSoHw{rKN>W4nca@b-1xygR;N&I$Ag9KO7a7bq#zSTDmudoI}lYO<;$t>&Dzr zJ^DIt!Ay+f)s3QJ#mSVMZzQ7&jCSkHb}vWESZwq$yBmNom!SJZ>{6LLs>va``UKG8ELDwyWD{^F{Ia{L)?0}lC(LTyS6m9^Y(!G{+AdwN3ICr(eT`z0 z7*X~3g62GCehma2RdE;nvhuB}k%h8*qcfPzn);a|qZ(HsD z*82#ETzW$HYBaF*feoVpwOO@hjvrxuO%0d-)BmFBD!`(O*6q;U-Q6jmgmj032+}Zs z2q@Cs-7OL#AuS>;-QC^Y-QDmu_ul9C4W5`2v*X`?u5~U^JoT~U)64mOZ8yE^7<;!6 zE0c}ZU_E=I8gRH`*BM;l*3dXm`5b98!EvCe9=;^AJ958LNEf~2vUR#eY1$c5PK02J zRzlCw4<-s%`xZof+BV%_V0sPRkOnKC6^pG5J18Q`|%xU!x$t zwHH=VIlj6~_qFIe%RcHBk>1yL!l>#dTV_s^1OPl>#HdsnNyfhR9^WaD!oS$pJ>5}x z<^@Q5Mi37X{od`v37H!q3nb?Y!(`b^f-bIWRB8=`$9?#H$o zcVHC0F>~1_+@6-55sTQ6(~M-KJPM|&P~9c2EM6TJY=1v_HOp1V%)r>Moy%Tmb2<27 zLcKQ4nXt<|_}{hIQsvE4X})N20#s^mX6U1=48&cU@~`&*BIP9G z!Cl~`#L=g`f4k~&k}|TC_#hjPFkkMw`^vOeo+ZFW22u&#jLNxxwZCwzq9x?54(4D))~5Xj;gx6 zwbzmTS@ZZ{^@zkxsfkf3HtqWL(}`v=+d(Ip^>-8BZwZ^iMj*MT2>o0AUr7R~IEV7< zFFir~YD!*v7q?DBvRHc8`(uHXOFq=-tS4fU^do2wIaF&Z* zuDtm6K7&?>Ip|w0?Q^a^ePT)kB3)oS!ZpJ61RKYnm#p;@i{q2yc6>+Nt%vv@599hO ziClG!s_emmikB5G1r4eegAZ19rcH`E20sz(4-M z+HUgF?vBk_KJQdzweUh#fSmKhp7n|T2LegtB((Ai3SeiK%y|!M;yi98w{Ny#_Fm7R zKldXUF)nY!XxRH#)Jf}^whOGrCG(}?p+-4s_^JMT-Up_|PTz()$o1TQ z=bi>ZcG&W>aSH3noBV*er;L#tn!wpyyqxnyR(TY52!p}UR;}3TWwZsqtkGn zRGb*%pb>IxhH5@?AW(2fI95vER9QF09X>u&dAsY?3Oz9vLHsjTiFQvWg$ zhL7mkBqI~`LBvwwEO6+Aopl6Oa?vGHOAQXn#d)kk^0nn`p_dD_G6#+NgGVEe_hzC* ziIFLo%~5J|dJK6tLmr%*B(5y4aw08}s>b&abS``CUVJ_`*++d{Q2Ef>y_hxPx-;!y zE>&j@EjJ&Ov_1KyFrH*FZEp;2lkPj3VbWG~adBJooJ!e=)qotY-?1ywR4cvm94eho zTZ7T6Fp~+s8=hBq+WaTrz)E6W$Pd`)+hOQnv}zySA@`oJJAc-WLOdI)D7hku8nW)n z9@;fvJ>Vpei-;WwatIi{vds6tbRPPuNtMK2Ijo6yHJhE2JgCY!#N2Dxe-+@E(aeuWmZ@u3WtPZ{+IU-7_YBUa; zof8F3cFOfX;-MQlgm}B|oLNSN_`ff{HL&V3duHi-Z)_~H%X}iJwxrr*m#dVsdD;Fj z{Y6n3rC=iH#a~;-!PKWgcj=@*DViVdZiKuYKB()~?B!1$aUQ4FV1?j#KFqk+qeIl< z<8{JQi59KqgD3Gp*#_|e7!cN-4+H#5A%H5Icdxdm{&F)9a?$HN5So2mtttGm&ZCyI@5qM-$LeWKr4 z0GVv@uByo{cs#yq$@Gq}MDT0C-Rq-eRc*D<0joCX(ftcTQfx$Vw?`J!ft$XkeP z%>AEhp1*e%A?M@zzpn|Wm#e_FV2bK0o6h7u+|-@o8NML_`vRAX?Cj2$~V+h-h91s0ueTsi0+ zFtD?~2?z{y{PFbsuq?S~Mq1idhT6-6IVM_KT4E75hpO-(&$~;M3Y|!D>oQ_Az=cq# z@nj_(zOO4c6na;gc73{&%&Y*LGilf;x>rPig0B`6$17$<~k(bzyAi%D z)FIi~^f=hq@Zz$vokx;?=@}S8yF-#VPjc9XN3M{ zlkjwPQ$l(=7LLR7OMm~4Ka!`C{=Z9vcwzu)M`%b0GI-VPUJ35kbFSVOAt51dV1g`! zvNz5{`?_iOCF!~%bP7!Yk{@U3?Bu~Gi8=t+2atLH_vRGRG%WAr!(@l*$h5!0xVZ0x zM1-`=DNU{45y5J6ceHm>qm2Orn^NY@S9GHH0X?k+(;k@%b6*<%fuXE_h$o&d>Zuov z)&dq`{L^K#Qmxvr>4f1MewcoTa5G1~&k&h_B7W~7J~5r^QFFDJZmYwSOy&N;_5`^^ z88|IYPY0K=qs~mr|NX00J96ef%v7Rb5n@ON{TonMa)2r^g%dWw#QZ9qTCm|@;~hvt z(I<}VB!oKigJN-x#>a-?9};_#W)#Vpg`z$FrkZqSj^KGD+=f1Tu|I$A^-iZ?fyb(d zLV^Bk*@)v{Y@F#JI`qlCdidl@u8ppFR>4FX-A361=0ZB@-piTBteVtxetn9F2X2!y zsf?#wPrD>4guAAggYi|+-+uOAXMROl=t)hgu-7wP@_L5yKRv1)_TfP)Xg!|}`z8oI zi$9e0Rokv5>n*0bxVmOcOb+dSu9!s=MedzJngNY<>rl|%GKs9#+ZkBVx@2L{f^{)8U@GOw{wfUn zH+6m8G&VL?!fKHOw>2yD{6!2lfGL&)5I1CY`B?e+&dWzWq_l>*?x6>%(bEOkCCAEG#ADLpRK3Y_v1&odw zCr0YnM_SYXzEQU)N$M-Fo^Fy>@P*;E{j%OLyQx~hr~RGO^5`Q(+?soojx%A$wzSB8 zchP!k{Bog(UqPWYpgg@#Eu&STU{?BG&3u`3W_bSVDrVWV$H1l9K()RpkTR>D|Z@~E*~7cH8*DlND)bIa%D+St{5Gyt*xi1wcfoO z{^aGpS}f|leys!q5ds1Nr0M7NUDoghNy!9Mgd@uO{tfxk^^fU?y)EMlO_is^TV^3C zgGCaP3~uYgC4DR(c`E+`_LRaIqC^ZbW90$_3R@qHg2e&^xgv0J$ISj7g`l(GAfRW1ew8GsfBb8oeJ zw3@w^Z>c@0?~wE0gjRBQSXZooa5sNj++N2fMp*hngr)ey=*Mn+xAQ|KkFUb+34@2< zk$*mHAJDqqaTRrSd3zi5d!1jR(e4BJxUR0r{g7PXdYsRs7ris3_g2{vVPVDvV~~&VJ7PPg z0Dh(}Mf>`dr>Ey$LxLEUpv6c$7$HMFR4*Ts@t|*Q8~@u-^pixwZ#nijYiGU68M+&k z%)$@kdYO49R<{Z={*Cr_NJ$~{FvDag@_TZqE2314k|_C0eK1i+EK{;DF)cQ9u4L}o-TMsvVGDsD<>i4%#)tC2 z$wtOR?Ju%{{nF$C&^no{tf0KIpM0ZjvvG+UC!&P^tYWHywfm%PskuyMmW zj5D&c+bh_)xnlsJT$y2uA7{k`Ifi%Yon(-(Eh?M)?y%H6JY|cb zfd6HYqR1(1c6L@)J9KtdXUgJg=r>!rlu&BXi1S-nSwyh0gHh|dy<98@#$_{Q&7r2CHE3*2D?Eb$z?SJ82Gz#z3415N+|8iJgoaJD$jUgiPICoXGnv|Z& zjt(qvwp%56#m5B7oT{ljPk-0r{iXH1v}P>gl*EB&dA3xfwYc%v9oKC7$rM<|4stXs z+jIOGO74;C5s~aJ_}~1Jriq=ZL&I|0hry&L`jBXkwI!{koBx+tjHz+(Fq~1k*!`7) zDA%F3fX`)0FkRhM7{7s6pbVSWx2XA*dFQr$qT&4ykt7U(Z#kW>3V9iJf#P91XITX^ z$n`Im^Q`fpa!#wnP@?Kwhi__&mJWI|5ii1OdDAifT?KF}eA*q)w?Lg;D}mw0z`$|J-94`md+RPr$#dc`)`Br3-@n@ir-JQJZtj=9Cus6~@}MOjFNC;;uX0hHqP%H=hk=2Dc3w<=%T_k(Xnf8HupA^EP;NpbZ*A4rpkVsHwf6# zPcgKod97n+#K2oOKFK6{;dHmQVs(R{_-VQutPLL8LWppKl+uwiLfN!Ek-;Hf%29#Q zjp|-b;FqntGUVFNxADf8N?c)^Wrl~a$SDIy%j`FSYwS|JP*hZfk?iBRhwn@7pj@gW zib8jezI`x3qT}sYF}~o$aqG;69S~Utt`i$YALDwaRke7NAy2mz8pkTTW`UdT+zTaGA$@vgJjd@YJ3_3o+8UWM_> z2&`4EKRtc=)nI|08ie^*zX6^`0!BbrJN(bADLR5p38D=$3R-KATH*^XXVT5BH*J5% zi37et{_z<|*{c!t)4|^kQufQMN>LQUb~7g|dWo@qIZ)ZYKO|DYg}4~D@#AEn%GzM3 zSNJYE1<1Cyk~XijUArbF_G1ZapS?G%z|7oT{V)#Qm32_z{}vs;vH^Vv5q=swiaq)| z>w`o!9rEOHt7>=1^|W%~apUj2D7D^-^6rFzk&hi8Ytc12)Bb#XPHN3~=I)*CrX@su zx1yA216uot4pB}M<_zIFnPnnXcuZ9h-As8a@&1It>i|oCJ1sM;^rXILL!!30CV%EY zQ(8u*i~0jWBoV}@_J=YDC8;|rucJ=#fLYJC4a}vW<-%)_NYod~b>am5i(|X_fV)=c z`K9lJdqcz8qH2B~D}Y*$qI{^5v$Nw-cw2EX7dA#X=K$Y;=?tr-NEhw>um?@I(R=$g za^J_y8vAd4{)wW8>I-pOd_?2T{vV>&-W3%UfWD-2d71iKTpU6MjLYPs`8Irb2Q9J? z!)$uqCmIgx&$EY>O<;Y{VkgYoD>1)wUyqdw00mwH=pAvFazwlCbFWy{FMK|~s!YH) zwosrkOdha4BO0H(*qxTEA9xF&INsOf8THk5+l$z})^PjPO1!3lth^01EbI-n-RCh} z)rmPQtIw40<7j7($S2$ji)_4C%QcwYzM{D46YKy7s@)VlfVGP=Bv| zsD65_vOGg2rf6_|K=z8F#rx?V<@DI!8L*oyUcG>Y6GV^1K2IxdW=3h<73RfcT3-o_ zRXP4@4`Yl@*#9#wV17nH+y)YKo;vKP^CG1Ra+PgL=ehaDXAK*--N>|e?fQCo>D?pr zNjmL*h6>*~eCX$Eqz^h*P}Ma~mOsSodfZe$ZQPW#ndD>TV{% zh~gDp%p?^!62_Ap+EHgjtOzF`a>H8Iat+i!@5QjY2YGG_cKji3he(Q#IVvUe73F_v znB5xS}67`{hF=rURtKr)R)`?@_J;R{6|8^gQ)??|2fQ+clu^P0ihl zNKPh&q^SfdfB5|y+xrS}*VgWPLft`h(aI_Q$t@SdEENZryQReJWBZQF+~aSgLAB^# zN%z)gYSAw4U*{Kuk#3UU>UZ;!K90{Zr1_l>!!aV4P(5A~rR1o|89a_jcw8NJTpu=A zlvG_42L%O}nj0X7J$a!f_z@tJmq_w*U^IA|X6JTgC{Ov$2r59jjLZ$OmkO4Gp9Js% zK$!}~!2%;>qT8SZ8D^f@N3}nVMGQY!j(8)I3(=Hsfuhb4rzb7pe>p-z>;j_vz8 zf~J}WuIv08tCYIoi2iKufVXOJkj-|4tetMxeyw`Kqa$~u4Ks_81&j8^%&FtlV6)YU z#K*C6++<^uyngYE2~*HeKU z8z9ch#=W4tSFbG*kulZRa5BwZ=s5h$I~KsA^;g&?1wbe9?r$8m_O{fwIF6| zTuj=a`@Klw?ks&tS-zbr^BWl*k4(St zj!0culI~ji`%dNv!e1uk^je>_|6U77+!ylV7|sgkTZS1nJ?6A zAP(VCQL-bUI_pEedK@mHxbk;b-tFmf2_&-Hg+*KA$-mkkuS&hmhM7jervH%WU4Mq< zPUYgF!OYZ#0G*H!DKJ<-CObVUD(Z0$Q~L7Y>!bFSwqTeyDT_be6cb(y$|EE;L6P`A z%u#VrF--b|5}kX;&rxAqL41hx4?ar%e57#aIWhmN5jC{0)R9PxwXdQ@@Wl1n2_>+0 zd-3GJ0;c}-YD#`!Mz&v@8}CnuVM>vCt9%ne6Zr$%tSFpUWiGK8)SgM>rDm(m1uf?; zz-sK#XBNBE95;9&sq2mK+S}~)!*y5W)wh^sYzNaWV;ggPDLVK>T_Nmdn8^&B^Ght+ zyc(kGwqO^6=7*cq^>Bl}P+Bvab=keOgUAYS(D6Bbea3n={c7{4D@p;Ov zhU21Di(D{wPS_uGtYj{IK2|sU3e$j|lasSX$)QGN_uf?8`Scq8@G~L4xGIQ97*Ir(T`7Zmb8i|jJJdkQi=0?(C0kMg4}~U!5#9Ys zE}Uit#aDUxkfjELs7JS6KLoVu%S$JqC7@$sDkpu}IXbGkvBC=PSdG65m-PQwq+Q<0 z@YBvUd&;O(Yj|<-(B^n_?;^#Zc#Du-tC;{F-w;sT02+>CzB^GV;p6bYpyCdqPk$=K zSnIdFtfyXcXqEV6sRa>+cVv{@u~vwY-Lo`it2eJzK)<6Sgz%L z${H9BA167({u9>X+aObYG`Ior@lXF?c#`>Zc--T&WUB?$<4fmt6%`z82)WG_4@Ok| z1-|y(aj_+7Gu@rovMeI{dNI`lNyUYZ@EO!yU~m>7S!NE{7C&twt*Lb6XL5TBdGjA{ z)=^QrO^1DFg%g16o>9odawp@%S#{9PdoRh}_l-5RIA{fa?iRDEPlS(-T76CBu|65y zW=tWig?to<>)zs1>Y|$Y&?x&w>hsUlE8@|ApHm9HnkZvSuWFuq9Oxh!ucTgQdNlm| zZb9`kOgKI!0B94I!aC!P0^Y0n@@^Q1cK^UR-G<~h=?RR&u0k`5TrV7aYkEv1ZEQ-G z-~w-NKXs3fQB&@}VZ?irdvZ+$ER>MYP@G)7ZCBv=HVEfJO$}pbXO~t`2#uup^0SdC zS~APGPv5`bI~W~AoO;w;4dL)@Ca(Oq-n&m5~TqY82*1xrR``97X&e(COJMk;tz`kiMcsq0FJMpP`( zmZKz~X^RW(>ucXKbKu6%;x^xrx_q-ZSAJR7LI3*hHvJM7f?F|l+zr6`6DjAVGlTzb zqhaEV9;9XXv9d!-V_US&BI}N~Jdf6Z@wMEeo-KfnaB|1mQ%POj zaEU%@$u`NrBgJWGgWJmtTG{$){X>LVh?pe{p^Wnnx09Gw$&H1H0)t)k#X=zcLxu*XNEYs9s7!9&Td3gL7loF6Fnn2LBK1yW0$g{Rn zrdGK__l^%9-ZPX7GE?V#LTh+pSZ&w>E7P9HrvmyQhT?qvl);Opl;1A~u{{M9?pM>U zciDmW#2i#c1_4yW%pG?SL8%1+dcz2xYcKzicG1Ajr zEr!5m&I=oI&X-D^{6k3)okRgTtmko#^CaC;da6JCd(DuvPAYv!@u)rG^1SH%-C41% z_q+=i3hn)o;avKaT}!)kP;kGC<sn=dpJ#U5b$AM=VTnyrY|inRKxmG`Tf* z)gz)*uk7%S9a~B=+YwRyn5QndBU=^G>cDp|a=$--t^iBFs=jVGP?*G9ob-cm8jf}l8M^b= z+ifVGpP!58yw4~v$8(;yMFI@ODayRemST*IL3mhNinDoeT}zLb{4;zVbN44!!jRVG zt!>iJf}U$+OFn!FNlb6zTZWb{#AYs=dJm3zHjCnJesvWd8304x* zWlhslMF_m?;4-%fJ#y44WVu^cC3f@DYvmUo#?h#QrbB23*Sdkjk+RkDECUZ8Uj*^n zgtqfV_Zz5!$`dz)`qj5|jssqdm6PD;)d;3vbC|a^b8H9+gb7p3Th*XW9yC{HJZi?O8s~9uo<4%zr~Q77(FQ6 zmIWQ*zuSmXf=Q5%;2@%Z%Q5d8pBMkxGQ1{XZ2s>S_dPnE;qzH=rB@IN_kXw0#oFMB z*Mg{N`qvZX#~&-><0zHvMn5V@CWUUZMq%rB;3R%k8ai_nB>|VNP`>feHxnSc_vFB2 zoNE;MsgSJRG<})J0U3UIX+y*|1PdwS*{XJ=gwTI}zaSL-{HRA?l#)Gkq3b=?s2J6? zPb*mk0+PQ4s$&oOY(Z(P<*Dphw)!of$jOE3PqiQ6@n$0#)`2>y@S6zWw?yR244atw ztcZf=utO`+jZ3pMm|CE#W@X^&(o=T3EiQP-igj>fJTW>2a!B&V$R3|;WMZgJYCyIF zjYvy^Sblz?Ke$^(vNzUm^*0;q#i=%)wPAGhZ1$MwL73y?lQ*mu@Xg=dKcIki(Zk}# zns)3&LRyppglB%!3ZvPXQcGc2nDtv~cj_M9Gek#MOxi!}->K;agEzH2jn7t)IlK>~ zd`rX_@IxMK;f>a5xe~staP&%_{`2PZ35|D?3fUwE5%sE7nw&yiZ%Rk9A3O5oCEbZKNxtyR*}K8DQem&@dlY7z?jC@(Pl^sG4}GQKJM z)N3*e*X|eQ1#SHLBa%34ENh%iAzGFAuyW4IU!wrwp1oC8P7W|pTkJm`Llx#0nR+VV zo+LqBIf9OkE-c&ocv-^ka$mc+NTE=JO@nbU*AeX5fuoGdBv2Hf0og44b7X8T;sq}g z)SmLQEU`V>E@WM+ht#6dw*YAMFs0`aQY=HR?JS`N=(* z$ju6Dxuhrq#=jr0ojFIx#%zBFgmQOAJ_ij-Dd#bo`6a*3UDB3Wy2ma!q#h);!cRLY zeq$s6Ej)bqIs~+9Q&AIcI83ie2<{69PkaJ@J9r0O@kRlot1gK~0f~KAoQ|FMx{p3Z z8@N&pI{z@g@#RZCjMXcg$q$`?a1=g(cw`SLOqq9uxSZsS?Rc=Zx;>Sp_CKuL{m##C zX>Nw>?(PlG&qn}WuI4WlnH3cT<&33iSg*rsl5e~_4mSZi&mVY*j;@2t=PAO$ z4>+BKK#eDVy0XPcDQ)shBi0G$mT> zfQ!2MplT@!G|;}s3K22oVCP55*=i7M6od$P-3!!QOzOVi<6Czk#lXNAPH6P~T(uP7 zOEZ*+&|V}jBW*(*^}W%zB%}u9ZP@JHXJpX8!^8h-Y^3Z<RQWu4O9e#)V3eeBD<7?FPJJf_J%R} zfcg`4S)X=gRSk8j!&Pf1a$1O7nYTgT3ZnD6KwsWuM&FQyK^vFX`5B2;cX&A)BvP6E za&@c81!ik7Rm#DE56o^=z-~Zwzl;R&>FrhAcexb&s$g+Gs{!KNq@<+7b8~yAf`B_H z`_CWL1plX~>p3$c!){om?JNMTY0~0{5Id;0tPO%b**b-c3Bz(PxJ@MP56TS%ua5wN z2f(%VQ?fi`O3l(jdXX<$;oIo(K|pX^Tf;A4+RzuQ%bc~8!agr zx}OGZl94o{&jNgYYtNqyiOH@05f;Ab)V)?Uf=TmO6^M_;d`a2u}MyYHCjT9C>2aC^gK)r*aag%dEWHEQksZ+HIWh~+Ka~Ro7KH6HCJ_f z77F_}=nb#jM2g<<&b{6=-q0@I%e~^7QxNwOhJ`hbt*S*PsXCNh{8MFfw#y$|caO!b zO^Xvlbu@whi!LmA?Bw2l$atpglf05ro7m$CmbA1qH8(dl$b4+GtXc@#N_Que8Q3wH zOBS?e1mvxN8F>3tkh}}{Td6*@S$gi(N#)+WW`gA1rY(1nA8!yzRN`@w5g>w$sZd7&sR&HM+t5bzm6`<;xm z;Rq8{%Gj8k-So)cv_L&nE4H9>v8~Id<2NGYE2~!MTLiY)L_(IYy0Ha8it*cawPC0w z&rLu5$0Q85GHNCXUgHO^gM1X^8y)#(%ccNT2)EEQ89K#vo3~h`AQT!Rc7HYIH+&pV z95b6(#FV+@`58)n{nGhSayZ%rd4c2Vs_p8$Qcp7Nv4VX{m|=vYiS z&7i-4wIZ}?y0T91uW&)gbtd|^pWNOXPsW#X_+L4SdZnKKe8Zt72zqHot?c5uJ~ZG?)ja zfZ?)g6cq~#Nt{~|`SPzYe591BTrgKniY)lM61N)tYs9?7Y=b5O7uF{t=RgQh zXs&>3Gv4Rhth6FjLeg!e@E~51Sw)IyXFdpdlio0pkV4iI)&&eQ=a^{$1CJc#AqfK= zdcrMw)Wzbnfd_NT5gJD~%;zCKEl|;Cz}+$FGZRw$BE#VyADh{qyaQIbHZnVn3bXCw zHz+Y;obVktS{1dj!S|$(eHLUM->^!%6oi?_Lbf0_16?D`0=1wP1;*@vW^k^f_XHbp5t)kAXF|Wdbo%?b{NYhIqEOHap=ubSqdMfco`8_y zcY0sGw)gnOmHZP8zQXK)gq*lwB=8y^&U83BI^*ytVpHNoiGHLSOnV)EuX}1#nS|p# z#CfPQRS^?#4PTJ=3K0>JTUdC%tO^B!i-#9FVov@#Sn6FjU;WK3Wd!ar=o^qVhvDC{ z{9cD;X)&lPf$Z43_&^qdBkE@u9M~e@ zu#FAl2RLyApHcRX(_cU_HBUlu_to05wHq0EFiMAJA2xWh*4OL5IUGplQyGfK`Z$(HjEU({P}>E<0+C zP2w=c#iM|0Fu($BOFB|!r01n#-u-NJ7vG6q(p!O zx`2QHYG!6+@-AO&SV`od;9%R0UV?z2AX;i_h(es(0UxmGzxm0>gpZryD5pLHo#?Z<`SJDrLY;FQQ~LRQ!EU5yp@tG5DcSqr?lko% zN98FEbf}CGbDQm9n$<$&v&#F04q<_ikPNTC)inrXc3%D^Ht|!H?zI^5se^sQUbUro z`U{C86Br|vCm;1?Vp-&O#IN7a=a%DMr$H(sV^aFu>$l5z){hpb&@ZpV4N9wvz8D$7}=@?$}0&l2pBZ zEpmdN!`3Bs(vH{a{?gYLhj|e0AzhhkltuRTggJ}z*mg;hT=a*(x7)Da+r8P7-lHd^ zbu!)m{0|ZzR-l#GK-ABg8{6R{X54_KsK)?LY=kzdOjaOHgFH#m3 z77~+?NPPLiI+!k|0wx3wC1q4giv-`xmmpCN1_UYrW`vBsK1FhJGPjUW7-()lc%YRa z>c3dV7!ZuPrt>g#yMP15_it&|FL=`ScG>23>q|D&zC{P_ujjc2F3Qbi9G{p#xiL34 z7gtlm1HR(tr?j_Ar-*r{W#{G^gWyA9VebQ_Fb!Y`KVTVF5qtRlSEmA1TU*-?+ddI! zM7XEX`~go3B2OEMP{yU($*K}ik)Tit)zw8S)Yv;YFJ-!Hx+t`^mCeF&baWgx=eyp{ zioXA{M49e&%W?zgniXtMy6`qvBW3AIbqa^SRD?8bIdk7<`NT4O^XOm zzV;S%u_hugbAVR$?O82I-m_)`ZJS2x_qWWpRFCck(jK+n*K6M=XZ}AIz|LeyJ8iqw zmGo!-PZoJdOy|6vDfBQ2P#Qm*hPL!EX)dcMr&+DA>=b7_Vd>lWU4mJzE5&bJRq{l( zXIa~(Y47T?idXlokJ>x4ZDP25UqPZhy%SZ=#z0T+|NWXYV9KtS6x>8e1pvZf`b~KO zx$!%FHH^1qoor;LaFEy!qSQXqT{`Bhkm0d_;8qmjC7!BFs>`P#X?%?$czWNt1T zj0B)X8k(CUXRxJ9b*<#VQ1cj7n%!)R%}~x@QP(eP67TOxnVB&?+hJf42dEPu0!jmB z_{z!(GCDdu4ZOa-J~1h&q`Epj@Jrwj5(bTosDk$^?rkRnIV_=qo)F8iL|O)hKoDFK zw4?*!1X_^u3W&FvAw$B3fG`jq(%RZOtbWe?8J63=kBl?D$^FXenef@;d_?ZJ9d5Jm z0ij)>xDk$jFA2XPPmKq~yYG}yvkq&t)EgCc>(aA-{2-o7OFe~b9w|w06y#IW{E-0Es^2uO_1^aI>bssj&KV~K z9~8;18GOU5B#5gW-0)zr;IYGPY+BtPkv5G0$8hPW)cfwjq4)TpcveVM)Mc%naLdaD`*SY-Z~{W}l6JtraMJnFz58O=$kYO%^4Br1r1-G#1^SyJc# z?zB}ds`Q@qaJcaOCy- zS+C&62~$?(di{G;+I(bnS}MFEZDXZmDxdUM=j~)QcO$_kEk&t**RbnZ^IXu%ucM1X z#{dDF0vJ4P_cv!F^YiG18sW9ILhSmr_&}0%_xA@F6l0ylKP;wE+K>l>l^6Jn%#W(W zE~A_r936ev1kNwdT`WHW>NUL&AL0c8_eNV=TX%1-B;aRQewzs!9+XcVK+VXA2()z2 zO##eL%``OdK)5dpU;^%L>HwdhAJ|(g?Cj`(Aq`yDdVI_cJSfi!g&mYfEI8*OqoM)8+*$i3r63$cfEc{4`JM+pYE99 z_)ij`0)u|4A$ao^PPTsFlRTujHaslJ9;GZYN1!P0YlVZ;d8`U)`vNv+3h()Iz zTJiDow~-B{(ru4LG2)3mxODs`ob(>CJY0U~GlRiK!(Ra$IX1|MKM{_Lrt_GoTLY2| zdT@$V*cwqgKyUY z0*>?`Z~{_K%}b0fV84m3oGKI;7KRF(C~LD77SsWT4i5N0f&&pCr=}LC)6RZmG4A;!^lchdqlg8iP=2 zN(X{|hmQFytf{cM`9&UQSq!)DG_iW8aZUXikw{mTQr*TUNzFWESiKSro1$ZZX}~?`5b_8C9ZCbVU=9ur0k?g7bnSt6`Rd$1-XLRQ$^xzGu;I!8=u?2F zVYxjNPpjG{V|6h%AOOAygczSC0Am~qa1LGHEj?lScyGi278*}a5kINc(k~l4Z_-66 zEG;d$9Z2;~y;22i{pMY_QUUPEGc;+2R4_MCj_2p~0DWvmO^r6Od~IDFpm{U1_i}dT zC*;uKqgfc=;e|llFZWyURD^x`mpt$^iwzvz8o-vl802ui#-9H5YqIAhfEZnpa{Noh zz{`%#&ToK_7YKbiu*3%(+m8MH_+m!UYVD)M!D0hhv`H|{*9*F$b))wO#n7g-*UpFJ zBj$Y2p1r()fFK%H9$ZVv=HNi+OVY?GS~@x$p-M46dUb(G;pV5u*XXIhWrK%j@9!8G zjaQps@$AV1%Wmsy%GW}S%KVN0ESRb+Uw13jRoa}pd=`4IryHQsfk^;uzRtAYv2B!P zum3HQ%v6ee#=~{a(q9O*YA&cE2R2j*M&ODRRw8dZWejk>qzDKU6gL>Yhatv(8Q#|m zkAsG5-4T7QAAYWr2zd{naiB_xRr>D&M zLc*dXy&fgoJD3bWo{glpw;1sE#sD>|FOlqP6#vhG>d{f(`I)yMmhL!$CEiSO z&`yl6wr-6FCzrO&%~1)a8^23X(bUaY%gaKjWCkN^lC#&h@Z@&k54Li z=p~1PexEcEq=nP3u=HR0vM@BZzl#nNn}X|cb!fkAxENkvFRsAR9>?@_dna7TEE2Vf z#`Psy^m zSRHa-0`MX%J~h5^;Aj@$_uapZe8dECFWy?cLoAkWl{n`}gmUz@Vb@k#}!Z zVlP_1+_@5g8Gv&Su*8~o=8B4cq_A$hVXRd$=%^5^id$bdscS+K+K5k2k6u|Z!j^2d zC4ZiJWMpi@Fp3D76JKOpT&j=NS-WgOBm%x_)0J4s%kOR~mriue%;DJi_O;0+(^Mnz z?Jp%mLu__JG@vPRo0DMYlEWCfxWG$kc%`m@kz9Lm0nw=WC@a2uBlO&{PeQLj=Ge1B zT~T>lkd7H&KR9#dCm0Q<@m_%D&)vxAU-DZC1Q#4>gxJU( z(IbOdVbaAIsg9`vr(E)f!0A1j3m<{myll_f1cgCS{qUTChmF1jl+3O)o1PwMU#J*} z&G=0z^zdN2uWirroOBs1LJX>VL>hKbVN}bj!K{}1=&4$dp}dCydy=9?ezU@oycTsw>=bY&<{ncO-h_Zi>v9ZD>Bt$Hj2phCWb=e>3 zdcPi314vy>0OBT?8Qj7=5zn^)K1Im9{g4RA7RKnD9MhVcn^Vxy(J=u<1(0O`-YMWY z`>MAp_w?-ft8LUPj_3lKn%KWV*M<|IM zNabR#mpSY@|3V7#^8+>dRPG|9qB8TQLY}!{>zt1eAz%rUmw(f$>+J^oH}+VPt@G}d zQzk2JfsSP4?^`3mVI$MYJsG{Tz1n{F67 zMq2G@yg@liY+zwlf$FbC>DLY_TG3Ry2n~}Ry#X?J&~SOpm*MmK42$!}p2{8{)Ep4E zY;dFYaeFG#hHUGicn*9kh6*xtO%!O>03l;Sl;8y2^J9CFR^MT=8*ET4=OXabEGaE5 zaPHP%yw}wJukxR4uKD}hpUKIz7l2>I{Nxr09XoHWo5W$TSIb& zhSZ?npZ$4f;$p3>A5wZuU?Ilb#5QLG{2zgPdp(pX&F0RT`BELAYq2eI$^BnzUmX?Y z*S7o6Al)FPpn}u@BHg6|(%pziNOun^k`ju9N+T^PT{CnF(%sF_%>Xm!;rG7px6VIj zecw6j%v#JEo@e)c@4c`4-q+rHW6~I_6C|#Qz5F|-f5-P~JF_5#G`)+)9g|pNI@6iS zAGXwvk=o43@glx(lQ4O0c;e}q>T_{+$wZOf^t@`Idpcem515r4Bp2N(zs~9_M_`)# zQ2v^h_qx9%gpV>4LYPj3+OL{hZN{s)C*~$W8hG>Q2$dey7(`yp)p+AYPC!iD7I;3# zKIw?zftWGs8XFgd zv-bD*f8vHfgoA>X-9eh%Y|WumgYV|{HmeQiKt@9Y1L^Gk6vDsx`bZ^9ujmkTFR_Y{ zb(>dC<{WdXC1C-ABX98cn^j9LKa@S<1wqfQA^O2i!&;*8>tlU0Gc^#S52T8-6QTCX zK=x2e=Ou^)laj(f*ey%Occnek%*Oo&MSS1+X3G({Mwa>S)pb2e1y^s#{I7EF^8Oc- zA=HiIi1+!wX$_$WK8(&=js(bBu=#%`M*N3nVTt+aAHoH0+u;8xS<`0@;1cRBFjr<0 z9@`b@bj>pf)WnN-Ob25+37Q1a3-9WfPgg0P?Jf_TJ^5+{E;A2LXMIpkzz6ugiD3YE zXZx$S(VGjgzMq9gi{k@^SIuQb*p>Y$Ypx)Wd*JCe@YSKK*$rCyTlMq(Ei5fBbT$DJs?>N=)ilw$0iDn@1UxS?=@Pkgqt>YtD8e%~=FA|mt z;q`?B6Jm?tN|vVA&|+D<`xr@vDjxSKe)zuM?v3-liMqzNpH88|uWnt!XcJX%nei*) zqOqh~H@kLbQ89*T2GU>)WYFN60CN7dZbOUZfktYGBwjfW9T6Y{!ZW;9z~�_-oi8 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 diff --git a/modular_nova/master_files/code/game/objects/items/holy_weapons.dm b/modular_nova/master_files/code/game/objects/items/holy_weapons.dm index 2316ab3ff76..3abc61d0b76 100644 --- a/modular_nova/master_files/code/game/objects/items/holy_weapons.dm +++ b/modular_nova/master_files/code/game/objects/items/holy_weapons.dm @@ -79,7 +79,7 @@ /obj/item/nullrod/cultdagger/attack_self(mob/user) if(narsian) else if(user.mind && (user.mind.holy_role)) - to_chat(user, span_cultlarge("\"Partake in the language of blood..\"")) + to_chat(user, span_cult_large("\"Partake in the language of blood..\"")) user.grant_language(/datum/language/narsie, source = LANGUAGE_MIND) special_desc_requirement = NONE // No point in keeping something that can't no longer be used narsian = TRUE @@ -93,7 +93,7 @@ /obj/item/nullrod/claymore/darkblade/attack_self(mob/user) if(narsian) else if(user.mind && (user.mind.holy_role)) - to_chat(user, span_cultlarge("\"Partake in the language of blood..\"")) + to_chat(user, span_cult_large("\"Partake in the language of blood..\"")) user.grant_language(/datum/language/narsie, source = LANGUAGE_MIND) special_desc_requirement = NONE // No point in keeping something that can't no longer be used narsian = TRUE diff --git a/modular_nova/modules/mutants/code/mutant_component.dm b/modular_nova/modules/mutants/code/mutant_component.dm index 52ce50e1132..dae7d0bdb53 100644 --- a/modular_nova/modules/mutants/code/mutant_component.dm +++ b/modular_nova/modules/mutants/code/mutant_component.dm @@ -108,7 +108,7 @@ if(host.stat != DEAD) return if(!ismutant(host)) - to_chat(host, span_cultlarge("You can feel your heart stopping, but something isn't right... \ + to_chat(host, span_cult_large("You can feel your heart stopping, but something isn't right... \ life has not abandoned your broken form. You can only feel a deep and immutable hunger that \ not even death can stop, you will rise again!")) var/revive_time = rand(REVIVE_TIME_LOWER, REVIVE_TIME_UPPER) @@ -151,7 +151,7 @@ /datum/component/mutant_infection/proc/mutant_death() SIGNAL_HANDLER var/revive_time = rand(REVIVE_TIME_LOWER, REVIVE_TIME_UPPER) - to_chat(host, span_cultlarge("You can feel your heart stopping, but something isn't right... you will rise again!")) + to_chat(host, span_cult_large("You can feel your heart stopping, but something isn't right... you will rise again!")) timer_id = addtimer(CALLBACK(src, PROC_REF(regenerate)), revive_time, TIMER_STOPPABLE) /datum/component/mutant_infection/proc/regenerate() diff --git a/tgstation.dme b/tgstation.dme index e51831db3af..a71c141fd94 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -978,6 +978,7 @@ #include "code\datums\ai\basic_mobs\basic_ai_behaviors\find_parent.dm" #include "code\datums\ai\basic_mobs\basic_ai_behaviors\nearest_targeting.dm" #include "code\datums\ai\basic_mobs\basic_ai_behaviors\pick_up_item.dm" +#include "code\datums\ai\basic_mobs\basic_ai_behaviors\pull_target.dm" #include "code\datums\ai\basic_mobs\basic_ai_behaviors\run_away_from_target.dm" #include "code\datums\ai\basic_mobs\basic_ai_behaviors\set_travel_destination.dm" #include "code\datums\ai\basic_mobs\basic_ai_behaviors\step_towards_turf.dm" @@ -4840,6 +4841,9 @@ #include "code\modules\mob\living\basic\pets\parrot\parrot_ai\parrot_hoarding.dm" #include "code\modules\mob\living\basic\pets\parrot\parrot_ai\parrot_perching.dm" #include "code\modules\mob\living\basic\pets\parrot\parrot_ai\parroting_action.dm" +#include "code\modules\mob\living\basic\pets\pet_cult\pet_cult.dm" +#include "code\modules\mob\living\basic\pets\pet_cult\pet_cult_abilities.dm" +#include "code\modules\mob\living\basic\pets\pet_cult\pet_cult_ai.dm" #include "code\modules\mob\living\basic\ruin_defender\flesh.dm" #include "code\modules\mob\living\basic\ruin_defender\living_floor.dm" #include "code\modules\mob\living\basic\ruin_defender\skeleton.dm" diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss index 2a60436ebce..69732aac5f9 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-dark.scss @@ -579,24 +579,24 @@ em { color: #973e3b; } -.cultitalic { +.cult_italic { color: #973e3b; font-style: italic; } -.cultbold { +.cult_bold { color: #973e3b; font-style: italic; font-weight: bold; } -.cultboldtalic { +.cult_bold_italic { color: #973e3b; font-weight: bold; font-size: 185%; } -.cultlarge { +.cult_large { color: #973e3b; font-weight: bold; font-size: 185%; diff --git a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss index aa4dab87c66..1b94d9f7e50 100644 --- a/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss +++ b/tgui/packages/tgui-panel/styles/tgchat/chat-light.scss @@ -601,19 +601,19 @@ h2.alert { font-style: italic; } -.cultbold { +.cult_bold { color: #973e3b; font-style: italic; font-weight: bold; } -.cultboldtalic { +.cult_bold_italic { color: #973e3b; font-weight: bold; font-size: 185%; } -.cultlarge { +.cult_large { color: #973e3b; font-weight: bold; font-size: 185%;