From 2e0389ed197b62ed69d362bd7a6e9bf303419669 Mon Sep 17 00:00:00 2001 From: NanakoAC Date: Sat, 10 Sep 2016 20:40:16 +0100 Subject: [PATCH] Light Replacer Improvements (#772) rscadd: "Light Replacers can now be used on a box of lights to automatically refill them." rscadd: "Added an Advanced Light Replacer, creatable at science. It sucks up broken bulbs into an internal storage, greatly expediting mass-light-fixing" tweak: "Custodial cyborg module now comes with an advanced light replacer." --- .../objects/items/devices/lightreplacer.dm | 97 +++++++++++++++--- .../objects/items/weapons/storage/bags.dm | 26 ++++- code/game/objects/structures/janicart.dm | 17 ++- .../mob/living/silicon/robot/robot_modules.dm | 2 +- code/modules/recycling/disposal.dm | 15 +++ code/modules/research/designs.dm | 8 ++ html/changelogs/Nanako-Lightreplacer.yml | 39 +++++++ icons/obj/janitor.dmi | Bin 11069 -> 10868 bytes icons/obj/tools/lightreplacer.dmi | Bin 0 -> 4063 bytes 9 files changed, 183 insertions(+), 21 deletions(-) create mode 100644 html/changelogs/Nanako-Lightreplacer.yml create mode 100644 icons/obj/tools/lightreplacer.dmi diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index d59b7ceaa0a..35f44867758 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -15,7 +15,7 @@ // // HOW TO REFILL THE DEVICE // -// It will need to be manually refilled with lights. +// It will need to be manually refilled with lights. This can be done by using it on a boxful of lights // If it's part of a robot module, it will charge when the Robot is inside a Recharge Station. // // EMAGGED FEATURES @@ -43,28 +43,44 @@ name = "light replacer" desc = "A device to automatically replace lights. Refill with working lightbulbs." - icon = 'icons/obj/janitor.dmi' - icon_state = "lightreplacer0" - item_state = "electronic" + icon = 'icons/obj/tools/lightreplacer.dmi' + icon_state = "lightreplacer" + item_state = "lightreplacer" + contained_sprite = 1 flags = CONDUCT slot_flags = SLOT_BELT origin_tech = "magnets=3;materials=2" var/max_uses = 20 - var/uses = 0 + var/uses = 10 var/emagged = 0 var/failmsg = "" var/charge = 0 + var/load_interval = 60 + var/store_broken = 0//If set, this lightreplacer will suck up and store broken bulbs + var/max_stored = 10 + +/obj/item/device/lightreplacer/advanced + store_broken = 1 + load_interval = 10 + max_uses = 30 + uses = 0 //Starts empty + name = "advanced light replacer" + desc = "A specialised light replacer which stores more lights, refills faster from boxes, and sucks up broken bulbs. Empty into a disposal or trashbag when full!" + icon_state = "adv_lightreplacer" + item_state = "adv_lightreplacer" + /obj/item/device/lightreplacer/New() - uses = max_uses / 2 failmsg = "The [name]'s refill light blinks red." ..() /obj/item/device/lightreplacer/examine(mob/user) if(..(user, 2)) user << "It has [uses] lights remaining." + if (store_broken) + user << "It is storing [stored()]/[max_stored] broken lights." /obj/item/device/lightreplacer/attackby(obj/item/W, mob/user) if(istype(W, /obj/item/weapon/card/emag) && emagged == 0) @@ -76,9 +92,11 @@ if(uses >= max_uses) user << "[src.name] is full." return - else if(G.use(1)) - AddUses(5) - user << "You insert a piece of glass into the [src.name]. You have [uses] lights remaining." + else if(G.use(5)) + AddUses(2) + if (prob(50)) + AddUses(1) + user << "You insert five pieces of glass into the [src.name]. You have [uses] lights remaining." return else user << "You need one sheet of glass to replace lights." @@ -97,6 +115,55 @@ return +/obj/item/device/lightreplacer/afterattack(var/atom/target, var/mob/living/user, proximity, params) + if (istype(target, /obj/item/weapon/storage/box)) + if (box_contains_lights(target)) + load_lights_from_box(target, user) + else + user << "This box has no bulbs in it!" + + +/obj/item/device/lightreplacer/proc/box_contains_lights(var/obj/item/weapon/storage/box/box) + for (var/obj/item/weapon/light/L in box.contents) + if (L.status == 0) + return 1 + return 0 + + +/obj/item/device/lightreplacer/proc/load_lights_from_box(var/obj/item/weapon/storage/box/box, var/mob/user) + var/boxstartloc = box.loc + var/ourstartloc = src.loc + user.visible_message("[user] starts loading lights from the [box] into their [src]", "You start loading lights from the [box] into the [src]") + while (uses < max_uses) + var/bulb = null + for (var/obj/item/weapon/light/L in box.contents) + if (L.status == 0) + bulb = L + break + + if (!bulb) + user << "\red There are no more working lights left in the box!" + return + + if (do_after(user, load_interval, needhand = 0) && boxstartloc == box.loc && ourstartloc == src.loc) + uses++ + user << "Light loaded: [uses]/[max_uses]" + playsound(src.loc, 'sound/machines/click.ogg', 20, 1) + box.remove_from_storage(bulb,get_turf(box)) + qdel(bulb) + else + user << "\red You need to keep the [src] close to the box!" + return + + user << "The [src]'s refill light shines a solid green, indicating it's full and ready to go!" + +/obj/item/device/lightreplacer/proc/stored() + var/count = 0 + for (var/obj/item/weapon/light/L in src) + count++ + + return count + /obj/item/device/lightreplacer/attack_self(mob/user) /* // This would probably be a bit OP. If you want it though, uncomment the code. if(isrobot(user)) @@ -108,9 +175,6 @@ */ usr << "It has [uses] lights remaining." -/obj/item/device/lightreplacer/update_icon() - icon_state = "lightreplacer[emagged]" - /obj/item/device/lightreplacer/proc/Use(var/mob/user) @@ -124,7 +188,7 @@ /obj/item/device/lightreplacer/proc/Charge(var/mob/user, var/amount = 1) charge += amount - if(charge > 6) + if(charge > 3) AddUses(1) charge = 0 @@ -150,6 +214,13 @@ target.status = LIGHT_EMPTY target.update() + if (store_broken) + if (stored() < max_stored) + L1.forceMove(src) + U << "\The [src] neatly sucks the broken [target.fitting] into its internal storage. Now storing [stored()]/[max_stored] broken bulbs" + else + U << "\The [src] tries to suck up the broken [target.fitting] but it has no more space. Empty it into the trash!" + var/obj/item/weapon/light/L2 = new target.light_type() target.status = L2.status diff --git a/code/game/objects/items/weapons/storage/bags.dm b/code/game/objects/items/weapons/storage/bags.dm index 62d460fd45e..04ad251fbac 100644 --- a/code/game/objects/items/weapons/storage/bags.dm +++ b/code/game/objects/items/weapons/storage/bags.dm @@ -48,6 +48,26 @@ icon_state = "trashbag2" else icon_state = "trashbag3" +/obj/item/weapon/storage/bag/trash/attackby(var/obj/item/I, var/mob/user) + if (istype (I, /obj/item/device/lightreplacer)) + var/count = 0 + var/obj/item/device/lightreplacer/R = I + var/bagfull = 0 + if (R.store_broken) + for(var/obj/item/weapon/light/L in R.contents) + if(!can_be_inserted(L))//This displays its own error message if the bag is full + bagfull = 1 + break + count++ + handle_item_insertion(L, 1)//value of 1 suppresses confirmation messages from this one + + if (count) + user << "\blue You empty [count] broken bulbs into the trashbag." + else if (!bagfull) + user << "\blue There are no broken bulbs to empty out." + return 1 + ..() + // ----------------------------- // Plastic Bag @@ -254,7 +274,7 @@ max_w_class = 3 w_class = 2 can_hold = list(/obj/item/weapon/coin,/obj/item/weapon/spacecash) - + // ----------------------------- // Book bag // ----------------------------- @@ -268,6 +288,6 @@ storage_slots = 7 max_storage_space = 200 max_w_class = 3 - w_class = 3 - can_hold = list(/obj/item/weapon/book, /obj/item/weapon/spellbook) + w_class = 3 + can_hold = list(/obj/item/weapon/book, /obj/item/weapon/spellbook) diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 8a1b0985aed..75fe5fd3526 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -18,16 +18,17 @@ var/has_items = 0//This is set true whenever the cart has anything loaded/mounted on it var/dismantled = 0//This is set true after the object has been dismantled to avoid an infintie loop - ///obj/structure/janitorialcart/New() /obj/structure/janitorialcart/examine(mob/user) if(..(user, 1)) if (mybucket) - user << "[src] \icon The bucket contains [mybucket.reagents.total_volume] unit\s of liquid!" + var/contains = mybucket.reagents.total_volume + world << "Contains is [contains]" + user << "\icon[src] The bucket contains [contains] unit\s of liquid!" else - user << "[src] \icon There is no bucket mounted on it!" + user << "\icon[src] There is no bucket mounted on it!" //everything else is visible, so doesn't need to be mentioned @@ -59,6 +60,11 @@ else if(istype(I, /obj/item/weapon/reagent_containers) && mybucket) var/obj/item/weapon/reagent_containers/C = I C.afterattack(mybucket, usr, 1) + else if(istype (I, /obj/item/device/lightreplacer)) + var/obj/item/device/lightreplacer/LR = I + if (LR.store_broken) + return mybag.attackby(I, usr) + /obj/structure/janitorialcart/attackby(obj/item/I, mob/user) if(istype(I, /obj/item/weapon/mop) || istype(I, /obj/item/weapon/reagent_containers/glass/rag) || istype(I, /obj/item/weapon/soap)) @@ -273,7 +279,10 @@ overlays += "cart_spray" has_items = 1 if(myreplacer) - overlays += "cart_replacer" + if (istype(myreplacer, /obj/item/device/lightreplacer/advanced)) + overlays += "cart_adv_lightreplacer" + else + overlays += "cart_replacer" has_items = 1 if(signs) overlays += "cart_sign[signs]" diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index 96552b0ead8..b1e6c77ebaf 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -468,7 +468,7 @@ var/global/list/robot_modules = list( src.modules += new /obj/item/weapon/soap/nanotrasen(src) src.modules += new /obj/item/weapon/storage/bag/trash(src) src.modules += new /obj/item/weapon/mop(src) - src.modules += new /obj/item/device/lightreplacer(src) + src.modules += new /obj/item/device/lightreplacer/advanced(src) src.emag = new /obj/item/weapon/reagent_containers/spray(src) src.emag.reagents.add_reagent("lube", 250) src.emag.name = "Lube spray" diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 48d7c88b09a..fc51b0eed7f 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -105,6 +105,21 @@ update() return + else if (istype (I, /obj/item/device/lightreplacer)) + var/count = 0 + var/obj/item/device/lightreplacer/R = I + if (R.store_broken) + for(var/obj/item/weapon/light/L in R.contents) + count++ + L.forceMove(src) + + if (count) + user << "\blue You empty [count] broken bulbs into the disposal." + else + user << "\blue There are no broken bulbs to empty out." + update() + return + var/obj/item/weapon/grab/G = I if(istype(G)) // handle grabbed mob if(ismob(G.affecting)) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 3b3ca539fae..085fff28b7b 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -1684,6 +1684,14 @@ datum/design/item/experimental_welder materials = list("$metal" = 500) build_path =/obj/item/weapon/weldingtool/experimental +datum/design/item/advanced_light_replacer + name = "Advanced Light Replacer" + desc = "A specialised light replacer which stores more lights, refills faster from boxes, and sucks up broken bulbs." + id = "advanced_light_replacer" + req_tech = list("materials" = 3, "powerstorage" = 3) + materials = list("$metal" = 500) + build_path =/obj/item/device/lightreplacer/advanced + //////exosuit modules - allow robotics to print some modules, maybe a generic rig, but more things for them to do --Alberyk datum/design/item/rigmodule diff --git a/html/changelogs/Nanako-Lightreplacer.yml b/html/changelogs/Nanako-Lightreplacer.yml new file mode 100644 index 00000000000..b52996af906 --- /dev/null +++ b/html/changelogs/Nanako-Lightreplacer.yml @@ -0,0 +1,39 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Nanako + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Light Replacers can now be used on a box of lights to automatically refill them." + - rscadd: "Added an Advanced Light Replacer, creatable at science. It sucks up broken bulbs into an internal storage, greatly expediting mass-light-fixing" + - tweak: "Custodial cyborg module now comes with an advanced light replacer." + \ No newline at end of file diff --git a/icons/obj/janitor.dmi b/icons/obj/janitor.dmi index de85d22dd105c5cb286ab5b45dc285a55d59a6b9..aeaeaa10f1ba56a149b4486f0a9f0f08714335a0 100644 GIT binary patch literal 10868 zcmaiaWmFtp&}I)1+&#Djw*f+Mcemgk2ol`gLvXhQw;;hixVsGQ5}W|Roq?VA`?crn z?%5wbJ#)|P@~VEO>PD)m$YP+9paKAZAulJT0lRO(u5M&R*e7|g<01fnRDHB`-J~pC zKe^aAx!E{60DxCkY)Vg59~HLP)QFCpuTfgl(fjmb%cFego9`KAleQmaR%g04CG%=( zw$|{CDIT5bv`vQ2W~Ip|OJ0Hv8KvKsLl1tQwn1dZS2RF&4rpYO{e3#hl-aLt zD#;qQQhb=Wx{)-BRp&@q-@dK15;W9wjk5R!+lgPyo`C}=W>M28yeUE9%?=|$cF%ni ziDQn1wWYOeIr@OI=?8Nc7J5%}7wmSWsueg@(^V*j)BMa^xGH_FG{ly_N$=E&Qta%S zeF{%?9kq0SCB*u^9nF9z?r~&?uwwaEryyK)Ir*UC3rjz}BDHm9g1Z%CZSRR+C`>$L zGbjZT+#B7O8wHFp|2m1>bO~`n*w7yB8UcU`ke3qI^2$2R_SMB-guZU}DThfTB*vmf z$k5S&A*{8#`Amg_33F1(FB-`_=?hZtnnY|m^R@IlE58_Yn#3q)?psOlL|&)!)YjS* z%6w9uV^yw@T9$gJAXd1BK$Lh4$AWxtH+1s$vtv!$_(_eI@l;=Zy{n*Ay7%dU;pfRe z=!o#d=-~ngrP(0F9sO{WQn+{T-W3%Ug_UMwg+FqF{L%5^slTEeN)}yK>ehy6a&yGg zg76@+oDam4rf`oz$3G{ix}N6);Y}~Wb|{w?2dc)phjlM?RCm~IHCayU4Q~;Emy4-v zrA}uhb#AVGu$`EFzGpvKrSH93+mOsjKz)iL?TSFha*{BXY$zw9ZD z$ayX_0y(a=U*)~rO;+`}7QHA%ZiP|S33y??_JzyarJAw`Vzw4zI{tUeq1Y_+g_7U`f+^Bf`dN?**0#YsYbJJ^$%NIh-VW_Vhs|RHXdSV88FF?<7Nhdn; z0>Q-nVFBY;QO0)S;^Mo1=YNp_LNy+ReMo+RR|1#-jFQqqmC>(Jtgz}`1DG-RFP%ka z>arXUs?v7G`i?mJx}!Q#%^_EGLQE7Zi+@4LiP%2Eqobn$P+MC|T&8m9OpCsk+VM18 za1b57@k*2XY%wAn_0m`7Wq2QE59P=X!KVtj!{Ae z{(5b*pu9iZjS`L8r|iu0`tie1-iL!RH;4Ok(K|Rm=@$Zu4Or{(gT`^`BHUxr^Rpi= z2}x9wcYMoQ$!X#u2wR3g0O&0mfPZss#qk( z_VV4!j-$>;Wh@I!VbOHgy%I}TZpi?AL1>`0eNq6rQIz_hGH-UYMSKmV#ooi1XDv5OrdhI5!NSJoUfb+x?L|HMw(`s! zaLWLIrLQbN5Z^iiHP`5mOKdFxk_R9!zZfgI58h0lAb#Xeu=N>5&~2m7+M6xf90po> z#^|6oU@}w#WEH#d^c^?anWkM&Nk;*a%4%g1`ONL(1r@8~)51;cqfyI26wMNq0a(b9 z(WRhaIL7+z)j+Km?#48}vvaZ@EBe{bhmyi$=)8EYuSKM8Ei1qu1@qW7#OPG&{C{Cx4exk!QzKUU;d9$%!m(e4x|KX~)>pd5B zw^jCaI=hj^$=c^Ww5-HY#N#i&Exx&QM^N;eb?fuIS$Sxz^K*coN?t}3d(s!~P2RQ- z8{7RVU`n6M*ohQ$UgULgpZJK-!4dM)wVSZOFnAS3eN`vwMyzDjvg&m&H7ue3o){2Q z_D93r`E=ekG!*A&bLB925ml`<5&Dxkop|%DkBRIed|gx64-5{cwwc8wKJ>huC4g{) zklIcT36sE+8aMcmkwR?u2gL~&qWO0RIFE}jBNlz1lctm0+XlbO6Xvc99-CnH@FC^CA2uSrdG+4@Jd<(ljf_7v127&Z8s&O(HLd=k^l+VXX3|q<`0bljZ)!M&<<`B1zJOn@Gx@V9U+br@ zk!Ixh45~esKI^}mL$Uc~tt^PF)FsTc$}4F_SSe`OhW&gAKj;BiPBaYS%t@ z%_o$A=|x3zxz8sHGhkU_=*^2mME^=`nQu89IDKUW0*U(3yg(<8TS`w^a2oFxBOWVs z?@5dOfP~aUI(9|N`gGODa{3{bPTW_mA*54)L?qopZ*Oc_;~y2}G>UTm-jT%h?2%01 zhw&!+Rb;mCoO+hH$zUf2^r_sB>wYlxCT)m-7PDk06zIJiQTFmA#kN1$i1zl$)j^(<{fnpD9y>sh7CQKVk74O1_3H*WCNv6GH94{lNuf|52 zGF=B(!j_|>5sDw(0{K}F}7sn03 zI{QD~JT&EOTaCya_3tKqHcOT{=}0=%4O%BnOyPXQVCiCZ3EmAu88$7A*t~(~BHlrv zrwYxdQ4&Lxl+Fl350Bymy+tQ5gX1D*-cAeB>#!?zMU+HY!>wuMj+GxaWehTaTB%ut#~Q1LzypBx2TW2B2r9?x>~ z41cuSU5EA7wPXGFglC-ie{Uwn#_)1LimI~S-oNi#ZD#2QULO2#oJsuAAF`N<47ES9 zCn}^DkGyk{?u79e@$VB-uMA9KxGk7=za5HmV;@}Vwg(ko3Xf5OfOhK^qqVBA2tOQZ zQU5Ta%~$Ftu7J)!R1(49Jf=!UK}b+@j`h{D^nRpWgIBp*m_@J?Y1fA01vzWbipTIO56BL=o5c z8vZqXYF@^dY+Nx1f;ND)1^-M|+{>;GC5nzfu(8Po5@5cYDI&iVaE#YY? zO3;3Dz8GZ`gW1bZ`fm~$31=_t1zF@8BB?UP0Zr7ZQ`o|cjEqD8Y;A1^2e1$bs@vLD zE1`XTU**l$ah&_9nNIfLgFZEr_kqda9pKaYDf%97Bv-G)KRH;sNIeSVqvRszVTo>v zO0x#cEHW*u7ci(wY<`%yEIJBf6}YcpxnR^5uit?AK~XLcL5C2Frn)_AX|ZQ^cDD9% ziOT7OG0L0v^71kw3s)l_IM9%9hVLH#&V5uc;S-2AV=Pp^j1IJzm-i#sN41!^x^f>5 z+f2q$s`TT$;W@-0t3E(+KoFa)F+O|LT^dfmp~wrw-ntP2d+|xsz(YUtxMOxHequQP zUW*v`>fBNHx-{=`=DrYY>N*q5wqW_G)m=*WAz73#0NnsR1gh1*)4iWsH;^ZZ$uS#G zh47nB0_33q;_U?iwqL&3FU;P(NV&LhB}Of-t;M|jAVFZDr_rXN1f-J20Q2d!HT2n$ zKylx(bzTX21_nGGT%Qk&$=N62-jZW_XP}5+R<}&SY?-b>l`XEY?Ze_|cfjww&z3g( z=A)kpdxRB7`FOXJvSa!`T7qckP0OUQs~=tT-Ty>o18&eit+8pDN8Z5(feyj= z(9$5kH#KIVYD8r22ngNPzo@W;nzSqKrUkafRxu!FJI+VSd1Yw#2NdwOuO%17*Kd$}i&4V{e$9@DLPLkwzLW%N3IyKSyr znUlDgik~z=!fYW`2F-C&($Z!!<8;pJU(-~=ZcIXWsox%C>WjB3BV(b6sn&3EP#^II zqY<$`>dh7m__sK*$u*;#`cpfM5Mg7B?N4MPMGwFwkI+?>3{0^6RB%%}syGHMA(zkF z;=q7#R1_*YCgvy}=w?C3W?EBzRlkB;Hpi9Q9!M{+O!r*vdYOawqlQ4c|j zf=)pmxm%srR8FGRPRm+Di8;5!YY!J(Ijx$;9E6rN@;SwA(BTKsM9$75ifIQ8Rg)Qmow_Lo;U$we2~hWzSR9&BzDB7K4N zG%NrS3F$XXK3rVfklkGibt&d01bb8(<bvv1=a3iYYAwcXl{AVw> zqK9wXA4}kfmGK%$f}~Qo-?&py<@Igu#yvL>;*{=-nCLzRmx8$w5&u&d;kv1JZY@M( zTw1%^#;@iV-W}U&aFt}X*dR9}3yY+ILFVeEI!sl5n48KXc$Z#@^)}mRDF*C8H?%=T3Y-Jf+!xGMdWh2{@;Xei|pz=olF8t+@l{&IUrG5pb72IfvfjBFtG@ zoij+mZ%8WyKfv>`sY2t;m-rm-U2n2`XCKG_jF+p2bf5s|xzc1bwcXV^QB!~|Jw!dB zj_XuAp+p;0wh5P`|25n`mrDJ^+xo&7>+T!f?;b4sq+M#fc(?9qHaL93MursZ=B>TP zA~qLw4QSm`RNj9b>^dGwIOnzD+g{!jHAPL=?(b8Agw66MC|rgazD8Ns>hAK910P7t zir}J-=@R2tsh0IXAlbgPr2vg}GFAg)JCaXLKe0v_FwkYt=id-m$AI-`%fU_2m)T!P zN4v#VDl=XOiRyR;!+#U7K-aQaIe%RnjO2*^YWy`}Jy}Vt1B2 zU+D{48OHaCHSOOwa97&HcU1N|d#)jg1w5qm779>R9#8LKkQ$x|5<1bFyr#b%s|nqp z`sl>CEhAm+Vic`Mb?=y%{>k3lf&?FfpHw1nF=1Vf{@5B9+5!fq)8A? zEL{^&xBlI%WGMsOXj5-2q2r$GVU&~hZqc!2T!4nL=*t`JpX*VsL%~wOH%!BL=q_vB zZ~ln%3noqyXi`#=^S%-R>~_&yKacsO4o;@qp8m8J8}LFErQt;Y`d|l8l|3Eh8^Vug z^ndgWmADbB}O|T z_kV)FUIYtHt^dJ^$as+WGR6(Qs{O4N!i%E{6J(>R8+s0 zu8V_fs6uzM@%X!V(c>3;;~nt@&rSbD`qA|z{m|Lz$Oyqscnq5{S)q-2vCcwipJ_`g zD_UAwcuPymrLMrPZCtt8+q?fr)b^{oYA2*Or!d~ev$M0)0}0=mgfdnd{o(1~jU$b; z4;5aKiTDu%HJ>L)mM`^nb>$YSP2$M~J*cRuLGJGEr4qduDsvTw(w|NZ9w*D^YT5!}p9J9g9+gwJmIU zd3jr!5xO^}fcsO8MYwQW6Ff?CtH9NJ^rK!8X#< ziwp^Yn|$dVQ`nA7!j1WM4J{{dQ~X5naNQ(|d-Mw`QnkP`0#lE#h@r#}_9~}>xTS(F2NJE$G^aud?Aw~)&T_D_ z(rpx-twXMvaeYg1zP}~uo{Johaq=sN((-rwLixa+89v+gqnnb3uM(nmGbP#_cCvnn zkha?%Y4Yq`oe^Q^E-tXP-V=%h>XxBlitlgAe>6w>K|dkp29<6YG+}V~!h^KKtyIU~ zSy_pJghkO`ARTRpS$4oiKUNJ&S+3Az{u`5ejfRFMFC&9kuFMn>6C>r}L3ew$dG_%! zfB*!dI-Vn%Sic!)XQ)ca!OW2xBNJ01n}C#z%&0qae4e{n z<4k-^O#kJc1dE%I5qVvGJ-NQ@de0d`iuua44eic%&Cdg~O6~0Es$Kf=j~t@4IAE4% zqszau7x!+P#zG^q!)X)*3JTgq=lqUwwNwIbV!A|DGTKX!1JRQ2hu6Bl^DuCL_Rf2m zWDf-eQ~?12znsp73!B#$Xh8%yIl1v(A1%oDiwd^qtI(6~zeH|-ygPlp4@nL)-3^6! zD|-^^$A_f-`>F9%Y6TR;_1BJT)77gW049thtvNJ3ck4*!Sl0a|Y^*7kefB*x0+U?K z?GPZD=&|NO`ZSq`QcO+)bnCF?-YNYX6tAY8{h0-Wwr{Dp+r`>GXM8dXy^$LIF zSP|Qz&FN{gQeJG6 z>%M6fN1I2UN5=0W%9%fzltsC?aA7$=JUo2PNU8FsXuH^w!;{${ulQ{;TyRaqv0eZ1 z?`w?SpT<}~%aiQXQdTl5Q+fn9ZEK#9$cO;?16}6Ln8RWL@+Ai4zo>%jbm^m_v#Yb* zkp0_E_1vy$vY4YE0d}uGrI?mVhCjQFYXUaOxpygx!O)@u;6Fd#H6lQA=h6Q#41 zaVIBsDXAFm1LV?E2Sx0ei%4wZd9g61AsavN=&qhv64E-zI?}&n%e2;%Ez-6$!U?B` zsYm*<`_n$(Tt}S=s+@Q?-*Az zsAI`mcsyN><2o)5^P+>}Z^&)Z^pxtNtc;8~^zp{wpwEUpVU*W-RLRhWfQ~iyQqs-S zv+%Zo)56Q?5{jJZBdo9bPs-^Rr@5opke+&rhf4HIc{UKVGMgKnYkGP{63>txD(elSNcviQN11TB6n95Yp3trK4W`XAGT> z@6g@atfy&UDk(YI;x^A(%NdB5e0g+sjgiK$pT}h+6omb<@2}To)orlG0nGlg@(b+P zsE?;tCd`CWMpe(G|75E?UM^7$#MaQzSWAM4cSlB+tzAF`o$hnrA!A_;g&ls+@Ooe* zZ0ZW%aKxn9woPW#I6a!W$W2LyPzqzs?;#DiW|WU{$_2d~dUL*S&a1pdc!B;getzof zpdb*>UYCO|Kgt{?(STtw-dZFl zaDQ(qYWzGwB_gsEulgajYKb8>B$|+|_jf5{rnPi&L7+)vSd{t7ndB5hs%q6C!&jN0 z)>Z+%sbiZ*d{2(&X;aGJVpw7F(PDO5Mot!Df&2EVN28}1x_j+NOH+yh#omqHXaDoF zP_>8W_nXAz-v2bg_S`a)qAw~ae|D8a;_ebJ>02C}o-&qrXW-FB_-zWlEiR+x#N!ll zJfO}1W{nqmFcCY>WL)un+l{}qzBRg`O1EVYXJ<+>-c%ZJoAeC`&_Ee>aYQ10E52bt;AR>`9=6n#2y6JYL^IJB!E zi9IeAsI7jh*%r4wCoA(`mO@tD4lyDdm%qu(m6tPD=+;UsJc$)|-Bwmsa(-8e5{{+n zxYO{dRkT!N=D4*{6m9l@oU!!0{KEyOqNKD}KAB53QcC!)UAzR(vLUdMfmOje;n1c{ z$o7Fz_Lw1W&m10B@E|Vg)~9|)g_ws)+onRZ!4Im=oNlqaseioBjVS<#%WrtFCQU7! z>xUo~xwf4rIr$%v$*G&by@i$yOrQ`JCMIga=r?6$Wtgk)KYrw7VCakCH2l#W+7>TM z6jUVw_&41^@EBC6czCpU9~f<=+F^EO1{V#nC##4%sQPJfiu4IrN zdaJw0h3(S^bePG$M#)a?c*JFi6>fe@dR(ttZCncIhcnVBk`ht5IBc%m;-B*v+V=JQ zyp@)6eDNn(cU&bS{N@e`5@2rx4f>+sEfQNZVCx-PhGjL~?= zk`^tVO+)>hD-!GXk868kNh_y1Rt65>p}B29k!F9=Iqu{g8twTu#Ez1E2JDLt{3-qr z7M`FtCJ26Q>->FpHJ!6^u?+pNd4`>q0?RHZLua0B}QdXD?~47`Nx<62#7AN@*gL)othFW8KU zlvXx^in-ekBG22wYizOJVImH6A|Ci=PlAwkCjpf+TMZ?#qe8jKe*rjG(;Ey12zIZ# zfy26lY8Y!r=4y4+!^zO~k#8o*hcT*-_5PR;BJ#78igVAAq^u9Mo@03b;R7HfVls!o zf-}6&@eLUZWLS4a`1Y@DOf42(LXR3wR{&Ld&$(wt&`v~q5;m_^M{W-S8B)8SsX+ea zDXg6>e<;fd8Un$(*m5yMId3XDAcHjdl(0Rrbb~{AKRcyQ?Kp*kQ1~$KXUoOs=9-tJ zB*FtZ_YtlKA_jM2Gs^VWvTIcRa#ItF%pHhxsK$nuT-NdAhGrIn7(U-SxLF34>?NVV z3e@(?M>sQwkUH*`57MWG;I$qW(6>y=iOl>zhu}f(Zm;CC+93+sKhF6Yzo(g5h|q3&;X;)W+6i&O>Mj4R{T7K1QMedELn9Yi3|W&5c=8@ZH6{}0 z=HlvC&x0W?vZ(xxEWGoH+;80l!`!FK$OHj;=;q)$%>ZZiIn7=j?3)uSjd?9S$#4`_?JZ0Zm`t0DgYqQ{dX3? zQv4tFzx?{+bI7v0t(E24mO74>0E>!|Q8qEih6iEmhV{K$c;{I?62YqzgZ zz|_N|N%293Td|Bp({Kc%@-}Rx3kt5Dez%3$Yw&AW zm0YH0{feGxjJgbd!YD)K8O8@u5>6gjeG7{s1Kg&jrh>vk$wsEC6gvBj2|nWsf@HPN zSvSp(Tt>fV?poR{LST&68m_vKg^8Ml<^lgnofM#N>;sV3*AhEDDa&A}<7NZm3L z+OMSKB0EyD)V57j{QKko@i<|lKI(4!uN!hGBpwGgXkuc=e7$S z^m*))5fk88i6a*T_+I zJdlCUYBm&LiEE7(-3%Et^@?7VRy!(+=$nX_NuU2AsKPeR=~TLdavC8j^0JaljJlN; zq!D>SoB2!5lWj!S41=Y!2Oa+IJL-+7O{+_>=yo<|)xLCL3oPOb=KSo@2fexr4W`@W zgCd7aTf!&e`b|rb+nf_&+5P_SxuMtZ@yZux*)M{~$YCgKv~S946s z$jqz(Eqlq!qq-c+Lc+nvkC85$9k?N1_XmP7M18ZaO~|{?Oaf#R+p8XWEXZseJaq$o zPb~0X*PWqW3Ze}d_jkdZLg!Lgj}8D2Ld1R$Huw3muFjTO;Y0S*+v&o!6go#__-Su>a}G zy}HmsZr?k72R>s)*pfl{VdSuhh>!qlYil)r1~F5>>Ey&R3=xS2yb#h2V3G~xH;%yp zd{$iWKnPr_&5{awCUV~T&r;a=k3$~}uL29O*6B4R)`>V7V)L z!^h4Nq>Ww{Cr1YX6s2x6-8PTPztXCsXT}s!wt+A63biV88~$&C>fFVcY?Y(9v}ewI zeYPr(c2OT&#KUyrU;HX?!of6d8n`-S90WgiwQXnKHqNB;_Ks&DquU1mx**e+2MT_R zBh2F=WCWpgbk7O$W&PXb^uO+#kk9bXr1w4a;7%;(Tr&pBi+cY&;Moi$AK@RtuLc6`uOzrI`D^m(xP} zwDosavFK0QJV?@`f<}3$`D}dzd1P4!b=PwW;(>50Z#)ynpvbJWJ?#(l={i4 ze@0c3#rjMYN7h;$EUh!xB4ro$KZAPMQ+z;8|4&nM&#MR|7AA^4h(E>}Y_hT3!WrWn zDM>rN6~_4f@(;d%=;rizmpR*9Zhk~h0_isgWL#$CB~psxtMMhtgM-Y#dvL02uPI|+ z=_APILzqVYz(AzyHJEq@Cmk9@ZGUjFq=9KSqFX-C)Ma8YMhD*0NuVbH2I)N;!LVY_Qy=3PS6~sxk?}`oR)h)Yk8B z&VadIvA)K_v(!(|CZ&8M+ftz1(=hB+@-zc20UdVQir@8YvRrr*qjyQ**VNP`SXfzo zfV09&V2?K0MqV zjzL=E`b64tc3}lcNc?oA_3Xq0$^c9y#ugn;yRL3xEAB`BleMOz0{wWgS{BwSnK@AE zIVjmkFV4}1^)e5=qj~Lnea||_c0X~Nevo!IGo$ABzN7=TjK05Pg0=lja)kKzcR$tB mg6DRB~hwq^cxLL;e?<0L0}0 literal 11069 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 LnuyN|7BBw?Xh_Fp literal 0 HcmV?d00001