From d10e1adcae9067ff9528eedf26f530d1817141d7 Mon Sep 17 00:00:00 2001
From: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com>
Date: Sun, 4 Feb 2024 16:16:21 -0500
Subject: [PATCH] Adds Malfunctioning AI Deploy Turret Ability (#23473)
* Adds Malf AI turret deployment ability
* Review Changes
* Check the Eye
* Do After Once check
* Turret Invisibility during Deploy, AI Control
* Reset to initial values on deploy
* Better Audio Booleans
* Helper Proc
* Alert Defaults to No
* Overhauled can_place_turret
* Modular Proc, Global to AI, Null Check
* Callback changes
* Autodoc, removed extraneous line
* Removed Extraneous QDEL
---
.../gamemodes/malfunction/Malf_Modules.dm | 102 ++++++++++++++++++
code/modules/mob/living/silicon/ai/ai_mob.dm | 3 +
icons/mob/actions/actions.dmi | Bin 155404 -> 152097 bytes
3 files changed, 105 insertions(+)
diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm
index 1b2e70664ce..beb5ba1840c 100644
--- a/code/game/gamemodes/malfunction/Malf_Modules.dm
+++ b/code/game/gamemodes/malfunction/Malf_Modules.dm
@@ -341,6 +341,7 @@
turret.health += 30
turret.eprojectile = /obj/item/projectile/beam/laser/ai_turret/heavylaser //Once you see it, you will know what it means to FEAR.
turret.eshot_sound = 'sound/weapons/lasercannonfire.ogg'
+ AI.turrets_upgraded = TRUE
//Hostile Station Lockdown: Locks, bolts, and electrifies every airlock on the station. After 90 seconds, the doors reset.
/datum/AI_Module/lockdown
@@ -626,6 +627,107 @@
to_chat(src, "[alert_msg]")
return success
+//Turret Assembly: Assemble an AI turret at the chosen location. One use per purchase
+/datum/AI_Module/place_turret
+ module_name = "Deploy Turret"
+ mod_pick_name = "turretdeployer"
+ description = "Build a turret anywhere that lethally targets organic life in sight."
+ cost = 30
+ power_type = /datum/action/innate/ai/place_turret
+ unlock_text = "You prepare an energy turret for deployment."
+ unlock_sound = 'sound/items/rped.ogg'
+
+/datum/action/innate/ai/place_turret
+ name = "Deploy Turret"
+ desc = "Build a turret anywhere that lethally targets organic life in sight."
+ button_icon_state = "deploy_turret"
+ uses = 1
+ auto_use_uses = FALSE
+ var/image/turf_overlay
+
+/datum/action/innate/ai/place_turret/New()
+ ..()
+ turf_overlay = image('icons/turf/overlays.dmi')
+
+/datum/action/innate/ai/place_turret/Activate()
+ if(active)
+ to_chat(owner, "Your assemblers can only construct one turret at a time.")
+ return
+ if(!owner_AI.can_place_turret(src))
+ return
+ active = TRUE
+ var/response = alert(owner, "Are you sure you want to place a turret here? Deployment will take a few seconds to complete, in which the turret will be vulnerable.", "Are you sure?", "No", "Yes")
+ if(!response || response == "No")
+ active = FALSE
+ return
+ if(!owner_AI.can_place_turret(src))
+ active = FALSE
+ return
+ deploy_turret()
+ active = FALSE
+
+/datum/action/innate/ai/place_turret/proc/deploy_turret()
+ var/turf/T = get_turf(owner_AI.eyeobj)
+
+ //Handles the turret construction and configuration
+ playsound(T, 'sound/items/rped.ogg', 100, TRUE) //Plays a sound both at the location of the construction to alert players and to the user as feedback
+ owner.playsound_local(owner, 'sound/items/rped.ogg', 50, FALSE, use_reverb = FALSE)
+ to_chat(owner, "You order your electronics to assemble a turret. This will take a few seconds.")
+ var/obj/effect/temp_visual/rcd_effect/spawning_effect = new(T)
+ QDEL_IN(spawning_effect, 5 SECONDS)
+
+ //Deploys as lethal. Nonlethals can be enabled.
+ var/obj/machinery/porta_turret/turret = new /obj/machinery/porta_turret/ai_turret(T)
+ turret.disabled = TRUE
+ turret.lethal = TRUE
+ turret.raised = TRUE //While raised, it is vulnerable to damage
+ turret.targetting_is_configurable = FALSE
+ turret.check_synth = TRUE
+ turret.invisibility = 100
+
+ //If turrets are already upgraded, beef it up
+ if(owner_AI.turrets_upgraded)
+ turret.health += 30
+ turret.eprojectile = /obj/item/projectile/beam/laser/ai_turret/heavylaser //Big gun
+ turret.eshot_sound = 'sound/weapons/lasercannonfire.ogg'
+
+ if(do_after_once(owner, 5 SECONDS, target = T, allow_moving = TRUE)) //Once this is done, turret is armed and dangerous
+ turret.raised = initial(turret.raised)
+ turret.invisibility = initial(turret.invisibility)
+ turret.disabled = initial(turret.disabled)
+ new /obj/effect/temp_visual/rcd_effect/end(T)
+ playsound(T, 'sound/items/deconstruct.ogg', 100, TRUE)
+ to_chat(owner, "Turret deployed.")
+ adjust_uses(-1)
+
+/mob/living/silicon/ai/proc/can_place_turret(datum/action/innate/ai/place_turret/action)
+ if(!eyeobj || !isturf(eyeobj.loc) || incapacitated() || !action)
+ return
+
+ var/turf/simulated/floor/deploylocation = get_turf(eyeobj)
+
+ var/image/I = action.turf_overlay
+ I.loc = deploylocation
+ client.images += I
+ I.icon_state = "redOverlay"
+ var/datum/camerachunk/C = GLOB.cameranet.getCameraChunk(deploylocation.x, deploylocation.y, deploylocation.z)
+
+ if(!istype(deploylocation))
+ to_chat(src, "There isn't enough room! Make sure you are placing the machine in a clear area and on a floor.")
+ return FALSE
+ if(!C.visibleTurfs[deploylocation])
+ to_chat(src, "You don't have camera vision of this location!")
+ addtimer(CALLBACK(src, PROC_REF(remove_transformer_image), client, I, deploylocation), 3 SECONDS)
+ return FALSE
+ if(is_blocked_turf(deploylocation))
+ to_chat(src, "That area must be clear of objects!")
+ addtimer(CALLBACK(src, PROC_REF(remove_transformer_image), client, I, deploylocation), 3 SECONDS)
+ return FALSE
+
+ I.icon_state = "greenOverlay" //greenOverlay and redOverlay for success and failure respectively
+ addtimer(CALLBACK(src, PROC_REF(remove_transformer_image), client, I, deploylocation), 3 SECONDS)
+ return TRUE
+
//Blackout: Overloads a random number of lights across the station. Three uses.
/datum/AI_Module/blackout
module_name = "Blackout"
diff --git a/code/modules/mob/living/silicon/ai/ai_mob.dm b/code/modules/mob/living/silicon/ai/ai_mob.dm
index 8d1dd45d5ae..1529339ddf0 100644
--- a/code/modules/mob/living/silicon/ai/ai_mob.dm
+++ b/code/modules/mob/living/silicon/ai/ai_mob.dm
@@ -77,6 +77,9 @@ GLOBAL_LIST_INIT(ai_verbs_default, list(
var/obj/machinery/power/apc/malfhack = null
var/explosive = 0 //does the AI explode when it dies?
+ ///Whether or not the AI has upgraded their turrets
+ var/turrets_upgraded = FALSE
+
/// List of modules the AI has purchased malf upgrades for.
var/list/purchased_modules = list()
diff --git a/icons/mob/actions/actions.dmi b/icons/mob/actions/actions.dmi
index ae9e005bf802e1e8f858e774eed99bae5009e759..fbb7887ae854bda632e412ae7caa347ed5c9306a 100644
GIT binary patch
literal 152097
zcmX_HbzGBwxZPlMH>kkq4keTxAR*l?pnwtrA|PEOrMtUB>F(|ZN$CcG(GB3l_y0Ox&e>;^36OuwN4Q*eQ
ze6}^aHJrZi0kpiL_~se1fJw{)t8mFt}#+C
zy|=?}@!o|TGNk8PMSRt2j*i0rEJ@`n6ufVOIBlg->dRpaRKU;h<5ap+_?Sa~u&8r<
zXiDkHmz5TNc+;r*tIQTDXL#YZTVZY}GsLRwj-(ig!Gez;70uV76vtuaigrTST7%1r}!3ytMmTTsTGWBhEX3WW#Fy*^x4NB
z^=I&|;`G4@*Ir6a$@=#1;?Kz(ghma<(?%g{;>$;h(@bzXjZPk-+pxh|6{qSS^I?VG
zrbS0;t#J@^2Mha{%+#4hhQA2ve);M)WjT+2XJqwIKsW5sP%jT6I
z0An%{{DI%T-iPvifzfGT5oL4Bi{@{1khbr)t+&%D=pv!kFFq>1i`n%AGr&uOvJrRU
zS=H~qNKZVjuf}ftSzDC&g%~u_^myAH8B7*TS*CIzuG9Se82|ATI!l|tb0)b*{lA@U
z+cx+&w2)6H@3aCpRvg5F-ANKZyi@5GB6i~ObH|W5(lU2^Wf+U2C|98%m}Ri~xeeF2
zPI2s}*_)+X;%j^p4YFkDk@O~F7^gnp)^(|jF323Y_9b^V)2CO~+2_7fkSt+%&Jd4m
zwo6XsO$`6wQ2hsI6GvOTMeU8}?^BdVP~Jz1)!a#s@s}{<(*MZzGfoaDN?fT$%4eoSDR?+RChFd
zu24#5q-U^EbI{L)5p(Drm+kQ=iRF#}YJMhH7mOI!*hjkW(w)F;oM4OG_fSfR@CR#X
zhSJD*Aw%kP1Yw_q20zX0Gh@O&wL1nChAGti+cM?oCj6jU5aXF~y?pgszE6z8_Jr;X
z@m+>#H(NCyPKNp}>^D+9h`G7sofk9lm|guWsJrN=c(EpWS3X8a{InvvEgD|1AOAHk
zUEgDVX8GN|NlffR?}D(#xZtI^7<<<;Av?O*Bc|EP6_eHR8z?y;xZjHIu&PXFs^L;M
zk44YoN@XSCyFbE;H&Hodca+K)JjX6-)pahtUMMmxUn^nso{2K?tmRc_
zdeynyXtZU86ry5Kr(xHNkD+BlJ|0syH~)Q)
z#o7_mm$uCBIt(OI#0(TO@j2?`5(q9W8{d_4(YkRF_zMUB7T@P#6eq7M_7}0+W#8|4
z`N~H12Yu%_bGX3whJeyKT*WJ=s|&>gQJz+kzRPFsg&r%y1dTFBU;5ZIGK*$EZx(LY
z_&wZkk}Y?a8sloDl$I&Fxoc0H`~Bfg>e5qVJv8qAi*8LPw5mrt`s`6+^F$E3V7Lo@
z>5xU`ii=M7;rQ#-w#Md}jJu82X0-r!7}w7~rfxq6my$cCe+3vEY>pD_h<(ERU^Pfg
zn_+5AIooQW%pBvm{-e1SE+o{dIrqM!z**XJ&~#^mRFRjw_D)oJJt%u`rLE}6{XyvQ
zVdeGF_Qd_-TVtRfy#m#mYU_a3o6&Fs0uDF6u-W;*Ccu8yLpFV
z+KZ=~H35Rg*73v$-f&5duRB?kS*|a$!WOy}h6NTKO4A${KNV&Aw@81~D7w7Y-I(t0
znC=Px{ky_~NZi|K{Jrxhb3MWoOY!7y&`|^RJ;F<*r10#@MOI|hyPq=0_{iO_2|j92
z6uRMZ4eAtVQ)Y$Z;Ju9ZUq$2kdKA!sbhZJ
z6sg8bj8%;e`*RWrOUMPFT^tr_abZQ=x$h+O-C@bQW#}gu7`&N%GkLjOxq{L3VVQRP
z?42uPL%3y&YTx^T2Fck)+(!G!+J-zC+*LVi7|Km##};?^MbJ&su2^$t)Mp3%z;+`!
z5v9%V>?l9^@2eD&5yfncWno09Hv5L$ucc-vbLl1o&s=qb8UvmqCt7H}Pcawm`nw|7
z*JKgpew#0YR1p5*V3Fv4Kko-q!z*L>iP0O>C0h7zhjky?ZOJ;k@uS&B>kE@wQJa1_`4m7bYPg0fj-&$2FjA*T@iI
zk`on;w_pN-I7yXrkdL~sia3EP81MPuk2%l;kpibd!Y>Q?W%mSd``?5NvRyvKvxDoKJCnhw
z2(0+a*PqTMzii}}p?KGWjbI1ZPy_gY$7?E06}n?-*&ewX;obBS@W19$WNo`Vv_oCtOz0Y}`u)dQc_sn?%`p7L_`7ElTqSKl#v!weii6
zi#|!>i3}nk>HR6MumVE@Yg=hHo*uGf=HpVafe*`g{;IXZ*qC8S3mN1}+=BAgMSi1H
z!i`$-9DB3CISog{-!q`k@YMA6Gk7X!lXnS0G*u8$>Y{{RDgNW;s)=3T1_EmD>%&W@
zqC%XWfGJDpQq$Xg^NllD4^&Xc3V&3@6*B|(-%9ET-Efq~VbE6TdM7=vuAAkcB^
zRs6Zwt@8!zhsQrsUplfIknqHsi`CU!NkH6Rc9$mIsgE0Zo{uOiw|Re%JpLrQ?1_&4
zCEUAxTjfZ92-Trceb%Ywu;CSVMm)Y8=f+ji-N~`6T~orO*KAG3Qh}FkY@he?m~9zf
z@7VGBI{eR{zo-;!Z{85s)YLGZ*;jG#4PQTN=QHUg!gwW7WRt%NZc|w
zl0j2ek%E>asHa*c=I@Dlvl%yV-y3XG=(B2$v7&pT>&vo9eL{<$PMzYGb(9B
zUVh`%->rLrDt;B_+@Gy+|1eW#D|gM>Kjt41flmD4!!K1`RT>`!9UUv;&7I_*)cEA=
zEu3s@J_!jC)rw|PC~|Ud&DVTbpxkq&Mxb$4_D+Zf<|)=oAcoob`AKI7hrpl_VUaxR
z(zt}2qynbqX7{jT@lxoI{fK&M1`Us9*ErbGYZ0<1>#?|wJjLeo1)fYCQ0A1+@9RP<
zJcT{;b{V$&m#mpMwIT^YYsW50C}F**U>p>&u#2;u?N42ci_gWyJ4k0WJ3~T9N=urX
z4K}ww(Q%jOVccI|-+t_$_1(X)xA8J(`c}o21RD>fP+rXnlwL0>o@_Z*Q-{HXUL=WKo4W%rOEPiF$tX-^>9#Wh*Hcs!>Oc30e1_V{X
zo=?WEl3n9W69rBG(2$IprStUw5I33a#t;Z99nV>GF4BZ6XmwVAw0|UKhRK{ZlTf^{
zrWyxN>1>Dd5`h(w1tN8YS>ha(x$*r)V*=MyC0
z720BJ{oFJ$t|D2m&xmTIQBYV)E2-!$LVbJZnClJ~DaEQuB5{ll!&Pp~y2~SkbN$ZD
zcXP3nGGIg||3iOW75<#T;;&dE=bqxHk(srPxghHU6jvqPsz@p2WG3bvD~_G34>m9C
zGghMVch1_buW2u53he#KsExX_krt6alc!@PrFSz0w7h4F=D$ov|171f@BjX&>Da5v
z8q?&a4$3PYx@-Q8+(XeL`(bh4?B4vtn_J+yQ2IhqW3x%$vh!ihtcr$1jbZQA)sU+)(Ws&5j6IcUdQ=d2?b}z@{(gMh%g&9Tf>%P|UB+4|`_Gl3
zf7y&{u&KRHrCQ#fv&?)3A{MmCieL8V=g4Dxw~%*1ibhNzfKN8%l=MFRo8Vsly%GNf
zB2ps_es7TbUe+fff?7_lRIZ(fm^`$yk`N;?+0{9-TK;ov?*-gxk_NgZ+}WuokH0x7
z_#$EH{hGEbP8^U7YMVK9c(pTOTLp~DW)p`W%e|g52(O)8ZaRmC$jr=oWR;brrt;Hw
z7xI|GGu~h;D=S~$@X6fNe6v_Owc4tDP*)fqh+$&527CV;4(T5qnDqESDmSQN_!XQE
zwnlv2;#3e&gTNq}XH?iR;a}R@=#Gh(KH#xSdFGlBlQ8@N!R~WeWDTk!!{%xYcdIX4
zP&eFbwm|sJ&g{=CtbL6!;6G8SZeKCnE4b|tfI(W18}j+664kAwkUbx25aR6Y*X!#w
zn!<8!BgZ7$dam!Nw#9Wr>jd`!;te@`32m1PR*d`MIUG)I*{4r3GYusUQcUg+{!Da`k~7f)~5KyZ!i}_WHnH?&D8XxX3i3
z^)8EJMi{~nv($%4QxArF<~pax+2Q9!0_O@dwDoxqq3Td4N6qttknGZm!k@)&FK*7z
zLG;GoEGT{M+g2jRpFGhr{th8dE~NDIiU;Om^Q3%+h3hxB-%G!J``nrT>}{^<0}C6Q
zw3!*@E(EP6_7@gRE!dQ4rG5K)w@Z2ccQ&ocDsKjgnG)D#(|)z20p`+yqL5_hr-T-c
zl-D$|zfNX;bte}~X3(BSMtIV{qpCCI&W?1b0&`Yb%dqeimkxjkr0IdvYDLFR!?&S@
zZs~b
zOWCc4moq3jY{V>(IX`x4!u}}x`$v$uFA(PaBTd*|Pawa5>gZ{jV6@_<
zM3T<2G65jnKhN5wpPb_IhRKilyDZw9kw2!Bi3-MevryuY-$t-GvphHvctRUH4UkR#
zaiWHd`KZs6#2<}>Ds5j^vV<{tvhIRc2k@$_kd=$`+ONqGLVf*EG1
z6={#*vC$ZkaY%`-ho38>YdMUmV)6CCkkG^4<9QsC1D&EmAlGc(}3DHr`lkt3YUu1Nk#LbsMsXS?n9nXv1vm
z7Z_M|fA4;NxJU*XFMThxC&0%?0@CsHd{o4fI1n}HY!*)G%=v+(Hfc|Pfd&E|#(DTL
zcP1-Oreh*rxy3=@X`xjxg$&W?Y@Wvow{kH7nQf$;n`&GYU0-)2A%NP`4Hy~eCB^3v
zV`uio-d@oz@f6C|>>$DO=OHb3k1&TO@{t9Y9E#tKK^M@K+3nXtnqwb@X3oj6a*=6-
zm_oo4J}*Juhj{EgX|`8V#%HA0rxm<8ABoMXkaAJPATs|L1cDwHIwMPrrJb5$mXS-!5Km4Espe;W9RNmR8Qo8aJ^Noe8FS+`pC19M!XOY
zKR6`B#L&=?nT-t@H143L7QIgn5tE}Mr{(J>;J-~@D;C>U6tga=3*l;LDUAv1vdJ
zsjlA+qttWT6X+ZGgH3Ynp%t_8?4l)1q@Obe1=fFJx+8mMLu$GDr0|+4HBe$gP9Oww0dV|4YL!!Ikv9e
zd&)!+@g^UVl*22#WnPo9_y-EWnydUE@FY^)cgh7?;M8+XNfQgj+*9#w2NP-JD_}|}
zg=-|4hZWeeHq8~Vbc%POfj}AgV(1i;m5K&(3iE`tQPkDsA_@F$^H@7vgY~BT%;lvP
zUG`bc!0TbJ*_V(-NUln5Z*BS4*T2a}5&v{tii8~1;ql?JUAchYCwXWe3$DbFAyYSJ
z{&&Gi15TNT^!7|2m9KBBSt2l09zWI{inZ+dE7E-x)Y&-F>9s9_X=G$XOh&fx!`}#c
z)2=-EZDDj`rQ=G!jnpu;A@(8|84hY{9}Ns*oOF4y7D
zJsrau(FG0jntC3{`aiIQri>8lj;HL+Wqh#`c$
z-{q$QudOBCRqG(^dc{5uTqZg3qLJI#cY{ta@u`t>Yeaw1HS{^FcVp{*^ARA))RzQf
zwuwNrTYtBCn)}`NW}Cicdb@n)?a)OqUm+qV?SNF99`ITHwMELp@bs;^x9mmMXW>R1
zlEt0QnsZFnX8m?b7z)S^v2SyYUq@l{jd_#A=%^ebG&Cl{+wb)Mpt9cgXZ
zd(2_C>LbpNhiceKZ?Nw8Jy}?!!fWrOg}d)PBvdq_eS`Xat`S{K3?R4LJ>|%6w=xRk
zcSvlk12^*Ck+Ua6LE>ZvBmJ>vaJ~x!%+Ry+9S8Nd3>1pE+?P(NMd4wvZty1Q+oeU3()O-bU2(;uca0h
z4H`q;@Xh?qISg>fyOT}rPlQ9?XN4at?mN67`IF;*p}gzN?|DsYzYpx(e<+X4AipXA
zS%{BkbX1^ITreXt1fp+!ZQB17Wc2mjjnTdqA}U*UV>;SjqNt--V{#e|NMS^kl?Tg-
zxKRxc8Rb7B5b8j20@Iu>@W+1)NW~lv)AoMWLqXINIR9Kd
zUq?n3z>d^P9*%iTTFB9YL}q&uo=;mH@f+V12a5BIH|X$BgE~4M-shsCqSXx_kjjfl
zO+*ePVd4t=^BTtk$CS0aSIpsG|4cZX)~_19J?Sg~fAu&Fo~?%ADtp6HuNMqlS~NKE
z;03<$cCXn%;C>+7eEar$LdQgFn30^Fxce}E8T~x6*hJcTWJ1)BjxMA2aO)wkFbl^@
zg|z@Go)f)`Mb5G4
zB^#`mY$S36f@C~3
z|H>gvV3{7L^+*m3{r3^S4IYOkg$k|uBBx$F~nN_ek?zu
z79;1FVl;MDP0bLQT3P$IwcMbUhIsI$+3S`&H~BG$crH4@{rKrUoG_3oXaEgYHZFr_
z^i#5iPyWtii7wQb@BsC$tn+%4Hi5CMckW8_0+}AF6^J3wQ58m08J4?(xa@VMnD}ppHCgiUg-YAYi2j9-{|4oiUaq{@D_}4P+M7aKoaN;6q0wJ7%}rH;w?&Yj
z#U@0tC{9_qa)|irl8kdAqYm&wKOFtpdN2k;PIR1U7$P;oe3^r>$R$qYU1m
zfn~FE24k=SMOL-%^53+ORr8T#x4e9Y84n%iIm`Lg-rm<%no;j}B|tiMB@7Kjk6-
zrzIt-srX(`;Qs#MU#-gt7YV&JU~0IdXAv$(ZHoU`MH~_h9MSQ}F)4)X17P
z{hf*=F{liTb*ZiP&m@+QLKd)oFrz8JGv6BX8(H+Z*H^NS!xwy~Ez@TBhS{HxYQ84W&co$mwZP-%O8%=i76o@_gi_n!T%36R0xWF&ge
zIU|FNftx`Tb?612iSSPhd$NsJbOZsOi65uXY>$quE-y;oH$l;nOhStu3uSRC`_T2!
zO@ZT{sJ2koBng_%7#x(tNM&U$IUL1iV`iSrL;qc%Dos}O=3nVm_qy&3ay;;VH%RdG
z1?L`7$^~L(9q?&WMt5C0!RO3BmN1lN1elEvC@25&bawO$48Lrlo`GVCsp=NQ)E}Mt
zUy(2Un(B?^+P>rZWCDW+qoN{9dSG&v8V6jw
zV!7+tL{^1+a?|Nz_~fdK6KMxF7^kL*8Guz)6@34IygJZx9hp~9K>MbU0ce>2g}^kl
z2HK`lBVN4V-*73Bt+RF`qS^!AU-#-4MqZE=pXgdS>#W@&^a+xAxz~?c{R{u=GP1MD
zvDX>}LUfRmUM~*>hFOfd^mZxRiBlz4ABGp7$(Z3of|6L=`R6iND(X3|Ok2DM!g#-h
zkZhX2#;?)B02r-=B8vrIXHx9QuM_K{ygxC6P{$lx&cC|0S&JQ9+l_@+{ID9rQ?Co6pX}fJQLZbgl&QKPX4u=#^Ai-vB(pm}|KI-aHpyIxe
z#f+3}`$DB7y~2}PgN^9ig1=Ia3-*QP9bka~#3o*~%jYu-uu6tHd0B|7dL+jq<(gf7
z@>4bDX{f+GywS^l+%%hR$-jW(Gp6hWjVTT)OI!cqU8*fAkZe^~^G5&9?C~J0PIfJG
z>Ah2Angfq!tLX;h?2e^l&!E)53V=)n6?%nz1H{k$AD3$31URE&GPL05Th^blDm~AA
z`g;|PYr6Y+6CcFfx@S-_M{
z9=vaKNjXjpP;D!lR#Dxbam#yJdAT+AL`&)YGMT&b4BDg%uwioLS8GgCbm!DRh9PJ!(7eAqm&xxVBaSQ1Z#yeHz=F#zsj7Qd
z?>|n<2sQ(leG13+v{_#!Rs``D%z}!G*(fWIf${Kd%@67Hm!Jh;@Yn)_>u2(iOToqz
zNiaJM35hNhH3RmZM-5F)8Ynlpc1!Y_MKWem&Cf3&D>Z~t?GjnP
z+`JTa$dbL-W9)XzUsR{PWXI814?LB%IL<}9m9FjD+a%hhbZR1gk`x~U0U9NBWoS7t
zp+F$~eSj>+BCB`UDSR)&^>gtJsNl1bq-XBE6Xz$-qQ!)WJV0?5UWhxAHuLws?__hP
zlh!DzSc|?M&jQ75r+xFksY1O-M*R4%V269E!v0aC6EPH;M}^2KWh_YsNjV^;@17c%y}
z-2P=fpdPAyC*;p~?L(`F3i9n6mN~s`_?HW*q5Pxwanj?4A6v;v|Dr=ZI~
zxx{eCr4*zuf?b%oGm5z#%b`^JDBPU|Ijb@rGs`;*-+3e2%tmv*$z&7^gS(F
z`F#n7CFOT+h)XMmkR=R2A}bO*Pj!cdK2dmHb%o+Ze(!%Dq8!9tC9eox*Q6B{?N_~A
zxN1Y^T6!JoQDI5>$K69UDlJT`%>|A6P+rQ=*^T9m;FOF8indqlZ&n2DE{$UW(DJZW
zRgUxJqEuG$Ol-<=B6aHJ*CH*hXDqfL
zQ=>;$e^TgG>Rk%*jCySMD_xDEd@#MAe1J>dBycv4pyZ?cu3(foNEbR0l|lGet67
z81B{68Eh;cSsvpj4$Vrr;2A?KI}TmSCTiZp6g^;qzbdZ6;wo~Ve9kG7652imH>-m!
zUjRc(ISmtvd!GH$?z=O;SUxNY7BPs}`=;)}(xN`)RN`!=5hB7_cGGDr1*}+hB$dwX
zvqVv+mUCBtm5BjO47)cjUIN%T-DdZ$D~6~G)evr*s9e+@n+&Y>M(8eA>orndUf#9M
zRD_w=eZvqI$fnKOc>W>hX?yGNFpNb#-*~m%rx-kbf%6t3E{9lK>zmlvHeiX=pn_BC
zk|x>-wy)?H6F@+L%J~AO_nszHFAvtEj~2oZU1hdb<5g-WYgtUp!U}3$yA8Vz;Tmi~
zMl0!=pZU;THKI_qh0MtfuUJtUYhg4dyNG(7jE|cpbcuZU#H2HNT8n{`zf;oX0-OMy
zz=OK7kbi=ig;cpvQABvW<|pB2&jtASGgZ~~5Zc@8>v!Pa?$`t%0}j^C=+`S|5T+~|
zM-U*WxL=Ziae5%{Tl9iL$a*g5XcuI4jU7>ldaRjoTA^+DhK8+-oaF%V=4x!P`BwxK
z_x~zg*>hU21C=YW7imJ&Q0|Gc;Oax-
z?Hl*K?iM}V%&a+3BZ}0$sCH+m15~XUu2osZ+@UVR^-}d;DcZ@pJ}Ba3vZ!~r?ln=ti>S3;oLNk;8Z|TH%v+k|uWeVY(|Kte7YrptAZ)naCG$77p+`5T
zxIlRd$mwM6!>s3Ta}?1ObY3IBieT8aw3Oql95%t&eZ5Wa#i(ietw`kzEp1ON8S(0u
zQCV>6c!g_#uc&jZ#*lS6cmP?
z*ukhhu8R@}Q&}Is$;*|=IeG)THn|Fs!J{KUL5Pa}CXGbXdYn+nq+^r5OL}%fdMsMB
ztnxklK5^mFfMO7f(^xU0;@bS!>qPFUEvM27&-w92bP(5rRXjrNCTrG=j8KY%fs)(Z
zJ))k|dm(!0m7^4%Il>Y^FL0G|QVRrH0eSUug#Z{D+&bn!gysB$jwEcQQDiypLK-{E
z?)wt3k720dps&WCX|si@&6?LG5hg|W*}yO|1GY3*M}e9tb3I-Fonm^glO6CGyw)J8yPU&NzkCMB)u)Ko8&$_FZ-?~@GK@JBm7=K@2U?ZZ$aY4Ex)SiL>
zK$L>t{hIWNQfSP9T^g+dg?PZ^deJUTLx=1kxI2_<@Ro2EtBL~NogL_C!##+ZlPs2t
z6t#dHL}3(rK|)Lw0QD2VhLgG`WV4&$eWzRul%v*$LP2HyENoR>&Ipe-hYWOyiB)HD74!kHIfrl+50inXS6`BEOWkvI_u+|!MmFuOQK{X3<8L+2(oW<
zYk}=(AUS#YJPR4$@qPj?69`wI64mQ6s?EX`&F{s+#r$r(!UWlJoQekxTy^&XNPI9omK+8
zm#vUTu!
zqD*%W`p8IraWpvG3^~T7jCw{9aGJgpg_>#aDFbDb*CX?Wh{Yaij{jsqQkf-=i>1v|
z6-j@YLml1Fj_wKoVzjeqO4I#@8ee_wM&gHiN7vs}_9VB^b_{&q(womy5BnE
zD@P%G8FlSIsls)~4a$!ClPB+u3@Tdw*nTb#TF^rOisMee2cmk&OtRB|$Xo+B)8EYe
z$qT%B**H3ll;sj9GcuiA%>M}`NU%-bPACbba?4$6_upPYT*X1hyIL_r{N&YzEZ+Sa
zlFa8Npr!sV+%5ll$Pj;=CS2;GB!+E#klMlHQPc@zj-fHtJR0KAOja{%g8rjvLV(%8PFFkk)?s&!;J49h$N)m5$&+BI}SmNd~?P^xF^RGi|O&{PE@io-%-4O>8)gb27
z!m=u>N`3?zXPS`Tw_e0Z`y=_y^hdwAX;9x~7J2(@pjTHT_+gE&T#Bh^RFSDTB_nvHB|NSE?u
zmq*iB@_g=EdW~)
z*hQdVtG~kX+r_ok-Jd^mwBgJld|M$h;k}*KSoIueNRYh6eU7d%KXUUP)hMCt3%>X%
zEUcu01-~4Y{Ww!7#?J_-%gDC_cum;D(pYa{&)peqVhh5xdPB=)L?d3Q`ZFIKv{DG2Y?&l9
zIG+2W`e21-e%l?VndiY1Tc)w*=!`JD(l$}`CiWQiUewc3
z%O(yOe&XTr?@nm&_f6K;OUZ(2zdWdt3#{9+vldfUR#vWVEn#ysOG?cZm1;4o^bo!{
zDJv-{VL-Q>poNf4_N?v=56kmQMmj`^eg%D4!Y*dT<6u%*7Z0*6_z;noswDAt6Q&s#
z7*E7}0`1n0sqHhodn8*M=#wrl7aQ{_mLPkjrA_JDkof0jqE*B6wthc=8dU6$*#rBm
zTC=v{QCM7M^tAZ3=so?{TXwzEFx7|**pB;49bo#CS*V?ylaQRpCW&-1r{+Jmnfax!
z3_!=Dto(QBDv-DvJE%e!BI2&h4Z|*EOw8Vio-Em2IsT5}3M~CjPWCn74K@gXOdahQ
z&rc?jAgNczyQbT;%cTylTiw}l_NH)+LRl3+<5~l*Ij2~#_>?1OGrTm~dB_#)lD0Fl@nf2s|pK4w&
zP+_Jca+4E#fh^|Vk7epFyNK(Z>&jUl-dnsDoRJv;Ixzq1YiH@D?Y((|m#|z=R7%Ou
z^JmFY{9XR%8nJPP>L|3fwniFS@i~o+&z6^4>-7x$va@M7x3{x3OSG8TT0Z@`Xm`7>&^Qcqw>n@ZPDRi
ze&OamCRV>4hkdXd}iYjT?Vp|DB~si+5W{FT5Tk*k$XxjjmCEU9MC_1&Rl~do#4f8
zkDBt|KqI1Z1(VV?s_O|XkuYGW?C>`ZK%;=a;K=KHab8#?7FzK
zA1V&8mP_g*1a_?65(I-tB8ymJ&1`J6-!gx4uLJIb)sMHFfF2ypA|X}KLtdCYC4l=2
zUC}aH&6$eIhDt3p;#F&4<-ps1jG0hyw(;(#
z^z@*xFqE1!u(y%tgDz(5_J^S9)bn#JX@)uF%NO`_F91b}Az>aaW$*vbTV;vJY32?&
z5lK)5d?2=eAGm0>Fa5RmY*^6M4rm|mh99m0g@5i+C%KwhpBU;Y>aiK=5SOdrEYow(
zD~%Ea-RkKh8-OPa_)A4fP7PYuY#(TPgQlND2<{WryEsUGp^gF`3wXubBf3a3+oA<3Gqch?2vVEdz9nIM?)J&4
z@Vd>E{9UNAVrFGU0@XM1MdjaIIHM;6c+{Hi9U!%o9v_#AE*R-x$-h3Zb7HuvWcPoM
z@h%tN?2{opBQTJh*rNu-EurdD5hvX+u|+~Og)%U}M8CWC-U6hM9Q|p>bnTyk_TO>1
zi@#MpY{scF@-zf>zoGhOdtw<;IfHj-vZrs0E^NN1Do%Ct0>p{*@D$D!#hBNcfIN3;
zkX^CQ)7}Sm6#Pm|?RW@I;OEMY-$&8~Q^;KeWcK|L)C-QN!Bmkfgt^klD~L3pq(qFl*M}^^
z+=dAqX?rZAta136S-(MQ1nGTw;$@*yI+jzL)P?Ik<%!qC2f0YP%MD1Tv}wt#JMZ
zG@AlNmAZxoJu+?b_6HdZak;rle%zplGu2-3gu7muDCqyMk3T`6#iI%pFkpGF2IW;r
z7+sFVvfK_+wkycAs3h&+P_=RJk8-6?!zUXdiEqB)%&DgwoX$48CzrckLoPtBH#bS%
z_ATBSd*5AYU&*^<)TI0r4o*ALXo1z=*V(}Y3gGcv~h;DZLs{>UKnwRup`)h
z?tm6pi&|<#*2lk4Y4+3sm`izs1gpNxdzr5Ke#v}y>8#P?9yrlXP=Pfi4zs;>4
zInON(Mi5ZS3sJ?-rY!IHygnSUmE3fd88ymz30MAUL9^+{kcOxxdChlYU(Fihm4vseSZ>EWRv
zZF>Qd_kZg5taM4|!pgZsZ~g{QG1cAfpm_&UxyBZ;@P+f5wex`7A1=s{K=%*F8{Ph&
z3_f3cc;XAUYc*ag7-
zfZ0BIDs{VBf853qK{0C&gr6Q{qqWM5oRaF|2^^2=3nS}B5#y$&$3LDN*uO{GA
z{(I}|31qROqoX%!s$gwx?H9}}K0r4)x|#O%S_kLDCz4FG-oNETV%LYg9i7M~-^*=Z
z<9<(+liXMSC;`W}38{TeUJaBwbgWe+Jx3)T?5VKX*b{Y!1%eJuU!`bI1
z=jrW62jN#(7grBk!Sq3}`J+a-HCbSY{xUV29&IsdTw(N=HA`myFX<}}%W(@6vq
zRB4iKBwZFFHUM8fYt4J6@uR@=A3oo=wzKKHTco6R(T%ljI6s0kw5g@tcRr8;_$qqw
z`DWf=y#`g2b7(oVR$2&=9;SsgJS2d;d0WhnzhH-)cXI80G?CUj+6`$V^fq6JGQz|Y
z5bj2ZMUu#OH}XtwWDSE5P!nTMc~jDWQ1S9s81Qg(UB)EIk;4
z+o9ZDTNLWu7aeyf8WGZ^jR6tAH1K2Zh?x1Yynq$hfc0acbq^`?K7D$oVIFFJ@bx8I
zU?4S|ieYygV@2#cZ?KY0bO)ZbEf%Ec;mHM&yf2@*)JbWF1+Ji6K4K
zPc(`dm+1_?Ui#3Wwhoo1ER{QU%Qg(x*Srqi>jZMarC(ga%B%AZ6s_p@Ko{cPQoAF(0=qpL8lFd0Vt3A{P`9
zIm+RmDR#K_)y!lc21Z7tUU`$lTyb%6r5zn>Y_#Wqv`g1)-Hn3>=LbWPsE|@fa{`TT
zzf37DK!gTAGmr}q!l%9aCh&7nUdmnXIR(zeSgoXgQAA%~3p5lW^qgJ|$WV5|+4cl&
zD~X=dZD+VepikWsObtk4!G8*XS$|VMO2k~_Q>(-J&RU?@(SS34rPRaT8_Ot&XbZfq{Ipsf1fueE20dHh&@TsKe>}%P2_FKg
z3T7PYEx5`RzWjBw;>7w(C_HYkc;RK9AFd$j?{-y;2-np>v<%`h9gBms>o_$?bI3W%)-%idJdL93Gw=*J}|Ez>(7kvcuT1Q*@!-S40JC6Pl3B
zTogvj!kI8`JeX^7WDI6(N=nG;s_|Y!W20Wett6&O4hobHfBiQu-*ZwHExiYZ7Hqb7
z`lLcYTo2dq+Q;%9W`W^_&UgHa?yG!jI6egi$arth*=Ea}f|!|vnuB40>Y&kya0Aag
zS|LuYsKIyT&pTNRuJ~0MJc#ZAl6ogz+A2qpn0Q3kq#xAkxV1*9{CpYRUG$+C;-&S&
z|54OkSOQgIrWwuNX{z}dEV8RfHkL_SAB>Pjjug1gA`)6Uj4oQbn6w)!5qAa2VtK||
z;@LVhTfB$<0uu;6I{yxgrGBh=1}Rzs>72FgfMqcxEQ^a5Y~kByt0p)gmIybb42BIc
z2&f+SgCNWF?+EVJO}P)0~h0jz%w(3J%1mETYO~3;I(h
zn!Y3aRCg%$geTmO`q8o3H~8HNB73_vdC?0aU0>iCyU2S~vHQ;(9|ocjU3dO_uyA)v
z2;FZPmjs1z6OMaCv`wFCh(i}1=pUgXLliK?EWcGU%s$s$-bt}raEph%YD-Q7cxv#X
zRj&Wey=r9Tr8r8F;J@rRc#TZuDTj+ic<+Ag42l0v)KR}#4lRVTcYX6$hdBrB
z{aaBX(!o!mKL}!hmB>)U0s6J>*IiBNh+9FLe^ZM}r}7DtF5^*Yw+9N+)2dJZR;f%!
zNoF(K@G}%?9M8cir6lkAXZOqzX8P+Zy-q`<&Q1x0p0Yk_t<+KQtG(x-o!Xb
zV16$xEtUTI_3M&Tyb}^rC7%ADz#O+F3T)KZz8$M3+~jaB
z;6LhoRZ-g}ZtuUla<<>U`wJA-FOb1odpIsQU#r0h1twk0AT(bQryCmk=?=$z}q$xdqK}A%s%&>pTQ*?zRv}O0SF6^;#oO<;9&a0wJxETZ5P91RLQ4PJZJL
zE-xu89^L%Jr6xA7(fdntG(?z$?PU^5Uz9lE-*q8S`(twd;deX!Qg*ry6S+azF@s9
zOQVD|0*i>!T~bR4NGRQ*Al;qPrINCMfD+QJq;xk(cXz`sx%9jI-g|$*UGCQ9&N*jh
zzWL@mwIz!p+|B+Co!gn1k`Nd~MD%9(3L+T;+h+)d+His)e4ydN#u#MnWBcvLa4fow
zItA?VsnT+(^#nZ+;tDPPXF4luUe^BCQcwKggdO)}Y(Gz{qWy#D?t~Z;)%v^GrR_ql0kTMsU1t8ZO!*P6&s(LbiF-g-NF_jkgG$m
z_vP|XD5pF@)xN5WEP~g?*#gH;9%q$4A|nE7(e<5TWzB^?k`}lc%pjUau*ozzFMeYj
z*vJR8$oco67HQR`zlV{{^vh*<)l3q=*jC(AnI{n2<_Fjq}={3V1}-PQ-R=u1iKg$X1$ypd0RU}0=@HDu4wc$-PuvYC!{0b
z`{eFGc5oE!?x(D@+&w$=ulpQ<_?7s$z%8JD{*38M7yBP!bR|kiiJ(uQNAL$3L$=te
zT%{cVEUZMjF!8oEU{<~cVw2H}Y_jh6Lo|lHAJA5G`phXzy*>Y;b)eEmxSOWo29e6W
zof13)4TjI3;&$q>z3nerNXuvcXxkWK(hPebDdsZmx>Jn5P^wG2K`#+>{LFPn)s
z8uV!YG20x|U9-3dBv<3zodGI{uhDVQdBCO#zo9>g7|mAfyx%=N>AjqqCTuD_u($c0
z8P`Sfpi7|rkWLky(Ix%fOkU1uN_h76`Q}A1?Vre?yg}xvGI8FieUBWnACE1&1xISf
zX;CXB&@E!XQ)B^$^OrOU8Tk$d9uE{2i4)=r8q(G4DD&4}QcYcOV@FY*bhz#>rpP4;
zl}{u`fZ*~^q0p}?1n)Mt0wQDv;>AP~e7%-hcuCC!ClTy;HF!fr$66>XW%GclTA}Ve(NdxI#!~ZgM~-
zsr>VL^1P0_rh2&q%Pu0gX3i)7wu~36@2E`{xH98;+rpL3FCup%GrDEp^xMtUygJ$G
zjYUqgF>iaSJO6=5*6>?Jchj8*0xJ|?L<*WUR!O2k29@$oY-?eQrzF@?Uc-Of#eCTE
z-$*pJ5kSpt3e22zeUQtfP%$JyVszZw9L3~XkWo;qQLFxU2n^Ru{s{F9!l-x%K)w$)
zS=ZYWvLa>U$f2L05;fUi2I1p3U$TB7R@-Ea@
zWe6L1s!-PzzHolD!(j1+&OTftI$cQ59M9>DO!Sn)(^Gx
zJCSBSrQqrg$T(8*H-fR~H|||8IH_&bxNv-bwS#qbbuXQI8g4?zE4DJpp2(a4fHEVt
zTG#ILw5!)a=|I6rLqj72fQ$M0`9bS}!xIw|qs~DYuzv@RmiV!)?;WW{JrRNnbso+B
zeZ1;UcfM2rRDFg@a(*3r2bNNjW?}lvgzqOz$O|8OU`jGPsR1c8X6eRW4VPpl1{Z4%2-IxH?US
zafD6gG~8!B)i&4oP;kQ>s%$|FO2XhoFI2Bcy>y}>&&NF}$yc{K5nkV<_^8~h37boe
zFy1-`+mbriJ^sak9=Z4u?NJG9{8o&ag2&Ps4y?
ze^#N&Xa5;LOrYtNRtl|Y2y~_)NwCN7NnhVEL$QVgto@n5qUR5*TJZrXsnWkc7uS~5
ziXR^l>+1-ipQLaGYgspmO#+MKngh@NpFw*XiuVhHEr5AYsHZwZ;_PO)1c3z2X|+pS
z1h8tYoEIq7w54q-$&;K72JecYYN?>9DPu2L3NBl=ikG|`&}@FSp)@(ke~cA-1+^W-
z7o-uTT&4xsz{)mIzK8qt@u4ud`RSEp_4jw7c^TWNf9HgTUWO+it40uE9`phQ?jplPF;cKx}1&5}F$;bP$;npGJ-!u;ecdh2ZrBqt?52tl}U#
z;mO;n{vpa7>hf%WENNZJ)rd=YPrYnN2Z6f|BzN3P7=;DUPL8*(c5BzQd1g)F;aN;)
z^I1_YNWk-cf{*&LQa=MLqsG`j3m_1e8IB8HHLrObxmZ*cIQ*_^i0CohU$)jEz+x)s
zwEUzAN=0vD8xieAf2_Bp_!;FdUhBqPy`8jB5%uhR=si87B#A*6dEx|+LU5fq05phn
zi8Fv%@%6T908p^Z$;~^RU09$2!sHjF+!C%aBi_JVD!i_gL&JUah+9-}jZVm)o~9~N
zk`P4Q<~P79p)Fw7J+D01NhQ(sRWyA<#u1%i-m;@5VUKrX1L*
z26m8~FHYCI)aMv1Bmd5b+WFz6f^vKt;`HhJI7T@mnY`|C`u&IRdstZmccXK718O%h
z{15r70upx;;LpFFjO=`L8DDvveZZf=4kQ=!+kaG5Tt4sEb!P6jpYBqN=qzC1kR3g*
zBB2xW$hfh{Lsp)*a*oZ`lz23j<0n?H5I2_g#v_bxz@!!@IfI;~KrW!OU_X|2%Af%=bjtSc>EedMMKOr}S
z%(JceMM|RlsTI`X645}#*V#RzhCL2|W6Xqgq6Z}2uRnL|cv&sn`MeGsq~KMI
zR7bs!2&Y3{_fLL8|CNLIuI{i?@sHvO!}MHq?&Dc9G=@{{9qQA;^r2f*IrMAX
z*l)T}8FV&ac3t6rNviz|ST4}(5)TyXeco^?!qih60$1WTRnrK_Hw%+&2E)5sjb_sk
zNTeiylCS_V08q=UGy*)BsHo`ELJ%4l0t$kPi#*Gf<;PQk1Rmgnv?#Wo;3ENl7ec35
zl~-ygvj)_>%u9|dOx_S{MUCA_>a1a|J@gQaAL3Tdn(j
zMa>AioFuQkrh%(grKqy!_vUIArZEI|^V9wlU9bZ7sC6xOuuX02Qi)A+BS%#ApMz`(
zOSNElp^DKCX}qu`5vNgm|FE4w
z+%K4bJN^|j`x1z;*%&J%ey`uDp~nN>#?#ZY$G`yek@5pyItiWk!OBV?a5jAMw$^c_
zt?LzMGoSgtAKH#*GTh&3T8C0VGA!5x{2COh3ZDgohVS+<%E1xVNLclEhFSe-D!k`X
zxFK6w(dGf)H%qbn#v^m`Oz&y`SWp}i()VahCC%C_GUoCvVwe-$FxAuV@n2Sd-50+c
z`z!>E{uJ_KqnN-MD&Io#7OJ*!+<}7X`4+WAAUJD{LsBJbK>3&BnB5lHTZ*I=-j{#0
zURZcD`1wdMCAkP)#u=tEMHi_pbC%u8y3);C$Sa(~ZnjoGsOI)bwOS*uQkd&3a+j?D
zFboJmNye>+8Pb=-qz;0jC-T#(Yb&t~TEqy-TNS}(Y~xeOjJ
zobzTE)XmF`ynkG>)0t=RE(j_Crq4mL2kZxO2F`SyG`mR`Ea%c0Zf0w#7w`9sue
z_D~2q$ma>BQgfES9jTj+w=xS_VB-%!2~c<^(Cr+$HMVR^o}3@_CeB+;c7O`bL`JVN
znOY+ZjJvPPh>An$W){96lgpo;Lc-$JI%+z8lV!lU3E`hz008Cvp_D(9N46vIFk>In
zVbHKDu_z;RoUV$yO3$8YB|PTQGsd9N@-rqGYk}seJt-$|oG)XFj&~mmdxI01r|7w!
zA?OK5S?^D*UlzQora0)HgnK(PyRjHrgJI*S(+bnfNEVqB&0owIX-)n%qpe<@VKErO
z6<(zfNyS_3eq89NgUsN8*+Hm|*AvNR<~vCz3ys)#+P+j8#e`y-5-<|^=9Ff(@D8!G
z1mq<-f90#N*r%@kl@xp>L)^SbK9d
z=XyUh3G*9*`Cld+v&4$^5iB%XVchNN>1CBc37>VO1MY=#Arf60o8(
z+33buzPEc5+yAu;qI^v;?;G-ZxEu?Bo!Wyz*PGo(f(x+q(hp3`?4c#C!yKFNAFq8Z
zf>VC6tb_}S^G5E1RqL_A^genY_$t92Q%4UDR3(_sw56g~no^|W0>5J8mg&g%a!QX|
z@|*=$-K4Gf{uH>oI&M>)a}T%G&lI!wJyyWJ+lO9I=2AA-wBC`(@
zdB<6k&cWey5BNx>o;_kWrjgvlN2%<(f8MDK%MaxS_@jQFmM^g0QT$S^I^p~~0!{xH
znt6b)d%O`%Qg`c#4!NYXlihf
zK_v-cAw+pb-THKXbLRTh?m1luNr367D}vu>&jq;Ns7nBdYdz4>cD*&F
zuK$aKRMJAEDj$jU7@B`QZm*Hc-24SMye!jN3N~=*yEC4oz5Zw|kwdCc0%0&i%F<4|
z(!A{YH0>J6?3V>(BHr-#B`$C^wDPm-ml*Pof_i{v#1QxZI1n14L7yTg*0xz^tnUP@pTR8v8_W*C3$F|cbrW<)PMTGMMC7C0n#KmV1Ktf2eS`yk@x^r>-Z@bI`?e|_i{8T;
zc9PIOA%P9@bdxW;4n4Aei;(W}&@8(ZGT&J1e+e=MVt2^=Ds
zwtZ~h8}{0JMJ>!KK|}wrX?uN%_TGe3)Rl0BMt^zWo8NK#StIQ8%N@GIg47F@XNmr|
zoC2l;u$)RAn-;~P-jb%sGHE{3J*f|45nlMcCU*3Ne9DEx+Z4vA(~qN-YPZ}Mb==ei
zu=5rI0!ieMgGq~}D%x(DgGe7H1A?AmSXJGni#qA@c8%RCwG<@cckQ^c+V!O6puOb!
zo?22L2d1E&+orxb8_8V}*^0dKM~A>fPnn+J!dW8p7M>x`47&W&y>~$q-ABFO$_J>8
ztAiJta}H3SikM;90cW(x&xaR=H*XT*M7of1GYKl*x~ncX3*QntXP1IA{4tSSMz`D-
zS(tZscjad`Jl4;#3-j}ba}YulL8a1cy!PtZjn;&f<%tCTD-36H$-Do`isoZd%Exu0
z{L}M5=Cc!xrD-vX7S2V=>2|dMHYwEfuKF7^;xJ;TO$Bjii4(NjelT$r?Rl=~O$i@%
zv3mE5Yd_jEck(>wD$sB?o+-aI);W3cNumzqFdghj*DvIPL1S@*4*K|m$X{lKrjyQ~
zs}V-uV2WpT_v&VBmj!@k+}%FYYGGLGort5HlI$R)_ovAvJjF_N+UanTPG~W5ZPr*~ZglgAE%MQ*sLDz=jEmq^9s+zgC_y+&>kw7p`PP;nnp;tt$PlQz5_4zzs2*A3)VZp^Fl_r^h
z8sX4SB~hVHAN}Oi*DeEV81Kfgn<9qWScUY4`VIypWBIMIYs&_HR_^g`0-?2^p5n~P
z)=7)$qnmt5LPLBeY%0(^`3*iOKh3{}Pq_>Y=oS8HDRybtN<_(M{ZiCs;r*$2aWC#l
zMJslLWlGngJ%patkIiu1RvD{$g6yex!lmrhd)ejwx~>DDK8WY(7cV_dH*?f%3}W^4
z;ETR6Hs!{P0Y%J5K44zMV7jWW^v17K&ReD7X{MducC&Ks@+pleMn;{A_R}pM2eB1s
zTbI%)+Dq_b3}}JMJ8xgVHt=%H9CyFFFMe7284FhUHMjeb0%e0ML-8clnq`4x5M2`)
zFwyhseO_{XA=RY4j}d>BX7-~w0^t5s<}cnj*@qVktsWd;t;M*kdb~YxaB!#{cJf;x
z-50+VX`7Q>24ofMGlL>sj%&q&bAlFMoV
z8GesE72~BOvJOkMC^9bOSashNZ?iKlC^N6F+U^>Q@X)x$qDwbV=!5UvBi_e$`>V{ju1$N52n@&BJxVgsuE?AJ3txg{Px*IxHQ-cqnq
zXfG-{&=L6C%mwJmeR#sEU&tRB7U{#f