From 27e5e4011b05552ab839cf4c5db890f6784f829c Mon Sep 17 00:00:00 2001
From: S34N <12197162+S34NW@users.noreply.github.com>
Date: Wed, 28 Dec 2022 00:14:51 +0000
Subject: [PATCH] Allows admins to spawn a nuke with the DS (#19872)
* Lets DS spawn with a nuke
* OOO
* removes this unused code
---
_maps/map_files/generic/centcomm.dmm | 37 +++++----
code/game/gamemodes/nuclear/nuclear.dm | 10 ++-
code/game/objects/effects/landmarks.dm | 12 ++-
code/modules/admin/verbs/deathsquad.dm | 16 +++-
code/modules/admin/verbs/one_click_antag.dm | 85 --------------------
icons/effects/spawner_icons.dmi | Bin 58210 -> 59106 bytes
6 files changed, 51 insertions(+), 109 deletions(-)
diff --git a/_maps/map_files/generic/centcomm.dmm b/_maps/map_files/generic/centcomm.dmm
index 39d7f903f6f..1e67761d0f6 100644
--- a/_maps/map_files/generic/centcomm.dmm
+++ b/_maps/map_files/generic/centcomm.dmm
@@ -5958,11 +5958,6 @@
},
/turf/simulated/floor/mineral/plastitanium/red,
/area/shuttle/syndicate)
-"uI" = (
-/obj/effect/landmark/spawner/nuclear_bomb,
-/obj/machinery/light/spot,
-/turf/simulated/floor/mineral/plastitanium/red,
-/area/shuttle/syndicate)
"uJ" = (
/obj/machinery/optable,
/turf/simulated/floor/mineral/plastitanium/red,
@@ -9333,6 +9328,9 @@
},
/turf/simulated/floor/plasteel/dark,
/area/centcom/specops)
+"JT" = (
+/turf/simulated/wall/indestructible/opsglass/limited_smooth,
+/area/syndicate_mothership)
"JU" = (
/obj/structure/holowindow{
dir = 1
@@ -9691,6 +9689,11 @@
"Ln" = (
/turf/simulated/floor/carpet/black,
/area/wizard_station)
+"Lq" = (
+/obj/effect/landmark/spawner/nuclear_bomb/syndicate,
+/obj/machinery/light/spot,
+/turf/simulated/floor/mineral/plastitanium/red,
+/area/shuttle/syndicate)
"Ls" = (
/obj/machinery/door_control/no_emag{
id = "ASSAULT";
@@ -11971,9 +11974,6 @@
icon_state = "snow"
},
/area/holodeck/source_snowfield)
-"UO" = (
-/turf/simulated/wall/indestructible/opsglass/limited_smooth,
-/area/syndicate_mothership)
"UT" = (
/obj/machinery/economy/vending/cola/free,
/turf/simulated/floor/plasteel{
@@ -13259,6 +13259,13 @@
icon_state = "darkred"
},
/area/centcom/specops)
+"ZK" = (
+/obj/effect/landmark/spawner/nuclear_bomb/death_squad,
+/turf/simulated/floor/plasteel{
+ dir = 5;
+ icon_state = "vault"
+ },
+/area/centcom/specops)
"ZL" = (
/obj/structure/showcase,
/turf/simulated/floor/wood,
@@ -33024,7 +33031,7 @@ Ji
Ra
Xz
Zr
-Ji
+ZK
MG
Ev
Xu
@@ -59698,7 +59705,7 @@ KX
KX
KX
uq
-uI
+Lq
uL
uV
ab
@@ -60457,9 +60464,9 @@ KR
mI
KY
nB
-UO
-UO
-UO
+JT
+JT
+JT
KY
rU
sn
@@ -60973,7 +60980,7 @@ ab
ab
BZ
hG
-UO
+JT
iT
rU
sx
@@ -61230,7 +61237,7 @@ ab
ab
BZ
BY
-UO
+JT
lB
KY
KY
diff --git a/code/game/gamemodes/nuclear/nuclear.dm b/code/game/gamemodes/nuclear/nuclear.dm
index aea167d9dd6..1e7852cfe9d 100644
--- a/code/game/gamemodes/nuclear/nuclear.dm
+++ b/code/game/gamemodes/nuclear/nuclear.dm
@@ -99,17 +99,19 @@
qdel(S)
continue
- var/obj/effect/landmark/nuke_spawn = locate(/obj/effect/landmark/spawner/nuclear_bomb)
-
+ var/obj/machinery/nuclearbomb/syndicate/the_bomb
var/nuke_code = rand(10000, 99999)
var/leader_selected = 0
var/agent_number = 1
var/spawnpos = 1
- var/obj/machinery/nuclearbomb/syndicate/the_bomb
- if(nuke_spawn && length(synd_spawn))
+ for(var/obj/effect/landmark/spawner/nuclear_bomb/syndicate/nuke_spawn in GLOB.landmarks_list)
+ if(!length(synd_spawn))
+ break
+
the_bomb = new /obj/machinery/nuclearbomb/syndicate(get_turf(nuke_spawn))
the_bomb.r_code = nuke_code
+ break
for(var/datum/mind/synd_mind in syndicates)
if(spawnpos > synd_spawn.len)
diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm
index 1f8e34bfb79..cf6c589179d 100644
--- a/code/game/objects/effects/landmarks.dm
+++ b/code/game/objects/effects/landmarks.dm
@@ -214,7 +214,13 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/awaystart) //Without this away mission
name = "Holocarp Spawn"
/obj/effect/landmark/spawner/nuclear_bomb
- name = "Nuclear-Bomb"
+ icon_state = "Nuke_bomb"
+
+/obj/effect/landmark/spawner/nuclear_bomb/syndicate
+ name = "Syndicate Nuclear Bomb"
+
+/obj/effect/landmark/spawner/nuclear_bomb/death_squad
+ name = "Death Squad Nuclear Bomb"
/obj/effect/landmark/spawner/teleport_scroll
name = "Teleport-Scroll"
@@ -222,7 +228,6 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/awaystart) //Without this away mission
/obj/effect/landmark/spawner/nuke_code
name = "nukecode"
-
/obj/effect/landmark/Destroy()
GLOB.landmarks_list -= src
..()
@@ -231,7 +236,6 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/awaystart) //Without this away mission
/obj/effect/landmark/proc/set_tag()
tag = text("landmark*[]", name)
-
/obj/effect/landmark/singularity_act()
return
@@ -597,7 +601,7 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/awaystart) //Without this away mission
icon = 'icons/effects/spawner_icons.dmi'
/obj/effect/landmark/mob_spawner/Initialize(mapload)
- . = ..()
+ . = ..()
new mobtype(loc)
return INITIALIZE_HINT_QDEL
diff --git a/code/modules/admin/verbs/deathsquad.dm b/code/modules/admin/verbs/deathsquad.dm
index f7b95b7cf72..d595a0efea0 100644
--- a/code/modules/admin/verbs/deathsquad.dm
+++ b/code/modules/admin/verbs/deathsquad.dm
@@ -50,13 +50,21 @@ GLOBAL_VAR_INIT(deathsquad_sent, FALSE)
// Find the nuclear auth code
var/nuke_code
+ var/new_nuke = FALSE
for(var/obj/machinery/nuclearbomb/N in GLOB.machines)
+ if(istype(N, /obj/machinery/nuclearbomb/syndicate) || !N.core)
+ continue
var/temp_code = text2num(N.r_code)
if(temp_code)//if it's actually a number. It won't convert any non-numericals.
nuke_code = N.r_code
break
if(!nuke_code)
- message_admins("No nuclear warheads have been detected, the Deathsquad will not be provided detonation codes.")
+ message_admins("No functional nuclear warheads have been detected, the Deathsquad will be issued a new warhead.")
+ new_nuke = TRUE
+ nuke_code = rand(10000, 99999)
+
+ if(alert("Do you want a new nuclear warhead to be spawned with this team?",, "Yes", "No") == "Yes")
+ new_nuke = TRUE
// Find ghosts willing to be Deathsquad
var/list/commando_ghosts = list()
@@ -74,6 +82,12 @@ GLOBAL_VAR_INIT(deathsquad_sent, FALSE)
to_chat(src, "Nobody volunteered to join the DeathSquad.")
return
+ // Spawns a nuclear warhead for the team
+ if(new_nuke)
+ for(var/obj/effect/landmark/spawner/nuclear_bomb/death_squad/nuke_spawn in GLOB.landmarks_list)
+ var/obj/machinery/nuclearbomb/undeployed/the_bomb = new (get_turf(nuke_spawn))
+ the_bomb.r_code = nuke_code
+
// Equips the Deathsquad
for(var/mob/ghost_mob in commando_ghosts)
if(!ghost_mob || !ghost_mob.key || !ghost_mob.client)
diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm
index 6aecd76cc5a..daa067876b4 100644
--- a/code/modules/admin/verbs/one_click_antag.dm
+++ b/code/modules/admin/verbs/one_click_antag.dm
@@ -182,91 +182,6 @@
return TRUE
return FALSE
-
-
-/datum/admins/proc/makeNukeTeam()
-
- var/list/mob/candidates = list()
- var/mob/theghost = null
- var/time_passed = world.time
-
- var/antnum = input(owner, "How many nuclear operative you want to create? Enter 0 to cancel.","Amount:", 0) as num
- if(!antnum || antnum <= 0)
- return
- log_admin("[key_name(owner)] tried making a [antnum] person Nuke Op Team with One-Click-Antag")
- message_admins("[key_name_admin(owner)] tried making a [antnum] person Nuke Op Team with One-Click-Antag")
-
- for(var/mob/G in GLOB.respawnable_list)
- if(istype(G) && G.client && (ROLE_OPERATIVE in G.client.prefs.be_special))
- if(!jobban_isbanned(G, ROLE_OPERATIVE) && !jobban_isbanned(G, ROLE_SYNDICATE))
- if(player_old_enough_antag(G.client,ROLE_OPERATIVE))
- spawn(0)
- switch(alert(G,"Do you wish to be considered for a nuke team being sent in?","Please answer in 30 seconds!","Yes","No"))
- if("Yes")
- if((world.time-time_passed)>300)//If more than 30 game seconds passed.
- return
- candidates += G
- if("No")
- return
- else
- return
-
- sleep(300)
-
- if(candidates.len)
- var/agentcount = 0
-
- for(var/i = 0, is|mgU2ycI#?Wys$;l
z;O6f0yZ6QHB5ms3+yIQDQfDcSaJtUhaxnD;C{<+2*vP9Hbsm`
zY|sW5)eovIRE_!z`ytceavi78O%XB`yycVpf#w$ng=j@~zJ+GS7YXg#2X_1d7cF-O
zX!h683Z9rRkM%cyhz>?MV-?S;rz>QO4JN*wnxuHkMT`!E>2ucU`Iv*ooK&p_y#%bPM{LwIWK?m@
zII1#qg2zp_83tE*vsgg$UA&PA;Z#+W5qc#fK29phNoTcJhNM31pxKhq$oM<6jn|BE
z_)$T!!*TD_oG8hrNs6vLrEk+qCFs-8~#+)Bj13iWj2XRo8b
zCGTBXuid)Z6n_Eq|Nbg13X`X^@BvTJf84{Oy3RHJn*j!$05cF^xQang2_#xQEmlbx
zueI^g0!9>U$T?|3@fLGZCANu4W73A&G{z+ISX*M^B}zncG-=YH1g#oKs>dia2r7aX
z7_NhZh{I*~kIf7-+yt3{s`Eb2eui0V?|IkvvG%*yUVH8DJ7_%F4A5$|WFI_8e?&wC
zQ86(T=I2{HBBE&<{Qdon9p1;+2M|vHe}8{t8{8Gn7UN#CW{og)>Qo{lBT=bT-P*5G
zsfdh>Wa`wZtXZ?hqW1qYH&>W5cP^8{!^zCZFpK>HqWENHWH2c_oH=vn^3U8{i}Ls6
zdjmTA-qQd7!u)(8GBQ#as{Utce}BsEJTwjFKd)&JNZFk?DEvcVe^gYI5EK;5*s&pa
zs#Mf>;;+|g@l>f88xlfLaB#oE(DW%Lbar-jw?8;-+B8XTb$x9_U(gdz$;C1r7}@z3
z=~3`L$@tWEJ9r16Uz5;^^Ir)80RcEWI~zk)ntqm+mRd9z(|;QOgu>N=L-1^dIeQsH
z)tY`9!jM{vzh%S-f5G3ufxxS$y4ZigXFQjho3Sq|v%3G?X2jv`?M>Oof5stv9^T&G
z6l{OP>i#!{L42-gyQb;(Rf^$I?*tLL*C(O-{S?g52^$+5X=-X>*sx*9=!6d_&D|
z5TUk)O3JTn!P_?xsgtMG#m4}}`LBeUsj>JwI55o3ji%aKe=apQbN`on?g{@JFgIq7
z(4F`g;H#9|1n3SxzbB#VNBvMzT3U)+F2~KyZO}X4Q1crCwM(5m@g4Kxpo$NO_Md6b
zx71WCzK3_FvU1Su-+JN_r|o^r{D0cshpi_r4F-L;@KwrHkM!he|#hb91;L_eENdbPK5tkog<9>g*SUYKEw!l2TfU{02~su#f@zE%kQkl
z@9yp{gl!7Nv2-L)I(1C`{tpvH$)kV|j5+CRNp9
zXqLZk_`+)ZNl8h9hldBJKl%`Ta1bK`0w^mjMOJ){f6Gb*`}SuDyLard3V-ZxJKisv
z%^1jZ)%gdYR8f4U7(elR+
zEH6Utf9~!=aZwQ~wth)fT>(|0BaL-w-xT5D8pDe(=cjl
zYq5q1#r`%*cwm7z@vZtInCFv|xpMU?%Xd9Vf5YJxv$-H^&H)+3=N5BMeHJ0xEm$9r
zo}Mlk5`9zwU;NCQ<7r}GsN-p8`CeQA)rg7mLfZGYWFs?I!NP+BZdjC_alH8iCrYj@NJK
zf61wEwYdH1>FL76iQ?Z?K-uU8q~)fG{JCi?9v?>)qW?YIE${zb(J?}5YAX5p`PkV>
zNx7lNK>`jAG921Zaj8^F@|6lA9(jaa(J_PeIKKI~^MJ)C`Q`ary4!l%zo)q;L;0StUFjk|^@~%n1q?AKA=w{
zAVW6H4I4Jlpwp2&Tt-5D4TldMf1#p1Manguj?<^VHQV1(sBA3fg7z%Ah5rEHm-axQwk2h44Yzc7jHYy5;_s;y3kwXMSt?
z|K#F0^n!SzJ37i(NegcW2l7zJ!}$66(b(9COeUW6ZGynb#RE?X+!I2Se;)$ydP)l0
zw{J(#*Bgc4b|<0*0faUI2M0;}CdJXwjx#4~*zoofTflr&W8jKZcTLx9KwF!Di<1Hu
zCxuOjdO@!OWVreQEMK;a$&)AZ*FV2Ud~7@?@=g*H8_lr^KcK$89v5e4{xos~$J&Ec
zS>h_3xgtjhRF2_-R=nNwe{lC?dE#;w{OmE3o?6O>AMN6Glf3LNxruQ}E@;mZs2nrk
zQBY_50p5CJ6Y;U}y!FN={&&r@q%`V{0m72yvM%-y#0S0kzcarz{J$$YM(}eGV;wiO
zC;IkP`QfYb;{pFbE|gthU9}dyUXNa{CwaJxmi92^ehv;+8wEZ4f6hBR^QS-4Q1&t)
z-uf7}+l53ThVvD-j`CCARFnMj{4K6ZR}vP!&L7rqFm8u)s=B@Xv$vPx;2=fjXorJ?
z6os=Ag|iZy2zA9RM?e81N3wj`GCVy!nKEUHvHZC;&y#Yam*M55V*aB)W%;sY
z7P|^J=*1YgQE!XEf5ywp%Na9f3|rH-8TnmYTv&k^F4ZsrZ8&bAFty(lo$XJSiz5I_
z+dtI)2WV((qwwZU!otE(DwQaeN=_FPl5#^79+^zWI;9hCZf=ZjkN(kT
z+|$yh?I_5HFSB9(PioET?Cd4BQBXJNbsf+j7ELo|f5EIe|CMmr(cf67(^ir^T*kQ8
zn-s}q7&3z^&VMDmw;~pmN=1HtJ_AV!`0E#g&G@Cm#ViZ}wA>(hxC~#p3}}O5z5;gILrj>>laadH{E{&kwi!o~vPO6iZ6PeAVdFuIf5
z0JzA;-no5hM4$a`^h7r`qk
zhBmP)a^ghS-?Ou~jecdGrzILD*o?`_m9*v;#X3(=T;a$t%2Nc{!SAo@Oku6p7`6}Aon%4P3p-1
z)%h08={|V#&5q-@ZnH|W?ke0;fDA7?f0mY(a_-ViO4}3A6%`c`6ckKRQ4tD-f(D(A
zbLY+x>hDNEK*yu;fx?u(va*sxhYkTyTU$$D;3%$My-HKl4XzBA;qN_ysw&I!8(ucm
z6@SjR72@sR`0?ZU`eYsvQzD3%5o`q4L$8y
zVF;3f{i4NGRaIHk|E4I}Th4vWkC5+R$Bcks94u`jthv?f`|Y5&afu*6N%`koT(ydv
z+;@2*x7kdDOmX@QOrHU+%5JNvf32${<>mdhmC`2YReF*bXUbnc>W31~OE-lvW5xhb
zTA^V@>kaS`Cx^WNPfyP-#|(u3u9_vC*-qtT#HC@kv#meqe0Di*~u
z)83xEQ>QrK>q%K@DQ#_Sw6(R-vU?Bp3o|U{e^cyvscWvOr*84RujuVj-M9aGEu
zDs5?QW7{MLp2%(Hh)jWReG8tQBz*gNBv9x-;Jc7~Rd
z000DjNkl
zUMsOAzfnZGvH#-5i;NsOvWxwed@m}q7nIYK!Q
z3REp!idV)yXn*t`x9{!=PCx$p?x-g%qo}BevJ&wY_`M&vkoI*83{w)E{)*ZD-<*Bc
zOnjeox!;Erlf?^9SJfo4z12GLplG4|7fL3JBEH)S|1i2kdOZ(+m0~K!)M{
zlqpl#w{IWG$;lBZDJe&zqoXl>L_8Qcd-g1^zWQp!3opEIf7EbWW^Ht~f8xZ6k`pIR
z2!mz+Q2XEA&W>v`8BK`dK&9Xxo@f7t8eFYb(6||JARvI8
z1q*EJf4YHfR?LPz!G2LJdcB_3b?eN^*etG%XW@4
z@+!Wg%2;Mi45j@;$-i*nLdh1jT4?HAwt2Gvh;u@lHjy}p`O&P243jli-}?FjFz(8g
zt~>tZe_23$lz-&2&w4%PmsV)!osND9kY2B6>(;GiWi>T5UCOM5^6Qr>dnvmc@XP(;dYz=Cq%AXN&LlK6l#LrVlA4-&%ekDSq@*pYR;{9-pn$Bb
ztUeucucFTaR9jsw{MQ6=!GAh
zKXn)yc#;=B*v|M!)AH>?1D3xE54HV6%^wvNCA2s@1L7+RTCJ8}0f(KPjo$%|MMVjj
znO)cH+{p+H4K*%+?JEu)I>hwp)5*%pvQn$=4)kdfx-dUqh>D3JA|e8Re}7|VH{j^e
zf1~*O`x6lnK~zi(h57jw4a4AsS}+xv-Y`B=+~1P?Lv8<1^G8KR3Bkd^goK2kQmKq$
zV}MqxMWs>^5)wjia4=C(QG*hUY%q|Tnwq$A<3`S$In(EnOloRs;+ZpN`aEK~m(iz~
z(AnA9-FB#H)22y!s~cF;I?$7#G>{|dLaokH{6lU3Q1dTYvZM>g_3PKk%*>R`n>SBT
qC=^|e*|B5CT{Q}_7Vh&}b1CS(t!+KO$bVOxyV{&P5bZKvH004NLjn++Xn?Mi-;IsJ^tK?oa
zZLdDy4<&93ak16(Rt+$QkzvQ3U4q+yuK&7U
z6Nf13N3t`-mw|kQsxuh|#!RebgRCYqNpOQI4z1Ox9yp1PYKf3LN`y_1BNW3c*%UA$
zu|XSL)Ot{Dp=z|AxgHW7F4t-D-4q~G!CSt_Z)kq7SBTbRms@CIJd1Dtf1u)5xahVz
zLUXwKR`A3;J(pj9AUYbQj8(X(p0AMQJ51_!YNFyT^AIG&loKS6qvGCJk<|%rx+070
zQ*yG>NL~^~Yo*p!l^1KA@o8D~NM9BTwQ_wv^5x8AC{cfaLiGh;9qe<$}^=fhU?AatFB%sx52en_T)sm2q
z!0g$xS-pC-toHx?@L_Sm!i78-8%tq+exKYgAO)Yo{Cpmajb*{Yh5Y^SVOjOB=X*2#
zeJ}U_zp|o2Oh`x&f9=)(tnJ_MaT!8;-#;(3i){F~Y)tg+VSiFmk{A&Y$&@M4_-nPa
z_S0`Q81UC>nGzjML}cWM($EYmCv-7V!2}?>!#;oHx^zEa+
zam|y8q{q_5fAD+e^YPoO=(^g7vztGQS8Sx_htDb8b#v7*9sG0|(W@9Rc;_FgU2Yuu
z_SN@vGSPT+4|8TGaOOf6b7m*dcyte*P6G=yI&g3!MihXoJ9%f>-agCz>utfUq%VH`
zr#{QE*0-1aFTJ`J=ZSaYJn?RxdEqt7?=QW&cFcmHe}mhH5nqCtJG^UbBAsP>ElYEo
zt+BVhIp8QBSdRGhpDasro2{|8{cG2*<--p@BrLc$0mJEY4LtG06E@fG&%%@i*9~}|
z=6~k692^IXXcAg|@{kxB8j6>fmnBuD^|H3MR@P)px0?R+$}G_}az5@}0hUy?)=P65
zQd{X?f15N(3~_ZOy#BiZ_SXbW<4k8KE_HP__rGRt27!Tr)P3?EuCa*(1_p9;+eVxF
z-x_o9IcFGHraRb2N{2d}Amo^Ywl5>T3uf+wMx&9Ajt<=2-BGDjW7hfXt#1xO-R+Gu
zoO_qR;H5Zu`rADCm{FfRBsR}ZBgEAeca4UQf0h=`bapcF%bh<7|C?EuvOpXx_?QXy
zQ8@z8IAFw+(5;hyrl_s0MWs@q(P+lJ^VwV9oT%N&)1Tm|-;QbU0m=R!dg?88v`Fva
z{m|GrX7+FS_6+4NL4EvR?h?e7Z_kW{{GbH;s4Sx%2jhzo%>k{_9~S|9@2EjHzu3}#
zfA;e*j#4B7Z2#=vZFVC3HLFCN@^m1(KPh68s#m7YC;~;I;e?Sl-v1Aq>HGTniZPp}
z;#M2RQ=Yw(zkhCzgqD2qv6zcI{p8a&)7R%plf1e!O7=`lvb3LQE~M##l$zy#-uS|1
z`pcFr6aD=BDBtxFrpO2;g@#gBTZ{5Ue>G=))D-N=7eC&<(FK+ZQ+q~9|MeZWQ5UolZ~euC`w=jG*zGiFG?e>VYjcP%34
zaE_#ZIEVCU88jjJ-_KWm|K}#Bi0{1f4iyy@I6FJB;fe`Y1-QB@aqS5;PEJl_pF2
zRU-%jKVKTnvjm8F=ouq0ADwT?WfI##={2yN&qCx~ccGau0YMOWNb63_m;3nQPHzN3Kr>+iYPFiAXk@j&S6}4R
zyi+_Iy;RZ%~l8l1|`e
zHU1bG&OOohqSNUx8jUEG(n;SfiX2HFeM#W!5$*F40P8nwVB5BBh^AJ{B(&qwYy2@}
z05X630<2iRoS8Fc^5^&dLS|Yf-gg$q}f
zh~Yj_)EK18JwIQ6RxDk?qF+A7vS*&-qg}bIx2ntjsz%C7Qe!wyxKGrmM?wAV2Y74a
zCNk49d28b)UR?caHW*Eo1Yy}K9e+vdoCKD!;iEIxg*Lu>F>s(!JHVXRn+i&y2AKs(A?stInERgxf!T92a
zBcRZ*Fjg#Ij=#S@adB~$_EoF@jSW|NPyW>^B>@3i9)08&tXRHWwr}BflavED>5o#f
z@rH&5qN1YMlJkK@-`m@pl}PDQ%@fe({YHzm{nqrie?MC#jR54f-`@TQXz%W(^6FJ$
zVq);|@xjN(hw`J9Y`7u?9;H&r8Xr$I8Vz?{bE3W5Ci&?5ux?R3uj~%8xsC(dGUQ#b
z6DLma@Vt2dq^71SN=r*cbH~0mNI{N=66T`Q=@jeMtrN}rjfVQRI_lf{CLA|cz%+JB
zl?hBHe^bxHaPIu$y$@V>znh`I{U@rbEJj~!mjc|SHmN>j%f*YNBqlRKqmj-2q5R)p
zALRGH%i=VCo|;NtULF~#sfvPv0`bS5(#+0ouFwujr4p0L#8qcl@bChXlam#Bd3j=L
z&wjSzmEA$CTU3uisV3Ox#@jo%H5oDh{paF2f0inkO(zeDXWc?9>)H&BWP2#Nuj?vR
zDkbKd((03k#J{XeL#x$NQBlEYN&>$8+sHopP99Pf1^}*IA=^Vquu2JZLq`V+XG#Cf
zO*3WD&rdPnHT|D3Hk8vr^AoPv+R{GZdZ*6TA*REYlY-}uh_UySyWr=5Igb?G=M#TK-
zG@U#o?%TJIn3xyZa$v40sHpt<5%|uiZ9Qfj@F|M^^A~F`F|+PBcOGQ
zKI4_$K{zQ*Y(3DzkA`$k?Ur{A(1Gn3f7T?lN~OZj&u>8chASr48%@09>S1Z~^YcTc
zQXvR}YzJx9SM;lbZyA*w|RKTJ3;!gZW>p)e;*UOOp-!KTBw&qM`zW!GN2ak_}f(yx9e>e;L|o
zX=!1W&}b9?_h;*Y7AF11iEW3^Tb5f7wAf6~f$g~AgNWvr9cycAsXlX++MWV*RaI3)
zL_|_mRfSruroF9=>gsByhPV+L+Iwq!v{>smHa1dJR0KdvOAF!Qlc}$-r=#Nv=RA~z
z1WuxuQ{;S{
zJpJh!rS`S1E)170QFHn`UERn3;o*}9_}|ORi?XsZG#bq))g`R`@3J_J^!x%o
z0xq_-aQTXfo~kfJIDyOJbefu)Wc9x_r*=1RN9QamT%DO4>dyY!4q`gHfBJlOFuu6q
z%c$y;heUv*ZXv|Q#St17M(&Os6qS~8{_JT20<@ezFAxzK!HX+jq_nh@saK`Ni^v26wzgI8ZIs_lzsOdA;JFC
z)z;G8-A#9QH~&ywM@B)utp2w(j+asG%MC|BmQHl`Y@a!ZoXwj#c<>-IXU=5DjvZuV
zW?H_TJ3C$w1mfc2EbGRKgsATGczr1`}gm+
z^!UuoOawtdr_+tu@Y`D7)(mF9HMX|@R`7pKMmpZ!-h;05fA;pKCL`Te(hhD@Mx2n$
z!A}#H#c7yKCc4(F>C@-olS9-pt$!G$-
z)Yh$P;zyb+ZMMXo_S;iGH8oZ7u3j&8^l#g|Sp=jxp-r1uI)?Sp9E^WP6o5=76I-@y
z>C@KS+&rMoe^xYHK10LhGdFCr7528@-ui7=O*{|L=D@*l8Fo_oCz56g00037Nkl7cNSI|z0;(G0J>)YFY
zd+R49C5hLrNiY2R`1oKj7}&dauOcxqQ8a%BaB*>=f3UD{+>C-8&jHz&Va)+mR#b>d
zDJjIq#}g6~(xaN-uByDf60<112isQzD!|Zp&~IcQB